sessionwiki 2.0.0__tar.gz
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.
- sessionwiki-2.0.0/LICENSE +22 -0
- sessionwiki-2.0.0/NOTICE +14 -0
- sessionwiki-2.0.0/PKG-INFO +303 -0
- sessionwiki-2.0.0/README.md +244 -0
- sessionwiki-2.0.0/pyproject.toml +143 -0
- sessionwiki-2.0.0/sessionwiki/__init__.py +74 -0
- sessionwiki-2.0.0/sessionwiki/__main__.py +6 -0
- sessionwiki-2.0.0/sessionwiki/_frontmatter.py +118 -0
- sessionwiki-2.0.0/sessionwiki/_system_pages.py +44 -0
- sessionwiki-2.0.0/sessionwiki/adapter_config.py +124 -0
- sessionwiki-2.0.0/sessionwiki/adapters/__init__.py +134 -0
- sessionwiki-2.0.0/sessionwiki/adapters/base.py +191 -0
- sessionwiki-2.0.0/sessionwiki/adapters/claude_code.py +77 -0
- sessionwiki-2.0.0/sessionwiki/adapters/codex_cli.py +226 -0
- sessionwiki-2.0.0/sessionwiki/adapters/contrib/__init__.py +1 -0
- sessionwiki-2.0.0/sessionwiki/adapters/contrib/chatgpt.py +252 -0
- sessionwiki-2.0.0/sessionwiki/adapters/contrib/copilot_chat.py +121 -0
- sessionwiki-2.0.0/sessionwiki/adapters/contrib/copilot_cli.py +115 -0
- sessionwiki-2.0.0/sessionwiki/adapters/contrib/cursor.py +100 -0
- sessionwiki-2.0.0/sessionwiki/adapters/contrib/gemini_cli.py +74 -0
- sessionwiki-2.0.0/sessionwiki/adapters/contrib/obsidian.py +121 -0
- sessionwiki-2.0.0/sessionwiki/adapters/opencode.py +169 -0
- sessionwiki-2.0.0/sessionwiki/adapters/status.py +58 -0
- sessionwiki-2.0.0/sessionwiki/adapters/zcode.py +45 -0
- sessionwiki-2.0.0/sessionwiki/audit.py +174 -0
- sessionwiki-2.0.0/sessionwiki/backlinks.py +224 -0
- sessionwiki-2.0.0/sessionwiki/build.py +2786 -0
- sessionwiki-2.0.0/sessionwiki/cache.py +401 -0
- sessionwiki-2.0.0/sessionwiki/candidates.py +309 -0
- sessionwiki-2.0.0/sessionwiki/categories.py +158 -0
- sessionwiki-2.0.0/sessionwiki/changelog_timeline.py +422 -0
- sessionwiki-2.0.0/sessionwiki/cli.py +1687 -0
- sessionwiki-2.0.0/sessionwiki/compare.py +404 -0
- sessionwiki-2.0.0/sessionwiki/completion.py +191 -0
- sessionwiki-2.0.0/sessionwiki/confidence.py +179 -0
- sessionwiki-2.0.0/sessionwiki/config.py +74 -0
- sessionwiki-2.0.0/sessionwiki/config_schedule.py +77 -0
- sessionwiki-2.0.0/sessionwiki/context_md.py +182 -0
- sessionwiki-2.0.0/sessionwiki/convert.py +1746 -0
- sessionwiki-2.0.0/sessionwiki/docs_pages.py +725 -0
- sessionwiki-2.0.0/sessionwiki/doctor.py +113 -0
- sessionwiki-2.0.0/sessionwiki/exporters.py +680 -0
- sessionwiki-2.0.0/sessionwiki/freshness.py +153 -0
- sessionwiki-2.0.0/sessionwiki/graph.py +1058 -0
- sessionwiki-2.0.0/sessionwiki/graphify_bridge.py +509 -0
- sessionwiki-2.0.0/sessionwiki/ingest_queue.py +101 -0
- sessionwiki-2.0.0/sessionwiki/lifecycle.py +167 -0
- sessionwiki-2.0.0/sessionwiki/link_checker.py +148 -0
- sessionwiki-2.0.0/sessionwiki/lint/__init__.py +170 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/__init__.py +69 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/_helpers.py +119 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/claim_verification.py +44 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/content_freshness.py +41 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/contradiction_detection.py +45 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/duplicate_detection.py +164 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/entity_consistency.py +29 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/frontmatter_completeness.py +46 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/frontmatter_count_consistency.py +61 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/frontmatter_validity.py +71 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/index_sync.py +68 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/link_integrity.py +34 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/orphan_detection.py +43 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/stale_candidates.py +59 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/stale_reference_detection.py +42 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/summary_accuracy.py +36 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/tags_topics_convention.py +58 -0
- sessionwiki-2.0.0/sessionwiki/lint/rules/tools_consistency.py +65 -0
- sessionwiki-2.0.0/sessionwiki/lock.py +126 -0
- sessionwiki-2.0.0/sessionwiki/log_reader.py +129 -0
- sessionwiki-2.0.0/sessionwiki/manifest.py +132 -0
- sessionwiki-2.0.0/sessionwiki/mcp/__init__.py +29 -0
- sessionwiki-2.0.0/sessionwiki/mcp/__main__.py +5 -0
- sessionwiki-2.0.0/sessionwiki/mcp/server.py +1061 -0
- sessionwiki-2.0.0/sessionwiki/models_page.py +291 -0
- sessionwiki-2.0.0/sessionwiki/obsidian_output.py +208 -0
- sessionwiki-2.0.0/sessionwiki/opencode/__init__.py +1 -0
- sessionwiki-2.0.0/sessionwiki/opencode/autosync.py +102 -0
- sessionwiki-2.0.0/sessionwiki/opencode/export.py +419 -0
- sessionwiki-2.0.0/sessionwiki/opencode/install.py +152 -0
- sessionwiki-2.0.0/sessionwiki/pipeline.py +150 -0
- sessionwiki-2.0.0/sessionwiki/project_topics.py +213 -0
- sessionwiki-2.0.0/sessionwiki/py.typed +0 -0
- sessionwiki-2.0.0/sessionwiki/quarantine.py +273 -0
- sessionwiki-2.0.0/sessionwiki/queue.py +29 -0
- sessionwiki-2.0.0/sessionwiki/references.py +224 -0
- sessionwiki-2.0.0/sessionwiki/render/__init__.py +20 -0
- sessionwiki-2.0.0/sessionwiki/render/css.py +988 -0
- sessionwiki-2.0.0/sessionwiki/render/docs_css.py +463 -0
- sessionwiki-2.0.0/sessionwiki/render/js.py +1337 -0
- sessionwiki-2.0.0/sessionwiki/schema.py +270 -0
- sessionwiki-2.0.0/sessionwiki/search_facets.py +150 -0
- sessionwiki-2.0.0/sessionwiki/search_tree.py +184 -0
- sessionwiki-2.0.0/sessionwiki/serve.py +91 -0
- sessionwiki-2.0.0/sessionwiki/session_export.py +333 -0
- sessionwiki-2.0.0/sessionwiki/skill_installer.py +112 -0
- sessionwiki-2.0.0/sessionwiki/sync/__init__.py +13 -0
- sessionwiki-2.0.0/sessionwiki/sync/status.py +120 -0
- sessionwiki-2.0.0/sessionwiki/synth/__init__.py +14 -0
- sessionwiki-2.0.0/sessionwiki/synth/agent_delegate.py +327 -0
- sessionwiki-2.0.0/sessionwiki/synth/base.py +125 -0
- sessionwiki-2.0.0/sessionwiki/synth/cli_helpers.py +98 -0
- sessionwiki-2.0.0/sessionwiki/synth/estimate.py +146 -0
- sessionwiki-2.0.0/sessionwiki/synth/ollama.py +379 -0
- sessionwiki-2.0.0/sessionwiki/synth/openai_compat.py +325 -0
- sessionwiki-2.0.0/sessionwiki/synth/pipeline.py +1489 -0
- sessionwiki-2.0.0/sessionwiki/tag_utils.py +62 -0
- sessionwiki-2.0.0/sessionwiki/tags.py +359 -0
- sessionwiki-2.0.0/sessionwiki/vault.py +347 -0
- sessionwiki-2.0.0/sessionwiki/viz_heatmap.py +305 -0
- sessionwiki-2.0.0/sessionwiki/viz_tokens.py +429 -0
- sessionwiki-2.0.0/sessionwiki/viz_tools.py +241 -0
- sessionwiki-2.0.0/sessionwiki/watch.py +154 -0
- sessionwiki-2.0.0/sessionwiki/zcode/__init__.py +43 -0
- sessionwiki-2.0.0/sessionwiki/zcode/autosync.py +150 -0
- sessionwiki-2.0.0/sessionwiki/zcode/export.py +568 -0
- sessionwiki-2.0.0/sessionwiki/zcode/install.py +386 -0
- sessionwiki-2.0.0/sessionwiki.egg-info/PKG-INFO +303 -0
- sessionwiki-2.0.0/sessionwiki.egg-info/SOURCES.txt +279 -0
- sessionwiki-2.0.0/sessionwiki.egg-info/dependency_links.txt +1 -0
- sessionwiki-2.0.0/sessionwiki.egg-info/entry_points.txt +2 -0
- sessionwiki-2.0.0/sessionwiki.egg-info/requires.txt +24 -0
- sessionwiki-2.0.0/sessionwiki.egg-info/top_level.txt +1 -0
- sessionwiki-2.0.0/setup.cfg +4 -0
- sessionwiki-2.0.0/tests/test_activity_timeline_label.py +86 -0
- sessionwiki-2.0.0/tests/test_adapter_config.py +158 -0
- sessionwiki-2.0.0/tests/test_adapter_graduation.py +93 -0
- sessionwiki-2.0.0/tests/test_adapter_is_available_unified.py +139 -0
- sessionwiki-2.0.0/tests/test_adapter_tag.py +132 -0
- sessionwiki-2.0.0/tests/test_adapters.py +95 -0
- sessionwiki-2.0.0/tests/test_agent_badges.py +49 -0
- sessionwiki-2.0.0/tests/test_agent_delegate.py +324 -0
- sessionwiki-2.0.0/tests/test_ai_suggested_tags.py +312 -0
- sessionwiki-2.0.0/tests/test_audit.py +65 -0
- sessionwiki-2.0.0/tests/test_backlinks.py +354 -0
- sessionwiki-2.0.0/tests/test_brand_system_doc.py +170 -0
- sessionwiki-2.0.0/tests/test_cache.py +503 -0
- sessionwiki-2.0.0/tests/test_candidates.py +365 -0
- sessionwiki-2.0.0/tests/test_categories.py +226 -0
- sessionwiki-2.0.0/tests/test_changelog_page.py +71 -0
- sessionwiki-2.0.0/tests/test_changelog_timeline.py +320 -0
- sessionwiki-2.0.0/tests/test_chatgpt_adapter.py +308 -0
- sessionwiki-2.0.0/tests/test_chip_contrast.py +97 -0
- sessionwiki-2.0.0/tests/test_ci_workflow.py +100 -0
- sessionwiki-2.0.0/tests/test_cli.py +47 -0
- sessionwiki-2.0.0/tests/test_cli_doc_parity.py +57 -0
- sessionwiki-2.0.0/tests/test_cli_observability.py +345 -0
- sessionwiki-2.0.0/tests/test_cmd_all_parser.py +229 -0
- sessionwiki-2.0.0/tests/test_cmd_graph_fallback.py +72 -0
- sessionwiki-2.0.0/tests/test_collision_retry.py +396 -0
- sessionwiki-2.0.0/tests/test_compare.py +292 -0
- sessionwiki-2.0.0/tests/test_completion.py +133 -0
- sessionwiki-2.0.0/tests/test_confidence.py +186 -0
- sessionwiki-2.0.0/tests/test_config_layering.py +81 -0
- sessionwiki-2.0.0/tests/test_context_md.py +196 -0
- sessionwiki-2.0.0/tests/test_convert.py +509 -0
- sessionwiki-2.0.0/tests/test_convert_no_op_perf.py +143 -0
- sessionwiki-2.0.0/tests/test_convert_state_and_coerce.py +336 -0
- sessionwiki-2.0.0/tests/test_converter_metrics.py +334 -0
- sessionwiki-2.0.0/tests/test_copilot_adapters.py +473 -0
- sessionwiki-2.0.0/tests/test_cross_platform_paths.py +167 -0
- sessionwiki-2.0.0/tests/test_css_dark_code_and_sticky_header.py +28 -0
- sessionwiki-2.0.0/tests/test_dashboard.py +85 -0
- sessionwiki-2.0.0/tests/test_default_redaction.py +171 -0
- sessionwiki-2.0.0/tests/test_docker.py +203 -0
- sessionwiki-2.0.0/tests/test_docs_structure.py +358 -0
- sessionwiki-2.0.0/tests/test_doctor.py +47 -0
- sessionwiki-2.0.0/tests/test_edge_cases.py +387 -0
- sessionwiki-2.0.0/tests/test_edge_cases_unit.py +433 -0
- sessionwiki-2.0.0/tests/test_editorconfig_lychee.py +150 -0
- sessionwiki-2.0.0/tests/test_filter_slug_label.py +75 -0
- sessionwiki-2.0.0/tests/test_flat_naming.py +140 -0
- sessionwiki-2.0.0/tests/test_force_counters.py +291 -0
- sessionwiki-2.0.0/tests/test_freshness.py +269 -0
- sessionwiki-2.0.0/tests/test_frontmatter_consolidation.py +77 -0
- sessionwiki-2.0.0/tests/test_frontmatter_shared.py +283 -0
- sessionwiki-2.0.0/tests/test_gap_fixes.py +201 -0
- sessionwiki-2.0.0/tests/test_github_link_rewriter.py +170 -0
- sessionwiki-2.0.0/tests/test_graph_context_menu.py +227 -0
- sessionwiki-2.0.0/tests/test_graph_session.py +221 -0
- sessionwiki-2.0.0/tests/test_graph_site_url.py +211 -0
- sessionwiki-2.0.0/tests/test_graph_theme_sync.py +84 -0
- sessionwiki-2.0.0/tests/test_graph_top_nav.py +107 -0
- sessionwiki-2.0.0/tests/test_graph_viewer.py +334 -0
- sessionwiki-2.0.0/tests/test_graphify_bridge.py +248 -0
- sessionwiki-2.0.0/tests/test_healer_comment.py +186 -0
- sessionwiki-2.0.0/tests/test_highlightjs.py +316 -0
- sessionwiki-2.0.0/tests/test_home_card_date_range.py +96 -0
- sessionwiki-2.0.0/tests/test_homebrew_tap.py +209 -0
- sessionwiki-2.0.0/tests/test_ignore.py +91 -0
- sessionwiki-2.0.0/tests/test_ingest_queue_shim.py +56 -0
- sessionwiki-2.0.0/tests/test_is_subagent.py +116 -0
- sessionwiki-2.0.0/tests/test_issue_383_pipeline.py +116 -0
- sessionwiki-2.0.0/tests/test_lifecycle.py +153 -0
- sessionwiki-2.0.0/tests/test_light_mode_polish.py +75 -0
- sessionwiki-2.0.0/tests/test_lint_perf.py +302 -0
- sessionwiki-2.0.0/tests/test_lint_rules.py +825 -0
- sessionwiki-2.0.0/tests/test_lint_windows_paths.py +72 -0
- sessionwiki-2.0.0/tests/test_log_reader.py +108 -0
- sessionwiki-2.0.0/tests/test_mcp_byte_cap.py +115 -0
- sessionwiki-2.0.0/tests/test_mcp_enhanced.py +268 -0
- sessionwiki-2.0.0/tests/test_mcp_protocol.py +203 -0
- sessionwiki-2.0.0/tests/test_mcp_read_page_allowlist.py +109 -0
- sessionwiki-2.0.0/tests/test_mcp_safety.py +413 -0
- sessionwiki-2.0.0/tests/test_md_cache.py +233 -0
- sessionwiki-2.0.0/tests/test_mobile_hamburger_nav.py +109 -0
- sessionwiki-2.0.0/tests/test_models_page.py +194 -0
- sessionwiki-2.0.0/tests/test_no_phantom_adapters.py +71 -0
- sessionwiki-2.0.0/tests/test_obsidian_docs.py +52 -0
- sessionwiki-2.0.0/tests/test_obsidian_templates.py +119 -0
- sessionwiki-2.0.0/tests/test_ollama_backend.py +465 -0
- sessionwiki-2.0.0/tests/test_openai_compat.py +106 -0
- sessionwiki-2.0.0/tests/test_opencode_adapter.py +245 -0
- sessionwiki-2.0.0/tests/test_opencode_autosync.py +108 -0
- sessionwiki-2.0.0/tests/test_opencode_cli.py +115 -0
- sessionwiki-2.0.0/tests/test_opencode_export.py +523 -0
- sessionwiki-2.0.0/tests/test_opencode_install.py +159 -0
- sessionwiki-2.0.0/tests/test_palette_dialog_a11y.py +134 -0
- sessionwiki-2.0.0/tests/test_palette_indexes.py +130 -0
- sessionwiki-2.0.0/tests/test_parse_jsonl_oserror.py +91 -0
- sessionwiki-2.0.0/tests/test_path_traversal.py +159 -0
- sessionwiki-2.0.0/tests/test_post_review_remediation.py +161 -0
- sessionwiki-2.0.0/tests/test_pr_template.py +127 -0
- sessionwiki-2.0.0/tests/test_project_stubs.py +439 -0
- sessionwiki-2.0.0/tests/test_project_topics.py +237 -0
- sessionwiki-2.0.0/tests/test_quarantine.py +302 -0
- sessionwiki-2.0.0/tests/test_queue.py +109 -0
- sessionwiki-2.0.0/tests/test_raw_immutability.py +168 -0
- sessionwiki-2.0.0/tests/test_reader_api_doc.py +212 -0
- sessionwiki-2.0.0/tests/test_readme_badges.py +225 -0
- sessionwiki-2.0.0/tests/test_reference_coverage.py +209 -0
- sessionwiki-2.0.0/tests/test_references.py +390 -0
- sessionwiki-2.0.0/tests/test_release_pipeline.py +157 -0
- sessionwiki-2.0.0/tests/test_render_is_subagent.py +68 -0
- sessionwiki-2.0.0/tests/test_render_split.py +148 -0
- sessionwiki-2.0.0/tests/test_schedule_config.py +51 -0
- sessionwiki-2.0.0/tests/test_schema.py +157 -0
- sessionwiki-2.0.0/tests/test_schema_entity_types.py +46 -0
- sessionwiki-2.0.0/tests/test_search_facets.py +260 -0
- sessionwiki-2.0.0/tests/test_search_tree.py +317 -0
- sessionwiki-2.0.0/tests/test_serve_smoke.py +125 -0
- sessionwiki-2.0.0/tests/test_session_description.py +139 -0
- sessionwiki-2.0.0/tests/test_session_export.py +103 -0
- sessionwiki-2.0.0/tests/test_session_ref_stripper.py +202 -0
- sessionwiki-2.0.0/tests/test_sessions_index_no_date_dup.py +117 -0
- sessionwiki-2.0.0/tests/test_setup_guide_doc.py +95 -0
- sessionwiki-2.0.0/tests/test_setup_scripts.py +56 -0
- sessionwiki-2.0.0/tests/test_skill_installer.py +157 -0
- sessionwiki-2.0.0/tests/test_slash_cli_parity.py +190 -0
- sessionwiki-2.0.0/tests/test_slug_fallback.py +188 -0
- sessionwiki-2.0.0/tests/test_state_locking.py +106 -0
- sessionwiki-2.0.0/tests/test_subprocess_paths.py +197 -0
- sessionwiki-2.0.0/tests/test_synth_coalesce.py +353 -0
- sessionwiki-2.0.0/tests/test_synth_config_loading.py +63 -0
- sessionwiki-2.0.0/tests/test_synth_pipeline.py +690 -0
- sessionwiki-2.0.0/tests/test_synthesize_cli_pending.py +236 -0
- sessionwiki-2.0.0/tests/test_synthesize_estimate.py +329 -0
- sessionwiki-2.0.0/tests/test_synthesize_overview_safety.py +169 -0
- sessionwiki-2.0.0/tests/test_tag_utils.py +132 -0
- sessionwiki-2.0.0/tests/test_tags.py +498 -0
- sessionwiki-2.0.0/tests/test_theme_pre_paint.py +75 -0
- sessionwiki-2.0.0/tests/test_tutorial_ux.py +227 -0
- sessionwiki-2.0.0/tests/test_two_way_editing.py +204 -0
- sessionwiki-2.0.0/tests/test_ui_a11y_bundle_473.py +134 -0
- sessionwiki-2.0.0/tests/test_username_autodetect.py +108 -0
- sessionwiki-2.0.0/tests/test_username_redact_paths.py +105 -0
- sessionwiki-2.0.0/tests/test_v02.py +203 -0
- sessionwiki-2.0.0/tests/test_v03.py +79 -0
- sessionwiki-2.0.0/tests/test_v04.py +307 -0
- sessionwiki-2.0.0/tests/test_v1378_remediation.py +204 -0
- sessionwiki-2.0.0/tests/test_vault.py +620 -0
- sessionwiki-2.0.0/tests/test_vault_sync_routing.py +180 -0
- sessionwiki-2.0.0/tests/test_viewport_meta.py +50 -0
- sessionwiki-2.0.0/tests/test_viz_heatmap.py +270 -0
- sessionwiki-2.0.0/tests/test_viz_tokens.py +303 -0
- sessionwiki-2.0.0/tests/test_viz_tools.py +215 -0
- sessionwiki-2.0.0/tests/test_wcag_contrast.py +198 -0
- sessionwiki-2.0.0/tests/test_zcode_adapter.py +165 -0
- sessionwiki-2.0.0/tests/test_zcode_autosync.py +134 -0
- sessionwiki-2.0.0/tests/test_zcode_cli.py +178 -0
- sessionwiki-2.0.0/tests/test_zcode_export.py +558 -0
- sessionwiki-2.0.0/tests/test_zcode_install.py +227 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Pratiyush (original llmwiki)
|
|
4
|
+
Copyright (c) 2026 Igor Lashkevich (sessionwiki)
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
sessionwiki-2.0.0/NOTICE
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
sessionwiki
|
|
2
|
+
Copyright (c) 2026 Igor Lashkevich
|
|
3
|
+
|
|
4
|
+
This product is based on llmwiki by Pratiyush
|
|
5
|
+
https://github.com/Pratiyush/llm-wiki
|
|
6
|
+
Copyright (c) 2026 Pratiyush
|
|
7
|
+
Licensed under the MIT License.
|
|
8
|
+
|
|
9
|
+
sessionwiki started as a fork of llmwiki v1.3.82 (commit b108889) and keeps
|
|
10
|
+
its MIT license. The full upstream history is preserved in this repository.
|
|
11
|
+
See docs/differences-from-llmwiki.md for what sessionwiki adds or changes.
|
|
12
|
+
|
|
13
|
+
The LLM Wiki pattern itself is Andrej Karpathy's idea:
|
|
14
|
+
https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sessionwiki
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: Searchable, interlinked wiki of your AI coding sessions (Claude Code, Codex CLI, Cursor, Gemini CLI, ZCode, OpenCode, Obsidian), with LLM synthesis and MCP access. Based on llmwiki by Pratiyush.
|
|
5
|
+
Author-email: Igor Lashkevich <3133574+necroz@users.noreply.github.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/necroz/sessionwiki
|
|
8
|
+
Project-URL: Documentation, https://github.com/necroz/sessionwiki/tree/master/docs
|
|
9
|
+
Project-URL: Repository, https://github.com/necroz/sessionwiki
|
|
10
|
+
Project-URL: Issues, https://github.com/necroz/sessionwiki/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/necroz/sessionwiki/blob/master/CHANGELOG.md
|
|
12
|
+
Project-URL: Releases, https://github.com/necroz/sessionwiki/releases
|
|
13
|
+
Project-URL: Based on (llmwiki), https://github.com/Pratiyush/llm-wiki
|
|
14
|
+
Keywords: sessionwiki,llm-wiki,zcode,opencode,karpathy,knowledge-base,claude-code,codex-cli,cursor,obsidian,session-history,static-site,mcp
|
|
15
|
+
Classifier: Development Status :: 3 - Alpha
|
|
16
|
+
Classifier: Environment :: Console
|
|
17
|
+
Classifier: Intended Audience :: Developers
|
|
18
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
19
|
+
Classifier: Operating System :: MacOS
|
|
20
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
21
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
22
|
+
Classifier: Programming Language :: Python :: 3
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
28
|
+
Classifier: Topic :: Documentation
|
|
29
|
+
Classifier: Topic :: Software Development :: Documentation
|
|
30
|
+
Classifier: Topic :: Text Processing :: Markup :: Markdown
|
|
31
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
32
|
+
Classifier: Framework :: Pytest
|
|
33
|
+
Classifier: Typing :: Typed
|
|
34
|
+
Classifier: Natural Language :: English
|
|
35
|
+
Requires-Python: >=3.9
|
|
36
|
+
Description-Content-Type: text/markdown
|
|
37
|
+
License-File: LICENSE
|
|
38
|
+
License-File: NOTICE
|
|
39
|
+
Requires-Dist: markdown>=3.9
|
|
40
|
+
Provides-Extra: highlight
|
|
41
|
+
Provides-Extra: graph
|
|
42
|
+
Requires-Dist: graphifyy>=0.4.20; extra == "graph"
|
|
43
|
+
Requires-Dist: matplotlib>=3.8; extra == "graph"
|
|
44
|
+
Requires-Dist: scipy>=1.11; extra == "graph"
|
|
45
|
+
Provides-Extra: dev
|
|
46
|
+
Requires-Dist: pytest>=8.4.2; extra == "dev"
|
|
47
|
+
Requires-Dist: ruff>=0.15.11; extra == "dev"
|
|
48
|
+
Provides-Extra: e2e
|
|
49
|
+
Requires-Dist: pytest>=8.4.2; extra == "e2e"
|
|
50
|
+
Requires-Dist: pytest-playwright>=0.7.1; extra == "e2e"
|
|
51
|
+
Requires-Dist: pytest-bdd>=8.1.0; extra == "e2e"
|
|
52
|
+
Requires-Dist: pytest-html>=4.2.0; extra == "e2e"
|
|
53
|
+
Requires-Dist: Pillow>=10.0; extra == "e2e"
|
|
54
|
+
Provides-Extra: all
|
|
55
|
+
Requires-Dist: graphifyy>=0.4.20; extra == "all"
|
|
56
|
+
Requires-Dist: matplotlib>=3.8; extra == "all"
|
|
57
|
+
Requires-Dist: scipy>=1.11; extra == "all"
|
|
58
|
+
Dynamic: license-file
|
|
59
|
+
|
|
60
|
+
# sessionwiki
|
|
61
|
+
|
|
62
|
+
> **Your AI coding sessions, compiled into a searchable, interlinked wiki** — from Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot, ZCode and OpenCode. Local-first, with LLM synthesis, a session graph, and an MCP server so your agents can look up what you already solved.
|
|
63
|
+
|
|
64
|
+
[](https://github.com/necroz/sessionwiki/blob/master/LICENSE)
|
|
65
|
+
[](https://www.python.org/)
|
|
66
|
+
[](https://github.com/necroz/sessionwiki/blob/master/CHANGELOG.md)
|
|
67
|
+
[](https://github.com/necroz/sessionwiki/tree/master/tests)
|
|
68
|
+
[](https://github.com/necroz/sessionwiki/actions/workflows/ci.yml)
|
|
69
|
+
[](https://github.com/necroz/sessionwiki/actions/workflows/link-check.yml)
|
|
70
|
+
[](https://github.com/necroz/sessionwiki/actions/workflows/wiki-checks.yml)
|
|
71
|
+
[](https://github.com/necroz/sessionwiki/pkgs/container/sessionwiki)
|
|
72
|
+
|
|
73
|
+
### 👉 [Live demo: necroz.github.io/sessionwiki](https://necroz.github.io/sessionwiki/)
|
|
74
|
+
|
|
75
|
+
27 synthetic sessions across five projects and seven agents (Aug–Nov 2026) — no personal data. Rebuilt from [`examples/demo-sessions/`](https://github.com/necroz/sessionwiki/tree/master/examples/demo-sessions) on every push to `master`.
|
|
76
|
+
|
|
77
|
+

|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Why
|
|
82
|
+
|
|
83
|
+
Every agent you work with writes a full transcript to disk: the plan, the dead ends, the fix, the reasoning behind it. Hundreds of them, in five different formats, and you never look at them again.
|
|
84
|
+
|
|
85
|
+
sessionwiki turns that history into a knowledge base:
|
|
86
|
+
|
|
87
|
+
- **One place for every agent.** Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot, ZCode and OpenCode sessions land in the same wiki, tagged by agent, project, model and date.
|
|
88
|
+
- **Always current.** Hooks, an OpenCode plugin and nightly timers keep it in sync without you running anything.
|
|
89
|
+
- **Readable.** LLM synthesis writes a summary page per session; low-signal sessions are folded into cluster pages instead of cluttering the wiki.
|
|
90
|
+
- **Usable by your agents.** A built-in MCP server lets Claude Code, ZCode or any MCP client search past decisions before redoing them.
|
|
91
|
+
- **Yours.** Everything runs locally; transcripts are redacted on the way in, and `sessionwiki audit` checks the output before you publish anything.
|
|
92
|
+
|
|
93
|
+
## Highlights
|
|
94
|
+
|
|
95
|
+
| | |
|
|
96
|
+
|---|---|
|
|
97
|
+
| **8 sources** | Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot Chat / CLI, **ZCode**, **OpenCode**, Obsidian — each with its own agent badge |
|
|
98
|
+
| **Autosync** | Claude Code `Stop` hook, ZCode `Stop` hook + nightly systemd / launchd / Task Scheduler job, OpenCode `session.idle` plugin |
|
|
99
|
+
| **Synthesis backends** | Ollama, **any OpenAI-compatible server** (vLLM, SGLang, LM Studio, LiteLLM, hosted), agent-delegate, offline dummy |
|
|
100
|
+
| **Signal over noise** | Low-signal session coalescing, wikilink cleanup, concurrency control, cost `--estimate` |
|
|
101
|
+
| **Static site** | 365-day heatmap, token and cache stats, filterable sessions table, session pages with highlighted code, project pages with topics, session ↔ project graph, ⌘K search, dark mode |
|
|
102
|
+
| **MCP server** | 12 tools: query, search, read, list sources, lint, sync, exports, dashboard… |
|
|
103
|
+
| **AI exports** | `llms.txt`, `llms-full.txt`, JSON-LD graph, per-page `.txt` / `.json`, sitemap, RSS |
|
|
104
|
+
| **Safe by default** | Redaction of usernames and 17 secret patterns, read-only database exports, OS file locks and atomic state writes, `doctor` and `audit` |
|
|
105
|
+
|
|
106
|
+
## Screenshots
|
|
107
|
+
|
|
108
|
+
All screenshots come from the [live demo](https://necroz.github.io/sessionwiki/) and are regenerated with [`scripts/regen_docs_screenshots.py`](https://github.com/necroz/sessionwiki/blob/master/scripts/regen_docs_screenshots.py).
|
|
109
|
+
|
|
110
|
+
**Every session, every agent** — filter by project, model and date; each row carries its agent badge.
|
|
111
|
+
|
|
112
|
+

|
|
113
|
+
|
|
114
|
+
**Session pages** — the summary, the conversation, highlighted code and the tools that ran, plus token and cache usage.
|
|
115
|
+
|
|
116
|
+

|
|
117
|
+
|
|
118
|
+
**Projects** — topics, description, activity and tool usage per project, with freshness badges on the index.
|
|
119
|
+
|
|
120
|
+
|  |  |
|
|
121
|
+
|---|---|
|
|
122
|
+
|
|
123
|
+
**Graph and search** — sessions grouped around their projects; ⌘K searches every page instantly.
|
|
124
|
+
|
|
125
|
+
|  |  |
|
|
126
|
+
|---|---|
|
|
127
|
+
|
|
128
|
+
## Quick start
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
git clone https://github.com/necroz/sessionwiki.git
|
|
132
|
+
cd sessionwiki
|
|
133
|
+
./setup.sh # Windows: setup.bat — creates .venv, detects your agents
|
|
134
|
+
./sync.sh # convert new sessions into raw/
|
|
135
|
+
./build.sh && ./serve.sh # build the site and open http://127.0.0.1:8765
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
`setup` creates a checkout-local `.venv`, installs the package, scaffolds `raw/`, `wiki/`, `site/`, enables the adapters for the agents it finds and runs `sessionwiki doctor`. The wrapper scripts use the venv automatically; for the CLI, activate it (`source .venv/bin/activate`) or call `.venv/bin/sessionwiki`.
|
|
139
|
+
|
|
140
|
+
Prefer pip? Install straight from GitHub (PyPI release coming with v2.0.0):
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
pip install 'sessionwiki @ git+https://github.com/necroz/sessionwiki' # core
|
|
144
|
+
pip install 'sessionwiki[all] @ git+https://github.com/necroz/sessionwiki' # + graph engine, dev, e2e
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
A step-by-step walkthrough with screenshots lives in the [setup guide](https://github.com/necroz/sessionwiki/blob/master/docs/tutorials/setup-guide.md).
|
|
148
|
+
|
|
149
|
+
## Connect your agents
|
|
150
|
+
|
|
151
|
+
**Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot** — read straight from their session folders on `sessionwiki sync`. To sync after every Claude Code reply, add a `Stop` hook to `~/.claude/settings.json`:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"hooks": {
|
|
156
|
+
"Stop": [{ "hooks": [{ "type": "command",
|
|
157
|
+
"command": "cd /path/to/sessionwiki && .venv/bin/python -m sessionwiki sync --no-auto-build >/dev/null 2>&1 &" }] }]
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Parallel hook runs are safe: `sync` and `synthesize` take an OS file lock and write their state atomically.
|
|
163
|
+
|
|
164
|
+
**ZCode** keeps sessions in SQLite. sessionwiki exports them read-only and installs the hook and a nightly job for you:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
sessionwiki zcode install --dry-run # show what will be written
|
|
168
|
+
sessionwiki zcode install # Stop hook + systemd / launchd / Task Scheduler
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**OpenCode** (V2, `opencode.db`) gets a server plugin that runs autosync when a session goes idle:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
sessionwiki opencode install --dry-run
|
|
175
|
+
sessionwiki opencode install # honours $XDG_CONFIG_HOME
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Hook-triggered runs skip instead of queueing when a cycle is already running; scheduled runs wait and catch up. Details: [ZCODE.md](https://github.com/necroz/sessionwiki/blob/master/ZCODE.md), [docs/adapters/opencode.md](https://github.com/necroz/sessionwiki/blob/master/docs/adapters/opencode.md), and `sessionwiki adapters` for the full list.
|
|
179
|
+
|
|
180
|
+
## LLM synthesis
|
|
181
|
+
|
|
182
|
+
`sync` fills `raw/` with redacted transcripts. `synthesize` turns them into wiki pages: a summary per session, project pages, cross-links. Point it at any backend in `config.local.json`:
|
|
183
|
+
|
|
184
|
+
```json
|
|
185
|
+
{
|
|
186
|
+
"synthesis": {
|
|
187
|
+
"backend": "openai",
|
|
188
|
+
"base_url": "http://127.0.0.1:8000/v1",
|
|
189
|
+
"model": "qwen3-coder",
|
|
190
|
+
"max_concurrency": 8,
|
|
191
|
+
"coalesce_low_signal": true
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
sessionwiki synthesize --estimate # what it will cost before you run it
|
|
198
|
+
sessionwiki synthesize # new sessions only; idempotent
|
|
199
|
+
sessionwiki all --with-synth # synthesize → build → graph → export → lint
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Backends: `ollama` (local), `openai` (any OpenAI-compatible `/v1`: vLLM, SGLang, LM Studio, LiteLLM, hosted APIs), `agent-delegate` (let your coding agent write the pages), `dummy` (offline stubs). sessionwiki warns when a non-loopback `base_url` would send transcripts off your machine. See [docs/modes/api/](https://github.com/necroz/sessionwiki/tree/master/docs/modes/api).
|
|
203
|
+
|
|
204
|
+
## Ask your wiki from your agents (MCP)
|
|
205
|
+
|
|
206
|
+
```json
|
|
207
|
+
{
|
|
208
|
+
"mcpServers": {
|
|
209
|
+
"sessionwiki": {
|
|
210
|
+
"command": "/path/to/sessionwiki/.venv/bin/python",
|
|
211
|
+
"args": ["-m", "sessionwiki.mcp"],
|
|
212
|
+
"cwd": "/path/to/sessionwiki"
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Add it to Claude Code, Claude Desktop, ZCode or any MCP client. Tools include `wiki_query`, `wiki_search` (optionally over raw transcripts), `wiki_read_page`, `wiki_list_sources`, `wiki_lint`, `wiki_sync`, `wiki_export`, `wiki_dashboard` and more — 12 in total, stdio transport, no SDK dependency, path-traversal guarded.
|
|
219
|
+
|
|
220
|
+
## CLI reference
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
sessionwiki init # scaffold raw/ wiki/ site/
|
|
224
|
+
sessionwiki sync # export ZCode/OpenCode + convert transcripts to markdown
|
|
225
|
+
sessionwiki synthesize # LLM summaries into wiki/ (--estimate, --coalesce-only, --force)
|
|
226
|
+
sessionwiki build # static site + AI exports
|
|
227
|
+
sessionwiki serve # local server on 127.0.0.1:8765
|
|
228
|
+
sessionwiki all # build → graph → export → lint (add --with-synth)
|
|
229
|
+
sessionwiki query "<question>" # ask the wiki a question from the terminal
|
|
230
|
+
sessionwiki graph # session/project and wikilink graph
|
|
231
|
+
sessionwiki lint # wiki lint rules
|
|
232
|
+
sessionwiki export # llms.txt, JSON-LD, sitemap, RSS, …
|
|
233
|
+
sessionwiki candidates # review candidate pages
|
|
234
|
+
sessionwiki adapters # available adapters and their state
|
|
235
|
+
sessionwiki doctor # check Python, deps, config, agent paths
|
|
236
|
+
sessionwiki audit # scan raw/ wiki/ site/ for usernames and secrets
|
|
237
|
+
sessionwiki zcode # export · autosync · install
|
|
238
|
+
sessionwiki opencode # export · autosync · install
|
|
239
|
+
sessionwiki version
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Every subcommand has `--help`. Full reference: [docs/reference/cli.md](https://github.com/necroz/sessionwiki/blob/master/docs/reference/cli.md).
|
|
243
|
+
|
|
244
|
+
## Configuration
|
|
245
|
+
|
|
246
|
+
Settings are layered; later files win:
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
examples/sessions_config.json → config.json → config.local.json
|
|
250
|
+
(shared defaults) (gitignored) (gitignored, machine-local)
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
Put machine-specific values — synthesis backend and keys, redaction patterns, project roots, adapter toggles — in `config.local.json`. Reference: [docs/configuration-reference.md](https://github.com/necroz/sessionwiki/blob/master/docs/configuration-reference.md). Use [`.llmwikiignore`](https://github.com/necroz/sessionwiki/blob/master/examples/.llmwikiignore) to exclude projects or sessions.
|
|
254
|
+
|
|
255
|
+
## How it works
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
Claude Code · Codex · Cursor · Gemini · Copilot ZCode · OpenCode (SQLite)
|
|
259
|
+
│ JSONL │ read-only export
|
|
260
|
+
└──────────────────────┬─────────────────────────┘
|
|
261
|
+
▼
|
|
262
|
+
sync → raw/sessions/*.md redacted, immutable
|
|
263
|
+
│
|
|
264
|
+
synthesize ▼
|
|
265
|
+
wiki/ sources · projects · entities · concepts
|
|
266
|
+
│
|
|
267
|
+
┌────────────────┼──────────────────┐
|
|
268
|
+
▼ ▼ ▼
|
|
269
|
+
build → site/ MCP server exports (llms.txt, JSON-LD)
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Three layers, following [Karpathy's LLM Wiki pattern](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f): `raw/` is the immutable source of truth, `wiki/` is maintained by the LLM, `site/` is generated. Your `raw/` and `wiki/` are gitignored — your data never enters the repository.
|
|
273
|
+
|
|
274
|
+
## Privacy
|
|
275
|
+
|
|
276
|
+
- Transcripts are redacted on conversion: your username, home paths and 17 kinds of keys and tokens, plus your own patterns.
|
|
277
|
+
- ZCode and OpenCode databases are opened read-only.
|
|
278
|
+
- Nothing leaves your machine unless you configure a remote synthesis backend — and sessionwiki warns when you do.
|
|
279
|
+
- `sessionwiki audit` scans `raw/`, `wiki/` and `site/` before you publish a site.
|
|
280
|
+
|
|
281
|
+
See [docs/privacy.md](https://github.com/necroz/sessionwiki/blob/master/docs/privacy.md) and [SECURITY.md](https://github.com/necroz/sessionwiki/blob/master/SECURITY.md).
|
|
282
|
+
|
|
283
|
+
## Documentation
|
|
284
|
+
|
|
285
|
+
- **[Documentation hub](https://github.com/necroz/sessionwiki/blob/master/docs/index.md)** — start here
|
|
286
|
+
- [Setup guide](https://github.com/necroz/sessionwiki/blob/master/docs/tutorials/setup-guide.md) · [Installation](https://github.com/necroz/sessionwiki/blob/master/docs/tutorials/01-installation.md) · [Use with Claude Code](https://github.com/necroz/sessionwiki/blob/master/docs/tutorials/03-use-with-claude-code.md) · [Windows](https://github.com/necroz/sessionwiki/blob/master/docs/windows-setup.md)
|
|
287
|
+
- [CLI](https://github.com/necroz/sessionwiki/blob/master/docs/reference/cli.md) · [Configuration](https://github.com/necroz/sessionwiki/blob/master/docs/configuration-reference.md) · [Architecture](https://github.com/necroz/sessionwiki/blob/master/docs/architecture.md)
|
|
288
|
+
- [Deploy to GitHub Pages, Docker, Vercel/Netlify](https://github.com/necroz/sessionwiki/tree/master/docs/deploy)
|
|
289
|
+
- [What's different from llmwiki](https://github.com/necroz/sessionwiki/blob/master/docs/differences-from-llmwiki.md) · [Changelog](https://github.com/necroz/sessionwiki/blob/master/CHANGELOG.md)
|
|
290
|
+
|
|
291
|
+
## Based on llmwiki
|
|
292
|
+
|
|
293
|
+
sessionwiki started as a fork of **[llmwiki](https://github.com/Pratiyush/llm-wiki) by [Pratiyush](https://github.com/Pratiyush)** (MIT) at v1.3.82 and keeps its full history. Most of the converter, site, lint and MCP foundations are his work. sessionwiki adds the ZCode and OpenCode sources with autosync, the OpenAI-compatible synthesis backend, session coalescing, locking and atomic state, `doctor` and `audit`, the session graph, and a long list of fixes — see [what's different](https://github.com/necroz/sessionwiki/blob/master/docs/differences-from-llmwiki.md) and [how to migrate](https://github.com/necroz/sessionwiki/blob/master/docs/differences-from-llmwiki.md#migrating-from-llmwiki).
|
|
294
|
+
|
|
295
|
+
Thanks also to [Andrej Karpathy](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) for the LLM Wiki idea, [Python Markdown](https://python-markdown.github.io/), [highlight.js](https://highlightjs.org/) and [vis-network](https://visjs.github.io/vis-network/).
|
|
296
|
+
|
|
297
|
+
## Contributing
|
|
298
|
+
|
|
299
|
+
Read [CONTRIBUTING.md](https://github.com/necroz/sessionwiki/blob/master/CONTRIBUTING.md). Keep PRs to one concern, use `feat:` / `fix:` / `docs:` / `chore:` / `test:` titles, add a CHANGELOG entry for `feat` and `fix`, and never commit real session data. CI must be green.
|
|
300
|
+
|
|
301
|
+
## License
|
|
302
|
+
|
|
303
|
+
[MIT](https://github.com/necroz/sessionwiki/blob/master/LICENSE) © 2026 Igor Lashkevich (sessionwiki) · © 2026 Pratiyush (original llmwiki). See [NOTICE](https://github.com/necroz/sessionwiki/blob/master/NOTICE).
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# sessionwiki
|
|
2
|
+
|
|
3
|
+
> **Your AI coding sessions, compiled into a searchable, interlinked wiki** — from Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot, ZCode and OpenCode. Local-first, with LLM synthesis, a session graph, and an MCP server so your agents can look up what you already solved.
|
|
4
|
+
|
|
5
|
+
[](https://github.com/necroz/sessionwiki/blob/master/LICENSE)
|
|
6
|
+
[](https://www.python.org/)
|
|
7
|
+
[](https://github.com/necroz/sessionwiki/blob/master/CHANGELOG.md)
|
|
8
|
+
[](https://github.com/necroz/sessionwiki/tree/master/tests)
|
|
9
|
+
[](https://github.com/necroz/sessionwiki/actions/workflows/ci.yml)
|
|
10
|
+
[](https://github.com/necroz/sessionwiki/actions/workflows/link-check.yml)
|
|
11
|
+
[](https://github.com/necroz/sessionwiki/actions/workflows/wiki-checks.yml)
|
|
12
|
+
[](https://github.com/necroz/sessionwiki/pkgs/container/sessionwiki)
|
|
13
|
+
|
|
14
|
+
### 👉 [Live demo: necroz.github.io/sessionwiki](https://necroz.github.io/sessionwiki/)
|
|
15
|
+
|
|
16
|
+
27 synthetic sessions across five projects and seven agents (Aug–Nov 2026) — no personal data. Rebuilt from [`examples/demo-sessions/`](https://github.com/necroz/sessionwiki/tree/master/examples/demo-sessions) on every push to `master`.
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Why
|
|
23
|
+
|
|
24
|
+
Every agent you work with writes a full transcript to disk: the plan, the dead ends, the fix, the reasoning behind it. Hundreds of them, in five different formats, and you never look at them again.
|
|
25
|
+
|
|
26
|
+
sessionwiki turns that history into a knowledge base:
|
|
27
|
+
|
|
28
|
+
- **One place for every agent.** Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot, ZCode and OpenCode sessions land in the same wiki, tagged by agent, project, model and date.
|
|
29
|
+
- **Always current.** Hooks, an OpenCode plugin and nightly timers keep it in sync without you running anything.
|
|
30
|
+
- **Readable.** LLM synthesis writes a summary page per session; low-signal sessions are folded into cluster pages instead of cluttering the wiki.
|
|
31
|
+
- **Usable by your agents.** A built-in MCP server lets Claude Code, ZCode or any MCP client search past decisions before redoing them.
|
|
32
|
+
- **Yours.** Everything runs locally; transcripts are redacted on the way in, and `sessionwiki audit` checks the output before you publish anything.
|
|
33
|
+
|
|
34
|
+
## Highlights
|
|
35
|
+
|
|
36
|
+
| | |
|
|
37
|
+
|---|---|
|
|
38
|
+
| **8 sources** | Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot Chat / CLI, **ZCode**, **OpenCode**, Obsidian — each with its own agent badge |
|
|
39
|
+
| **Autosync** | Claude Code `Stop` hook, ZCode `Stop` hook + nightly systemd / launchd / Task Scheduler job, OpenCode `session.idle` plugin |
|
|
40
|
+
| **Synthesis backends** | Ollama, **any OpenAI-compatible server** (vLLM, SGLang, LM Studio, LiteLLM, hosted), agent-delegate, offline dummy |
|
|
41
|
+
| **Signal over noise** | Low-signal session coalescing, wikilink cleanup, concurrency control, cost `--estimate` |
|
|
42
|
+
| **Static site** | 365-day heatmap, token and cache stats, filterable sessions table, session pages with highlighted code, project pages with topics, session ↔ project graph, ⌘K search, dark mode |
|
|
43
|
+
| **MCP server** | 12 tools: query, search, read, list sources, lint, sync, exports, dashboard… |
|
|
44
|
+
| **AI exports** | `llms.txt`, `llms-full.txt`, JSON-LD graph, per-page `.txt` / `.json`, sitemap, RSS |
|
|
45
|
+
| **Safe by default** | Redaction of usernames and 17 secret patterns, read-only database exports, OS file locks and atomic state writes, `doctor` and `audit` |
|
|
46
|
+
|
|
47
|
+
## Screenshots
|
|
48
|
+
|
|
49
|
+
All screenshots come from the [live demo](https://necroz.github.io/sessionwiki/) and are regenerated with [`scripts/regen_docs_screenshots.py`](https://github.com/necroz/sessionwiki/blob/master/scripts/regen_docs_screenshots.py).
|
|
50
|
+
|
|
51
|
+
**Every session, every agent** — filter by project, model and date; each row carries its agent badge.
|
|
52
|
+
|
|
53
|
+

|
|
54
|
+
|
|
55
|
+
**Session pages** — the summary, the conversation, highlighted code and the tools that ran, plus token and cache usage.
|
|
56
|
+
|
|
57
|
+

|
|
58
|
+
|
|
59
|
+
**Projects** — topics, description, activity and tool usage per project, with freshness badges on the index.
|
|
60
|
+
|
|
61
|
+
|  |  |
|
|
62
|
+
|---|---|
|
|
63
|
+
|
|
64
|
+
**Graph and search** — sessions grouped around their projects; ⌘K searches every page instantly.
|
|
65
|
+
|
|
66
|
+
|  |  |
|
|
67
|
+
|---|---|
|
|
68
|
+
|
|
69
|
+
## Quick start
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
git clone https://github.com/necroz/sessionwiki.git
|
|
73
|
+
cd sessionwiki
|
|
74
|
+
./setup.sh # Windows: setup.bat — creates .venv, detects your agents
|
|
75
|
+
./sync.sh # convert new sessions into raw/
|
|
76
|
+
./build.sh && ./serve.sh # build the site and open http://127.0.0.1:8765
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`setup` creates a checkout-local `.venv`, installs the package, scaffolds `raw/`, `wiki/`, `site/`, enables the adapters for the agents it finds and runs `sessionwiki doctor`. The wrapper scripts use the venv automatically; for the CLI, activate it (`source .venv/bin/activate`) or call `.venv/bin/sessionwiki`.
|
|
80
|
+
|
|
81
|
+
Prefer pip? Install straight from GitHub (PyPI release coming with v2.0.0):
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
pip install 'sessionwiki @ git+https://github.com/necroz/sessionwiki' # core
|
|
85
|
+
pip install 'sessionwiki[all] @ git+https://github.com/necroz/sessionwiki' # + graph engine, dev, e2e
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
A step-by-step walkthrough with screenshots lives in the [setup guide](https://github.com/necroz/sessionwiki/blob/master/docs/tutorials/setup-guide.md).
|
|
89
|
+
|
|
90
|
+
## Connect your agents
|
|
91
|
+
|
|
92
|
+
**Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot** — read straight from their session folders on `sessionwiki sync`. To sync after every Claude Code reply, add a `Stop` hook to `~/.claude/settings.json`:
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"hooks": {
|
|
97
|
+
"Stop": [{ "hooks": [{ "type": "command",
|
|
98
|
+
"command": "cd /path/to/sessionwiki && .venv/bin/python -m sessionwiki sync --no-auto-build >/dev/null 2>&1 &" }] }]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Parallel hook runs are safe: `sync` and `synthesize` take an OS file lock and write their state atomically.
|
|
104
|
+
|
|
105
|
+
**ZCode** keeps sessions in SQLite. sessionwiki exports them read-only and installs the hook and a nightly job for you:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
sessionwiki zcode install --dry-run # show what will be written
|
|
109
|
+
sessionwiki zcode install # Stop hook + systemd / launchd / Task Scheduler
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**OpenCode** (V2, `opencode.db`) gets a server plugin that runs autosync when a session goes idle:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
sessionwiki opencode install --dry-run
|
|
116
|
+
sessionwiki opencode install # honours $XDG_CONFIG_HOME
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Hook-triggered runs skip instead of queueing when a cycle is already running; scheduled runs wait and catch up. Details: [ZCODE.md](https://github.com/necroz/sessionwiki/blob/master/ZCODE.md), [docs/adapters/opencode.md](https://github.com/necroz/sessionwiki/blob/master/docs/adapters/opencode.md), and `sessionwiki adapters` for the full list.
|
|
120
|
+
|
|
121
|
+
## LLM synthesis
|
|
122
|
+
|
|
123
|
+
`sync` fills `raw/` with redacted transcripts. `synthesize` turns them into wiki pages: a summary per session, project pages, cross-links. Point it at any backend in `config.local.json`:
|
|
124
|
+
|
|
125
|
+
```json
|
|
126
|
+
{
|
|
127
|
+
"synthesis": {
|
|
128
|
+
"backend": "openai",
|
|
129
|
+
"base_url": "http://127.0.0.1:8000/v1",
|
|
130
|
+
"model": "qwen3-coder",
|
|
131
|
+
"max_concurrency": 8,
|
|
132
|
+
"coalesce_low_signal": true
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
sessionwiki synthesize --estimate # what it will cost before you run it
|
|
139
|
+
sessionwiki synthesize # new sessions only; idempotent
|
|
140
|
+
sessionwiki all --with-synth # synthesize → build → graph → export → lint
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Backends: `ollama` (local), `openai` (any OpenAI-compatible `/v1`: vLLM, SGLang, LM Studio, LiteLLM, hosted APIs), `agent-delegate` (let your coding agent write the pages), `dummy` (offline stubs). sessionwiki warns when a non-loopback `base_url` would send transcripts off your machine. See [docs/modes/api/](https://github.com/necroz/sessionwiki/tree/master/docs/modes/api).
|
|
144
|
+
|
|
145
|
+
## Ask your wiki from your agents (MCP)
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"mcpServers": {
|
|
150
|
+
"sessionwiki": {
|
|
151
|
+
"command": "/path/to/sessionwiki/.venv/bin/python",
|
|
152
|
+
"args": ["-m", "sessionwiki.mcp"],
|
|
153
|
+
"cwd": "/path/to/sessionwiki"
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Add it to Claude Code, Claude Desktop, ZCode or any MCP client. Tools include `wiki_query`, `wiki_search` (optionally over raw transcripts), `wiki_read_page`, `wiki_list_sources`, `wiki_lint`, `wiki_sync`, `wiki_export`, `wiki_dashboard` and more — 12 in total, stdio transport, no SDK dependency, path-traversal guarded.
|
|
160
|
+
|
|
161
|
+
## CLI reference
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
sessionwiki init # scaffold raw/ wiki/ site/
|
|
165
|
+
sessionwiki sync # export ZCode/OpenCode + convert transcripts to markdown
|
|
166
|
+
sessionwiki synthesize # LLM summaries into wiki/ (--estimate, --coalesce-only, --force)
|
|
167
|
+
sessionwiki build # static site + AI exports
|
|
168
|
+
sessionwiki serve # local server on 127.0.0.1:8765
|
|
169
|
+
sessionwiki all # build → graph → export → lint (add --with-synth)
|
|
170
|
+
sessionwiki query "<question>" # ask the wiki a question from the terminal
|
|
171
|
+
sessionwiki graph # session/project and wikilink graph
|
|
172
|
+
sessionwiki lint # wiki lint rules
|
|
173
|
+
sessionwiki export # llms.txt, JSON-LD, sitemap, RSS, …
|
|
174
|
+
sessionwiki candidates # review candidate pages
|
|
175
|
+
sessionwiki adapters # available adapters and their state
|
|
176
|
+
sessionwiki doctor # check Python, deps, config, agent paths
|
|
177
|
+
sessionwiki audit # scan raw/ wiki/ site/ for usernames and secrets
|
|
178
|
+
sessionwiki zcode # export · autosync · install
|
|
179
|
+
sessionwiki opencode # export · autosync · install
|
|
180
|
+
sessionwiki version
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Every subcommand has `--help`. Full reference: [docs/reference/cli.md](https://github.com/necroz/sessionwiki/blob/master/docs/reference/cli.md).
|
|
184
|
+
|
|
185
|
+
## Configuration
|
|
186
|
+
|
|
187
|
+
Settings are layered; later files win:
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
examples/sessions_config.json → config.json → config.local.json
|
|
191
|
+
(shared defaults) (gitignored) (gitignored, machine-local)
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Put machine-specific values — synthesis backend and keys, redaction patterns, project roots, adapter toggles — in `config.local.json`. Reference: [docs/configuration-reference.md](https://github.com/necroz/sessionwiki/blob/master/docs/configuration-reference.md). Use [`.llmwikiignore`](https://github.com/necroz/sessionwiki/blob/master/examples/.llmwikiignore) to exclude projects or sessions.
|
|
195
|
+
|
|
196
|
+
## How it works
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
Claude Code · Codex · Cursor · Gemini · Copilot ZCode · OpenCode (SQLite)
|
|
200
|
+
│ JSONL │ read-only export
|
|
201
|
+
└──────────────────────┬─────────────────────────┘
|
|
202
|
+
▼
|
|
203
|
+
sync → raw/sessions/*.md redacted, immutable
|
|
204
|
+
│
|
|
205
|
+
synthesize ▼
|
|
206
|
+
wiki/ sources · projects · entities · concepts
|
|
207
|
+
│
|
|
208
|
+
┌────────────────┼──────────────────┐
|
|
209
|
+
▼ ▼ ▼
|
|
210
|
+
build → site/ MCP server exports (llms.txt, JSON-LD)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Three layers, following [Karpathy's LLM Wiki pattern](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f): `raw/` is the immutable source of truth, `wiki/` is maintained by the LLM, `site/` is generated. Your `raw/` and `wiki/` are gitignored — your data never enters the repository.
|
|
214
|
+
|
|
215
|
+
## Privacy
|
|
216
|
+
|
|
217
|
+
- Transcripts are redacted on conversion: your username, home paths and 17 kinds of keys and tokens, plus your own patterns.
|
|
218
|
+
- ZCode and OpenCode databases are opened read-only.
|
|
219
|
+
- Nothing leaves your machine unless you configure a remote synthesis backend — and sessionwiki warns when you do.
|
|
220
|
+
- `sessionwiki audit` scans `raw/`, `wiki/` and `site/` before you publish a site.
|
|
221
|
+
|
|
222
|
+
See [docs/privacy.md](https://github.com/necroz/sessionwiki/blob/master/docs/privacy.md) and [SECURITY.md](https://github.com/necroz/sessionwiki/blob/master/SECURITY.md).
|
|
223
|
+
|
|
224
|
+
## Documentation
|
|
225
|
+
|
|
226
|
+
- **[Documentation hub](https://github.com/necroz/sessionwiki/blob/master/docs/index.md)** — start here
|
|
227
|
+
- [Setup guide](https://github.com/necroz/sessionwiki/blob/master/docs/tutorials/setup-guide.md) · [Installation](https://github.com/necroz/sessionwiki/blob/master/docs/tutorials/01-installation.md) · [Use with Claude Code](https://github.com/necroz/sessionwiki/blob/master/docs/tutorials/03-use-with-claude-code.md) · [Windows](https://github.com/necroz/sessionwiki/blob/master/docs/windows-setup.md)
|
|
228
|
+
- [CLI](https://github.com/necroz/sessionwiki/blob/master/docs/reference/cli.md) · [Configuration](https://github.com/necroz/sessionwiki/blob/master/docs/configuration-reference.md) · [Architecture](https://github.com/necroz/sessionwiki/blob/master/docs/architecture.md)
|
|
229
|
+
- [Deploy to GitHub Pages, Docker, Vercel/Netlify](https://github.com/necroz/sessionwiki/tree/master/docs/deploy)
|
|
230
|
+
- [What's different from llmwiki](https://github.com/necroz/sessionwiki/blob/master/docs/differences-from-llmwiki.md) · [Changelog](https://github.com/necroz/sessionwiki/blob/master/CHANGELOG.md)
|
|
231
|
+
|
|
232
|
+
## Based on llmwiki
|
|
233
|
+
|
|
234
|
+
sessionwiki started as a fork of **[llmwiki](https://github.com/Pratiyush/llm-wiki) by [Pratiyush](https://github.com/Pratiyush)** (MIT) at v1.3.82 and keeps its full history. Most of the converter, site, lint and MCP foundations are his work. sessionwiki adds the ZCode and OpenCode sources with autosync, the OpenAI-compatible synthesis backend, session coalescing, locking and atomic state, `doctor` and `audit`, the session graph, and a long list of fixes — see [what's different](https://github.com/necroz/sessionwiki/blob/master/docs/differences-from-llmwiki.md) and [how to migrate](https://github.com/necroz/sessionwiki/blob/master/docs/differences-from-llmwiki.md#migrating-from-llmwiki).
|
|
235
|
+
|
|
236
|
+
Thanks also to [Andrej Karpathy](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) for the LLM Wiki idea, [Python Markdown](https://python-markdown.github.io/), [highlight.js](https://highlightjs.org/) and [vis-network](https://visjs.github.io/vis-network/).
|
|
237
|
+
|
|
238
|
+
## Contributing
|
|
239
|
+
|
|
240
|
+
Read [CONTRIBUTING.md](https://github.com/necroz/sessionwiki/blob/master/CONTRIBUTING.md). Keep PRs to one concern, use `feat:` / `fix:` / `docs:` / `chore:` / `test:` titles, add a CHANGELOG entry for `feat` and `fix`, and never commit real session data. CI must be green.
|
|
241
|
+
|
|
242
|
+
## License
|
|
243
|
+
|
|
244
|
+
[MIT](https://github.com/necroz/sessionwiki/blob/master/LICENSE) © 2026 Igor Lashkevich (sessionwiki) · © 2026 Pratiyush (original llmwiki). See [NOTICE](https://github.com/necroz/sessionwiki/blob/master/NOTICE).
|