Commit 0c69302
fix(integrations): harden jira, jsm, ashby, google drive, slack, confluence, notion (#4345)
* fix(integrations): validate and harden jira, jsm, ashby, google drive, slack, confluence, notion
Audit and fix contract drift, input validation, and error handling across integrations:
- Jira: NaN guards on worklog seconds, JSON.parse try/catch on internal API responses,
domain normalization (strip leading https://), JQL injection prevention via project
key validation, ADF helper consolidation, /search/jql nextPageToken pagination,
defensive .trim() on ID path params, encodeURIComponent on watcher account IDs,
resolveAssigneeAccountId helper, parent-as-object wrapping, summary fallback,
add read-bulk operation. Restored total field (always null) to preserve contract.
- JSM: customer/organization route validation
- Ashby: types and tool output cleanup across all 30+ tools
- Google Drive: tighter response handling across read/write/share tools
- Slack: types and tool fixes (canvas, reactions, messaging, members)
- Confluence: update tool and types
- Docs: regenerated mdx for all touched integrations
* fix(ashby): add subblock migrations for removed expand form definition fields
* fix(slack): restore canvas_id fallback to data.id for backwards compat
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix(jsm): explicit 400 when deprecated `emails` param is sent
Address greptile review on PR #4345: instead of silently dropping
`emails` and falling through to list-customers, return a 400 telling
the caller to use `accountIds`.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix(google_drive): include HTTP status in fallback error messages
Address greptile review on PR #4345: when Google Drive returns a non-JSON
error body, surface the response status/statusText so failures are
diagnosable instead of falling through to a generic message.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix(ashby): drop stray websiteUrl→website remap for update_candidate
The update_candidate tool reads params.websiteUrl directly; mapping it
to result.website added a confusing dead field. The websiteUrl subBlock
auto-passes through with the matching name.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix(google_drive): rename canonical params to avoid subBlock ID clash
`mimeType`, `query`, and `pageSize` canonical IDs collided with existing
subBlock IDs in the same block (failing the canonical-param validation
test). Drop the canonicalParamId from search/get_content single-input
fields and route them to tool params explicitly in tools.config.params.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix(ashby): remove filterCandidateId from removed-subblock migrations
The candidate-id filter was reintroduced as a valid Ashby subBlock, but
the migration map still rewrote it to _removed_filterCandidateId on every
workflow load, silently breaking the field. Drop the entry so user values
persist.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix(ashby): restore documented response fields dropped during refactor
Restore three fields that exist in Ashby's API responses but were dropped
during the recent refactor: applicationLimitCalloutHtml on /jobPosting.info,
compensation on /job.info (and add the `compensation` expand), and managerId
on /user.list.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* correctness
* updated types
* fix(ashby): gate operation-specific param mappings to prevent stale overwrites
Multiple subBlocks share the same target tool param (createdAt is set by
appCreatedAt/candidateCreatedAt/noteCreatedAt; candidateId by appCandidateId/
filterCandidateId). Because subBlock values persist across operation switches,
a stale value from a prior operation could silently overwrite the correct one.
Guard each mapping with an explicit operation check.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix(ashby): gate offerApplicationId mapping by operation
Same shared-target hazard as the prior fix: offerApplicationId maps to
result.applicationId without an operation guard, so a stale value from
list_offers could overwrite the active applicationId on get_application,
change_application_stage, or list_interviews.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix(ashby): include list_locations in includeArchived condition
Ashby's /location.list accepts includeArchived per the API docs, and the
docs page already documents the toggle for list_locations. Add the missing
operation value so the toggle renders.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix(jira): forward explicit notifyUsers=true query param on issue update
Block now distinguishes true/false/undefined for notifyUsers, but the route
collapsed true and undefined into a no-param request. Forward the explicit
true intent so it survives any future API default change or proxy override.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix(jira): quote project key in JQL to defend against injection
* fix(jira): quote project key in bulk_read JQL for defense in depth
The alphanumeric regex check above already blocks injection, but quoting
the project key matches the pattern used elsewhere (issues/route.ts) and
hardens the path against future regex changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>1 parent 3674274 commit 0c69302
104 files changed
Lines changed: 2390 additions & 783 deletions
File tree
- apps
- docs/content/docs/en/tools
- sim
- app
- (landing)/integrations/data
- api/tools
- confluence
- comment
- page-properties
- space
- jira
- issues
- update
- write
- jsm
- customers
- organization
- blocks/blocks
- lib/workflows/migrations
- tools
- ashby
- confluence
- google_drive
- jira
- jsm
- slack
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | | - | |
85 | 84 | | |
86 | 85 | | |
87 | 86 | | |
| |||
1091 | 1090 | | |
1092 | 1091 | | |
1093 | 1092 | | |
| 1093 | + | |
| 1094 | + | |
1094 | 1095 | | |
1095 | 1096 | | |
1096 | 1097 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
254 | 254 | | |
255 | 255 | | |
256 | 256 | | |
| 257 | + | |
| 258 | + | |
257 | 259 | | |
258 | 260 | | |
259 | 261 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
146 | 146 | | |
147 | 147 | | |
148 | 148 | | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
149 | 221 | | |
150 | 222 | | |
151 | 223 | | |
| |||
375 | 447 | | |
376 | 448 | | |
377 | 449 | | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
378 | 523 | | |
379 | 524 | | |
380 | 525 | | |
| |||
428 | 573 | | |
429 | 574 | | |
430 | 575 | | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
431 | 599 | | |
432 | 600 | | |
433 | 601 | | |
| |||
505 | 673 | | |
506 | 674 | | |
507 | 675 | | |
| 676 | + | |
508 | 677 | | |
509 | 678 | | |
510 | 679 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
384 | 384 | | |
385 | 385 | | |
386 | 386 | | |
387 | | - | |
| 387 | + | |
388 | 388 | | |
389 | 389 | | |
390 | 390 | | |
| |||
436 | 436 | | |
437 | 437 | | |
438 | 438 | | |
439 | | - | |
| 439 | + | |
440 | 440 | | |
441 | 441 | | |
442 | 442 | | |
| |||
506 | 506 | | |
507 | 507 | | |
508 | 508 | | |
509 | | - | |
| 509 | + | |
510 | 510 | | |
511 | 511 | | |
512 | 512 | | |
| |||
Lines changed: 1 addition & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
331 | 331 | | |
332 | 332 | | |
333 | 333 | | |
334 | | - | |
335 | | - | |
| 334 | + | |
336 | 335 | | |
337 | 336 | | |
338 | 337 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
170 | 170 | | |
171 | 171 | | |
172 | 172 | | |
173 | | - | |
174 | | - | |
175 | 173 | | |
176 | 174 | | |
177 | 175 | | |
| |||
522 | 520 | | |
523 | 521 | | |
524 | 522 | | |
| 523 | + | |
525 | 524 | | |
526 | 525 | | |
527 | 526 | | |
| |||
547 | 546 | | |
548 | 547 | | |
549 | 548 | | |
| 549 | + | |
550 | 550 | | |
551 | 551 | | |
552 | 552 | | |
| |||
560 | 560 | | |
561 | 561 | | |
562 | 562 | | |
| 563 | + | |
563 | 564 | | |
564 | 565 | | |
565 | 566 | | |
566 | 567 | | |
567 | 568 | | |
568 | 569 | | |
569 | 570 | | |
| 571 | + | |
570 | 572 | | |
571 | 573 | | |
572 | 574 | | |
| |||
580 | 582 | | |
581 | 583 | | |
582 | 584 | | |
| 585 | + | |
583 | 586 | | |
584 | 587 | | |
585 | 588 | | |
| |||
602 | 605 | | |
603 | 606 | | |
604 | 607 | | |
| 608 | + | |
605 | 609 | | |
606 | 610 | | |
607 | 611 | | |
| |||
638 | 642 | | |
639 | 643 | | |
640 | 644 | | |
641 | | - | |
642 | 645 | | |
643 | 646 | | |
644 | 647 | | |
| |||
Lines changed: 22 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5077 | 5077 | | |
5078 | 5078 | | |
5079 | 5079 | | |
| 5080 | + | |
| 5081 | + | |
| 5082 | + | |
| 5083 | + | |
5080 | 5084 | | |
5081 | 5085 | | |
5082 | 5086 | | |
5083 | 5087 | | |
| 5088 | + | |
| 5089 | + | |
| 5090 | + | |
| 5091 | + | |
5084 | 5092 | | |
5085 | 5093 | | |
5086 | 5094 | | |
| |||
5101 | 5109 | | |
5102 | 5110 | | |
5103 | 5111 | | |
| 5112 | + | |
| 5113 | + | |
| 5114 | + | |
| 5115 | + | |
5104 | 5116 | | |
5105 | 5117 | | |
5106 | 5118 | | |
| |||
5109 | 5121 | | |
5110 | 5122 | | |
5111 | 5123 | | |
| 5124 | + | |
| 5125 | + | |
| 5126 | + | |
| 5127 | + | |
5112 | 5128 | | |
5113 | 5129 | | |
5114 | 5130 | | |
| |||
5130 | 5146 | | |
5131 | 5147 | | |
5132 | 5148 | | |
5133 | | - | |
| 5149 | + | |
5134 | 5150 | | |
5135 | 5151 | | |
5136 | 5152 | | |
| |||
6962 | 6978 | | |
6963 | 6979 | | |
6964 | 6980 | | |
| 6981 | + | |
| 6982 | + | |
| 6983 | + | |
| 6984 | + | |
6965 | 6985 | | |
6966 | 6986 | | |
6967 | 6987 | | |
| |||
7055 | 7075 | | |
7056 | 7076 | | |
7057 | 7077 | | |
7058 | | - | |
| 7078 | + | |
7059 | 7079 | | |
7060 | 7080 | | |
7061 | 7081 | | |
| |||
0 commit comments