Skip to content

Feature: Generic disablement system for memory files and tools #502

@chubes4

Description

@chubes4

Problem

Two systems in Data Machine have the concept of "disabling" items at a scoped level:

  1. Tools — AI steps can disable specific tools via disabled_tools in pipeline step config. The ConfigureStepModal has a tool toggle UI.
  2. Memory files — Currently no way to disable/suppress memory files at the pipeline or flow level. Core memory files always inject. Pipeline/flow memory files are opt-in (additive), but there's no way to say "don't inject this file for this flow."

These are conceptually the same pattern: a set of available items, with scope-level overrides that suppress specific items.

Proposed

Abstract the disablement pattern into a generic system that both memory files and tools can use:

The pattern

Available items (global)  →  Scope overrides (disabled list)  →  Effective items

For tools:

All registered tools  →  disabled_tools on pipeline step  →  Tools sent to AI

For memory files:

Core + pipeline + flow memory files  →  disabled_memory_files on flow  →  Files injected

Implementation options

Option A: Generic DisabledItems config pattern

  • Store disabled_memory_files in flow_config (like disabled_tools in step config)
  • Directives check the disabled list before injecting
  • UI pattern: same toggle/checkbox approach as tool disablement

Option B: Shared ScopeOverrides system

  • A general-purpose system for "at scope X, disable items Y from set Z"
  • Could be used by tools, memory files, and future features (handlers, providers, etc.)
  • More ambitious but prevents reinventing the pattern each time

Key consideration

The disablement needs to work across priority boundaries:

  • Core memory files inject at priority 20
  • Pipeline memory files at 40
  • Flow memory files at 45
  • A flow-level disabled_memory_files config needs to suppress files injected by earlier priorities

This likely means the disablement check needs to happen at a coordination point (e.g., PromptBuilder) rather than in each individual directive. Or directives check a shared payload key.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions