Skip to content

Owner-only Slack Agent View sessions - #443

Merged
jerpint merged 13 commits into
mainfrom
feat/slack-dm-agent-mvp
Sep 25, 2026
Merged

jerpint merged 13 commits into
mainfrom
feat/slack-dm-agent-mvp

Conversation

@woltspace-jerpint

@woltspace-jerpint woltspace-jerpint Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Outcome

Makes Slack a native supervised connector for one explicitly configured lodge owner in direct messages. A fresh top-level DM always opens Choose your wolt; the original text is held privately and delivered exactly once after a valid selection. The spawned Woltspace session owns that Slack thread, including historical follow-ups.

Slack Agent View is the sole supported progress experience. A new session enters native processing, uses the exact Woltspace session slug as its Agent Session title, and returns to active after the final reply. Every final reply retains a validated Open session link. The former custom Gnawing/message-progress implementation and arbitrary Slack adapter overrides are removed.

Safety boundary

  • Requires one exact immutable SLACK_OWNER_USER; malformed or missing configuration fails closed.
  • Rejects non-owner, channel/app-mention, multiparty-DM, bot/subtype, retry, and duplicate events before history or agent work.
  • Pending plaintext is private mode-0600 state with a ten-minute TTL, 32 KiB message limit, five-active-conversation cap, and locked atomic one-use consumption.
  • Historical thread ownership cannot be retargeted by later selection.
  • Session links accept only platform-returned HTTPS /tui?session=<exact-id> URLs.
  • One platform bot.slack_adapter is launchable. Legacy token environment values remain migration inputs to the same connector; channels.slack is canonical.

Setup and distribution

The packaged setup-slack skill guides one owner-controlled Slack app per lodge through Agent View, Socket Mode, exact scopes/events, immutable owner-ID pinning, private local configuration, restart, and acceptance checks. The bundled manifest requests only assistant:write, chat:write, and im:history, with app_home_opened and message.im.

A shared official Slack app remains a later hosted OAuth/event-ingress service decision; no global Socket Mode token is distributed between lodges.

Verification

  • Live exact-head wheel c83040a is installed in jerpint's lodge; all four connectors recovered, 28 sessions adopted, TUI health passes, and all 42 tmux sessions survived.
  • Focused final gate: 237 passed.
  • Full local suite: 1,524 passed, 15 skipped, 11 known unrelated environment/stale failures; zero Slack/connector/skill/package failures.
  • GitHub Python 3.11, Python 3.13, packages, and Vercel checks pass on the prior head and are re-running for the final head.
  • Skill validator, compile, diff, wheel/sdist build, Twine, and exact package-payload checks pass.
  • Every branch commit and the PR are bot-authored.

Final draft-exit gate

  • Confirm final installed-head reply returns native status to active and retains Open session.
  • From one fresh top-level owner DM, confirm picker → exact one-time delivery → exact slug title → native processing → final reply, then one same-thread follow-up.
  • Confirm final-head CI and perform focused human review. No merge or release is implied.

Next Slack work after this PR

  1. Image input/output with the minimum exact Slack file scopes and owner/thread validation.
  2. Woltspace-owned human-friendly session names synchronized into Slack; exact slugs remain stable identity, Slack is not the source of truth.
  3. Native Stop mapped to real session interruption and agent_session_stopped.
  4. Reusable install/manifest flow, then deliberately evaluate a hosted OAuth app.
  5. Optional per-wolt identity and suggested prompts.

Telegram selection parity and adapter-native cross-channel progress semantics remain separate product work.

@vercel

vercel Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
woltspace Ready Ready Preview Sep 25, 2026 5:31am UTC

@woltspace-jerpint

Copy link
Copy Markdown
Contributor Author

Local MVP acceptance PASS at exact head 26549d8cfb9a8486442962ab6f8aaeb22b8eee25 (2026-09-24). jerpint exercised the bounded Slack delta after the controlled local candidate activation and reports it worked and is good so far. Activation remained healthy: exact local-wheel receipt, owner-only native Slack, all four connectors clean, all alive sessions adopted, all tmux sessions retained, and unchanged owner configuration. This is local MVP evidence only; the PR remains WIP/draft. No merge, release, or further code change is implied. Future refinements should follow observed use.

@woltspace-jerpint

Copy link
Copy Markdown
Contributor Author

Focused stock-pulse/session-link follow-up is pushed at exact bot head b911afc9acfee11560fbe5bb91be0c1e907836f7. UX contract: the existing single ready/progress message includes Open session only for the platform-returned HTTPS /tui?session=<exact spawned ID> URL; it then performs exactly four in-place stock-Unicode pulse frames at four-second intervals (·, ··, ···, ··) before returning to the bounded 30-second honest heartbeat. Final/error clearing remains authoritative; no custom assets/scopes/settings or extra messages. Gate: 245 passed/4 skipped, compile and diff clean, fresh wheel/sdist payload checks pass. No install/restart/live activation performed.

@woltspace-jerpint

Copy link
Copy Markdown
Contributor Author

Live-tested Slack thread UX checkpoint is now pushed at a1e7225 (two bot-authored commits after the prior draft head).\n\nWhat changed:\n- every owner turn gets a fresh bottom-of-thread liveness message that becomes the final reply\n- the validated Open session link remains on progress frames and the final answer\n- removed the separate sent receipt\n- themed status as Gnawing, with a two-second bounded pulse and honest long heartbeat\n- fixed the historical-thread race by re-reading and revalidating the current session link on every frame\n\nVerification: 109 focused Slack/notify/connector tests pass; compile and diff checks pass. Exact private 0.5.7 wheel was activated in the lodge and verified healthy: Telegram/Slack/TUI/Wolf all running with zero restart/error, tunnel and TUI live, all 40 tmux sessions preserved, 26 active sessions adopted. jerpint confirmed the thread replacement works; animation speed/possible Agent View follow-up remains UX exploration. PR remains draft; no merge or release implied.

@woltspace-jerpint

Copy link
Copy Markdown
Contributor Author

Slack Agent View is now the canonical and only supported progress implementation at bot-authored head f426443.

  • Added packaged setup-slack skill plus reusable owner-DM Agent View manifest.
  • Removed the legacy custom Gnawing pulse/message replacement runtime and tests.
  • Missing Agent View authorization now fails visibly with reinstall guidance instead of silently falling back.
  • Preserved exact Woltspace slug titles; recorded future Woltspace-owned human-friendly names synchronized into Slack.
  • Verified: skill validator passes; 178 focused Slack/notify/connector/skill-delivery/package-neighbor tests pass; compile and diff checks pass; wheel contains the skill and manifest.

This remains a draft PR. The canonicalization commit is not yet live-installed; current live lodge remains on the visually accepted exact-slug build 05727c6.

@woltspace-jerpint woltspace-jerpint Bot changed the title WIP: revive owner-only Slack DM sessions Owner-only Slack Agent View sessions Sep 25, 2026
@woltspace-jerpint
woltspace-jerpint Bot marked this pull request as ready for review September 25, 2026 05:46
@jerpint
jerpint merged commit 3ccd535 into main Sep 25, 2026
5 checks passed

This branch was successfully deployed

1 active deployment
Preview — c83040ad Deployed Sep 25, 2026 by vercel[bot]
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