This commit is contained in:
@@ -117,6 +117,22 @@ grep -A 20 'LEGACY_SECTION_REDIRECT' ui/src/components/settings/SettingsSidebar.
|
||||
|
||||
---
|
||||
|
||||
## 4-C. TopBar のトップレベルタブ (page) を追加・削除した場合
|
||||
|
||||
`PageId` は複数ファイルに分散しているので、追加・削除のどちらでも下記をすべて触る。
|
||||
|
||||
**対象ファイル (すべて必須):**
|
||||
- `ui/src/lib/urlState.ts` — `PAGES` 配列 (PageId の唯一の定義源)
|
||||
- `ui/src/components/layout/TopBar.tsx` — `NAV_ITEMS` (タブ表示順 + adminOnly / requiresAuth)
|
||||
- `ui/src/components/layout/NavDrawer.tsx` — `NAV_ICONS` は `Record<PageId, ReactNode>` の網羅型。**PageId を削除したら同名キーも消さないと TS が excess-property で落ちる**
|
||||
- `ui/src/App.tsx` — `{page === '...' && <... />}` のレンダー分岐 (+ 不要になった import の削除)
|
||||
- 外部からそのページへ飛ばす導線 (`url.searchParams.set('page', '...')` 等) の付け替え
|
||||
- i18n `layout.nav.<id>` (`ui/src/i18n/locales/{en,ja}/layout.json`)
|
||||
|
||||
**履歴 (2026-06-19):** 旧「ユーザーフォルダ」(`userfolder`) タブは廃止。中身は個人ワークスペースの **設定** タブ (AGENTS.md / メモリ / Pieces / スキル / MCP / SSH / ブラウザ。`SpaceSettings.tsx`) に集約し、孤立していた **Pets** はグローバル設定の `pets` セクション (`settings/PetsForm.tsx`) へ移設した。`userfolder/` 配下のパネル (AgentsMdPanel / MemoryPanel / McpPanel / SshConnectionsPanel / SkillsPanel / AddBrowserSessionDialog / MonacoFileEditor 等) は SpaceSettings / SpaceBrowserPanel / 設定フォームが再利用するため残置。
|
||||
|
||||
---
|
||||
|
||||
## 5. SSRF 保護に関わる変更をした場合
|
||||
|
||||
**対象ファイル:**
|
||||
@@ -138,7 +154,7 @@ grep -A 20 'LEGACY_SECTION_REDIRECT' ui/src/components/settings/SettingsSidebar.
|
||||
|
||||
**なぜ必要か:**
|
||||
新ツールを追加したとき、`RAW_SAVE_TOOLS` への追加を忘れると `logs/raw/` に出力が保存されない。
|
||||
knowledge ツールのように独自で raw 保存する場合は `RAW_SAVE_TOOLS` に含めない(二重保存回避)。
|
||||
ツール側で独自に raw 保存する場合は `RAW_SAVE_TOOLS` に含めない(二重保存回避)。
|
||||
|
||||
**保存先の整理:**
|
||||
|
||||
@@ -147,7 +163,6 @@ knowledge ツールのように独自で raw 保存する場合は `RAW_SAVE_TOO
|
||||
| 生データ | `logs/raw/{tool}-{timestamp}.txt/.json` | ツール実行結果の生出力 |
|
||||
| WebFetch 履歴 | `logs/webfetch-history.jsonl` | URL, ステータス, サイズ |
|
||||
| ダウンロード履歴 | `logs/downloads.jsonl` | 保存パス, サイズ |
|
||||
| ナレッジ履歴 | `logs/knowledge-history.jsonl` | クエリ, ヒット数, 所要時間 |
|
||||
| チェックリスト | `logs/checklists/{name}.json` | チェックリスト状態 |
|
||||
| rawdata インデックス | `logs/rawdata-history.jsonl` | raw 保存のメタデータ |
|
||||
|
||||
@@ -491,45 +506,13 @@ grep -rn "/continue\b\|continueTaskWithPiece" src/scheduler.ts src/bridge/schedu
|
||||
|
||||
---
|
||||
|
||||
## 14. Knowledge Notes 追加・変更時
|
||||
## 14. Knowledge Notes 機能 (削除済み)
|
||||
|
||||
Knowledge Notes は `data/users/{userId}/notes/` 以下のマークダウンファイルで管理される共有ナレッジ機能。
|
||||
FM (frontmatter) の `visibility` / `scope_org_id` で公開範囲を制御し、他ユーザーが検索・購読・inject できる。
|
||||
|
||||
**対象ファイル:**
|
||||
- `src/db/schema.sql` と `src/db/migrate.ts` — dual path で両方更新 (知識テーブル追加時)
|
||||
- `src/engine/tools/index.ts` — 新ツールの dynamic import
|
||||
- `pieces/*.yaml` — `allowed_tools` に必要なツール名を追加
|
||||
- `src/engine/tools/docs.ts` の `TOOL_DOC_ALIASES` — 関連ツールを同じ doc にまップ
|
||||
- `ui/src/components/userfolder/FileTree.tsx` の `FILE_SUBDIRS` — サイドバーに新ディレクトリを追加
|
||||
- `config.yaml.example` — `notes.inject` セクションのサンプル設定を更新
|
||||
|
||||
**セキュリティ・可視性チェックリスト:**
|
||||
|
||||
- [ ] `src/db/schema.sql` と `src/db/migrate.ts` の両方を更新 (dual path)
|
||||
- [ ] 新ツールを `src/engine/tools/index.ts` の dynamic import に追加
|
||||
- [ ] `pieces/*.yaml` の `allowed_tools` に必要なツール名を追加
|
||||
- [ ] `src/engine/tools/docs.ts` の `TOOL_DOC_ALIASES` にエイリアスを追加
|
||||
- [ ] `ui/src/components/userfolder/FileTree.tsx` の `FILE_SUBDIRS` を更新
|
||||
- [ ] `config.yaml.example` の `notes.inject` セクションを更新
|
||||
- [ ] FM の `visibility=org` チェックは publisher の所属 org で行う (`getUserOrgIds`)
|
||||
- [ ] inject 注入経路 (`agent-loop.ts` `buildSystemPrompt`) は visibility WHERE を必ず通る
|
||||
- [ ] cross-user read は `audit_log` に記録される
|
||||
|
||||
**なぜ必要か:**
|
||||
`visibility=org` の org チェックを publisher 側の org で行わないと、異なる org のユーザーが他 org のノートを閲覧できる。inject 経路で visibility チェックを省略すると、private なノートがシステムプロンプト経由で漏洩する。cross-user read の監査記録が欠けると、後からアクセス追跡ができなくなる。
|
||||
|
||||
**確認方法:**
|
||||
```bash
|
||||
# visibility WHERE が inject 経路にあるか
|
||||
grep -n "visibility\|getUserOrgIds" src/engine/agent-loop.ts
|
||||
|
||||
# audit_log への記録が行われているか
|
||||
grep -n "audit_log\|read_note" src/engine/tools/knowledge.ts
|
||||
|
||||
# SearchNotes / ListNotes ツールが tools-api.ts に登録されているか
|
||||
grep -n "knowledge\|notes" src/bridge/tools-api.ts
|
||||
```
|
||||
共有 Markdown ノート + 購読 + `SearchNotes` / `ReadNote` / `WriteNote` ツールからなる
|
||||
Knowledge Notes 機能は 2026-06 に削除された (共有ワークスペースと役割が重複したため)。
|
||||
`src/notes/`・`src/bridge/notes-api.ts`・`src/engine/notes-inject.ts`・`NotesForm.tsx`・
|
||||
`note_index` / `note_subscriptions` / `pending_reindex` テーブルはすべて撤去済み。
|
||||
既存 DB に残る孤立テーブルは無害なので DROP していない。再導入の予定はない。
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user