feat(surface,sdk): f.slack helper namespace (#299) - #314
Conversation
Session-Id: 01a08f7d-989a-7e63-82a4-c3714cad5402 Session-Id: 01a08f7d-989a-7e63-82a4-c3714cad5402
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Session-Id: 01a08f7d-989a-7e63-82a4-c3714cad5402
maintainability lens — FAILMaintainability Review — PR #314 (Slack helper)BlockersB1. This produces B2. B3. ConcernsC1. C2. C3. C4. C5. Notes
REVIEW_FAILED |
history lens — FAILBlocker — settled decision #6: the implementation edits its own acceptance gate. In The relevant history is explicit: Command: Captured output: - uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Test source, regressions, and packed consumers
run: bash scripts/surface-package-gate.shConcerns — nonblocking. Notes. The actual commit messages make no test-pass or mutation-verification claims. REVIEW_FAILED |
structure lens — MISSING |
|
🎯 review-swarm: FAILED (M:fail H:fail S:missing) Lens transcripts posted as sibling comments above. |
Closes #299.
Summary
First helper namespace —
f.slack.post(channel, text)/f.slack.reply(event, text)— establishing the pattern for the other 50 providers from@relayfile/relay-helpers.Design decisions
RELAYFLOWS_SLACK_MOCK=1writes intended payload to a file rather than hitting Slack — for CI. Direct-token direct transport is deferred: SLACK_BOT_TOKEN idempotency depends on Slack-server ts dedup which mount-writeback already handles correctly.f.slack.postlowers to an effect step on the existing agent primitive.completionReason:crashed+ exactly onecompletionReason:success. Test asserts exactly one successful completion + pins the crash record explicitly.Written by codex agent
spec-B-f-slack-v4on finn-mini; head at1f044e3.Test plan
🤖 Generated with Claude Code
Note
Medium Risk
Adds external side effects (Slack writeback), credential/mount gating, and crash-recovery semantics on the effect path; kernel protocol is unchanged but misconfiguration or resume without the data dir could surprise operators.
Overview
Introduces
f.slackon the authored TypeScript surface (post,dm,reply,react) as journal-backedSteps, establishing the first provider-helper pattern for future relay-helpers integrations.Surface adds
SlackHelpertypes,flowRunWritebackIdempotency(runId, stepId), and optional flow headertools: { slack: true }for static preflight without running the body.SDK wires each awaited Slack call through a dedicated helper run that reuses the existing agent +
performEffecton/slackpath (no new kernel verb). Writes go through@relayfile/relay-helperswith a relayfileslack/mount writeback transport;RELAYFLOWS_SLACK_MOCK=1records payloads under the data dir. Preflight refuses missing credentials (helper_slack.credential_missing) or bot-token-only setups (helper_slack.mount_required).flows checkon.tsflows imports the definition and runs helper checks without executing the body;flows resumecan reattach Slack helper runs using persisted receipts in<data-dir>/helper-receipts/.Adds
@relayfile/adapter-coreand@relayfile/relay-helpersdependencies,docs/SLACK-HELPER.md, and integration tests covering mock journaling, credential refusal, crash/replay idempotency, and mount writeback.Reviewed by Cursor Bugbot for commit e2b6859. Bugbot is set up for automated code reviews on this repo. Configure here.