Skip to content
Merged
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
2 changes: 1 addition & 1 deletion apps/docs/src/content/agents/mcp-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ The prompts follow the same config as the tools. A prompt is left out when a too

The argument is your own text. The server puts it on one line, cuts it at 200 characters and masks JWTs, bearer tokens and secret values in it, the same way it masks tool answers.

The stdio server offers no prompts. The prompts need a devframe patch that devframe 1.2.6 does not ship, so an installed package offers none until devframe ships it.
The stdio server offers no prompts. The prompts need a devframe patch that devframe 1.3.0 does not ship, so an installed package offers none until devframe ships it.

### Resource templates

Expand Down
2 changes: 1 addition & 1 deletion apps/docs/src/content/agents/resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ When a page starts reporting or expires, the server sends `notifications/resourc

The HTTP endpoint is stateless, so the notification only reaches a client that keeps a stream open for it: one that speaks the 2026-07-28 protocol and calls `subscriptions/listen` with `resourcesListChanged`. A client on the 2025 protocol versions, such as one built on the MCP SDK 1.x defaults, gets no notification, even though `initialize` advertises `listChanged`. Such a client sees new pages the next time it calls `resources/list`, or through the [templates](#read-one-page), which need no list.

Like the prompts, the templates need a devframe patch that devframe 1.2.6 does not ship. The stdio server has no templates, since no page connects to it.
The templates and their `list_changed` notifications are part of devframe since 1.3.0. The stdio server has no templates, since no page connects to it.

## Shared state

Expand Down
13 changes: 6 additions & 7 deletions apps/docs/src/content/contributing/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,15 @@ pnpm install

### Patched dependencies

`patches/` holds `pnpm patch` changes to the built files of `devframe`, `@devframes/agentic` and `@devframes/hub` 1.2.6, listed under `patchedDependencies` in `pnpm-workspace.yaml`. They add what devframe doesn't ship:
`patches/` holds `pnpm patch` changes to the built files of `devframe`, `@devframes/agentic` and `@devframes/hub` 1.3.0, listed under `patchedDependencies` in `pnpm-workspace.yaml`. They add what devframe doesn't ship:

| Patch | What it adds | Used by |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `prompts` | An MCP route option with prompt templates. `@devframes/agentic` declares the `prompts` capability and answers `prompts/list` and `prompts/get` (invalid params for an unknown prompt or a missing required argument). Patched in `devframe`, `@devframes/hub` and `@devframes/agentic`. | `pangularMcpPrompts()` in `packages/devtools/src/agent-prompts.ts`, through `pangularMcp()` |
| `resourceTemplates` | MCP route options for resource templates and a host hook for resource list changes. `@devframes/agentic` answers `resources/templates/list`, reads a URI through the first template that matches it (`{name}` variables only, one URI segment each), adds each template's `list()` entries to `resources/list`, and sends `notifications/resources/list_changed` when `onResourcesChanged` calls back. Patched in `devframe`, `@devframes/hub` and `@devframes/agentic`. | `pangularMcpResourceTemplates()` and `pangularMcpPagesChanged()` in `packages/devtools/src/agent-page-resources.ts`, through `pangularMcp()` |
| Patch | What it adds | Used by |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `prompts` | An MCP route option with prompt templates. `@devframes/agentic` declares the `prompts` capability and answers `prompts/list` and `prompts/get` (invalid params for an unknown prompt or a missing required argument). Patched in `devframe`, `@devframes/hub` and `@devframes/agentic`. | `pangularMcpPrompts()` in `packages/devtools/src/agent-prompts.ts`, through `pangularMcp()` |

Some route options need no patch. The `exposeSharedState` filter, which hides the shared-state keys of an inspector with `agent.tools.<name>: false`, is part of devframe since 1.2.4. The server `instructions` and `withMcpContent`, which `screenshot-component` uses to send its image as its own MCP block, are part of devframe since 1.2.6.
Some route options need no patch. The `exposeSharedState` filter, which hides the shared-state keys of an inspector with `agent.tools.<name>: false`, is part of devframe since 1.2.4. The server `instructions` and `withMcpContent`, which `screenshot-component` uses to send its image as its own MCP block, are part of devframe since 1.2.6. The `resourceTemplates` and `onResourcesChanged` route options, which `pangularMcpResourceTemplates()` and `pangularMcpPagesChanged()` in `packages/devtools/src/agent-page-resources.ts` use, are part of devframe since 1.3.0.

The patches apply only inside this repository. An app that installs the published package gets no prompts and no page resource templates until devframe ships them. Each patch names an exact version and file names with build hashes, so a devframe upgrade needs the patches redone with `pnpm patch`, or removed once devframe has the feature.
The patches apply only inside this repository. An app that installs the published package gets no prompts until devframe ships them. `pnpm e2e:install` checks that the installed package lists resource templates over MCP. Each patch names an exact version and file names with build hashes, so a devframe upgrade needs the patches redone with `pnpm patch`, or removed once devframe has the feature.

## Project structure

Expand Down
2 changes: 1 addition & 1 deletion examples/angular-native/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"@ng-native/platform": "0.2.0",
"@ngrx/signals": "^22.0.1",
"@pangular-inspector/devtools": "file:pangular-inspector-devtools.tgz",
"devframe": "^1.2.6",
"devframe": "^1.3.0",
"expo": "~57.0.26",
"react": "19.2.3",
"react-native": "0.86.3",
Expand Down
2 changes: 1 addition & 1 deletion extension/ui/THIRD_PARTY_LICENSES.md

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

This file was deleted.

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

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

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
"@angular/ssr": "^22.1.8",
"@ngrx/signals": "^22.0.1",
"@pangular-inspector/devtools": "workspace:*",
"devframe": "^1.2.6",
"devframe": "^1.3.0",
"express": "^5.1.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
Expand All @@ -74,8 +74,8 @@
"@angular/cli": "^22.1.8",
"@angular/compiler-cli": "^22.1.0",
"@axe-core/playwright": "^4.13.0",
"@devframes/agentic": "^1.2.6",
"@devframes/vite": "^1.2.6",
"@devframes/agentic": "^1.3.0",
"@devframes/vite": "^1.3.0",
"@ngrx/store": "^22.0.1",
"@ngrx/store-devtools": "^22.0.1",
"@nx/angular": "23.2.1",
Expand Down
2 changes: 1 addition & 1 deletion packages/devtools/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ These changes can break a 0.0.7 setup without an error.
- **Analog on pnpm needs one setting.** `@analogjs/vite-plugin-nitro` imports `h3` without declaring it, so under pnpm it can resolve to the h3 2 that this package brings in, and `vite build` fails with "does not provide an export named 'createEvent'". Declare `h3@^1` for the plugin with pnpm `packageExtensions`, as the Analog guide shows.
- **Agent tools, arguments and resource templates are renamed, and old names are refused.** Update prompts, scripts and client allowlists. See **Agent tools renamed** below.
- **Most entry points export less.** See **Removed exports** below.
- **MCP prompts and the per-page resource templates need a devframe release after 1.2.6.** With devframe 1.2.6 from npm, the HTTP endpoint sends no prompts, and the resource templates and their `list_changed` notifications are missing. Server instructions and the `screenshot-component` image work with 1.2.6. The workspace runs a patched devframe, so this only affects installed packages.
- **MCP prompts need a devframe release after 1.3.0.** The package depends on devframe 1.3.0, which serves the per-page resource templates and their `list_changed` notifications. With devframe 1.3.0 from npm, the HTTP endpoint sends no prompts. The workspace runs a patched devframe, so this only affects installed packages.

### Agent tools renamed

Expand Down
18 changes: 9 additions & 9 deletions packages/devtools/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -160,17 +160,17 @@
"nativescript"
],
"dependencies": {
"@devframes/agentic": "^1.2.6",
"@devframes/hub": "^1.2.6",
"@devframes/hub-ui": "^1.2.6",
"@devframes/plugin-messages": "^1.2.6",
"@devframes/plugin-messages--assets": "^1.2.6",
"@devframes/plugin-terminals": "^1.2.6",
"@devframes/plugin-terminals--assets": "^1.2.6",
"@devframes/agentic": "^1.3.0",
"@devframes/hub": "^1.3.0",
"@devframes/hub-ui": "^1.3.0",
"@devframes/plugin-messages": "^1.3.0",
"@devframes/plugin-messages--assets": "^1.3.0",
"@devframes/plugin-terminals": "^1.3.0",
"@devframes/plugin-terminals--assets": "^1.3.0",
"@valibot/to-json-schema": "^1.8.0",
"axe-core": "^4.13.0",
"cac": "^7.0.0",
"devframe": "^1.2.6",
"cac": "^7.1.0",
"devframe": "^1.3.0",
"valibot": "^1.5.0"
},
"peerDependencies": {
Expand Down
8 changes: 4 additions & 4 deletions packages/devtools/src/agent-mcp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ export function pangularMcpInstructions(config: ResolvedPangularConfig): string
* mounts the route. That matches `'auto'` here: `@devframes/agentic` is a
* dependency, and Pangular always registers agent tools.
*
* `exposeSharedState` (1.2.4 and later) and `instructions` (1.2.6 and later)
* are devframe route options, so they also hold for the published package.
* `prompts`, `resourceTemplates` and `onResourcesChanged` still come from the
* patches in `patches/`; without them devframe ignores them.
* `exposeSharedState` (1.2.4 and later), `instructions` (1.2.6 and later),
* `resourceTemplates` and `onResourcesChanged` (1.3.0 and later) are devframe
* route options, so they also hold for the published package. `prompts` still
* comes from the patches in `patches/`; without them devframe ignores it.
*/
export function pangularMcp(
setting: McpSetting | undefined,
Expand Down
2 changes: 1 addition & 1 deletion packages/devtools/src/agent-page-resources.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { routerResourceText, type RouterState } from './rpc/router-tools.ts';
import { withIdEdges } from './rpc/signal-tools.ts';
import type { ComponentPage, InjectorPage } from './types.ts';

/** One MCP resource template, as the patched `@devframes/agentic` server takes it. */
/** One MCP resource template, as `@devframes/agentic` takes it. */
export type PangularMcpResourceTemplate = NonNullable<McpRouteOptions['resourceTemplates']>[number];

/**
Expand Down
Loading
Loading