Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
2f013b5
More workbench improvements
michaeljguarino Apr 4, 2026
e39d8db
improve resilience
michaeljguarino Apr 5, 2026
0fbf80f
add workbench prompt table, queries
michaeljguarino Apr 5, 2026
0c30d17
add built-in plural observability tools
michaeljguarino Apr 6, 2026
c4e1b92
fix notes tool
michaeljguarino Apr 6, 2026
fe594c3
make panel longer when has conclusion
jsladerman Apr 6, 2026
685713d
add generated prs treatments
jsladerman Apr 6, 2026
afa6271
add treatment for activity prompts
jsladerman Apr 6, 2026
d3ca46b
fix error handling a bit more
michaeljguarino Apr 6, 2026
260d5e4
fix compile issue
michaeljguarino Apr 6, 2026
1114165
add agent run activity treatment
jsladerman Apr 6, 2026
c0a9591
add polling to activities
jsladerman Apr 6, 2026
46bc2a5
add simple md table
jsladerman Apr 6, 2026
b902d9c
add workbench job status updating
michaeljguarino Apr 6, 2026
bfc8086
update schema
michaeljguarino Apr 6, 2026
40318fa
add cancellation mutation
michaeljguarino Apr 7, 2026
05a67ad
keep all activities open by default
jsladerman Apr 7, 2026
2dc9572
implement plrl metrics search, the ai seems to like to call this appa…
michaeljguarino Apr 7, 2026
3240f04
small design tweaks
michaeljguarino Apr 7, 2026
3922c8f
tune tone of voice for all agents
michaeljguarino Apr 7, 2026
c7ec667
more tool guidance
michaeljguarino Apr 7, 2026
d3f1119
update triggers to two separate buttons
maciaszczykm Apr 7, 2026
deac693
split triggers components
maciaszczykm Apr 7, 2026
be7d02c
update trigger views styling
maciaszczykm Apr 7, 2026
1966ca9
fix header alignment
maciaszczykm Apr 7, 2026
36e073f
add matches to form
maciaszczykm Apr 7, 2026
b2fe568
add issue webhooks query
maciaszczykm Apr 7, 2026
d4b35c9
show both observability and issue webhooks in select
maciaszczykm Apr 7, 2026
368082b
style list items
maciaszczykm Apr 7, 2026
989e360
enhance webhook trigger form with improved chip icons
maciaszczykm Apr 7, 2026
5e0ec72
add create new links
maciaszczykm Apr 7, 2026
8a4f679
tune continue prompt
michaeljguarino Apr 7, 2026
c25e6f6
remove icon
maciaszczykm Apr 7, 2026
db0feee
add create issue webhook mutation
maciaszczykm Apr 7, 2026
86d7cb0
fix azure webhook handling
michaeljguarino Apr 7, 2026
17af6c4
add create new webhook form
maciaszczykm Apr 7, 2026
ef6450a
add create new webhook buttons and update state management
maciaszczykm Apr 7, 2026
193e938
add webhook trigger icons
maciaszczykm Apr 7, 2026
cbc4474
add button
maciaszczykm Apr 7, 2026
3502e31
use two types of back button
maciaszczykm Apr 7, 2026
3a8ef36
more prompting
michaeljguarino Apr 7, 2026
4bde2b3
add workbench webhook gql query
michaeljguarino Apr 7, 2026
22a214e
add conclusion activity type, tweak unfurling behavior to reduce spam…
michaeljguarino Apr 7, 2026
a66f3d9
fix initial open state
jsladerman Apr 7, 2026
18549fe
open new activities by default
jsladerman Apr 7, 2026
975b60e
some prompt tweaks
michaeljguarino Apr 7, 2026
66fe670
terser labels
michaeljguarino Apr 7, 2026
adac942
only show plain markdown for conclusion activities
michaeljguarino Apr 7, 2026
e47ae34
multiple agent runs in a single coding subagent
michaeljguarino Apr 7, 2026
3277ba2
prompt restructuring
michaeljguarino Apr 7, 2026
c4224f7
more prompt tweaks
michaeljguarino Apr 7, 2026
edcc392
adding more built-in plural tools
michaeljguarino Apr 7, 2026
4ea85de
small tweaks to running status maintenance
michaeljguarino Apr 7, 2026
5081af3
more prompt tweaks
michaeljguarino Apr 7, 2026
bd90563
start refactoring trigger views
maciaszczykm Apr 8, 2026
b72237f
refactor crons and webhooks
maciaszczykm Apr 8, 2026
d24958d
update webhook forms
maciaszczykm Apr 8, 2026
2deb7aa
refetch queries
maciaszczykm Apr 8, 2026
298947e
export utils
maciaszczykm Apr 8, 2026
8e07808
use loose rows
maciaszczykm Apr 8, 2026
48071dc
show webhook icon and rename components
maciaszczykm Apr 8, 2026
9af14ff
add setup guide button
maciaszczykm Apr 8, 2026
df17da7
add workbench cron query
michaeljguarino Apr 8, 2026
a3d9f3c
add webhook docs
maciaszczykm Apr 8, 2026
5280299
add setup guide panel
maciaszczykm Apr 8, 2026
4acf29f
add resize grip
maciaszczykm Apr 8, 2026
330144d
tweak heartbeat logic
michaeljguarino Apr 8, 2026
67ed743
reuse existing components
maciaszczykm Apr 8, 2026
f51d174
fix heartbeat func
michaeljguarino Apr 8, 2026
fb0754c
more prompts
michaeljguarino Apr 8, 2026
a1e2b02
add cron mutation and update persisted queries
maciaszczykm Apr 8, 2026
e35eb70
use new query
maciaszczykm Apr 8, 2026
939de6e
fix loading skeletons
maciaszczykm Apr 8, 2026
bf42389
add todo
maciaszczykm Apr 8, 2026
c90cb2c
update summary query
maciaszczykm Apr 8, 2026
b9eb9fd
add triggers summary
maciaszczykm Apr 8, 2026
7f89ce3
update triggers styling and placement
maciaszczykm Apr 8, 2026
600e324
update triggers summary styling
maciaszczykm Apr 8, 2026
ea17cb0
add multi-run associations with coding subagent
michaeljguarino Apr 8, 2026
bce3929
add workbench text streaming
michaeljguarino Apr 8, 2026
067a131
support switching between global side panels
jsladerman Apr 8, 2026
123c479
different open behavior
michaeljguarino Apr 8, 2026
cf935b4
fix open behavior
michaeljguarino Apr 8, 2026
f4a1b7b
fix auto-close
michaeljguarino Apr 8, 2026
4d6af49
tune up subagent iterations
michaeljguarino Apr 8, 2026
6a0f647
tweak open behavior again
michaeljguarino Apr 8, 2026
1d51d29
working activity opening behavior
michaeljguarino Apr 8, 2026
08646af
cluster/list upgradeability info for workbenches
michaeljguarino Apr 8, 2026
bd111c6
tweak finch pools
michaeljguarino Apr 8, 2026
a46c94a
add a bit more logging on possible errors
michaeljguarino Apr 9, 2026
5a7f5fc
fix missing button
jsladerman Apr 9, 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
12 changes: 8 additions & 4 deletions assets/design-system/src/utils/urls.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,19 @@ export function isValidRepoUrl(url: string): boolean {
return false
}

export function prettifyRepoUrl(repoUrl: string) {
const [owner, name] = repoUrl
export function prettifyRepoUrl(
repoUrl: string,
showFullPath: boolean = false
) {
const fullPath = repoUrl
.trim()
.replace(/^git@[^:]+:/, '')
.replace(/^ssh:\/\/[^/]+\/?/, '')
.replace(/^https?:\/\/[^/]+\/?/, '')
.replace(/^\/+/, '')
.replace(/\.git$/, '')
.split('/')

return owner && name ? `${owner}/${name}` : repoUrl
const [owner, name] = fullPath.split('/')

return showFullPath ? fullPath : owner && name ? `${owner}/${name}` : repoUrl
}
54 changes: 54 additions & 0 deletions assets/public/setup-guides/webhooks/asana.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Asana Webhook Setup for Plural

Generate markdown documentation for creating a webhook in Asana against plural. Plural allows a webhook to have a url and secret, you need to explain to the user how to register those, and how to configure the appropriate triggers so plural can receive events from alerts, new tickets, and workflow updates.

## 1. Create the webhook in Plural

In Plural, go to the webhook creation flow and choose:

- Type: Ticketing
- Provider: ASANA

Fill in:

- Name: a clear name like Asana Production Tickets
- URL: the callback URL Plural gives you
- Secret: a strong shared secret

Save the webhook in Plural.

## 2. Register URL and secret in Asana

In Asana, open your app or integration settings and create a webhook subscription:

- Target URL: paste the Plural webhook URL
- Secret/token field: paste the same secret from Plural

If Asana requires signing secrets per endpoint, ensure the secret is bound to this exact URL.

## 3. Configure triggers to send events to Plural

Enable triggers that map to operational ticketing activity:

- New task/ticket created
- Task moved to incident/alerts project
- Critical priority changes
- Status transitions for incident-related work

Prefer project-level or workspace-level filters so only relevant events are sent.

## 4. Validate delivery

Trigger a test event in Asana (for example create a test ticket) and verify in Plural:

- request is received
- signature/secret validation succeeds
- event appears in webhook activity

## 5. Troubleshooting

If events fail:

- confirm URL exactly matches the Plural endpoint
- rotate and re-enter the secret on both sides
- ensure the selected project/workspace scope includes the event source
42 changes: 42 additions & 0 deletions assets/public/setup-guides/webhooks/datadog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Datadog Webhook Setup for Plural

Generate markdown documentation for creating a webhook in Datadog against plural. Plural allows a webhook to have a url and secret, you need to explain to the user how to register those, and how to configure the appropriate triggers so plural can receive events from alerts and monitor state changes.

## 1. Create the webhook in Plural

In Plural configure:

- Type: Observability
- Provider: DATADOG
- Name: for example Datadog Production Alerts
- Secret: shared secret used for verification

Plural stores the secret and gives you the target URL (if required by your flow).

## 2. Register URL and secret in Datadog

In Datadog integrations/webhooks:

- Target URL: set to the Plural webhook URL
- Secret/signing token: set to the same secret from Plural

If custom headers are required, keep them aligned with your Plural validation policy.

## 3. Configure alert triggers

Enable triggers for relevant alert lifecycle events:

- monitor alert triggered
- monitor recovered
- incident state changes
- high-priority signal transitions

Scope notifications to production monitors or incident-critical tags.

## 4. Validate delivery

Trigger a test monitor alert in Datadog and verify in Plural:

- event received and authenticated
- payload parsed
- trigger evaluation sees alert state correctly
47 changes: 47 additions & 0 deletions assets/public/setup-guides/webhooks/github.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# GitHub Webhook Setup for Plural

Generate markdown documentation for creating a webhook in GitHub against plural. Plural allows a webhook to have a url and secret, you need to explain to the user how to register those, and how to configure the appropriate triggers so plural can receive events from alerts, new tickets, and issue lifecycle updates.

## 1. Create the webhook in Plural

Create a new webhook in Plural with:

- Type: Ticketing
- Provider: GITHUB
- URL: Plural callback URL
- Secret: shared secret used for signature verification

## 2. Register URL and secret in GitHub

In GitHub repository or organization settings:

- go to Webhooks
- click Add webhook
- Payload URL: paste the Plural URL
- Secret: paste the same secret configured in Plural
- Content type: application/json

## 3. Configure GitHub events

Select events relevant to ticketing and alerts, for example:

- Issues (opened, edited, closed, reopened)
- Issue comments
- Label changes
- Projects if your team routes alert tickets through boards

Use either individual events or Send me everything only in non-production environments.

## 4. Test and verify

Use GitHub's ping/test delivery and also create a test issue. In Plural, verify:

- delivery succeeded (2xx)
- event parsed successfully
- issue/ticket event appears in webhook history

## 5. Security recommendations

- use a unique secret per webhook
- rotate periodically
- restrict admin rights for webhook management
46 changes: 46 additions & 0 deletions assets/public/setup-guides/webhooks/gitlab.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# GitLab Webhook Setup for Plural

Generate markdown documentation for creating a webhook in GitLab against plural. Plural allows a webhook to have a url and secret, you need to explain to the user how to register those, and how to configure the appropriate triggers so plural can receive events from alerts, new tickets, and incident issue updates.

## 1. Create the webhook in Plural

In Plural create:

- Type: Ticketing
- Provider: GITLAB
- URL: incoming webhook URL from Plural
- Secret: shared secret

## 2. Register URL and secret in GitLab

In GitLab project/group settings under Webhooks:

- URL: paste the Plural URL
- Secret token: paste the same secret from Plural
- SSL verification: keep enabled unless your environment requires otherwise

## 3. Configure GitLab triggers

Enable events that correspond to ticket lifecycle:

- Issues events
- Notes/comments events (optional)
- Labels changes (if used for severity)
- Confidential issue updates where applicable

For alert-driven workflows, scope to projects where alert tickets are created.

## 4. Test the integration

Use GitLab Test webhook for Issues events and then open a real test issue.

Check Plural for:

- successful request validation
- processed event payload
- activity logs with expected event type

## 5. Operational tips

- keep separate webhooks for staging and production projects
- apply narrow event filters to reduce noise
41 changes: 41 additions & 0 deletions assets/public/setup-guides/webhooks/grafana.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Grafana Webhook Setup for Plural

Generate markdown documentation for creating a webhook in Grafana against plural. Plural allows a webhook to have a url and secret, you need to explain to the user how to register those, and how to configure the appropriate triggers so plural can receive events from alerts and alert rule state transitions.

## 1. Create the webhook in Plural

Create a webhook in Plural with:

- Type: Observability
- Provider: GRAFANA
- Secret: shared webhook secret

Use the URL provided by Plural for incoming events.

## 2. Register URL and secret in Grafana

In Grafana Alerting contact points:

- Contact point type: Webhook
- URL: paste the Plural webhook URL
- Secret/signature key: paste the Plural secret

Set optional fields (headers, auth) only if your policy requires them.

## 3. Configure Grafana triggers

Bind the contact point to notification policies and routes for:

- firing alerts
- resolved alerts
- selected folders/labels for incident-relevant rules

Route only high-signal alerts to avoid noisy webhook traffic.

## 4. Validate integration

Use Grafana test notification and a real alert simulation. In Plural verify:

- request accepted
- signature check passed
- firing and resolved events are visible
45 changes: 45 additions & 0 deletions assets/public/setup-guides/webhooks/jira.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Jira Webhook Setup for Plural

Generate markdown documentation for creating a webhook in Jira against plural. Plural allows a webhook to have a url and secret, you need to explain to the user how to register those, and how to configure the appropriate triggers so plural can receive events from alerts, new tickets, and issue transitions.

## 1. Create the webhook in Plural

Configure a webhook in Plural with:

- Type: Ticketing
- Provider: JIRA
- URL: Plural callback endpoint
- Secret: shared signing secret

## 2. Register URL and secret in Jira

In Jira admin settings for webhooks:

- Endpoint URL: paste Plural URL
- Secret or authentication field: paste the Plural secret (if available in your Jira deployment)
- Authentication: configure additional auth headers only if your policy requires it

## 3. Configure Jira trigger events

Enable events commonly used for alert workflows:

- Issue created
- Issue updated
- Issue transitioned
- Issue reopened/resolved

If supported, apply JQL filter to include only incident/alert projects and severities.

## 4. Validate end-to-end

Create and transition a test issue in Jira. In Plural confirm:

- webhook accepted
- signature/secret check passed
- trigger appears with expected metadata

## 5. Best practices

- keep dedicated Jira webhook per environment
- document JQL filters with your on-call process
- rotate secret after team ownership changes
45 changes: 45 additions & 0 deletions assets/public/setup-guides/webhooks/linear.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Linear Webhook Setup for Plural

Generate markdown documentation for creating a webhook in Linear against plural. Plural allows a webhook to have a url and secret, you need to explain to the user how to register those, and how to configure the appropriate triggers so plural can receive events from alerts, new tickets, and issue status updates.

## 1. Create the webhook in Plural

In Plural, create webhook:

- Type: Ticketing
- Provider: LINEAR
- URL: Plural endpoint URL
- Secret: shared secret for request verification

## 2. Register URL and secret in Linear

In Linear workspace settings under API/Webhooks:

- Webhook URL: paste Plural URL
- Secret/signing key: paste same secret from Plural

If Linear signs payloads, make sure Plural validates against this exact secret.

## 3. Configure event subscriptions

Enable the events that should drive Plural automation:

- Issue created (new tickets)
- Issue updated
- Priority changed
- State changed (triaged/in progress/done)

Use team-based filters if only certain teams should send webhook data.

## 4. Verify integration

Create a test issue and transition its state. In Plural verify:

- request accepted
- event recorded
- downstream automation or trigger evaluation runs correctly

## 5. Maintenance

- keep webhook ownership documented in your runbook
- rotate secrets on schedule
42 changes: 42 additions & 0 deletions assets/public/setup-guides/webhooks/newrelic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# New Relic Webhook Setup for Plural

Generate markdown documentation for creating a webhook in New Relic against plural. Plural allows a webhook to have a url and secret, you need to explain to the user how to register those, and how to configure the appropriate triggers so plural can receive events from alerts and incident lifecycle changes.

## 1. Create the webhook in Plural

Create webhook details in Plural:

- Type: Observability
- Provider: NEWRELIC
- Secret: shared secret for verification

Copy the Plural webhook URL.

## 2. Register URL and secret in New Relic

In New Relic workflows/destinations:

- Destination type: webhook
- URL: Plural webhook URL
- Secret/signing credential: same secret as in Plural

Ensure destination is enabled and reachable from New Relic.

## 3. Configure trigger workflows

Attach destination to workflows with conditions such as:

- incident created/opened
- incident acknowledged
- incident closed
- policy/condition severity changes

Filter by account, policy, or tags to keep routing precise.

## 4. Test and verify

Send a test payload from New Relic and open a test incident. In Plural verify:

- authenticated delivery
- expected incident events captured
- trigger automation reacts to open/close events
Loading
Loading