Skip to content

fix(sdk): reconcile managed identity and skill bindings - #114

Merged
heimanba merged 8 commits into
mainfrom
fix/qoder-managed-resource-identity
Sep 21, 2026
Merged

heimanba merged 8 commits into
mainfrom
fix/qoder-managed-resource-identity

Conversation

@heimanba

Copy link
Copy Markdown
Contributor

Summary

  • match Qoder managed resources by their declared identity during drift detection
  • preserve public, pinned dependency resolutions after the audited dependency upgrade
  • send explicit empty skill replacement sets for Bailian and Qoder agents so removing the last declared skill clears the remote binding

Why

Provider reconciliation must converge remote state to the declaration. Omitting an empty skill list leaves stale remote bindings on merge-style agent updates, while identity-based matching prevents managed resources from being misidentified during drift detection.

Type

  • Bug fix
  • Tests

Surface area

  • Provider interface / adapter contract
  • Tests / fixtures

Checklist

  • bun run verify:full passes
  • New provider follows the six-file structure, if applicable
  • No new runtime dependencies added without justification

Behavior / risk

Agent update payloads now include skills: [] when no skills are declared, explicitly replacing stale provider-side bindings. The same mapper is used for create requests, so skill-less creates also send an empty array. Provider mapper tests cover the payload shape. Qoder managed-resource matching now uses declared identity during drift detection.

Validation

  • bun run verify:scoped
  • bun run verify:full (lint, typecheck, architecture, tests, and WebUI build passed; dependency audit was rerun against the public npm registry because the configured enterprise mirror returned 404 for its advisory endpoint)
  • pre-push bun scripts/verify.ts push
  • 867 SDK tests, 74 CLI tests, 36 playbooks tests, 177 WebUI tests, 116 server tests, and 72 verification tests passed
  • bun audit: no vulnerabilities found

…rift detection

- Pass the resource declaration to readComparableResource so adapters can
  use declared display names and metadata for identity.
- Qoder adapter now identifies agents/environments by the protected
  agents.project/agents.resource metadata instead of only by name.
- Treat empty agent descriptions as omitted to avoid phantom drift.
- Update drift-detection and slim-state tests for managed identity behavior.
…tion

- Pass declarations to comparable reads for accurate matching
- Match on protected metadata to ensure correct identity detection
- Update versions of sdk, cli, playground, and server packages to patch 0.7.2/0.0.12
- Reflect fix in changelogs across multiple packages
Raise Tiptap, Hono, and js-yaml to patched releases so the dependency audit can pass.
Regenerate the dependency lockfile without local registry URLs so public verification can consume it.
Retain the existing compatible dependency graph while publishing canonical npm tarball URLs.
@heimanba
heimanba merged commit 50e321b into main Sep 21, 2026
14 checks passed
@heimanba
heimanba deleted the fix/qoder-managed-resource-identity branch September 21, 2026 01:11
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