feat: OASF plugin#311
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
| // TODO(kevin): read dynamically from a2a plugin exports instead of duplicating the same info here | ||
| card_data: getAgentCard(), |
There was a problem hiding this comment.
I'll fix this a2a plugin integration in another PR. This one needs some changes to aixyzApp architecture for a proper fix
There was a problem hiding this comment.
Pull request overview
Adds an OASF “identity” endpoint to the Aixyz runtime, extends aixyz.config.ts to describe OASF-related metadata, and wires the generated server to always expose the OASF record.
Changes:
- Introduces
OASFPluginandgetOasfRecord()to serveGET /_aixyz/oasf.json. - Extends
@aixyz/configschema/runtime types to includedomains,services, and per-skill optionaloasfcatalog info. - Refactors
ERC8004Pluginto detect A2A/MCP/OASF dynamically at initialize-time; updates CLI server generator to always register OASF.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/aixyz/app/plugins/oasf.ts | New plugin + record builder for OASF JSON endpoint. |
| packages/aixyz/app/plugins/oasf.test.ts | Unit tests for required fields + locator/module auto-detection. |
| packages/aixyz/app/plugins/erc-8004.ts | Adds OASF as an advertised service + shifts detection to plugin/route introspection. |
| packages/aixyz/app/plugins/erc-8004.test.ts | Updates tests for new dynamic detection + adds OASF expectations. |
| packages/aixyz-config/index.ts | Adds domains, services, and skill-level oasf fields to config schema + runtime. |
| packages/aixyz-cli/build/AixyzServerPlugin.ts | Generated server always registers OASFPlugin; simplifies ERC-8004 registration. |
Comments suppressed due to low confidence (1)
packages/aixyz/app/plugins/erc-8004.test.ts:354
- Test name says "POST to well-known" but the request is sent to
/_aixyz/erc-8004.json. Rename the test (or change the request path) so the test description matches what it's actually verifying.
const app = await createApp({});
const res = await app.fetch(new Request("http://localhost/_aixyz/erc-8004.json", { method: "POST", body: "{}" }));
expect(res.status).toBe(404);
});
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 10 out of 10 changed files in this pull request and generated 8 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| // Unregistered routes | ||
| // --------------------------------------------------------------------------- | ||
|
|
||
| test("POST to well-known returns 404", async () => { | ||
| const app = await createApp(); | ||
|
|
||
| const res = await app.fetch(new Request("http://localhost/_aixyz/oasf.json", { method: "POST", body: "{}" })); | ||
| expect(res.status).toBe(404); | ||
| }); |
There was a problem hiding this comment.
Test description mentions "POST to well-known", but the endpoint under test is /_aixyz/oasf.json (not a /.well-known/* path). Consider renaming the test for clarity.
Changes:
services?: { type: string; url: string }[]toaixyz.config.ts/_aixyz/oasf.jsoncloses XYZ-98