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
package/dist/cli.js
ADDED
|
@@ -0,0 +1,1114 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* MemoryLink CLI
|
|
5
|
+
* Universal memory layer for AI coding assistants
|
|
6
|
+
*
|
|
7
|
+
* Cross-AI sharing • Audit trails • Learning tracking • File protection
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const commander_1 = require("commander");
|
|
11
|
+
const child_process_1 = require("child_process");
|
|
12
|
+
const index_js_1 = require("./commands/index.js");
|
|
13
|
+
const checkpoint_js_1 = require("./commands/checkpoint.js");
|
|
14
|
+
const lock_js_1 = require("./commands/lock.js");
|
|
15
|
+
const stats_js_1 = require("./commands/stats.js");
|
|
16
|
+
const scopes_js_1 = require("./commands/scopes.js");
|
|
17
|
+
const telemetry_test_js_1 = require("./commands/telemetry-test.js");
|
|
18
|
+
const mcp_server_js_1 = require("./server/mcp-server.js");
|
|
19
|
+
const program = new commander_1.Command();
|
|
20
|
+
function validateEnvironment(thisCommand) {
|
|
21
|
+
const cmdName = thisCommand.name();
|
|
22
|
+
// Skip global checks for purely informational commands
|
|
23
|
+
const skip = new Set(['help', 'server']);
|
|
24
|
+
if (skip.has(cmdName)) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// Basic Node.js version check
|
|
28
|
+
const nodeVersion = process.versions.node.split('.')[0];
|
|
29
|
+
const nodeMajor = parseInt(nodeVersion, 10);
|
|
30
|
+
if (Number.isFinite(nodeMajor) && nodeMajor < 16) {
|
|
31
|
+
console.error('\x1b[31m✗\x1b[0m Node.js 16 or higher is required to run MemoryLink.');
|
|
32
|
+
console.error(`Detected Node.js version: ${process.version}`);
|
|
33
|
+
console.error('Please upgrade Node.js from https://nodejs.org/');
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
// Git availability check – many commands rely on Git for hooks and sync
|
|
37
|
+
try {
|
|
38
|
+
(0, child_process_1.execSync)('git --version', { stdio: 'ignore' });
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
console.error('\x1b[31m✗\x1b[0m Git is required for MemoryLink to manage hooks and share memory via your repo.');
|
|
42
|
+
console.error('Please install Git from https://git-scm.com/downloads and try again.');
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// ASCII art logo
|
|
47
|
+
const LOGO = `
|
|
48
|
+
\x1b[36m╔══════════════════════════════════════════════════════════╗
|
|
49
|
+
║ ║
|
|
50
|
+
║ 🧠 MemoryLink v1.0.0 ║
|
|
51
|
+
║ Universal memory layer for AI coding assistants ║
|
|
52
|
+
║ ║
|
|
53
|
+
╚══════════════════════════════════════════════════════════╝\x1b[0m
|
|
54
|
+
`;
|
|
55
|
+
program
|
|
56
|
+
.name('memorylink')
|
|
57
|
+
.description('Universal memory layer for AI coding assistants')
|
|
58
|
+
.version('1.0.0')
|
|
59
|
+
.option('-v, --verbose', 'Enable verbose output')
|
|
60
|
+
.hook('preAction', (thisCommand) => {
|
|
61
|
+
const opts = thisCommand.opts();
|
|
62
|
+
if (opts.verbose) {
|
|
63
|
+
console.log('\x1b[90m[verbose mode enabled]\x1b[0m');
|
|
64
|
+
}
|
|
65
|
+
// Basic environment validation for most commands
|
|
66
|
+
validateEnvironment(thisCommand);
|
|
67
|
+
});
|
|
68
|
+
// ============================================
|
|
69
|
+
// INIT COMMAND
|
|
70
|
+
// ============================================
|
|
71
|
+
program
|
|
72
|
+
.command('init')
|
|
73
|
+
.description('Initialize MemoryLink in current directory')
|
|
74
|
+
.action(async () => {
|
|
75
|
+
const opts = program.opts();
|
|
76
|
+
await (0, index_js_1.initCommand)({ verbose: opts.verbose });
|
|
77
|
+
});
|
|
78
|
+
// ============================================
|
|
79
|
+
// QUICKSTART COMMAND (Recommended by Qwen - reduces friction)
|
|
80
|
+
// ============================================
|
|
81
|
+
program
|
|
82
|
+
.command('quickstart')
|
|
83
|
+
.description('One-command setup: init + protect + hooks + AI config')
|
|
84
|
+
.option('-t, --tool <tool>', 'Primary AI tool (cursor, claude, chatgpt, copilot)', 'cursor')
|
|
85
|
+
.option('--skip-hooks', 'Skip Git hooks installation')
|
|
86
|
+
.action(async (cmdOpts) => {
|
|
87
|
+
const opts = program.opts();
|
|
88
|
+
await (0, index_js_1.quickstartCommand)({
|
|
89
|
+
verbose: opts.verbose,
|
|
90
|
+
tool: cmdOpts.tool,
|
|
91
|
+
skipHooks: cmdOpts.skipHooks,
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
// ============================================
|
|
95
|
+
// PROTECT COMMANDS
|
|
96
|
+
// ============================================
|
|
97
|
+
program
|
|
98
|
+
.command('protect <file>')
|
|
99
|
+
.description('Add a file to the protected list')
|
|
100
|
+
.option('-r, --reason <reason>', 'Reason for protection')
|
|
101
|
+
.action(async (file, cmdOpts) => {
|
|
102
|
+
const opts = program.opts();
|
|
103
|
+
await (0, index_js_1.protectCommand)(file, { verbose: opts.verbose, ...cmdOpts });
|
|
104
|
+
});
|
|
105
|
+
program
|
|
106
|
+
.command('unprotect <file>')
|
|
107
|
+
.description('Remove a file from the protected list')
|
|
108
|
+
.action(async (file) => {
|
|
109
|
+
const opts = program.opts();
|
|
110
|
+
await (0, index_js_1.unprotectCommand)(file, { verbose: opts.verbose });
|
|
111
|
+
});
|
|
112
|
+
program
|
|
113
|
+
.command('protected')
|
|
114
|
+
.description('List all protected files')
|
|
115
|
+
.action(async () => {
|
|
116
|
+
const opts = program.opts();
|
|
117
|
+
await (0, index_js_1.listProtectedCommand)({ verbose: opts.verbose });
|
|
118
|
+
});
|
|
119
|
+
// ============================================
|
|
120
|
+
// ROADMAP
|
|
121
|
+
// ============================================
|
|
122
|
+
program
|
|
123
|
+
.command('roadmap')
|
|
124
|
+
.description('Show launch roadmap and build thresholds (Tree-sitter, dashboard, VS Code)')
|
|
125
|
+
.action(async () => {
|
|
126
|
+
await (0, index_js_1.roadmapCommand)();
|
|
127
|
+
});
|
|
128
|
+
// ============================================
|
|
129
|
+
// VALIDATE COMMAND (v1.3 - Week 5: Memory Quality Validation)
|
|
130
|
+
// ============================================
|
|
131
|
+
program
|
|
132
|
+
.command('validate')
|
|
133
|
+
.description('Validate memory quality and generate quality report')
|
|
134
|
+
.option('--fix', 'Show fix suggestions (not yet implemented)')
|
|
135
|
+
.action(async (cmdOpts) => {
|
|
136
|
+
const opts = program.opts();
|
|
137
|
+
await (0, index_js_1.validateCommand)({ verbose: opts.verbose, fix: cmdOpts.fix || false });
|
|
138
|
+
});
|
|
139
|
+
// ============================================
|
|
140
|
+
// TEMPLATE COMMANDS (v1.3 - Week 6: Enhanced Auto-Capture)
|
|
141
|
+
// ============================================
|
|
142
|
+
const templateCmd = program
|
|
143
|
+
.command('template')
|
|
144
|
+
.description('Template management commands');
|
|
145
|
+
templateCmd
|
|
146
|
+
.command('list')
|
|
147
|
+
.alias('ls')
|
|
148
|
+
.description('List all available templates')
|
|
149
|
+
.action(async () => {
|
|
150
|
+
const opts = program.opts();
|
|
151
|
+
await (0, index_js_1.templateListCommand)({ verbose: opts.verbose });
|
|
152
|
+
});
|
|
153
|
+
templateCmd
|
|
154
|
+
.command('show <name>')
|
|
155
|
+
.alias('get')
|
|
156
|
+
.description('Show template details')
|
|
157
|
+
.action(async (name) => {
|
|
158
|
+
const opts = program.opts();
|
|
159
|
+
await (0, index_js_1.templateShowCommand)(name, { verbose: opts.verbose });
|
|
160
|
+
});
|
|
161
|
+
templateCmd
|
|
162
|
+
.command('create <name>')
|
|
163
|
+
.description('Create a custom template')
|
|
164
|
+
.option('--description <desc>', 'Template description')
|
|
165
|
+
.option('--type <type>', 'Template type: memory or learning', 'memory')
|
|
166
|
+
.option('--fields <json>', 'Template fields as JSON string')
|
|
167
|
+
.action(async (name, cmdOpts) => {
|
|
168
|
+
const opts = program.opts();
|
|
169
|
+
await (0, index_js_1.templateCreateCommand)(name, {
|
|
170
|
+
verbose: opts.verbose,
|
|
171
|
+
description: cmdOpts.description,
|
|
172
|
+
type: cmdOpts.type,
|
|
173
|
+
fields: cmdOpts.fields,
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
templateCmd
|
|
177
|
+
.command('delete <name>')
|
|
178
|
+
.alias('rm')
|
|
179
|
+
.description('Delete a custom template')
|
|
180
|
+
.action(async (name) => {
|
|
181
|
+
const opts = program.opts();
|
|
182
|
+
await (0, index_js_1.templateDeleteCommand)(name, { verbose: opts.verbose });
|
|
183
|
+
});
|
|
184
|
+
// ============================================
|
|
185
|
+
// EXPORT COMMAND
|
|
186
|
+
// ============================================
|
|
187
|
+
program
|
|
188
|
+
.command('export')
|
|
189
|
+
.description('Export context to file or stdout')
|
|
190
|
+
.option('-o, --output <file>', 'Output file (defaults to stdout)')
|
|
191
|
+
.option('-f, --format <format>', 'Format: json or jsonl', 'json')
|
|
192
|
+
.option('-l, --limit <n>', 'Optional cap per section', '0')
|
|
193
|
+
.action(async (cmdOpts) => {
|
|
194
|
+
const opts = program.opts();
|
|
195
|
+
const limit = cmdOpts.limit ? parseInt(cmdOpts.limit, 10) : undefined;
|
|
196
|
+
await (0, index_js_1.exportContextCommand)(cmdOpts.output, { verbose: opts.verbose, format: cmdOpts.format, limit: limit === 0 ? undefined : limit });
|
|
197
|
+
});
|
|
198
|
+
// ============================================
|
|
199
|
+
// MEMORY COMMANDS
|
|
200
|
+
// ============================================
|
|
201
|
+
program
|
|
202
|
+
.command('memory <message>')
|
|
203
|
+
.description('Add an entry to the shared memory log (v1.5 Phase 2: add --scope for project scoping)')
|
|
204
|
+
.option('-t, --tags <tags>', 'Comma-separated tags')
|
|
205
|
+
.option('--type <type>', 'Entry type: note, decision, doc_ref, context, rule', 'note')
|
|
206
|
+
.option('-f, --force', 'Bypass secret detection (use with caution)')
|
|
207
|
+
.option('--scope <scope>', 'v1.5 Phase 2: Project scope (e.g., "frontend", "backend", "auth-module")')
|
|
208
|
+
.action(async (message, cmdOpts) => {
|
|
209
|
+
const opts = program.opts();
|
|
210
|
+
await (0, index_js_1.memoryCommand)(message, {
|
|
211
|
+
verbose: opts.verbose,
|
|
212
|
+
tags: cmdOpts.tags,
|
|
213
|
+
type: cmdOpts.type,
|
|
214
|
+
force: cmdOpts.force,
|
|
215
|
+
scope: cmdOpts.scope,
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
program
|
|
219
|
+
.command('memories')
|
|
220
|
+
.description('List memory entries')
|
|
221
|
+
.option('-l, --limit <n>', 'Number of entries to show', '20')
|
|
222
|
+
.option('--tag <tag>', 'Filter by tag')
|
|
223
|
+
.option('--since <duration>', 'Filter by time (e.g., 7d, 2w, 1m)')
|
|
224
|
+
.option('--json', 'Output as JSON')
|
|
225
|
+
.action(async (cmdOpts) => {
|
|
226
|
+
const opts = program.opts();
|
|
227
|
+
await (0, index_js_1.listMemoryCommand)({
|
|
228
|
+
verbose: opts.verbose,
|
|
229
|
+
limit: parseInt(cmdOpts.limit || '20', 10),
|
|
230
|
+
tag: cmdOpts.tag,
|
|
231
|
+
since: cmdOpts.since,
|
|
232
|
+
json: cmdOpts.json,
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
// ============================================
|
|
236
|
+
// SNIPPET COMMAND (Code Snippet Data Type)
|
|
237
|
+
// ============================================
|
|
238
|
+
program
|
|
239
|
+
.command('snippet <description>')
|
|
240
|
+
.description('Add a code snippet to memory')
|
|
241
|
+
.option('--code <code>', 'Code content (or use --file)')
|
|
242
|
+
.option('--file <path>', 'Read code from file')
|
|
243
|
+
.option('--lines <range>', 'Line range (e.g., "42" or "42-50")')
|
|
244
|
+
.option('--language <lang>', 'Programming language')
|
|
245
|
+
.option('--context <text>', 'Why this snippet is important')
|
|
246
|
+
.option('-t, --tags <tags>', 'Comma-separated tags')
|
|
247
|
+
.option('-f, --force', 'Bypass secret detection (use with caution)')
|
|
248
|
+
.action(async (description, cmdOpts) => {
|
|
249
|
+
const opts = program.opts();
|
|
250
|
+
await (0, index_js_1.snippetCommand)(description, {
|
|
251
|
+
verbose: opts.verbose,
|
|
252
|
+
code: cmdOpts.code,
|
|
253
|
+
file: cmdOpts.file,
|
|
254
|
+
lines: cmdOpts.lines,
|
|
255
|
+
language: cmdOpts.language,
|
|
256
|
+
context: cmdOpts.context,
|
|
257
|
+
tags: cmdOpts.tags,
|
|
258
|
+
force: cmdOpts.force,
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
// ============================================
|
|
262
|
+
// CHANGE COMMANDS
|
|
263
|
+
// ============================================
|
|
264
|
+
program
|
|
265
|
+
.command('change <file> <reason>')
|
|
266
|
+
.description('Log a file change to the audit trail')
|
|
267
|
+
.option('-a, --agent <agent>', 'AI agent that made the change', 'user')
|
|
268
|
+
.option('--action <action>', 'Action type: created, edited, deleted, renamed', 'edited')
|
|
269
|
+
.option('-f, --force', 'Bypass secret detection (use with caution)')
|
|
270
|
+
.option('--justification <text>', 'Detailed justification for the change')
|
|
271
|
+
.option('--reviewed-by <name>', 'Person who reviewed the change')
|
|
272
|
+
.option('--tested <status>', 'Testing status/notes (e.g., "Yes - 42 tests pass")')
|
|
273
|
+
.option('--impact <description>', 'Human-readable impact description')
|
|
274
|
+
.action(async (file, reason, cmdOpts) => {
|
|
275
|
+
const opts = program.opts();
|
|
276
|
+
await (0, index_js_1.changeCommand)(file, reason, {
|
|
277
|
+
verbose: opts.verbose,
|
|
278
|
+
agent: cmdOpts.agent,
|
|
279
|
+
action: cmdOpts.action,
|
|
280
|
+
force: cmdOpts.force,
|
|
281
|
+
justification: cmdOpts.justification,
|
|
282
|
+
reviewedBy: cmdOpts.reviewedBy,
|
|
283
|
+
tested: cmdOpts.tested,
|
|
284
|
+
impact: cmdOpts.impact,
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
program
|
|
288
|
+
.command('changes')
|
|
289
|
+
.description('List change entries')
|
|
290
|
+
.option('-l, --limit <n>', 'Number of entries to show', '20')
|
|
291
|
+
.option('--file <file>', 'Filter by file')
|
|
292
|
+
.option('--since <duration>', 'Filter by time (e.g., 7d, 2w, 1m)')
|
|
293
|
+
.option('--json', 'Output as JSON')
|
|
294
|
+
.action(async (cmdOpts) => {
|
|
295
|
+
const opts = program.opts();
|
|
296
|
+
await (0, index_js_1.listChangesCommand)({
|
|
297
|
+
verbose: opts.verbose,
|
|
298
|
+
limit: parseInt(cmdOpts.limit || '20', 10),
|
|
299
|
+
file: cmdOpts.file,
|
|
300
|
+
since: cmdOpts.since,
|
|
301
|
+
json: cmdOpts.json,
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
// ============================================
|
|
305
|
+
// LEARN COMMANDS
|
|
306
|
+
// ============================================
|
|
307
|
+
program
|
|
308
|
+
.command('learn <problem> <solution>')
|
|
309
|
+
.description('Track a solution attempt')
|
|
310
|
+
.requiredOption('-s, --status <status>', 'SUCCESS or FAILED')
|
|
311
|
+
.option('-t, --tags <tags>', 'Comma-separated tags')
|
|
312
|
+
.option('-r, --reason <reason>', 'Why it succeeded/failed')
|
|
313
|
+
.option('-f, --force', 'Bypass secret detection (use with caution)')
|
|
314
|
+
.action(async (problem, solution, cmdOpts) => {
|
|
315
|
+
const opts = program.opts();
|
|
316
|
+
const status = cmdOpts.status.toUpperCase();
|
|
317
|
+
if (status !== 'SUCCESS' && status !== 'FAILED') {
|
|
318
|
+
console.error('\x1b[31m✗\x1b[0m Status must be SUCCESS or FAILED');
|
|
319
|
+
process.exit(1);
|
|
320
|
+
}
|
|
321
|
+
await (0, index_js_1.learnCommand)(problem, solution, {
|
|
322
|
+
verbose: opts.verbose,
|
|
323
|
+
status,
|
|
324
|
+
tags: cmdOpts.tags,
|
|
325
|
+
reason: cmdOpts.reason,
|
|
326
|
+
force: cmdOpts.force,
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
program
|
|
330
|
+
.command('learnings')
|
|
331
|
+
.description('List learnings')
|
|
332
|
+
.option('-l, --limit <n>', 'Number of entries to show', '20')
|
|
333
|
+
.option('-s, --status <status>', 'Filter by SUCCESS or FAILED')
|
|
334
|
+
.option('--tag <tag>', 'Filter by tag')
|
|
335
|
+
.option('--since <duration>', 'Filter by time (e.g., 7d, 2w, 1m)')
|
|
336
|
+
.option('--json', 'Output as JSON')
|
|
337
|
+
.action(async (cmdOpts) => {
|
|
338
|
+
const opts = program.opts();
|
|
339
|
+
await (0, index_js_1.listLearningsCommand)({
|
|
340
|
+
verbose: opts.verbose,
|
|
341
|
+
limit: parseInt(cmdOpts.limit || '20', 10),
|
|
342
|
+
status: cmdOpts.status?.toUpperCase(),
|
|
343
|
+
tag: cmdOpts.tag,
|
|
344
|
+
since: cmdOpts.since,
|
|
345
|
+
json: cmdOpts.json,
|
|
346
|
+
});
|
|
347
|
+
});
|
|
348
|
+
// ============================================
|
|
349
|
+
// WATCH COMMAND
|
|
350
|
+
// ============================================
|
|
351
|
+
program
|
|
352
|
+
.command('watch')
|
|
353
|
+
.description('Start file watcher for real-time protection and auto-logging')
|
|
354
|
+
.option('-i, --ignore <patterns...>', 'Additional patterns to ignore')
|
|
355
|
+
.option('--no-auto-log', 'Disable auto-logging to memory.log (default: enabled)')
|
|
356
|
+
.action(async (cmdOpts) => {
|
|
357
|
+
const opts = program.opts();
|
|
358
|
+
await (0, index_js_1.watchCommand)({
|
|
359
|
+
verbose: opts.verbose,
|
|
360
|
+
ignore: cmdOpts.ignore,
|
|
361
|
+
autoLog: cmdOpts.autoLog !== false // Default to true
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
// ============================================
|
|
365
|
+
// DETECT COMMAND
|
|
366
|
+
// ============================================
|
|
367
|
+
program
|
|
368
|
+
.command('detect')
|
|
369
|
+
.description('Auto-detect AI tools configured in the project')
|
|
370
|
+
.action(async () => {
|
|
371
|
+
const opts = program.opts();
|
|
372
|
+
const { detectCommand } = await import('./commands/detect.js');
|
|
373
|
+
await detectCommand({ verbose: opts.verbose });
|
|
374
|
+
});
|
|
375
|
+
// ============================================
|
|
376
|
+
// WATCH-PREFERENCES COMMAND
|
|
377
|
+
// ============================================
|
|
378
|
+
program
|
|
379
|
+
.command('watch-preferences')
|
|
380
|
+
.description('Watch for preference/rule changes and auto-reload AI tool configs')
|
|
381
|
+
.action(async () => {
|
|
382
|
+
const opts = program.opts();
|
|
383
|
+
const { watchPreferencesCommand } = await import('./commands/watch-preferences.js');
|
|
384
|
+
await watchPreferencesCommand({ verbose: opts.verbose });
|
|
385
|
+
});
|
|
386
|
+
// ============================================
|
|
387
|
+
// STATUS COMMAND
|
|
388
|
+
// ============================================
|
|
389
|
+
program
|
|
390
|
+
.command('status')
|
|
391
|
+
.description('Show MemoryLink status')
|
|
392
|
+
.action(async () => {
|
|
393
|
+
const opts = program.opts();
|
|
394
|
+
await (0, index_js_1.statusCommand)({ verbose: opts.verbose });
|
|
395
|
+
});
|
|
396
|
+
// ============================================
|
|
397
|
+
// DOCTOR COMMAND (includes secret scanning - All 7 AIs require)
|
|
398
|
+
// ============================================
|
|
399
|
+
program
|
|
400
|
+
.command('doctor')
|
|
401
|
+
.description('Run health checks, diagnostics, and security scanning (v1.4: add --preflight or --postflight for Buddy-Check)')
|
|
402
|
+
.option('--scan-secrets', 'Scan for potential secrets in logs (default: true)')
|
|
403
|
+
.option('--auto-fix', 'Show auto-fix suggestions for issues')
|
|
404
|
+
.option('--preflight', 'v1.4: Run preflight check before AI operations')
|
|
405
|
+
.option('--postflight', 'v1.4: Run postflight check after AI operations')
|
|
406
|
+
.option('--changed', 'v1.4: Only check changed files (for postflight)')
|
|
407
|
+
.option('--fix', 'v1.4: Auto-fix memory records (for postflight)')
|
|
408
|
+
.option('--json', 'v1.4: Output as JSON')
|
|
409
|
+
.option('--for <agent>', 'v1.4: Agent/user ID for preflight')
|
|
410
|
+
.option('--pr <number>', 'v1.4: PR number for preflight')
|
|
411
|
+
.option('--branch <branch>', 'v1.4: Branch name for preflight')
|
|
412
|
+
.action(async (cmdOpts) => {
|
|
413
|
+
const opts = program.opts();
|
|
414
|
+
await (0, index_js_1.doctorCommand)({
|
|
415
|
+
verbose: opts.verbose,
|
|
416
|
+
scanSecrets: cmdOpts.scanSecrets !== false,
|
|
417
|
+
autoFix: cmdOpts.autoFix || false,
|
|
418
|
+
preflight: cmdOpts.preflight || false,
|
|
419
|
+
postflight: cmdOpts.postflight || false,
|
|
420
|
+
changed: cmdOpts.changed || false,
|
|
421
|
+
fix: cmdOpts.fix || false,
|
|
422
|
+
json: cmdOpts.json || false,
|
|
423
|
+
for: cmdOpts.for,
|
|
424
|
+
pr: cmdOpts.pr,
|
|
425
|
+
branch: cmdOpts.branch,
|
|
426
|
+
});
|
|
427
|
+
});
|
|
428
|
+
// ============================================
|
|
429
|
+
// CONFIGURE COMMAND
|
|
430
|
+
// ============================================
|
|
431
|
+
program
|
|
432
|
+
.command('configure')
|
|
433
|
+
.description('Interactive setup wizard')
|
|
434
|
+
.option('-q, --quick', 'Quick config with defaults')
|
|
435
|
+
.option('--ai-tools <tools>', 'AI tools (comma-separated)')
|
|
436
|
+
.option('--project-type <type>', 'Project type (node, react, python, general)')
|
|
437
|
+
.action(async (cmdOpts) => {
|
|
438
|
+
const opts = program.opts();
|
|
439
|
+
if (cmdOpts.quick) {
|
|
440
|
+
await (0, index_js_1.quickConfigureCommand)({
|
|
441
|
+
verbose: opts.verbose,
|
|
442
|
+
aiTools: cmdOpts.aiTools,
|
|
443
|
+
projectType: cmdOpts.projectType,
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
await (0, index_js_1.configureCommand)({ verbose: opts.verbose });
|
|
448
|
+
}
|
|
449
|
+
});
|
|
450
|
+
// ============================================
|
|
451
|
+
// GET-CONTEXT COMMAND
|
|
452
|
+
// ============================================
|
|
453
|
+
program
|
|
454
|
+
.command('get-context [tagOrFile]')
|
|
455
|
+
.description('Get filtered context for AI (v1.5 Phase 1: --smart, Phase 2: --scope)')
|
|
456
|
+
.option('-l, --limit <n>', 'Limit entries per section', '50')
|
|
457
|
+
.option('--since <date>', 'Filter by date (ISO format or relative: 7d, 2w, 1m)')
|
|
458
|
+
.option('--tag <tag>', 'Filter by tag')
|
|
459
|
+
.option('--smart', 'v1.5 Phase 1: Smart filtering with ranking (trust, recency, relevance)')
|
|
460
|
+
.option('--task <description>', 'v1.5 Phase 1: Task description for smart filtering')
|
|
461
|
+
.option('--scope <scope>', 'v1.5 Phase 2: Filter by project scope (e.g., "frontend", "backend")')
|
|
462
|
+
.action(async (tagOrFile, cmdOpts) => {
|
|
463
|
+
const opts = program.opts();
|
|
464
|
+
await (0, index_js_1.getContextCommand)(tagOrFile, {
|
|
465
|
+
verbose: opts.verbose,
|
|
466
|
+
limit: parseInt(cmdOpts.limit || '50', 10),
|
|
467
|
+
since: cmdOpts.since,
|
|
468
|
+
tag: cmdOpts.tag,
|
|
469
|
+
smart: cmdOpts.smart,
|
|
470
|
+
task: cmdOpts.task,
|
|
471
|
+
scope: cmdOpts.scope,
|
|
472
|
+
});
|
|
473
|
+
});
|
|
474
|
+
// ============================================
|
|
475
|
+
// INJECT COMMAND (1-click clipboard copy)
|
|
476
|
+
// ============================================
|
|
477
|
+
program
|
|
478
|
+
.command('inject')
|
|
479
|
+
.description('Copy context to clipboard for easy pasting (with OS notifications)')
|
|
480
|
+
.option('-l, --limit <n>', 'Limit entries', '20')
|
|
481
|
+
.option('--since <date>', 'Filter by date (7d, 2w, etc.)')
|
|
482
|
+
.option('--tag <tag>', 'Filter by tag')
|
|
483
|
+
.option('--type <type>', 'Filter by memory type')
|
|
484
|
+
.option('-r, --raw', 'Raw format without markdown')
|
|
485
|
+
.option('-q, --quick', 'Quick inject (minimal context)')
|
|
486
|
+
.option('--no-notify', 'Disable OS notifications')
|
|
487
|
+
.option('--auto', 'Auto mode: copy and exit silently')
|
|
488
|
+
.action(async (cmdOpts) => {
|
|
489
|
+
const opts = program.opts();
|
|
490
|
+
if (cmdOpts.quick) {
|
|
491
|
+
await (0, index_js_1.quickInjectCommand)({ verbose: opts.verbose, notify: cmdOpts.notify !== false });
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
await (0, index_js_1.injectCommand)({
|
|
495
|
+
verbose: opts.verbose,
|
|
496
|
+
limit: parseInt(cmdOpts.limit || '20', 10),
|
|
497
|
+
since: cmdOpts.since,
|
|
498
|
+
tag: cmdOpts.tag,
|
|
499
|
+
type: cmdOpts.type,
|
|
500
|
+
raw: cmdOpts.raw,
|
|
501
|
+
notify: cmdOpts.notify !== false,
|
|
502
|
+
auto: cmdOpts.auto,
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
// ============================================
|
|
507
|
+
// SETUP COMMANDS (AI-specific)
|
|
508
|
+
// ============================================
|
|
509
|
+
const setup = program
|
|
510
|
+
.command('setup')
|
|
511
|
+
.description('Setup MemoryLink for specific AI tools');
|
|
512
|
+
setup
|
|
513
|
+
.command('cursor')
|
|
514
|
+
.description('Create .cursorrules for Cursor AI')
|
|
515
|
+
.action(async () => {
|
|
516
|
+
const opts = program.opts();
|
|
517
|
+
await (0, index_js_1.setupCursorCommand)({ verbose: opts.verbose });
|
|
518
|
+
});
|
|
519
|
+
setup
|
|
520
|
+
.command('claude')
|
|
521
|
+
.description('Create CLAUDE_INSTRUCTIONS.md')
|
|
522
|
+
.action(async () => {
|
|
523
|
+
const opts = program.opts();
|
|
524
|
+
await (0, index_js_1.setupClaudeCommand)({ verbose: opts.verbose });
|
|
525
|
+
});
|
|
526
|
+
setup
|
|
527
|
+
.command('chatgpt')
|
|
528
|
+
.description('Create CHATGPT_INSTRUCTIONS.md')
|
|
529
|
+
.action(async () => {
|
|
530
|
+
const opts = program.opts();
|
|
531
|
+
await (0, index_js_1.setupChatGPTCommand)({ verbose: opts.verbose });
|
|
532
|
+
});
|
|
533
|
+
setup
|
|
534
|
+
.command('copilot')
|
|
535
|
+
.description('Create .github/copilot-instructions.md')
|
|
536
|
+
.action(async () => {
|
|
537
|
+
const opts = program.opts();
|
|
538
|
+
await (0, index_js_1.setupCopilotCommand)({ verbose: opts.verbose });
|
|
539
|
+
});
|
|
540
|
+
setup
|
|
541
|
+
.command('all')
|
|
542
|
+
.description('Setup for all AI tools')
|
|
543
|
+
.action(async () => {
|
|
544
|
+
const opts = program.opts();
|
|
545
|
+
await (0, index_js_1.setupAllCommand)({ verbose: opts.verbose });
|
|
546
|
+
});
|
|
547
|
+
// ============================================
|
|
548
|
+
// MCP SERVER COMMAND
|
|
549
|
+
// ============================================
|
|
550
|
+
program
|
|
551
|
+
.command('server')
|
|
552
|
+
.description('Start MCP server for Claude Desktop and Cursor integration')
|
|
553
|
+
.option('--stdio', 'Use stdio transport (default for Claude Desktop)', true)
|
|
554
|
+
.action(async () => {
|
|
555
|
+
await (0, mcp_server_js_1.startMCPServer)();
|
|
556
|
+
});
|
|
557
|
+
// ============================================
|
|
558
|
+
// MIGRATE COMMAND (v1.0 - Convert legacy text format to JSONL)
|
|
559
|
+
// ============================================
|
|
560
|
+
program
|
|
561
|
+
.command('migrate')
|
|
562
|
+
.description('Migrate logs to newer format (v1.0 or v1.4)')
|
|
563
|
+
.option('--to <version>', 'Target version: 1.0 or 1.4 (default: 1.0)', '1.0')
|
|
564
|
+
.option('--no-backup', 'Skip creating backup files')
|
|
565
|
+
.option('--dry-run', 'Preview migration without making changes')
|
|
566
|
+
.action(async (cmdOpts) => {
|
|
567
|
+
const opts = program.opts();
|
|
568
|
+
await (0, index_js_1.migrateCommand)({
|
|
569
|
+
verbose: opts.verbose,
|
|
570
|
+
to: cmdOpts.to || '1.0',
|
|
571
|
+
backup: cmdOpts.backup !== false,
|
|
572
|
+
dryRun: cmdOpts.dryRun,
|
|
573
|
+
});
|
|
574
|
+
});
|
|
575
|
+
// ============================================
|
|
576
|
+
// INDEX COMMAND (v1.1 - Build vector index for semantic search)
|
|
577
|
+
// ============================================
|
|
578
|
+
program
|
|
579
|
+
.command('index')
|
|
580
|
+
.description('Build vector index for semantic search')
|
|
581
|
+
.option('--vector', 'Build vector index using embeddings')
|
|
582
|
+
.option('--local', 'Use local embeddings (offline, requires @xenova/transformers)')
|
|
583
|
+
.option('--rebuild', 'Rebuild existing index')
|
|
584
|
+
.action(async (cmdOpts) => {
|
|
585
|
+
const opts = program.opts();
|
|
586
|
+
const { indexCommand } = await import('./commands/index-vector.js');
|
|
587
|
+
await indexCommand({
|
|
588
|
+
verbose: opts.verbose,
|
|
589
|
+
vector: cmdOpts.vector,
|
|
590
|
+
local: cmdOpts.local,
|
|
591
|
+
rebuild: cmdOpts.rebuild,
|
|
592
|
+
});
|
|
593
|
+
});
|
|
594
|
+
// ============================================
|
|
595
|
+
// SUGGEST-TAGS COMMAND (v1.1 - Tag Intelligence)
|
|
596
|
+
// ============================================
|
|
597
|
+
program
|
|
598
|
+
.command('suggest-tags <content>')
|
|
599
|
+
.description('Intelligently suggest tags based on content and existing tags')
|
|
600
|
+
.action(async (content) => {
|
|
601
|
+
const opts = program.opts();
|
|
602
|
+
const { suggestTagsCommand } = await import('./commands/suggest-tags.js');
|
|
603
|
+
await suggestTagsCommand(content, { verbose: opts.verbose });
|
|
604
|
+
});
|
|
605
|
+
// ============================================
|
|
606
|
+
// RESOLVE COMMAND (v1.1 - Conflict Resolution Helper)
|
|
607
|
+
// ============================================
|
|
608
|
+
program
|
|
609
|
+
.command('resolve')
|
|
610
|
+
.description('Detect and resolve Git merge conflicts in JSONL files')
|
|
611
|
+
.option('--file <file>', 'Resolve conflicts in specific file')
|
|
612
|
+
.option('--strategy <strategy>', 'Resolution strategy: ours, theirs, both, merge (default: merge)', 'merge')
|
|
613
|
+
.option('--interactive', 'Interactive conflict resolution (not implemented yet)')
|
|
614
|
+
.option('--list', 'List conflicts without resolving')
|
|
615
|
+
.action(async (cmdOpts) => {
|
|
616
|
+
const opts = program.opts();
|
|
617
|
+
const { resolveCommand } = await import('./commands/resolve.js');
|
|
618
|
+
await resolveCommand({
|
|
619
|
+
verbose: opts.verbose,
|
|
620
|
+
file: cmdOpts.file,
|
|
621
|
+
strategy: cmdOpts.strategy,
|
|
622
|
+
interactive: cmdOpts.interactive,
|
|
623
|
+
list: cmdOpts.list,
|
|
624
|
+
});
|
|
625
|
+
});
|
|
626
|
+
// ============================================
|
|
627
|
+
// SEARCH COMMAND (v1.0 - Unified search across all logs)
|
|
628
|
+
// ============================================
|
|
629
|
+
program
|
|
630
|
+
.command('search <keyword>')
|
|
631
|
+
.description('Search across all logs by keyword (use --semantic for TF-IDF or --vector for embeddings)')
|
|
632
|
+
.option('--tag <tag>', 'Filter by tag')
|
|
633
|
+
.option('--since <duration>', 'Filter by time (e.g., 7d, 2w, 1m)')
|
|
634
|
+
.option('-l, --limit <n>', 'Maximum results to show', '50')
|
|
635
|
+
.option('-t, --type <type>', 'Log type: memory, learning, change, or all', 'all')
|
|
636
|
+
.option('--semantic', 'Use semantic search (TF-IDF + similarity) instead of keyword matching')
|
|
637
|
+
.option('--vector', 'Use vector search (embeddings) - requires index (memorylink index --vector)')
|
|
638
|
+
.option('--threshold <number>', 'Semantic similarity threshold (0-1, default 0.1 for semantic, 0.5 for vector)', parseFloat)
|
|
639
|
+
.option('--json', 'Output as JSON')
|
|
640
|
+
.action(async (keyword, cmdOpts) => {
|
|
641
|
+
const opts = program.opts();
|
|
642
|
+
await (0, index_js_1.searchCommand)(keyword, {
|
|
643
|
+
verbose: opts.verbose,
|
|
644
|
+
tag: cmdOpts.tag,
|
|
645
|
+
since: cmdOpts.since,
|
|
646
|
+
limit: parseInt(cmdOpts.limit || '50', 10),
|
|
647
|
+
type: cmdOpts.type,
|
|
648
|
+
semantic: cmdOpts.semantic,
|
|
649
|
+
vector: cmdOpts.vector,
|
|
650
|
+
threshold: cmdOpts.threshold,
|
|
651
|
+
json: cmdOpts.json,
|
|
652
|
+
});
|
|
653
|
+
});
|
|
654
|
+
// ============================================
|
|
655
|
+
// SYNC COMMAND (Git sync for team collaboration)
|
|
656
|
+
// ============================================
|
|
657
|
+
program
|
|
658
|
+
.command('sync')
|
|
659
|
+
.description('Auto-stage, commit, and push .memorylink/ files to Git')
|
|
660
|
+
.option('--no-push', 'Commit without pushing to remote')
|
|
661
|
+
.option('--check', 'Check sync status (conflicts, behind/ahead)')
|
|
662
|
+
.option('-m, --message <message>', 'Custom commit message')
|
|
663
|
+
.option('--force', 'Force push (use with caution)')
|
|
664
|
+
.option('--batch', 'Enable batch commits (group multiple changes into one commit)')
|
|
665
|
+
.option('--batch-size <n>', 'Commit after N changes (default: 10)', parseInt)
|
|
666
|
+
.option('--batch-timeout <seconds>', 'Commit after N seconds (default: 300 = 5min)', parseInt)
|
|
667
|
+
.option('--force-commit', 'Force commit immediately (clear batch state)')
|
|
668
|
+
.action(async (cmdOpts) => {
|
|
669
|
+
const opts = program.opts();
|
|
670
|
+
await (0, index_js_1.syncCommand)({
|
|
671
|
+
verbose: opts.verbose,
|
|
672
|
+
noPush: cmdOpts.noPush,
|
|
673
|
+
check: cmdOpts.check,
|
|
674
|
+
message: cmdOpts.message,
|
|
675
|
+
force: cmdOpts.force,
|
|
676
|
+
batch: cmdOpts.batch,
|
|
677
|
+
batchSize: cmdOpts.batchSize,
|
|
678
|
+
batchTimeout: cmdOpts.batchTimeout,
|
|
679
|
+
forceCommit: cmdOpts.forceCommit,
|
|
680
|
+
});
|
|
681
|
+
});
|
|
682
|
+
// ============================================
|
|
683
|
+
// CLEAR COMMAND
|
|
684
|
+
// ============================================
|
|
685
|
+
program
|
|
686
|
+
.command('clear <log>')
|
|
687
|
+
.description('Clear a specific log (memory, changes, learnings)')
|
|
688
|
+
.action(async (log) => {
|
|
689
|
+
const opts = program.opts();
|
|
690
|
+
switch (log.toLowerCase()) {
|
|
691
|
+
case 'memory':
|
|
692
|
+
await (0, index_js_1.clearMemoryCommand)({ verbose: opts.verbose });
|
|
693
|
+
break;
|
|
694
|
+
case 'changes':
|
|
695
|
+
await (0, index_js_1.clearChangesCommand)({ verbose: opts.verbose });
|
|
696
|
+
break;
|
|
697
|
+
case 'learnings':
|
|
698
|
+
await (0, index_js_1.clearLearningsCommand)({ verbose: opts.verbose });
|
|
699
|
+
break;
|
|
700
|
+
default:
|
|
701
|
+
console.error('\x1b[31m✗\x1b[0m Unknown log type. Use: memory, changes, or learnings');
|
|
702
|
+
process.exit(1);
|
|
703
|
+
}
|
|
704
|
+
});
|
|
705
|
+
// ============================================
|
|
706
|
+
// HOOKS COMMANDS
|
|
707
|
+
// ============================================
|
|
708
|
+
const hooks = program
|
|
709
|
+
.command('hooks')
|
|
710
|
+
.description('Manage Git hooks');
|
|
711
|
+
hooks
|
|
712
|
+
.command('install')
|
|
713
|
+
.description('Install Git pre-commit hook for protection')
|
|
714
|
+
.action(async () => {
|
|
715
|
+
const opts = program.opts();
|
|
716
|
+
await (0, index_js_1.hooksInstallCommand)({ verbose: opts.verbose });
|
|
717
|
+
});
|
|
718
|
+
hooks
|
|
719
|
+
.command('uninstall')
|
|
720
|
+
.description('Remove Git pre-commit hook')
|
|
721
|
+
.action(async () => {
|
|
722
|
+
const opts = program.opts();
|
|
723
|
+
await (0, index_js_1.hooksUninstallCommand)({ verbose: opts.verbose });
|
|
724
|
+
});
|
|
725
|
+
hooks
|
|
726
|
+
.command('status')
|
|
727
|
+
.description('Show Git hooks status')
|
|
728
|
+
.action(async () => {
|
|
729
|
+
const opts = program.opts();
|
|
730
|
+
await (0, index_js_1.hooksStatusCommand)({ verbose: opts.verbose });
|
|
731
|
+
});
|
|
732
|
+
// ============================================
|
|
733
|
+
// AUTO-LOG COMMANDS (Auto-logging via Git hooks)
|
|
734
|
+
// ============================================
|
|
735
|
+
const autoLog = program
|
|
736
|
+
.command('auto-log')
|
|
737
|
+
.description('Auto-logging: Automatically log changes via Git hooks');
|
|
738
|
+
autoLog
|
|
739
|
+
.command('install')
|
|
740
|
+
.description('Install Git post-commit hook for auto-logging')
|
|
741
|
+
.action(async () => {
|
|
742
|
+
const opts = program.opts();
|
|
743
|
+
await (0, index_js_1.autoLogInstallCommand)({ verbose: opts.verbose });
|
|
744
|
+
});
|
|
745
|
+
autoLog
|
|
746
|
+
.command('uninstall')
|
|
747
|
+
.description('Remove Git post-commit hook for auto-logging')
|
|
748
|
+
.action(async () => {
|
|
749
|
+
const opts = program.opts();
|
|
750
|
+
await (0, index_js_1.autoLogUninstallCommand)({ verbose: opts.verbose });
|
|
751
|
+
});
|
|
752
|
+
autoLog
|
|
753
|
+
.command('status')
|
|
754
|
+
.description('Show auto-logging hook status')
|
|
755
|
+
.action(async () => {
|
|
756
|
+
const opts = program.opts();
|
|
757
|
+
await (0, index_js_1.autoLogStatusCommand)({ verbose: opts.verbose });
|
|
758
|
+
});
|
|
759
|
+
autoLog
|
|
760
|
+
.command('commit <commit> <message> <files>')
|
|
761
|
+
.description('Process commit and log changes (called from hook)')
|
|
762
|
+
.action(async (commit, message, files) => {
|
|
763
|
+
const opts = program.opts();
|
|
764
|
+
await (0, index_js_1.autoLogCommitCommand)({
|
|
765
|
+
verbose: opts.verbose,
|
|
766
|
+
commit,
|
|
767
|
+
message,
|
|
768
|
+
files,
|
|
769
|
+
});
|
|
770
|
+
});
|
|
771
|
+
// ============================================
|
|
772
|
+
// ARCHIVE COMMAND
|
|
773
|
+
// ============================================
|
|
774
|
+
program
|
|
775
|
+
.command('archive')
|
|
776
|
+
.description('Archive or expire old entries based on TTL or date filters')
|
|
777
|
+
.option('--before <date>', 'Archive entries before this date (ISO or relative like "30d", "6m")')
|
|
778
|
+
.option('--ttl <duration>', 'Time-to-live (e.g., "90d", "1y")')
|
|
779
|
+
.option('--dry-run', 'Show what would be archived without actually archiving')
|
|
780
|
+
.option('--status <status>', 'Status to set archived entries to (DEPRECATED or DELETED)', 'DEPRECATED')
|
|
781
|
+
.action(async (options) => {
|
|
782
|
+
const opts = program.opts();
|
|
783
|
+
const { archiveCommand } = await import('./commands/archive.js');
|
|
784
|
+
await archiveCommand({
|
|
785
|
+
verbose: opts.verbose,
|
|
786
|
+
before: options.before,
|
|
787
|
+
ttl: options.ttl,
|
|
788
|
+
dryRun: options.dryRun,
|
|
789
|
+
status: options.status,
|
|
790
|
+
});
|
|
791
|
+
});
|
|
792
|
+
// ============================================
|
|
793
|
+
// CONSOLIDATE COMMAND
|
|
794
|
+
// ============================================
|
|
795
|
+
program
|
|
796
|
+
.command('consolidate')
|
|
797
|
+
.description('Merge duplicate or similar memory entries')
|
|
798
|
+
.option('--threshold <number>', 'Similarity threshold (0-1, default 0.8)', parseFloat)
|
|
799
|
+
.option('--dry-run', 'Show what would be consolidated without actually doing it')
|
|
800
|
+
.option('--auto-merge', 'Automatically merge without confirmation')
|
|
801
|
+
.action(async (options) => {
|
|
802
|
+
const opts = program.opts();
|
|
803
|
+
const { consolidateCommand } = await import('./commands/consolidate.js');
|
|
804
|
+
await consolidateCommand({
|
|
805
|
+
verbose: opts.verbose,
|
|
806
|
+
threshold: options.threshold,
|
|
807
|
+
dryRun: options.dryRun,
|
|
808
|
+
autoMerge: options.autoMerge,
|
|
809
|
+
});
|
|
810
|
+
});
|
|
811
|
+
// ============================================
|
|
812
|
+
// SYNC-RULES COMMAND (P0: Memory Usage Fix)
|
|
813
|
+
// ============================================
|
|
814
|
+
program
|
|
815
|
+
.command('sync-rules')
|
|
816
|
+
.description('Generate .memorylink/rules.md from memory.log (type=rule|preference, status=ACTIVE)')
|
|
817
|
+
.action(async () => {
|
|
818
|
+
const opts = program.opts();
|
|
819
|
+
await (0, index_js_1.syncRulesCommand)({ verbose: opts.verbose });
|
|
820
|
+
});
|
|
821
|
+
// ============================================
|
|
822
|
+
// AUTO-CONTEXT COMMAND (DeepSeek's Path C)
|
|
823
|
+
// ============================================
|
|
824
|
+
const autoContext = program
|
|
825
|
+
.command('auto-context')
|
|
826
|
+
.description('Enable/disable automatic context injection for AI tools');
|
|
827
|
+
autoContext
|
|
828
|
+
.command('enable')
|
|
829
|
+
.description('Enable auto-context mode (auto-sync rules on memory changes)')
|
|
830
|
+
.action(async () => {
|
|
831
|
+
const opts = program.opts();
|
|
832
|
+
const { autoContextEnableCommand } = await import('./commands/auto-context.js');
|
|
833
|
+
await autoContextEnableCommand({ verbose: opts.verbose });
|
|
834
|
+
});
|
|
835
|
+
autoContext
|
|
836
|
+
.command('disable')
|
|
837
|
+
.description('Disable auto-context mode')
|
|
838
|
+
.action(async () => {
|
|
839
|
+
const opts = program.opts();
|
|
840
|
+
const { autoContextDisableCommand } = await import('./commands/auto-context.js');
|
|
841
|
+
await autoContextDisableCommand({ verbose: opts.verbose });
|
|
842
|
+
});
|
|
843
|
+
autoContext
|
|
844
|
+
.command('status')
|
|
845
|
+
.description('Check auto-context mode status')
|
|
846
|
+
.action(async () => {
|
|
847
|
+
const opts = program.opts();
|
|
848
|
+
const { autoContextStatusCommand } = await import('./commands/auto-context.js');
|
|
849
|
+
await autoContextStatusCommand({ verbose: opts.verbose });
|
|
850
|
+
});
|
|
851
|
+
// ============================================
|
|
852
|
+
// GRAPH COMMAND (v1.2 - Code Structure Memory)
|
|
853
|
+
// ============================================
|
|
854
|
+
const graphCommand = program
|
|
855
|
+
.command('graph')
|
|
856
|
+
.description('Code structure memory commands');
|
|
857
|
+
graphCommand
|
|
858
|
+
.command('build')
|
|
859
|
+
.description('Build code dependency graph')
|
|
860
|
+
.option('--rebuild', 'Force rebuild even if graph exists')
|
|
861
|
+
.option('--silent', 'Suppress output')
|
|
862
|
+
.action(async (cmdOpts) => {
|
|
863
|
+
const opts = program.opts();
|
|
864
|
+
const { graphBuildCommand } = await import('./commands/graph.js');
|
|
865
|
+
await graphBuildCommand({
|
|
866
|
+
verbose: opts.verbose,
|
|
867
|
+
rebuild: cmdOpts.rebuild,
|
|
868
|
+
silent: cmdOpts.silent,
|
|
869
|
+
});
|
|
870
|
+
});
|
|
871
|
+
program
|
|
872
|
+
.command('graph-query <file>')
|
|
873
|
+
.description('Query file dependencies and structure')
|
|
874
|
+
.option('--visual', 'Show visual tree output')
|
|
875
|
+
.action(async (file, cmdOpts) => {
|
|
876
|
+
const opts = program.opts();
|
|
877
|
+
const { graphQueryCommand } = await import('./commands/graph.js');
|
|
878
|
+
await graphQueryCommand(file, { verbose: opts.verbose, visual: cmdOpts.visual });
|
|
879
|
+
});
|
|
880
|
+
// ============================================
|
|
881
|
+
// IMPACT COMMAND (v1.2 - Change Impact Analysis)
|
|
882
|
+
// ============================================
|
|
883
|
+
program
|
|
884
|
+
.command('impact <file>')
|
|
885
|
+
.description('Analyze change impact for a file')
|
|
886
|
+
.option('--change <description>', 'Description of proposed change')
|
|
887
|
+
.option('--rebuild', 'Rebuild graph before analysis')
|
|
888
|
+
.action(async (file, cmdOpts) => {
|
|
889
|
+
const opts = program.opts();
|
|
890
|
+
const { impactCommand } = await import('./commands/impact.js');
|
|
891
|
+
await impactCommand(file, {
|
|
892
|
+
verbose: opts.verbose,
|
|
893
|
+
change: cmdOpts.change,
|
|
894
|
+
rebuild: cmdOpts.rebuild,
|
|
895
|
+
});
|
|
896
|
+
});
|
|
897
|
+
// ============================================
|
|
898
|
+
// PATTERNS COMMAND (v1.3 - Team Pattern Detection)
|
|
899
|
+
// ============================================
|
|
900
|
+
const patternsCommand = program
|
|
901
|
+
.command('patterns')
|
|
902
|
+
.description('Team pattern detection commands');
|
|
903
|
+
patternsCommand
|
|
904
|
+
.command('detect')
|
|
905
|
+
.description('Detect team coding patterns from learnings')
|
|
906
|
+
.action(async () => {
|
|
907
|
+
const opts = program.opts();
|
|
908
|
+
const { patternsDetectCommand } = await import('./commands/patterns.js');
|
|
909
|
+
await patternsDetectCommand({ verbose: opts.verbose });
|
|
910
|
+
});
|
|
911
|
+
program
|
|
912
|
+
.command('patterns-suggest <context>')
|
|
913
|
+
.description('Suggest team patterns for a given context')
|
|
914
|
+
.action(async (context) => {
|
|
915
|
+
const opts = program.opts();
|
|
916
|
+
const { patternsSuggestCommand } = await import('./commands/patterns.js');
|
|
917
|
+
await patternsSuggestCommand(context, { verbose: opts.verbose });
|
|
918
|
+
});
|
|
919
|
+
// ============================================
|
|
920
|
+
// CHECKPOINT COMMANDS (v1.5)
|
|
921
|
+
// ============================================
|
|
922
|
+
program
|
|
923
|
+
.command('checkpoint')
|
|
924
|
+
.description('Create, list, compare, or restore memory checkpoints (v1.5)')
|
|
925
|
+
.argument('[action]', 'Action: create, list, diff, or restore (default: list)', 'list')
|
|
926
|
+
.argument('[checkpoint1]', 'First checkpoint for diff, or checkpoint name for restore')
|
|
927
|
+
.argument('[checkpoint2]', 'Second checkpoint for diff')
|
|
928
|
+
.option('--name <name>', 'Checkpoint name (for create)')
|
|
929
|
+
.option('--message <message>', 'Checkpoint message (for create)')
|
|
930
|
+
.action(async (action, checkpoint1, checkpoint2, cmdOpts) => {
|
|
931
|
+
const opts = program.opts();
|
|
932
|
+
const { error } = await import('./utils.js');
|
|
933
|
+
if (action === 'create') {
|
|
934
|
+
await (0, checkpoint_js_1.checkpointCreateCommand)({
|
|
935
|
+
verbose: opts.verbose,
|
|
936
|
+
name: cmdOpts?.name,
|
|
937
|
+
message: cmdOpts?.message,
|
|
938
|
+
});
|
|
939
|
+
}
|
|
940
|
+
else if (action === 'list') {
|
|
941
|
+
await (0, checkpoint_js_1.checkpointListCommand)({ verbose: opts.verbose });
|
|
942
|
+
}
|
|
943
|
+
else if (action === 'diff') {
|
|
944
|
+
if (!checkpoint1 || !checkpoint2) {
|
|
945
|
+
error('Both checkpoint names required for diff');
|
|
946
|
+
process.exit(1);
|
|
947
|
+
}
|
|
948
|
+
await (0, checkpoint_js_1.checkpointDiffCommand)(checkpoint1, checkpoint2, { verbose: opts.verbose });
|
|
949
|
+
}
|
|
950
|
+
else if (action === 'restore') {
|
|
951
|
+
if (!checkpoint1) {
|
|
952
|
+
error('Checkpoint name required for restore');
|
|
953
|
+
process.exit(1);
|
|
954
|
+
}
|
|
955
|
+
await (0, checkpoint_js_1.checkpointRestoreCommand)(checkpoint1, { verbose: opts.verbose });
|
|
956
|
+
}
|
|
957
|
+
else {
|
|
958
|
+
error(`Unknown action: ${action}. Use: create, list, diff, or restore`);
|
|
959
|
+
process.exit(1);
|
|
960
|
+
}
|
|
961
|
+
});
|
|
962
|
+
// ============================================
|
|
963
|
+
// LOCK COMMANDS (v1.5)
|
|
964
|
+
// ============================================
|
|
965
|
+
program
|
|
966
|
+
.command('lock')
|
|
967
|
+
.description('Agent locking commands (v1.5)')
|
|
968
|
+
.argument('[action]', 'Action: acquire, release, renew, or status (default: status)', 'status')
|
|
969
|
+
.option('--agent <id>', 'Agent ID (for acquire)')
|
|
970
|
+
.option('--files <files>', 'Comma-separated list of files (for acquire)')
|
|
971
|
+
.option('--timeout <minutes>', 'Lock timeout in minutes (default: 30)', '30')
|
|
972
|
+
.action(async (action, cmdOpts) => {
|
|
973
|
+
const opts = program.opts();
|
|
974
|
+
const { error } = await import('./utils.js');
|
|
975
|
+
const timeout = cmdOpts?.timeout ? parseInt(cmdOpts.timeout, 10) : undefined;
|
|
976
|
+
if (action === 'acquire') {
|
|
977
|
+
await (0, lock_js_1.lockAcquireCommand)({
|
|
978
|
+
verbose: opts.verbose,
|
|
979
|
+
agent: cmdOpts?.agent,
|
|
980
|
+
files: cmdOpts?.files,
|
|
981
|
+
timeout,
|
|
982
|
+
});
|
|
983
|
+
}
|
|
984
|
+
else if (action === 'release') {
|
|
985
|
+
await (0, lock_js_1.lockReleaseCommand)({ verbose: opts.verbose });
|
|
986
|
+
}
|
|
987
|
+
else if (action === 'renew') {
|
|
988
|
+
await (0, lock_js_1.lockRenewCommand)({
|
|
989
|
+
verbose: opts.verbose,
|
|
990
|
+
timeout,
|
|
991
|
+
});
|
|
992
|
+
}
|
|
993
|
+
else if (action === 'status') {
|
|
994
|
+
await (0, lock_js_1.lockStatusCommand)({ verbose: opts.verbose });
|
|
995
|
+
}
|
|
996
|
+
else {
|
|
997
|
+
error(`Unknown action: ${action}. Use: acquire, release, renew, or status`);
|
|
998
|
+
process.exit(1);
|
|
999
|
+
}
|
|
1000
|
+
});
|
|
1001
|
+
// ============================================
|
|
1002
|
+
// SCOPES COMMAND (v1.5 Phase 2 Enhancement)
|
|
1003
|
+
// ============================================
|
|
1004
|
+
program
|
|
1005
|
+
.command('scopes')
|
|
1006
|
+
.description('List and manage project scopes (v1.5 Phase 2)')
|
|
1007
|
+
.argument('[action]', 'Action: list (default: list)', 'list')
|
|
1008
|
+
.action(async (action) => {
|
|
1009
|
+
const opts = program.opts();
|
|
1010
|
+
if (action === 'list') {
|
|
1011
|
+
await (0, scopes_js_1.scopesListCommand)({ verbose: opts.verbose });
|
|
1012
|
+
}
|
|
1013
|
+
else {
|
|
1014
|
+
const { error } = await import('./utils.js');
|
|
1015
|
+
error(`Unknown action: ${action}. Use: list`);
|
|
1016
|
+
process.exit(1);
|
|
1017
|
+
}
|
|
1018
|
+
});
|
|
1019
|
+
// ============================================
|
|
1020
|
+
// STATS COMMAND (v1.5 Phase 2)
|
|
1021
|
+
// ============================================
|
|
1022
|
+
program
|
|
1023
|
+
.command('stats')
|
|
1024
|
+
.description('Enhanced observability: statistics and analytics (v1.5 Phase 2)')
|
|
1025
|
+
.option('--since <duration>', 'Filter by time: 7d, 2w, 1m')
|
|
1026
|
+
.option('--format <format>', 'Output format: default, json, csv, markdown', 'default')
|
|
1027
|
+
.option('--no-recommendations', 'Skip recommendations in output (v1.5.1)')
|
|
1028
|
+
.action(async (cmdOpts) => {
|
|
1029
|
+
const opts = program.opts();
|
|
1030
|
+
await (0, stats_js_1.statsCommand)({
|
|
1031
|
+
verbose: opts.verbose,
|
|
1032
|
+
since: cmdOpts?.since,
|
|
1033
|
+
format: cmdOpts?.format,
|
|
1034
|
+
noRecommendations: cmdOpts?.noRecommendations || false,
|
|
1035
|
+
});
|
|
1036
|
+
});
|
|
1037
|
+
// ============================================
|
|
1038
|
+
// TELEMETRY TEST COMMAND (v1.6 - Internal/Debug Only)
|
|
1039
|
+
// ============================================
|
|
1040
|
+
program
|
|
1041
|
+
.command('telemetry-test')
|
|
1042
|
+
.description('INTERNAL: Trigger a test telemetry event (v1.6+)')
|
|
1043
|
+
.option('--outcome <outcome>', 'Outcome: success or error', 'success')
|
|
1044
|
+
.option('--error-kind <kind>', 'Error kind if outcome is error', 'TEST_ERROR')
|
|
1045
|
+
.action(async (cmdOpts) => {
|
|
1046
|
+
const opts = program.opts();
|
|
1047
|
+
await (0, telemetry_test_js_1.telemetryTestCommand)({ verbose: opts.verbose });
|
|
1048
|
+
});
|
|
1049
|
+
// Hide the telemetry-test command from the main help output
|
|
1050
|
+
// This is a workaround as Commander.js doesn't have a direct 'hidden' option for commands
|
|
1051
|
+
const telemetryTestCommandObj = program.commands.find(cmd => cmd.name() === 'telemetry-test');
|
|
1052
|
+
if (telemetryTestCommandObj) {
|
|
1053
|
+
telemetryTestCommandObj.helpOption(false); // Hide help option for this command
|
|
1054
|
+
// Further hiding might involve custom help output or not adding it to program.commands directly
|
|
1055
|
+
// For now, this makes it less discoverable.
|
|
1056
|
+
}
|
|
1057
|
+
// ============================================
|
|
1058
|
+
// HELP COMMAND (enhanced)
|
|
1059
|
+
// ============================================
|
|
1060
|
+
program
|
|
1061
|
+
.command('help')
|
|
1062
|
+
.description('Show help with examples')
|
|
1063
|
+
.action(() => {
|
|
1064
|
+
console.log(LOGO);
|
|
1065
|
+
console.log('\x1b[1mQuick Start:\x1b[0m');
|
|
1066
|
+
console.log(' memorylink init # Initialize in project');
|
|
1067
|
+
console.log(' memorylink protect src/config.ts # Protect a file');
|
|
1068
|
+
console.log(' memorylink memory "Uses React 18" # Add context');
|
|
1069
|
+
console.log(' memorylink watch # Start watcher');
|
|
1070
|
+
console.log('');
|
|
1071
|
+
console.log('\x1b[1mCore Commands:\x1b[0m');
|
|
1072
|
+
console.log(' init Initialize .memorylink/ directory');
|
|
1073
|
+
console.log(' protect <file> Add file to protected list');
|
|
1074
|
+
console.log(' unprotect <file> Remove file from protected list');
|
|
1075
|
+
console.log(' protected List protected files');
|
|
1076
|
+
console.log(' memory <message> Add to shared memory');
|
|
1077
|
+
console.log(' memories List memory entries');
|
|
1078
|
+
console.log(' change <file> <why> Log a file change');
|
|
1079
|
+
console.log(' changes List change audit trail');
|
|
1080
|
+
console.log(' learn <prob> <sol> Track solution (--status SUCCESS|FAILED)');
|
|
1081
|
+
console.log(' learnings List learnings');
|
|
1082
|
+
console.log(' watch Start real-time watcher');
|
|
1083
|
+
console.log(' status Show current state');
|
|
1084
|
+
console.log(' doctor Health check');
|
|
1085
|
+
console.log(' get-context [tag] Get filtered context for AI');
|
|
1086
|
+
console.log(' search <keyword> Search across all logs');
|
|
1087
|
+
console.log(' export [file] Export all data');
|
|
1088
|
+
console.log(' clear <log> Clear a log file');
|
|
1089
|
+
console.log(' hooks install Install Git protection hook');
|
|
1090
|
+
console.log(' migrate Convert legacy logs to JSONL (v1.0)');
|
|
1091
|
+
console.log('');
|
|
1092
|
+
console.log('\x1b[1mExamples:\x1b[0m');
|
|
1093
|
+
console.log(' memorylink memory "Auth uses JWT tokens" --tags auth,security');
|
|
1094
|
+
console.log(' memorylink learn "API timeout" "Increased to 30s" --status SUCCESS');
|
|
1095
|
+
console.log(' memorylink get-context auth');
|
|
1096
|
+
console.log(' memorylink change src/api.ts "Fixed auth bug" --agent cursor');
|
|
1097
|
+
console.log('');
|
|
1098
|
+
console.log('\x1b[1mFor AI Assistants:\x1b[0m');
|
|
1099
|
+
console.log(' Read .memorylink/protected.txt before editing any file');
|
|
1100
|
+
console.log(' Read .memorylink/memory.log for project context');
|
|
1101
|
+
console.log(' Check .memorylink/learnings.log for past solutions');
|
|
1102
|
+
console.log(' Log your changes to .memorylink/changes.log');
|
|
1103
|
+
console.log('');
|
|
1104
|
+
console.log('\x1b[36mDocs: https://github.com/memorylink/memorylink\x1b[0m');
|
|
1105
|
+
console.log('');
|
|
1106
|
+
});
|
|
1107
|
+
// Default action (no command)
|
|
1108
|
+
program.action(() => {
|
|
1109
|
+
console.log(LOGO);
|
|
1110
|
+
program.help();
|
|
1111
|
+
});
|
|
1112
|
+
// Parse and run
|
|
1113
|
+
program.parse(process.argv);
|
|
1114
|
+
//# sourceMappingURL=cli.js.map
|