modules:
  trigger:
    - key: issue-created-event
      function: onIssueCreated
      events:
        - avi:jira:created:issue
      filter:
        ignoreSelf: true
    - key: issue-updated-event
      function: onIssueUpdated
      events:
        - avi:jira:updated:issue
      filter:
        ignoreSelf: true
    - key: comment-mentioned-event
      function: onCommentMentioned
      events:
        - avi:jira:mentioned:comment
      filter:
        ignoreSelf: true

  webtrigger:
    - key: webtrigger
      function: webTriggerHandler

  # Async events
  consumer:
    - key: draft-ticket-answer-consumer
      queue: draft-ticket-answer-queue
      resolver:
        function: consumer
        method: draftTicketAnswer
    - key: summary-close-info-consumer
      queue: summary-close-info-queue
      resolver:
        function: consumer
        method: summaryCloseInfo
    - key: generate-kb-from-ticket-consumer
      queue: generate-kb-from-ticket-queue
      resolver:
        function: consumer
        method: generateKBFromTicket
    - key: create-knowledge-base-consumer
      queue: create-knowledge-base-queue
      resolver:
        function: consumer
        method: createKnowledgeBase

  jira:projectPage:
    - key: tidb-ai-project-page
      title: TiDB.AI
      resource: project-config-page
      render: 'native'
      resolver:
        function: resolver

  jira:issueContext:
    - key: generate-knowledge-base-context
      resource: kb-issue-context
      resolver:
        function: resolver
      render: native
      title: KB Writer (Beta)
      label: Generate Knowledge Base (AI)

  function:
    - key: onIssueCreated
      handler: issue-created-listener.run
    - key: onIssueUpdated
      handler: issue-updated-listener.run
    - key: onCommentMentioned
      handler: comment-mentioned-listener.run
    - key: webTriggerHandler
      handler: webtrigger.handler
    - key: resolver
      handler: index.handler
    - key: consumer
      handler: consumer.handler

resources:
  - key: project-config-page
    path: src/pages/project-config/index.tsx
  - key: kb-issue-context
    path: src/pages/knowledge-base-issue-context/index.tsx

permissions:
  scopes:
    - storage:app
    - read:jira-work
    - write:jira-work
    - read:field:jira
    - read:field-configuration:jira
    - read:project.avatar:jira
    - read:avatar:jira
    - read:page:confluence
    - write:page:confluence
    - read:space:confluence
    - write:confluence-content
    - read:confluence-content.summary
    - search:confluence
  external:
    images:
      - https://*.atlassian.net
    fetch:
      backend:
        - tidb.ai
        - internal.tidb.ai
        - api.openai.com
        - us.cloud.langfuse.com
        - api.github.com
        - http-gateway01.eu-central-1.prod.aws.tidbcloud.com
        - http-gateway01.us-east-1.prod.aws.tidbcloud.com
        - http-gateway01.us-west-2.prod.aws.tidbcloud.com
  content:
    styles:
      - unsafe-inline

app:
  runtime:
    name: nodejs20.x
  id: ari:cloud:ecosystem::app/794abe5d-4c05-4349-94b4-42814fd52bec
