Skip to content

Comments

[cyclops] Absorb DescribeResultCache into GraphController#7970

Merged
dglazkov merged 1 commit intomainfrom
cyclops-absorb-describe-cache
Feb 23, 2026
Merged

[cyclops] Absorb DescribeResultCache into GraphController#7970
dglazkov merged 1 commit intomainfrom
cyclops-absorb-describe-cache

Conversation

@dglazkov
Copy link
Collaborator

What

Replaces the standalone DescribeResultCache with signal-backed describe
entries owned directly by GraphController, injecting the describe capability
as a NodeDescriber function at the SCA Service→Controller boundary.

Why

DescribeResultCache was the last piece of derived state not owned by
GraphController. Absorbing it gives the controller full control over all
reactive state (nodes, graphs, tools, components, describe), clearing the way
for eliminating the event bridge in the next stage.

Changes

@breadboard-ai/types

  • Remove InspectableDescriberResultCache and
    InspectableDescriberResultCacheEntry types
  • Add NodeDescribeSnapshot type
  • Replace MutableGraph.describe field with describeNode() method

visual-editor — New files

  • node-describer.tsNodeDescriber function type (SCA Service→Controller
    boundary)
  • node-describe-entry.ts — Signal-backed NodeDescribeEntry class

visual-editor — Modified

  • graph-controller.ts — Owns #describeEntries map, adds describeNode() and
    #refreshDescribers(), accepts NodeDescriber in initialize()
  • initialize-editor.ts — Builds NodeDescriber closure from getHandler +
    sandbox
  • node.ts — Uses describeNode() instead of describe.get()
  • graph.ts — Import cleanup

visual-editor — Deleted

  • describe-cache.ts — Functionality absorbed into GraphController

Tests & helpers

  • _mutable-graph.ts — Updated mock with describeNode()
  • graph-controller.test.ts — Added noopDescriber arg, replaced .describe
    assertions
  • node-actions.test.ts — Added noopDescriber arg

Testing

  • npm run build:tsc -w packages/visual-editor — compiles clean
  • npm run test -w packages/visual-editor — all tests pass

## What

Replaces the standalone `DescribeResultCache` with signal-backed describe
entries owned directly by `GraphController`, injecting the describe capability
as a `NodeDescriber` function at the SCA Service→Controller boundary.

## Why

`DescribeResultCache` was the last piece of derived state not owned by
`GraphController`. Absorbing it gives the controller full control over all
reactive state (nodes, graphs, tools, components, describe), clearing the way
for eliminating the event bridge in the next stage.

## Changes

### `@breadboard-ai/types`

- Remove `InspectableDescriberResultCache` and
  `InspectableDescriberResultCacheEntry` types
- Add `NodeDescribeSnapshot` type
- Replace `MutableGraph.describe` field with `describeNode()` method

### `visual-editor` — New files

- `node-describer.ts` — `NodeDescriber` function type (SCA Service→Controller
  boundary)
- `node-describe-entry.ts` — Signal-backed `NodeDescribeEntry` class

### `visual-editor` — Modified

- `graph-controller.ts` — Owns `#describeEntries` map, adds `describeNode()` and
  `#refreshDescribers()`, accepts `NodeDescriber` in `initialize()`
- `initialize-editor.ts` — Builds `NodeDescriber` closure from `getHandler` +
  `sandbox`
- `node.ts` — Uses `describeNode()` instead of `describe.get()`
- `graph.ts` — Import cleanup

### `visual-editor` — Deleted

- `describe-cache.ts` — Functionality absorbed into `GraphController`

### Tests & helpers

- `_mutable-graph.ts` — Updated mock with `describeNode()`
- `graph-controller.test.ts` — Added `noopDescriber` arg, replaced `.describe`
  assertions
- `node-actions.test.ts` — Added `noopDescriber` arg

## Testing

- `npm run build:tsc -w packages/visual-editor` — compiles clean
- `npm run test -w packages/visual-editor` — all tests pass
@dglazkov dglazkov enabled auto-merge (squash) February 23, 2026 04:43
@dglazkov dglazkov merged commit 3441ebb into main Feb 23, 2026
3 checks passed
@dglazkov dglazkov deleted the cyclops-absorb-describe-cache branch February 23, 2026 04:46
@github-actions
Copy link

📊 Coverage Report

Metric PR Main Delta
Lines 98.15% 98.38% 🔴 -0.23%
Functions 98.10% 98.23% 🔴 -0.13%
Branches 94.29% 94.37% 🔴 -0.08%
🔴 2 files with reduced line coverage
File PR Main Delta
initialize-editor.ts 85.13% 100.00% 🔴 -14.87%
graph-controller.ts 96.45% 96.74% 🔴 -0.29%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant