Skip to content

feat(clickup): /agentric keeps one Agentric task per ticket; /agentric <agent> routes off-Slack (v0.431.0) - #804

Merged
vikasprogrammer merged 1 commit into
mainfrom
feat/clickup-bridge
Sep 10, 2026
Merged

feat(clickup): /agentric keeps one Agentric task per ticket; /agentric <agent> routes off-Slack (v0.431.0)#804
vikasprogrammer merged 1 commit into
mainfrom
feat/clickup-bridge

Conversation

@vikasprogrammer

Copy link
Copy Markdown
Owner

Requested by an InstaWP operator. They want to work a ClickUp ticket from a single Agentric task, and /agentric should work outside Slack too.

ClickUp bridge

  • /agentric <text> looks up the task keyed clickup:<ticket id> and creates it if missing. <text> goes into that task's discussion, where it reaches the live run and triggers any @mentions. It doesn't start an agent.
  • First use titles the task #<custom id or ticket id> <ticket name> and puts the ticket link and description in the body. The commenting member is recorded as filer and owner; an unmapped commenter shows as clickup. One comment with the Agentric task link is posted back to the ticket.
  • Later /agentric comments land in the same task's discussion, and the reply is just a 👀 reaction.
  • /agentric <agent> <request> reopens the task if it's done or cancelled, then puts the agent on it:
    • if that agent already owns the task, its existing run continues;
    • otherwise the task is assigned and dispatched as a run bound to the ticket, so clickup_reply answers on the ticket.
  • Storage: a new tasks.external_key column with a partial UNIQUE index. A racing duplicate webhook re-reads the existing task instead of creating a second one.
  • Audit events: clickup.task.linked, clickup.task.discussed, clickup.task.failed.

Fix

/agentric <agent> only worked in Slack, which strips declared slash commands itself. On Discord, Telegram and ClickUp it was read as an agent named agentric, even though the roster reply tells people to type exactly that. A shared CHAT_NAMESPACE_RE now strips it everywhere.

Verification

  • New scripts/clickup-task-bridge-test.cjs (27 checks), added to test:governance.
  • npm run test:governance, root build and web tsc + build all pass.

Docs: docs/clickup-task-bridge-plan.md is marked built and lists where the build deviated from the plan. docs/connectors/clickup.md has a new section, and the console's ClickUp help text is updated.

⚠ Needs a server restart to take effect, because it touches server, store and edge code and adds a migration.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HA3jrB7rENd2zadgxP56Lu

…c <agent> routes off-Slack (v0.431.0)

First `/agentric` comment on a ClickUp ticket creates a task (`#<ticket id> <name>`, ticket link +
description as body, filed/owned by the commenter) and posts its link back; later `/agentric` comments
land in that task's discussion. `/agentric <agent> …` reopens a closed task and puts the agent on it —
continuing its run if it owns the task, else dispatching a run bound to the ticket so it can
`clickup_reply`. Keyed by a new `tasks.external_key` under a partial unique index.

Fix: `/agentric <agent>` was only stripped by Slack; on Discord/Telegram/ClickUp it was read as an agent
named "agentric". Shared `CHAT_NAMESPACE_RE` now strips it everywhere.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HA3jrB7rENd2zadgxP56Lu
@vikasprogrammer
vikasprogrammer merged commit f129765 into main Sep 10, 2026
1 check passed
@vikasprogrammer
vikasprogrammer deleted the feat/clickup-bridge branch September 10, 2026 08:15
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