WeKnora deployment source with the reviewed wiki identity, summary and recovery fixes
Anydoc / anydoc parser engine (push) Canceled after 0s
App / Format, vet, test, and build (push) Canceled after 0s
CLI / test (macos-latest / go 1.26) (push) Canceled after 0s
CLI / test (ubuntu-latest / go 1.26) (push) Canceled after 0s
CLI / test (windows-latest / go 1.26) (push) Canceled after 0s
Build and Push Docker Image / build-ui (push) Canceled after 0s
Build and Push Docker Image / build-docreader (push) Canceled after 0s
Build and Push Docker Image / build-sandbox (push) Canceled after 0s
Build and Push Docker Image / build-app (amd64, linux/amd64, ubuntu-latest) (push) Canceled after 0s
Build and Push Docker Image / build-app (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
DocReader / Python tests and Go client tests (push) Canceled after 0s
Build & Publish (dsh-weknora) / Typecheck, test, pack (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (pinned) (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (latest, advisory) (push) Canceled after 0s
Frontend / Test, type-check, and build (push) Canceled after 0s
Go Lint Cache / warm lint cache (.) (push) Canceled after 0s
Go Lint Cache / warm lint cache (cli) (push) Canceled after 0s
Go Lint Cache / warm lint cache (client) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.10) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.11) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.12) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.13) (push) Canceled after 0s
Build and Push Docker Image / merge (push) Canceled after 0s
Build & Publish (dsh-weknora) / Publish to npm (push) Canceled after 0s
Build & Publish (mcp-server) / Build sdist + wheel (push) Canceled after 0s
Build & Publish (mcp-server) / Publish to PyPI (push) Canceled after 0s
Anydoc / anydoc parser engine (push) Canceled after 0s
App / Format, vet, test, and build (push) Canceled after 0s
CLI / test (macos-latest / go 1.26) (push) Canceled after 0s
CLI / test (ubuntu-latest / go 1.26) (push) Canceled after 0s
CLI / test (windows-latest / go 1.26) (push) Canceled after 0s
Build and Push Docker Image / build-ui (push) Canceled after 0s
Build and Push Docker Image / build-docreader (push) Canceled after 0s
Build and Push Docker Image / build-sandbox (push) Canceled after 0s
Build and Push Docker Image / build-app (amd64, linux/amd64, ubuntu-latest) (push) Canceled after 0s
Build and Push Docker Image / build-app (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
DocReader / Python tests and Go client tests (push) Canceled after 0s
Build & Publish (dsh-weknora) / Typecheck, test, pack (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (pinned) (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (latest, advisory) (push) Canceled after 0s
Frontend / Test, type-check, and build (push) Canceled after 0s
Go Lint Cache / warm lint cache (.) (push) Canceled after 0s
Go Lint Cache / warm lint cache (cli) (push) Canceled after 0s
Go Lint Cache / warm lint cache (client) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.10) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.11) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.12) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.13) (push) Canceled after 0s
Build and Push Docker Image / merge (push) Canceled after 0s
Build & Publish (dsh-weknora) / Publish to npm (push) Canceled after 0s
Build & Publish (mcp-server) / Build sdist + wheel (push) Canceled after 0s
Build & Publish (mcp-server) / Publish to PyPI (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
from weknora_mcp_server import WeKnoraClient
|
||||
|
||||
|
||||
def test_resolve_agent_id_accepts_non_uuid_agent_id(monkeypatch):
|
||||
client = WeKnoraClient("http://example.test/api/v1", "")
|
||||
agents = {
|
||||
"data": [
|
||||
{
|
||||
"id": "builtin-wiki-researcher",
|
||||
"name": "维基问答",
|
||||
}
|
||||
]
|
||||
}
|
||||
monkeypatch.setattr(client, "_request", lambda *args, **kwargs: agents)
|
||||
|
||||
assert (
|
||||
client.resolve_agent_id("builtin-wiki-researcher")
|
||||
== "builtin-wiki-researcher"
|
||||
)
|
||||
|
||||
|
||||
def test_resolve_agent_id_accepts_agent_name_case_insensitively(monkeypatch):
|
||||
client = WeKnoraClient("http://example.test/api/v1", "")
|
||||
agents = {
|
||||
"data": [
|
||||
{
|
||||
"id": "builtin-wiki-researcher",
|
||||
"name": "Wiki Questioner",
|
||||
}
|
||||
]
|
||||
}
|
||||
monkeypatch.setattr(client, "_request", lambda *args, **kwargs: agents)
|
||||
|
||||
assert client.resolve_agent_id("wiki questioner") == "builtin-wiki-researcher"
|
||||
@@ -0,0 +1,86 @@
|
||||
from weknora_mcp_server import WeKnoraClient, _normalize_kb_entries
|
||||
|
||||
# Shapes mirror GET /knowledge-bases and GET /shared-knowledge-bases wire JSON.
|
||||
# See internal/handler/knowledgebase.go (buildKBListResponse) and
|
||||
# internal/handler/organization.go (sharedKBRow / ListSharedKnowledgeBases).
|
||||
|
||||
|
||||
def test_normalize_kb_entries_flattens_shared_rows():
|
||||
resp = {
|
||||
"success": True,
|
||||
"data": [
|
||||
{
|
||||
"knowledge_base": {"id": "kb-shared-1", "name": "Shared Docs"},
|
||||
"share_id": "kbs-1",
|
||||
"organization_id": "org-1",
|
||||
"permission": "viewer",
|
||||
}
|
||||
],
|
||||
"total": 1,
|
||||
}
|
||||
assert _normalize_kb_entries(resp) == [
|
||||
{"id": "kb-shared-1", "name": "Shared Docs"}
|
||||
]
|
||||
|
||||
|
||||
def test_normalize_kb_entries_passes_through_owned_rows():
|
||||
resp = {
|
||||
"success": True,
|
||||
"data": [{"id": "kb-owned-1", "name": "My Docs"}],
|
||||
}
|
||||
assert _normalize_kb_entries(resp) == [{"id": "kb-owned-1", "name": "My Docs"}]
|
||||
|
||||
|
||||
def test_resolve_kb_id_accepts_shared_kb_name(monkeypatch):
|
||||
client = WeKnoraClient("http://example.test/api/v1", "")
|
||||
|
||||
def fake_request(method, path, **kwargs):
|
||||
if path == "/knowledge-bases":
|
||||
return {"success": True, "data": []}
|
||||
if path == "/shared-knowledge-bases":
|
||||
return {
|
||||
"success": True,
|
||||
"data": [
|
||||
{
|
||||
"knowledge_base": {
|
||||
"id": "kb-shared-1",
|
||||
"name": "技术文档库",
|
||||
},
|
||||
"share_id": "kbs-1",
|
||||
}
|
||||
],
|
||||
}
|
||||
raise AssertionError(f"unexpected request: {method} {path}")
|
||||
|
||||
monkeypatch.setattr(client, "_request", fake_request)
|
||||
|
||||
assert client.resolve_kb_id("技术文档库") == "kb-shared-1"
|
||||
|
||||
|
||||
def test_resolve_kb_id_prefers_owned_over_shared_name(monkeypatch):
|
||||
client = WeKnoraClient("http://example.test/api/v1", "")
|
||||
|
||||
def fake_request(method, path, **kwargs):
|
||||
if path == "/knowledge-bases":
|
||||
return {
|
||||
"success": True,
|
||||
"data": [{"id": "kb-owned-1", "name": "Same Name"}],
|
||||
}
|
||||
if path == "/shared-knowledge-bases":
|
||||
return {
|
||||
"success": True,
|
||||
"data": [
|
||||
{
|
||||
"knowledge_base": {
|
||||
"id": "kb-shared-1",
|
||||
"name": "Same Name",
|
||||
},
|
||||
"share_id": "kbs-1",
|
||||
}
|
||||
],
|
||||
}
|
||||
raise AssertionError(f"unexpected request: {method} {path}")
|
||||
|
||||
monkeypatch.setattr(client, "_request", fake_request)
|
||||
|
||||
assert client.resolve_kb_id("same name") == "kb-owned-1"
|
||||
Reference in New Issue
Block a user