diff --git a/crates/memoryd/tests/fixtures/honcho/30-workspace-search-limit.json b/crates/memoryd/tests/fixtures/honcho/30-workspace-search-limit.json new file mode 100644 index 0000000..165f064 --- /dev/null +++ b/crates/memoryd/tests/fixtures/honcho/30-workspace-search-limit.json @@ -0,0 +1,60 @@ +{ + "request": { + "method": "POST", + "path": "/v3/workspaces/boxmaker-plan-probe/search", + "body": { + "limit": 3, + "query": "tea" + } + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json" + }, + "body": [ + { + "id": "W64n2LctkpvzRbhiE8QbO", + "content": "I prefer tea to coffee in the afternoon.", + "peer_id": "kyle", + "session_id": "s-probe-1", + "metadata": { + "turn": 1, + "agent": "boxmaker0", + "boxmaker_session": "s-probe-1" + }, + "created_at": "2026-09-28T23:19:35.672689Z", + "workspace_id": "boxmaker-plan-probe", + "token_count": 9 + }, + { + "id": "tw-3haUPxs_KLwmFOeAUE", + "content": "I prefer tea to coffee in the afternoon.", + "peer_id": "kyle", + "session_id": "s-probe-1", + "metadata": { + "turn": 1, + "agent": "boxmaker0", + "boxmaker_session": "s-probe-1" + }, + "created_at": "2026-09-28T23:19:18.844946Z", + "workspace_id": "boxmaker-plan-probe", + "token_count": 9 + }, + { + "id": "CuBlFsOvuOSPhdzBwjMJ8", + "content": "Noted: tea in the afternoon.", + "peer_id": "boxmaker0", + "session_id": "s-probe-1", + "metadata": { + "turn": 1, + "agent": "boxmaker0", + "boxmaker_session": "s-probe-1" + }, + "created_at": "2026-09-28T23:19:35.672689Z", + "workspace_id": "boxmaker-plan-probe", + "token_count": 8 + } + ] + } +} diff --git a/crates/memoryd/tests/fixtures/honcho/31-workspace-search-no-match.json b/crates/memoryd/tests/fixtures/honcho/31-workspace-search-no-match.json new file mode 100644 index 0000000..63bb982 --- /dev/null +++ b/crates/memoryd/tests/fixtures/honcho/31-workspace-search-no-match.json @@ -0,0 +1,60 @@ +{ + "request": { + "method": "POST", + "path": "/v3/workspaces/boxmaker-plan-probe/search", + "body": { + "limit": 3, + "query": "zebra quantum" + } + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json" + }, + "body": [ + { + "id": "tw-3haUPxs_KLwmFOeAUE", + "content": "I prefer tea to coffee in the afternoon.", + "peer_id": "kyle", + "session_id": "s-probe-1", + "metadata": { + "turn": 1, + "agent": "boxmaker0", + "boxmaker_session": "s-probe-1" + }, + "created_at": "2026-09-28T23:19:18.844946Z", + "workspace_id": "boxmaker-plan-probe", + "token_count": 9 + }, + { + "id": "W64n2LctkpvzRbhiE8QbO", + "content": "I prefer tea to coffee in the afternoon.", + "peer_id": "kyle", + "session_id": "s-probe-1", + "metadata": { + "turn": 1, + "agent": "boxmaker0", + "boxmaker_session": "s-probe-1" + }, + "created_at": "2026-09-28T23:19:35.672689Z", + "workspace_id": "boxmaker-plan-probe", + "token_count": 9 + }, + { + "id": "qrMdUuNLYyPGeT0rSFPHm", + "content": "Noted: tea in the afternoon.", + "peer_id": "boxmaker0", + "session_id": "s-probe-1", + "metadata": { + "turn": 1, + "agent": "boxmaker0", + "boxmaker_session": "s-probe-1" + }, + "created_at": "2026-09-28T23:19:18.844946Z", + "workspace_id": "boxmaker-plan-probe", + "token_count": 8 + } + ] + } +} diff --git a/crates/memoryd/tests/fixtures/honcho/32-conclusions-query-owner.json b/crates/memoryd/tests/fixtures/honcho/32-conclusions-query-owner.json new file mode 100644 index 0000000..3af0598 --- /dev/null +++ b/crates/memoryd/tests/fixtures/honcho/32-conclusions-query-owner.json @@ -0,0 +1,33 @@ +{ + "request": { + "method": "POST", + "path": "/v3/workspaces/boxmaker-plan-probe/conclusions/query", + "body": { + "filters": { + "observed_id": "kyle", + "observer_id": "kyle" + }, + "query": "tea", + "top_k": 5 + } + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json" + }, + "body": [ + { + "id": "9sd9LIrIT5ypnw3U8f44z", + "content": "Kyle prefers tea in the afternoon.", + "observer_id": "kyle", + "observed_id": "kyle", + "session_id": "s-probe-1", + "level": "explicit", + "source_ids": null, + "times_derived": 1, + "created_at": "2026-09-28T23:19:35.772085Z" + } + ] + } +} diff --git a/crates/memoryd/tests/fixtures/honcho/33-conclusions-query-agent.json b/crates/memoryd/tests/fixtures/honcho/33-conclusions-query-agent.json new file mode 100644 index 0000000..5ae64d9 --- /dev/null +++ b/crates/memoryd/tests/fixtures/honcho/33-conclusions-query-agent.json @@ -0,0 +1,33 @@ +{ + "request": { + "method": "POST", + "path": "/v3/workspaces/boxmaker-plan-probe/conclusions/query", + "body": { + "filters": { + "observed_id": "boxmaker1", + "observer_id": "boxmaker1" + }, + "query": "build cache", + "top_k": 5 + } + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json" + }, + "body": [ + { + "id": "vTmroB5LA6hJWOEtht278", + "content": "The build cache is cleared on Sundays.", + "observer_id": "boxmaker1", + "observed_id": "boxmaker1", + "session_id": "s-probe-2", + "level": "explicit", + "source_ids": null, + "times_derived": 1, + "created_at": "2026-09-28T23:19:35.772085Z" + } + ] + } +} diff --git a/crates/memoryd/tests/fixtures/honcho/34-workspace-search-missing-workspace.json b/crates/memoryd/tests/fixtures/honcho/34-workspace-search-missing-workspace.json new file mode 100644 index 0000000..34c27c9 --- /dev/null +++ b/crates/memoryd/tests/fixtures/honcho/34-workspace-search-missing-workspace.json @@ -0,0 +1,17 @@ +{ + "request": { + "method": "POST", + "path": "/v3/workspaces/boxmaker-plan-probe-missing/search", + "body": { + "limit": 3, + "query": "tea" + } + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json" + }, + "body": [] + } +} diff --git a/crates/memoryd/tests/fixtures/honcho/35-conclusions-query-missing-workspace.json b/crates/memoryd/tests/fixtures/honcho/35-conclusions-query-missing-workspace.json new file mode 100644 index 0000000..8d81690 --- /dev/null +++ b/crates/memoryd/tests/fixtures/honcho/35-conclusions-query-missing-workspace.json @@ -0,0 +1,21 @@ +{ + "request": { + "method": "POST", + "path": "/v3/workspaces/boxmaker-plan-probe-missing/conclusions/query", + "body": { + "filters": { + "observed_id": "kyle", + "observer_id": "kyle" + }, + "query": "tea", + "top_k": 5 + } + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json" + }, + "body": [] + } +} diff --git a/crates/memoryd/tests/fixtures/honcho/36-workspace-chat-missing-workspace.json b/crates/memoryd/tests/fixtures/honcho/36-workspace-chat-missing-workspace.json new file mode 100644 index 0000000..e82f97c --- /dev/null +++ b/crates/memoryd/tests/fixtures/honcho/36-workspace-chat-missing-workspace.json @@ -0,0 +1,19 @@ +{ + "request": { + "method": "POST", + "path": "/v3/workspaces/boxmaker-plan-probe-missing/chat", + "body": { + "query": "What does the owner drink?", + "reasoning_level": "minimal" + } + }, + "response": { + "status": 404, + "headers": { + "content-type": "application/json" + }, + "body": { + "detail": "Workspace boxmaker-plan-probe-missing not found" + } + } +} diff --git a/crates/memoryd/tests/fixtures/honcho/37-workspace-delete-missing.json b/crates/memoryd/tests/fixtures/honcho/37-workspace-delete-missing.json new file mode 100644 index 0000000..d695866 --- /dev/null +++ b/crates/memoryd/tests/fixtures/honcho/37-workspace-delete-missing.json @@ -0,0 +1,16 @@ +{ + "request": { + "method": "DELETE", + "path": "/v3/workspaces/boxmaker-plan-probe-missing", + "body": null + }, + "response": { + "status": 404, + "headers": { + "content-type": "application/json" + }, + "body": { + "detail": "Workspace boxmaker-plan-probe-missing not found" + } + } +} diff --git a/crates/memoryd/tests/fixtures/honcho/README.md b/crates/memoryd/tests/fixtures/honcho/README.md index de4646b..e0b0250 100644 --- a/crates/memoryd/tests/fixtures/honcho/README.md +++ b/crates/memoryd/tests/fixtures/honcho/README.md @@ -5,3 +5,14 @@ design model for M5c-1, in a throwaway workspace, `boxmaker-plan-probe`, created afterwards. Each request is exactly what `roncho` 1.0.0's blocking client sends. Each file is `{"request": {"method", "path", "body"}, "response": {"status", "headers", "body"}}`. The fake Honcho server in `memoryd`'s tests answers from them. Do not edit. + +Files 30 to 37 were recorded the same way on 2026-09-28 for M5c-2, in the same throwaway workspace +(again deleted afterwards), through a proxy that allowed no other workspace. What they show: + +- Search has no relevance cutoff: a query with no match (31) still returns the nearest messages. +- A search or a conclusion query in a workspace that does not exist answers 200 with no hits (34, + 35); only chat (36) and delete (37) answer 404. +- The duplicate tea messages in 30 and 31 are real: the recording ran twice into one workspace. + +A chat at `reasoning: low` was recorded too and left out: on rift it returned the dialectic +model's raw tool-call markup as its answer, not an answer.