Files
copilotkit__copilotkit/examples/showcases/banking/e2e/fixtures/memory-learning.fixtures.json
Maxim 3b1e04275e chore(banking): rename memory kinds to Intelligence main enum
Phase 2 of the banking->Intelligence-main migration. Main's memory lib
(libs/memory/src/types.ts) closes MemoryKind to topical|episodic|operational;
the demo was authored against the legacy semantic|procedural names, which the
backend now rejects/misfiles. Rename across the whole surface:
- agent prompt (route.ts CLASSIFY + SAVE-THE-PROCEDURE): semantic->topical,
  procedural->operational
- recorder instruction (copilot-context.tsx), learning-tab dual-read dropped,
  memory-tab KIND_COLORS, memory unit-test fixture
- smokes (facts + drift) and the e2e spec seed + fixtures comment

Only true kind: values renamed; "semantic recall"/"top-k semantic search"
mechanism descriptions left intact (recall is vector search regardless of enum).
aimock fixture re-record was a no-op: the one fixture pins the recall-and-apply
arc (no kind: values); the seed is REST-side in the spec.

Verified: pnpm test:unit 47/47, tsc --noEmit clean, eslint clean on touched files.
Local-only until the full migration is verified against the main stack.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 16:20:00 +02:00

84 lines
3.1 KiB
JSON

{
"_comment": [
"aimock fixtures for the deterministic cross-thread memory proof (Task 7 / FOR-149).",
"These pin the agent's LLM decisions so the test exercises the REAL local memory",
"backend (recall ranking + tenant scoping) without LLM nondeterminism.",
"",
"STRATEGY (recall-half determinism, per the plan's Task 7 option 2): the spec SEEDS the",
"over-limit procedure as a project/operational memory via REST, then drives a FRESH",
"thread. With the procedure already in memory, the agent must (1) recall_memory, then",
"apply the recalled code by (2) openPolicyException -> (3) finalizePolicyException ->",
"(4) approveTransaction, and never offer to record. Each step is one fixture, matched in",
"order via sequenceIndex (the same user message drives the whole run).",
"",
"VERIFY ON FIRST GREEN RUN (these are the unverified assumptions):",
"- Fixture file schema: top-level {fixtures:[...]}, each {match:{userMessage, sequenceIndex?}, response:{content|toolCalls}}.",
" Confirm against `loadFixtureFile`/`validateFixtures` from @copilotkit/aimock and showcase/aimock/*.json.",
"- Multi-turn ordering key: this uses `sequenceIndex`. If aimock uses a different key",
" (e.g. turnIndex / hasToolResult), rename accordingly (see showcase/GOTCHAS.md).",
"- Tool names/argument shapes must match the banking tools (openPolicyException,",
" finalizePolicyException, approveTransaction) and the agent's recall_memory call.",
"- EXC-BOARD-APPROVED must stay the seeded justifying code (see the spec + over-limit-gate-smoke)."
],
"fixtures": [
{
"match": { "userMessage": "over-limit", "sequenceIndex": 0 },
"response": {
"toolCalls": [
{
"name": "recall_memory",
"arguments": {
"query": "how to approve an over-limit charge / policy exception procedure"
}
}
]
}
},
{
"match": { "userMessage": "over-limit", "sequenceIndex": 1 },
"response": {
"toolCalls": [
{
"name": "openPolicyException",
"arguments": {
"transactionId": "t-3",
"code": "EXC-BOARD-APPROVED"
}
}
]
}
},
{
"match": { "userMessage": "over-limit", "sequenceIndex": 2 },
"response": {
"toolCalls": [
{
"name": "finalizePolicyException",
"arguments": {
"transactionId": "t-3",
"code": "EXC-BOARD-APPROVED"
}
}
]
}
},
{
"match": { "userMessage": "over-limit", "sequenceIndex": 3 },
"response": {
"toolCalls": [
{
"name": "approveTransaction",
"arguments": { "transactionId": "t-3" }
}
]
}
},
{
"match": { "userMessage": "over-limit", "sequenceIndex": 4 },
"response": {
"content": "Done — I recalled the saved procedure, filed an EXC-BOARD-APPROVED policy exception, and approved the over-limit charge."
}
}
]
}