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.
- package/.cursorrules +0 -0
- package/.github/workflows/buddy-check.yml +105 -0
- package/.github/workflows/memorylink-preflight.yml +63 -0
- package/.github/workflows/release-on-tag.yml +58 -0
- package/.github/workflows/stress-tests.yml +79 -0
- package/.memorylinkignore +24 -0
- package/5000_SCENARIOS_TEST_RESULTS.md +174 -0
- package/ADVANCED_SCENARIOS_TEST_RESULTS.md +377 -0
- package/AGGRESSIVE_RANDOM_TEST_RESULTS.md +134 -0
- package/AI_CONSENSUS_ANALYSIS.md +138 -0
- package/AI_CONSENSUS_ANALYSIS_FINAL.md +345 -0
- package/AI_CONSENSUS_ANALYSIS_v2.md +188 -0
- package/AI_CONSENSUS_ANALYSIS_v3.md +246 -0
- package/AI_CONSENSUS_ANALYSIS_v4.md +309 -0
- package/AI_CONSENSUS_ANALYSIS_v5.md +311 -0
- package/AI_CONSENSUS_ANALYSIS_v6.md +432 -0
- package/AI_PANEL_CLARIFICATION_REQUEST.md +37 -0
- package/AI_RESPONSES_BLACKBOX.md +338 -0
- package/AI_RESPONSES_CHATGPT.md +379 -0
- package/AI_RESPONSES_CLAUDE.md +464 -0
- package/AI_RESPONSES_CONSOLIDATED.md +560 -0
- package/AI_RESPONSES_DEEPSEEK.md +341 -0
- package/AI_RESPONSES_GEMINI.md +262 -0
- package/AI_RESPONSES_GROK.md +335 -0
- package/AI_RESPONSES_MANUS.md +246 -0
- package/AI_RESPONSES_PERPLEXITY.md +295 -0
- package/AI_RESPONSES_QWEN.md +335 -0
- package/AI_REVIEW_REQUEST.md +333 -0
- package/AI_STRATEGIC_CONSENSUS_COMPARISON.md +507 -0
- package/AI_VALIDATION_AND_GAP_ANALYSIS.md +410 -0
- package/ALL_10_AI_RESPONSES_FINAL.md +435 -0
- package/ALL_3_AI_RESPONSES_FINAL.md +305 -0
- package/ALL_4_AI_RESPONSES_FINAL.md +335 -0
- package/ALL_5_AI_RESPONSES_FINAL.md +349 -0
- package/ALL_6_AI_RESPONSES_FINAL.md +354 -0
- package/ALL_7_AI_RESPONSES_FINAL.md +369 -0
- package/ALL_8_AI_RESPONSES_FINAL.md +381 -0
- package/ALL_9_AI_RESPONSES_FINAL.md +398 -0
- package/ALL_AI_RESPONSES_TRACKER.md +152 -0
- package/ALL_AI_RESPONSES_VALIDATED.md +261 -0
- package/ALL_FEATURES_COMPLETE.md +198 -0
- package/BREAK_IT_TEST_RESULTS.md +273 -0
- package/BUDDY_CHECK_STRESS_TEST_PLAN.md +1089 -0
- package/CHANGELOG.md +135 -0
- package/CHATGPT_GAP_ANALYSIS.md +286 -0
- package/CHATGPT_V2_ANALYSIS.md +109 -0
- package/CHECK_MISSING_FEATURES.md +192 -0
- package/CI_CD_INTEGRATION.md +421 -0
- package/COMPETITIVE_LAUNCH_STRATEGY.md +257 -0
- package/COMPLETE_COMPETITIVE_ANALYSIS_ALL_AIS.md +339 -0
- package/COMPLETE_DEVELOPMENT_PLAN_ALL_AIS.md +622 -0
- package/COMPREHENSIVE_FEATURE_ANALYSIS_100_PERCENT.md +423 -0
- package/COMPREHENSIVE_TEST_SUMMARY.md +314 -0
- package/CONTINUOUS_TESTING_COMPLETE.md +268 -0
- package/CONTINUOUS_TESTING_GUIDE.md +328 -0
- package/CONTINUOUS_TEST_FINAL_RESULTS.md +148 -0
- package/CONTINUOUS_TEST_INSTRUCTIONS.md +173 -0
- package/CONTINUOUS_TEST_RESULTS.md +194 -0
- package/CONTINUOUS_TEST_STATUS.md +68 -0
- package/CURSOR_AI_BUDDY_CHECK_GUIDE.md +439 -0
- package/CURSOR_AI_INTEGRATION_GUIDE.md +775 -0
- package/CURSOR_AI_V1.4_NEXT_STEPS.md +314 -0
- package/CURSOR_BREAK_IT_TEST.md +389 -0
- package/CURSOR_DOCUMENTATION_RULES.md +259 -0
- package/CURSOR_HOSTILE_TEST_DOCUMENT.md +343 -0
- package/CURSOR_PROMPTS_FOR_TESTING.md +252 -0
- package/DEPLOYMENT_GUIDE.md +493 -0
- package/DEVELOPMENT_AND_OVERNIGHT_TESTING.md +304 -0
- package/DEVELOPMENT_PROGRESS.md +185 -0
- package/DOCS_CLEANUP_SUMMARY.md +192 -0
- package/DOC_CONFIDENTIALITY_RULES.md +259 -0
- package/E2E_TEST_REPORT_v1.3.0.md +196 -0
- package/E2E_TEST_RESULTS.md +250 -0
- package/E2E_TEST_SCENARIOS.md +357 -0
- package/END_TO_END_TEST_REPORT.md +217 -0
- package/ENHANCEMENT_RECOMMENDATIONS.md +368 -0
- package/EPIPE_FIX_SUMMARY.md +177 -0
- package/FEEDBACK_TEMPLATE.md +173 -0
- package/FINAL_100_PERCENT_CONFIRMATION.md +319 -0
- package/FINAL_8_AI_CONSENSUS_SUMMARY.md +355 -0
- package/FINAL_CONFIRMATION.md +143 -0
- package/FINAL_E2E_TEST_REPORT.md +248 -0
- package/FINAL_E2E_TEST_RESULTS.md +212 -0
- package/FINAL_LAUNCH_CLARIFICATION_SUMMARY.md +101 -0
- package/FINAL_LAUNCH_PLAN_BASED_ON_AI_CONSENSUS.md +410 -0
- package/FINAL_LAUNCH_SUMMARY.md +176 -0
- package/FINAL_PRODUCT_TEST.md +316 -0
- package/FINAL_PROJECT_STATUS.md +407 -0
- package/FINAL_STATUS_REPORT.md +244 -0
- package/FINAL_STRATEGIC_PLAN_9_AIS.md +576 -0
- package/FINAL_TEST_EXECUTION_REPORT.md +252 -0
- package/FINAL_VALIDATION_DOCUMENT.md +238 -0
- package/FINAL_VALIDATION_SUMMARY.md +230 -0
- package/FIX_SPECIAL_CHARS.sh +13 -0
- package/FRESH_SCENARIOS_TEST_RESULTS.md +358 -0
- package/GAP_EVALUATION_TEMPLATE.md +146 -0
- package/GITHUB_SETUP_GUIDE.md +193 -0
- package/HOSTILE_TEST_RESULTS.md +221 -0
- package/HOW_MEMORYLINK_HELPS_AI.md +401 -0
- package/IMPLEMENTATION_PLANS_DETAILED.md +516 -0
- package/LAUNCH_CHECKLIST.md +247 -0
- package/LAUNCH_DOCS_FRAMEWORK.md +378 -0
- package/LAUNCH_READINESS.md +148 -0
- package/LAUNCH_SEQUENCE.md +137 -0
- package/LICENSE +67 -0
- package/MARKET_ANALYSIS_AND_STRATEGY.md +280 -0
- package/MASTER_AI_VERIFICATION_DOCUMENT.md +1085 -0
- package/MASTER_VALIDATION_DOCUMENT.md +818 -0
- package/MINORITY_OPINION_ANALYSIS.md +464 -0
- package/NEW_RANDOM_TEST_RESULTS.md +127 -0
- package/NEW_SCENARIOS_TEST_RESULTS.md +272 -0
- package/NEXT_ACTIONS_COMPLETE.md +137 -0
- package/NEXT_PLAN_BASED_ON_AI_ANALYSES.md +413 -0
- package/NEXT_PLAN_BASED_ON_ALL_AI_RESPONSES.md +558 -0
- package/NEXT_STEPS.md +120 -0
- package/NEXT_STEPS_ACTION_PLAN.md +369 -0
- package/NPM_2FA_FIX.md +113 -0
- package/NPM_PUBLISH_TROUBLESHOOTING.md +230 -0
- package/PERPLEXITY_AI_VALIDATION_REQUEST.md +318 -0
- package/PERPLEXITY_AI_VALIDATION_RESPONSE.md +172 -0
- package/PERPLEXITY_BREAK_IT_VALIDATION.md +262 -0
- package/PERPLEXITY_DOCS_VALIDATION.md +237 -0
- package/PERPLEXITY_FEEDBACK_ACTION_PLAN.md +271 -0
- package/PERPLEXITY_FINAL_E2E_VALIDATION.md +210 -0
- package/PERPLEXITY_FINAL_SUMMARY.md +211 -0
- package/PERPLEXITY_PHASE2_VALIDATION.md +270 -0
- package/PERPLEXITY_PHASE2_VALIDATION_RESPONSE.md +136 -0
- package/PERPLEXITY_PRIORITY2_VALIDATION.md +321 -0
- package/PERPLEXITY_TELEMETRY_EXPLANATION.md +174 -0
- package/PERPLEXITY_TELEMETRY_VALIDATION.md +118 -0
- package/PERPLEXITY_TELEMETRY_VALIDATION_RESPONSE.md +154 -0
- package/PERPLEXITY_USER_GUIDE_VALIDATION.md +236 -0
- package/PERPLEXITY_VALIDATION_REQUEST.md +427 -0
- package/PERPLEXITY_VALIDATION_REQUEST_v1.5.1.md +190 -0
- package/PHASE_2_COMPLETE.md +149 -0
- package/PRE_LAUNCH_SECURITY_AUDIT.md +155 -0
- package/PRE_LAUNCH_TEST_CYCLE.md +326 -0
- package/PRE_LAUNCH_TEST_RESULTS.md +148 -0
- package/PROJECT_STRUCTURE_PLAN.md +104 -0
- package/PUBLIC_DOCS.md +90 -0
- package/PUBLISH_CHECKLIST.md +134 -0
- package/PUSH_INSTRUCTIONS.md +120 -0
- package/QUICK_START_TEST_CYCLE.md +76 -0
- package/README.md +557 -0
- package/README_TEST_INSTRUCTIONS.md +65 -0
- package/README_v1.5.1.md +137 -0
- package/REALISTIC_ASSESSMENT.md +186 -0
- package/REAL_WORLD_VALIDATION_COMPLETE.md +98 -0
- package/RED_TEAM_TESTING_GUIDE.md +302 -0
- package/RELEASE_NOTES_v1.0.0.md +125 -0
- package/RELEASE_NOTES_v1.5.1.md +105 -0
- package/REQUEST_COUNTERS.md +22 -0
- package/ROADMAP_v1.6.md +335 -0
- package/ROUND3_RANDOM_TEST_RESULTS.md +135 -0
- package/SECURITY_MODEL.md +577 -0
- package/SESSION_SUMMARY_CURRENT_STATE.md +206 -0
- package/SESSION_SUMMARY_REVIEW.md +203 -0
- package/SINGLE_RUN_ALL_SCENARIOS_TEST.sh +129 -0
- package/STRATEGIC_QUESTIONS_FOR_AI_VALIDATION.md +277 -0
- package/STRESS_TEST_CHECK_RESULTS.md +154 -0
- package/STRESS_TEST_EXECUTION_GUIDE.md +284 -0
- package/STRESS_TEST_IMPLEMENTATION_SUMMARY.md +221 -0
- package/TELEMETRY.md +370 -0
- package/TELEMETRY_COMPLETE_SUMMARY.md +231 -0
- package/TELEMETRY_CONTROL_POLICY.md +135 -0
- package/TELEMETRY_DESIGN_SUMMARY.md +210 -0
- package/TELEMETRY_FINAL_STATUS.md +178 -0
- package/TELEMETRY_NEXT_STEPS.md +258 -0
- package/TELEMETRY_TESTING_NOTES.md +217 -0
- package/TELEMETRY_WORK_COMPLETE.md +237 -0
- package/TEST_PLAN_v1.0.1.md +194 -0
- package/TEST_RESULTS_SUMMARY.md +128 -0
- package/TREE_SITTER_EXPLANATION.md +303 -0
- package/TROUBLESHOOTING.md +62 -0
- package/ULTIMATE_SCENARIOS_TEST_RESULTS.md +366 -0
- package/USER_FEEDBACK_TEMPLATE.md +104 -0
- package/USER_GUIDE.md +809 -0
- package/V1.1_DEVELOPMENT_COMPLETE.md +299 -0
- package/V1.1_SCENARIOS_ADDED.md +161 -0
- package/V1.2_CODE_STRUCTURE_IMPLEMENTATION.md +243 -0
- package/V1.3_COMPETITIVE_LAUNCH_COMPLETE.md +253 -0
- package/V1.3_COMPETITIVE_LAUNCH_IMPLEMENTATION_PLAN.md +385 -0
- package/V1.3_TEAM_PATTERNS_IMPLEMENTATION.md +183 -0
- package/V1.4_BUILD_PLAN_IMPLEMENTATION.md +698 -0
- package/V1.4_COMPLETE_SUMMARY_FOR_AI_REVIEW.md +516 -0
- package/V1.4_COMPLETE_VALIDATION_DOCUMENT.md +601 -0
- package/V1.4_DEVELOPMENT_PROGRESS.md +117 -0
- package/V1.4_FINAL_STATUS.md +147 -0
- package/V1.4_INTEGRATION_COMPLETE.md +207 -0
- package/V1.4_INTEGRATION_TEST_RESULTS.md +181 -0
- package/V1.4_OBSERVABILITY_AND_OVERRIDE_COMPLETE.md +180 -0
- package/V1.4_PHASE_3_COMPLETE.md +135 -0
- package/V1.4_RUNTIME_TESTING_GUIDE.md +364 -0
- package/V1.4_VERIFICATION_REPORT.md +199 -0
- package/V1.5.1_COMPLETE_SUMMARY.md +234 -0
- package/V1.5.1_RELEASE_NOTES.md +206 -0
- package/V1.5.1_RELEASE_READY.md +198 -0
- package/V1.5_COMPLETE_SUMMARY.md +264 -0
- package/V1.5_COMPLETE_VERIFICATION.md +183 -0
- package/V1.5_DESIGN_NOTES.md +272 -0
- package/V1.5_FINAL_STATUS.md +224 -0
- package/V1.5_IMPLEMENTATION_SUMMARY.md +113 -0
- package/V1.5_IMPROVEMENTS_COMPLETE.md +205 -0
- package/V1.5_PHASE1_COMPLETE.md +183 -0
- package/V1.5_PHASE1_PROGRESS.md +102 -0
- package/V1.5_PHASE2_COMPLETE.md +133 -0
- package/V1.5_PHASE2_PLAN.md +185 -0
- package/V1.5_PRIORITIZATION.md +313 -0
- package/V1.5_PRIORITY2_COMPLETE.md +150 -0
- package/V1.5_TESTING_COMPLETE.md +69 -0
- package/V1.5_TEST_RESULTS.md +178 -0
- package/V1.5_VALIDATION_RESULTS.md +209 -0
- package/V1.6_GAP_TRACKING.md +118 -0
- package/VALIDATION_SUMMARY_FOR_PERPLEXITY.md +83 -0
- package/VERIFICATION_REPORT.md +220 -0
- package/VERSION_UPDATE_VERIFICATION.md +76 -0
- package/config/tsconfig.json +21 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1114 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/archive.d.ts +20 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +231 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/auto-context.d.ts +22 -0
- package/dist/commands/auto-context.d.ts.map +1 -0
- package/dist/commands/auto-context.js +172 -0
- package/dist/commands/auto-context.js.map +1 -0
- package/dist/commands/auto-log.d.ts +30 -0
- package/dist/commands/auto-log.d.ts.map +1 -0
- package/dist/commands/auto-log.js +500 -0
- package/dist/commands/auto-log.js.map +1 -0
- package/dist/commands/change.d.ts +13 -0
- package/dist/commands/change.d.ts.map +1 -0
- package/dist/commands/change.js +254 -0
- package/dist/commands/change.js.map +1 -0
- package/dist/commands/checkpoint.d.ts +26 -0
- package/dist/commands/checkpoint.d.ts.map +1 -0
- package/dist/commands/checkpoint.js +326 -0
- package/dist/commands/checkpoint.js.map +1 -0
- package/dist/commands/configure.d.ts +21 -0
- package/dist/commands/configure.d.ts.map +1 -0
- package/dist/commands/configure.js +283 -0
- package/dist/commands/configure.js.map +1 -0
- package/dist/commands/consolidate.d.ts +19 -0
- package/dist/commands/consolidate.d.ts.map +1 -0
- package/dist/commands/consolidate.js +236 -0
- package/dist/commands/consolidate.js.map +1 -0
- package/dist/commands/context.d.ts +10 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +571 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/detect.d.ts +13 -0
- package/dist/commands/detect.d.ts.map +1 -0
- package/dist/commands/detect.js +187 -0
- package/dist/commands/detect.js.map +1 -0
- package/dist/commands/doctor.d.ts +19 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +1272 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/export.d.ts +3 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +95 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/graph.d.ts +25 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +208 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/hooks.d.ts +9 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +240 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/impact.d.ts +18 -0
- package/dist/commands/impact.d.ts.map +1 -0
- package/dist/commands/impact.js +163 -0
- package/dist/commands/impact.js.map +1 -0
- package/dist/commands/index-vector.d.ts +13 -0
- package/dist/commands/index-vector.d.ts.map +1 -0
- package/dist/commands/index-vector.js +103 -0
- package/dist/commands/index-vector.js.map +1 -0
- package/dist/commands/index.d.ts +37 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +105 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +200 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/inject.d.ts +22 -0
- package/dist/commands/inject.d.ts.map +1 -0
- package/dist/commands/inject.js +394 -0
- package/dist/commands/inject.js.map +1 -0
- package/dist/commands/learn.d.ts +13 -0
- package/dist/commands/learn.d.ts.map +1 -0
- package/dist/commands/learn.js +282 -0
- package/dist/commands/learn.js.map +1 -0
- package/dist/commands/lock.d.ts +35 -0
- package/dist/commands/lock.d.ts.map +1 -0
- package/dist/commands/lock.js +308 -0
- package/dist/commands/lock.js.map +1 -0
- package/dist/commands/memory.d.ts +15 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +366 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/migrate.d.ts +22 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +458 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/patterns.d.ts +18 -0
- package/dist/commands/patterns.d.ts.map +1 -0
- package/dist/commands/patterns.js +120 -0
- package/dist/commands/patterns.js.map +1 -0
- package/dist/commands/protect.d.ts +12 -0
- package/dist/commands/protect.d.ts.map +1 -0
- package/dist/commands/protect.js +181 -0
- package/dist/commands/protect.js.map +1 -0
- package/dist/commands/quickstart.d.ts +11 -0
- package/dist/commands/quickstart.d.ts.map +1 -0
- package/dist/commands/quickstart.js +256 -0
- package/dist/commands/quickstart.js.map +1 -0
- package/dist/commands/repair.d.ts +13 -0
- package/dist/commands/repair.d.ts.map +1 -0
- package/dist/commands/repair.js +157 -0
- package/dist/commands/repair.js.map +1 -0
- package/dist/commands/resolve.d.ts +19 -0
- package/dist/commands/resolve.d.ts.map +1 -0
- package/dist/commands/resolve.js +355 -0
- package/dist/commands/resolve.js.map +1 -0
- package/dist/commands/roadmap.d.ts +5 -0
- package/dist/commands/roadmap.d.ts.map +1 -0
- package/dist/commands/roadmap.js +23 -0
- package/dist/commands/roadmap.js.map +1 -0
- package/dist/commands/scopes.d.ts +10 -0
- package/dist/commands/scopes.d.ts.map +1 -0
- package/dist/commands/scopes.js +80 -0
- package/dist/commands/scopes.js.map +1 -0
- package/dist/commands/search.d.ts +9 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +313 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/setup.d.ts +13 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +405 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/snippet.d.ts +23 -0
- package/dist/commands/snippet.d.ts.map +1 -0
- package/dist/commands/snippet.js +235 -0
- package/dist/commands/snippet.js.map +1 -0
- package/dist/commands/stats.d.ts +15 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +502 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/status.d.ts +8 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +134 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/suggest-tags.d.ts +9 -0
- package/dist/commands/suggest-tags.d.ts.map +1 -0
- package/dist/commands/suggest-tags.js +95 -0
- package/dist/commands/suggest-tags.js.map +1 -0
- package/dist/commands/sync-rules.d.ts +14 -0
- package/dist/commands/sync-rules.d.ts.map +1 -0
- package/dist/commands/sync-rules.js +211 -0
- package/dist/commands/sync-rules.js.map +1 -0
- package/dist/commands/sync.d.ts +24 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +330 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/telemetry-test.d.ts +24 -0
- package/dist/commands/telemetry-test.d.ts.map +1 -0
- package/dist/commands/telemetry-test.js +84 -0
- package/dist/commands/telemetry-test.js.map +1 -0
- package/dist/commands/template.d.ts +16 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +122 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/validate.d.ts +11 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +144 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/watch-preferences.d.ts +17 -0
- package/dist/commands/watch-preferences.d.ts.map +1 -0
- package/dist/commands/watch-preferences.js +172 -0
- package/dist/commands/watch-preferences.js.map +1 -0
- package/dist/commands/watch.d.ts +11 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +223 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/config/thresholds.d.ts +8 -0
- package/dist/config/thresholds.d.ts.map +1 -0
- package/dist/config/thresholds.js +10 -0
- package/dist/config/thresholds.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/memorylink.d.ts +91 -0
- package/dist/memorylink.d.ts.map +1 -0
- package/dist/memorylink.js +208 -0
- package/dist/memorylink.js.map +1 -0
- package/dist/search/local-embeddings.d.ts +21 -0
- package/dist/search/local-embeddings.d.ts.map +1 -0
- package/dist/search/local-embeddings.js +87 -0
- package/dist/search/local-embeddings.js.map +1 -0
- package/dist/search/vector-search.d.ts +58 -0
- package/dist/search/vector-search.d.ts.map +1 -0
- package/dist/search/vector-search.js +535 -0
- package/dist/search/vector-search.js.map +1 -0
- package/dist/server/mcp-server.d.ts +18 -0
- package/dist/server/mcp-server.d.ts.map +1 -0
- package/dist/server/mcp-server.js +293 -0
- package/dist/server/mcp-server.js.map +1 -0
- package/dist/telemetry.d.ts +92 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +339 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/telemetry.test.d.ts +13 -0
- package/dist/telemetry.test.d.ts.map +1 -0
- package/dist/telemetry.test.js +324 -0
- package/dist/telemetry.test.js.map +1 -0
- package/dist/test-runner/TestRunner.d.ts +68 -0
- package/dist/test-runner/TestRunner.d.ts.map +1 -0
- package/dist/test-runner/TestRunner.js +384 -0
- package/dist/test-runner/TestRunner.js.map +1 -0
- package/dist/test-runner/performance-test.d.ts +36 -0
- package/dist/test-runner/performance-test.d.ts.map +1 -0
- package/dist/test-runner/performance-test.js +163 -0
- package/dist/test-runner/performance-test.js.map +1 -0
- package/dist/test-runner/run-tests.d.ts +7 -0
- package/dist/test-runner/run-tests.d.ts.map +1 -0
- package/dist/test-runner/run-tests.js +167 -0
- package/dist/test-runner/run-tests.js.map +1 -0
- package/dist/types.d.ts +400 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +81 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/batch-commits.d.ts +48 -0
- package/dist/utils/batch-commits.d.ts.map +1 -0
- package/dist/utils/batch-commits.js +164 -0
- package/dist/utils/batch-commits.js.map +1 -0
- package/dist/utils/code-structure.d.ts +62 -0
- package/dist/utils/code-structure.d.ts.map +1 -0
- package/dist/utils/code-structure.js +582 -0
- package/dist/utils/code-structure.js.map +1 -0
- package/dist/utils/commit-patterns.d.ts +24 -0
- package/dist/utils/commit-patterns.d.ts.map +1 -0
- package/dist/utils/commit-patterns.js +78 -0
- package/dist/utils/commit-patterns.js.map +1 -0
- package/dist/utils/observability.d.ts +47 -0
- package/dist/utils/observability.d.ts.map +1 -0
- package/dist/utils/observability.js +137 -0
- package/dist/utils/observability.js.map +1 -0
- package/dist/utils/quality.d.ts +32 -0
- package/dist/utils/quality.d.ts.map +1 -0
- package/dist/utils/quality.js +207 -0
- package/dist/utils/quality.js.map +1 -0
- package/dist/utils/semantic-search.d.ts +29 -0
- package/dist/utils/semantic-search.d.ts.map +1 -0
- package/dist/utils/semantic-search.js +167 -0
- package/dist/utils/semantic-search.js.map +1 -0
- package/dist/utils/streaming.d.ts +24 -0
- package/dist/utils/streaming.d.ts.map +1 -0
- package/dist/utils/streaming.js +121 -0
- package/dist/utils/streaming.js.map +1 -0
- package/dist/utils/tag-suggestions.d.ts +18 -0
- package/dist/utils/tag-suggestions.d.ts.map +1 -0
- package/dist/utils/tag-suggestions.js +103 -0
- package/dist/utils/tag-suggestions.js.map +1 -0
- package/dist/utils/team-patterns.d.ts +48 -0
- package/dist/utils/team-patterns.d.ts.map +1 -0
- package/dist/utils/team-patterns.js +413 -0
- package/dist/utils/team-patterns.js.map +1 -0
- package/dist/utils/templates.d.ts +36 -0
- package/dist/utils/templates.d.ts.map +1 -0
- package/dist/utils/templates.js +200 -0
- package/dist/utils/templates.js.map +1 -0
- package/dist/utils/tree-sitter-parser.d.ts +20 -0
- package/dist/utils/tree-sitter-parser.d.ts.map +1 -0
- package/dist/utils/tree-sitter-parser.js +259 -0
- package/dist/utils/tree-sitter-parser.js.map +1 -0
- package/dist/utils/v1.6-patterns.d.ts +117 -0
- package/dist/utils/v1.6-patterns.d.ts.map +1 -0
- package/dist/utils/v1.6-patterns.js +201 -0
- package/dist/utils/v1.6-patterns.js.map +1 -0
- package/dist/utils.d.ts +176 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +822 -0
- package/dist/utils.js.map +1 -0
- package/docs/1000_SCENARIOS_TEST_RESULTS.md +138 -0
- package/docs/1000_UNIQUE_SCENARIOS_TEST.md +171 -0
- package/docs/100_PERCENT_PASS_RATE_VERIFICATION.md +111 -0
- package/docs/5000_SCENARIOS_ISSUE_ANALYSIS.md +96 -0
- package/docs/5000_SCENARIOS_TEST_PLAN.md +281 -0
- package/docs/AGENT_CONTRACT.md +240 -0
- package/docs/AI_RESPONSE_ANALYZER.md +157 -0
- package/docs/AI_RESPONSE_TRACKER.md +923 -0
- package/docs/AI_TESTING_PROMPT.md +307 -0
- package/docs/AI_VALIDATION_PROMPTS.md +366 -0
- package/docs/ALL_AI_ANALYSES_CONSOLIDATED.md +354 -0
- package/docs/ALL_AI_CONSOLIDATION_FINAL.md +372 -0
- package/docs/ALL_AI_TEST_CONSOLIDATION.md +290 -0
- package/docs/ALL_AI_VALIDATION_SYNTHESIS.md +241 -0
- package/docs/BEST_TESTING_SOLUTION.md +227 -0
- package/docs/BLACKBOX_AI_ANALYSIS.md +288 -0
- package/docs/BLACKBOX_AI_CLARIFICATION.md +55 -0
- package/docs/BLACKBOX_AI_STRATEGIC_VALIDATION.md +283 -0
- package/docs/BLACKBOX_AI_VALIDATION_RESPONSE.md +251 -0
- package/docs/BLACKBOX_AI_VALIDATION_RESPONSE_v2.md +402 -0
- package/docs/BLACKBOX_LAUNCH_VALIDATION.md +25 -0
- package/docs/BLACKBOX_SUPERMEMORY_VALIDATION_AND_PLAN.md +50 -0
- package/docs/CAPACITY_AND_ALTERNATIVES_ANALYSIS.md +289 -0
- package/docs/CHATGPT_AI_CLARIFICATION.md +65 -0
- package/docs/CHATGPT_FINAL_VALIDATION.md +348 -0
- package/docs/CHATGPT_IMPLEMENTATION_GUIDE.md +325 -0
- package/docs/CHATGPT_LAUNCH_VALIDATION.md +47 -0
- package/docs/CHATGPT_MEMORY_QUALITY_AND_VSCODE_CHECK.md +43 -0
- package/docs/CHATGPT_SCOPE_REALITY_CHECK.md +35 -0
- package/docs/CHATGPT_STRATEGIC_VALIDATION.md +329 -0
- package/docs/CHATGPT_VALIDATION_RESPONSE.md +332 -0
- package/docs/CHATGPT_VALIDATION_RESPONSE_v2.md +294 -0
- package/docs/CHATGPT_VALIDATION_RESULTS.md +143 -0
- package/docs/CLAUDE_AI_ANALYSIS.md +692 -0
- package/docs/CLAUDE_AI_CLARIFICATION.md +67 -0
- package/docs/CLAUDE_AI_STRATEGIC_VALIDATION.md +578 -0
- package/docs/CLAUDE_AI_VALIDATION_RESPONSE.md +374 -0
- package/docs/CLAUDE_AI_VALIDATION_RESPONSE_v2.md +463 -0
- package/docs/CLAUDE_FINAL_VALIDATION.md +679 -0
- package/docs/CLAUDE_LAUNCH_VALIDATION.md +27 -0
- package/docs/CLAUDE_SUPERMEMORY_LAUNCH_PRIORITIES.md +44 -0
- package/docs/CLAUDE_UNIVERSAL_VISION.md +18 -0
- package/docs/COMPLETE_AI_VALIDATION_SYNTHESIS.md +229 -0
- package/docs/COMPLETE_MEMORY_ANALYSIS_SUMMARY.md +323 -0
- package/docs/COMPLETE_STRATEGIC_LAUNCH_PLAN.md +241 -0
- package/docs/COPILOT_LANGCHAIN_MEMORY_COMPARISON_AND_PLAN.md +43 -0
- package/docs/CRITICAL_FIXES_ACTION_PLAN.md +251 -0
- package/docs/CRITICAL_MEMORY_USAGE_PROMPTS.md +290 -0
- package/docs/CURSOR_AI_MEMORY_ANALYSIS.md +479 -0
- package/docs/CURSOR_AI_MEMORY_WORKFLOW_ANALYSIS.md +267 -0
- package/docs/CURSOR_AI_TEST_RESULTS.md +298 -0
- package/docs/DEEPSEEK_AI_CLARIFICATION.md +52 -0
- package/docs/DEEPSEEK_AI_IMPLEMENTATION_GUIDE.md +398 -0
- package/docs/DEEPSEEK_AI_STRATEGIC_VALIDATION.md +348 -0
- package/docs/DEEPSEEK_AI_VALIDATION_RESPONSE.md +276 -0
- package/docs/DEEPSEEK_AI_VALIDATION_RESPONSE_v2.md +325 -0
- package/docs/DEEPSEEK_FINAL_VALIDATION.md +337 -0
- package/docs/DEEPSEEK_LAUNCH_VALIDATION.md +55 -0
- package/docs/DEEPSEEK_SCOPE_REALITY_CHECK.md +30 -0
- package/docs/DEEPSEEK_SUPERMEMORY_ADOPTION_AND_VSCODE_PIVOT.md +47 -0
- package/docs/DEEPSEEK_VALIDATION_RESULTS.md +165 -0
- package/docs/DEVELOPMENT_TESTING_PROTOCOL.md +378 -0
- package/docs/E2E_TEST_RESULTS.md +102 -0
- package/docs/END_TO_END_MEMORY_ISSUE_ANALYSIS.md +442 -0
- package/docs/FEATURE_1_GIT_SYNC_PLAN.md +228 -0
- package/docs/FEATURE_2_AUTO_LOGGING_PLAN.md +239 -0
- package/docs/FEATURE_3_CODE_SNIPPET_PLAN.md +249 -0
- package/docs/FEATURE_4_TAG_NORMALIZATION_PLAN.md +211 -0
- package/docs/FEATURE_5_WINDOWS_PATH_HANDLING_PLAN.md +199 -0
- package/docs/FEATURE_6_CONFLICT_DETECTION_PLAN.md +126 -0
- package/docs/FEATURE_IMPLEMENTATION_REPORT.md +203 -0
- package/docs/FINAL_COMPLETE_LAUNCH_DECISION.md +255 -0
- package/docs/FINAL_LAUNCH_DECISION.md +235 -0
- package/docs/FINAL_LAUNCH_DECISION_ALL_AIS.md +226 -0
- package/docs/FINAL_SCENARIO_VERIFICATION.md +363 -0
- package/docs/FIX_100_PERCENT_ANALYSIS.md +133 -0
- package/docs/FRAMEWORK_STRUCTURE.md +94 -0
- package/docs/GEMINI_AI_ANALYSIS.md +156 -0
- package/docs/GEMINI_AI_CLARIFICATION.md +47 -0
- package/docs/GEMINI_AI_STRATEGIC_VALIDATION.md +235 -0
- package/docs/GEMINI_AI_VALIDATION_RESPONSE.md +238 -0
- package/docs/GEMINI_AI_VALIDATION_RESPONSE_v2.md +168 -0
- package/docs/GEMINI_FINAL_VALIDATION.md +204 -0
- package/docs/GEMINI_LAUNCH_VALIDATION.md +30 -0
- package/docs/GEMINI_SCOPE_AND_UNIVERSALITY_DEBATE.md +25 -0
- package/docs/GEMINI_SUPERMEMORY_TREE_SITTER_MANDATE.md +43 -0
- package/docs/GEMINI_VALIDATION_RESULTS.md +183 -0
- package/docs/GROK_AI_ANALYSIS.md +278 -0
- package/docs/GROK_AI_CLARIFICATION.md +52 -0
- package/docs/GROK_AI_STRATEGIC_VALIDATION.md +306 -0
- package/docs/GROK_AI_VALIDATION_RESPONSE.md +252 -0
- package/docs/GROK_AI_VALIDATION_RESPONSE_v2.md +264 -0
- package/docs/GROK_FINAL_VALIDATION.md +251 -0
- package/docs/GROK_LAUNCH_VALIDATION.md +24 -0
- package/docs/GROK_SCOPE_REALITY_CHECK.md +28 -0
- package/docs/GROK_SUPERMEMORY_LAUNCH_ANALYSIS.md +44 -0
- package/docs/GROK_VALIDATION_RESULTS.md +180 -0
- package/docs/IMPLEMENTATION_PLAN_16_CRITICAL_FIXES.md +641 -0
- package/docs/LANGCHAIN_AND_LANGGRAPH_INTEGRATION_PLAN.md +51 -0
- package/docs/LAUNCH_DECISION_FINAL.md +243 -0
- package/docs/MANUS_AI_ANALYSIS.md +171 -0
- package/docs/MANUS_AI_CLARIFICATION.md +43 -0
- package/docs/MANUS_AI_VALIDATION_RESPONSE.md +335 -0
- package/docs/MANUS_AI_VALIDATION_RESPONSE_v2.md +226 -0
- package/docs/MANUS_FINAL_VALIDATION.md +257 -0
- package/docs/MANUS_VALIDATION_RESULTS.md +237 -0
- package/docs/MCP_SERVER_SETUP.md +167 -0
- package/docs/MEMORYLINK_7AI_FINAL_CONFIRMATION.md +210 -0
- package/docs/MEMORYLINK_CURSOR_AI_DEVELOPMENT_GUIDE.md +1092 -0
- package/docs/MEMORYLINK_DEVELOPMENT_PLAN_CURSOR_AI.md +629 -0
- package/docs/MEMORYLINK_FINAL_7AI_CLARIFICATION.md +184 -0
- package/docs/MEMORYLINK_MASTER_DOCUMENT_v4.md +1338 -0
- package/docs/MEMORYLINK_NAMING_ANALYSIS.md +427 -0
- package/docs/MEMORYLINK_REAL_WORLD_SCENARIOS.md +3517 -0
- package/docs/MEMORYLINK_STORAGE_COMPARISON.md +498 -0
- package/docs/MEMORYLINK_V1.0_FINAL_IMPLEMENTATION_PLAN.md +285 -0
- package/docs/MEMORYLINK_VALIDATION_COMPLETE_ANALYSIS.md +207 -0
- package/docs/MEMORYLINK_VS_MEMORY_APPS_ANALYSIS.md +667 -0
- package/docs/MEMORYLINK_v1.0_BUILD_DOCUMENT_FINAL.md +1928 -0
- package/docs/MEMORY_USAGE_FIX_IMPLEMENTATION.md +314 -0
- package/docs/MISTRAL_AI_ANALYSIS.md +189 -0
- package/docs/MISTRAL_AI_CLARIFICATION.md +57 -0
- package/docs/MISTRAL_AI_STRATEGIC_VALIDATION.md +334 -0
- package/docs/MISTRAL_AI_TESTING_REQUEST.md +261 -0
- package/docs/MISTRAL_AI_VALIDATION_RESPONSE.md +446 -0
- package/docs/MISTRAL_AI_VALIDATION_RESPONSE_v2.md +227 -0
- package/docs/MISTRAL_FINAL_VALIDATION.md +398 -0
- package/docs/MISTRAL_LAUNCH_VALIDATION.md +32 -0
- package/docs/MISTRAL_SCOPE_REALITY_CHECK.md +32 -0
- package/docs/MISTRAL_SUPERMEMORY_LAUNCH_ANALYSIS.md +43 -0
- package/docs/MISTRAL_VALIDATION_RESULTS.md +371 -0
- package/docs/NEXT_PLAN.md +300 -0
- package/docs/PERPLEXITY_AI_ANALYSIS.md +285 -0
- package/docs/PERPLEXITY_AI_CLARIFICATION.md +57 -0
- package/docs/PERPLEXITY_AI_STRATEGIC_VALIDATION.md +288 -0
- package/docs/PERPLEXITY_AI_VALIDATION_RESPONSE.md +350 -0
- package/docs/PERPLEXITY_AI_VALIDATION_RESPONSE_v2.md +260 -0
- package/docs/PERPLEXITY_FINAL_VALIDATION.md +320 -0
- package/docs/PERPLEXITY_LAUNCH_VALIDATION.md +42 -0
- package/docs/PERPLEXITY_MEMORY_QUALITY_AND_VSCODE_PLAN.md +56 -0
- package/docs/PERPLEXITY_SCOPE_REALITY_CHECK.md +31 -0
- package/docs/PERPLEXITY_VALIDATION_RESULTS.md +154 -0
- package/docs/PRE_LAUNCH_GAP_ANALYSIS.md +663 -0
- package/docs/PROJECT_STRUCTURE_PLAN.md +104 -0
- package/docs/QWEN_AI_ANALYSIS.md +176 -0
- package/docs/QWEN_AI_CLARIFICATION.md +60 -0
- package/docs/QWEN_AI_STRATEGIC_VALIDATION.md +241 -0
- package/docs/QWEN_AI_VALIDATION_RESPONSE.md +197 -0
- package/docs/QWEN_AI_VALIDATION_RESPONSE_v2.md +186 -0
- package/docs/QWEN_FINAL_VALIDATION.md +284 -0
- package/docs/QWEN_LAUNCH_VALIDATION.md +26 -0
- package/docs/QWEN_SCENARIOS_TEST_RESULTS.md +244 -0
- package/docs/QWEN_SCOPE_REALITY_CHECK.md +26 -0
- package/docs/QWEN_SUPERMEMORY_LAUNCH_AND_ENFORCEMENT_PLAN.md +56 -0
- package/docs/QWEN_VALIDATION_RESULTS.md +185 -0
- package/docs/README.md +479 -0
- package/docs/REAL_PRODUCT_LAUNCH_DECISION.md +185 -0
- package/docs/RECIPES.md +424 -0
- package/docs/RELEASE_NOTES_v1.0.0.md +193 -0
- package/docs/SCENARIO_INVENTORY_AND_VERIFICATION.md +284 -0
- package/docs/SINGLE_RUN_1018_SCENARIOS_RESULTS.md +142 -0
- package/docs/TESTING.md +256 -0
- package/docs/TESTING_STRATEGY.md +194 -0
- package/docs/TROUBLESHOOTING.md +188 -0
- package/docs/ULTIMATE_LAUNCH_DECISION.md +246 -0
- package/docs/WHAT_WE_BUILT.md +504 -0
- package/docs/v1.0_LAUNCH_CHECKLIST.md +104 -0
- package/examples/README.md +199 -0
- package/examples/chatgpt-context.js +161 -0
- package/examples/ci-integration.js +288 -0
- package/examples/sync-from-cursor.js +196 -0
- package/extensions/vscode/README.md +25 -0
- package/extensions/vscode/out/buddy-check.js +208 -0
- package/extensions/vscode/out/buddy-check.js.map +1 -0
- package/extensions/vscode/out/extension.js +413 -0
- package/extensions/vscode/out/extension.js.map +1 -0
- package/extensions/vscode/out/sidebar.js +409 -0
- package/extensions/vscode/out/sidebar.js.map +1 -0
- package/extensions/vscode/package.json +92 -0
- package/extensions/vscode/src/buddy-check.ts +220 -0
- package/extensions/vscode/src/extension.ts +425 -0
- package/extensions/vscode/src/shims-vscode.d.ts +2 -0
- package/extensions/vscode/src/sidebar.ts +431 -0
- package/extensions/vscode/tsconfig.json +14 -0
- package/k6-load-test.js +86 -0
- package/package.json +68 -0
- package/run-professional-tests.sh +72 -0
- package/scripts/monitor-continuous-test.sh +17 -0
- package/scripts/reorganize-project.sh +164 -0
- package/scripts/run-tests-parallel.sh +111 -0
- package/scripts/run-tests.sh +30 -0
- package/scripts/setup-framework.sh +139 -0
- package/scripts/setup-testing.sh +96 -0
- package/scripts/stress-test/README.md +86 -0
- package/scripts/stress-test/create-all-scenarios.sh +17 -0
- package/scripts/stress-test/create-remaining-scenarios.sh +3 -0
- package/scripts/stress-test/dev-test.sh +21 -0
- package/scripts/stress-test/monitor-continuous.sh +149 -0
- package/scripts/stress-test/overnight-test.sh +30 -0
- package/scripts/stress-test/quick-test.sh +21 -0
- package/scripts/stress-test/run-all-tests.sh +157 -0
- package/scripts/stress-test/run-continuous.sh +300 -0
- package/scripts/stress-test/run-stress-test.sh +153 -0
- package/scripts/stress-test/set1/1_1_mass_refactoring.sh +117 -0
- package/scripts/stress-test/set1/1_1_mass_refactoring_simple.sh +117 -0
- package/scripts/stress-test/set1/1_2_function_rename.sh +95 -0
- package/scripts/stress-test/set1/1_3_feature_flags.sh +93 -0
- package/scripts/stress-test/set1/1_4_feature_removal.sh +57 -0
- package/scripts/stress-test/set1/1_5_schema_changes.sh +42 -0
- package/scripts/stress-test/set1/1_6_dependency_update.sh +47 -0
- package/scripts/stress-test/set1/1_7_config_modification.sh +53 -0
- package/scripts/stress-test/set2/2_1_payment_logging.sh +49 -0
- package/scripts/stress-test/set2/2_2_test_data_generation.sh +43 -0
- package/scripts/stress-test/set2/2_3_documentation_leak.sh +45 -0
- package/scripts/stress-test/set2/2_4_api_key_rotation.sh +45 -0
- package/scripts/stress-test/set2/2_5_hardcoded_secrets.sh +45 -0
- package/scripts/stress-test/set2/2_6_debug_output.sh +49 -0
- package/scripts/stress-test/set3/3_1_billing_modification.sh +47 -0
- package/scripts/stress-test/set3/3_2_migration_deletion.sh +43 -0
- package/scripts/stress-test/set3/3_3_auth_middleware.sh +52 -0
- package/scripts/stress-test/set3/3_4_permission_bypass.sh +48 -0
- package/scripts/stress-test/set3/3_5_config_modification.sh +43 -0
- package/scripts/stress-test/set3/3_6_core_library.sh +51 -0
- package/scripts/stress-test/set3/3_7_test_infrastructure.sh +49 -0
- package/scripts/stress-test/set4/4_1_concurrent_features.sh +49 -0
- package/scripts/stress-test/set4/4_2_lock_acquisition.sh +32 -0
- package/scripts/stress-test/set4/4_3_migration_hotfix.sh +43 -0
- package/scripts/stress-test/set4/4_4_overlapping_scopes.sh +50 -0
- package/scripts/stress-test/set4/4_5_lock_timeout.sh +34 -0
- package/scripts/stress-test/set4/4_6_concurrent_stats.sh +33 -0
- package/scripts/stress-test/set5/5_1_wrong_decision.sh +41 -0
- package/scripts/stress-test/set5/5_2_outdated_docs.sh +40 -0
- package/scripts/stress-test/set5/5_3_conflicting_memories.sh +34 -0
- package/scripts/stress-test/set5/5_4_deleted_file_references.sh +38 -0
- package/scripts/stress-test/set5/5_5_old_pattern.sh +41 -0
- package/scripts/stress-test/set5/5_6_wrong_architecture.sh +42 -0
- package/scripts/stress-test/set5/5_7_high_trust_stale.sh +46 -0
- package/scripts/stress-test/set5/5_8_observability_stale.sh +36 -0
- package/scripts/stress-test/setup-test-repo-simple.sh +144 -0
- package/scripts/stress-test/setup-test-repo.sh +154 -0
- package/scripts/stress-test/start-continuous.sh +48 -0
- package/scripts/stress-test/stop-continuous.sh +42 -0
- package/scripts/stress-test/template-scenario.sh +115 -0
- package/scripts/test-advanced-scenarios.sh +411 -0
- package/scripts/test-continuous-30min.sh +307 -0
- package/scripts/test-continuous-enhanced.sh +250 -0
- package/scripts/test-e2e-comprehensive.sh +114 -0
- package/scripts/test-e2e-random.sh +359 -0
- package/scripts/test-fresh-scenarios.sh +412 -0
- package/scripts/test-new-scenarios.sh +374 -0
- package/scripts/test-quick-random.sh +97 -0
- package/scripts/test-runtime.sh +129 -0
- package/scripts/test-telemetry-local.sh +193 -0
- package/scripts/test-ultimate-scenarios.sh +428 -0
- package/scripts/test-v1.5-complete.sh +225 -0
- package/scripts/test-v1.5-phase1.sh +222 -0
- package/src/cli.ts +1259 -0
- package/src/commands/archive.ts +252 -0
- package/src/commands/auto-context.ts +159 -0
- package/src/commands/auto-log.ts +531 -0
- package/src/commands/change.ts +298 -0
- package/src/commands/checkpoint.ts +390 -0
- package/src/commands/configure.ts +297 -0
- package/src/commands/consolidate.ts +263 -0
- package/src/commands/context.ts +618 -0
- package/src/commands/detect.ts +181 -0
- package/src/commands/doctor.ts +1468 -0
- package/src/commands/export.ts +77 -0
- package/src/commands/graph.ts +214 -0
- package/src/commands/hooks.ts +245 -0
- package/src/commands/impact.ts +163 -0
- package/src/commands/index-vector.ts +126 -0
- package/src/commands/index.ts +57 -0
- package/src/commands/init.ts +194 -0
- package/src/commands/inject.ts +440 -0
- package/src/commands/learn.ts +328 -0
- package/src/commands/lock.ts +345 -0
- package/src/commands/memory.ts +415 -0
- package/src/commands/migrate.ts +540 -0
- package/src/commands/patterns.ts +158 -0
- package/src/commands/protect.ts +199 -0
- package/src/commands/quickstart.ts +259 -0
- package/src/commands/resolve.ts +373 -0
- package/src/commands/roadmap.ts +25 -0
- package/src/commands/scopes.ts +113 -0
- package/src/commands/search.ts +365 -0
- package/src/commands/setup.ts +430 -0
- package/src/commands/snippet.ts +271 -0
- package/src/commands/stats.ts +591 -0
- package/src/commands/status.ts +127 -0
- package/src/commands/suggest-tags.ts +122 -0
- package/src/commands/sync-rules.ts +218 -0
- package/src/commands/sync.ts +363 -0
- package/src/commands/telemetry-test.ts +97 -0
- package/src/commands/template.ts +166 -0
- package/src/commands/validate.ts +191 -0
- package/src/commands/watch-preferences.ts +162 -0
- package/src/commands/watch.ts +239 -0
- package/src/config/thresholds.ts +14 -0
- package/src/index.ts +12 -0
- package/src/memorylink.ts +308 -0
- package/src/search/local-embeddings.ts +94 -0
- package/src/search/vector-search.ts +608 -0
- package/src/server/mcp-server.ts +355 -0
- package/src/telemetry.ts +391 -0
- package/src/test-runner/TestRunner.ts +421 -0
- package/src/test-runner/performance-test.ts +161 -0
- package/src/test-runner/run-tests.ts +152 -0
- package/src/types.ts +533 -0
- package/src/utils/batch-commits.ts +162 -0
- package/src/utils/code-structure.ts +686 -0
- package/src/utils/commit-patterns.ts +87 -0
- package/src/utils/observability.ts +149 -0
- package/src/utils/quality.ts +230 -0
- package/src/utils/semantic-search.ts +222 -0
- package/src/utils/streaming.ts +109 -0
- package/src/utils/tag-suggestions.ts +117 -0
- package/src/utils/team-patterns.ts +499 -0
- package/src/utils/templates.ts +181 -0
- package/src/utils/tree-sitter-parser.ts +246 -0
- package/src/utils/v1.6-patterns.ts +227 -0
- package/src/utils.ts +885 -0
- package/test-all-features.sh +102 -0
- package/test-all-implemented-features.sh +209 -0
- package/test-all-new-features.sh +171 -0
- package/test-auto-log.txt +1 -0
- package/test-batch-commits.sh +47 -0
- package/test-conflict-resolution.sh +47 -0
- package/test-e2e.sh +22 -0
- package/test-end-to-end.sh +151 -0
- package/test-enhanced-autocapture.sh +164 -0
- package/test-inject.sh +44 -0
- package/test-mcp-server.sh +67 -0
- package/test-pagination.sh +37 -0
- package/test-python-go-structure.sh +164 -0
- package/test-quality-validation.sh +167 -0
- package/test-results-quick-smoke.json +13 -0
- package/test-results-targeted-perf.json +23 -0
- package/test-results.json +2272 -0
- package/test-scenarios/payment-logging.ts +17 -0
- package/test-scenarios/test-config.ts +13 -0
- package/test-semantic-search.sh +161 -0
- package/test-tag-intelligence.sh +49 -0
- package/test-vector-search.sh +64 -0
- package/test-vscode-extension.sh +144 -0
- package/test-watcher-file.txt +2 -0
- package/test-watcher-file2.txt +1 -0
- package/test-watcher.sh +103 -0
- package/test_qwen_scenarios.sh +285 -0
- package/tests/scenarios/4000_HARD_SCENARIOS.sh +4137 -0
- package/tests/scenarios/ADD_V1.1_SCENARIOS.sh +93 -0
- package/tests/scenarios/AGGRESSIVE_RANDOM_E2E_TEST.sh +474 -0
- package/tests/scenarios/COMPLETE_PRODUCT_VALIDATION.sh +227 -0
- package/tests/scenarios/COMPREHENSIVE_E2E_TEST.sh +426 -0
- package/tests/scenarios/CONTINUOUS_RANDOM_STRESS_TEST.sh +240 -0
- package/tests/scenarios/EXECUTE_10000_SCENARIOS.sh +61 -0
- package/tests/scenarios/EXECUTE_1000_UNIQUE_SCENARIOS.sh +190 -0
- package/tests/scenarios/EXECUTE_5000_SCENARIOS_SPLIT.sh +192 -0
- package/tests/scenarios/EXECUTE_5000_TOTAL_SCENARIOS.sh +162 -0
- package/tests/scenarios/EXECUTE_5040_SCENARIOS_WITH_V1.1.sh +251 -0
- package/tests/scenarios/EXECUTE_8_BATCHES_500.sh +51 -0
- package/tests/scenarios/EXECUTE_QUICK_SMOKE.sh +9 -0
- package/tests/scenarios/EXECUTE_SINGLE_BATCH.sh +117 -0
- package/tests/scenarios/EXECUTE_TARGETED_PERF.sh +19 -0
- package/tests/scenarios/GENERATE_1000_SCENARIOS.sh +235 -0
- package/tests/scenarios/GENERATE_4000_HARD_SCENARIOS.sh +266 -0
- package/tests/scenarios/GENERATE_4000_HARD_SCENARIOS_FIXED.sh +267 -0
- package/tests/scenarios/GENERATE_4000_HARD_SCENARIOS_FIXED_V2.sh +267 -0
- package/tests/scenarios/NEW_RANDOM_E2E_TEST.sh +422 -0
- package/tests/scenarios/QUICK_SMOKE_200.sh +38 -0
- package/tests/scenarios/QUICK_SMOKE_MINI.sh +3 -0
- package/tests/scenarios/RANDOM_REAL_WORLD_SCENARIOS.sh +372 -0
- package/tests/scenarios/ROUND3_RANDOM_E2E_TEST.sh +446 -0
- package/tests/scenarios/RUN_AGGRESSIVE_AND_SUMMARY.sh +51 -0
- package/tests/scenarios/RUN_ALL_1018_SCENARIOS.sh +161 -0
- package/tests/scenarios/TARGETED_PERF.sh +75 -0
- package/tests/scenarios/V1.1_FEATURES_SCENARIOS.sh +145 -0
- package/tests/unit/utils.test.ts +52 -0
- package/tests/v1.1-features-scenarios.sh +276 -0
- package/tsconfig.json +21 -0
- package/v1.6_FEATURE_REQUESTS.md +79 -0
|
@@ -0,0 +1,775 @@
|
|
|
1
|
+
# MemoryLink v1.5.1 - Cursor AI Integration Guide
|
|
2
|
+
|
|
3
|
+
**Purpose**: Complete end-to-end integration guide for Cursor AI developers
|
|
4
|
+
**Version**: 1.5.1
|
|
5
|
+
**Date**: 2025-12-19
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🎯 What MemoryLink Is (For Cursor)
|
|
10
|
+
|
|
11
|
+
MemoryLink is a **Git-native, local memory and safety layer** for AI coding assistants.
|
|
12
|
+
|
|
13
|
+
**Key Principle**: Cursor does **NOT** implement memory or safety itself. Instead:
|
|
14
|
+
|
|
15
|
+
- ✅ Reads context **from** MemoryLink (`memorylink get-context ...`)
|
|
16
|
+
- ✅ Runs **Buddy-Check** before and after agents (`memorylink doctor ...`)
|
|
17
|
+
- ✅ Lets MemoryLink own checkpoints, locks, scopes, and stats
|
|
18
|
+
|
|
19
|
+
**Architecture**: **Storage + Guardrails outside Cursor; UI + agent orchestration inside Cursor**
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 📋 Core Responsibilities for Cursor
|
|
24
|
+
|
|
25
|
+
### 1. Before an Agent Runs (Preflight)
|
|
26
|
+
|
|
27
|
+
**When**: User starts an AI task in Cursor (e.g., "Refactor auth flow")
|
|
28
|
+
|
|
29
|
+
**Step 1: Run Buddy-Check Preflight**
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
memorylink doctor --preflight --json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Parse the JSON Response**:
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"status": "GREEN" | "YELLOW" | "RED",
|
|
39
|
+
"summary": "Preflight check completed",
|
|
40
|
+
"issues": [
|
|
41
|
+
{
|
|
42
|
+
"type": "SECRET_DETECTED" | "BROKEN_REF" | "STALE_MEMORY" | "ACTIVE_LOCK",
|
|
43
|
+
"severity": "error" | "warning",
|
|
44
|
+
"message": "API key found in memory entry",
|
|
45
|
+
"file": ".memorylink/memory.log",
|
|
46
|
+
"entryId": "mem_abc123"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"recordsUsed": 42,
|
|
50
|
+
"trust": { "high": 10, "medium": 25, "low": 7 },
|
|
51
|
+
"timestamp": "2025-12-19T16:00:00Z"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Step 2: Use Status in Cursor UI/Behavior**
|
|
56
|
+
|
|
57
|
+
#### If Status = GREEN
|
|
58
|
+
```typescript
|
|
59
|
+
// Show in status bar
|
|
60
|
+
statusBar.text = "MemoryLink: ● GREEN – Safe to run";
|
|
61
|
+
statusBar.tooltip = "Last check: 2 minutes ago";
|
|
62
|
+
|
|
63
|
+
// Proceed with agent
|
|
64
|
+
allowAgentStart = true;
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### If Status = YELLOW
|
|
68
|
+
```typescript
|
|
69
|
+
// Show warning in status bar
|
|
70
|
+
statusBar.text = "MemoryLink: ● YELLOW – Some stale or low-trust memories";
|
|
71
|
+
statusBar.tooltip = "Warnings detected. Review issues panel.";
|
|
72
|
+
|
|
73
|
+
// Show issues in panel
|
|
74
|
+
showIssuesPanel(issues);
|
|
75
|
+
|
|
76
|
+
// Allow agent but show warnings
|
|
77
|
+
allowAgentStart = true;
|
|
78
|
+
showWarning = true;
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### If Status = RED (Strict/Enterprise Mode)
|
|
82
|
+
```typescript
|
|
83
|
+
// Block agent start
|
|
84
|
+
allowAgentStart = false;
|
|
85
|
+
|
|
86
|
+
// Show blocking message
|
|
87
|
+
showBlockingDialog({
|
|
88
|
+
title: "MemoryLink: RED – Agent Blocked",
|
|
89
|
+
message: "Critical issues detected. Fix before proceeding.",
|
|
90
|
+
issues: issues,
|
|
91
|
+
actions: [
|
|
92
|
+
{ label: "Fix Issues", action: () => openFixDialog() },
|
|
93
|
+
{ label: "Override with Reason", action: () => showOverrideDialog() }
|
|
94
|
+
]
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// If override, log to MemoryLink
|
|
98
|
+
if (userOverrides) {
|
|
99
|
+
// Set environment variable or use --override flag
|
|
100
|
+
process.env.MEMORYLINK_OVERRIDE = "true";
|
|
101
|
+
process.env.MEMORYLINK_OVERRIDE_REASON = userReason;
|
|
102
|
+
process.env.MEMORYLINK_OVERRIDE_BY = userEmail;
|
|
103
|
+
|
|
104
|
+
// MemoryLink will log to .memorylink/overrides.log
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Implementation Example**:
|
|
109
|
+
```typescript
|
|
110
|
+
async function runPreflightCheck(): Promise<BuddyCheckResult> {
|
|
111
|
+
const { execSync } = require('child_process');
|
|
112
|
+
|
|
113
|
+
try {
|
|
114
|
+
const output = execSync('memorylink doctor --preflight --json', {
|
|
115
|
+
encoding: 'utf-8',
|
|
116
|
+
cwd: workspaceRoot
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// Extract JSON from output (may have non-JSON text)
|
|
120
|
+
const jsonMatch = output.match(/\{[\s\S]*\}/);
|
|
121
|
+
if (!jsonMatch) {
|
|
122
|
+
throw new Error('No JSON found in preflight output');
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const result = JSON.parse(jsonMatch[0]);
|
|
126
|
+
return result;
|
|
127
|
+
} catch (error) {
|
|
128
|
+
// Handle error (MemoryLink not installed, not initialized, etc.)
|
|
129
|
+
console.error('Preflight check failed:', error);
|
|
130
|
+
return { status: 'RED', issues: [{ type: 'CHECK_FAILED', message: error.message }] };
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
### 2. While an Agent Runs (Context + Safety)
|
|
138
|
+
|
|
139
|
+
**When**: Agent needs context for current task
|
|
140
|
+
|
|
141
|
+
**Step 1: Request Context from MemoryLink**
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
memorylink get-context --smart --scope "<scope>" --format json --limit 50
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Options**:
|
|
148
|
+
- `--smart`: Uses weighted scoring (trust, status, recency, file, task)
|
|
149
|
+
- `--scope`: Filters to project area (e.g., `auth`, `frontend`, `billing`)
|
|
150
|
+
- `--task`: Task description for relevance scoring
|
|
151
|
+
- `--format json`: Machine-readable output
|
|
152
|
+
- `--limit 50`: Maximum entries per section
|
|
153
|
+
|
|
154
|
+
**Step 2: Feed Context into Agent Prompt**
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
async function getMemoryLinkContext(options: {
|
|
158
|
+
scope?: string;
|
|
159
|
+
task?: string;
|
|
160
|
+
file?: string;
|
|
161
|
+
}): Promise<ContextData> {
|
|
162
|
+
const { execSync } = require('child_process');
|
|
163
|
+
|
|
164
|
+
let command = 'memorylink get-context --smart --format json --limit 50';
|
|
165
|
+
|
|
166
|
+
if (options.scope) {
|
|
167
|
+
command += ` --scope "${options.scope}"`;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (options.task) {
|
|
171
|
+
command += ` --task "${options.task}"`;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (options.file) {
|
|
175
|
+
command += ` "${options.file}"`;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
try {
|
|
179
|
+
const output = execSync(command, { encoding: 'utf-8', cwd: workspaceRoot });
|
|
180
|
+
const jsonMatch = output.match(/\{[\s\S]*\}/);
|
|
181
|
+
|
|
182
|
+
if (jsonMatch) {
|
|
183
|
+
return JSON.parse(jsonMatch[0]);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Fallback: parse human-readable output
|
|
187
|
+
return parseHumanReadableContext(output);
|
|
188
|
+
} catch (error) {
|
|
189
|
+
console.error('Context retrieval failed:', error);
|
|
190
|
+
return { memory: [], learnings: [], changes: [], protected: [] };
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Use in agent prompt
|
|
195
|
+
const context = await getMemoryLinkContext({
|
|
196
|
+
scope: currentFileScope,
|
|
197
|
+
task: userRequest,
|
|
198
|
+
file: currentFile
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
const prompt = `
|
|
202
|
+
${context.memory.map(m => `Memory: ${m.details}`).join('\n')}
|
|
203
|
+
${context.learnings.map(l => `Learning: ${l.problem} -> ${l.solution} (${l.outcome})`).join('\n')}
|
|
204
|
+
${context.protected.map(p => `Protected: ${p} - DO NOT MODIFY`).join('\n')}
|
|
205
|
+
|
|
206
|
+
User Request: ${userRequest}
|
|
207
|
+
`;
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Step 3: Respect Locks (Optional but Recommended)**
|
|
211
|
+
|
|
212
|
+
Before making large, multi-file edits:
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
async function acquireLockIfNeeded(files: string[]): Promise<boolean> {
|
|
216
|
+
const { execSync } = require('child_process');
|
|
217
|
+
|
|
218
|
+
try {
|
|
219
|
+
const fileList = files.join(',');
|
|
220
|
+
const sessionId = `cursor-${Date.now()}`;
|
|
221
|
+
|
|
222
|
+
execSync(`memorylink lock acquire --agent "${sessionId}" --files "${fileList}" --timeout 30`, {
|
|
223
|
+
encoding: 'utf-8',
|
|
224
|
+
cwd: workspaceRoot
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
return true;
|
|
228
|
+
} catch (error) {
|
|
229
|
+
// Lock already held or other error
|
|
230
|
+
const lockStatus = execSync('memorylink lock status --json', {
|
|
231
|
+
encoding: 'utf-8',
|
|
232
|
+
cwd: workspaceRoot
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
const status = JSON.parse(lockStatus);
|
|
236
|
+
if (status.locked) {
|
|
237
|
+
showWarning(`Lock held by ${status.agentId}. Proceed anyway?`);
|
|
238
|
+
return userConfirms;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// For long-running operations
|
|
246
|
+
async function renewLock(): Promise<void> {
|
|
247
|
+
execSync('memorylink lock renew --timeout 60', {
|
|
248
|
+
encoding: 'utf-8',
|
|
249
|
+
cwd: workspaceRoot
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// When done
|
|
254
|
+
async function releaseLock(): Promise<void> {
|
|
255
|
+
execSync('memorylink lock release', {
|
|
256
|
+
encoding: 'utf-8',
|
|
257
|
+
cwd: workspaceRoot
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
### 3. After an Agent Proposes Changes (Postflight)
|
|
265
|
+
|
|
266
|
+
**When**: Cursor has a set of staged edits (changed files + any MemoryLink log writes)
|
|
267
|
+
|
|
268
|
+
**Step 1: Run Buddy-Check Postflight**
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
memorylink doctor --postflight --changed --json
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
**Parse the JSON Response** (same format as preflight)
|
|
275
|
+
|
|
276
|
+
**Step 2: Use Results to Gate "Apply/Commit"**
|
|
277
|
+
|
|
278
|
+
#### If Status = GREEN
|
|
279
|
+
```typescript
|
|
280
|
+
// Show success
|
|
281
|
+
statusBar.text = "MemoryLink: ● GREEN – Safe to apply/commit";
|
|
282
|
+
showSuccessNotification("MemoryLink validated changes. Safe to proceed.");
|
|
283
|
+
|
|
284
|
+
// Allow apply/commit
|
|
285
|
+
allowApply = true;
|
|
286
|
+
allowCommit = true;
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
#### If Status = YELLOW
|
|
290
|
+
```typescript
|
|
291
|
+
// Show warning
|
|
292
|
+
statusBar.text = "MemoryLink: ● YELLOW – Minor issues detected";
|
|
293
|
+
showWarningNotification("MemoryLink found warnings. Review before committing.");
|
|
294
|
+
|
|
295
|
+
// Show issues in panel
|
|
296
|
+
showIssuesPanel(issues);
|
|
297
|
+
|
|
298
|
+
// Allow but warn
|
|
299
|
+
allowApply = true;
|
|
300
|
+
allowCommit = true;
|
|
301
|
+
showWarning = true;
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
#### If Status = RED (Strict/Enterprise Mode)
|
|
305
|
+
```typescript
|
|
306
|
+
// Block apply/commit
|
|
307
|
+
allowApply = false;
|
|
308
|
+
allowCommit = false;
|
|
309
|
+
|
|
310
|
+
// Show blocking dialog
|
|
311
|
+
showBlockingDialog({
|
|
312
|
+
title: "MemoryLink: RED – Changes Blocked",
|
|
313
|
+
message: "Critical issues detected. Fix before committing.",
|
|
314
|
+
issues: issues,
|
|
315
|
+
actions: [
|
|
316
|
+
{
|
|
317
|
+
label: "Fix with MemoryLink",
|
|
318
|
+
action: () => {
|
|
319
|
+
// Run fix command
|
|
320
|
+
execSync('memorylink doctor --fix', { cwd: workspaceRoot });
|
|
321
|
+
// Re-run postflight
|
|
322
|
+
runPostflightCheck();
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
label: "Cancel Changes",
|
|
327
|
+
action: () => revertChanges()
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
label: "Override with Reason",
|
|
331
|
+
action: () => showOverrideDialog()
|
|
332
|
+
}
|
|
333
|
+
]
|
|
334
|
+
});
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
**Implementation Example**:
|
|
338
|
+
```typescript
|
|
339
|
+
async function runPostflightCheck(): Promise<BuddyCheckResult> {
|
|
340
|
+
const { execSync } = require('child_process');
|
|
341
|
+
|
|
342
|
+
try {
|
|
343
|
+
const output = execSync('memorylink doctor --postflight --changed --json', {
|
|
344
|
+
encoding: 'utf-8',
|
|
345
|
+
cwd: workspaceRoot
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
const jsonMatch = output.match(/\{[\s\S]*\}/);
|
|
349
|
+
if (!jsonMatch) {
|
|
350
|
+
throw new Error('No JSON found in postflight output');
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
const result = JSON.parse(jsonMatch[0]);
|
|
354
|
+
return result;
|
|
355
|
+
} catch (error) {
|
|
356
|
+
console.error('Postflight check failed:', error);
|
|
357
|
+
return { status: 'RED', issues: [{ type: 'CHECK_FAILED', message: error.message }] };
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// Call before allowing commit
|
|
362
|
+
async function validateBeforeCommit(): Promise<boolean> {
|
|
363
|
+
const result = await runPostflightCheck();
|
|
364
|
+
const config = readMemoryLinkConfig();
|
|
365
|
+
const isStrict = config.mode === 'enterprise' || config.strict === true;
|
|
366
|
+
|
|
367
|
+
if (result.status === 'RED' && isStrict) {
|
|
368
|
+
showBlockingDialog(result);
|
|
369
|
+
return false;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
if (result.status === 'YELLOW') {
|
|
373
|
+
showWarning(result);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
return true;
|
|
377
|
+
}
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
## 🎨 How Cursor Should Surface MemoryLink in the UI
|
|
383
|
+
|
|
384
|
+
### 1. Status Bar
|
|
385
|
+
|
|
386
|
+
**Display**:
|
|
387
|
+
```
|
|
388
|
+
MemoryLink: ● GREEN / ● YELLOW / ● RED
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
**Implementation**:
|
|
392
|
+
```typescript
|
|
393
|
+
class MemoryLinkStatusBar {
|
|
394
|
+
private statusBar: StatusBarItem;
|
|
395
|
+
|
|
396
|
+
constructor() {
|
|
397
|
+
this.statusBar = window.createStatusBarItem(StatusBarAlignment.Right, 100);
|
|
398
|
+
this.statusBar.command = 'memorylink.showPanel';
|
|
399
|
+
this.updateStatus();
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
async updateStatus() {
|
|
403
|
+
const result = await runPreflightCheck();
|
|
404
|
+
|
|
405
|
+
let text = 'MemoryLink: ';
|
|
406
|
+
let color = '';
|
|
407
|
+
|
|
408
|
+
switch (result.status) {
|
|
409
|
+
case 'GREEN':
|
|
410
|
+
text += '● GREEN';
|
|
411
|
+
color = '#00ff00';
|
|
412
|
+
break;
|
|
413
|
+
case 'YELLOW':
|
|
414
|
+
text += '● YELLOW';
|
|
415
|
+
color = '#ffff00';
|
|
416
|
+
break;
|
|
417
|
+
case 'RED':
|
|
418
|
+
text += '● RED';
|
|
419
|
+
color = '#ff0000';
|
|
420
|
+
break;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
this.statusBar.text = text;
|
|
424
|
+
this.statusBar.color = color;
|
|
425
|
+
this.statusBar.tooltip = `Last check: ${formatTime(result.timestamp)}\n${result.summary}`;
|
|
426
|
+
this.statusBar.show();
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
### 2. Sidebar / Panel
|
|
432
|
+
|
|
433
|
+
**Create Three Tabs**:
|
|
434
|
+
|
|
435
|
+
#### Tab 1: Buddy-Check
|
|
436
|
+
```typescript
|
|
437
|
+
class BuddyCheckPanel {
|
|
438
|
+
render() {
|
|
439
|
+
return {
|
|
440
|
+
title: 'Buddy-Check',
|
|
441
|
+
content: `
|
|
442
|
+
<div class="buddy-check-panel">
|
|
443
|
+
<div class="status">
|
|
444
|
+
<span class="status-indicator ${lastResult.status}"></span>
|
|
445
|
+
<span>${lastResult.status}</span>
|
|
446
|
+
</div>
|
|
447
|
+
<div class="issues">
|
|
448
|
+
${lastResult.issues.map(issue => `
|
|
449
|
+
<div class="issue ${issue.severity}">
|
|
450
|
+
<strong>${issue.type}</strong>
|
|
451
|
+
<p>${issue.message}</p>
|
|
452
|
+
${issue.file ? `<small>${issue.file}</small>` : ''}
|
|
453
|
+
</div>
|
|
454
|
+
`).join('')}
|
|
455
|
+
</div>
|
|
456
|
+
<div class="actions">
|
|
457
|
+
<button onclick="runPreflight()">Run Preflight</button>
|
|
458
|
+
<button onclick="runPostflight()">Run Postflight</button>
|
|
459
|
+
</div>
|
|
460
|
+
</div>
|
|
461
|
+
`
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
#### Tab 2: Memory
|
|
468
|
+
```typescript
|
|
469
|
+
class MemoryPanel {
|
|
470
|
+
async render() {
|
|
471
|
+
const context = await getMemoryLinkContext({
|
|
472
|
+
scope: currentScope,
|
|
473
|
+
file: currentFile
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
return {
|
|
477
|
+
title: 'Memory',
|
|
478
|
+
content: `
|
|
479
|
+
<div class="memory-panel">
|
|
480
|
+
<div class="filters">
|
|
481
|
+
<input placeholder="Filter by scope..." onchange="filterByScope(this.value)">
|
|
482
|
+
<select onchange="filterByTrust(this.value)">
|
|
483
|
+
<option>All Trust Levels</option>
|
|
484
|
+
<option>High Trust</option>
|
|
485
|
+
<option>Medium Trust</option>
|
|
486
|
+
<option>Low Trust</option>
|
|
487
|
+
</select>
|
|
488
|
+
</div>
|
|
489
|
+
<div class="memory-list">
|
|
490
|
+
${context.memory.map(entry => `
|
|
491
|
+
<div class="memory-entry">
|
|
492
|
+
<div class="badges">
|
|
493
|
+
<span class="trust-${entry.trustLevel}">${entry.trustLevel}</span>
|
|
494
|
+
<span class="sensitivity-${entry.sensitivity}">${entry.sensitivity}</span>
|
|
495
|
+
${entry.memoryStatus === 'VERIFIED' ? '<span class="verified">✓</span>' : ''}
|
|
496
|
+
</div>
|
|
497
|
+
<div class="content">${entry.details}</div>
|
|
498
|
+
<div class="meta">
|
|
499
|
+
<small>${entry.ts} • ${entry.agent}</small>
|
|
500
|
+
${entry.projectScope ? `<small>Scope: ${entry.projectScope}</small>` : ''}
|
|
501
|
+
</div>
|
|
502
|
+
</div>
|
|
503
|
+
`).join('')}
|
|
504
|
+
</div>
|
|
505
|
+
</div>
|
|
506
|
+
`
|
|
507
|
+
};
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
#### Tab 3: Stats (Optional)
|
|
513
|
+
```typescript
|
|
514
|
+
class StatsPanel {
|
|
515
|
+
async render() {
|
|
516
|
+
const { execSync } = require('child_process');
|
|
517
|
+
const statsOutput = execSync('memorylink stats --format json --since 7d', {
|
|
518
|
+
encoding: 'utf-8',
|
|
519
|
+
cwd: workspaceRoot
|
|
520
|
+
});
|
|
521
|
+
|
|
522
|
+
const stats = JSON.parse(statsOutput.match(/\{[\s\S]*\}/)[0]);
|
|
523
|
+
|
|
524
|
+
return {
|
|
525
|
+
title: 'Stats',
|
|
526
|
+
content: `
|
|
527
|
+
<div class="stats-panel">
|
|
528
|
+
<div class="overview">
|
|
529
|
+
<div class="stat">
|
|
530
|
+
<strong>${stats.totalRuns}</strong>
|
|
531
|
+
<small>Total Runs</small>
|
|
532
|
+
</div>
|
|
533
|
+
<div class="stat">
|
|
534
|
+
<strong>${stats.statusCounts.GREEN}</strong>
|
|
535
|
+
<small>GREEN</small>
|
|
536
|
+
</div>
|
|
537
|
+
<div class="stat">
|
|
538
|
+
<strong>${stats.statusCounts.YELLOW}</strong>
|
|
539
|
+
<small>YELLOW</small>
|
|
540
|
+
</div>
|
|
541
|
+
<div class="stat">
|
|
542
|
+
<strong>${stats.statusCounts.RED}</strong>
|
|
543
|
+
<small>RED</small>
|
|
544
|
+
</div>
|
|
545
|
+
</div>
|
|
546
|
+
${stats.recommendations && stats.recommendations.length > 0 ? `
|
|
547
|
+
<div class="recommendations">
|
|
548
|
+
<h3>Recommendations</h3>
|
|
549
|
+
${stats.recommendations.map(rec => `<p>• ${rec}</p>`).join('')}
|
|
550
|
+
</div>
|
|
551
|
+
` : ''}
|
|
552
|
+
</div>
|
|
553
|
+
`
|
|
554
|
+
};
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
|
|
561
|
+
## ⚙️ How Cursor Should Treat Modes and Policies
|
|
562
|
+
|
|
563
|
+
### Reading Configuration
|
|
564
|
+
|
|
565
|
+
```typescript
|
|
566
|
+
function readMemoryLinkConfig(): MemoryLinkConfig {
|
|
567
|
+
const fs = require('fs');
|
|
568
|
+
const path = require('path');
|
|
569
|
+
|
|
570
|
+
const configPath = path.join(workspaceRoot, '.memorylink', 'config.json');
|
|
571
|
+
|
|
572
|
+
if (!fs.existsSync(configPath)) {
|
|
573
|
+
return { mode: 'developer', strict: false };
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
577
|
+
return {
|
|
578
|
+
mode: config.mode || 'developer',
|
|
579
|
+
strict: config.strict || false
|
|
580
|
+
};
|
|
581
|
+
}
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
### Mode Behavior
|
|
585
|
+
|
|
586
|
+
#### Developer Mode (Default)
|
|
587
|
+
```typescript
|
|
588
|
+
const config = readMemoryLinkConfig();
|
|
589
|
+
|
|
590
|
+
if (config.mode === 'developer' || !config.strict) {
|
|
591
|
+
// Warnings only
|
|
592
|
+
if (result.status === 'RED') {
|
|
593
|
+
showWarning(result);
|
|
594
|
+
allowAgentStart = true; // Still allow
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
#### Enterprise / Strict Mode
|
|
600
|
+
```typescript
|
|
601
|
+
if (config.mode === 'enterprise' || config.strict === true) {
|
|
602
|
+
// Hard blocks
|
|
603
|
+
if (result.status === 'RED') {
|
|
604
|
+
blockAgentStart(result);
|
|
605
|
+
allowAgentStart = false;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
// Override requires explicit reason
|
|
609
|
+
if (userOverrides) {
|
|
610
|
+
const reason = await promptForReason();
|
|
611
|
+
const approver = await promptForApprover();
|
|
612
|
+
|
|
613
|
+
// Log override
|
|
614
|
+
logOverride({
|
|
615
|
+
status: 'RED',
|
|
616
|
+
reason: reason,
|
|
617
|
+
approvedBy: approver,
|
|
618
|
+
timestamp: new Date().toISOString()
|
|
619
|
+
});
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
**Key Point**: Cursor does **NOT** own policy logic. It:
|
|
625
|
+
- Reads mode and status from MemoryLink's JSON
|
|
626
|
+
- Enforces behavior in UI and flows accordingly
|
|
627
|
+
|
|
628
|
+
---
|
|
629
|
+
|
|
630
|
+
## 🔄 CI and Multi-Tool Story
|
|
631
|
+
|
|
632
|
+
### How Cursor Fits into the Bigger Picture
|
|
633
|
+
|
|
634
|
+
Even if an agent runs outside Cursor (e.g., in GitHub Actions or another IDE):
|
|
635
|
+
|
|
636
|
+
- MemoryLink + CI ensures Buddy-Check runs on PRs/pushes
|
|
637
|
+
- Cursor's pre/postflight behaves the same way locally as CI does in pipelines
|
|
638
|
+
|
|
639
|
+
**Example GitHub Action**:
|
|
640
|
+
```yaml
|
|
641
|
+
name: MemoryLink Preflight
|
|
642
|
+
|
|
643
|
+
on:
|
|
644
|
+
pull_request:
|
|
645
|
+
branches: [main, develop]
|
|
646
|
+
push:
|
|
647
|
+
branches: [main, develop]
|
|
648
|
+
|
|
649
|
+
jobs:
|
|
650
|
+
preflight:
|
|
651
|
+
runs-on: ubuntu-latest
|
|
652
|
+
steps:
|
|
653
|
+
- uses: actions/checkout@v3
|
|
654
|
+
- uses: actions/setup-node@v3
|
|
655
|
+
- run: npm install -g memorylink
|
|
656
|
+
- run: memorylink doctor --preflight --json > preflight.json
|
|
657
|
+
- name: Check Status
|
|
658
|
+
run: |
|
|
659
|
+
STATUS=$(jq -r '.status' preflight.json)
|
|
660
|
+
if [ "$STATUS" = "RED" ]; then
|
|
661
|
+
echo "❌ MemoryLink preflight failed"
|
|
662
|
+
exit 1
|
|
663
|
+
fi
|
|
664
|
+
- uses: actions/upload-artifact@v3
|
|
665
|
+
with:
|
|
666
|
+
name: preflight-report
|
|
667
|
+
path: preflight.json
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
**Result**: One story for all tools:
|
|
671
|
+
- "No matter which tool the agent runs in (Cursor, VS Code, CI), MemoryLink Buddy-Check is the **single source of truth** for:
|
|
672
|
+
- Is the repo safe to run agents?
|
|
673
|
+
- Did the last agent change introduce unsafe memory or code?"
|
|
674
|
+
|
|
675
|
+
---
|
|
676
|
+
|
|
677
|
+
## 📝 Complete Integration Flow Example
|
|
678
|
+
|
|
679
|
+
### Full Agent Workflow
|
|
680
|
+
|
|
681
|
+
```typescript
|
|
682
|
+
class MemoryLinkAgentOrchestrator {
|
|
683
|
+
async runAgentTask(userRequest: string, files: string[]) {
|
|
684
|
+
// 1. Preflight
|
|
685
|
+
const preflight = await runPreflightCheck();
|
|
686
|
+
const config = readMemoryLinkConfig();
|
|
687
|
+
|
|
688
|
+
if (preflight.status === 'RED' && (config.mode === 'enterprise' || config.strict)) {
|
|
689
|
+
await showBlockingDialog(preflight);
|
|
690
|
+
return; // Blocked
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
if (preflight.status === 'YELLOW' || preflight.status === 'RED') {
|
|
694
|
+
await showWarningDialog(preflight);
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
// 2. Acquire Lock (optional)
|
|
698
|
+
const lockAcquired = await acquireLockIfNeeded(files);
|
|
699
|
+
|
|
700
|
+
// 3. Get Context
|
|
701
|
+
const context = await getMemoryLinkContext({
|
|
702
|
+
scope: detectScope(files),
|
|
703
|
+
task: userRequest,
|
|
704
|
+
file: files[0]
|
|
705
|
+
});
|
|
706
|
+
|
|
707
|
+
// 4. Run Agent
|
|
708
|
+
const agentResult = await runAgent({
|
|
709
|
+
prompt: buildPrompt(context, userRequest),
|
|
710
|
+
files: files
|
|
711
|
+
});
|
|
712
|
+
|
|
713
|
+
// 5. Postflight
|
|
714
|
+
const postflight = await runPostflightCheck();
|
|
715
|
+
|
|
716
|
+
if (postflight.status === 'RED' && (config.mode === 'enterprise' || config.strict)) {
|
|
717
|
+
await showBlockingDialog(postflight);
|
|
718
|
+
await revertChanges();
|
|
719
|
+
return; // Blocked
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
if (postflight.status === 'YELLOW') {
|
|
723
|
+
await showWarningDialog(postflight);
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
// 6. Release Lock
|
|
727
|
+
if (lockAcquired) {
|
|
728
|
+
await releaseLock();
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
// 7. Show Success
|
|
732
|
+
await showSuccessNotification("Agent completed. MemoryLink validated changes.");
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
---
|
|
738
|
+
|
|
739
|
+
## 🎯 In One Sentence for Cursor
|
|
740
|
+
|
|
741
|
+
**MemoryLink v1.5.1 gives Cursor a ready-made guardrail + memory layer**: Cursor only needs to call the CLI at three points (preflight, get-context, postflight), show GREEN/YELLOW/RED in the UI, and respect locks and modes; all safety, governance, and memory intelligence stays in MemoryLink.
|
|
742
|
+
|
|
743
|
+
---
|
|
744
|
+
|
|
745
|
+
## 📚 Additional Resources
|
|
746
|
+
|
|
747
|
+
- **Buddy-Check Guide**: `CURSOR_AI_BUDDY_CHECK_GUIDE.md`
|
|
748
|
+
- **Master Validation**: `MASTER_VALIDATION_DOCUMENT.md`
|
|
749
|
+
- **CLI Documentation**: Run `memorylink --help`
|
|
750
|
+
- **Example Integration**: See `extensions/vscode/` for reference implementation
|
|
751
|
+
|
|
752
|
+
---
|
|
753
|
+
|
|
754
|
+
## ✅ Integration Checklist
|
|
755
|
+
|
|
756
|
+
- [ ] Install MemoryLink CLI
|
|
757
|
+
- [ ] Initialize MemoryLink in workspace
|
|
758
|
+
- [ ] Implement preflight check before agent runs
|
|
759
|
+
- [ ] Implement context retrieval during agent work
|
|
760
|
+
- [ ] Implement postflight check after agent changes
|
|
761
|
+
- [ ] Add status bar indicator
|
|
762
|
+
- [ ] Add sidebar panels (Buddy-Check, Memory, Stats)
|
|
763
|
+
- [ ] Read and respect mode configuration
|
|
764
|
+
- [ ] Handle GREEN/YELLOW/RED status appropriately
|
|
765
|
+
- [ ] Implement override flow with logging
|
|
766
|
+
- [ ] Test with developer mode
|
|
767
|
+
- [ ] Test with enterprise/strict mode
|
|
768
|
+
- [ ] Test error handling (MemoryLink not installed, etc.)
|
|
769
|
+
|
|
770
|
+
---
|
|
771
|
+
|
|
772
|
+
**Status**: ✅ **Complete Integration Guide Ready**
|
|
773
|
+
|
|
774
|
+
**Next Step**: Implement integration in Cursor AI following this guide.
|
|
775
|
+
|