feat: add native-only FME environment get, create, update, and delete - #833
Open
ravindraharness wants to merge 3 commits into
Open
feat: add native-only FME environment get, create, update, and delete#833ravindraharness wants to merge 3 commits into
ravindraharness wants to merge 3 commits into
Conversation
List was already dual-mode after harness#806. Remaining CRUD follows v4 EnvironmentResource: isProduction on the wire, merge-patch update, UUID environment_id, and skipScopeBodyInjection on POST. Item get is native-only because Split v2 has no GET-by-id. Co-authored-by: Cursor <cursoragent@cursor.com>
|
|
Co-authored-by: Cursor <cursoragent@cursor.com> harness#806 only dual-moded environment list. MCP never had a workspace_id contract for the other ops, so do not invent legacy v2 create/update/delete paths.
Java EnvironmentListResponse is paginated; passthrough dropped totalCount. Product docs should not cite internal PR history.
11 tasks
ravindraharness
marked this pull request as ready for review
August 20, 2026 14:38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Follow-up to #806 for remaining FME environment ops.
#806 dual-moded list only (
workspace_idororg_id+project_id). MCP never had get/create/update/delete onworkspace_id, so those four ops are Harness-native only. This PR does not invent a legacy Split v2 MCP contract (those Admin APIs exist; we are not exposing them).Dual-mode routing — this PR only
workspace_id)org_id+project_id)fme_environmentNative contracts
fmeV4PaginatedListExtract(data→items,totalCount→total) withoffset/limit(harness_listsizemaps tolimit).GET /fme/api/v4/environments/{environment_id}(UUID from list, not the env name).POST /fme/api/v4/environmentsbody{ name, isProduction? }(CreateEnvironmentRequest). Name max 15 characters.productionis accepted as an alias forisProduction.skipScopeBodyInjectionso NGorgIdentifier/projectIdentifierare not injected.PATCHJSON Merge Patch{ name?, isProduction? }. Neither field is clearable (omit to keep).DELETE /fme/api/v4/environments/{id}. Backend returns 400hasDependentswhile SDK API keys (always created byEnvironmentStarterKit), flags, or segments remain. MCP has no v4 token resource and does not auto-delete keys.workspace_idon get/create/update/delete throws: Harness-native (org_id/project_id) only — MCP never supportedworkspace_idfor this operation (list remains dual-mode).Key implementation changes
src/registry/toolsets/feature-flags.tsplus tests/README.src/registry/extractors.ts—fmeV4PaginatedListExtractused by native environment list (same helper as traffic type / rollout status lists).resolveNativeOnlyEnvironmentRoutefor the four new ops. List still usesresolveFmeDualMode.fme_environmentget/create/update/delete. Native list envelope/pagination documented without citing other PR numbers.registry/index.ts,types.ts, or prompt changes.Type of Change
Checklist
tests/registry/fme-environment-native-only.test.ts+tests/registry/feature-flags.test.tspnpm docs:check(README matrix matches registry)Coding Standards (registry-driven MCP model)
server.registerTool()calls — existingfeature-flagstoolset extendedoperationPolicyon every new/changed endpointsrc/registry/extractors.tsidentifierFieldsandscopedeclaredconsole.log()insrc/Test plan
workspace_idrejected on get/create/update/deletehasDependentsuntil starter-kit SDK keys are removed (no MCP token API)