feat(kiota): parity foundations — every block kind fluent, full-spec SDK, single-nested rendering - #107
Open
ShocOne wants to merge 1 commit into
Open
feat(kiota): parity foundations — every block kind fluent, full-spec SDK, single-nested rendering#107ShocOne wants to merge 1 commit into
ShocOne wants to merge 1 commit into
Conversation
…, full-spec SDK, single-nested rendering The kiota pilot now exercises all six block kinds the resty pilot does: the tag resource regains its list facet (fluent collection read, identity through the new ListIdentityMapping.convertFunc for a uuid-typed identifier), the tag and tags data sources, the credential ephemeral and resource, and the disable_endpoint_agent action all bind fluent chains -- 83 bindings verified against the real SDK, with the checker's did-you-mean correcting a guessed indexer (ByAgentId, not ById) and typed-uuid indexers carried as argument expressions with their own imports, collected now for action invokes and cleanup calls alike. Acceptance cleanup renders fluent chains through the same shared renderer. Single nested attributes render under kiotaFluent -- elements built by constructor, handed around as the bare interface, returned without an address-of -- and the validation refusal is lifted; resty output is proven byte-identical by the drift check after restoring the exact whitespace the branch had disturbed. The generated-local shadowing fix extends to the flatten helpers (elements, never models), and lists hand elements to the state mapper by ItemRef. The SDK is now the full pinned spec, not a tags scope, minus two deliberately excluded families: /endpoint/tests/dynamic-tests (an upstream kiota defect emits unqualified cross-package enum constants there) and /endpoint/agents/transfer (kiota dedupes its inline model against the proxies family and names the survivor nondeterministically -- one run in several flipped agents.go to proxies.go; with the family excluded, three consecutive generations are byte-identical). kiota's timestamped .kiota.log is deleted after generation, and the format pass runs goimports before gofumpt so a kiota file with unused imports repairs instead of failing the tree. Credential identifiers are plain strings, tag identifiers uuids -- each wire says which, and the wire regression suite plus both pilots' drift checks stay green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Why
First of four PRs taking
pilot/thousandeyes-kiotafrom the singletagresource to full parity with the resty pilot (23 resources, 2 data sources, 1 ephemeral, 1 action, 1 list facet). This one lands everything the resource waves depend on; PRs 2–4 are then pure blueprint ports.What
Single-nested attributes render under
kiotaFluent— the deliberate refusal from the dialect PR is lifted. Elements are built byconstructorExpr, handed around as the bare interface (SDKSingleType), and returned without an address-of (ItemRef); resty output is proven byte-identical by the drift check. This unblocks the 9 resources (19 wired single-nested attributes) in wave 4.Every block kind now binds fluent. The kiota pilot gains: the tag list facet (fluent collection read; identity via a new optional
ListIdentityMapping.convertFunc, wrapping a uuid-typed identifier into the identity's string), the tag/tags data sources, the credential ephemeral and resource, and the disable_endpoint_agent action — including a fluent acceptance-cleanup chain through the shared renderer, and argument-expression imports collected for invokes and cleanups. 83 bindings verified against the real SDK; the checker's did-you-mean corrected a guessed indexer (ByAgentId), and typed-uuid indexers ride as argument expressions (convert.ParseUUID, zero-uuid on malformed input — never a panic).Full-spec SDK (per the scope decision), minus two deliberately excluded families, each a documented upstream kiota defect:
/endpoint/tests/dynamic-tests/**— kiota emits unqualified cross-package enum constants there (does not compile);/endpoint/agents/transfer{,/**}— kiota dedupes its inline model against the proxies family and names the survivor nondeterministically (observed:agents.go↔proxies.goflip across runs). With the family excluded, three consecutive generations are byte-identical.Robustness hardening the full spec forced: the format pass runs goimports before gofumpt (kiota occasionally emits unused imports), and kiota's timestamped
.kiota.logis deleted after generation. Emitter fixes the wider surface exposed: the flatten helpers'modelslocal renamed (elements) to stop shadowing the models alias, and lists hand elements to the state mapper via a style-awareItemRef.Verification
bindings checkgreen against the generated SDK; both pilots'provider generate -checkgreen;sdk generate -checkgreen three consecutive times;probe verifyre-derives identical facts from the shared recordings; all three modules 0 test failures.Next: PR 2 (admin wave), PR 3 (tests wave), PR 4 (alerts + dashboards). Dispatch
go | Acceptance tests (kiota)after merge to exercise the new block kinds live.🤖 Generated with Claude Code