MCPcopy Create free account
hub / github.com/compozy/agh / memoryPropose

Method memoryPropose

internal/daemon/native_tools.go:2451–2531  ·  view source on GitHub ↗
(
	ctx context.Context,
	scope toolspkg.Scope,
	req toolspkg.CallRequest,
)

Source from the content-addressed store, hash-verified

2449}
2450
2451func (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)

Callers

nothing calls this directly

Calls 14

memoryWriteStoreMethod · 0.95
memoryCallerActorKindMethod · 0.95
recordMemoryToolWriteMethod · 0.95
decodeNativeInputFunction · 0.85
nativeMemoryToolErrorFunction · 0.85
requiredNativeStringFunction · 0.85
nativeMemoryFilenameFunction · 0.85
ProposeDeleteMethod · 0.80

Tested by

no test coverage detected