feat(pipeline): version tag on indexed nodes + diff_versions MCP tool - #1064
feat(pipeline): version tag on indexed nodes + diff_versions MCP tool#1064isc-tdyar wants to merge 4 commits into
Conversation
|
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. |
aa67b7f to
cc2114c
Compare
cc2114c to
cfc72f0
Compare
|
You were right, the branch did contain the body-token change from #1060 instead of the versioning work. That was a mistake in how I built the branch, not a stale description. It has since been rebuilt from scratch off What's in the diff now:
Incremental indexing is skipped when a version tag is set, since a version stamp needs a full pass to be coherent. Sorry for the wasted review cycle on the mismatch. Ready for review when you get to it, and no rush, I know #1063 is also in your queue. |
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>
Signed-off-by: Thomas Dyar <tdyar@intersystems.com>
Signed-off-by: Thomas Dyar <tdyar@intersystems.com>
…ion path Signed-off-by: Thomas Dyar <tdyar@intersystems.com>
cfc72f0 to
aae611e
Compare
Adds version tagging on all indexed nodes and a
diff_versionsMCP 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_repositorytool: newversionparameter{ "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_versionsMCP 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 labelClass, limit 500 per side.Files changed
src/pipeline/pipeline.h—cbm_pipeline_set_version()declarationsrc/pipeline/pipeline_internal.h—version_tagfield on ctxsrc/pipeline/pipeline.c— setter, free, skip-incremental guard, ctx wiringsrc/pipeline/pass_definitions.c—versionproperty on all nodes; Storage nodes with structured docstring have fields merged inline as raw JSON rather than escapedsrc/pipeline/pass_parallel.c— same changes mirrored;version_tagthreaded through parallel workersrc/mcp/mcp.c—cbm_derive_version_from_path()helper,versionparam onindex_repository,diff_versionstool registered and handler implemented