Skip to content

feat(examples): end-to-end proof of third-party framework-* discovery (#190)#206

Merged
suleimansh merged 1 commit into
mainfrom
feat/framework-discovery-example
Jul 4, 2026
Merged

feat(examples): end-to-end proof of third-party framework-* discovery (#190)#206
suleimansh merged 1 commit into
mainfrom
feat/framework-discovery-example

Conversation

@suleimansh

Copy link
Copy Markdown
Member

Follow-up to #205 (the extension SPI). Discovery was only proven against a fake loader; this adds a real end-to-end proof and closes a gap it surfaced.

What's here

  • examples/framework-hello - a plain third-party capability package (no build, default-exports a FrameworkExtension with a persona + a skill). The framework core never mentions it.
  • examples/framework-discovery-demo - a project that depends on framework-hello. Its runDemo runs both halves of the seam for real: resolve + import the installed framework-* package from disk, then compose it into the agent frame, offline via the fake driver. pnpm start narrates it; pnpm test asserts it end-to-end.

Demo output:

discovered 1 framework-* extension(s): framework-hello
Detected Vike (confidence 0); framing with 4 persona(s), framework-hello, 1 skill(s)
greeter persona:   composed into the frame
hello-guide skill: composed into the frame
production-grade:  true

Gap this surfaced (fixed here)

An active extension's own skills were collected but never framed - run.ts only used the built-in SkillRegistry. Added composeSkills (symmetric with composePersonas): unions the registry-matched skills with every active extension's skills, deduped by name. run.ts now threads both an extension's personas and its doc pointers into the frame. Also exported discoverExtensions / readProjectSignals from @gemstack/framework for programmatic embedders.

Tests: new E2E test in the demo (real import + compose), plus unit tests for composeSkills and extension-skill framing. Repo typecheck (21) + build (9) green; framework 65/65, ai-autopilot 277/277 (one pre-existing flaky timing test, green on rerun). Changeset added (minor, both packages).

…#190)

The extension SPI shipped with discovery tested only against a fake loader. Add a
real proof: `examples/framework-hello`, a plain third-party capability package
(no build, default-exports a FrameworkExtension), and
`examples/framework-discovery-demo`, a project that depends on it. The demo runs
both halves of the seam for real - resolve+import the installed framework-*
package from disk, then compose it into the agent frame - offline via the fake
driver, and asserts the discovered persona and skill reach the agent.

Building it surfaced a gap: an active extension's own `skills` were collected but
never framed (run.ts only used the built-in SkillRegistry). Add `composeSkills`
(symmetric with composePersonas): union the registry-matched skills with every
active extension's skills, deduped by name. run.ts now threads both an
extension's personas and its doc pointers into the frame.
@suleimansh suleimansh added the enhancement New feature or request label Jul 4, 2026
@suleimansh suleimansh self-assigned this Jul 4, 2026
@suleimansh suleimansh merged commit c3e7e9e into main Jul 4, 2026
2 checks passed
@suleimansh suleimansh deleted the feat/framework-discovery-example branch July 4, 2026 17:04
@suleimansh suleimansh restored the feat/framework-discovery-example branch July 4, 2026 17:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant