mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
The prompter prompt tells the model to call propose_draft when the spec is ready, but on Grok that tool didn't exist — so no draft chunk, no panel draft card, and the human couldn't launch a task from a Grok intake chat. - intake-tools.js: opencode plugin registering propose_draft via Hooks.tool; the execute() only ACKs — the driver (OpencodeServeSession.normalize -> _is_propose_draft -> _draft_from_tool_input) intercepts the tool CALL and emits the `draft` chunk the panel renders. - agent-grok-prompter.Dockerfile: bake the plugin, scoped to this image via ROBOCO_OPENCODE_EXTRA_PLUGINS (delivery roles never draft). - test: a propose_draft tool part normalizes to a draft chunk (not a tool_use). The live tool-call -> draft-card path is flagged UNVERIFIED-LIVE for the NAS.
31 lines
1.4 KiB
Docker
31 lines
1.4 KiB
Docker
# GROK Intake (Prompter) Agent — interactive opencode-serve session on Grok.
|
|
# =============================================================================
|
|
# The Grok analogue of agent-prompter. Unlike the one-shot Grok runtime (a
|
|
# single `opencode run` that exits), this holds a PERSISTENT `opencode serve`
|
|
# session open, receives the human's messages over HTTP (POST /turn on :9000),
|
|
# and streams each reply back to the panel via the relay. Builds on the Grok
|
|
# runtime image (opencode + @ai-sdk/openai + the secret-scrub plugin); the
|
|
# driver renders opencode.json from the spawn env, then drives the session.
|
|
# =============================================================================
|
|
|
|
FROM roboco-agent-grok
|
|
|
|
USER root
|
|
|
|
# The intake propose_draft tool plugin (the model calls it; the driver turns the
|
|
# call into the panel's draft card). Scoped to THIS image via
|
|
# ROBOCO_OPENCODE_EXTRA_PLUGINS so only the intake role carries it.
|
|
COPY docker/grok/intake-tools.js /app/opencode-plugins/intake-tools.js
|
|
ENV ROBOCO_OPENCODE_EXTRA_PLUGINS=/app/opencode-plugins/intake-tools.js
|
|
|
|
USER agent
|
|
|
|
LABEL role="grok-prompter"
|
|
LABEL description="Intake interviewer on Grok — a long-lived opencode serve session driven by the panel"
|
|
|
|
# The in-container receiver the orchestrator delivers the human's turns to.
|
|
EXPOSE 9000
|
|
|
|
# Override the base grok one-shot entrypoint with the interactive intake driver.
|
|
ENTRYPOINT ["python", "-m", "roboco.agent_sdk.grok_intake_main"]
|