( ctx context.Context, scope toolspkg.Scope, req toolspkg.CallRequest, )
| 2449 | } |
| 2450 | |
| 2451 | func (n *daemonNativeTools) memoryPropose( |
| 2452 | ctx context.Context, |
| 2453 | scope toolspkg.Scope, |
| 2454 | req toolspkg.CallRequest, |
| 2455 | ) (toolspkg.ToolResult, error) { |
| 2456 | var input memoryProposeInput |
| 2457 | if err := decodeNativeInput(req, &input); err != nil { |
| 2458 | return toolspkg.ToolResult{}, err |
| 2459 | } |
| 2460 | op, err := nativeMemoryProposalOperation(req.ToolID, input.Operation) |
| 2461 | if err != nil { |
| 2462 | return toolspkg.ToolResult{}, err |
| 2463 | } |
| 2464 | location, err := n.memoryWriteStore(ctx, scope, req.ToolID, memoryToolSelector{ |
| 2465 | Scope: input.Scope, |
| 2466 | Workspace: input.Workspace, |
| 2467 | AgentName: input.AgentName, |
| 2468 | AgentTier: input.AgentTier, |
| 2469 | }, input.Type) |
| 2470 | if err != nil { |
| 2471 | return toolspkg.ToolResult{}, nativeMemoryToolError(req.ToolID, err) |
| 2472 | } |
| 2473 | actorKind, err := n.memoryCallerActorKind(ctx, scope, req) |
| 2474 | if err != nil { |
| 2475 | return toolspkg.ToolResult{}, nativeMemoryToolError(req.ToolID, err) |
| 2476 | } |
| 2477 | if err := n.denySubagentMemoryWrite( |
| 2478 | ctx, |
| 2479 | req, |
| 2480 | location, |
| 2481 | actorKind, |
| 2482 | firstNonEmpty(input.TargetFilename, input.Filename), |
| 2483 | ); err != nil { |
| 2484 | return toolspkg.ToolResult{}, err |
| 2485 | } |
| 2486 | |
| 2487 | if op == memcontract.OpDelete { |
| 2488 | filename, err := requiredNativeString( |
| 2489 | req.ToolID, |
| 2490 | "target_filename", |
| 2491 | firstNonEmpty(input.TargetFilename, input.Filename), |
| 2492 | ) |
| 2493 | if err != nil { |
| 2494 | return toolspkg.ToolResult{}, err |
| 2495 | } |
| 2496 | result, err := location.Store.ProposeDelete(ctx, location.Scope, filename, memcontract.OriginTool) |
| 2497 | if err != nil { |
| 2498 | return toolspkg.ToolResult{}, nativeMemoryToolError(req.ToolID, err) |
| 2499 | } |
| 2500 | n.recordMemoryToolWrite(scope, req, actorKind) |
| 2501 | return nativeMemoryDecisionResult(result) |
| 2502 | } |
| 2503 | |
| 2504 | content, err := requiredNativeString(req.ToolID, "content", input.Content) |
| 2505 | if err != nil { |
| 2506 | return toolspkg.ToolResult{}, err |
| 2507 | } |
| 2508 | filename := firstNonEmpty(input.Filename, input.TargetFilename) |
nothing calls this directly
no test coverage detected