Skip to content

feat(pipeline): version tag on indexed nodes + diff_versions MCP tool#1064

Open
isc-tdyar wants to merge 1 commit into
DeusData:mainfrom
isc-tdyar:feat/version-diff
Open

feat(pipeline): version tag on indexed nodes + diff_versions MCP tool#1064
isc-tdyar wants to merge 1 commit into
DeusData:mainfrom
isc-tdyar:feat/version-diff

Conversation

@isc-tdyar

Copy link
Copy Markdown
Contributor

Adds version tagging on all indexed nodes and a diff_versions MCP tool for cross-version change detection.

Closes #1062. Depends on #467 (ObjectScript language support) merging first — the Storage node inline-JSON change targets ObjectScript Storage nodes.

New API

cbm_pipeline_set_version(cbm_pipeline_t *p, const char *version_tag)

Sets a version label (e.g. "28.0") on a pipeline instance. When set, the tag is written as a "version" property on every node. Also bypasses the incremental-index path so versioned indexing always does a full pass — the graph accumulates both versions side-by-side.

index_repository tool: new version parameter

{ "repo_path": "/repos/myproject-28.0", "version": "28.0" }

When omitted, a version-like segment (digits and dots) is auto-derived from the repo path. No behavior change for projects that don't use versioning.

diff_versions MCP tool

{
  "project":      "myproject",
  "from_version": "28.0",
  "to_version":   "30.0",
  "label":        "Class"
}

Returns {"added": [...], "removed": [...], "from_version": "28.0", "to_version": "30.0"}. Default label Class, limit 500 per side.

Files changed

  • src/pipeline/pipeline.hcbm_pipeline_set_version() declaration
  • src/pipeline/pipeline_internal.hversion_tag field on ctx
  • src/pipeline/pipeline.c — setter, free, skip-incremental guard, ctx wiring
  • src/pipeline/pass_definitions.cversion property on all nodes; Storage nodes with structured docstring have fields merged inline as raw JSON rather than escaped
  • src/pipeline/pass_parallel.c — same changes mirrored; version_tag threaded through parallel worker
  • src/mcp/mcp.ccbm_derive_version_from_path() helper, version param on index_repository, diff_versions tool registered and handler implemented

@isc-tdyar isc-tdyar requested a review from DeusData as a code owner July 12, 2026 19:58
@DeusData DeusData added this to the 0.9.2-rc milestone Jul 14, 2026
@DeusData DeusData added enhancement New feature or request cypher Cypher query language parser/executor bugs priority/backlog Valuable contribution, lower scheduling urgency; review when maintainer capacity opens. labels Jul 14, 2026
@DeusData

Copy link
Copy Markdown
Owner

The current PR cannot be reviewed against its stated purpose. Its title and body describe version tags and a diff_versions tool, but the branch currently contains the same body-token extractor change as PR #1060 and no versioning or MCP-tool implementation. Please restore the intended branch contents or close this PR if it was superseded; we should not review or merge a title/diff mismatch.

Add cbm_pipeline_set_version() to stamp a version label (e.g. '28.0',
'30.0') on every node emitted during indexing. Versioned runs bypass
the incremental path so both versions accumulate side-by-side in the
graph.

Add diff_versions MCP tool: given a project, from_version, and
to_version, returns added and removed node names (default label: Class,
limit 500 per side) using OPTIONAL MATCH anti-join queries.

Also auto-derives version from trailing numeric path segment in
index_repository (e.g. /exports/MyApp/28.0 → version='28.0') when
the version param is omitted.

Refs DeusData#1065

Signed-off-by: Thomas Dyar <tdyar@intersystems.com>
@isc-tdyar isc-tdyar force-pushed the feat/version-diff branch from de3713f to 4cf8ec5 Compare July 14, 2026 20:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cypher Cypher query language parser/executor bugs enhancement New feature or request priority/backlog Valuable contribution, lower scheduling urgency; review when maintainer capacity opens.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Version tags on indexed nodes + diff_versions tool for cross-version change detection

2 participants