| パス | 内容 |
|---|---|
src/frontend/ |
UI(Vanilla JS / CSS)。React/Vite は未使用。 |
src/backend/ |
Rust / Tauri / Axum。MCP サーバー・LSA・埋め込みエンジン。 |
tests/ |
テスト一式(原則ルート直下に集約)。API/MCP は test_mcp_client.mjs、E2E は tests/e2e/。Rust の結合テストファイルだけは Cargo の都合で src/backend/tests/ に配置。詳細は tests/README.md。 |
docs/specification/ |
本仕様書群。 |
.agent/rules/ |
AI エージェント用プロジェクト運用ルール。 |
tools/ |
開発用スクリプト。計測(count_loc, nesting_depth)、Mermaid 構文チェック(check-mermaid)、起動・テスト用など。 |
npm run check-mermaid を実行する。対象は docs/ と journals/(引数でファイル指定も可)。要 @mermaid-js/mermaid-cli(mmdc)。npm run dev(F5 などでそのまま起動できる)。起動時に LSA/HNSW 学習あり。npm run dev:fast。TELOS_SKIP_BOOT_TRAIN=1 で起動時学習をスキップ。検索が必要なら UI の「RE-INDEX」を実行。npm run dev:pro または npm run dev:fast:pro。embedding_model/ に ONNX モデルと vocab を配置すること。ルール: 配布ビルド(build:community / build:pro)の前に、Community 版・Pro 版の全テストを実行し、すべて成功していること。
npm run test:rust(Community 単体)npm run test:rust:pro(Pro 単体)npm run test:e2e(Community E2E)npm run test:e2e:pro(Pro E2E。embedding モデル要)一括実行: npm run test:all で上記 1〜4 を順に実行する。失敗したら配布ビルドを行わない。
Community: npm run build:community
src/backend/tauri.community.conf.json(productName: TelosDB-Community、vec0.dll のみ同梱)npm run build:pro
src/backend/tauri.pro.conf.json(productName: TelosDB-Pro、埋め込みモデル等を含む)それぞれ別名のインストーラ(例: TelosDB-Community_*.exe, TelosDB-Pro_*.exe)が生成されます。
cargo build で LSA のみ。cargo build --no-default-features --features pro。埋め込み・HNSW 等の Pro 用コードが含まれる。src/backend/src/db/): sqlite-vec(vec0)でベクトル、FTS5 で全文検索。次元は Community 50 / Pro 768。
get_document_count・get_item_content_with_doc・get_document_id_by_path 等のラップ関数を利用。FTS 同期は heal_items_fts。src/backend/src/mcp/):
mod.rs の create_mcp_app(state)。起動は build_app_state で状態を組み立てたあと run_server で LSA/HNSW 同期 → listen。tools/registry.rs の tool_list()。新規ツール追加時は registry と tools::dispatch_tool の match の両方に追加する。tools/search.rs の get_query_vector(state, text) で取得(LSA/埋め込みの切り替えはここで完結)。utils/lsa.rs で SVD による 50 次元ベクトル化(Community)。utils/embedding_pro.rs。ONNX(tract または ort)で 768 次元。詳細は 07_embedding_tract.md。invoke / listen でバックエンドと非同期通信。MCP は 3001 で別接続。npm run test:e2e はバイナリが既にあればビルドをスキップする。永遠に待たないようにするには npm run test:e2e:timed(既定 8 分で打ち切り)を使う。打ち切り時はコンソール出力をログとして確認する。npm run test:e2e:spec -- --spec tests/e2e/specs/screenshot-docs-modal.spec.js。複数指定する場合は --spec を複数並べるか、--spec "tests/e2e/specs/foo.spec.js" "tests/e2e/specs/bar.spec.js" のようにする。npm run test:e2e:timed で 1 回だけ実行(既定 8 分で打ち切り)。リトライはしない。失敗したら原因を直してから再実行する。log::info! 等を読んでから原因を判断する。npm run dev:log で起動すると標準出力・標準エラーが tmp/dev.log に追記される。不具合再現後に tmp/dev.log を開いて確認する。