Files
plane/web/public/services/github.svg
sriram veeraghanta 51309bf474 silo: Migration Improvements and User Imports Checks. (#1984)
* chore: silo imports integrations (#1610)

* fix: silo service initial setup

* feat: moved controllers inside runner

* feat: created core definations for apps and context

* feat: added interfaces required for apps

* feat: moved shared definations

* feat: added logger as an injection for apps

* feat: changes to controllers

* feat: added vm based app execution inside manager

* feat: added dummy implementations for core constructs

* feat: moved controllers to routes

* feat: created worker moduler for processing message queue requests

* feat: added task manager defination

* feat: added context and manager separations

* feat: created defaults for the defination implementation

* feat: added async task management inside apps

* feat: removed unnecessary arguments in function calls

* feat: added context builder for app instances

* feat: added runtime type safety with zod

* feat: added packaged definition structure for silo apps

* feat: added package based configuration for engine and definitions

* feat: added custom eslint rule for throws decorator

* feat: added custom eslint rule for try catch

* feat: removed custom eslint config

* feat: added authentication controller inside engine

* feat: added auth in silo engine

* feat: migrated jira ui module to plane

* chore: removed jira app

* chore: moved engine components into src_engine directory

* feat: added base template inside new src directory

* feat: migrated worker interface with mq and redis store inside new src

* feat: created jira migrator and jira importer types

* chore: migrated worker's helper inside the base directory

* feat: added logic for booting up root worker

* feat: added jira and jira auth service inside jira app

* feat: added all transformers inside jira package

* feat: added authorization types for jira

* feat: added jira authentication oauth class

* feat: added jira transformer and pull mechanisms inside jira app

* feat: addded batching logic inside jira migrator

* feat: embedded silo sdk inside jira migrator

* feat: added plane migrator inside engine

* feat: added plane migrator for push inside migration controller

* feat: added controller methods for migration

* feat: added credentials and job routes in controller

* feat: added linear importer

* feat: added linear pull function as importer

* feat: added transformation for linear data

* feat: added pull mechanism for linear

* feat: attached linear data importer with migration controller

* fix: removed hardcoded jira from cycle and module migrator

* feat: fixed build errors

* chore: addeed example env

* feat: added authentication routes for jira

* feat: added linear route controller

* fix: restructuring

* fix: sdk configs setup

* fix: merge conflicts

* fix: sdk setup

* chore: added jira and linear importers and separate packages

* feat: moved transformation parts to linear package

* feat: decoupled jira logical parts with worker

* fix: linear silo app to use linear package

* fix: build errors and dependency resolution with packages in silo

* fix: module build errors in silo

* fix: linear authorization flow

* feat: added logic for segregated workers

* feat: attached task manager with the base starter

* feat: added migrations, query and schema into db directory

* feat: added linear importer and jira importer app structure

* feat: added silo core package

* chore: migrated worker and main engine controller inside apps

* fix: made linear integration working

* silo: added cors

* feat: added base64 state changes with jira

* chore: updated silo env

* fix: jira token cookie

* feat: added issue attachments in linear job

* feat: added credentials controller

* feat: added github package inside silo packages

* feat: added resource fetching in jira api service

* feat: added credentials locking

* feat: created resources endpoint for jira

* feat: added endpoints for getting jira data

* fix: credentials not working

* chore: exported jira types

* chore: added jira states

* fix: jira project pagination issue

* chore: initiated silo folder in web

* feat: added github routes and services in silo app

* feat: improvided auth service and added background worker for github

* feat: added task manager for github

* fix: build updates

* fix: updated plane sdk and updated jira importer

* chore: updated the importer layout

* chore: removed as any from table component

* chore: integrated importer dashboard

* fix: tsup fixes

* fix: removed unnecessary files

* fix: removing tsup for building silo packages

* fix: build related issues

* feat: modified project and issue sdk service to add more methods

* feat: added installation webhook hook handler

* feat: added issue comment handler

* feat: added issue events handler interface

* feat: added pull request interface handler

* feat: added github worker for handling bg tasks

* feat: attached manager into main controller

* fix: build issues

* fix: eslint fixes

* fix: silo build errors

* fix: silo app build errors types

* fix: reverting the cloud branch

* fix: updated package json in silo service

* fix: branch build cloud updated

* fix: build errors in apps while using sdk due to ts-alias paths

* fix: branch build cloud workflow fixes

* feat: added user mentions with github sync

* fix: docker compose setup updates

* fix: bot user comments with github

* feat: initialized github plane worker

* fix: docker compose build fixes

* fix: docker build fixes envs updated in example file

* feat: added plane github webhook worker

* chore: updates folder structure and handled job services

* chore: resolved build errors in silo chore

* fix: docker compose cloud added

* feat: added issue handler with labels

* fix: build process docker compose

* feat: added issue edit and comment edits in github sync

* chore: updated jira workflow

* feat: added plane webhook types

* feat: added plane webhook event handlers

* feat: added workspace connection schema

* chore: handled the job start and jira dashboard

* feat: added query for getting entity connection

* chore: updated constants, file naming convention

* chore: resolved merge conflicts

* feat: added worspace and entity connection tables

* feat: added workspace and entity connections for pr, comment as well

* fix: github import with usermapping

* feat: added plane issue synce to github

* chore: integrated linear and updated jobs query

* feat: added hostname changes

* conflict: updated jira config and added issue transformation count in dashboard

* conflict: updated job

* chore: updated Jira status

* chore: updated Jira status

* fix: batch processing

* fix: batch key release

* chore: updated workflow for building images

* fix: detached silo build

* chore: updates linear and resolved build errors

* fix: batch key missing

* fix: merge issues with Credential types

* fix: issues with github mereg

* fix: linear workflow

* chore: updated linear queries

* feat: updated plane bg tasks to send webhook on desc change

* feat: added plane transformations for github

* feat: added connection schema and comment handler inside github worker

* chore: modified dashboard labels

* fix: docker compose fixed for running silo services

* feat: added key based deduping for webhook events

* feat: added schema based tables

* feat: added redis based payload dispatch and dedup

* feat: added migrations and changed connection table schema

* feat: modified github etl for changed webhook process

* feat: implemented redis ttl based arch with github

* feat: implemented gitlab silo package

* feat: added github user authentication

* feat: modified linear dashboard and services

* feat: changed yarn lock

* feat: added user auth into comments as well

* feat: addded gitlab authentication service

* fix: state activity not being reconized by external apis

* feat: added gitlab package for apis and sdk

* feat: added gitlab merge request integration

* fix: code cleanup for gitlab

* feat: added title references to gitlab

* feat: added magic words in github integration

* chore: removed logging token response

* feat: added slack authentication flow

* feat: added user and team level authentication for slack

* feat: added services for slack integration

* feat: added blockkit components inside slack interaction

* feat: modified slack service for addded thread ephemeral messages

* feat: added handlers and views

* feat: asana importer.
* fix: build errors.

* feat: added thread sync to slack

* feat: added changes with merge

* chore: handle asana token refresh.

* fix: builder for giving warning

* chore: remove console logs.

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
Co-authored-by: gurusainath <gurusainath007@gmail.com>

* fix: feature flags implementation

* fix: build errorsg

* fix: build errors

* chore: add missing silo packages.

* fix: updating package version for build issues in docker

* Added PAT based authentication for Jira Integration and Private bucket attachment uploads (#1642)

* feat: added pat authentication for jira service

* feat: added jira oauth and pat authentication strategy

* feat: added PAT auth for linear sdk

* feat: blocked routes for jira oauth

* fix: added OAuth Enabled key for authentication route

* feat: added PAT routes for linear and jira

* feat: added default value to job status

* feat: added credentials PAT filter

* feat: added credential fetch condition for PAT token

* chore: basic PAT token UI.

* fix: pat token implementation for jira

* chore: Jira personal access token form.

* fix: controller jira projects

* chore: handle migration steps without resourceId

* fix: jira project logo

* fix: migrator and attachment

* chore: update issue attachment external apis

* fix: attachments private bucket changes for silo

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>

* chore: Asana importer UI. (#1630)

* chore: UI improvements for Jira importer personal access token authentication (#1648)

* feat: added pat authentication for jira service

* feat: added jira oauth and pat authentication strategy

* feat: added PAT auth for linear sdk

* feat: blocked routes for jira oauth

* fix: added OAuth Enabled key for authentication route

* feat: added PAT routes for linear and jira

* feat: added default value to job status

* feat: added credentials PAT filter

* feat: added credential fetch condition for PAT token

* chore: basic PAT token UI.

* fix: pat token implementation for jira

* chore: Jira personal access token form.

* fix: controller jira projects

* chore: handle migration steps without resourceId

* fix: jira project logo

* fix: migrator and attachment

* chore: update issue attachment external apis

* fix: attachments private bucket changes for silo

* chore: minor UI improvements

* chore: ui improvement

* chore: fix importer list

---------

Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>

* fix: github package dependency with silo (#1622)

* fix/deps

* fix: axios

* chore: fix formatting.

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>

* Runway silo store (#1672)

* chore: silo store init

* chore: infra update for maintenance mode (#5963)

* [WEB-2728] improvement: add `true-transparent` variant for textarea. (#5960)

* fix: renaming and formatting

* chore: app sidebar behaviour (#5964)

* chore: infra update for maintenance mode (#1667)

* [WEB-2728] improvement: new UI for custom property settings. (#1663)

* chore: importer store integration for jira and resolved build error

---------

Co-authored-by: pushya22 <130810100+pushya22@users.noreply.github.com>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
Co-authored-by: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com>

* Basic Jira issue type and custom properties migration (#1676)

* chore: issue type migration.

* chore: update issue types api for pagination

* chore: update jira migrator for issue types

* chore: issue type sdk types and service updates

* typo: issue service files name update

* typo: issue service files name update

* fix: issue type fetch and create request.

* fix: build

* fix: issue type migration

* chore: minor improvements

* chore: issue property fetch for jira

* chore: issue property fetch

* fix: type errors

* chore: temp fix for batches completion logic.

* chore: add issue type check

* chore: issue property basic migration.

* fix: updated base silo base url

* remove console log.

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: gurusainath <gurusainath007@gmail.com>

* chore: add silo base url and silo base path in dockerfile

* chore: update in runway silo

* chore: custom field attributes structure.

* chore: helper for test settings config.

* chore: add logo props

* chore: custom field migrations

* chore: all simple properties migrations.

* chore: issue property options

* chore: update could not fetch feature

* chore: feature flag service in packages silo core

* chore: feature flagging

* chore: issue property values.

* [WEB-2742] chore: issue link ui revamp (#5971)

* chore-issue-link-ui

* chore: issue link ui revamp

* chore: upload image in the intake form (#1677)

* fix: editor user config (#1679)

* fix: editor user config (#5974)

* fix: pi chat bug fixes (#1670)

* chore: pi empty state

* fix: response change handled

* fix: handled api failure

* fix: formatted ai messages

* fix: reverted the pi pallete

* fix: integrated  models api

* fix: disabled regenerating new chat

* fix: page loading fixed

* fix: dynamically imported markdown

* fix: removed extras

* fix: minor css

* fix: handled pi chat in bulk ops

* [WEB-2706] fix: Add fallback when db initialisation fails (#5973)

* Add fallback when db initialization fails

* add checks for instance.exec

* chore: convert issue boolean fields to actual boolean value.

* change instance exec code

* sync issue to local db when inbox issue is accepted and draft issue is moved to project

* chore: added project and workspace keys

---------

Co-authored-by: rahulramesha <rahulramesham@gmail.com>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>

* fix related to activity (#5972)

* fix: renamed inbox to intake (#5967)

* feat: intake

* chore: intake model migration changes

* dev: update dummy data

* dev: add duplicate apis for inbox

* dev: fix external apis

* fix: external apis

* chore: migration file changes

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>

* chore: removed the validation in patch request (#1680)

* chore: changed inbox to intake (#1682)

* chore: fix custom fields option fetch logic.

* fix: renamed inbox to intake (#5967)

* feat: intake

* chore: intake model migration changes

* dev: update dummy data

* dev: add duplicate apis for inbox

* dev: fix external apis

* fix: external apis

* chore: migration file changes

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>

* fix: intake loading (#5966)

* fix: intake loading

* fix: image upload in space

* chore: silo feature flag service

* fix: jira issue pull logic

* chore: map user picker custom property using display names.

* fix: silo github package dependencies.

* fix: silo github package

* chore: add lucide icons mappings

* fix: removed constants

* fix: package.json dependency fix for silo

* chore: update batching logic to handle trees

* chore: take job hostname from .env

* fix: build issues

* chore: fix migrations

* chore: asana custom field import

* chore: remove unused values

* chore: update oauth enabled envs

* chore: fix builds

* chore: asana batching logic.

* chore: asana PAT auth endpoint

* chore: delete credential endpoint

* fix: silo jira importer

* chore: fix silo refresh token callback

* chore: update linear batching logic

* dev: jira store migration

* chore: fetching jobs

* chore: updating job store

* chore: build error in store

* chore: job store updates

* chore: returning the jira resource details

* chore: add pat token validation

* chore: updated URL in the silo

* chore: issues count

* chore: fix merge conflicts

* dev: resolved merge conflict

* chore: removed logs

* feat: added comment import with linear

* chore: build fixes

* chore: add missing status class

* chore: updated Jira

* chore: loader in summary

* chore: Asana importer improved UI with mobx store

* fix: jobs api

* chore: make dashboard view true

* chore: updating the jira dashboard toggler

* chore: minor ui improvements.

* chore: fix job order logic.

* chore: Linear integration

* fix: slack linkback workflow

* chore: update service token logic

* chore: deactivate credentials

* dev: updated linear states mapping

* chore: asana priority mapping.

* chore: updated linear config

* fix:images not loading when issue is imported

* chore: asana comments

* chore: asana attachements

* chore: linear attachements pull

* chore: deactivating the importers

* chore: minor bug fix in priority mapping

* chore: handled feature flag, reload jobs and dashboard load

* chore: handled verfication check in start and re-run job

* chore: code cleanup

* feat: added controller routes for disconnecting and getting current status

* chore: update silo to be a single service

* fix: credentials

* chore: handled map states and map priority on worksapce and project change of importers

* chore: handled loaders in importers

* chore: updating linear team details

* chore: update assets

* chore: replaced migration

* fix: condition for credential availability

* chore: slack integration

* chore: handled modal confirmation and linear issue count in summary

* feat: modified cycles and modules services in order to create new entities

* feat: added base types and modified services

* feat: added command method inside slack integration

* feat: added new helper methods

* feat: added Slack Private Metadata types

* feat: added command and weblink modals

* feat: created types for custom input blocks

* feat: created issue linkback modal

* feat: created issue create modal full

* feat: created unfurl views for project, modules and cycles

* fix: modified project select modal for ensuring proper types for entities and payload

* feat: added command handler

* feat: modified block action to handle weblink and comment buttons

* feat: modified message event to handle link unfurls

* feat: modified view submission to handle weblink submission and commands

* feat: modified slack worker

* feat: added slack types

* feat: added update message method and new overflow type

* fix: refactored issue linkback to add overflow instead buttons

* fix: added await

* fix: deps bump

* feat: remove description from issue linkback

* fix: message as description and not title

* chore: webhook integration for slack

* chore: constructd base url for silo webhook

* chore: handlded same domain validation

* chore: handled exception

* Merge branch 'preview' into feat/slack

* fix: auth state

* chore: yarn.lock

* fix: import order

* feat: added changes for user profile integration settings

* feat: Github Configuration UI into integrations  (#1863)

* chore: github UI (#1721)

* chore: typos integrations and importers

* chore: github integration base

* fix: github integration context updates

* chore: resolved build errors

* chore: github store and services

* chore: updated instance serializer

* fix: issue migrator to handle linear image component

* chore: github integration

* chore: removed logs

* chore: updated UI

* chore: revamp ui github integration

* chore: removed logs

* implemented edit and remove entity connection in github

* chore: updated github dark and light logos

* fix: issue serializer fixes

* chore: updated config object in entity connection

* chore: updated the config type and handled the build error

* feat: fixed github label for allowing payload

* fix: slash commands

* chore: filter out the removed cycle from issue detail (#6138)

* feat: workflows (#1849)

* chore: state workflows

* fix: actor endpoints

* chore: add feature flaggging

* chore: single endpoint for managing actors

* chore: patch endpoint for workflow transition

* chore: add workflow manager on single endpoint

* chore: add external api validation for workflow transitions

* chore: correct comments

* chore: add workflow transition

* chore: update permission for guest users

* [MOBIL-518] feat: Mobile push notifications (#1848)

* chore: implemented mobile push notification

* chore: updated the notification job

* chore: handled the response

* chore: updated private key

* chore: issue push notification updates

* chore: resolved the boolean validation on mobile push notification

* chore: added push notification to the notification activity

* chore: updated push notification logic

* chore: removed mutation for push notification

* feat: added endpoint for getting the authenticated user

* feat: added user mapping when authenticated inside github

* fix: github import

* fix: merge yarn lock

* fix: remove target hostname check

* fix: interchange request from env host

* fix: target host

* feat: added base64 private key

---------

Co-authored-by: guru_sainath <gurusainath007@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com>
Co-authored-by: pushya22 <130810100+pushya22@users.noreply.github.com>
Co-authored-by: Nikhil <118773738+pablohashescobar@users.noreply.github.com>

* fix: installation webhook handler and webhook connection

* fix: profile import

* feat: added dynamic member account connection

* fix: credential controller

* fix: modified store to not check for external api token for members

* chore: updated auth imports in github integration

* fix: redis consumption mechanism

* fix: reduced dedup interval

* fix: updated redis consumer for a homogeneus key

* fix: modified logic for deduping

* feat: link creation over github pull request state change

* chore: gitlab store integration

* chore: updated gitlab components

* chore: Updated github_hostname key

* fix: key logic with redis

* fix: added github logo for links and modified pull request link content

* feat: added member sync when adding new member into plane

* feat: separated queues for integrations and importers

* fix: initail etl package setup

* fix: etl folder structuring

* fix: module resolutions and exported etl package

* feat: added body transformation for plane to github html description

* feat: added generic asset endpoint for getting the resource

* feat: added asset service

* fix: asset service url on redirect

* feat: added content parser for parsing html to markdown

* Improvised Import Speed from `42 minutes / 1000 Issues` to `30 seconds / 1000 Issues` 🚅 (#1948)

* feat: added issue batch queue to celery and simplified structure

* feat: added data import background task

* feat: added generic asset url

* feat: added handler for issue properties and assets

* feat: added comment images and also added issue properties import

* fix: cancel button alignment inside the job dashboards

* feat: added job acknowledgement inside celery

* feat: added separate amqp url for celery

* fix: sdk build errors

* fix: docker build errors

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>

* Silo - user imports alert flow UI and silo backend API changes (#1961)

* feat: added workspace member list endpoint

* feat: added endpoint for getting additional users inside asana, jira and linear

* feat: added additional users endpoint inside jira

* fix: changed payload for response

* feat: warn for additional users in importers

* jira server user import flow with warn complete

* labels data type fix for jira import

* add skip user import ui component + linear user import warn flow

* add asana import user warn flow

* add jira importer user import warn flow + api fixes

* feat: added optional user import

---------

Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>

* feat: added optional project_id inside generic asset endpoint

* feat: added attachment endpoint for github client

* feat: added function to handle github private images

* add user_id in github connection post request

* fix: proxy image construction

* fix: etl build using tsup

* fix: key setting and images

* feat: added images inside issue comments

* feat: added issue link and issue linkback for github and plane

* fix: build process of etl package

* feat: handled edge cases and tweaked UI a little bit

* fix github logo in dark mode

* fix: issues not getting synced when external source is different

* feat: added conditional rendering for gh

* fix: link item for pulls

* fix:naming

* fix: build fixes

* fix: build

* fix: build

* fix: build and lint errors

* fix: etl packaging

* fix: build errors

* fix: docker build errors

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
Co-authored-by: gurusainath <gurusainath007@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: pushya22 <130810100+pushya22@users.noreply.github.com>
Co-authored-by: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com>
Co-authored-by: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com>
Co-authored-by: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com>
Co-authored-by: Akshita Goyal <36129505+gakshita@users.noreply.github.com>
Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
Co-authored-by: rahulramesha <rahulramesham@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: rahulramesha <71900764+rahulramesha@users.noreply.github.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: Nikhil <118773738+pablohashescobar@users.noreply.github.com>
Co-authored-by: Saurabhkmr98 <70131915+Saurabhkmr98@users.noreply.github.com>
Co-authored-by: Saurabhkmr98 <saurabhkapur73@gmail.com>
2024-12-23 16:56:00 +05:30

16 lines
20 KiB
XML

<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<circle cx="20" cy="20" r="20" fill="white"/>
<mask id="mask0_18217_187055" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="40" height="40">
<circle cx="20" cy="20" r="20" fill="white"/>
</mask>
<g mask="url(#mask0_18217_187055)">
<rect x="2" y="7" width="36" height="36" fill="url(#pattern0_18217_187055)"/>
</g>
<defs>
<pattern id="pattern0_18217_187055" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0_18217_187055" transform="scale(0.00195312)"/>
</pattern>
<image id="image0_18217_187055" width="512" height="512" xlink:href="data:image/png;base64,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"/>
</defs>
</svg>