Skip to content

refactor(extensions): consume authoritative SDK types in managed built-ins #781

Closed

Description

@unbraind

Summary

The latest published 2026.7.27 managed built-in extensions statically import the PM SDK but still redeclare SDK contracts locally. Those mirrors already expose different function shapes across packages and can drift silently from the public SDK declarations.

Evidence

  • builtin-todos-import-export declares listAllItemMetadata with three parameters, while the authoritative SDK declaration has five parameters (the last four optional) and builtin-guide-shell legitimately passes all five.
  • builtin-todos-import-export and builtin-beads-import duplicate LocatedItem instead of importing the exported SDK type.
  • builtin-templates locally mirrors TemplatesSaveResult, TemplatesListResult, and TemplatesShowResult even though the public SDK exports those types.
  • These files are package-managed consumer artifacts, so downstream repositories cannot sustainably correct them in place.

The current three-parameter mirror does not cause an immediate runtime failure because omitted SDK parameters are optional, but it hides supported arguments and defeats static drift detection.

Expected

Managed built-ins import or derive their contract types from @unbrained/pm-cli/sdk, ideally using typeof or exported result types, with a package-level typecheck that fails when a built-in call diverges from the SDK surface.

Duplicate search

Searched open and closed issues for listAllItemMetadata, SDK contract extension, managed extension types, hand-written SDK types, and related guide-shell terms. No issue covering these managed built-in type mirrors was found. Issues #740 and #749 concern SDK barrel completeness and host-bound SDK injection, not this residual mirror drift.

Activity

  1. coderabbitai commented on Jul 27, 2026

    @coderabbitai
    🔗 Related PRs

    #456 - Expose SDK runtime action client [merged]
    #543 - Promote linked-resource and dependency governance into the pm SDK [merged]
    #657 - SDK extension authoring, trust boundaries, and scoped rendering [merged]
    #753 - feat(sdk): universal context, concurrency, and discovery primitives [merged]
    #769 - SDK package runtimes, projection contracts, and merge governance [merged]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

  2. unbraind commented on Jul 28, 2026

    @unbraind
    OwnerAuthor

    pm tracker item: pm-vnk7ob — managed built-ins redeclare public SDK contracts locally; tracked with a parity gate as the control so the class stays closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions