silica-agent 0.4.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.
- silica_agent-0.4.0/.claude/hooks/uv-guard.py +58 -0
- silica_agent-0.4.0/.claude/settings.json +15 -0
- silica_agent-0.4.0/.claude-plugin/marketplace.json +14 -0
- silica_agent-0.4.0/.claude-plugin/plugin.json +23 -0
- silica_agent-0.4.0/.env.example +168 -0
- silica_agent-0.4.0/.github/dependabot.yml +31 -0
- silica_agent-0.4.0/.github/workflows/release.yml +67 -0
- silica_agent-0.4.0/.gitignore +190 -0
- silica_agent-0.4.0/CODE_OF_CONDUCT.md +133 -0
- silica_agent-0.4.0/CONTRIBUTING.md +41 -0
- silica_agent-0.4.0/LICENSE +661 -0
- silica_agent-0.4.0/PKG-INFO +367 -0
- silica_agent-0.4.0/README.md +310 -0
- silica_agent-0.4.0/SECURITY.md +34 -0
- silica_agent-0.4.0/assets/architecture.svg +215 -0
- silica_agent-0.4.0/assets/cli_screenshot.png +0 -0
- silica_agent-0.4.0/assets/mcp_screenshot.png +0 -0
- silica_agent-0.4.0/assets/obsidian_plugin_screenshot.png +0 -0
- silica_agent-0.4.0/assets/pipeline.svg +86 -0
- silica_agent-0.4.0/assets/sili_no_bg.png +0 -0
- silica_agent-0.4.0/assets/web_gui_screenshot.png +0 -0
- silica_agent-0.4.0/cliff.toml +46 -0
- silica_agent-0.4.0/evals/__init__.py +0 -0
- silica_agent-0.4.0/evals/_shared.py +115 -0
- silica_agent-0.4.0/evals/conftest.py +10 -0
- silica_agent-0.4.0/evals/factscore.py +296 -0
- silica_agent-0.4.0/evals/golden/__init__.py +5 -0
- silica_agent-0.4.0/evals/golden/__main__.py +3 -0
- silica_agent-0.4.0/evals/golden/baseline.json +55 -0
- silica_agent-0.4.0/evals/golden/probe_classify.py +120 -0
- silica_agent-0.4.0/evals/golden/probe_correlate.py +101 -0
- silica_agent-0.4.0/evals/golden/probe_dedup.py +180 -0
- silica_agent-0.4.0/evals/golden/probe_fusion.py +116 -0
- silica_agent-0.4.0/evals/golden/probe_links.py +107 -0
- silica_agent-0.4.0/evals/golden/runner.py +382 -0
- silica_agent-0.4.0/evals/locomo/__init__.py +4 -0
- silica_agent-0.4.0/evals/locomo/__main__.py +6 -0
- silica_agent-0.4.0/evals/locomo/repair_dangling.py +136 -0
- silica_agent-0.4.0/evals/locomo/runner.py +1139 -0
- silica_agent-0.4.0/evals/locomo/test_hybrid_overlay.py +52 -0
- silica_agent-0.4.0/evals/locomo/test_locomo_adapter.py +177 -0
- silica_agent-0.4.0/evals/locomo/test_locomo_e2e.py +453 -0
- silica_agent-0.4.0/evals/locomo/test_locomo_timeline.py +107 -0
- silica_agent-0.4.0/evals/longmemeval/__init__.py +4 -0
- silica_agent-0.4.0/evals/longmemeval/__main__.py +6 -0
- silica_agent-0.4.0/evals/longmemeval/metrics.json +126 -0
- silica_agent-0.4.0/evals/longmemeval/probes.py +398 -0
- silica_agent-0.4.0/evals/longmemeval/runner.py +707 -0
- silica_agent-0.4.0/evals/longmemeval/test_longmemeval_adapter.py +644 -0
- silica_agent-0.4.0/evals/longmemeval/test_probes.py +383 -0
- silica_agent-0.4.0/evals/musique/__init__.py +4 -0
- silica_agent-0.4.0/evals/musique/__main__.py +6 -0
- silica_agent-0.4.0/evals/musique/metrics.json +1296 -0
- silica_agent-0.4.0/evals/musique/runner.py +375 -0
- silica_agent-0.4.0/evals/musique/test_musique_adapter.py +111 -0
- silica_agent-0.4.0/evals/paired_stats.py +137 -0
- silica_agent-0.4.0/evals/phase0_gates.py +176 -0
- silica_agent-0.4.0/evals/probe_abstention_rubric.py +85 -0
- silica_agent-0.4.0/evals/probe_dedup_batch.py +178 -0
- silica_agent-0.4.0/evals/probe_judge_ab.py +64 -0
- silica_agent-0.4.0/evals/probe_judge_floor.py +110 -0
- silica_agent-0.4.0/evals/probe_regrade_sweep.py +84 -0
- silica_agent-0.4.0/evals/probe_single_hop_regrade.py +84 -0
- silica_agent-0.4.0/evals/probe_temporal_regrade.py +91 -0
- silica_agent-0.4.0/evals/test_factscore.py +144 -0
- silica_agent-0.4.0/evals/test_phase0_gates.py +38 -0
- silica_agent-0.4.0/evals/test_vault_energy_bench.py +140 -0
- silica_agent-0.4.0/evals/test_vault_energy_realdriver.py +80 -0
- silica_agent-0.4.0/examples/taxonomy.example.yaml +54 -0
- silica_agent-0.4.0/obsidian-silica/.gitignore +4 -0
- silica_agent-0.4.0/obsidian-silica/PROTOCOL.md +149 -0
- silica_agent-0.4.0/obsidian-silica/README.md +47 -0
- silica_agent-0.4.0/obsidian-silica/bridge.test.ts +145 -0
- silica_agent-0.4.0/obsidian-silica/bridge.ts +186 -0
- silica_agent-0.4.0/obsidian-silica/chat.test.ts +47 -0
- silica_agent-0.4.0/obsidian-silica/chat.ts +66 -0
- silica_agent-0.4.0/obsidian-silica/esbuild.config.mjs +23 -0
- silica_agent-0.4.0/obsidian-silica/handlers.test.ts +324 -0
- silica_agent-0.4.0/obsidian-silica/handlers.ts +341 -0
- silica_agent-0.4.0/obsidian-silica/main.ts +297 -0
- silica_agent-0.4.0/obsidian-silica/manifest.json +9 -0
- silica_agent-0.4.0/obsidian-silica/package.json +18 -0
- silica_agent-0.4.0/obsidian-silica/styles.css +20 -0
- silica_agent-0.4.0/obsidian-silica/tsconfig.json +15 -0
- silica_agent-0.4.0/pyproject.toml +228 -0
- silica_agent-0.4.0/setup.cfg +4 -0
- silica_agent-0.4.0/silica/.env.example +168 -0
- silica_agent-0.4.0/silica/__init__.py +17 -0
- silica_agent-0.4.0/silica/_version.py +24 -0
- silica_agent-0.4.0/silica/agent/__init__.py +4 -0
- silica_agent-0.4.0/silica/agent/bounds.py +280 -0
- silica_agent-0.4.0/silica/agent/bus.py +63 -0
- silica_agent-0.4.0/silica/agent/commit.py +216 -0
- silica_agent-0.4.0/silica/agent/compaction.py +115 -0
- silica_agent-0.4.0/silica/agent/concurrency.py +54 -0
- silica_agent-0.4.0/silica/agent/constraints.py +19 -0
- silica_agent-0.4.0/silica/agent/events.py +85 -0
- silica_agent-0.4.0/silica/agent/llm.py +514 -0
- silica_agent-0.4.0/silica/agent/loop.py +379 -0
- silica_agent-0.4.0/silica/agent/providers.py +545 -0
- silica_agent-0.4.0/silica/agent/subagent.py +177 -0
- silica_agent-0.4.0/silica/capabilities/__init__.py +78 -0
- silica_agent-0.4.0/silica/capabilities/_base.py +48 -0
- silica_agent-0.4.0/silica/capabilities/codewiki.py +380 -0
- silica_agent-0.4.0/silica/capabilities/dedup.py +527 -0
- silica_agent-0.4.0/silica/capabilities/enrich.py +101 -0
- silica_agent-0.4.0/silica/capabilities/expand.py +149 -0
- silica_agent-0.4.0/silica/capabilities/orphan.py +111 -0
- silica_agent-0.4.0/silica/capabilities/profile.py +31 -0
- silica_agent-0.4.0/silica/capabilities/profiles_builtin.py +59 -0
- silica_agent-0.4.0/silica/capabilities/prompts/_anti_slop.txt +19 -0
- silica_agent-0.4.0/silica/capabilities/prompts/dedup_prompt.txt +35 -0
- silica_agent-0.4.0/silica/capabilities/prompts/distiller_prompt.txt +143 -0
- silica_agent-0.4.0/silica/capabilities/prompts/expand_prompt.txt +15 -0
- silica_agent-0.4.0/silica/capabilities/prompts/orphan_prompt.txt +13 -0
- silica_agent-0.4.0/silica/capabilities/prompts/profiles/default/examples.md +99 -0
- silica_agent-0.4.0/silica/capabilities/prompts/profiles/default/quality.md +16 -0
- silica_agent-0.4.0/silica/capabilities/prompts/profiles/default/rubric.md +9 -0
- silica_agent-0.4.0/silica/capabilities/prompts/profiles/extractive/examples.md +61 -0
- silica_agent-0.4.0/silica/capabilities/prompts/profiles/extractive/quality.md +13 -0
- silica_agent-0.4.0/silica/capabilities/prompts/profiles/extractive/rubric.md +14 -0
- silica_agent-0.4.0/silica/capabilities/prompts/profiles/transcript/examples.md +64 -0
- silica_agent-0.4.0/silica/capabilities/prompts/profiles/transcript/quality.md +8 -0
- silica_agent-0.4.0/silica/capabilities/prompts/profiles/transcript/rubric.md +13 -0
- silica_agent-0.4.0/silica/capabilities/prompts/refiner_prompt.txt +19 -0
- silica_agent-0.4.0/silica/capabilities/refine.py +85 -0
- silica_agent-0.4.0/silica/capabilities/runtime.py +77 -0
- silica_agent-0.4.0/silica/cli.py +1769 -0
- silica_agent-0.4.0/silica/config.py +407 -0
- silica_agent-0.4.0/silica/domains/codebase.yaml +8 -0
- silica_agent-0.4.0/silica/driver/__init__.py +99 -0
- silica_agent-0.4.0/silica/driver/base.py +380 -0
- silica_agent-0.4.0/silica/driver/fs_backend.py +989 -0
- silica_agent-0.4.0/silica/driver/ws_backend.py +559 -0
- silica_agent-0.4.0/silica/kernel/__init__.py +9 -0
- silica_agent-0.4.0/silica/kernel/analyst_plan.py +378 -0
- silica_agent-0.4.0/silica/kernel/assembly.py +211 -0
- silica_agent-0.4.0/silica/kernel/ast.py +170 -0
- silica_agent-0.4.0/silica/kernel/atomic_write.py +153 -0
- silica_agent-0.4.0/silica/kernel/autolink.py +348 -0
- silica_agent-0.4.0/silica/kernel/bulk.py +281 -0
- silica_agent-0.4.0/silica/kernel/checkpoints.py +144 -0
- silica_agent-0.4.0/silica/kernel/classify.py +514 -0
- silica_agent-0.4.0/silica/kernel/codeast/__init__.py +31 -0
- silica_agent-0.4.0/silica/kernel/codeast/base.py +202 -0
- silica_agent-0.4.0/silica/kernel/codeast/c.py +211 -0
- silica_agent-0.4.0/silica/kernel/codeast/java.py +190 -0
- silica_agent-0.4.0/silica/kernel/codeast/python.py +244 -0
- silica_agent-0.4.0/silica/kernel/codeast/ts.py +43 -0
- silica_agent-0.4.0/silica/kernel/codedocs.py +164 -0
- silica_agent-0.4.0/silica/kernel/codegraph.py +467 -0
- silica_agent-0.4.0/silica/kernel/codewiki.py +355 -0
- silica_agent-0.4.0/silica/kernel/cohesion.py +156 -0
- silica_agent-0.4.0/silica/kernel/contested.py +68 -0
- silica_agent-0.4.0/silica/kernel/contested_register.py +51 -0
- silica_agent-0.4.0/silica/kernel/context_builder.py +53 -0
- silica_agent-0.4.0/silica/kernel/cooccurrence.py +675 -0
- silica_agent-0.4.0/silica/kernel/correlate.py +88 -0
- silica_agent-0.4.0/silica/kernel/curator.py +205 -0
- silica_agent-0.4.0/silica/kernel/deferred.py +270 -0
- silica_agent-0.4.0/silica/kernel/embed.py +612 -0
- silica_agent-0.4.0/silica/kernel/episodic.py +547 -0
- silica_agent-0.4.0/silica/kernel/frontmatter.py +73 -0
- silica_agent-0.4.0/silica/kernel/gitstate.py +235 -0
- silica_agent-0.4.0/silica/kernel/graph_diff.py +136 -0
- silica_agent-0.4.0/silica/kernel/graph_export.py +547 -0
- silica_agent-0.4.0/silica/kernel/graph_report/__init__.py +66 -0
- silica_agent-0.4.0/silica/kernel/graph_report/code_signals.py +75 -0
- silica_agent-0.4.0/silica/kernel/graph_report/compute.py +451 -0
- silica_agent-0.4.0/silica/kernel/graph_report/cooccur_delta.py +257 -0
- silica_agent-0.4.0/silica/kernel/graph_report/embed_signals.py +189 -0
- silica_agent-0.4.0/silica/kernel/graph_report/models.py +160 -0
- silica_agent-0.4.0/silica/kernel/graph_report/render.py +511 -0
- silica_agent-0.4.0/silica/kernel/health/__init__.py +270 -0
- silica_agent-0.4.0/silica/kernel/health/lint.py +306 -0
- silica_agent-0.4.0/silica/kernel/heatmap.py +367 -0
- silica_agent-0.4.0/silica/kernel/ipynb.py +71 -0
- silica_agent-0.4.0/silica/kernel/keyphrase.py +291 -0
- silica_agent-0.4.0/silica/kernel/language.py +106 -0
- silica_agent-0.4.0/silica/kernel/ledger.py +200 -0
- silica_agent-0.4.0/silica/kernel/lexical.py +190 -0
- silica_agent-0.4.0/silica/kernel/linter.py +211 -0
- silica_agent-0.4.0/silica/kernel/media.py +128 -0
- silica_agent-0.4.0/silica/kernel/memory_lane.py +86 -0
- silica_agent-0.4.0/silica/kernel/merge.py +53 -0
- silica_agent-0.4.0/silica/kernel/mindmap.py +800 -0
- silica_agent-0.4.0/silica/kernel/minhash_dedup.py +119 -0
- silica_agent-0.4.0/silica/kernel/moc.py +59 -0
- silica_agent-0.4.0/silica/kernel/ofm.py +170 -0
- silica_agent-0.4.0/silica/kernel/ops.py +189 -0
- silica_agent-0.4.0/silica/kernel/ops_io.py +58 -0
- silica_agent-0.4.0/silica/kernel/overlay.py +265 -0
- silica_agent-0.4.0/silica/kernel/partition.py +120 -0
- silica_agent-0.4.0/silica/kernel/paths.py +332 -0
- silica_agent-0.4.0/silica/kernel/payload.py +168 -0
- silica_agent-0.4.0/silica/kernel/perception.py +375 -0
- silica_agent-0.4.0/silica/kernel/plans.py +39 -0
- silica_agent-0.4.0/silica/kernel/prep_delegation.py +532 -0
- silica_agent-0.4.0/silica/kernel/progress.py +688 -0
- silica_agent-0.4.0/silica/kernel/provenance.py +383 -0
- silica_agent-0.4.0/silica/kernel/recall_weights.py +77 -0
- silica_agent-0.4.0/silica/kernel/recon.py +81 -0
- silica_agent-0.4.0/silica/kernel/relatedness.py +638 -0
- silica_agent-0.4.0/silica/kernel/rename.py +358 -0
- silica_agent-0.4.0/silica/kernel/rerank.py +190 -0
- silica_agent-0.4.0/silica/kernel/run_log.py +142 -0
- silica_agent-0.4.0/silica/kernel/run_substrate.py +259 -0
- silica_agent-0.4.0/silica/kernel/sanitize.py +251 -0
- silica_agent-0.4.0/silica/kernel/taxonomy.py +228 -0
- silica_agent-0.4.0/silica/kernel/templates.py +432 -0
- silica_agent-0.4.0/silica/kernel/text.py +140 -0
- silica_agent-0.4.0/silica/kernel/timeline.py +56 -0
- silica_agent-0.4.0/silica/kernel/title.py +87 -0
- silica_agent-0.4.0/silica/kernel/undo_journal.py +237 -0
- silica_agent-0.4.0/silica/kernel/validate.py +745 -0
- silica_agent-0.4.0/silica/kernel/vault_energy.py +91 -0
- silica_agent-0.4.0/silica/kernel/vault_manifest.py +284 -0
- silica_agent-0.4.0/silica/kernel/vault_map.py +177 -0
- silica_agent-0.4.0/silica/kernel/workqueue.py +320 -0
- silica_agent-0.4.0/silica/onboarding/__init__.py +3 -0
- silica_agent-0.4.0/silica/onboarding/checks.py +388 -0
- silica_agent-0.4.0/silica/onboarding/wizard.py +645 -0
- silica_agent-0.4.0/silica/overlays/italian.yaml +174 -0
- silica_agent-0.4.0/silica/prompts.py +102 -0
- silica_agent-0.4.0/silica/recipes/injector.yaml +24 -0
- silica_agent-0.4.0/silica/recipes/organizer.yaml +15 -0
- silica_agent-0.4.0/silica/router/__init__.py +4 -0
- silica_agent-0.4.0/silica/router/base_fsm.py +157 -0
- silica_agent-0.4.0/silica/router/coordinator.py +216 -0
- silica_agent-0.4.0/silica/router/orchestrator.py +1051 -0
- silica_agent-0.4.0/silica/router/organize_fsm.py +564 -0
- silica_agent-0.4.0/silica/router/overlay.py +53 -0
- silica_agent-0.4.0/silica/router/prefetch.py +50 -0
- silica_agent-0.4.0/silica/router/recipe_parser.py +43 -0
- silica_agent-0.4.0/silica/router/states/__init__.py +9 -0
- silica_agent-0.4.0/silica/router/states/collision.py +681 -0
- silica_agent-0.4.0/silica/router/states/distill.py +731 -0
- silica_agent-0.4.0/silica/router/states/finalize.py +499 -0
- silica_agent-0.4.0/silica/router/states/linking.py +228 -0
- silica_agent-0.4.0/silica/router/states/setup.py +554 -0
- silica_agent-0.4.0/silica/router/states/write.py +551 -0
- silica_agent-0.4.0/silica/router/warning_ledger.py +76 -0
- silica_agent-0.4.0/silica/sources/__init__.py +7 -0
- silica_agent-0.4.0/silica/sources/base.py +52 -0
- silica_agent-0.4.0/silica/sources/code.py +178 -0
- silica_agent-0.4.0/silica/sources/convert.py +401 -0
- silica_agent-0.4.0/silica/sources/notebook.py +94 -0
- silica_agent-0.4.0/silica/sources/prose.py +44 -0
- silica_agent-0.4.0/silica/sources/registry.py +74 -0
- silica_agent-0.4.0/silica/sources/web_research.py +223 -0
- silica_agent-0.4.0/silica/tools/__init__.py +138 -0
- silica_agent-0.4.0/silica/tools/atomic.py +452 -0
- silica_agent-0.4.0/silica/tools/codedocs_tool.py +42 -0
- silica_agent-0.4.0/silica/tools/composed.py +85 -0
- silica_agent-0.4.0/silica/tools/curate.py +389 -0
- silica_agent-0.4.0/silica/tools/delegate_tool.py +61 -0
- silica_agent-0.4.0/silica/tools/graph.py +910 -0
- silica_agent-0.4.0/silica/tools/notes.py +228 -0
- silica_agent-0.4.0/silica/tools/pipeline.py +624 -0
- silica_agent-0.4.0/silica/tools/runners.py +545 -0
- silica_agent-0.4.0/silica/tools/wrapped.py +308 -0
- silica_agent-0.4.0/silica/ui/__init__.py +4 -0
- silica_agent-0.4.0/silica/ui/banner.py +74 -0
- silica_agent-0.4.0/silica/ui/commands.py +332 -0
- silica_agent-0.4.0/silica/ui/connect.py +311 -0
- silica_agent-0.4.0/silica/ui/console.py +8 -0
- silica_agent-0.4.0/silica/ui/home.py +44 -0
- silica_agent-0.4.0/silica/ui/logging.py +108 -0
- silica_agent-0.4.0/silica/ui/mcp.py +112 -0
- silica_agent-0.4.0/silica/ui/prompt.py +100 -0
- silica_agent-0.4.0/silica/ui/renderer.py +784 -0
- silica_agent-0.4.0/silica/ui/style.py +83 -0
- silica_agent-0.4.0/silica/ui/theme.py +27 -0
- silica_agent-0.4.0/silica/ui/web/__init__.py +17 -0
- silica_agent-0.4.0/silica/ui/web/callback.py +48 -0
- silica_agent-0.4.0/silica/ui/web/graph_view.py +832 -0
- silica_agent-0.4.0/silica/ui/web/server.py +1041 -0
- silica_agent-0.4.0/silica/ui/web/static/3d-force-graph.min.js +5 -0
- silica_agent-0.4.0/silica/ui/web/static/app.css +2064 -0
- silica_agent-0.4.0/silica/ui/web/static/app.js +1146 -0
- silica_agent-0.4.0/silica/ui/web/static/index.html +230 -0
- silica_agent-0.4.0/silica/ui/web/static/lexend-latin.woff2 +0 -0
- silica_agent-0.4.0/silica/ui/web/static/martian-mono-latin.woff2 +0 -0
- silica_agent-0.4.0/silica/ui/web/static/mermaid.min.js +3587 -0
- silica_agent-0.4.0/silica/update.py +103 -0
- silica_agent-0.4.0/silica_agent.egg-info/PKG-INFO +367 -0
- silica_agent-0.4.0/silica_agent.egg-info/SOURCES.txt +554 -0
- silica_agent-0.4.0/silica_agent.egg-info/dependency_links.txt +1 -0
- silica_agent-0.4.0/silica_agent.egg-info/entry_points.txt +2 -0
- silica_agent-0.4.0/silica_agent.egg-info/requires.txt +46 -0
- silica_agent-0.4.0/silica_agent.egg-info/scm_file_list.json +549 -0
- silica_agent-0.4.0/silica_agent.egg-info/scm_version.json +8 -0
- silica_agent-0.4.0/silica_agent.egg-info/top_level.txt +1 -0
- silica_agent-0.4.0/skills/silica/SKILL.md +68 -0
- silica_agent-0.4.0/tests/__init__.py +1 -0
- silica_agent-0.4.0/tests/conftest.py +242 -0
- silica_agent-0.4.0/tests/fixtures/__init__.py +1 -0
- silica_agent-0.4.0/tests/fixtures/vault_factory.py +295 -0
- silica_agent-0.4.0/tests/golden/__init__.py +2 -0
- silica_agent-0.4.0/tests/golden/autolink_cases.json +58 -0
- silica_agent-0.4.0/tests/golden/collision_threshold_cases.json +26 -0
- silica_agent-0.4.0/tests/golden/keyphrase_cases.json +72 -0
- silica_agent-0.4.0/tests/golden/test_driver_parity.py +289 -0
- silica_agent-0.4.0/tests/golden/test_eval_autolink.py +81 -0
- silica_agent-0.4.0/tests/golden/test_eval_correlate.py +68 -0
- silica_agent-0.4.0/tests/golden/test_eval_fusion.py +169 -0
- silica_agent-0.4.0/tests/golden/test_eval_keyphrase.py +149 -0
- silica_agent-0.4.0/tests/golden/test_golden_regression.py +58 -0
- silica_agent-0.4.0/tests/llm_mocks.py +46 -0
- silica_agent-0.4.0/tests/test_agent_constraints.py +136 -0
- silica_agent-0.4.0/tests/test_agent_guards_and_provider.py +251 -0
- silica_agent-0.4.0/tests/test_agent_history_repair.py +50 -0
- silica_agent-0.4.0/tests/test_analyst_plan.py +202 -0
- silica_agent-0.4.0/tests/test_anneal.py +161 -0
- silica_agent-0.4.0/tests/test_anti_slop.py +36 -0
- silica_agent-0.4.0/tests/test_assembly.py +105 -0
- silica_agent-0.4.0/tests/test_assembly_perception.py +52 -0
- silica_agent-0.4.0/tests/test_atomic_write.py +63 -0
- silica_agent-0.4.0/tests/test_atomic_write_bytes.py +31 -0
- silica_agent-0.4.0/tests/test_autolink.py +380 -0
- silica_agent-0.4.0/tests/test_autolink_facade.py +63 -0
- silica_agent-0.4.0/tests/test_autolink_note_title_index.py +116 -0
- silica_agent-0.4.0/tests/test_bounds.py +196 -0
- silica_agent-0.4.0/tests/test_bulk.py +347 -0
- silica_agent-0.4.0/tests/test_bulk_verify.py +454 -0
- silica_agent-0.4.0/tests/test_bus.py +117 -0
- silica_agent-0.4.0/tests/test_cancel_token.py +161 -0
- silica_agent-0.4.0/tests/test_cancel_tool_seam.py +78 -0
- silica_agent-0.4.0/tests/test_capability_seam.py +69 -0
- silica_agent-0.4.0/tests/test_checkpoints.py +94 -0
- silica_agent-0.4.0/tests/test_clean_tag.py +27 -0
- silica_agent-0.4.0/tests/test_cli_clear.py +31 -0
- silica_agent-0.4.0/tests/test_cli_subcommands.py +125 -0
- silica_agent-0.4.0/tests/test_cluster_cache.py +84 -0
- silica_agent-0.4.0/tests/test_codeast.py +567 -0
- silica_agent-0.4.0/tests/test_codedocs.py +179 -0
- silica_agent-0.4.0/tests/test_codegraph.py +373 -0
- silica_agent-0.4.0/tests/test_codewiki.py +240 -0
- silica_agent-0.4.0/tests/test_codewiki_capability.py +289 -0
- silica_agent-0.4.0/tests/test_cohesion.py +308 -0
- silica_agent-0.4.0/tests/test_collision_intra_chunk.py +71 -0
- silica_agent-0.4.0/tests/test_commit.py +190 -0
- silica_agent-0.4.0/tests/test_compaction.py +149 -0
- silica_agent-0.4.0/tests/test_compaction_wiring.py +147 -0
- silica_agent-0.4.0/tests/test_confidence_tier.py +85 -0
- silica_agent-0.4.0/tests/test_config_domain.py +10 -0
- silica_agent-0.4.0/tests/test_config_failfast.py +27 -0
- silica_agent-0.4.0/tests/test_config_git.py +11 -0
- silica_agent-0.4.0/tests/test_config_ws.py +21 -0
- silica_agent-0.4.0/tests/test_connect.py +398 -0
- silica_agent-0.4.0/tests/test_contested.py +233 -0
- silica_agent-0.4.0/tests/test_context_builder.py +161 -0
- silica_agent-0.4.0/tests/test_convert.py +367 -0
- silica_agent-0.4.0/tests/test_cooccur_key.py +42 -0
- silica_agent-0.4.0/tests/test_cooccurrence.py +687 -0
- silica_agent-0.4.0/tests/test_cooccurrence_community_labels.py +193 -0
- silica_agent-0.4.0/tests/test_cooccurrence_refresh_tool.py +142 -0
- silica_agent-0.4.0/tests/test_coordinator.py +227 -0
- silica_agent-0.4.0/tests/test_correlate.py +121 -0
- silica_agent-0.4.0/tests/test_curate_apply.py +342 -0
- silica_agent-0.4.0/tests/test_curator.py +264 -0
- silica_agent-0.4.0/tests/test_dedup_batch.py +177 -0
- silica_agent-0.4.0/tests/test_dedup_gate.py +129 -0
- silica_agent-0.4.0/tests/test_dedup_near_title_score.py +50 -0
- silica_agent-0.4.0/tests/test_dedup_refine_commands.py +288 -0
- silica_agent-0.4.0/tests/test_deferred.py +298 -0
- silica_agent-0.4.0/tests/test_deferred_flush.py +160 -0
- silica_agent-0.4.0/tests/test_distill_cascade.py +159 -0
- silica_agent-0.4.0/tests/test_distill_prefetch.py +172 -0
- silica_agent-0.4.0/tests/test_distill_profiles.py +196 -0
- silica_agent-0.4.0/tests/test_distiller_resilience.py +265 -0
- silica_agent-0.4.0/tests/test_distiller_schema.py +280 -0
- silica_agent-0.4.0/tests/test_document_rbac.py +40 -0
- silica_agent-0.4.0/tests/test_document_tool.py +108 -0
- silica_agent-0.4.0/tests/test_embed.py +544 -0
- silica_agent-0.4.0/tests/test_embed_binary.py +72 -0
- silica_agent-0.4.0/tests/test_embed_phantom_cleanup.py +37 -0
- silica_agent-0.4.0/tests/test_embed_search_topk.py +110 -0
- silica_agent-0.4.0/tests/test_embed_title_search.py +36 -0
- silica_agent-0.4.0/tests/test_episodic.py +698 -0
- silica_agent-0.4.0/tests/test_expand_capability.py +182 -0
- silica_agent-0.4.0/tests/test_extractive_grounding.py +120 -0
- silica_agent-0.4.0/tests/test_files_cap.py +33 -0
- silica_agent-0.4.0/tests/test_finalize_provenance.py +176 -0
- silica_agent-0.4.0/tests/test_finalize_status.py +51 -0
- silica_agent-0.4.0/tests/test_flag_note.py +90 -0
- silica_agent-0.4.0/tests/test_freshness_hook.py +177 -0
- silica_agent-0.4.0/tests/test_fs_backend_graph.py +159 -0
- silica_agent-0.4.0/tests/test_fs_body_cache.py +143 -0
- silica_agent-0.4.0/tests/test_fs_create_index.py +48 -0
- silica_agent-0.4.0/tests/test_fs_move_rewrite.py +464 -0
- silica_agent-0.4.0/tests/test_fsm.py +1465 -0
- silica_agent-0.4.0/tests/test_fsm_domain_wiring.py +29 -0
- silica_agent-0.4.0/tests/test_gate_leniency.py +127 -0
- silica_agent-0.4.0/tests/test_git_autocommit.py +197 -0
- silica_agent-0.4.0/tests/test_gitstate.py +126 -0
- silica_agent-0.4.0/tests/test_gitstate_codegraph.py +64 -0
- silica_agent-0.4.0/tests/test_golden_probes.py +105 -0
- silica_agent-0.4.0/tests/test_graph_community_labels.py +370 -0
- silica_agent-0.4.0/tests/test_graph_delta.py +451 -0
- silica_agent-0.4.0/tests/test_graph_diff.py +256 -0
- silica_agent-0.4.0/tests/test_graph_render_html.py +384 -0
- silica_agent-0.4.0/tests/test_graph_report.py +618 -0
- silica_agent-0.4.0/tests/test_graph_report_convention.py +68 -0
- silica_agent-0.4.0/tests/test_graph_tools.py +274 -0
- silica_agent-0.4.0/tests/test_graph_view_export.py +134 -0
- silica_agent-0.4.0/tests/test_graph_view_tree.py +61 -0
- silica_agent-0.4.0/tests/test_grounding_invariant.py +39 -0
- silica_agent-0.4.0/tests/test_gui_web.py +803 -0
- silica_agent-0.4.0/tests/test_heatmap.py +236 -0
- silica_agent-0.4.0/tests/test_hub_desc.py +37 -0
- silica_agent-0.4.0/tests/test_impact.py +67 -0
- silica_agent-0.4.0/tests/test_import_boundaries.py +28 -0
- silica_agent-0.4.0/tests/test_injector_atomic_parity.py +192 -0
- silica_agent-0.4.0/tests/test_ipynb.py +53 -0
- silica_agent-0.4.0/tests/test_keyphrase.py +388 -0
- silica_agent-0.4.0/tests/test_knn_edges.py +72 -0
- silica_agent-0.4.0/tests/test_lang_detect.py +25 -0
- silica_agent-0.4.0/tests/test_language.py +120 -0
- silica_agent-0.4.0/tests/test_ledger_integrity.py +230 -0
- silica_agent-0.4.0/tests/test_lexical.py +188 -0
- silica_agent-0.4.0/tests/test_lexical_fusion.py +15 -0
- silica_agent-0.4.0/tests/test_lexical_refresh_tool.py +167 -0
- silica_agent-0.4.0/tests/test_lexical_write_hook.py +20 -0
- silica_agent-0.4.0/tests/test_linter_documents.py +19 -0
- silica_agent-0.4.0/tests/test_linter_expires_at.py +71 -0
- silica_agent-0.4.0/tests/test_llm_bounded_call.py +32 -0
- silica_agent-0.4.0/tests/test_llm_streaming.py +143 -0
- silica_agent-0.4.0/tests/test_llm_structured_output.py +72 -0
- silica_agent-0.4.0/tests/test_llm_temperature.py +30 -0
- silica_agent-0.4.0/tests/test_load_recipe_domain.py +41 -0
- silica_agent-0.4.0/tests/test_logging.py +249 -0
- silica_agent-0.4.0/tests/test_loop_cancel.py +157 -0
- silica_agent-0.4.0/tests/test_map_layout.py +73 -0
- silica_agent-0.4.0/tests/test_map_serialize.py +92 -0
- silica_agent-0.4.0/tests/test_max_tokens_clamp.py +45 -0
- silica_agent-0.4.0/tests/test_mcp_surface.py +47 -0
- silica_agent-0.4.0/tests/test_media.py +189 -0
- silica_agent-0.4.0/tests/test_memory_lane.py +126 -0
- silica_agent-0.4.0/tests/test_mention_index.py +97 -0
- silica_agent-0.4.0/tests/test_merge_wiring.py +148 -0
- silica_agent-0.4.0/tests/test_message_provenance.py +39 -0
- silica_agent-0.4.0/tests/test_mineru_error.py +67 -0
- silica_agent-0.4.0/tests/test_minhash_dedup.py +120 -0
- silica_agent-0.4.0/tests/test_model_limits.py +239 -0
- silica_agent-0.4.0/tests/test_multi_file_injector.py +677 -0
- silica_agent-0.4.0/tests/test_note_edges.py +69 -0
- silica_agent-0.4.0/tests/test_notebook_adapter.py +71 -0
- silica_agent-0.4.0/tests/test_novelty_gate.py +142 -0
- silica_agent-0.4.0/tests/test_nucleate_dispatch.py +376 -0
- silica_agent-0.4.0/tests/test_nucleate_log.py +120 -0
- silica_agent-0.4.0/tests/test_onboarding_checks.py +512 -0
- silica_agent-0.4.0/tests/test_onboarding_wizard.py +978 -0
- silica_agent-0.4.0/tests/test_ops_io.py +78 -0
- silica_agent-0.4.0/tests/test_organize_fsm.py +521 -0
- silica_agent-0.4.0/tests/test_orphan_candidates_facade.py +72 -0
- silica_agent-0.4.0/tests/test_overlay.py +336 -0
- silica_agent-0.4.0/tests/test_partition.py +119 -0
- silica_agent-0.4.0/tests/test_payload_gate.py +100 -0
- silica_agent-0.4.0/tests/test_perception.py +303 -0
- silica_agent-0.4.0/tests/test_plans_loop.py +127 -0
- silica_agent-0.4.0/tests/test_profiles_registry.py +46 -0
- silica_agent-0.4.0/tests/test_progress_ledger.py +459 -0
- silica_agent-0.4.0/tests/test_prompt_cache_stability.py +62 -0
- silica_agent-0.4.0/tests/test_provenance.py +219 -0
- silica_agent-0.4.0/tests/test_provenance_dedup.py +86 -0
- silica_agent-0.4.0/tests/test_providers.py +447 -0
- silica_agent-0.4.0/tests/test_quarantine.py +62 -0
- silica_agent-0.4.0/tests/test_reading_path.py +83 -0
- silica_agent-0.4.0/tests/test_readme_sync.py +32 -0
- silica_agent-0.4.0/tests/test_recall_weights.py +46 -0
- silica_agent-0.4.0/tests/test_recipe_overlay.py +57 -0
- silica_agent-0.4.0/tests/test_recon.py +236 -0
- silica_agent-0.4.0/tests/test_regression_validation.py +207 -0
- silica_agent-0.4.0/tests/test_relate.py +24 -0
- silica_agent-0.4.0/tests/test_related_tool.py +213 -0
- silica_agent-0.4.0/tests/test_relatedness.py +654 -0
- silica_agent-0.4.0/tests/test_relatedness_boundary.py +92 -0
- silica_agent-0.4.0/tests/test_rename_kernel.py +466 -0
- silica_agent-0.4.0/tests/test_reply_language.py +67 -0
- silica_agent-0.4.0/tests/test_repo_mode.py +96 -0
- silica_agent-0.4.0/tests/test_repo_root.py +77 -0
- silica_agent-0.4.0/tests/test_report_analytics.py +168 -0
- silica_agent-0.4.0/tests/test_report_code_signals.py +37 -0
- silica_agent-0.4.0/tests/test_rerank.py +262 -0
- silica_agent-0.4.0/tests/test_retry_transient.py +122 -0
- silica_agent-0.4.0/tests/test_revert_command.py +36 -0
- silica_agent-0.4.0/tests/test_review_queue.py +147 -0
- silica_agent-0.4.0/tests/test_run.py +176 -0
- silica_agent-0.4.0/tests/test_run_log.py +157 -0
- silica_agent-0.4.0/tests/test_run_substrate_facade.py +230 -0
- silica_agent-0.4.0/tests/test_run_worker.py +89 -0
- silica_agent-0.4.0/tests/test_sanitize.py +321 -0
- silica_agent-0.4.0/tests/test_shared_memory_leases.py +69 -0
- silica_agent-0.4.0/tests/test_silica_delegate.py +56 -0
- silica_agent-0.4.0/tests/test_smoke.py +246 -0
- silica_agent-0.4.0/tests/test_snippet_gate.py +177 -0
- silica_agent-0.4.0/tests/test_source_adapters.py +186 -0
- silica_agent-0.4.0/tests/test_source_leaves.py +277 -0
- silica_agent-0.4.0/tests/test_span_grounding.py +201 -0
- silica_agent-0.4.0/tests/test_stale_command.py +41 -0
- silica_agent-0.4.0/tests/test_steer_feedback.py +237 -0
- silica_agent-0.4.0/tests/test_store_seam.py +101 -0
- silica_agent-0.4.0/tests/test_structural_gaps.py +67 -0
- silica_agent-0.4.0/tests/test_subagent.py +467 -0
- silica_agent-0.4.0/tests/test_target_dir_resolution.py +50 -0
- silica_agent-0.4.0/tests/test_taxonomy.py +229 -0
- silica_agent-0.4.0/tests/test_templates.py +275 -0
- silica_agent-0.4.0/tests/test_text_seam.py +112 -0
- silica_agent-0.4.0/tests/test_three_way_merge.py +120 -0
- silica_agent-0.4.0/tests/test_timeline.py +61 -0
- silica_agent-0.4.0/tests/test_title_identity.py +189 -0
- silica_agent-0.4.0/tests/test_title_index_cache.py +49 -0
- silica_agent-0.4.0/tests/test_token_meter.py +43 -0
- silica_agent-0.4.0/tests/test_tool_call_fanout.py +47 -0
- silica_agent-0.4.0/tests/test_tool_collapse_field.py +36 -0
- silica_agent-0.4.0/tests/test_tool_progress.py +734 -0
- silica_agent-0.4.0/tests/test_tool_sensitive.py +139 -0
- silica_agent-0.4.0/tests/test_trie_incremental.py +163 -0
- silica_agent-0.4.0/tests/test_ui_commands.py +149 -0
- silica_agent-0.4.0/tests/test_undo_journal.py +222 -0
- silica_agent-0.4.0/tests/test_update.py +110 -0
- silica_agent-0.4.0/tests/test_validate_body_field_coercion.py +80 -0
- silica_agent-0.4.0/tests/test_validate_links.py +388 -0
- silica_agent-0.4.0/tests/test_validate_title_gate_scope.py +120 -0
- silica_agent-0.4.0/tests/test_vault_codebase_switch.py +98 -0
- silica_agent-0.4.0/tests/test_vault_command.py +106 -0
- silica_agent-0.4.0/tests/test_vault_config_paths.py +57 -0
- silica_agent-0.4.0/tests/test_vault_conventions.py +431 -0
- silica_agent-0.4.0/tests/test_vault_display.py +50 -0
- silica_agent-0.4.0/tests/test_vault_energy.py +106 -0
- silica_agent-0.4.0/tests/test_vault_factory.py +155 -0
- silica_agent-0.4.0/tests/test_vault_manifest.py +210 -0
- silica_agent-0.4.0/tests/test_vault_map.py +142 -0
- silica_agent-0.4.0/tests/test_vault_root_silica.py +15 -0
- silica_agent-0.4.0/tests/test_warning_ledger.py +53 -0
- silica_agent-0.4.0/tests/test_web_research.py +247 -0
- silica_agent-0.4.0/tests/test_wikilink.py +19 -0
- silica_agent-0.4.0/tests/test_worker_concurrency.py +56 -0
- silica_agent-0.4.0/tests/test_worker_config.py +16 -0
- silica_agent-0.4.0/tests/test_worker_profile.py +27 -0
- silica_agent-0.4.0/tests/test_workqueue.py +121 -0
- silica_agent-0.4.0/tests/test_workqueue_sentinel.py +131 -0
- silica_agent-0.4.0/tests/test_write_boundary_regression.py +39 -0
- silica_agent-0.4.0/tests/test_write_note_tool.py +102 -0
- silica_agent-0.4.0/tests/test_ws_backend.py +441 -0
- silica_agent-0.4.0/uv.lock +4394 -0
- silica_agent-0.4.0/verify-or-revert.cast +4 -0
- silica_agent-0.4.0/web/README.md +22 -0
- silica_agent-0.4.0/web/animation.html +858 -0
- silica_agent-0.4.0/web/fonts/martian-mono-latin.woff2 +0 -0
- silica_agent-0.4.0/web/index.html +336 -0
- silica_agent-0.4.0/web/silica-favicon.svg +22 -0
- silica_agent-0.4.0/web/silica-logo.svg +21 -0
- silica_agent-0.4.0/web/style.css +688 -0
- silica_agent-0.4.0/web/vercel.json +13 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""PreToolUse guard: keep Bash commands on `uv`, the project's only env manager.
|
|
3
|
+
|
|
4
|
+
Blocks the two things that actually desync the uv-managed .venv / uv.lock:
|
|
5
|
+
- `pip install` run outside uv (use `uv add` / `uv pip install`)
|
|
6
|
+
- a bare `pytest` invocation (use `uv run pytest`)
|
|
7
|
+
|
|
8
|
+
Wired from .claude/settings.json. Exit 2 = block; stderr is shown to the model.
|
|
9
|
+
Run `python3 .claude/hooks/uv-guard.py --selftest` to check the matcher.
|
|
10
|
+
"""
|
|
11
|
+
import json
|
|
12
|
+
import re
|
|
13
|
+
import sys
|
|
14
|
+
|
|
15
|
+
# Match only at the start of a command *segment* (^, or after ; & | newline), so a
|
|
16
|
+
# literal "pip install" / "pytest" inside a quoted arg or commit message is ignored.
|
|
17
|
+
# ponytail: segment-anchored regex, not a shell lexer; a pipeline like
|
|
18
|
+
# `echo x | pytest` would slip through. Swap in shlex if that ever bites.
|
|
19
|
+
_SEG = r"(?:^|[;&|\n])\s*"
|
|
20
|
+
_PIP = re.compile(_SEG + r"(?:sudo\s+)?(?:python[0-9.]*\s+-m\s+)?pip[0-9.]*\s+install\b")
|
|
21
|
+
_PYTEST = re.compile(_SEG + r"pytest\b")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def check(cmd: str) -> str | None:
|
|
25
|
+
"""Return a block reason, or None to allow."""
|
|
26
|
+
if _PIP.search(cmd):
|
|
27
|
+
return "pip install desyncs the uv env. Use `uv add <pkg>` (or `uv pip install`)."
|
|
28
|
+
if _PYTEST.search(cmd):
|
|
29
|
+
return "Bare pytest may use the wrong interpreter. Use `uv run pytest`."
|
|
30
|
+
return None
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _selftest() -> None:
|
|
34
|
+
assert check("pip install foo")
|
|
35
|
+
assert check("pip3 install foo")
|
|
36
|
+
assert check("python -m pip install foo")
|
|
37
|
+
assert check("sudo pip install foo")
|
|
38
|
+
assert check("cd x && pip install foo")
|
|
39
|
+
assert check("pytest tests/")
|
|
40
|
+
assert check("cd x && pytest -k thing")
|
|
41
|
+
assert check("uv add foo") is None
|
|
42
|
+
assert check("uv pip install foo") is None
|
|
43
|
+
assert check("uv run pip install foo") is None
|
|
44
|
+
assert check("uv run pytest -q") is None
|
|
45
|
+
assert check("git commit -m 'fix pip install docs'") is None
|
|
46
|
+
assert check("git commit -m 'flaky pytest run'") is None
|
|
47
|
+
print("uv-guard selftest ok")
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
if __name__ == "__main__":
|
|
51
|
+
if "--selftest" in sys.argv:
|
|
52
|
+
_selftest()
|
|
53
|
+
sys.exit(0)
|
|
54
|
+
cmd = json.load(sys.stdin).get("tool_input", {}).get("command", "")
|
|
55
|
+
reason = check(cmd)
|
|
56
|
+
if reason:
|
|
57
|
+
print(reason, file=sys.stderr)
|
|
58
|
+
sys.exit(2)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "silica",
|
|
3
|
+
"description": "Silica for Claude Code — an Obsidian vault as persistent agent memory, served by a deterministic knowledge-graph engine.",
|
|
4
|
+
"owner": {
|
|
5
|
+
"name": "Alessandro Carosia"
|
|
6
|
+
},
|
|
7
|
+
"plugins": [
|
|
8
|
+
{
|
|
9
|
+
"name": "silica",
|
|
10
|
+
"source": "./",
|
|
11
|
+
"description": "Obsidian-vault memory over MCP: recall before answering, capture after learning."
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "silica",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Obsidian-vault memory for coding agents: deterministic knowledge-graph engine served over MCP (semantic + literal search, gated note writing) with a skill teaching the recall/capture loop.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Alessandro Carosia"
|
|
7
|
+
},
|
|
8
|
+
"keywords": ["memory", "knowledge-graph", "obsidian", "vault", "mcp"],
|
|
9
|
+
"mcpServers": {
|
|
10
|
+
"silica": {
|
|
11
|
+
"command": "uv",
|
|
12
|
+
"args": [
|
|
13
|
+
"run",
|
|
14
|
+
"--project",
|
|
15
|
+
"${CLAUDE_PLUGIN_ROOT}",
|
|
16
|
+
"--with",
|
|
17
|
+
"mcp",
|
|
18
|
+
"silica",
|
|
19
|
+
"mcp"
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# ============================================================================
|
|
2
|
+
# Silica — configuration
|
|
3
|
+
# Copy this file to .env. Every line is commented out; defaults apply when
|
|
4
|
+
# unset. Ordered from essential to expert: stop reading when you have enough.
|
|
5
|
+
# ============================================================================
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# ----------------------------------------------------------------------------
|
|
9
|
+
# 1. REQUIRED (the first-run wizard fills these for you)
|
|
10
|
+
# ----------------------------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
# Main LLM model (litellm format).
|
|
13
|
+
# Examples: openrouter/anthropic/claude-sonnet-4-20250514, openai/gpt-4o,
|
|
14
|
+
# ollama/llama3.1:8b, lmstudio/qwen/qwen3.5-9b
|
|
15
|
+
# SILICA_MODEL=openrouter/google/gemini-3.5-flash
|
|
16
|
+
|
|
17
|
+
# Provider preset (derived from SILICA_MODEL when unset).
|
|
18
|
+
# One of: openrouter, lmstudio, ollama, gemini, openai, groq, deepseek,
|
|
19
|
+
# mistral, xai, custom. Silica is tool-driven — with ollama pick a model that
|
|
20
|
+
# supports function-calling (llama3.1, qwen2.5); text-only models will stall.
|
|
21
|
+
# SILICA_PROVIDER=openrouter
|
|
22
|
+
|
|
23
|
+
# API key for the provider above. ANTHROPIC_API_KEY / OPENAI_API_KEY are only
|
|
24
|
+
# needed when SILICA_MODEL targets that provider directly (litellm reads them).
|
|
25
|
+
# OPENROUTER_API_KEY=
|
|
26
|
+
# ANTHROPIC_API_KEY=
|
|
27
|
+
# OPENAI_API_KEY=
|
|
28
|
+
|
|
29
|
+
# Obsidian vault path (required for the default fs backend)
|
|
30
|
+
# SILICA_VAULT=/path/to/your/vault
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# ----------------------------------------------------------------------------
|
|
34
|
+
# 2. CUSTOM ENDPOINT — only with SILICA_PROVIDER=custom
|
|
35
|
+
# ----------------------------------------------------------------------------
|
|
36
|
+
# Any OpenAI-compatible server without a dedicated preset: vLLM, llama.cpp,
|
|
37
|
+
# LocalAI, Jan, or a hosted vendor. Both variables route the "custom" preset.
|
|
38
|
+
|
|
39
|
+
# SILICA_PROVIDER_BASE_URL=http://localhost:8080/v1
|
|
40
|
+
# SILICA_PROVIDER_API_KEY=
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
# ----------------------------------------------------------------------------
|
|
44
|
+
# 3. RACCOMANDED OPTIONS — embeddings, vault behavior, UI
|
|
45
|
+
# ----------------------------------------------------------------------------
|
|
46
|
+
|
|
47
|
+
# Embedding model for semantic search and deduplication.
|
|
48
|
+
# Example: qwen3-embedding-4b (LM Studio), text-embedding-3-small (OpenAI)
|
|
49
|
+
# SILICA_EMBEDDING_MODEL=qwen3-embedding-4b
|
|
50
|
+
|
|
51
|
+
# Embeddings endpoint (defaults to LM Studio local) and its API key
|
|
52
|
+
# SILICA_EMBEDDING_BASE_URL=http://localhost:1234/v1
|
|
53
|
+
# SILICA_EMBEDDING_API_KEY=lm-studio
|
|
54
|
+
|
|
55
|
+
# Git commit safety net for vault writes: off (default) or auto
|
|
56
|
+
# SILICA_GIT_COMMIT=off
|
|
57
|
+
|
|
58
|
+
# Inbox folder inside the vault, for staging inbound files. Default: Inbox
|
|
59
|
+
# SILICA_INBOX_DIR=Inbox
|
|
60
|
+
|
|
61
|
+
# Tool progress display level: off, new, all, verbose
|
|
62
|
+
# SILICA_TOOL_PROGRESS=all
|
|
63
|
+
|
|
64
|
+
# Show reasoning/thinking blocks from the model (True/False)
|
|
65
|
+
# SILICA_SHOW_THINKING=True
|
|
66
|
+
|
|
67
|
+
# Startup banner art (True → wordmark, False → plain one-liner)
|
|
68
|
+
# SILICA_SHOW_BANNER=True
|
|
69
|
+
|
|
70
|
+
# Debug logging on stderr (True/False)
|
|
71
|
+
# SILICA_VERBOSE=False
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
# ----------------------------------------------------------------------------
|
|
75
|
+
# 4. ADVANCED — workers, context, search, PDF
|
|
76
|
+
# ----------------------------------------------------------------------------
|
|
77
|
+
|
|
78
|
+
# Sub-agent worker model for background tasks (dedup, refiner). If unset,
|
|
79
|
+
# workers fall back to the main model configuration.
|
|
80
|
+
# SILICA_WORKER_MODEL=lmstudio/qwen/qwen3.5-9b
|
|
81
|
+
# SILICA_WORKER_PROVIDER=lmstudio
|
|
82
|
+
# SILICA_WORKER_API_KEY=lm-studio
|
|
83
|
+
|
|
84
|
+
# Concurrency caps: sub-agent threads (default 3), worker LLM calls (default 4)
|
|
85
|
+
# SILICA_SUBAGENT_MAX_CONCURRENT=3
|
|
86
|
+
# SILICA_WORKER_MAX_CONCURRENT=4
|
|
87
|
+
|
|
88
|
+
# Context window pin for LOCAL providers (LM Studio, Ollama) only; OpenRouter
|
|
89
|
+
# always uses the provider-reported context_length. Auto-detected if unset.
|
|
90
|
+
# SILICA_MAX_CONTEXT=60000
|
|
91
|
+
|
|
92
|
+
# Max generation tokens fallback. Default: 65536. Oversized values shrink the
|
|
93
|
+
# OpenRouter provider pool (endpoints with a smaller output cap are dropped).
|
|
94
|
+
# MAX_TOKENS=32768
|
|
95
|
+
|
|
96
|
+
# Tavily API key (enables /web-search). Bare TAVILY_API_KEY works as fallback.
|
|
97
|
+
# SILICA_TAVILY_API_KEY=
|
|
98
|
+
|
|
99
|
+
# PDF-to-Markdown converter: mineru (default, silica[pdf] extra), docling, or
|
|
100
|
+
# opendataloader. OCR languages are used by docling only.
|
|
101
|
+
# SILICA_PDF_PROVIDER=mineru
|
|
102
|
+
# SILICA_PDF_OCR_LANG=en,it,fr,de,es
|
|
103
|
+
|
|
104
|
+
# Driver backend: fs (default, headless filesystem). The Obsidian plugin
|
|
105
|
+
# bridge installs the ws backend live at dial-in; never set ws here.
|
|
106
|
+
# SILICA_BACKEND=fs
|
|
107
|
+
|
|
108
|
+
# Vault display name (prompt fallback when no vault path is set)
|
|
109
|
+
# SILICA_VAULT_NAME=My Vault
|
|
110
|
+
|
|
111
|
+
# Domain-pack overlay name, and override dir for recipe packs
|
|
112
|
+
# SILICA_DOMAIN=
|
|
113
|
+
# SILICA_DOMAINS_DIR=
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
# ----------------------------------------------------------------------------
|
|
117
|
+
# 5. RERANKER — optional recall reordering
|
|
118
|
+
# ----------------------------------------------------------------------------
|
|
119
|
+
# A cross-encoder reads query and candidate TOGETHER and reorders recall
|
|
120
|
+
# results. It is not an LLM and not an embedding model, so LM Studio and
|
|
121
|
+
# Ollama cannot serve one. The supported way needs no variables here:
|
|
122
|
+
#
|
|
123
|
+
# pip install silica[rerank]
|
|
124
|
+
#
|
|
125
|
+
# The cross-encoder then runs inside Silica (~2GB weights on first use).
|
|
126
|
+
# The variables below only point Silica at a reranker you already serve
|
|
127
|
+
# (llama.cpp/Infinity/Jina/Cohere, /rerank protocol); all three must be set
|
|
128
|
+
# and take priority over the in-process one. Local llama.cpp example:
|
|
129
|
+
# llama-server -m bge-reranker-v2-m3.gguf --reranking --port 1235
|
|
130
|
+
# SILICA_RERANK_BASE_URL=http://localhost:1235/v1
|
|
131
|
+
# SILICA_RERANK_MODEL=bge-reranker-v2-m3
|
|
132
|
+
# SILICA_RERANK_API_KEY=lm-studio
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
# ----------------------------------------------------------------------------
|
|
136
|
+
# 6. EXPERT — similarity thresholds, mindmap, token budgets
|
|
137
|
+
# ----------------------------------------------------------------------------
|
|
138
|
+
# All have safe defaults; override only to tune behavior/cost.
|
|
139
|
+
|
|
140
|
+
# Dedup: ≥ HIGH → patch existing note; ≤ LOW → new note. Title threshold
|
|
141
|
+
# promotes a pair into the borderline window; THEME is the keep floor.
|
|
142
|
+
# SILICA_SIM_THRESHOLD_HIGH=0.85
|
|
143
|
+
# SILICA_SIM_THRESHOLD_LOW=0.65
|
|
144
|
+
# SILICA_SIM_TITLE_THRESHOLD=0.80
|
|
145
|
+
# SILICA_SIM_THRESHOLD_THEME=0.35
|
|
146
|
+
|
|
147
|
+
# Candidate notes retrieved per note during dedup scans. Default: 5
|
|
148
|
+
# SILICA_DEDUP_SCAN_K=5
|
|
149
|
+
|
|
150
|
+
# Language for the co-occurrence graph. Default: auto
|
|
151
|
+
# SILICA_COOCCURRENCE_LANG=auto
|
|
152
|
+
|
|
153
|
+
# Mindmap (/map <note>): node cap, latent neighbours, wikilink BFS depth
|
|
154
|
+
# SILICA_MINDMAP_MAX_NODES=35
|
|
155
|
+
# SILICA_MINDMAP_LATENT_K=10
|
|
156
|
+
# SILICA_MINDMAP_HOPS=2
|
|
157
|
+
|
|
158
|
+
# Per-capability generation ceilings and distiller chunking.
|
|
159
|
+
# NOTE: read WITHOUT the SILICA_ prefix (bare names).
|
|
160
|
+
# DEDUP_MAX_TOKENS=1024
|
|
161
|
+
# ORPHAN_MAX_TOKENS=512
|
|
162
|
+
# EXPAND_MAX_TOKENS=4096
|
|
163
|
+
# ENRICH_MAX_TOKENS=256000
|
|
164
|
+
# REFINE_MAX_TOKENS=256000
|
|
165
|
+
# MODEL_CONTEXT_WINDOW=0 # 0 = auto-detect from the model
|
|
166
|
+
# DISTILLER_MAX_TOKENS=0 # 0 = derive from context window
|
|
167
|
+
# DISTILLER_TOKEN_SAFETY_MARGIN=2048
|
|
168
|
+
# DISTILLER_CHUNK_MAX_BYTES=30720 # 30 * 1024
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Dependabot version updates.
|
|
2
|
+
# Two ecosystems match this repo: uv-managed Python deps (pyproject.toml + uv.lock)
|
|
3
|
+
# and the pinned actions in .github/workflows/release.yml.
|
|
4
|
+
# Commit prefixes (build / ci) map to cliff.toml's "^build|^ci" -> Build & CI section.
|
|
5
|
+
version: 2
|
|
6
|
+
updates:
|
|
7
|
+
- package-ecosystem: "uv"
|
|
8
|
+
directory: "/"
|
|
9
|
+
schedule:
|
|
10
|
+
interval: "weekly"
|
|
11
|
+
commit-message:
|
|
12
|
+
prefix: "build"
|
|
13
|
+
include: "scope"
|
|
14
|
+
open-pull-requests-limit: 5
|
|
15
|
+
# Minor/patch bumps arrive as one grouped PR to cut solo-maintainer noise;
|
|
16
|
+
# majors stay individual so breaking changes are reviewed on their own.
|
|
17
|
+
groups:
|
|
18
|
+
python-minor-patch:
|
|
19
|
+
patterns: ["*"]
|
|
20
|
+
update-types: ["minor", "patch"]
|
|
21
|
+
|
|
22
|
+
- package-ecosystem: "github-actions"
|
|
23
|
+
directory: "/"
|
|
24
|
+
schedule:
|
|
25
|
+
interval: "weekly"
|
|
26
|
+
commit-message:
|
|
27
|
+
prefix: "ci"
|
|
28
|
+
include: "scope"
|
|
29
|
+
groups:
|
|
30
|
+
actions:
|
|
31
|
+
patterns: ["*"]
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
name: release
|
|
2
|
+
|
|
3
|
+
# Cut a release by pushing a SemVer tag, e.g.:
|
|
4
|
+
# git tag v0.3.0 && git push origin v0.3.0
|
|
5
|
+
# setuptools-scm reads the tag to stamp the version; git-cliff builds the notes.
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
tags:
|
|
10
|
+
- "v*"
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: write # create the GitHub Release
|
|
14
|
+
id-token: write # OIDC for PyPI Trusted Publishing (no stored token)
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
release:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
fetch-depth: 0 # full history + tags for setuptools-scm and git-cliff
|
|
23
|
+
|
|
24
|
+
- uses: actions/setup-python@v5
|
|
25
|
+
with:
|
|
26
|
+
python-version: "3.11"
|
|
27
|
+
|
|
28
|
+
- name: Build sdist and wheel
|
|
29
|
+
run: |
|
|
30
|
+
python -m pip install --upgrade build
|
|
31
|
+
python -m build
|
|
32
|
+
|
|
33
|
+
- name: Verify built version matches the tag
|
|
34
|
+
run: ls -1 dist/ && python -c "import pathlib,sys; t='${{ github.ref_name }}'.lstrip('v'); files=[p.name for p in pathlib.Path('dist').glob('*.whl')]; sys.exit(0 if any(t.replace('-','_') in f for f in files) else f'tag {t} not in {files}')"
|
|
35
|
+
|
|
36
|
+
- name: Verify the wheel ships runtime assets
|
|
37
|
+
# Guards the package-data config: a wheel that drops these crashes at
|
|
38
|
+
# runtime (recipes/prompts/domains are loaded via Path(__file__)).
|
|
39
|
+
run: |
|
|
40
|
+
for f in \
|
|
41
|
+
silica/capabilities/prompts/distiller_prompt.txt \
|
|
42
|
+
silica/recipes/injector.yaml \
|
|
43
|
+
silica/domains/codebase.yaml \
|
|
44
|
+
silica/ui/web/static/index.html \
|
|
45
|
+
silica/.env.example; do
|
|
46
|
+
unzip -l dist/*.whl | grep -q "$f" || { echo "MISSING from wheel: $f"; exit 1; }
|
|
47
|
+
done
|
|
48
|
+
echo "all runtime assets present in wheel"
|
|
49
|
+
|
|
50
|
+
- name: Publish to PyPI
|
|
51
|
+
# Trusted Publishing via OIDC — the PyPI project must have this repo +
|
|
52
|
+
# workflow registered as a trusted publisher. No API token in secrets.
|
|
53
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
54
|
+
|
|
55
|
+
- name: Generate release notes
|
|
56
|
+
uses: orhun/git-cliff-action@v4
|
|
57
|
+
id: notes
|
|
58
|
+
with:
|
|
59
|
+
config: cliff.toml
|
|
60
|
+
args: --latest --strip header
|
|
61
|
+
|
|
62
|
+
- name: Publish GitHub release
|
|
63
|
+
uses: softprops/action-gh-release@v2
|
|
64
|
+
with:
|
|
65
|
+
body: ${{ steps.notes.outputs.content }}
|
|
66
|
+
files: dist/*
|
|
67
|
+
fail_on_unmatched_files: true
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
bin/
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
share/python-wheels/
|
|
24
|
+
*.egg-info/
|
|
25
|
+
.installed.cfg
|
|
26
|
+
*.egg
|
|
27
|
+
MANIFEST
|
|
28
|
+
|
|
29
|
+
# setuptools-scm generated version file
|
|
30
|
+
silica/_version.py
|
|
31
|
+
|
|
32
|
+
# PyInstaller
|
|
33
|
+
# Usually these files are written by a python script from a template
|
|
34
|
+
# before PyInstaller builds the exe, so they can be injected at build time.
|
|
35
|
+
*.manifest
|
|
36
|
+
*.spec
|
|
37
|
+
|
|
38
|
+
# Installer logs
|
|
39
|
+
pip-log.txt
|
|
40
|
+
pip-delete-this-directory.txt
|
|
41
|
+
|
|
42
|
+
# Unit test / coverage reports
|
|
43
|
+
htmlcov/
|
|
44
|
+
.tox/
|
|
45
|
+
.nosenvy/
|
|
46
|
+
.noscript/
|
|
47
|
+
.pytest_cache/
|
|
48
|
+
.mypy_cache/
|
|
49
|
+
.ruff_cache/
|
|
50
|
+
.hatch/
|
|
51
|
+
.coverage
|
|
52
|
+
.coverage.*
|
|
53
|
+
.cache
|
|
54
|
+
nosetests.xml
|
|
55
|
+
coverage.xml
|
|
56
|
+
*.cover
|
|
57
|
+
*.py,cover
|
|
58
|
+
.hypothesis/
|
|
59
|
+
.run/
|
|
60
|
+
tests/fixtures/synthetic_vault/*
|
|
61
|
+
|
|
62
|
+
# Translations
|
|
63
|
+
*.mo
|
|
64
|
+
*.pot
|
|
65
|
+
|
|
66
|
+
# Django stuff:
|
|
67
|
+
*.log
|
|
68
|
+
local_settings.py
|
|
69
|
+
db.sqlite3
|
|
70
|
+
db.sqlite3-journal
|
|
71
|
+
|
|
72
|
+
# Sphinx documentation
|
|
73
|
+
docs/_build/
|
|
74
|
+
|
|
75
|
+
# PyBuilder
|
|
76
|
+
.pybuilder/
|
|
77
|
+
target/
|
|
78
|
+
|
|
79
|
+
# Jupyter Notebook
|
|
80
|
+
.ipynb_checkpoints
|
|
81
|
+
|
|
82
|
+
# IPython
|
|
83
|
+
profile_default/
|
|
84
|
+
ipython_config.py
|
|
85
|
+
|
|
86
|
+
# pyenv
|
|
87
|
+
# For a library or package, you might want to share your python version with the team.
|
|
88
|
+
# In that case, comment out the following line.
|
|
89
|
+
#.python-version
|
|
90
|
+
|
|
91
|
+
# pipenv
|
|
92
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
93
|
+
# However, if you're executing a system command that installs a package, you might want to ignore it.
|
|
94
|
+
#Pipfile.lock
|
|
95
|
+
|
|
96
|
+
# poetry
|
|
97
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
98
|
+
#poetry.lock
|
|
99
|
+
|
|
100
|
+
# pdm
|
|
101
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
102
|
+
.pdm-plugins/
|
|
103
|
+
.pdm-python/
|
|
104
|
+
.pdm-build/
|
|
105
|
+
|
|
106
|
+
# PEP 582; used by e.g. github.com/lincolnloop/layman and github.com/pdm-project/pdm
|
|
107
|
+
__pypackages__/
|
|
108
|
+
|
|
109
|
+
# Celery stuff
|
|
110
|
+
celerybeat-schedule
|
|
111
|
+
celerybeat.pid
|
|
112
|
+
|
|
113
|
+
# SageMath parsed files
|
|
114
|
+
*.sage.py
|
|
115
|
+
|
|
116
|
+
# Environments
|
|
117
|
+
.env
|
|
118
|
+
.venv
|
|
119
|
+
env/
|
|
120
|
+
venv/
|
|
121
|
+
ENV/
|
|
122
|
+
env.bak/
|
|
123
|
+
venv.bak/
|
|
124
|
+
|
|
125
|
+
# Spyder project settings
|
|
126
|
+
.spyderproject
|
|
127
|
+
.spyproject
|
|
128
|
+
|
|
129
|
+
# Rope project settings
|
|
130
|
+
.ropeproject
|
|
131
|
+
|
|
132
|
+
# mkdocs documentation
|
|
133
|
+
/site
|
|
134
|
+
|
|
135
|
+
# mypy
|
|
136
|
+
.mypy_cache/
|
|
137
|
+
.nosetests/
|
|
138
|
+
.pytest_cache/
|
|
139
|
+
.tox/
|
|
140
|
+
.htmlcov/
|
|
141
|
+
.coverage
|
|
142
|
+
|
|
143
|
+
# Editors
|
|
144
|
+
.vscode/
|
|
145
|
+
.idea/
|
|
146
|
+
*.swp
|
|
147
|
+
*.swo
|
|
148
|
+
|
|
149
|
+
# Graphs
|
|
150
|
+
graph.html
|
|
151
|
+
|
|
152
|
+
# OS files
|
|
153
|
+
.DS_Store
|
|
154
|
+
Thumbs.db
|
|
155
|
+
|
|
156
|
+
# Documentation
|
|
157
|
+
/docs/*
|
|
158
|
+
|
|
159
|
+
# Agents
|
|
160
|
+
/.agents
|
|
161
|
+
CLAUDE.md
|
|
162
|
+
# Ignore local/session Claude state, but track shared harness config.
|
|
163
|
+
/.claude/*
|
|
164
|
+
!/.claude/settings.json
|
|
165
|
+
!/.claude/hooks/
|
|
166
|
+
/memory
|
|
167
|
+
.superpowers
|
|
168
|
+
|
|
169
|
+
# Vault data (personal)
|
|
170
|
+
.silica/
|
|
171
|
+
.import_linter_cache/
|
|
172
|
+
|
|
173
|
+
# DB
|
|
174
|
+
ruvector.db
|
|
175
|
+
agentdb.rvf
|
|
176
|
+
|
|
177
|
+
# Locks
|
|
178
|
+
*.rvf.lock
|
|
179
|
+
CONTEXT.md
|
|
180
|
+
|
|
181
|
+
# Generated report — line numbers drift; regenerate with /ponytail-debt
|
|
182
|
+
PONYTAIL-DEBT.md
|
|
183
|
+
|
|
184
|
+
# Golden harness per-run output (only baseline.json is committed)
|
|
185
|
+
evals/golden/metrics.json
|
|
186
|
+
# Stamped per-run benchmark outputs (evals/<bench>/metrics.<run_id>.json)
|
|
187
|
+
evals/*/metrics.*.json
|
|
188
|
+
|
|
189
|
+
# benchmark vaults + frozen corpora (never committed)
|
|
190
|
+
bench/
|