Skip to content

feat(agentos): redesigned dashboard inspector on the TS actor runtime#1780

Open
NicholasKissel wants to merge 4 commits into
mainfrom
NicholasKissel/inspector-redesign
Open

feat(agentos): redesigned dashboard inspector on the TS actor runtime#1780
NicholasKissel wants to merge 4 commits into
mainfrom
NicholasKissel/inspector-redesign

Conversation

@NicholasKissel

Copy link
Copy Markdown
Member
  • Redesigns the inspector into transcript, filesystem, and system tabs with permission approvals, VM status badges, software logos, and a filesystem workbench; the built-in rivetkit tabs are hidden
  • Adds an observe-only health action (post-mortem limit-warning and agent-exit buffers that survive VM sleep, never boots the VM) as an actor extra alongside the preview-URL actions
  • Registers the inspector tabs via the actor inspector config so the dashboard serves them without extra setup
  • Permission approvals ride the durable session surface (listSessions waiting-state backfill plus sessionEvent permission entries); responses render each request's own ACP options
  • Anchors the assets/ gitignore so the inspector SVG sources stay tracked
  • Documents the inspector (new docs page, nav entry, and cross-links from quickstart, debugging, sessions, and architecture)

Supersedes #1752, rebuilt on the TS actor runtime without the terminal tab.

@railway-app

railway-app Bot commented Jul 19, 2026

Copy link
Copy Markdown

🚅 Deployed to the agentos-pr-1780 environment in agentos

Service Status Web Updated (UTC)
agentos 😴 Sleeping (View Logs) Web Jul 23, 2026 at 8:20 pm

🚅 Environment agentos-pr-1780 in rivet-frontend has no services deployed.

const backfillRows = backfill.data;
useEffect(() => {
if (!backfillRows || backfillRows.length === 0) return;
setCards((prev) => {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To fix after merge: never* use setstate in useeffect, need to add this to Claude.md

Comment on lines +158 to +166
const imageUrl = useMemo(() => {
if (!data?.bytes || data.text !== null || !IMAGE_EXTENSIONS.test(data.path)) return null;
return URL.createObjectURL(new Blob([data.bytes as BlobPart]));
}, [data]);
useEffect(() => {
return () => {
if (imageUrl) URL.revokeObjectURL(imageUrl);
};
}, [imageUrl]);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's should be in self-contained hook

Comment on lines +439 to +452
const createFolder = async () => {
const name = newFolderDraft?.trim();
if (!name) {
setNewFolderDraft(null);
return;
}
setTreeError(null);
try {
await agentOsSource.mkdir(name.startsWith("/") ? name : joinRoot(currentDir, name));
setNewFolderDraft(null);
await refreshTree();
} catch (error) {
setTreeError(error);
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A lot of setstate in one place, useReducer perhaps would be better

Comment on lines +151 to +152
setBusy(true);
setError(null);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

useMutstion will solve this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants