Repository navigation
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
kube
added this pull request to stack #9915
October 5, 2026 01:29
kube
force-pushed
the
claude/plugin-v1-petrinaut-ai-in-website
branch
from
October 5, 2026 12:28
a287b93 to
f6f307e
Compare
kube
removed this pull request from stack #9915
October 7, 2026 17:11
This was referenced Oct 7, 2026
kube
force-pushed
the
claude/plugin-v1-petrinaut-ai-in-website
branch
from
October 7, 2026 17:12
f6f307e to
76e663d
Compare
kube
force-pushed
the
claude/plugin-v1-petrinaut-ai-in-website
branch
from
October 8, 2026 16:57
3b9e518 to
e7fc133
Compare
kube
force-pushed
the
claude/plugin-v1-petrinaut-ai-in-website
branch
from
October 8, 2026 22:00
e7fc133 to
19ebd53
Compare
kube
added this pull request to stack #9937
October 8, 2026 22:01
kube
force-pushed
the
claude/plugin-v1-petrinaut-ai-in-website
branch
from
October 9, 2026 02:42
19ebd53 to
2567041
Compare
The frame, header, tab strip, tabs, docking, focus and tab attention move out of the chat view into PetrinautAssistantWindow, which the chat draws around its transcript. The editor keeps the shown tab, start requests and focus requests above the chat, which reads them through usePetrinautAssistantWindow. PetrinautAssistantWindowPreview hosts a chat outside an editor for stories and tests.
Renames only: the AI panel, its chat view, tools, transports, voice session and the chat types move from the library to apps/petrinaut-website/src/main/app/plugins/_shared/chat. Imports are not updated here, so this commit does not build alone; the next commits adapt the library and the kit.
A plugin with `assistant: { label }` provides the editor's AI assistant; one with `assistant: { extends }` adds tabs and start actions to another plugin's. The provider resolves the active assistant once, from the stored `aiAssistantId` or the first running assistant, and User settings -> General -> AI assistant and the palette's switch commands change it. An extension whose parent is missing or off shows "Needs ..." in the Plugins section.
The library drops the `aiAssistant` prop, its chat types and stories, and the AI SDK and react-markdown dependencies, which move to the website with the chat kit.
`AssistantChat` takes the assistant plugin's `api` (document and experiments, write access) and holds it in a kit-owned context, so the chat reads the net, edits it, runs experiments and reports errors through the plugin api instead of the editor's internals. Refused edits come back as blocked tool output. Each chat renders its own Voice session. `executePetrinautAiMutation` and the automatic tools take `edit`. Core drops `createPetrinautAiWritableCallbacks`, which nothing uses any more.
`website.petrinaut-ai` renders the shared chat as its assistant view and keeps each document's transcript in this browser; the `/ai-experiments` route passes its scripted assistant as `website.ai-experiments-demo`. While Brunch is the selected assistant, the shell passes `website.brunch`, a bridge plugin that renders the Brunch chat and Ledger tab the shell still builds. Website imports of the chat kit come from `plugins/_shared/chat`, and the Brunch tools edit through the plugin api.
The website's unit and integration tests load a `matchMedia` shim for jsdom, the shared chat's components compile with the React Compiler under test, and the React Compiler lint rules apply to `plugins/_shared/chat`.
Adds the Assistant plugins and host-tools pages, the assistant window diagram, the assistant rows of the plugin usage manual and the demo site's assistant plugins, and points the README's AI section and the user guide at them. The user guide describes the AI assistant setting and the Needs chip. Pending @hashintel/petrinaut changesets whose subject moved to the website with the chat (Brunch, Voice, chat and tool UI) are deleted; mixed ones keep the part that stays in the library. The changelog's hand-written Unreleased block, which announced the same chat and Voice APIs, goes too.
The Brunch bridge offers Voice's start action in the empty-net prompt again while its chat has Voice mode. The assistant window leaves out a tab that reuses the chat tab's id or another tab's and reports it under that plugin's id, instead of throwing outside every plugin boundary. The chat tab falls back to the plugin's assistant label, as the user guide now says. The browser-storage helpers move to app/shared, so Petrinaut AI no longer imports from the demo shell. Review cleanups: one list of running assistants, one select style in User settings, the preview built on the standalone host, the auto-layout output in one helper, an empty test instance for the kit tests, type tests for the assistant manifest, and no dead exports, aliases, stale names or blank-line-only hunks. Docs: the user guide calls the stock assistant Petrinaut AI and describes assistants in the Plugins section; the plugin pages, diagrams and the AI-experiments, snapshot-diagnostics and testing notes describe the assistant runtime as built.
Assistant tab activity identities are strings, so the attention state keeps them as given. The user guide drops the removed host mutation check, the experiment chat page names the chat as the dispatcher, and the moved kit's comments name the chat rather than the library. The changesets name the added assistant API and the removed exports, and keep the release notes for the assistant window's clearance and auto-layout framing. The AI experiments demo names its plugin, the jsdom shim leaves matchMedia to the vitest setup, and new tests cover Petrinaut AI in the real editor and the canvas insets of a window whose assistant is off.
kube
force-pushed
the
claude/plugin-v1-petrinaut-ai-in-website
branch
from
October 9, 2026 09:45
2567041 to
458f3d4
Compare
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Before this PR, Petrinaut AI ran in two hosts. The website passed it as a plugin, and HASH's process embed passed it through the
aiAssistantprop with a bridge transport, an iframe chat relay, saved conversations and its own chat route. Every assistant rendered the chat that@hashintel/petrinautshipped, configured by an object the plugin returned.This PR removes Petrinaut AI from the HASH app and moves the chat out of the library into the website's
plugins/_shared/chat, where Petrinaut AI and Brunch render it. An assistant plugin returns its chat as a React node that draws the newPetrinautAssistantWindow. The library keeps the window, the empty-net prompt and a small editor API, so an editor without an assistant plugin has no chat at all.Links
Changes
Library
PetrinautAssistantWindowdraws the frame around a plugin's chataiAssistantprop and every chat export removedWebsite
plugins/_shared/chatplugins/_shared/chatwith the React Compiler and shimmatchMediaHASH
allow-formsPrompt
petrinaut-coreforplugins/petrinaut-ai/server/Known issues
Next steps
plugins/petrinaut-ai/, Brunch's transcript parts toplugins/brunch/and the voice dock toplugins/voice/Test coverage
assistant-window.test.tsx:assistant-chat.test.tsx,chat-view.test.tsxand the other moved suites:plugins-provider.test.tsx:use-read-only-reason.test.ts:ai-cta-modal.test.tsx:petrinaut-ai-prompt.test.ts:ai.test.ts:@apps/hash-frontendtype check and lint.How to test
HASH
Website
Storybook
yarn workspace @apps/petrinaut-website storybook