d25d482dc2
Publish CLI Package / publish-npm (push) Waiting to run
Publish Python SDK / publish-pypi (push) Waiting to run
Publish TypeScript SDK / publish-npm (push) Waiting to run
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
109 lines
3.6 KiB
TypeScript
109 lines
3.6 KiB
TypeScript
import { SentryIcon } from '@/components/icons'
|
|
import type { ConnectorMeta } from '@/connectors/types'
|
|
|
|
/**
|
|
* Default issue search query.
|
|
*
|
|
* Reconciliation semantics: the sync engine hard-deletes any previously-synced
|
|
* document whose `externalId` is absent from a full (non-capped) listing pass.
|
|
* With the default `is:unresolved` query this means an issue that is resolved,
|
|
* ignored/muted, or aged out of the query window will fall out of the listing
|
|
* and be removed from the knowledge base on the next full sync. That is the
|
|
* intended semantic — the KB tracks the *currently matching* issue set, not a
|
|
* permanent archive. Users who want resolved issues retained should widen the
|
|
* query (e.g. drop `is:unresolved`). When `maxIssues` caps the listing, the
|
|
* engine sets `listingCapped` and skips deletion, so capped runs never remove
|
|
* unseen issues.
|
|
*/
|
|
export const DEFAULT_QUERY = 'is:unresolved'
|
|
|
|
export const sentryConnectorMeta: ConnectorMeta = {
|
|
id: 'sentry',
|
|
name: 'Sentry',
|
|
description: 'Sync issues and errors from Sentry into your knowledge base',
|
|
version: '1.0.0',
|
|
icon: SentryIcon,
|
|
|
|
auth: {
|
|
mode: 'apiKey',
|
|
label: 'Auth Token',
|
|
placeholder: 'Enter your Sentry auth token',
|
|
},
|
|
|
|
configFields: [
|
|
{
|
|
id: 'baseUrl',
|
|
title: 'Sentry URL',
|
|
type: 'short-input',
|
|
placeholder: 'sentry.io',
|
|
required: false,
|
|
mode: 'advanced',
|
|
description:
|
|
'Host of your Sentry install. Leave blank for sentry.io. Set this for self-hosted Sentry (e.g. sentry.mycompany.com).',
|
|
},
|
|
{
|
|
id: 'organization',
|
|
title: 'Organization Slug',
|
|
type: 'short-input',
|
|
placeholder: 'e.g. my-org',
|
|
required: true,
|
|
description: 'The slug of your Sentry organization.',
|
|
},
|
|
{
|
|
id: 'project',
|
|
title: 'Project Slug',
|
|
type: 'short-input',
|
|
placeholder: 'e.g. my-project',
|
|
required: true,
|
|
description: 'The slug of the project whose issues should be synced.',
|
|
},
|
|
{
|
|
id: 'query',
|
|
title: 'Search Query',
|
|
type: 'short-input',
|
|
placeholder: `e.g. ${DEFAULT_QUERY}`,
|
|
required: false,
|
|
description:
|
|
'Sentry search query to filter issues (e.g. "is:unresolved level:error environment:production"). Defaults to "is:unresolved".',
|
|
},
|
|
{
|
|
id: 'environment',
|
|
title: 'Environment',
|
|
type: 'short-input',
|
|
required: false,
|
|
mode: 'advanced',
|
|
placeholder: 'e.g. production',
|
|
description: 'Only sync issues seen in this environment. Leave blank for all environments.',
|
|
},
|
|
{
|
|
id: 'statsPeriod',
|
|
title: 'Stats Period',
|
|
type: 'dropdown',
|
|
required: false,
|
|
mode: 'advanced',
|
|
options: [
|
|
{ label: 'Sentry default (24h)', id: '' },
|
|
{ label: 'Last 24 hours', id: '24h' },
|
|
{ label: 'Last 14 days', id: '14d' },
|
|
],
|
|
description: 'Time window for the issue stats Sentry computes on the project issues list.',
|
|
},
|
|
{
|
|
id: 'maxIssues',
|
|
title: 'Max Issues',
|
|
type: 'short-input',
|
|
required: false,
|
|
placeholder: 'e.g. 500 (default: unlimited)',
|
|
description: 'Cap the number of issues synced. Leave empty to sync all matching issues.',
|
|
},
|
|
],
|
|
|
|
tagDefinitions: [
|
|
{ id: 'level', displayName: 'Level', fieldType: 'text' },
|
|
{ id: 'status', displayName: 'Status', fieldType: 'text' },
|
|
{ id: 'count', displayName: 'Event Count', fieldType: 'number' },
|
|
{ id: 'firstSeen', displayName: 'First Seen', fieldType: 'date' },
|
|
{ id: 'lastSeen', displayName: 'Last Seen', fieldType: 'date' },
|
|
],
|
|
}
|