(t *testing.T)
| 410 | } |
| 411 | |
| 412 | func TestMemoryNestedOperationsCallDaemonClient(t *testing.T) { |
| 413 | t.Parallel() |
| 414 | |
| 415 | calls := make(map[string]bool) |
| 416 | deps := newTestDeps(t, &stubClient{ |
| 417 | memoryHealthFn: func(_ context.Context, workspace string) (MemoryHealthRecord, error) { |
| 418 | calls["health"] = workspace == "/workspace/project" |
| 419 | return MemoryHealthRecord{Status: "ok", Enabled: true, Configured: true}, nil |
| 420 | }, |
| 421 | memoryHistoryFn: func(_ context.Context, query MemoryHistoryQuery) ([]MemoryHistoryRecord, error) { |
| 422 | calls["history"] = query.Operation == "memory.write" && query.Limit == 7 |
| 423 | return []MemoryHistoryRecord{ |
| 424 | {ID: "evt-1", Operation: memcontract.OperationWrite, Timestamp: fixedTestNow}, |
| 425 | }, nil |
| 426 | }, |
| 427 | promoteMemoryFn: func(_ context.Context, request MemoryPromoteRequest) (MemoryPromoteRecord, error) { |
| 428 | calls["promote"] = request.Filename == "prefs.md" && |
| 429 | request.From.Scope == memcontract.ScopeWorkspace && |
| 430 | request.To.Scope == memcontract.ScopeAgent && |
| 431 | request.To.AgentTier == memcontract.AgentTierGlobal |
| 432 | return MemoryPromoteRecord{ |
| 433 | Decision: testMemoryDecision("dec-promote", memcontract.OpUpdate), |
| 434 | Applied: true, |
| 435 | }, nil |
| 436 | }, |
| 437 | memoryScopeShowFn: func(_ context.Context, query MemorySelectorQuery) (MemoryScopeShowRecord, error) { |
| 438 | calls["scope-show"] = query.Scope == memcontract.ScopeAgent && query.AgentName == "reviewer" |
| 439 | return MemoryScopeShowRecord{ |
| 440 | Selector: contract.MemoryScopeSelectorPayload{Scope: memcontract.ScopeAgent}, |
| 441 | }, nil |
| 442 | }, |
| 443 | triggerMemoryDreamFn: func(_ context.Context, request MemoryDreamTriggerRequest) (MemoryDreamTriggerRecord, error) { |
| 444 | calls["dream-trigger"] = request.Scope == memcontract.ScopeWorkspace && |
| 445 | request.WorkspaceID == "/workspace/project" |
| 446 | return MemoryDreamTriggerRecord{Triggered: true, Dream: contract.MemoryDreamPayload{ |
| 447 | Status: contract.MemoryDreamStateRunning, |
| 448 | Scope: memcontract.ScopeWorkspace, |
| 449 | StartedAt: fixedTestNow, |
| 450 | }}, nil |
| 451 | }, |
| 452 | listMemoryProvidersFn: func(context.Context) (MemoryProviderListRecord, error) { |
| 453 | calls["provider-list"] = true |
| 454 | return MemoryProviderListRecord{ |
| 455 | Providers: []contract.MemoryProviderPayload{{Name: "local", Active: true}}, |
| 456 | }, nil |
| 457 | }, |
| 458 | enableMemoryProviderFn: func(_ context.Context, name string, _ MemoryProviderLifecycleRequest) (MemoryProviderLifecycleRecord, error) { |
| 459 | calls["provider-enable"] = name == "local" |
| 460 | return MemoryProviderLifecycleRecord{ |
| 461 | Provider: contract.MemoryProviderPayload{Name: name, Active: true}, |
| 462 | Changed: true, |
| 463 | }, nil |
| 464 | }, |
| 465 | getMemoryExtractorStatusFn: func(_ context.Context, sessionID string) (MemoryExtractorStatusRecord, error) { |
| 466 | calls["extractor-status"] = sessionID == "sess-1" |
| 467 | return MemoryExtractorStatusRecord{ |
| 468 | Extractor: contract.MemoryExtractorStatusPayload{Status: contract.MemoryExtractorStateStopped}, |
| 469 | }, nil |
nothing calls this directly
no test coverage detected