Skip to content

feat(kiota): parity foundations — every block kind fluent, full-spec SDK, single-nested rendering - #107

Open
ShocOne wants to merge 1 commit into
mainfrom
feat/kiota-foundations
Open

feat(kiota): parity foundations — every block kind fluent, full-spec SDK, single-nested rendering#107
ShocOne wants to merge 1 commit into
mainfrom
feat/kiota-foundations

Conversation

@ShocOne

@ShocOne ShocOne commented Aug 4, 2026

Copy link
Copy Markdown
Member

Why

First of four PRs taking pilot/thousandeyes-kiota from the single tag resource 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 by constructorExpr, 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.goproxies.go flip 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.log is deleted after generation. Emitter fixes the wider surface exposed: the flatten helpers' models local renamed (elements) to stop shadowing the models alias, and lists hand elements to the state mapper via a style-aware ItemRef.

Verification

  • 83/83 bindings check green against the generated SDK; both pilots' provider generate -check green; sdk generate -check green three consecutive times; probe verify re-derives identical facts from the shared recordings; all three modules 0 test failures.
  • Resty pilot byte-stability held through every emitter change (whitespace regressions caught and fixed by the drift check itself).

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

…, 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>
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