From 57b38d82449c8d03edc9b865fdb3faac9e6d6ec1 Mon Sep 17 00:00:00 2001 From: zhaoyilun Date: Thu, 9 Jul 2026 22:29:56 +0800 Subject: [PATCH] docs: select mcp capability sources --- .../capability-source-matrix.md | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 docs/source-discovery/capability-source-matrix.md diff --git a/docs/source-discovery/capability-source-matrix.md b/docs/source-discovery/capability-source-matrix.md new file mode 100644 index 0000000..dbb71ec --- /dev/null +++ b/docs/source-discovery/capability-source-matrix.md @@ -0,0 +1,78 @@ +# Capability Source Matrix + +Date: 2026-07-09 +Stage: B source discovery +Evidence index: `docs/source-discovery/2026-07-09-n12-pre-zyl-index.md` + +## Source priority + +1. Existing bridge / API / local service. +2. Local data, log, cache, or database source. +3. UIA helper source through C# WinHelper. +4. Network/protocol source. +5. Mock source for tests only. + +## Matrix + +| MCP tool | Primary source | Fallback source | Evidence file | Decision status | Next implementation slice | +| --- | --- | --- | --- | --- | --- | +| `isphere_receive_messages` | `zyl\iSphere\8c5e81a7f6dd1169.10083\27000000\Account\90005981\MsgLib.db` | `zyl\Impp\Account\90005981\MsgLib.db` plus `Smark.SendReceive`, `SaveToDB`, and `PacketReader.ProcessPacket` logs | `docs/source-discovery/2026-07-09-n12-pre-zyl-index.md#first-extraction-target-list` | selected for schema inspection; implementation starts after message table mapping is confirmed | first | +| `isphere_search_contacts` | contact/conversation/person tables inside `MsgLib.db`, if schema exposes display names or account ids | infer from message rows; then UIA helper source through current WinHelper if DB lacks contact display names | `docs/source-discovery/2026-07-09-n12-pre-zyl-index.md#msglibdb-candidates` | candidate pending DB schema inspection | second | +| `isphere_search_groups` | group/conversation tables inside `MsgLib.db`, if schema exposes group ids or group display names | infer from group-message rows; then UIA helper source through current WinHelper if DB lacks group display names | `docs/source-discovery/2026-07-09-n12-pre-zyl-index.md#msglibdb-candidates` | candidate pending DB schema inspection | third | +| `isphere_receive_files` | importal hashed document cache mapped through `MsgLib.db` attachment/file-reference rows | `Smark.SendReceive` and `SaveToDB` logs for file-reference traces | `docs/source-discovery/2026-07-09-n12-pre-zyl-index.md#receiveddocument-cache-candidates` | candidate pending DB schema and cache-reference inspection | fourth | + +## Stage C entry rule + +Open implementation only after the selected row links to a concrete file or directory in the evidence index and the schema/log inspection notes state which fields map to the MCP output contract. + +## Stage B2 extraction and inspection order + +| Order | Target | Why | Expected output | +| --- | --- | --- | --- | +| 1 | `zyl\iSphere\8c5e81a7f6dd1169.10083\27000000\Account\90005981\MsgLib.db` | latest visible iSphere message DB; best candidate for `isphere_receive_messages` | schema summary, table list, sample redacted row shapes | +| 2 | `zyl\Impp\Account\90005981\MsgLib.db` | same account id in older/parallel IMPP tree | schema comparison with iSphere DB | +| 3 | `zyl\Impp\Account\27091282\MsgLib.db` | largest DB, likely richer schema/data variety | schema comparison and attachment/contact table clues | +| 4 | `zyl\importal\localcache\8c5e81a7f6dd1169.10083\27000000\Log\90005981\SaveToDB\2026-07-07_1.log` | may reveal which DB table receives message data | log field summary and DB/table clues | +| 5 | `zyl\importal\localcache\8c5e81a7f6dd1169.10083\27000000\Log\90005981\Smark.SendReceive\2026-07-07_1.log` | send/receive trace near latest DB timestamp | message-id or payload-shape clues | +| 6 | `zyl\importal\localcache\8c5e81a7f6dd1169.10083\27000000\Log\90005981\PacketReader.ProcessPacket\2026-07-07_1.log` | packet processing trace near latest DB timestamp | packet-to-message mapping clues | +| 7 | `zyl\importal\localcache\8c5e81a7f6dd1169.10083\27000000\Log\90005981\LoginInfo\2026-07-07_1.log` | account/session context for source mapping | account id and environment context | + +## Tool-by-tool decision notes + +### `isphere_receive_messages` + +Selected first because the latest `90005981` iSphere `MsgLib.db` and same-day logs align around `2026-07-07 15:30-15:43`. Stage B2 must inspect the DB schema and produce a field mapping for: + +- message id +- conversation id or peer id +- sender id/name +- timestamp +- message body or content reference +- attachment/file reference if present + +After schema mapping, Stage C can start with a local DB-backed source abstraction before registering the business MCP tool. + +### `isphere_search_contacts` + +Candidate path is DB-first. If the DB contains contact/person tables, use those. If not, derive a minimal contact search result from message conversation rows and sender/peer identifiers, then use UIA as fallback for display-name enrichment. + +### `isphere_search_groups` + +Candidate path is DB-first. If the DB contains group/conversation tables, use those. If not, infer group-like conversations from message rows and use UIA as fallback for display-name enrichment. + +### `isphere_receive_files` + +Candidate path is DB/cache mapping. The hashed `zyl\importal\` directories appear to hold received document cache files. This tool needs DB/log references to map those hashed directories back to conversations/messages before implementation. + +## Stage C first slice recommendation + +Start Stage C with a narrow `isphere_receive_messages` source abstraction: + +1. Extract the selected DB/log files into `runs/offline-evidence-intake/zyl-qqfile-20260709/extracted/`. +2. Inspect schema and record a schema note under `docs/source-discovery/`. +3. Implement a local DB source interface only after the table/field mapping is confirmed. +4. Keep MCP registration as the next commit after the source abstraction test passes. + +## Stop condition for this matrix + +If DB schema inspection shows no message table or no usable message fields, do not start Stage C implementation. Return to Stage B and promote the log source or UIA helper source to the first candidate.