Skip to content

Port Jimmy as @corbits/jimmy-agent - #234

Merged
TheGreatAxios merged 4 commits into
mainfrom
cl-6499-jimmy
Aug 21, 2026
Merged

TheGreatAxios merged 4 commits into
mainfrom
cl-6499-jimmy

Conversation

@TheGreatAxios

@TheGreatAxios TheGreatAxios commented Aug 21, 2026 •

Copy link
Copy Markdown
Contributor

Ports Jimmy from the scout repo into workbench as a self-contained agent package: @corbits/jimmy-agent carries the system prompt, the tool declaration, and the Giphy search tool body — the portable half of the agent, per corbitsdev/examples' defineAgent/createAgent split.

Ported vs. deferred

  • Ported: the Giphy search HTTP client + response parsing (gif-search-tool.ts, from scout/packages/jimmy/src/giphy-search.ts), and the system prompt/agent shape (agent.ts, from index.ts's jimmyPackage), trimmed to one tool call and one reply.
  • Deferred to v0.2 (owner's call): Slack dispatch, block-kit rendering, the /gif//jimmy Slack slash commands, and the 4-up picker + shuffle/cancel signal machine (scout/workflows/jimmy) — built for Slack's interactive buttons, no workbench-chat equivalent exists yet.
  • Credential: binds host-side through the same CredentialCapability.resolve("giphy") seam every tool package in this repo uses (see @corbits/web-search-tools) — never a bare env var, never hardcoded. A missing/unbound credential returns a "connect Giphy" isError result, never a silent empty reply or a thrown error.

What is NOT yet wired (correction to this PR's earlier description)

Two integration steps remain before @Jimmy//jimmy actually resolves in workbench chat — this package alone does not make that happen:

  1. No giphy connector exists yet. packages/connections/src/registry.ts's CONNECTOR_REGISTRY has no giphy entry, and none of the three existing credential-provider plugins (http, http-raw-authorization, http-x-api-key) put the secret on the query string the way Giphy's /v1/gifs/search endpoint requires — a fourth plugin (mirroring http-x-api-key-provider.ts, query param instead of header) is the missing piece. Until it lands, gif_search always returns the connect prompt.
  2. No workflow wrapper or deployment. packages/chat's listInvitableDefinitions (platform-adapter.ts) only returns workflowDefinition rows with status: "deployed" for a tenant — that's what makes a name resolvable as @name//name (@corbits/commands' createWorkflowCommandPlugin derives one command per invitable definition automatically). This PR ships the AgentDefinition only; it does not add a wf_jimmy workflow wrapper (the shape @corbits/code-review-workflow uses over @corbits/code-review's definition) or deploy one to any tenant. Both are needed before @Jimmy resolves to anything in chat.

Verification

bun test in packages/jimmy-agent — 6 pass: a stubbed Giphy response returns a GIF CDN URL; an unbound/absent credential returns the "connect Giphy" error rather than throwing or replying empty. bun run typecheck in-package passes. Repo-root check:packages, check:licenses, check:tool-package-pins all pass. Repo-root bun run check / lint were not run locally (dev-machine memory pressure running many concurrent worktree checks) — left to CI on this PR.

Ports the agent half only — system prompt, tool declaration and the Giphy
search tool body — from the scout repo. Slack dispatch and the interactive
shuffle/cancel state machine stay behind; the credential binds host-side
through the existing connector machinery.
@TheGreatAxios
TheGreatAxios merged commit ebd631a into main Aug 21, 2026
2 checks passed
@TheGreatAxios
TheGreatAxios deleted the cl-6499-jimmy branch August 25, 2026 15:29
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.

1 participant