Add Slack internal processing workflow - #27
Conversation
…workflow' into agent/add-slack-post-to-x
…flow' into agent/add-slack-team-grill
…flow' into agent/add-slack-team-grill
…d-slack-team-grill
…or-slack-workflow' into agent/add-slack-post-to-x" This reverts commit 745a804.
…d-slack-post-to-x
…d-slack-team-grill
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
f64ad06 to
544565f
Compare
TheGreatAxios
left a comment
There was a problem hiding this comment.
code-review
Adds a Slack call-digest starter: Tag intake, .txt transcript upload, summarize→extract workflow, and digest cards.
Request changes
-
starter/slack-internal-processing/src/session.ts:38+workflow.tsstep invoker — extract always fails at runtimerunLocalis called withtriggerPayload: JSON.stringify(input), andcreateInternalProcessingStepInvokerreturns{ output: reply }wherereplyis a string. The extract step merges:merge: [ { from: "steps.summarize.output" }, { project: { from: "trigger.payload" }, fields: ["callTitle", "transcript"] }, ]
@intx/workflowrequires every merge operand to be an object (SelectorError: merge selector requires each operand to be an object). Reproduced locally with a stub invoker: summarize succeeds, extract fails, run endsfailed. Siblingslack-community-pulseavoids this by returning wrapped objects ({ mentions: reply }) and passing an object trigger.Suggested shape:
triggerPayload: input(object, matching community-pulse / team-grill / diligence)- Parse the summarize agent JSON and return an object
{ summary, discussionPoints }(and similarly for extract if anything merges it later)
workflow.test.tsonly asserts the selector AST shape, so this path is untested end-to-end.
Checks
- Commit subjects/bodies: all ≤72; subjects match package scaffolding story (
git log origin/main..HEAD --format='%s'/'%b') bun testin the package: 14 pass- Runtime repro:
runLocalwith stringified trigger + string summarize output → extractStepFailedas above; object trigger + object summarize output →completed
TheGreatAxios
left a comment
There was a problem hiding this comment.
code-review (re-review)
No new commits since the prior review. The blocking runtime issue is still present.
Request changes
-
starter/slack-internal-processing/src/session.ts:38+ step invoker — extract merge fails at runtimeStill uses
triggerPayload: JSON.stringify(input)and returns string{ output: reply }. The extract step merge of summarize output with a projectedtrigger.payloadrequires objects (SelectorError: merge selector requires each operand to be an object). Pass an object trigger and return parsed object step outputs (same shape asslack-community-pulse). -
package.jsonstill declares"license": "LGPL-2.1-only"Repo direction is a single root MIT LICENSE (#30). Please drop the per-package
licensefield so this starter matches the other examples once #30 lands.
Checks
git log origin/main..origin/slack-internal-processing: 8 commits, own package only- Blocking merge/stringify finding re-confirmed on current tip (
fc744bb)
Summary
Stack
This PR is stacked directly on #25 and targets its head branch,
scout-fact-check.The diff against that branch only adds
starter/slack-internal-processing; it does not add another Corbits Tag checkout or repeat shared vendor infrastructure.Commits
Verification
bun test— 14 passed, 0 failedbun run typecheckbun run start --helpbun build src/cli.ts --target=bun --outdir /tmp/slack-internal-processing-buildLive Slack verification was not repeated for this change.