livespec 0.24.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.
Files changed (190) hide show
  1. livespec-0.24.0/.claude-plugin/marketplace.json +15 -0
  2. livespec-0.24.0/.commit-guard.json +3 -0
  3. livespec-0.24.0/.github/workflows/ci.yml +85 -0
  4. livespec-0.24.0/.github/workflows/livespec-pr-comment.yml +52 -0
  5. livespec-0.24.0/.github/workflows/publish.yml +65 -0
  6. livespec-0.24.0/.gitignore +49 -0
  7. livespec-0.24.0/CHANGELOG.md +1866 -0
  8. livespec-0.24.0/CLAUDE.md +357 -0
  9. livespec-0.24.0/HANDOFF.md +1448 -0
  10. livespec-0.24.0/PKG-INFO +703 -0
  11. livespec-0.24.0/README.md +676 -0
  12. livespec-0.24.0/ROADMAP.md +454 -0
  13. livespec-0.24.0/bench/README.md +88 -0
  14. livespec-0.24.0/bench/agent_log_analyze.py +245 -0
  15. livespec-0.24.0/bench/results-baseline.json +30 -0
  16. livespec-0.24.0/bench/results-large.json +31 -0
  17. livespec-0.24.0/bench/run.py +198 -0
  18. livespec-0.24.0/docs/AGENT_PLAYBOOK.md +321 -0
  19. livespec-0.24.0/docs/AGENT_QUICKSTART.md +159 -0
  20. livespec-0.24.0/docs/AGENT_USAGE_DATA.md +845 -0
  21. livespec-0.24.0/docs/requirements/livespec-spec-links.json +737 -0
  22. livespec-0.24.0/docs/requirements/livespec-spec-links.md +46 -0
  23. livespec-0.24.0/docs/requirements/livespec-specs.md +145 -0
  24. livespec-0.24.0/fastmcp.json +8 -0
  25. livespec-0.24.0/plugin/.claude-plugin/plugin.json +17 -0
  26. livespec-0.24.0/plugin/.mcp.json +9 -0
  27. livespec-0.24.0/plugin/README.md +45 -0
  28. livespec-0.24.0/plugin/agents/livespec.md +55 -0
  29. livespec-0.24.0/plugin/commands/livespec-onboard.md +14 -0
  30. livespec-0.24.0/plugin/skills/livespec/SKILL.md +116 -0
  31. livespec-0.24.0/pyproject.toml +76 -0
  32. livespec-0.24.0/scripts/apply_spec_links.py +143 -0
  33. livespec-0.24.0/scripts/dogfood_v019.py +270 -0
  34. livespec-0.24.0/scripts/pr_diff_impact.py +134 -0
  35. livespec-0.24.0/scripts/sync_livespec_specs.py +42 -0
  36. livespec-0.24.0/scripts/validate_mcp.py +122 -0
  37. livespec-0.24.0/src/livespec_mcp/__init__.py +22 -0
  38. livespec-0.24.0/src/livespec_mcp/cli.py +185 -0
  39. livespec-0.24.0/src/livespec_mcp/config.py +377 -0
  40. livespec-0.24.0/src/livespec_mcp/domain/__init__.py +0 -0
  41. livespec-0.24.0/src/livespec_mcp/domain/extractors.py +1945 -0
  42. livespec-0.24.0/src/livespec_mcp/domain/graph.py +242 -0
  43. livespec-0.24.0/src/livespec_mcp/domain/indexer.py +708 -0
  44. livespec-0.24.0/src/livespec_mcp/domain/languages.py +72 -0
  45. livespec-0.24.0/src/livespec_mcp/domain/matcher.py +222 -0
  46. livespec-0.24.0/src/livespec_mcp/domain/md_specs.py +455 -0
  47. livespec-0.24.0/src/livespec_mcp/domain/openspec_changes.py +311 -0
  48. livespec-0.24.0/src/livespec_mcp/domain/openspec_discover.py +80 -0
  49. livespec-0.24.0/src/livespec_mcp/domain/openspec_export.py +212 -0
  50. livespec-0.24.0/src/livespec_mcp/domain/openspec_validate.py +199 -0
  51. livespec-0.24.0/src/livespec_mcp/domain/rag.py +660 -0
  52. livespec-0.24.0/src/livespec_mcp/domain/specs_sync.py +428 -0
  53. livespec-0.24.0/src/livespec_mcp/domain/watcher.py +188 -0
  54. livespec-0.24.0/src/livespec_mcp/error_middleware.py +73 -0
  55. livespec-0.24.0/src/livespec_mcp/explorer/__init__.py +23 -0
  56. livespec-0.24.0/src/livespec_mcp/explorer/asgi.py +162 -0
  57. livespec-0.24.0/src/livespec_mcp/explorer/autowire.py +105 -0
  58. livespec-0.24.0/src/livespec_mcp/explorer/fastapi.py +105 -0
  59. livespec-0.24.0/src/livespec_mcp/explorer/install.py +147 -0
  60. livespec-0.24.0/src/livespec_mcp/instrumentation.py +174 -0
  61. livespec-0.24.0/src/livespec_mcp/plugin_visibility.py +153 -0
  62. livespec-0.24.0/src/livespec_mcp/prompts.py +162 -0
  63. livespec-0.24.0/src/livespec_mcp/resources.py +226 -0
  64. livespec-0.24.0/src/livespec_mcp/server.py +59 -0
  65. livespec-0.24.0/src/livespec_mcp/state.py +252 -0
  66. livespec-0.24.0/src/livespec_mcp/storage/__init__.py +0 -0
  67. livespec-0.24.0/src/livespec_mcp/storage/db.py +597 -0
  68. livespec-0.24.0/src/livespec_mcp/storage/schema.sql +349 -0
  69. livespec-0.24.0/src/livespec_mcp/storage/trends.py +110 -0
  70. livespec-0.24.0/src/livespec_mcp/templates/fastapi/SESSION_PROMPT.md +20 -0
  71. livespec-0.24.0/src/livespec_mcp/templates/fastapi/cursor/rules/livespec-fastapi.mdc +44 -0
  72. livespec-0.24.0/src/livespec_mcp/templates/fastapi/cursor/skills/livespec-fastapi/SKILL.md +63 -0
  73. livespec-0.24.0/src/livespec_mcp/tools/__init__.py +0 -0
  74. livespec-0.24.0/src/livespec_mcp/tools/_errors.py +31 -0
  75. livespec-0.24.0/src/livespec_mcp/tools/analysis.py +3718 -0
  76. livespec-0.24.0/src/livespec_mcp/tools/docs.py +384 -0
  77. livespec-0.24.0/src/livespec_mcp/tools/explorer.py +2678 -0
  78. livespec-0.24.0/src/livespec_mcp/tools/indexing.py +227 -0
  79. livespec-0.24.0/src/livespec_mcp/tools/plugins/__init__.py +189 -0
  80. livespec-0.24.0/src/livespec_mcp/tools/plugins/docs.py +24 -0
  81. livespec-0.24.0/src/livespec_mcp/tools/plugins/spec.py +33 -0
  82. livespec-0.24.0/src/livespec_mcp/tools/search.py +88 -0
  83. livespec-0.24.0/src/livespec_mcp/tools/specs.py +1488 -0
  84. livespec-0.24.0/src/livespec_mcp/workspace_param.py +57 -0
  85. livespec-0.24.0/tests/__init__.py +0 -0
  86. livespec-0.24.0/tests/conftest.py +65 -0
  87. livespec-0.24.0/tests/data/matcher_golden.jsonl +37 -0
  88. livespec-0.24.0/tests/fixtures/go/cross_package/cmd/main.go +11 -0
  89. livespec-0.24.0/tests/fixtures/go/cross_package/util/format.go +11 -0
  90. livespec-0.24.0/tests/fixtures/go/sample.go +21 -0
  91. livespec-0.24.0/tests/fixtures/java/Sample.java +23 -0
  92. livespec-0.24.0/tests/fixtures/javascript/cross_module/helpers.js +9 -0
  93. livespec-0.24.0/tests/fixtures/javascript/cross_module/main.js +9 -0
  94. livespec-0.24.0/tests/fixtures/javascript/cross_module/utils.js +7 -0
  95. livespec-0.24.0/tests/fixtures/javascript/sample.js +25 -0
  96. livespec-0.24.0/tests/fixtures/php/cross_module/Service/Greeter.php +13 -0
  97. livespec-0.24.0/tests/fixtures/php/cross_module/main.php +7 -0
  98. livespec-0.24.0/tests/fixtures/php/sample.php +21 -0
  99. livespec-0.24.0/tests/fixtures/python/same_name_fanout/embed_cache.py +12 -0
  100. livespec-0.24.0/tests/fixtures/python/same_name_fanout/internal_proxy.py +2 -0
  101. livespec-0.24.0/tests/fixtures/python/same_name_fanout/proxy_pool.py +7 -0
  102. livespec-0.24.0/tests/fixtures/python/sample.py +21 -0
  103. livespec-0.24.0/tests/fixtures/ruby/cross_module/helpers.rb +9 -0
  104. livespec-0.24.0/tests/fixtures/ruby/cross_module/main.rb +5 -0
  105. livespec-0.24.0/tests/fixtures/ruby/sample.rb +19 -0
  106. livespec-0.24.0/tests/fixtures/rust/cross_module/src/main.rs +7 -0
  107. livespec-0.24.0/tests/fixtures/rust/cross_module/src/util.rs +17 -0
  108. livespec-0.24.0/tests/fixtures/rust/sample.rs +23 -0
  109. livespec-0.24.0/tests/fixtures/typescript/cross_module/helpers.ts +7 -0
  110. livespec-0.24.0/tests/fixtures/typescript/cross_module/main.ts +7 -0
  111. livespec-0.24.0/tests/fixtures/typescript/cross_module/utils.ts +5 -0
  112. livespec-0.24.0/tests/fixtures/typescript/sample.ts +26 -0
  113. livespec-0.24.0/tests/test_agent_features.py +108 -0
  114. livespec-0.24.0/tests/test_agent_log_analyze.py +125 -0
  115. livespec-0.24.0/tests/test_aggregator_tools.py +618 -0
  116. livespec-0.24.0/tests/test_audit10_annotation_verbs.py +122 -0
  117. livespec-0.24.0/tests/test_audit9_honest_zero.py +165 -0
  118. livespec-0.24.0/tests/test_audit_improvements.py +86 -0
  119. livespec-0.24.0/tests/test_audit_p3_regressions.py +142 -0
  120. livespec-0.24.0/tests/test_audit_p4_regressions.py +160 -0
  121. livespec-0.24.0/tests/test_audit_p5_regressions.py +93 -0
  122. livespec-0.24.0/tests/test_audit_p6_regressions.py +100 -0
  123. livespec-0.24.0/tests/test_body_hash_stability.py +95 -0
  124. livespec-0.24.0/tests/test_bulk_link.py +153 -0
  125. livespec-0.24.0/tests/test_bundler_filter.py +79 -0
  126. livespec-0.24.0/tests/test_callback_edges.py +122 -0
  127. livespec-0.24.0/tests/test_cli.py +53 -0
  128. livespec-0.24.0/tests/test_closure_capture_ts_rust.py +104 -0
  129. livespec-0.24.0/tests/test_dead_code_django.py +121 -0
  130. livespec-0.24.0/tests/test_decorator_aliases.py +95 -0
  131. livespec-0.24.0/tests/test_decorator_extraction.py +129 -0
  132. livespec-0.24.0/tests/test_did_you_mean.py +105 -0
  133. livespec-0.24.0/tests/test_django_cbv.py +95 -0
  134. livespec-0.24.0/tests/test_ecosystem_ignore.py +124 -0
  135. livespec-0.24.0/tests/test_error_shape.py +116 -0
  136. livespec-0.24.0/tests/test_explorer.py +489 -0
  137. livespec-0.24.0/tests/test_explorer_asgi.py +115 -0
  138. livespec-0.24.0/tests/test_explorer_freshness.py +111 -0
  139. livespec-0.24.0/tests/test_exports_protect.py +107 -0
  140. livespec-0.24.0/tests/test_extractors.py +235 -0
  141. livespec-0.24.0/tests/test_fastapi_install.py +41 -0
  142. livespec-0.24.0/tests/test_find_symbol_normalization.py +82 -0
  143. livespec-0.24.0/tests/test_git_diff.py +179 -0
  144. livespec-0.24.0/tests/test_gitignore.py +85 -0
  145. livespec-0.24.0/tests/test_graph_cache.py +83 -0
  146. livespec-0.24.0/tests/test_grouped_db.py +117 -0
  147. livespec-0.24.0/tests/test_hono.py +115 -0
  148. livespec-0.24.0/tests/test_indexing.py +234 -0
  149. livespec-0.24.0/tests/test_instrumentation.py +143 -0
  150. livespec-0.24.0/tests/test_large_repo.py +141 -0
  151. livespec-0.24.0/tests/test_matcher.py +96 -0
  152. livespec-0.24.0/tests/test_matcher_golden.py +54 -0
  153. livespec-0.24.0/tests/test_md_import.py +232 -0
  154. livespec-0.24.0/tests/test_migrations.py +201 -0
  155. livespec-0.24.0/tests/test_module_level_call_attribution.py +248 -0
  156. livespec-0.24.0/tests/test_multi_workspace.py +90 -0
  157. livespec-0.24.0/tests/test_no_orphan_db_creation.py +102 -0
  158. livespec-0.24.0/tests/test_openspec_interop.py +508 -0
  159. livespec-0.24.0/tests/test_openspec_validate_aggregation.py +105 -0
  160. livespec-0.24.0/tests/test_pagination.py +125 -0
  161. livespec-0.24.0/tests/test_phase456.py +132 -0
  162. livespec-0.24.0/tests/test_plugin_autoload.py +191 -0
  163. livespec-0.24.0/tests/test_plugin_visibility.py +120 -0
  164. livespec-0.24.0/tests/test_prompts.py +53 -0
  165. livespec-0.24.0/tests/test_properties.py +126 -0
  166. livespec-0.24.0/tests/test_propose_requirements.py +292 -0
  167. livespec-0.24.0/tests/test_python_http_routes.py +116 -0
  168. livespec-0.24.0/tests/test_quick_wins.py +187 -0
  169. livespec-0.24.0/tests/test_register_all_plugins.py +19 -0
  170. livespec-0.24.0/tests/test_regressions.py +89 -0
  171. livespec-0.24.0/tests/test_repo_config.py +104 -0
  172. livespec-0.24.0/tests/test_rf_coverage.py +208 -0
  173. livespec-0.24.0/tests/test_rf_deps.py +164 -0
  174. livespec-0.24.0/tests/test_rf_hints.py +104 -0
  175. livespec-0.24.0/tests/test_rf_trend.py +289 -0
  176. livespec-0.24.0/tests/test_robustness_v014.py +78 -0
  177. livespec-0.24.0/tests/test_route_edges.py +282 -0
  178. livespec-0.24.0/tests/test_runtime_registration.py +236 -0
  179. livespec-0.24.0/tests/test_scoped_resolution.py +273 -0
  180. livespec-0.24.0/tests/test_search.py +155 -0
  181. livespec-0.24.0/tests/test_specs_pagination_scratch_verbs.py +186 -0
  182. livespec-0.24.0/tests/test_spring_angular.py +136 -0
  183. livespec-0.24.0/tests/test_targeted_resolver.py +156 -0
  184. livespec-0.24.0/tests/test_traversal_pagination.py +176 -0
  185. livespec-0.24.0/tests/test_ts_framework_entry_points.py +363 -0
  186. livespec-0.24.0/tests/test_tsx_jsx_refs.py +235 -0
  187. livespec-0.24.0/tests/test_vec_load_id_reuse.py +81 -0
  188. livespec-0.24.0/tests/test_visibility.py +102 -0
  189. livespec-0.24.0/tests/test_weight_filter.py +150 -0
  190. livespec-0.24.0/uv.lock +3098 -0
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "livespec",
3
+ "description": "Local marketplace for the livespec Claude Code plugin (code intelligence + Spec traceability).",
4
+ "owner": {
5
+ "name": "Juan Pablo Diaz",
6
+ "email": "juanpablo516@gmail.com"
7
+ },
8
+ "plugins": [
9
+ {
10
+ "name": "livespec",
11
+ "source": "./plugin",
12
+ "description": "Code intelligence + Spec traceability: livespec MCP server, specialized subagent, and preloaded Skill."
13
+ }
14
+ ]
15
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "ignore_paths": ["\\.(png|jpe?g|gif|ico|webp|svg|pdf|woff2?|ttf|otf)$"]
3
+ }
@@ -0,0 +1,85 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ lint-build:
10
+ name: ruff + package build
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: astral-sh/setup-uv@v6
15
+ with:
16
+ enable-cache: true
17
+ - name: Set up Python 3.12
18
+ run: uv python install 3.12
19
+ - name: Create venv
20
+ run: uv venv --python 3.12
21
+ - name: Install
22
+ run: uv pip install -e ".[dev]"
23
+ - name: ruff check
24
+ run: uv run ruff check src tests
25
+ - name: Build wheel + sdist (regression gate for packaging config)
26
+ run: uv build
27
+ - name: Verify wheel contents
28
+ run: |
29
+ python3 - <<'EOF'
30
+ import glob, sys, zipfile
31
+ wheel = glob.glob("dist/*.whl")[0]
32
+ names = zipfile.ZipFile(wheel).namelist()
33
+ required = [
34
+ "livespec_mcp/storage/schema.sql",
35
+ "livespec_mcp/templates/AGENT_PLAYBOOK.md",
36
+ ]
37
+ missing = [r for r in required if r not in names]
38
+ if missing:
39
+ sys.exit(f"wheel missing required data files: {missing}")
40
+ print("wheel OK:", wheel)
41
+ EOF
42
+
43
+ test:
44
+ name: pytest (py${{ matrix.python-version }})
45
+ runs-on: ubuntu-latest
46
+ strategy:
47
+ fail-fast: false
48
+ matrix:
49
+ python-version: ["3.10", "3.11", "3.12"]
50
+ steps:
51
+ - uses: actions/checkout@v4
52
+ - uses: astral-sh/setup-uv@v6
53
+ with:
54
+ enable-cache: true
55
+ - name: Set up Python ${{ matrix.python-version }}
56
+ run: uv python install ${{ matrix.python-version }}
57
+ - name: Create venv
58
+ run: uv venv --python ${{ matrix.python-version }}
59
+ - name: Install
60
+ run: uv pip install -e ".[dev]"
61
+ - name: Run tests (no embeddings)
62
+ run: uv run pytest -q -m "not embeddings"
63
+
64
+ embeddings:
65
+ name: pytest -m embeddings
66
+ runs-on: ubuntu-latest
67
+ needs: test
68
+ steps:
69
+ - uses: actions/checkout@v4
70
+ - uses: astral-sh/setup-uv@v6
71
+ with:
72
+ enable-cache: true
73
+ - name: Set up Python 3.12
74
+ run: uv python install 3.12
75
+ - name: Create venv
76
+ run: uv venv --python 3.12
77
+ - name: Install with extras
78
+ run: uv pip install -e ".[dev,embeddings]"
79
+ - name: Cache HuggingFace models
80
+ uses: actions/cache@v4
81
+ with:
82
+ path: ~/.cache/huggingface
83
+ key: hf-embeddings-${{ runner.os }}
84
+ - name: Run embeddings tests
85
+ run: uv run pytest -q -m embeddings
@@ -0,0 +1,52 @@
1
+ name: Livespec PR impact
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, synchronize, reopened]
6
+
7
+ jobs:
8
+ spec-impact-comment:
9
+ name: Post Spec diff impact
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ contents: read
13
+ pull-requests: write
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ with:
17
+ fetch-depth: 0
18
+
19
+ - uses: astral-sh/setup-uv@v6
20
+ with:
21
+ enable-cache: true
22
+
23
+ - name: Set up Python 3.12
24
+ run: uv python install 3.12
25
+
26
+ - name: Create venv
27
+ run: uv venv --python 3.12
28
+
29
+ - name: Install
30
+ run: uv pip install -e ".[dev]"
31
+
32
+ - name: Index workspace and render markdown
33
+ env:
34
+ LIVESPEC_WORKSPACE: ${{ github.workspace }}
35
+ GITHUB_BASE_SHA: ${{ github.event.pull_request.base.sha }}
36
+ GITHUB_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
37
+ run: uv run python scripts/pr_diff_impact.py > /tmp/livespec-pr-comment.md
38
+
39
+ - name: Show comment preview
40
+ run: cat /tmp/livespec-pr-comment.md
41
+
42
+ - name: Post PR comment
43
+ env:
44
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
45
+ run: |
46
+ if [ -z "${GH_TOKEN:-}" ]; then
47
+ echo "No GITHUB_TOKEN — skipping PR comment (markdown still in /tmp/livespec-pr-comment.md)"
48
+ exit 0
49
+ fi
50
+ gh pr comment "${{ github.event.pull_request.number }}" \
51
+ --body-file /tmp/livespec-pr-comment.md \
52
+ --repo "${{ github.repository }}"
@@ -0,0 +1,65 @@
1
+ name: Publish to PyPI
2
+
3
+ # Publishes the `livespec` distribution to PyPI on every version tag push.
4
+ # Uses PyPI Trusted Publishing (OIDC) — no API token or secret is stored here.
5
+ #
6
+ # Setup, one time. Because the project does not exist on PyPI yet, this is the
7
+ # PENDING publisher flow, registered at the ACCOUNT level, not inside a project:
8
+ # pypi.org → Account settings → Publishing → add a pending publisher
9
+ # PyPI Project Name: livespec
10
+ # Owner: Rixmerz
11
+ # Repository name: livespec
12
+ # Workflow name: publish.yml
13
+ # Environment: (leave blank)
14
+ # The first successful run creates the project and converts it to a normal
15
+ # publisher. Once the project exists, the same settings live under
16
+ # pypi.org → project → Manage → Publishing instead.
17
+ #
18
+ # The distribution, the console command and the GitHub repo are all `livespec`.
19
+ # They used to disagree — package `livespec-mcp`, repo `livespec` — and since
20
+ # Trusted Publishing matches on the REPO, a publisher registered under the old
21
+ # name failed every release with:
22
+ # invalid-publisher: valid token, but no corresponding publisher
23
+ # `repository`: `Rixmerz/livespec`
24
+ # which reads like a permissions problem and is really a name mismatch. It
25
+ # silently broke v0.23.0 and v0.24.0. PyPI cannot rename a publisher, and it
26
+ # permanently blocks re-registering a deleted project name — which is why the
27
+ # distribution moved to `livespec` rather than reclaiming `livespec-mcp`.
28
+ # If this ever returns: the `repository` claim printed in the failure log is
29
+ # the authoritative value to compare against what is registered.
30
+
31
+ on:
32
+ push:
33
+ tags:
34
+ - "v*"
35
+
36
+ permissions:
37
+ contents: read
38
+
39
+ jobs:
40
+ publish:
41
+ name: Build and publish
42
+ runs-on: ubuntu-latest
43
+ permissions:
44
+ id-token: write # required for Trusted Publishing (OIDC)
45
+ steps:
46
+ - uses: actions/checkout@v4
47
+
48
+ - name: Install uv
49
+ uses: astral-sh/setup-uv@v6
50
+
51
+ - name: Build sdist + wheel
52
+ run: uv build
53
+
54
+ - name: Verify version tag matches package version
55
+ run: |
56
+ PKG_VERSION="$(uv run python -c 'import tomllib; print(tomllib.load(open("pyproject.toml","rb"))["project"]["version"])')"
57
+ TAG_VERSION="${GITHUB_REF_NAME#v}"
58
+ echo "package=$PKG_VERSION tag=$TAG_VERSION"
59
+ if [ "$PKG_VERSION" != "$TAG_VERSION" ]; then
60
+ echo "::error::Tag $GITHUB_REF_NAME does not match pyproject version $PKG_VERSION"
61
+ exit 1
62
+ fi
63
+
64
+ - name: Publish to PyPI (Trusted Publishing)
65
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,49 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.pyc
4
+ *.pyo
5
+ .pytest_cache/
6
+ .ruff_cache/
7
+ .mypy_cache/
8
+ dist/
9
+ build/
10
+ *.egg-info/
11
+ .mcp-docs/
12
+ .mcp-docs-agent-log-fallback/
13
+ .coverage
14
+ .env
15
+ .DS_Store
16
+ .claude/
17
+
18
+ # RAG layer / ML model caches (never commit weights or local dumps)
19
+ local_cache/
20
+ models/
21
+ .fastembed_cache/
22
+ .huggingface/
23
+ .cache/
24
+ *.onnx
25
+ *.safetensors
26
+ *.gguf
27
+ *.bin
28
+ *.pt
29
+ *.npy
30
+ *.npz
31
+
32
+ # Ad-hoc dumps from search/embeddings debugging
33
+ chunks_dump.*
34
+ embeddings_dump.*
35
+ *.dump.json
36
+
37
+ # Editor / OS personal
38
+ .idea/
39
+ .vscode/
40
+ *.swp
41
+ *.swo
42
+ Thumbs.db
43
+
44
+ # jig local scratch state
45
+ .jig/
46
+
47
+ # Playwright MCP debug output
48
+ .playwright-mcp/
49
+ .vise/