basic-memory 0.12.2__py3-none-any.whl → 0.13.0__py3-none-any.whl
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.
Potentially problematic release.
This version of basic-memory might be problematic. Click here for more details.
- basic_memory/__init__.py +2 -1
- basic_memory/alembic/env.py +1 -1
- basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +108 -0
- basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +104 -0
- basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -6
- basic_memory/api/app.py +43 -13
- basic_memory/api/routers/__init__.py +4 -2
- basic_memory/api/routers/directory_router.py +63 -0
- basic_memory/api/routers/importer_router.py +152 -0
- basic_memory/api/routers/knowledge_router.py +139 -37
- basic_memory/api/routers/management_router.py +78 -0
- basic_memory/api/routers/memory_router.py +6 -62
- basic_memory/api/routers/project_router.py +234 -0
- basic_memory/api/routers/prompt_router.py +260 -0
- basic_memory/api/routers/search_router.py +3 -21
- basic_memory/api/routers/utils.py +130 -0
- basic_memory/api/template_loader.py +292 -0
- basic_memory/cli/app.py +20 -21
- basic_memory/cli/commands/__init__.py +2 -1
- basic_memory/cli/commands/auth.py +136 -0
- basic_memory/cli/commands/db.py +3 -3
- basic_memory/cli/commands/import_chatgpt.py +31 -207
- basic_memory/cli/commands/import_claude_conversations.py +16 -142
- basic_memory/cli/commands/import_claude_projects.py +33 -143
- basic_memory/cli/commands/import_memory_json.py +26 -83
- basic_memory/cli/commands/mcp.py +71 -18
- basic_memory/cli/commands/project.py +102 -70
- basic_memory/cli/commands/status.py +19 -9
- basic_memory/cli/commands/sync.py +44 -58
- basic_memory/cli/commands/tool.py +6 -6
- basic_memory/cli/main.py +1 -5
- basic_memory/config.py +143 -87
- basic_memory/db.py +6 -4
- basic_memory/deps.py +227 -30
- basic_memory/importers/__init__.py +27 -0
- basic_memory/importers/base.py +79 -0
- basic_memory/importers/chatgpt_importer.py +222 -0
- basic_memory/importers/claude_conversations_importer.py +172 -0
- basic_memory/importers/claude_projects_importer.py +148 -0
- basic_memory/importers/memory_json_importer.py +93 -0
- basic_memory/importers/utils.py +58 -0
- basic_memory/markdown/entity_parser.py +5 -2
- basic_memory/mcp/auth_provider.py +270 -0
- basic_memory/mcp/external_auth_provider.py +321 -0
- basic_memory/mcp/project_session.py +103 -0
- basic_memory/mcp/prompts/__init__.py +2 -0
- basic_memory/mcp/prompts/continue_conversation.py +18 -68
- basic_memory/mcp/prompts/recent_activity.py +20 -4
- basic_memory/mcp/prompts/search.py +14 -140
- basic_memory/mcp/prompts/sync_status.py +116 -0
- basic_memory/mcp/prompts/utils.py +3 -3
- basic_memory/mcp/{tools → resources}/project_info.py +6 -2
- basic_memory/mcp/server.py +86 -13
- basic_memory/mcp/supabase_auth_provider.py +463 -0
- basic_memory/mcp/tools/__init__.py +24 -0
- basic_memory/mcp/tools/build_context.py +43 -8
- basic_memory/mcp/tools/canvas.py +17 -3
- basic_memory/mcp/tools/delete_note.py +168 -5
- basic_memory/mcp/tools/edit_note.py +303 -0
- basic_memory/mcp/tools/list_directory.py +154 -0
- basic_memory/mcp/tools/move_note.py +299 -0
- basic_memory/mcp/tools/project_management.py +332 -0
- basic_memory/mcp/tools/read_content.py +15 -6
- basic_memory/mcp/tools/read_note.py +28 -9
- basic_memory/mcp/tools/recent_activity.py +47 -16
- basic_memory/mcp/tools/search.py +189 -8
- basic_memory/mcp/tools/sync_status.py +254 -0
- basic_memory/mcp/tools/utils.py +184 -12
- basic_memory/mcp/tools/view_note.py +66 -0
- basic_memory/mcp/tools/write_note.py +24 -17
- basic_memory/models/__init__.py +3 -2
- basic_memory/models/knowledge.py +16 -4
- basic_memory/models/project.py +78 -0
- basic_memory/models/search.py +8 -5
- basic_memory/repository/__init__.py +2 -0
- basic_memory/repository/entity_repository.py +8 -3
- basic_memory/repository/observation_repository.py +35 -3
- basic_memory/repository/project_info_repository.py +3 -2
- basic_memory/repository/project_repository.py +85 -0
- basic_memory/repository/relation_repository.py +8 -2
- basic_memory/repository/repository.py +107 -15
- basic_memory/repository/search_repository.py +192 -54
- basic_memory/schemas/__init__.py +6 -0
- basic_memory/schemas/base.py +33 -5
- basic_memory/schemas/directory.py +30 -0
- basic_memory/schemas/importer.py +34 -0
- basic_memory/schemas/memory.py +84 -13
- basic_memory/schemas/project_info.py +112 -2
- basic_memory/schemas/prompt.py +90 -0
- basic_memory/schemas/request.py +56 -2
- basic_memory/schemas/search.py +1 -1
- basic_memory/services/__init__.py +2 -1
- basic_memory/services/context_service.py +208 -95
- basic_memory/services/directory_service.py +167 -0
- basic_memory/services/entity_service.py +399 -6
- basic_memory/services/exceptions.py +6 -0
- basic_memory/services/file_service.py +14 -15
- basic_memory/services/initialization.py +170 -66
- basic_memory/services/link_resolver.py +35 -12
- basic_memory/services/migration_service.py +168 -0
- basic_memory/services/project_service.py +671 -0
- basic_memory/services/search_service.py +77 -2
- basic_memory/services/sync_status_service.py +181 -0
- basic_memory/sync/background_sync.py +25 -0
- basic_memory/sync/sync_service.py +102 -21
- basic_memory/sync/watch_service.py +63 -39
- basic_memory/templates/prompts/continue_conversation.hbs +110 -0
- basic_memory/templates/prompts/search.hbs +101 -0
- basic_memory/utils.py +67 -17
- {basic_memory-0.12.2.dist-info → basic_memory-0.13.0.dist-info}/METADATA +26 -4
- basic_memory-0.13.0.dist-info/RECORD +138 -0
- basic_memory/api/routers/project_info_router.py +0 -274
- basic_memory/mcp/main.py +0 -24
- basic_memory-0.12.2.dist-info/RECORD +0 -100
- {basic_memory-0.12.2.dist-info → basic_memory-0.13.0.dist-info}/WHEEL +0 -0
- {basic_memory-0.12.2.dist-info → basic_memory-0.13.0.dist-info}/entry_points.txt +0 -0
- {basic_memory-0.12.2.dist-info → basic_memory-0.13.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
basic_memory/__init__.py,sha256=kYTgbNYjpTOTrVbmkdvP8eII6KD0j3qf2LgF-q01dQQ,178
|
|
2
|
+
basic_memory/config.py,sha256=lNpbn-b1k9nunQ-htciYQHC8XatRIhc_m6SN2Pbvp-E,11101
|
|
3
|
+
basic_memory/db.py,sha256=X4-uyEZdJXVLfFDTpcNZxWzawRZXhDdKoEFWAGgE4Lk,6193
|
|
4
|
+
basic_memory/deps.py,sha256=zXOhqXCoSVIa1iIcO8U6uUiofJn5eT4ycwJkH9I2kX4,12102
|
|
5
|
+
basic_memory/file_utils.py,sha256=eaxTKLLEbTIy_Mb_Iv_Dmt4IXAJSrZGVi-Knrpyci3E,6700
|
|
6
|
+
basic_memory/utils.py,sha256=BL6DDRiMF1gNcDr_guRAYflooSrSlDniJh96ApdzuDY,7555
|
|
7
|
+
basic_memory/alembic/alembic.ini,sha256=IEZsnF8CbbZnkwBr67LzKKNobHuzTaQNUvM8Psop5xc,3733
|
|
8
|
+
basic_memory/alembic/env.py,sha256=2izCQuFbw0hhlx0L8dHgQ98QM_tzMj6WbgrznKrbxv8,2727
|
|
9
|
+
basic_memory/alembic/migrations.py,sha256=lriHPXDdBLSNXEW3QTpU0SJKuVd1V-8NrVkpN3qfsUQ,718
|
|
10
|
+
basic_memory/alembic/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
|
|
11
|
+
basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py,sha256=lTbWlAnd1es7xU99DoJgfaRe1_Kte8TL98riqeKGV80,4363
|
|
12
|
+
basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py,sha256=k6xYTmYPM9Ros-7CA7BwZBKYwoK_gmVdC-2n8FAjdoE,1840
|
|
13
|
+
basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py,sha256=2CCY9ayjzbraYMcinqSsJi9Sc0nu2e-ehkUJus-sz34,4379
|
|
14
|
+
basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py,sha256=YErFkIpZdicvUil4ZtE6uxSpk5BZCTXZ_TfPE-MgSfo,4210
|
|
15
|
+
basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py,sha256=RsGymQzfRXV1LSNKiyi0lMilTxW1NgwS9jR67ye2apI,1428
|
|
16
|
+
basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py,sha256=kDavR9Qqx9wSu5P3qd4SZq_waIsDG1UMTg2SmDoktMU,3679
|
|
17
|
+
basic_memory/api/__init__.py,sha256=wCpj-21j1D0KzKl9Ql6unLBVFY0K1uGp_FeSZRKtqpk,72
|
|
18
|
+
basic_memory/api/app.py,sha256=ucV1epIVQ210JFdZIs6aZ_UWK8TG78p_NhGf6WOrFk0,2809
|
|
19
|
+
basic_memory/api/template_loader.py,sha256=exbTeXyJRgyLFmSjNeroxjT7X2DWFm2X5qUVa3drbYM,8607
|
|
20
|
+
basic_memory/api/routers/__init__.py,sha256=REO5CKQ96o5vtGWACcsIxIpWybIUSeKXc83RWbWc8BQ,398
|
|
21
|
+
basic_memory/api/routers/directory_router.py,sha256=rBQHvuwffUOk0iKvcEs2QlWclgvr8ur24f_pH3-sVRQ,2054
|
|
22
|
+
basic_memory/api/routers/importer_router.py,sha256=xFUCorkPWo8AF0ya0UrcLmXNf8CjPZdAqddQIH8PO-o,4513
|
|
23
|
+
basic_memory/api/routers/knowledge_router.py,sha256=4dD_tPpcJGWCuoRKEbQXCS3hoXNWe-VbcGC7xV-8VoE,9738
|
|
24
|
+
basic_memory/api/routers/management_router.py,sha256=INT5PzUXhfBH2546CTZKqZnRuECYIA4Ypfgdf6JNyu0,2686
|
|
25
|
+
basic_memory/api/routers/memory_router.py,sha256=a9Cnx3XgwSkO-2ABFzI3wM3PoMGxuyfJFFp7NfFZapc,3003
|
|
26
|
+
basic_memory/api/routers/project_router.py,sha256=cXGx6VZMg67jdzMi1Xf8SodtueEI04xRwtiv9ygf2Bg,8239
|
|
27
|
+
basic_memory/api/routers/prompt_router.py,sha256=4wxq6-NREgVJM8N9C0YsN1AAUDD8nkTCOzWyzSqTSFw,9948
|
|
28
|
+
basic_memory/api/routers/resource_router.py,sha256=WEJEqEaY_yTKj5-U-rW4kXQKUcJflykgwI6_g_R41ck,8058
|
|
29
|
+
basic_memory/api/routers/search_router.py,sha256=GD62jlCQTiL_VNsdibi-b1f6H40KCWo9SX2Cl7YH4QU,1226
|
|
30
|
+
basic_memory/api/routers/utils.py,sha256=vW-bYUmATQPe-pYbQfNjuho-BzsHhy9bmWv-LZX3HTc,5153
|
|
31
|
+
basic_memory/cli/__init__.py,sha256=arcKLAWRDhPD7x5t80MlviZeYzwHZ0GZigyy3NKVoGk,33
|
|
32
|
+
basic_memory/cli/app.py,sha256=BCIaiJBPV0ipk8KwPRLNiG2ACKBQH9wo1ewKZm7CV7o,2269
|
|
33
|
+
basic_memory/cli/main.py,sha256=_0eW-TWYxj8WyCHSS9kFcrrntpeIsqJrA2P0n6LfFvY,475
|
|
34
|
+
basic_memory/cli/commands/__init__.py,sha256=jtnGMOIgOBNJCXQ8xpKbLWhFUD3qgpOraRi19YRNaTc,411
|
|
35
|
+
basic_memory/cli/commands/auth.py,sha256=mnTlb75eeQWocWYs67LaYbuEysaYvHkqP7gQ0FEXKjE,4858
|
|
36
|
+
basic_memory/cli/commands/db.py,sha256=IVFCTQcj2tI_U5mWRjUbDTHH-GjLBM7FGh5OA69C8ko,1141
|
|
37
|
+
basic_memory/cli/commands/import_chatgpt.py,sha256=VU_Kfr4B0lVh_Z2_bmsTO3e3U40wrAOvTAvtblgjses,2773
|
|
38
|
+
basic_memory/cli/commands/import_claude_conversations.py,sha256=sXnP0hjfwUapwHQDzxE2HEkCDe8FTaE4cogKILsD1EA,2866
|
|
39
|
+
basic_memory/cli/commands/import_claude_projects.py,sha256=mWYIeA-mu_Pq23R7OEtY2XHXG5CAh1dMGIBhckB4zRk,2811
|
|
40
|
+
basic_memory/cli/commands/import_memory_json.py,sha256=Vz5rt7KCel5B3Dtv57WPEUJTHCMwFUqQlOCm2djwUi8,2867
|
|
41
|
+
basic_memory/cli/commands/mcp.py,sha256=jmRUv1U5FT3AQ1cDbvTfAUnjhBw6UsNEmIkpbNr-_qQ,3093
|
|
42
|
+
basic_memory/cli/commands/project.py,sha256=YkVYcjxQOVhxIX1M0g_vMaP5dTinYvSnUQIjeOPg8HE,12971
|
|
43
|
+
basic_memory/cli/commands/status.py,sha256=708EK8-iPjyc1iE5MPECzAyZraGYoGpvYjLwTm-BlQs,5719
|
|
44
|
+
basic_memory/cli/commands/sync.py,sha256=gOU_onrMj9_IRiIe8FWU_FLEvfjcOt-qhrvvFJuU-ws,8010
|
|
45
|
+
basic_memory/cli/commands/tool.py,sha256=my-kALn3khv1W2Avi736NrHsfkpbyP57mDi5LjHwqe0,9540
|
|
46
|
+
basic_memory/importers/__init__.py,sha256=BTcBW97P3thcsWa5w9tQsvOu8ynHDgw2-8tPgkCZoh8,795
|
|
47
|
+
basic_memory/importers/base.py,sha256=awwe_U-CfzSINKoM6iro7ru4QqLlsfXzdHztDvebnxM,2531
|
|
48
|
+
basic_memory/importers/chatgpt_importer.py,sha256=36VAsZarI7XE5r_KxNpWeHM1HPfHj6NfTDuH6ExY4hg,7372
|
|
49
|
+
basic_memory/importers/claude_conversations_importer.py,sha256=p7yehy9Pgc5fef6d0ab9DwCm8CCiyyZkGEqX8U7rHbw,5725
|
|
50
|
+
basic_memory/importers/claude_projects_importer.py,sha256=pFJnX9m7GOv2TrS9f2nM1-mTtheTEBWjxKtwDWdJOGM,5389
|
|
51
|
+
basic_memory/importers/memory_json_importer.py,sha256=u-cNYPuBsiNcyOLKo8YBXKyCp_dOs5PmkTpw5o8SXnw,3936
|
|
52
|
+
basic_memory/importers/utils.py,sha256=7n4i_UgSNiOU9i7YlEq-gHOMHjq4gTH69jn0qMz9bIk,1792
|
|
53
|
+
basic_memory/markdown/__init__.py,sha256=DdzioCWtDnKaq05BHYLgL_78FawEHLpLXnp-kPSVfIc,501
|
|
54
|
+
basic_memory/markdown/entity_parser.py,sha256=Gw0RdzWGRcy63RcLP2J2Dcm9g404x0GXirDaWDYjTWg,4516
|
|
55
|
+
basic_memory/markdown/markdown_processor.py,sha256=S5ny69zu2dlqO7tWJoLrpLSzg8emQIDq7Du7olpJUsk,4968
|
|
56
|
+
basic_memory/markdown/plugins.py,sha256=gtIzKRjoZsyvBqLpVNnrmzl_cbTZ5ZGn8kcuXxQjRko,6639
|
|
57
|
+
basic_memory/markdown/schemas.py,sha256=eyxYCr1hVyWmImcle0asE5It_DD6ARkqaBZYu1KK5n4,1896
|
|
58
|
+
basic_memory/markdown/utils.py,sha256=wr7KnDMThgnztkOoqSG_ANPhwNBoPkyjYP1sA1Wnxe4,3270
|
|
59
|
+
basic_memory/mcp/__init__.py,sha256=dsDOhKqjYeIbCULbHIxfcItTbqudEuEg1Np86eq0GEQ,35
|
|
60
|
+
basic_memory/mcp/async_client.py,sha256=Eo345wANiBRSM4u3j_Vd6Ax4YtMg7qbWd9PIoFfj61I,236
|
|
61
|
+
basic_memory/mcp/auth_provider.py,sha256=CTydkEBvxh_fg_Z0hxKjTT8nHJoFhxrwp5hTQuToiIU,9977
|
|
62
|
+
basic_memory/mcp/external_auth_provider.py,sha256=Z1GDbr6P4C-flZVHMWkIqAu30kcfeHv2iSp0EYbFuxo,11483
|
|
63
|
+
basic_memory/mcp/project_session.py,sha256=OP1X10iG4wIWHgfkwC2q7Inl6b68zrioqkD1-Ju_S6w,3462
|
|
64
|
+
basic_memory/mcp/server.py,sha256=QbRkkYaDWK5Vrvez39ET8C6h5uGS6y4wDHMVaCgdD78,3787
|
|
65
|
+
basic_memory/mcp/supabase_auth_provider.py,sha256=MLHfSHjdx2Q5jr_Ljx0qZBaOwp7CkPdk_ybR_LQ7Mvw,16472
|
|
66
|
+
basic_memory/mcp/prompts/__init__.py,sha256=UvaIw5KA8PaXj3Wz1Dr-VjlkEq6T5D8AGtYFVwaHqnA,683
|
|
67
|
+
basic_memory/mcp/prompts/ai_assistant_guide.py,sha256=8TI5xObiRVcwv6w9by1xQHlX0whvyE7-LGsiqDMRTFg,821
|
|
68
|
+
basic_memory/mcp/prompts/continue_conversation.py,sha256=rsmlC2V7e7G6DAK0K825vFsPKgsRQ702HFzn6lkHaDM,1998
|
|
69
|
+
basic_memory/mcp/prompts/recent_activity.py,sha256=0v1c3b2SdDDxXVuF8eOjNooYy04uRYel0pdJ0rnggw4,3311
|
|
70
|
+
basic_memory/mcp/prompts/search.py,sha256=nb88MZy9tdW_MmCLUVItiukrLdb3xEHWLv0JVLUlc4o,1692
|
|
71
|
+
basic_memory/mcp/prompts/sync_status.py,sha256=_5EqnCavY9BTsaxX2tPp-AgQZLt4bUrqQ6TwbM0L5w8,4645
|
|
72
|
+
basic_memory/mcp/prompts/utils.py,sha256=VacrbqwYtySpIlYIrKHo5s6jtoTMscYJqrFRH3zpC6Q,5431
|
|
73
|
+
basic_memory/mcp/resources/ai_assistant_guide.md,sha256=qnYWDkYlb-JmKuOoZ5llmRas_t4dWDXB_i8LE277Lgs,14777
|
|
74
|
+
basic_memory/mcp/resources/project_info.py,sha256=LcUkTx4iXBfU6Lp4TVch78OqLopbOy4ljyKnfr4VXso,1906
|
|
75
|
+
basic_memory/mcp/tools/__init__.py,sha256=lCCOC0jElvL2v53WI_dxRs4qABq4Eo-YGm6j2XeZ6AQ,1591
|
|
76
|
+
basic_memory/mcp/tools/build_context.py,sha256=RbevfGVblSF901kAD2zc1CQ5z3tzfLC9XV_jcq35d_Y,4490
|
|
77
|
+
basic_memory/mcp/tools/canvas.py,sha256=22F9G9gfPb-l8i1B5ra4Ja_h9zYY83rPY9mDA5C5gkY,3738
|
|
78
|
+
basic_memory/mcp/tools/delete_note.py,sha256=tSyRc_VgBmLyVeenClwX1Sk--LKcGahAMzTX2mK2XIs,7346
|
|
79
|
+
basic_memory/mcp/tools/edit_note.py,sha256=q4x-f7-j_l-wzm17-AVFT1_WGCo0Cq4lI3seYSe21aY,13570
|
|
80
|
+
basic_memory/mcp/tools/list_directory.py,sha256=-FxDsCru5YD02M4qkQDAurEJWyRaC7YI4YR6zg0atR8,5236
|
|
81
|
+
basic_memory/mcp/tools/move_note.py,sha256=esnbddG2OcmIgRNuQwx5OhlwZ1CWcOheg3hUobsEcq0,11320
|
|
82
|
+
basic_memory/mcp/tools/project_management.py,sha256=XtZTFWi7--ku6yUR_vwHQx2Ka3vz3pCcWMhVa_y4CQs,12162
|
|
83
|
+
basic_memory/mcp/tools/read_content.py,sha256=4FTw13B8UjVVhR78NJB9HKeJb_nA6-BGT1WdGtekN5Q,8596
|
|
84
|
+
basic_memory/mcp/tools/read_note.py,sha256=GdsJLkcDrCBnmNeM9BZRx9Xs2LUqH5ty_E471T9Kf1Y,7493
|
|
85
|
+
basic_memory/mcp/tools/recent_activity.py,sha256=XVjNJAJnmxvzx9_Ls1A-QOd2yTR7pJlSTTuRxSivmN4,4833
|
|
86
|
+
basic_memory/mcp/tools/search.py,sha256=22sLHed6z53mH9NQqBv37Xi4d6AtOTyrUvKs2Mycijk,11296
|
|
87
|
+
basic_memory/mcp/tools/sync_status.py,sha256=mt0DdcaAlyiKW4NK4gy6psajSqcez0bOm_4MzG1NOdg,10486
|
|
88
|
+
basic_memory/mcp/tools/utils.py,sha256=wsfrgiBScacMilODu85AXbUUKA5fJi4_6phDIC9dQRs,19702
|
|
89
|
+
basic_memory/mcp/tools/view_note.py,sha256=ddNXxyETsdA5SYflIaQVj_Cbd7I7CLVs3atRRDMbGmg,2499
|
|
90
|
+
basic_memory/mcp/tools/write_note.py,sha256=TW_7-4QfX8GYZ-FU_iSSYAm1lucE7NeOcpZUypRXKOk,5912
|
|
91
|
+
basic_memory/models/__init__.py,sha256=j0C4dtFi-FOEaQKR8dQWEG-dJtdQ15NBTiJg4nbIXNU,333
|
|
92
|
+
basic_memory/models/base.py,sha256=4hAXJ8CE1RnjKhb23lPd-QM7G_FXIdTowMJ9bRixspU,225
|
|
93
|
+
basic_memory/models/knowledge.py,sha256=AFxfKS8fRa43Kq3EjJCAufpte4VNC7fs9YfshDrB4o0,7087
|
|
94
|
+
basic_memory/models/project.py,sha256=oUrQaUOu7_muSl-i38Dh0HzmCFrMAtwgxALDUTt9k5c,2773
|
|
95
|
+
basic_memory/models/search.py,sha256=PhQ8w4taApSvjh1DpPhB4cH9GTt2E2po-DFZzhnoZkY,1300
|
|
96
|
+
basic_memory/repository/__init__.py,sha256=MWK-o8QikqzOpe5SyPbKQ2ioB5BWA0Upz65tgg-E0DU,327
|
|
97
|
+
basic_memory/repository/entity_repository.py,sha256=larjP7r6Sc7YyPD1BloC_m96McYsjHTf6doUQy3gSY4,3776
|
|
98
|
+
basic_memory/repository/observation_repository.py,sha256=qhMvHLSjaoT3Fa_cQOKsT5jYPj66GXSytEBMwLAgygQ,2943
|
|
99
|
+
basic_memory/repository/project_info_repository.py,sha256=8XLVAYKkBWQ6GbKj1iqA9OK0FGPHdTlOs7ZtfeUf9t8,338
|
|
100
|
+
basic_memory/repository/project_repository.py,sha256=sgdKxKTSiiOZTzABwUNqli7K5mbXiPiQEAc5r0RD_jQ,3159
|
|
101
|
+
basic_memory/repository/relation_repository.py,sha256=z7Oo5Zz_J-Bj6RvQDpSWR73ZLk2fxG7e7jrMbeFeJvQ,3179
|
|
102
|
+
basic_memory/repository/repository.py,sha256=MJb-cb8QZQbL-Grq_iqv4Kq75aX2yQohLIqh5T4fFxw,15224
|
|
103
|
+
basic_memory/repository/search_repository.py,sha256=CdALAsROY6W_rE1UB8Bn55ZdMv4DOmNOtShoXCwPI_Q,17897
|
|
104
|
+
basic_memory/schemas/__init__.py,sha256=mEgIFcdTeb-v4y0gkOh_pA5zyqGbZk-9XbXqlSi6WMs,1674
|
|
105
|
+
basic_memory/schemas/base.py,sha256=Fx97DEqzOr7y9zeeseO9qVBYbOft_4OQf9EiVfhOJn4,6738
|
|
106
|
+
basic_memory/schemas/delete.py,sha256=UAR2JK99WMj3gP-yoGWlHD3eZEkvlTSRf8QoYIE-Wfw,1180
|
|
107
|
+
basic_memory/schemas/directory.py,sha256=F9_LrJqRqb_kO08GDKJzXLb2nhbYG2PdVUo5eDD_Kf4,881
|
|
108
|
+
basic_memory/schemas/importer.py,sha256=FAh-RGxuhFW2rz3HFxwLzENJOiGgbTR2hUeXZZpM3OA,663
|
|
109
|
+
basic_memory/schemas/memory.py,sha256=6YjEyJ9GJLC4VrFD0EnoRDTfg-Sf6g0D4bhL9rwNBi4,5816
|
|
110
|
+
basic_memory/schemas/project_info.py,sha256=cHXgp9k4RbgolIpCIEcrb-RR9m7WL72KFGwknig4H-E,6884
|
|
111
|
+
basic_memory/schemas/prompt.py,sha256=SpIVfZprQT8E5uP40j3CpBc2nHKflwOo3iZD7BFPIHE,3648
|
|
112
|
+
basic_memory/schemas/request.py,sha256=Mv5EvrLZlFIiPr8dOjo_4QXvkseYhQI7cd_X2zDsxQM,3760
|
|
113
|
+
basic_memory/schemas/response.py,sha256=lVYR31DTtSeFRddGWX_wQWnQgyiwX0LEpNJ4f4lKpTM,6440
|
|
114
|
+
basic_memory/schemas/search.py,sha256=ywMsDGAQK2sO2TT5lc-da_k67OKW1x1TenXormHHWv4,3657
|
|
115
|
+
basic_memory/services/__init__.py,sha256=XGt8WX3fX_0K9L37Msy8HF8nlMZYIG3uQ6mUX6_iJtg,259
|
|
116
|
+
basic_memory/services/context_service.py,sha256=4ReLAF5qifA9ayOePGsVKusw1TWj8oBzRECjrsFiKPI,14462
|
|
117
|
+
basic_memory/services/directory_service.py,sha256=_YOPXseQM4knd7PIFAho9LV_E-FljVE5WVJKQ0uflZs,6017
|
|
118
|
+
basic_memory/services/entity_service.py,sha256=KemsDkKkA7KItVtfsdAlYaGyOR8ryZQCu_O9GhkJucc,30103
|
|
119
|
+
basic_memory/services/exceptions.py,sha256=oVjQr50XQqnFq1-MNKBilI2ShtHDxypavyDk1UeyHhw,390
|
|
120
|
+
basic_memory/services/file_service.py,sha256=jCrmnEkTQ4t9HF7L_M6BL7tdDqjjzty9hpTo9AzwhvM,10059
|
|
121
|
+
basic_memory/services/initialization.py,sha256=6ZeuTInPksyre4pjmiK_GXi5o_mJk3mfqGGH6apHxko,9271
|
|
122
|
+
basic_memory/services/link_resolver.py,sha256=1-_VFsvqdT5rVBHe8Jrq63U59XQ0hxGezxY8c24Tiow,4594
|
|
123
|
+
basic_memory/services/migration_service.py,sha256=pFJCSD7UgHLx1CHvtN4Df1CzDEp-CZ9Vqx4XYn1m1M0,6096
|
|
124
|
+
basic_memory/services/project_service.py,sha256=nWnrlnjISqtGP6ui1BR8rSTNFzwExW8u7mRYPtWJLok,26856
|
|
125
|
+
basic_memory/services/search_service.py,sha256=c5Ky0ufz7YPFgHhVzNRQ4OecF_JUrt7nALzpMjobW4M,12782
|
|
126
|
+
basic_memory/services/service.py,sha256=V-d_8gOV07zGIQDpL-Ksqs3ZN9l3qf3HZOK1f_YNTag,336
|
|
127
|
+
basic_memory/services/sync_status_service.py,sha256=PRAnYrsNJY8EIlxaxCrDsY0TjySDdhktjta8ReQZyiY,6838
|
|
128
|
+
basic_memory/sync/__init__.py,sha256=CVHguYH457h2u2xoM8KvOilJC71XJlZ-qUh8lHcjYj4,156
|
|
129
|
+
basic_memory/sync/background_sync.py,sha256=4CEx8oP6-qD33uCeowhpzhA8wivmWxaCmSBP37h3Fs8,714
|
|
130
|
+
basic_memory/sync/sync_service.py,sha256=AxC5J1YTcPWTmA0HdzvOZBthi4-_LZ44kNF0KQoDRPw,23387
|
|
131
|
+
basic_memory/sync/watch_service.py,sha256=JAumrHUjV1lF9NtEK32jgg0myWBfLXotNXxONeIV9SM,15316
|
|
132
|
+
basic_memory/templates/prompts/continue_conversation.hbs,sha256=begMFHOPN3aCm5sHz5PlKMLOfZ8hlpFxFJ-hgy0T9K4,3075
|
|
133
|
+
basic_memory/templates/prompts/search.hbs,sha256=H1cCIsHKp4VC1GrH2KeUB8pGe5vXFPqb2VPotypmeCA,3098
|
|
134
|
+
basic_memory-0.13.0.dist-info/METADATA,sha256=hvtOwa0rvLUjYZwglCGmi2Df39qSQpZIadCZzX_jQpM,15469
|
|
135
|
+
basic_memory-0.13.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
136
|
+
basic_memory-0.13.0.dist-info/entry_points.txt,sha256=wvE2mRF6-Pg4weIYcfQ-86NOLZD4WJg7F7TIsRVFLb8,90
|
|
137
|
+
basic_memory-0.13.0.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
|
138
|
+
basic_memory-0.13.0.dist-info/RECORD,,
|
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
"""Router for statistics and system information."""
|
|
2
|
-
|
|
3
|
-
import json
|
|
4
|
-
from datetime import datetime
|
|
5
|
-
|
|
6
|
-
from basic_memory.config import config, config_manager
|
|
7
|
-
from basic_memory.deps import (
|
|
8
|
-
ProjectInfoRepositoryDep,
|
|
9
|
-
)
|
|
10
|
-
from basic_memory.repository.project_info_repository import ProjectInfoRepository
|
|
11
|
-
from basic_memory.schemas import (
|
|
12
|
-
ProjectInfoResponse,
|
|
13
|
-
ProjectStatistics,
|
|
14
|
-
ActivityMetrics,
|
|
15
|
-
SystemStatus,
|
|
16
|
-
)
|
|
17
|
-
from basic_memory.sync.watch_service import WATCH_STATUS_JSON
|
|
18
|
-
from fastapi import APIRouter
|
|
19
|
-
from sqlalchemy import text
|
|
20
|
-
|
|
21
|
-
router = APIRouter(prefix="/stats", tags=["statistics"])
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
@router.get("/project-info", response_model=ProjectInfoResponse)
|
|
25
|
-
async def get_project_info(
|
|
26
|
-
repository: ProjectInfoRepositoryDep,
|
|
27
|
-
) -> ProjectInfoResponse:
|
|
28
|
-
"""Get comprehensive information about the current Basic Memory project."""
|
|
29
|
-
# Get statistics
|
|
30
|
-
statistics = await get_statistics(repository)
|
|
31
|
-
|
|
32
|
-
# Get activity metrics
|
|
33
|
-
activity = await get_activity_metrics(repository)
|
|
34
|
-
|
|
35
|
-
# Get system status
|
|
36
|
-
system = await get_system_status()
|
|
37
|
-
|
|
38
|
-
# Get project configuration information
|
|
39
|
-
project_name = config.project
|
|
40
|
-
project_path = str(config.home)
|
|
41
|
-
available_projects = config_manager.projects
|
|
42
|
-
default_project = config_manager.default_project
|
|
43
|
-
|
|
44
|
-
# Construct the response
|
|
45
|
-
return ProjectInfoResponse(
|
|
46
|
-
project_name=project_name,
|
|
47
|
-
project_path=project_path,
|
|
48
|
-
available_projects=available_projects,
|
|
49
|
-
default_project=default_project,
|
|
50
|
-
statistics=statistics,
|
|
51
|
-
activity=activity,
|
|
52
|
-
system=system,
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
async def get_statistics(repository: ProjectInfoRepository) -> ProjectStatistics:
|
|
57
|
-
"""Get statistics about the current project."""
|
|
58
|
-
# Get basic counts
|
|
59
|
-
entity_count_result = await repository.execute_query(text("SELECT COUNT(*) FROM entity"))
|
|
60
|
-
total_entities = entity_count_result.scalar() or 0
|
|
61
|
-
|
|
62
|
-
observation_count_result = await repository.execute_query(
|
|
63
|
-
text("SELECT COUNT(*) FROM observation")
|
|
64
|
-
)
|
|
65
|
-
total_observations = observation_count_result.scalar() or 0
|
|
66
|
-
|
|
67
|
-
relation_count_result = await repository.execute_query(text("SELECT COUNT(*) FROM relation"))
|
|
68
|
-
total_relations = relation_count_result.scalar() or 0
|
|
69
|
-
|
|
70
|
-
unresolved_count_result = await repository.execute_query(
|
|
71
|
-
text("SELECT COUNT(*) FROM relation WHERE to_id IS NULL")
|
|
72
|
-
)
|
|
73
|
-
total_unresolved = unresolved_count_result.scalar() or 0
|
|
74
|
-
|
|
75
|
-
# Get entity counts by type
|
|
76
|
-
entity_types_result = await repository.execute_query(
|
|
77
|
-
text("SELECT entity_type, COUNT(*) FROM entity GROUP BY entity_type")
|
|
78
|
-
)
|
|
79
|
-
entity_types = {row[0]: row[1] for row in entity_types_result.fetchall()}
|
|
80
|
-
|
|
81
|
-
# Get observation counts by category
|
|
82
|
-
category_result = await repository.execute_query(
|
|
83
|
-
text("SELECT category, COUNT(*) FROM observation GROUP BY category")
|
|
84
|
-
)
|
|
85
|
-
observation_categories = {row[0]: row[1] for row in category_result.fetchall()}
|
|
86
|
-
|
|
87
|
-
# Get relation counts by type
|
|
88
|
-
relation_types_result = await repository.execute_query(
|
|
89
|
-
text("SELECT relation_type, COUNT(*) FROM relation GROUP BY relation_type")
|
|
90
|
-
)
|
|
91
|
-
relation_types = {row[0]: row[1] for row in relation_types_result.fetchall()}
|
|
92
|
-
|
|
93
|
-
# Find most connected entities (most outgoing relations)
|
|
94
|
-
connected_result = await repository.execute_query(
|
|
95
|
-
text("""
|
|
96
|
-
SELECT e.id, e.title, e.permalink, COUNT(r.id) AS relation_count
|
|
97
|
-
FROM entity e
|
|
98
|
-
JOIN relation r ON e.id = r.from_id
|
|
99
|
-
GROUP BY e.id
|
|
100
|
-
ORDER BY relation_count DESC
|
|
101
|
-
LIMIT 10
|
|
102
|
-
""")
|
|
103
|
-
)
|
|
104
|
-
most_connected = [
|
|
105
|
-
{"id": row[0], "title": row[1], "permalink": row[2], "relation_count": row[3]}
|
|
106
|
-
for row in connected_result.fetchall()
|
|
107
|
-
]
|
|
108
|
-
|
|
109
|
-
# Count isolated entities (no relations)
|
|
110
|
-
isolated_result = await repository.execute_query(
|
|
111
|
-
text("""
|
|
112
|
-
SELECT COUNT(e.id)
|
|
113
|
-
FROM entity e
|
|
114
|
-
LEFT JOIN relation r1 ON e.id = r1.from_id
|
|
115
|
-
LEFT JOIN relation r2 ON e.id = r2.to_id
|
|
116
|
-
WHERE r1.id IS NULL AND r2.id IS NULL
|
|
117
|
-
""")
|
|
118
|
-
)
|
|
119
|
-
isolated_count = isolated_result.scalar() or 0
|
|
120
|
-
|
|
121
|
-
return ProjectStatistics(
|
|
122
|
-
total_entities=total_entities,
|
|
123
|
-
total_observations=total_observations,
|
|
124
|
-
total_relations=total_relations,
|
|
125
|
-
total_unresolved_relations=total_unresolved,
|
|
126
|
-
entity_types=entity_types,
|
|
127
|
-
observation_categories=observation_categories,
|
|
128
|
-
relation_types=relation_types,
|
|
129
|
-
most_connected_entities=most_connected,
|
|
130
|
-
isolated_entities=isolated_count,
|
|
131
|
-
)
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
async def get_activity_metrics(repository: ProjectInfoRepository) -> ActivityMetrics:
|
|
135
|
-
"""Get activity metrics for the current project."""
|
|
136
|
-
# Get recently created entities
|
|
137
|
-
created_result = await repository.execute_query(
|
|
138
|
-
text("""
|
|
139
|
-
SELECT id, title, permalink, entity_type, created_at
|
|
140
|
-
FROM entity
|
|
141
|
-
ORDER BY created_at DESC
|
|
142
|
-
LIMIT 10
|
|
143
|
-
""")
|
|
144
|
-
)
|
|
145
|
-
recently_created = [
|
|
146
|
-
{
|
|
147
|
-
"id": row[0],
|
|
148
|
-
"title": row[1],
|
|
149
|
-
"permalink": row[2],
|
|
150
|
-
"entity_type": row[3],
|
|
151
|
-
"created_at": row[4],
|
|
152
|
-
}
|
|
153
|
-
for row in created_result.fetchall()
|
|
154
|
-
]
|
|
155
|
-
|
|
156
|
-
# Get recently updated entities
|
|
157
|
-
updated_result = await repository.execute_query(
|
|
158
|
-
text("""
|
|
159
|
-
SELECT id, title, permalink, entity_type, updated_at
|
|
160
|
-
FROM entity
|
|
161
|
-
ORDER BY updated_at DESC
|
|
162
|
-
LIMIT 10
|
|
163
|
-
""")
|
|
164
|
-
)
|
|
165
|
-
recently_updated = [
|
|
166
|
-
{
|
|
167
|
-
"id": row[0],
|
|
168
|
-
"title": row[1],
|
|
169
|
-
"permalink": row[2],
|
|
170
|
-
"entity_type": row[3],
|
|
171
|
-
"updated_at": row[4],
|
|
172
|
-
}
|
|
173
|
-
for row in updated_result.fetchall()
|
|
174
|
-
]
|
|
175
|
-
|
|
176
|
-
# Get monthly growth over the last 6 months
|
|
177
|
-
# Calculate the start of 6 months ago
|
|
178
|
-
now = datetime.now()
|
|
179
|
-
six_months_ago = datetime(
|
|
180
|
-
now.year - (1 if now.month <= 6 else 0), ((now.month - 6) % 12) or 12, 1
|
|
181
|
-
)
|
|
182
|
-
|
|
183
|
-
# Query for monthly entity creation
|
|
184
|
-
entity_growth_result = await repository.execute_query(
|
|
185
|
-
text(f"""
|
|
186
|
-
SELECT
|
|
187
|
-
strftime('%Y-%m', created_at) AS month,
|
|
188
|
-
COUNT(*) AS count
|
|
189
|
-
FROM entity
|
|
190
|
-
WHERE created_at >= '{six_months_ago.isoformat()}'
|
|
191
|
-
GROUP BY month
|
|
192
|
-
ORDER BY month
|
|
193
|
-
""")
|
|
194
|
-
)
|
|
195
|
-
entity_growth = {row[0]: row[1] for row in entity_growth_result.fetchall()}
|
|
196
|
-
|
|
197
|
-
# Query for monthly observation creation
|
|
198
|
-
observation_growth_result = await repository.execute_query(
|
|
199
|
-
text(f"""
|
|
200
|
-
SELECT
|
|
201
|
-
strftime('%Y-%m', created_at) AS month,
|
|
202
|
-
COUNT(*) AS count
|
|
203
|
-
FROM observation
|
|
204
|
-
INNER JOIN entity ON observation.entity_id = entity.id
|
|
205
|
-
WHERE entity.created_at >= '{six_months_ago.isoformat()}'
|
|
206
|
-
GROUP BY month
|
|
207
|
-
ORDER BY month
|
|
208
|
-
""")
|
|
209
|
-
)
|
|
210
|
-
observation_growth = {row[0]: row[1] for row in observation_growth_result.fetchall()}
|
|
211
|
-
|
|
212
|
-
# Query for monthly relation creation
|
|
213
|
-
relation_growth_result = await repository.execute_query(
|
|
214
|
-
text(f"""
|
|
215
|
-
SELECT
|
|
216
|
-
strftime('%Y-%m', created_at) AS month,
|
|
217
|
-
COUNT(*) AS count
|
|
218
|
-
FROM relation
|
|
219
|
-
INNER JOIN entity ON relation.from_id = entity.id
|
|
220
|
-
WHERE entity.created_at >= '{six_months_ago.isoformat()}'
|
|
221
|
-
GROUP BY month
|
|
222
|
-
ORDER BY month
|
|
223
|
-
""")
|
|
224
|
-
)
|
|
225
|
-
relation_growth = {row[0]: row[1] for row in relation_growth_result.fetchall()}
|
|
226
|
-
|
|
227
|
-
# Combine all monthly growth data
|
|
228
|
-
monthly_growth = {}
|
|
229
|
-
for month in set(
|
|
230
|
-
list(entity_growth.keys()) + list(observation_growth.keys()) + list(relation_growth.keys())
|
|
231
|
-
):
|
|
232
|
-
monthly_growth[month] = {
|
|
233
|
-
"entities": entity_growth.get(month, 0),
|
|
234
|
-
"observations": observation_growth.get(month, 0),
|
|
235
|
-
"relations": relation_growth.get(month, 0),
|
|
236
|
-
"total": (
|
|
237
|
-
entity_growth.get(month, 0)
|
|
238
|
-
+ observation_growth.get(month, 0)
|
|
239
|
-
+ relation_growth.get(month, 0)
|
|
240
|
-
),
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
return ActivityMetrics(
|
|
244
|
-
recently_created=recently_created,
|
|
245
|
-
recently_updated=recently_updated,
|
|
246
|
-
monthly_growth=monthly_growth,
|
|
247
|
-
)
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
async def get_system_status() -> SystemStatus:
|
|
251
|
-
"""Get system status information."""
|
|
252
|
-
import basic_memory
|
|
253
|
-
|
|
254
|
-
# Get database information
|
|
255
|
-
db_path = config.database_path
|
|
256
|
-
db_size = db_path.stat().st_size if db_path.exists() else 0
|
|
257
|
-
db_size_readable = f"{db_size / (1024 * 1024):.2f} MB"
|
|
258
|
-
|
|
259
|
-
# Get watch service status if available
|
|
260
|
-
watch_status = None
|
|
261
|
-
watch_status_path = config.home / ".basic-memory" / WATCH_STATUS_JSON
|
|
262
|
-
if watch_status_path.exists():
|
|
263
|
-
try:
|
|
264
|
-
watch_status = json.loads(watch_status_path.read_text(encoding="utf-8"))
|
|
265
|
-
except Exception: # pragma: no cover
|
|
266
|
-
pass
|
|
267
|
-
|
|
268
|
-
return SystemStatus(
|
|
269
|
-
version=basic_memory.__version__,
|
|
270
|
-
database_path=str(db_path),
|
|
271
|
-
database_size=db_size_readable,
|
|
272
|
-
watch_status=watch_status,
|
|
273
|
-
timestamp=datetime.now(),
|
|
274
|
-
)
|
basic_memory/mcp/main.py
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"""Main MCP entrypoint for Basic Memory.
|
|
2
|
-
|
|
3
|
-
Creates and configures the shared MCP instance and handles server startup.
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from loguru import logger # pragma: no cover
|
|
7
|
-
|
|
8
|
-
from basic_memory.config import config # pragma: no cover
|
|
9
|
-
|
|
10
|
-
# Import shared mcp instance
|
|
11
|
-
from basic_memory.mcp.server import mcp # pragma: no cover
|
|
12
|
-
|
|
13
|
-
# Import tools to register them
|
|
14
|
-
import basic_memory.mcp.tools # noqa: F401 # pragma: no cover
|
|
15
|
-
|
|
16
|
-
# Import prompts to register them
|
|
17
|
-
import basic_memory.mcp.prompts # noqa: F401 # pragma: no cover
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if __name__ == "__main__": # pragma: no cover
|
|
21
|
-
home_dir = config.home
|
|
22
|
-
logger.info("Starting Basic Memory MCP server")
|
|
23
|
-
logger.info(f"Home directory: {home_dir}")
|
|
24
|
-
mcp.run()
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
basic_memory/__init__.py,sha256=9r3qVuD_n9X5pYE_X1n8qlu86LtJPBHz5Z4U15_KkCM,123
|
|
2
|
-
basic_memory/config.py,sha256=jZmBOj4Gl2l56pApiN88s6juPDaX1g2LcvuVUnUeG0Q,9203
|
|
3
|
-
basic_memory/db.py,sha256=8SmrmNAlJlmYT9yIJiPwNq8SN8mB2rbW5t33Rqpyl2I,6052
|
|
4
|
-
basic_memory/deps.py,sha256=yI6RL_5-8LXw7ywSJ_84BXAczDtv2h9GFLw-E9XDJFg,5770
|
|
5
|
-
basic_memory/file_utils.py,sha256=eaxTKLLEbTIy_Mb_Iv_Dmt4IXAJSrZGVi-Knrpyci3E,6700
|
|
6
|
-
basic_memory/utils.py,sha256=2dbUbChLn5gwQgPY-m5XKYOBbeKFEwnRUrZDsm2kGIE,5026
|
|
7
|
-
basic_memory/alembic/alembic.ini,sha256=IEZsnF8CbbZnkwBr67LzKKNobHuzTaQNUvM8Psop5xc,3733
|
|
8
|
-
basic_memory/alembic/env.py,sha256=GyQpEpQu84flqAdelxR0-H9nbkHrVoCboYGfmltBDoA,2737
|
|
9
|
-
basic_memory/alembic/migrations.py,sha256=lriHPXDdBLSNXEW3QTpU0SJKuVd1V-8NrVkpN3qfsUQ,718
|
|
10
|
-
basic_memory/alembic/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
|
|
11
|
-
basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py,sha256=lTbWlAnd1es7xU99DoJgfaRe1_Kte8TL98riqeKGV80,4363
|
|
12
|
-
basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py,sha256=k6xYTmYPM9Ros-7CA7BwZBKYwoK_gmVdC-2n8FAjdoE,1840
|
|
13
|
-
basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py,sha256=RsGymQzfRXV1LSNKiyi0lMilTxW1NgwS9jR67ye2apI,1428
|
|
14
|
-
basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py,sha256=Lbo3dEzdId_vKRFe3jMkGFF3dNQpblPIQa4Bh7np-zA,4020
|
|
15
|
-
basic_memory/api/__init__.py,sha256=wCpj-21j1D0KzKl9Ql6unLBVFY0K1uGp_FeSZRKtqpk,72
|
|
16
|
-
basic_memory/api/app.py,sha256=GFFX3MOusEzbDaAVDECk3B46xybuinUfMt4Atw0Nr8c,1724
|
|
17
|
-
basic_memory/api/routers/__init__.py,sha256=SKuL-weA58hYj0NOMCQRfmsaumlNjjyVHDXNpRO38bQ,305
|
|
18
|
-
basic_memory/api/routers/knowledge_router.py,sha256=iYuBguMb6ERitAwoelSejBYJqLTGfjpkzAHrqwTKjVE,5876
|
|
19
|
-
basic_memory/api/routers/memory_router.py,sha256=W_uHJe2c4XN96mFj6XNvUH6INVbl1BMxy0KUchLcbxU,5421
|
|
20
|
-
basic_memory/api/routers/project_info_router.py,sha256=Qv12_QL3SRpo7bPcpAjizJmkZEVm5h5tyjrf-qIiRl0,9030
|
|
21
|
-
basic_memory/api/routers/resource_router.py,sha256=WEJEqEaY_yTKj5-U-rW4kXQKUcJflykgwI6_g_R41ck,8058
|
|
22
|
-
basic_memory/api/routers/search_router.py,sha256=R_a5OF5_8rCjmoOMhmw3M4VLCy6I1KLGJ-otSLB0rbI,1953
|
|
23
|
-
basic_memory/cli/__init__.py,sha256=arcKLAWRDhPD7x5t80MlviZeYzwHZ0GZigyy3NKVoGk,33
|
|
24
|
-
basic_memory/cli/app.py,sha256=hFRYznTSI58t6FEDUwF_PUgKZF0V63sCHzBDDb5FOAk,2142
|
|
25
|
-
basic_memory/cli/main.py,sha256=WhYOCKliF48DLDOukOg3QPiD16IP3AJfhdCIe7Wlh2g,666
|
|
26
|
-
basic_memory/cli/commands/__init__.py,sha256=3oojcC-Y-4RPqff9vtwWziT_T4uvBVicL0pSHNilVkU,393
|
|
27
|
-
basic_memory/cli/commands/db.py,sha256=-jgVH2fs_s1vvBNJx_FWspQVHv0F6Qd7V5ZPxtYn_jQ,1125
|
|
28
|
-
basic_memory/cli/commands/import_chatgpt.py,sha256=M4_oUN9o_BaW5jpKQu2pTEybivB5ccVolhdZzmhLOsI,8162
|
|
29
|
-
basic_memory/cli/commands/import_claude_conversations.py,sha256=D_4-0xFKkZka7xFvvW8OkgjLv3TFqsC_VuB2Z-Y3avU,6827
|
|
30
|
-
basic_memory/cli/commands/import_claude_projects.py,sha256=KzUuf3wrlvJlqTWCzoLRrNxD3OYNteRXaTFj5IB1FA8,6649
|
|
31
|
-
basic_memory/cli/commands/import_memory_json.py,sha256=qA7at-JbpwjGIJ27hbhIOQU6HnhQn4PGK0OxxC0rV1I,5212
|
|
32
|
-
basic_memory/cli/commands/mcp.py,sha256=sWwRLRbY_FYUNxoy1a8risypnjS9YvZbnP3IjijiUZ0,1025
|
|
33
|
-
basic_memory/cli/commands/project.py,sha256=BSjdz07xDM3R4CUXggv1qhrWLJsEgvGFir6aOUzdr2Q,11330
|
|
34
|
-
basic_memory/cli/commands/status.py,sha256=nbs3myxaNtehEEJ4BBngPuKs-vqZTHNCCb0bTgDsE-s,5277
|
|
35
|
-
basic_memory/cli/commands/sync.py,sha256=3jwgabxkF4WyFZ-gRC1l8A8p8Z_aYrzHRXOtUfYy2yc,8324
|
|
36
|
-
basic_memory/cli/commands/tool.py,sha256=7wte1TqjG__NcC7BB0BRLl8THB3t5eAngud0zVHBQ8k,9506
|
|
37
|
-
basic_memory/markdown/__init__.py,sha256=DdzioCWtDnKaq05BHYLgL_78FawEHLpLXnp-kPSVfIc,501
|
|
38
|
-
basic_memory/markdown/entity_parser.py,sha256=vf0U2ABdnI4PS2rv7dlm-6WfSzdJlMEar55M79JSZJ0,4436
|
|
39
|
-
basic_memory/markdown/markdown_processor.py,sha256=S5ny69zu2dlqO7tWJoLrpLSzg8emQIDq7Du7olpJUsk,4968
|
|
40
|
-
basic_memory/markdown/plugins.py,sha256=gtIzKRjoZsyvBqLpVNnrmzl_cbTZ5ZGn8kcuXxQjRko,6639
|
|
41
|
-
basic_memory/markdown/schemas.py,sha256=eyxYCr1hVyWmImcle0asE5It_DD6ARkqaBZYu1KK5n4,1896
|
|
42
|
-
basic_memory/markdown/utils.py,sha256=wr7KnDMThgnztkOoqSG_ANPhwNBoPkyjYP1sA1Wnxe4,3270
|
|
43
|
-
basic_memory/mcp/__init__.py,sha256=dsDOhKqjYeIbCULbHIxfcItTbqudEuEg1Np86eq0GEQ,35
|
|
44
|
-
basic_memory/mcp/async_client.py,sha256=Eo345wANiBRSM4u3j_Vd6Ax4YtMg7qbWd9PIoFfj61I,236
|
|
45
|
-
basic_memory/mcp/main.py,sha256=0kbcyf1PxRC1bLnHv2zzParfJ6cOq7Am9ScF9UoI50U,703
|
|
46
|
-
basic_memory/mcp/server.py,sha256=RgNIyRUsuBgoCntj_5Dn2_QNTBYQ1tjFSEn-Z1PoFzU,1099
|
|
47
|
-
basic_memory/mcp/prompts/__init__.py,sha256=-Bl9Dgj2TD9PULjzggPqXuvPEjWCRy7S9Yg03h2-U7A,615
|
|
48
|
-
basic_memory/mcp/prompts/ai_assistant_guide.py,sha256=8TI5xObiRVcwv6w9by1xQHlX0whvyE7-LGsiqDMRTFg,821
|
|
49
|
-
basic_memory/mcp/prompts/continue_conversation.py,sha256=I1FdNXIsSBKsu2ABj8TRRr-mdZKZ1K8LMCUfAik5Iqs,4424
|
|
50
|
-
basic_memory/mcp/prompts/recent_activity.py,sha256=7607MWiGJWY0vPurhVII17LxLZlXY_zmH3xH9LfT6SY,2793
|
|
51
|
-
basic_memory/mcp/prompts/search.py,sha256=Z4eb1HFb46p9Ezz9nDLsqedePDQtxWafmpcnR_NZUtA,6282
|
|
52
|
-
basic_memory/mcp/prompts/utils.py,sha256=u_bG8DMtMMERvGPJfA3gbl5VAs0xmkuK8ZJBkY8xyV8,5371
|
|
53
|
-
basic_memory/mcp/resources/ai_assistant_guide.md,sha256=qnYWDkYlb-JmKuOoZ5llmRas_t4dWDXB_i8LE277Lgs,14777
|
|
54
|
-
basic_memory/mcp/tools/__init__.py,sha256=prvB6M150ba8WT-v-tmo4Yfu4JG-0yCi6nfK4SsL7XI,882
|
|
55
|
-
basic_memory/mcp/tools/build_context.py,sha256=8xYRPpeYCEU8F9Dv_ctvbunZ8ciKwmFu9i8Pdv5vYfI,2891
|
|
56
|
-
basic_memory/mcp/tools/canvas.py,sha256=fHC90eshnSSmROTBV-tBB-FSuXSpYVj_BcDrc96pWi0,2993
|
|
57
|
-
basic_memory/mcp/tools/delete_note.py,sha256=mnrgOv-D7f6nsgZIAK0Wvyn0dbkwCg8adW_xJd7jwc0,829
|
|
58
|
-
basic_memory/mcp/tools/project_info.py,sha256=pyoHpOMhjMIvZFku2iEIpXc2XDtbnNeb-OMrJlYR9LU,1710
|
|
59
|
-
basic_memory/mcp/tools/read_content.py,sha256=PKnvLzNmHfzoIxRKXNaYW5P5q0d1azVwG9juPXPYeQo,8148
|
|
60
|
-
basic_memory/mcp/tools/read_note.py,sha256=e9un3pKPiIgUzY5x-aFYxBkgQMDwrLAYMMqmDzgq0FQ,6451
|
|
61
|
-
basic_memory/mcp/tools/recent_activity.py,sha256=S0LgIk9RaeYzIsi2FIHs0KK7R1K-LJy3QaSokGlY9ew,3501
|
|
62
|
-
basic_memory/mcp/tools/search.py,sha256=TU9Q89rv9lCUmAWjxcc-J_jFQE8CAQM0lM_b-J8VLRc,3786
|
|
63
|
-
basic_memory/mcp/tools/utils.py,sha256=tOWklfSlDcoAJCRBmxkCVwkTY_TDBa5vOGxzU8J5eiQ,13636
|
|
64
|
-
basic_memory/mcp/tools/write_note.py,sha256=d7vb8vqwLmDJfSOYV_ZWJlbJD9tZyKvLlb7LTMgPXSM,4990
|
|
65
|
-
basic_memory/models/__init__.py,sha256=Bf0xXV_ryndogvZDiVM_Wb6iV2fHUxYNGMZNWNcZi0s,307
|
|
66
|
-
basic_memory/models/base.py,sha256=4hAXJ8CE1RnjKhb23lPd-QM7G_FXIdTowMJ9bRixspU,225
|
|
67
|
-
basic_memory/models/knowledge.py,sha256=lbKd8VOOVPqXtIhNMY30bIokoQutFjLpHwLD5At90MY,6644
|
|
68
|
-
basic_memory/models/search.py,sha256=YnF2YnP6NUFf7SSy9xvkY055MlfkBXJuxLoOhCTvB2Q,1244
|
|
69
|
-
basic_memory/repository/__init__.py,sha256=TnscLXARq2iOgQZFvQoT9X1Bn9SB_7s1xw2fOqRs3Jg,252
|
|
70
|
-
basic_memory/repository/entity_repository.py,sha256=VLKlQ97-_HhSqc-st_YToWUNE4pJIcKEOcGDxC25q1k,3575
|
|
71
|
-
basic_memory/repository/observation_repository.py,sha256=BOcy4wARqCXu-thYyt7mPxt2A2C8TW0le3s_X9wrK6I,1701
|
|
72
|
-
basic_memory/repository/project_info_repository.py,sha256=nHWzs0WBQ366WfzIYZgnAfU6tyQ_8slEszWNlDSeIlo,336
|
|
73
|
-
basic_memory/repository/relation_repository.py,sha256=DwpTcn9z_1sZQcyMOUABz1k1VSwo_AU63x2zR7aerTk,2933
|
|
74
|
-
basic_memory/repository/repository.py,sha256=X03U6FA3tpQ8FoULL7J7GByUeArSc2Ajb5GIJjZ8HBA,11934
|
|
75
|
-
basic_memory/repository/search_repository.py,sha256=z6oX6wCLo2JaW2hawtgiyxmTsboKTjuO7cgXsFsQhmA,11607
|
|
76
|
-
basic_memory/schemas/__init__.py,sha256=KHzF2lZhYXRsH2g6tV5Oivlk1EHFfrlbKuiRllqnBzs,1570
|
|
77
|
-
basic_memory/schemas/base.py,sha256=dwnaI5fJXsdp81mdH0ZpmJ-WICY-0M7ZPWeW5OUgBG8,5685
|
|
78
|
-
basic_memory/schemas/delete.py,sha256=UAR2JK99WMj3gP-yoGWlHD3eZEkvlTSRf8QoYIE-Wfw,1180
|
|
79
|
-
basic_memory/schemas/memory.py,sha256=qqQm89nZQKtrhquHlRnR6LaSWynPi4MgtcMcqvGH5zg,3136
|
|
80
|
-
basic_memory/schemas/project_info.py,sha256=qsZfafp8bn2oqCizX_CVwJZS4HE79kOmaNiNK9C_9_w,3380
|
|
81
|
-
basic_memory/schemas/request.py,sha256=58r9mPGc4Am9rR_zGzo-yqXcsrl5I6n3M5LjGK5gFFk,1626
|
|
82
|
-
basic_memory/schemas/response.py,sha256=lVYR31DTtSeFRddGWX_wQWnQgyiwX0LEpNJ4f4lKpTM,6440
|
|
83
|
-
basic_memory/schemas/search.py,sha256=21GKEQEM3lebJfaTP_gz6DZR4tusx6AeR2E13LtjOvs,3650
|
|
84
|
-
basic_memory/services/__init__.py,sha256=oop6SKmzV4_NAYt9otGnupLGVCCKIVgxEcdRQWwh25I,197
|
|
85
|
-
basic_memory/services/context_service.py,sha256=vUo4j-_UDDlpL_PxoNTqmG5kZ2m7UfPyIz6FY3SCU7o,9715
|
|
86
|
-
basic_memory/services/entity_service.py,sha256=lCdqRnAkaolt_pr48lFxRXAj2YRS-nasJTkepBf3zlU,12915
|
|
87
|
-
basic_memory/services/exceptions.py,sha256=VGlCLd4UD2w5NWKqC7QpG4jOM_hA7jKRRM-MqvEVMNk,288
|
|
88
|
-
basic_memory/services/file_service.py,sha256=egoJnhoHBUX_wepjkLyyc6qZkPfOexlj8p0HRvtdxWw,9940
|
|
89
|
-
basic_memory/services/initialization.py,sha256=T8KPFpFzeURORPjvfhvHE7Vnmx_TXUUGumBCEEiCJaM,4787
|
|
90
|
-
basic_memory/services/link_resolver.py,sha256=3I3wp5HHpe17DNHhn1IG3_yWWHYtEZKRNL7I2j_AHos,3599
|
|
91
|
-
basic_memory/services/search_service.py,sha256=1K1YuWFVreKjn6LkbOpl-zCmXYjqOQS1qB-yvkwu-zc,9817
|
|
92
|
-
basic_memory/services/service.py,sha256=V-d_8gOV07zGIQDpL-Ksqs3ZN9l3qf3HZOK1f_YNTag,336
|
|
93
|
-
basic_memory/sync/__init__.py,sha256=CVHguYH457h2u2xoM8KvOilJC71XJlZ-qUh8lHcjYj4,156
|
|
94
|
-
basic_memory/sync/sync_service.py,sha256=ZIgaukAsS8PRf5FBPYGT2lVdn--YuGLd8AJShA79IYk,19602
|
|
95
|
-
basic_memory/sync/watch_service.py,sha256=ipkW9zK1MhisvdHambB9sesB6vNm0OapMZZM7w0GmsQ,14338
|
|
96
|
-
basic_memory-0.12.2.dist-info/METADATA,sha256=An_KcV3Ns11AxyUjuKCTdRCjUSA-KFTyw4D4eubnJi4,14992
|
|
97
|
-
basic_memory-0.12.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
98
|
-
basic_memory-0.12.2.dist-info/entry_points.txt,sha256=wvE2mRF6-Pg4weIYcfQ-86NOLZD4WJg7F7TIsRVFLb8,90
|
|
99
|
-
basic_memory-0.12.2.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
|
100
|
-
basic_memory-0.12.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|