Skip to content

Takeover #74: workflow --field submission (needs live smoke test)#123

Open
nwparker wants to merge 2 commits into
mainfrom
takeover/pr-74
Open

Takeover #74: workflow --field submission (needs live smoke test)#123
nwparker wants to merge 2 commits into
mainfrom
takeover/pr-74

Conversation

@nwparker

@nwparker nwparker commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Takeover of #74 (@shhac) — workflow run --field form submission over RTM WebSocket. Docs-only conflicts resolved (re-applied --field note to the restructured SKILL.md, dropped the deleted commands.md); source (+722) merged cleanly. Branch takeover/pr-74.

Verified (offline)

  • typecheck clean · 337 tests / 0 fail · lint 0 errors · format clean · build:npm + node --check OK
  • workflow run --help shows --field <title=value> (repeatable)
  • Unit tests cover the two hard parts: test/rtm-websocket.test.ts (RFC-6455 frame parse/mask/fragments) and test/workflow-submit.test.ts (field-title validation vs schema + block/action mapping)

⚠️ Needs one live smoke test before merge

The end-to-end path (a real view_opened over a live wss:// with browser auth against an actual workflow form) can't be exercised offline. Please run one real workflow run <trigger> --field "…=…" before merging. Everything else is green.

Made with Orca 🐋

shhac and others added 2 commits June 3, 2026 19:50
Add `--field Title=value` support to `workflow run`, enabling form
submission through a short-lived RTM WebSocket that captures
view_opened events and submits via views.submit.

New modules:
- rtm-websocket: low-level Bun-compatible WebSocket over node:https
- workflow-submit: orchestrates trip → capture → submit flow
# Conflicts:
#	skills/agent-slack/SKILL.md
#	skills/agent-slack/references/commands.md
@nwparker

Copy link
Copy Markdown
Contributor Author

Two specifics to check during the live smoke test (from verification of the unit coverage):

  1. WebSocket message fragmentation is not unit-covered. test/rtm-websocket.test.ts exercises the RFC-6455 extractTextFrames parser with single frames (text/binary/ping/close, 16- and 64-bit lengths, UTF-8 multibyte) and partial-buffer remainder — but not multi-frame message fragmentation (FIN=0 continuation frames). Slack view_opened payloads are usually single-frame, but confirm the real event arrives whole.
  2. The 300ms fixed wait before resolve (src/lib/rtm-websocket.ts:106-109) is a timing assumption a live run should validate — make sure view_opened reliably lands within it.

Everything else is green offline: 337 tests / 0 fail, --field mapping + schema validation unit-tested, node:https upgrade handshake wired for Bun's 101-on-response behavior. Merge once one real workflow run --field round-trips.

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.

2 participants