Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion extension/ui/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Angular DevTools</title>
<style>*,:before,:after{box-sizing:border-box;margin:0}:root{--accent:#ff6b85}body{color:#e4e4e7;background:#0f0f11;font-family:system-ui,-apple-system,sans-serif}</style>
<script type="module" crossorigin src="./assets/index-BhFbvoaj.js"></script>
<script type="module" crossorigin src="./assets/index-ruy7p20M.js"></script>
</head>
<body>
<app-root></app-root>
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
"@angular/ssr": "^22.1.8",
"@ngrx/signals": "^22.0.1",
"@santoshyadavdev/ng-devtools": "workspace:*",
"devframe": "^1.0.0",
"devframe": "^1.1.0",
"express": "^5.1.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
Expand All @@ -54,7 +54,7 @@
"@angular/build": "^22.1.8",
"@angular/cli": "^22.1.8",
"@angular/compiler-cli": "^22.1.0",
"@devframes/agentic": "^1.0.0",
"@devframes/agentic": "^1.1.0",
"@devframes/vite": "^1.0.0",
"@types/express": "^5.0.1",
"@types/node": "^24.0.0",
Expand Down
4 changes: 2 additions & 2 deletions packages/ng-devtools/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@
"mcp"
],
"dependencies": {
"@devframes/agentic": "^1.0.0",
"@devframes/agentic": "^1.1.0",
"@valibot/to-json-schema": "^1.8.0",
"cac": "^7.0.0",
"devframe": "^1.0.0",
"devframe": "^1.1.0",
"valibot": "^1.5.0"
},
"devDependencies": {
Expand Down
5 changes: 3 additions & 2 deletions packages/ng-devtools/src/rpc/__tests__/agent-schema.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@ describe('describable', () => {
};
expect(returnToJsonSchema(describable(v.object({ ok: v.boolean() })))?.type).toBe('object');
expect(returnToJsonSchema(describable(v.array(v.string())))?.type).toBe('array');
// Without the converter devframe cannot tell an array from an object.
expect(returnToJsonSchema(v.array(v.string()))).toMatchObject({ type: 'object' });
// Since devframe 1.1.0 a schema it cannot convert is simply not
// advertised, rather than described as a permissive object.
expect(returnToJsonSchema(v.array(v.string()))).toBeUndefined();
});

it('converts for the draft devframe asks for', () => {
Expand Down
12 changes: 6 additions & 6 deletions packages/ng-devtools/src/rpc/agent-schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ type Convertible = Parameters<typeof toStandardJsonSchema>[0];
*
* Devframe stays validator neutral: it describes an RPC `returns` schema with
* the validator's own converter, and valibot does not ship one by default.
* Without it devframe falls back to a permissive object schema and advertises
* that as the MCP `outputSchema`, so a tool returning an array fails every
* `tools/call` against the schema the server itself published.
* Since devframe 1.1.0 a `returns` schema it cannot convert simply advertises
* no MCP `outputSchema`, so this is not a workaround for array returns any
* more; those are correct either way.
*
* With the converter attached, an object return is described accurately, and
* an array return advertises no output schema at all, since MCP only allows an
* object there. Either way the response matches what was advertised.
* What it still buys is accuracy for the tools that return an object: with the
* converter attached they advertise their real shape rather than a permissive
* one, so a client can tell what a call will hand back.
*/
export function describable<T extends Convertible>(schema: T): T {
const described = { ...schema, ...toStandardJsonSchema(schema) } as T;
Expand Down
76 changes: 38 additions & 38 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading