Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
ba3dd7a
[Jamie] Update Stakwork payload unit tests for wrapped `project` enve…
gonzaloaune Sep 2, 2026
a51b461
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 2, 2026
3836086
[Jamie] Wrap Stakwork /projects payload under `project` key so webhoo…
gonzaloaune Sep 2, 2026
679de17
Generated with Hive: Add shareRef to HtmlPage for secure public links
gonzaloaune Sep 2, 2026
4cfa8c7
Merge remote-tracking branch 'origin/master' into swarm/swarm-change-…
gonzaloaune Sep 2, 2026
4fe94bc
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 2, 2026
1797d0b
Fix duplicate shareRef field in HtmlPage prisma model
tomsmith8 Sep 2, 2026
cf330f9
Remove duplicate add_html_page_share_ref migration
tomsmith8 Sep 2, 2026
b45658c
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 2, 2026
32d4255
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 2, 2026
0551bc6
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
f056c1e
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
2d23ecd
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
645b2d8
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
604738e
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
3adb06b
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
9bb201b
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
0bf70e8
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
1ea0323
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
0e1791e
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
2ca7979
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
46d3eec
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
798706b
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 3, 2026
ccc6cd2
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
5b78752
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
ce6fa68
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
76e1a04
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
b251361
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
88f055b
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
7c473ac
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
ecf4bbb
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
5a481d0
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
c9a4b41
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
f712c4d
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
1fead5a
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
ee6392a
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
d93ed61
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
902ed1e
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 4, 2026
b319811
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 5, 2026
a742a42
Merge branch 'master' into swarm/swarm-change-381a8d6a
tomsmith8 Sep 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/__tests__/unit/api/api-chat-message.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -582,7 +582,7 @@ describe("POST /api/chat/message", () => {

expect(fetchCall).toBeTruthy();

const body = JSON.parse(fetchCall![1]!.body as string);
const body = JSON.parse(fetchCall![1]!.body as string).project;
expect(body.workflow_params.set_var.attributes.vars).toMatchObject({
alias: "testuser",
username: "testuser",
Expand Down Expand Up @@ -616,7 +616,7 @@ describe("POST /api/chat/message", () => {

const fetchCall = mockFetch.mock.calls.find((call) => call[0].toString().includes("stakwork"));

const body = JSON.parse(fetchCall![1]!.body as string);
const body = JSON.parse(fetchCall![1]!.body as string).project;
expect(body.workflow_id).toBe(parseInt(expectedWorkflowId));
});
});
Expand Down
12 changes: 6 additions & 6 deletions src/__tests__/unit/api/chat/call-stakwork.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -206,13 +206,13 @@ const TestHelpers = {
);

const fetchCall = mockFetch.mock.calls[0];
const payload = JSON.parse(fetchCall[1]?.body as string);
const payload = JSON.parse(fetchCall[1]?.body as string).project;
expect(payload.workflow_id).toBe(workflowId);
},

expectFetchCalledWithVarsContaining: (expectedVars: Record<string, unknown>) => {
const fetchCall = mockFetch.mock.calls[0];
const payload = JSON.parse(fetchCall[1]?.body as string);
const payload = JSON.parse(fetchCall[1]?.body as string).project;
const vars = payload.workflow_params.set_var.attributes.vars;

Object.entries(expectedVars).forEach(([key, value]) => {
Expand Down Expand Up @@ -500,7 +500,7 @@ describe("callStakwork Function Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const payload = JSON.parse(fetchCall[1]?.body as string);
const payload = JSON.parse(fetchCall[1]?.body as string).project;
expect(payload.webhook_url).toBe("http://localhost:3000/api/stakwork/webhook?task_id=test-task-id");
});

Expand Down Expand Up @@ -719,7 +719,7 @@ describe("callStakwork Function Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const payload = JSON.parse(fetchCall[1]?.body as string);
const payload = JSON.parse(fetchCall[1]?.body as string).project;

expect(payload).toMatchObject({
name: expect.stringMatching(/^hive-task-/),
Expand All @@ -745,7 +745,7 @@ describe("callStakwork Function Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const payload = JSON.parse(fetchCall[1]?.body as string);
const payload = JSON.parse(fetchCall[1]?.body as string).project;

expect(payload.name).toBe("hive-task-test-task-id");
});
Expand All @@ -757,7 +757,7 @@ describe("callStakwork Function Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const payload = JSON.parse(fetchCall[1]?.body as string);
const payload = JSON.parse(fetchCall[1]?.body as string).project;

expect(payload.workflow_params).toHaveProperty("set_var");
expect(payload.workflow_params.set_var).toHaveProperty("attributes");
Expand Down
14 changes: 7 additions & 7 deletions src/__tests__/unit/api/chat/message/call-stakwork.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -588,7 +588,7 @@ describe("callStakwork Function - Chat Message Processing", () => {

// Verify context tags were passed to Stakwork API
const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.contextTags).toEqual(contextTags);
Expand Down Expand Up @@ -1027,7 +1027,7 @@ describe("callStakwork Function - Chat Message Processing", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;

expect(requestBody.workflow_id).toBe(101); // First ID from "101,102,103"
});
Expand All @@ -1048,7 +1048,7 @@ describe("callStakwork Function - Chat Message Processing", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;

expect(requestBody.workflow_id).toBe(103); // Third ID from "101,102,103"
});
Expand All @@ -1069,7 +1069,7 @@ describe("callStakwork Function - Chat Message Processing", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;

expect(requestBody.workflow_id).toBe(102); // Second ID from "101,102,103"
});
Expand Down Expand Up @@ -1239,7 +1239,7 @@ describe("callStakwork Function - Chat Message Processing", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars).toMatchObject({
Expand Down Expand Up @@ -1309,7 +1309,7 @@ describe("callStakwork Function - Chat Message Processing", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;

expect(requestBody.webhook_url).toBe(
`http://localhost:3000/api/stakwork/webhook?task_id=${mockTaskId}`
Expand Down Expand Up @@ -1386,7 +1386,7 @@ describe("callStakwork Function - Chat Message Processing", () => {
expect(mockS3Service.generatePresignedDownloadUrl).toHaveBeenCalledWith("uploads/file2.jpg");

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.attachments).toEqual([
Expand Down
34 changes: 17 additions & 17 deletions src/__tests__/unit/api/chat/message/route.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -709,7 +709,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;

expect(requestBody.workflow_id).toBe(101); // First workflow ID
});
Expand All @@ -728,7 +728,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;

expect(requestBody.workflow_id).toBe(103); // Third workflow ID
});
Expand All @@ -747,7 +747,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;

expect(requestBody.workflow_id).toBe(103); // Third workflow ID
});
Expand All @@ -766,7 +766,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;

expect(requestBody.workflow_id).toBe(102); // Second workflow ID (default)
});
Expand All @@ -784,7 +784,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;

expect(requestBody.workflow_id).toBe(102); // Second workflow ID (default)
});
Expand Down Expand Up @@ -850,7 +850,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars).toMatchObject({
Expand Down Expand Up @@ -919,7 +919,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
expect(s3Service.generatePresignedDownloadUrl).toHaveBeenCalledWith("uploads/test/file.pdf");

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.attachments).toEqual(["https://s3.test.com/presigned-url"]);
Expand Down Expand Up @@ -948,7 +948,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
expect(vi.mocked(getBaseUrl)).toHaveBeenCalledWith();

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.webhookUrl).toBe("https://production.example.com/api/chat/response");
Expand All @@ -969,7 +969,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.webhookUrl).toBe("https://custom-webhook.example.com");
Expand All @@ -990,7 +990,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;

expect(requestBody.webhook_url).toBe(`http://localhost:3000/api/stakwork/webhook?task_id=${mockTaskId}`);
});
Expand All @@ -1012,7 +1012,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
expect(vi.mocked(transformSwarmUrlToRepo2Graph)).toHaveBeenCalledWith("https://test-swarm.com/api");

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.repo2graph_url).toBe("https://custom-graph.com:3355");
Expand Down Expand Up @@ -1404,7 +1404,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.runBuild).toBe(false);
Expand All @@ -1427,7 +1427,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.runTestSuite).toBe(false);
Expand All @@ -1450,7 +1450,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.autoMergePr).toBe(true);
Expand All @@ -1473,7 +1473,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.runBuild).toBe(false);
Expand Down Expand Up @@ -1557,7 +1557,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
]);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.contextTags).toEqual([
Expand Down Expand Up @@ -1679,7 +1679,7 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
expect(s3Service.generatePresignedDownloadUrl).toHaveBeenCalledWith("uploads/file2.jpg");

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = JSON.parse(fetchCall[1].body as string).project;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.attachments).toEqual(["https://s3.test.com/file1.pdf", "https://s3.test.com/file2.jpg"]);
Expand Down
Loading
Loading