Repository navigation
Description
Where did this happen?
Desktop app (macOS)
Version
Paradev / Superset Version: 2.0.0 (macOS)
What happened?
agy (Antigravity) is registered as a built-in terminal agent in @superset/shared (BUILTIN_TERMINAL_AGENTS), PRESET_ICONS, and the usage/quota readers (UsageAgent / QuotaCapableAgent), but it is completely omitted from AGENT_SETUP_TARGETS and AGENT_SETUP_DEFINITIONS in @superset/agent-setup.
Because no wrapper or lifecycle hooks are installed for agy:
1. ~/.superset/bin/agy does not exist (SUPERSET_AGENT_ID="agy" is never exported and the launch SessionStart event is never sent).
2. No lifecycle hooks are registered in Antigravity CLI's hook config (~/.gemini/config/hooks.json).
3. Running agy inside a Paradev/Superset terminal never sends Start, UserPromptSubmit, ToolUse, or Stop events to ~/.superset/hooks/notify.sh.
4. superset agents wait hangs indefinitely (status: "unknown", reason: "agent is starting"), and superset agents explain reports:
text No agent hook from this terminal yet. Why: something may be running in the terminal, but no agent hook has reached Superset. It is a program that is not an agent, an agent still starting, or an agent whose hooks are not installed.
Steps to reproduce
- Open a terminal pane in Paradev/Superset (
2.0.0). - Launch Antigravity CLI with an initial prompt:
agy --mode accept-edits -i "Say hello" - Wait for
agyto finish responding and return to an idle prompt. - Run
superset agents list/superset agents explain --pane <pane-id>/superset agents wait --pane <pane-id>. - Observe that the pane remains in
unknown/agent is startingand never transitions toworkingoridle/Stop.
Logs, screenshots, or recordings
Potential Root Cause
-
In
@superset/shared/agent-command,agyis registered inBUILTIN_TERMINAL_AGENTS:
ts createBuiltinTerminalAgent({ id: "agy", label: "Antigravity", command: "agy --mode accept-edits", promptCommand: "agy --mode accept-edits -i", resumeCommand: "agy --mode accept-edits --conversation", nonInteractiveCommand: "agy -p", }) -
However, in
@superset/agent-setup/src/agent-setup-targets.ts,AGENT_SETUP_TARGETSonly lists:amp,claude,codex,droid,opencode,omp,pi,cursor-agent,gemini,mastracode,kimi,grok,copilot,vibe,devin,muse,ufo(agyis missing, as arefx,hermes, andkiro). -
Note that
gemini(Gemini CLI) andagy(Antigravity CLI) are separate tools with different hook config files and wire schemas:
geminireads~/.gemini/settings.json(BeforeAgent,AfterAgent,AfterTool).agyreads~/.gemini/config/hooks.json, groups hooks under a top-level namespace key (e.g."superset-notify": { ... }), uses event namesSessionStart,PreInvocation,PreToolUse,PostToolUse,Stop, and passes"conversationId"on stdin without"hook_event_name"in the JSON payload.
Expected Behavior / Proposed Fix
Add { id: "agy", managedBinary: true } to AGENT_SETUP_TARGETS and wire AGENT_SETUP_DEFINITIONS.agy to:
- Create
~/.superset/bin/agyviacreateWrapper("agy", ...)withagentId: "agy". - Create
~/.superset/hooks/agy-hook.sh(or handleagyinnotify.sh) and register a managed"superset-notify"block in~/.gemini/config/hooks.json:
json { "superset-notify": { "SessionStart": [ { "type": "command", "command": "\"$HOME/.superset/hooks/agy-hook.sh\" SessionStart" } ], "PreInvocation": [ { "type": "command", "command": "\"$HOME/.superset/hooks/agy-hook.sh\" UserPromptSubmit" } ], "PostToolUse": [ { "matcher": ".*", "hooks": [ { "type": "command", "command": "\"$HOME/.superset/hooks/agy-hook.sh\" PostToolUse" } ] } ], "Stop": [ { "type": "command", "command": "\"$HOME/.superset/hooks/agy-hook.sh\" Stop" } ] } } - Antigravity CLI (
agy) hook payload details foragy-hook.sh:
- Stdin JSON contains
"conversationId"(map to"session_id"),"workspacePaths"(first element iscwd), and onStopevents"fullyIdle": true | false(only forwardStoptonotify.shwhenfullyIdleis notfalse). PostToolUsehooks inagyexpect{}on stdout before exiting0.
Activity
github-actions commentedon Oct 26, 2026
Summary
The report holds up. Antigravity CLI (
agy) is a built-in terminal agent with a preset, a resume command and a quota reader. But@superset/agent-setupnever installs anything for it: no~/.superset/bin/agywrapper and no lifecycle hooks. So whenagyruns in a Superset terminal, the host gets noSessionStart,StartorStopevent. The pane stays at "agent is starting",superset agents waitnever returns, andsuperset agents explainshows the "No agent hook from this terminal yet" message. A wrapper and hook config are needed. A wrapper alone would not be enough, becausenotify.shcannot read Antigravity's hook payload as it is today (details below).Affected code
packages/shared/src/builtin-terminal-agents.ts:240-248:agyis registered here as a built-in agent.packages/agent-setup/src/agent-setup-targets.ts:16-34:AGENT_SETUP_TARGETShas noagyentry.kiro(:229),fx(:250) andhermes(:261) are also missing.SUPERSET_MANAGED_BINARIES(:38) is built from this list, so no wrapper is created.packages/agent-setup/src/agent-setup.ts:84-165:AGENT_SETUP_DEFINITIONShas noagykey. The per-agent setup paths at:251and:280returnfalsefor it.packages/cli/src/commands/agents/explain/explain-agent.ts:89,112: the "No agent hook from this terminal yet" message the reporter quotes.Root cause
ufo(agent-wrappers-ufo.ts) still getSUPERSET_AGENT_IDexported and a launch-timeSessionStartfrombuildWrapperScript(agent-wrappers-common.ts:200-244).agyhas no wrapper, so it does not get even that.~/.gemini/settings.json(agent-wrappers-gemini.ts:35-37) with Gemini CLI event names (:50-56). Nothing writes Antigravity's hook file. I could not check from the repo that the file is~/.gemini/config/hooks.json, or check the schema the issue describes; someone should confirm both against Antigravity's docs.notify.shcould not read Antigravity's payload as-is. This is why pointingagystraight atnotify.shwould not work, even with hooks registered:hook_event_name/hookEventName, with a Codextypefallback (templates/notify-hook.template.sh:83-93). With no event name it exits silently (:115). The issue says Antigravity puts no event name in the payload.session_id/sessionId/resourceId/thread-id(:72-79).conversationIdis never read, so--conversationresume would not get an id.mapEventType(packages/host-service/src/events/map-event-type.ts:23+) has no case forPreInvocation. The adapter would need to translate it, for example toUserPromptSubmit.How to reproduce
~/.superset/bin/agydoes not exist after the desktop app starts.packages/agent-setup(bun:test):Suggested fix
Model the fix on the Gemini integration (
agent-wrappers-gemini.tsplustemplates/gemini-hook.template.sh):{ id: "agy", managedBinary: true }toAGENT_SETUP_TARGETS.agent-wrappers-agy.tswith:createAgyWrapper():buildWrapperScript("agy", 'exec "$REAL_BIN" "$@"', { agentId: "agy" }).createAgyHookScript(): writes anagy-hook.shadapter. It takes the event name from argv, mapsconversationIdtosession_id, dropsStopwhenfullyIdleisfalse, prints{}where Antigravity expects output, and forwards tonotify.shwithhook_event_nameset.managed-json-hooks.tsif the namespaced layout fits itseventsContainerKeymodel. If not, use a small dedicated merge.agy: { setup: [...], teardown: [removeAgyManagedHooks] }intoAGENT_SETUP_DEFINITIONS.PreInvocationreaches the host without being renamed, add it tomapEventType. The cleaner option is to rename it in the adapter.A wrapper-only entry like
ufowould be a quick partial fix. The pane would at least leave "starting", but working/idle status would still not update until hooks are installed.kiro,fxandhermeshave the same gap and might be handled in separate issues.