@overlordai/server 1.0.174 → 1.0.176
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/database/migrations/020-connectors.sql +48 -0
- package/database/migrations/021-task-design-context.sql +17 -0
- package/dist/adapters/command-parser.utils.d.ts +1 -0
- package/dist/adapters/command-parser.utils.d.ts.map +1 -1
- package/dist/adapters/command-parser.utils.js +9 -0
- package/dist/adapters/command-parser.utils.js.map +1 -1
- package/dist/adapters/nlu.service.d.ts.map +1 -1
- package/dist/adapters/nlu.service.js +4 -1
- package/dist/adapters/nlu.service.js.map +1 -1
- package/dist/app.module.d.ts.map +1 -1
- package/dist/app.module.js +2 -0
- package/dist/app.module.js.map +1 -1
- package/dist/connectors/connector-closure.service.d.ts +16 -0
- package/dist/connectors/connector-closure.service.d.ts.map +1 -0
- package/dist/connectors/connector-closure.service.js +97 -0
- package/dist/connectors/connector-closure.service.js.map +1 -0
- package/dist/connectors/connector-dispatch.service.d.ts +30 -0
- package/dist/connectors/connector-dispatch.service.d.ts.map +1 -0
- package/dist/connectors/connector-dispatch.service.js +226 -0
- package/dist/connectors/connector-dispatch.service.js.map +1 -0
- package/dist/connectors/connector.constants.d.ts +4 -0
- package/dist/connectors/connector.constants.d.ts.map +1 -0
- package/dist/connectors/connector.constants.js +12 -0
- package/dist/connectors/connector.constants.js.map +1 -0
- package/dist/connectors/connector.controller.d.ts +20 -0
- package/dist/connectors/connector.controller.d.ts.map +1 -0
- package/dist/connectors/connector.controller.js +166 -0
- package/dist/connectors/connector.controller.js.map +1 -0
- package/dist/connectors/connector.interface.d.ts +61 -0
- package/dist/connectors/connector.interface.d.ts.map +1 -0
- package/dist/connectors/connector.interface.js +3 -0
- package/dist/connectors/connector.interface.js.map +1 -0
- package/dist/connectors/connector.module.d.ts +3 -0
- package/dist/connectors/connector.module.d.ts.map +1 -0
- package/dist/connectors/connector.module.js +50 -0
- package/dist/connectors/connector.module.js.map +1 -0
- package/dist/connectors/connector.registry.d.ts +15 -0
- package/dist/connectors/connector.registry.d.ts.map +1 -0
- package/dist/connectors/connector.registry.js +48 -0
- package/dist/connectors/connector.registry.js.map +1 -0
- package/dist/connectors/design-context.service.d.ts +21 -0
- package/dist/connectors/design-context.service.d.ts.map +1 -0
- package/dist/connectors/design-context.service.js +77 -0
- package/dist/connectors/design-context.service.js.map +1 -0
- package/dist/connectors/design-review-trigger.service.d.ts +15 -0
- package/dist/connectors/design-review-trigger.service.d.ts.map +1 -0
- package/dist/connectors/design-review-trigger.service.js +98 -0
- package/dist/connectors/design-review-trigger.service.js.map +1 -0
- package/dist/connectors/figma/figma-url-parser.d.ts +12 -0
- package/dist/connectors/figma/figma-url-parser.d.ts.map +1 -0
- package/dist/connectors/figma/figma-url-parser.js +28 -0
- package/dist/connectors/figma/figma-url-parser.js.map +1 -0
- package/dist/connectors/figma/figma.client.d.ts +67 -0
- package/dist/connectors/figma/figma.client.d.ts.map +1 -0
- package/dist/connectors/figma/figma.client.js +67 -0
- package/dist/connectors/figma/figma.client.js.map +1 -0
- package/dist/connectors/figma/figma.connector.d.ts +29 -0
- package/dist/connectors/figma/figma.connector.d.ts.map +1 -0
- package/dist/connectors/figma/figma.connector.js +223 -0
- package/dist/connectors/figma/figma.connector.js.map +1 -0
- package/dist/connectors/figma/index.d.ts +4 -0
- package/dist/connectors/figma/index.d.ts.map +1 -0
- package/dist/connectors/figma/index.js +10 -0
- package/dist/connectors/figma/index.js.map +1 -0
- package/dist/connectors/issue-ref-helpers.d.ts +10 -0
- package/dist/connectors/issue-ref-helpers.d.ts.map +1 -0
- package/dist/connectors/issue-ref-helpers.js +24 -0
- package/dist/connectors/issue-ref-helpers.js.map +1 -0
- package/dist/connectors/issue-ref-parser.d.ts +22 -0
- package/dist/connectors/issue-ref-parser.d.ts.map +1 -0
- package/dist/connectors/issue-ref-parser.js +35 -0
- package/dist/connectors/issue-ref-parser.js.map +1 -0
- package/dist/connectors/issue-ref-resolver.service.d.ts +44 -0
- package/dist/connectors/issue-ref-resolver.service.d.ts.map +1 -0
- package/dist/connectors/issue-ref-resolver.service.js +226 -0
- package/dist/connectors/issue-ref-resolver.service.js.map +1 -0
- package/dist/connectors/jira/jira.client.d.ts +58 -0
- package/dist/connectors/jira/jira.client.d.ts.map +1 -0
- package/dist/connectors/jira/jira.client.js +70 -0
- package/dist/connectors/jira/jira.client.js.map +1 -0
- package/dist/connectors/jira/jira.connector.d.ts +17 -0
- package/dist/connectors/jira/jira.connector.d.ts.map +1 -0
- package/dist/connectors/jira/jira.connector.js +141 -0
- package/dist/connectors/jira/jira.connector.js.map +1 -0
- package/dist/connectors/sentry/sentry.client.d.ts +54 -0
- package/dist/connectors/sentry/sentry.client.d.ts.map +1 -0
- package/dist/connectors/sentry/sentry.client.js +69 -0
- package/dist/connectors/sentry/sentry.client.js.map +1 -0
- package/dist/connectors/sentry/sentry.connector.d.ts +17 -0
- package/dist/connectors/sentry/sentry.connector.d.ts.map +1 -0
- package/dist/connectors/sentry/sentry.connector.js +173 -0
- package/dist/connectors/sentry/sentry.connector.js.map +1 -0
- package/dist/connectors/webhook-comment-parser.d.ts +18 -0
- package/dist/connectors/webhook-comment-parser.d.ts.map +1 -0
- package/dist/connectors/webhook-comment-parser.js +28 -0
- package/dist/connectors/webhook-comment-parser.js.map +1 -0
- package/dist/database/repositories/connector.repository.d.ts +84 -0
- package/dist/database/repositories/connector.repository.d.ts.map +1 -0
- package/dist/database/repositories/connector.repository.js +222 -0
- package/dist/database/repositories/connector.repository.js.map +1 -0
- package/dist/database/repositories/developer.repository.d.ts +6 -1
- package/dist/database/repositories/developer.repository.d.ts.map +1 -1
- package/dist/database/repositories/developer.repository.js +19 -1
- package/dist/database/repositories/developer.repository.js.map +1 -1
- package/dist/database/repositories/external-issue-link.repository.d.ts +27 -0
- package/dist/database/repositories/external-issue-link.repository.d.ts.map +1 -0
- package/dist/database/repositories/external-issue-link.repository.js +85 -0
- package/dist/database/repositories/external-issue-link.repository.js.map +1 -0
- package/dist/database/repositories/task-design-context.repository.d.ts +33 -0
- package/dist/database/repositories/task-design-context.repository.d.ts.map +1 -0
- package/dist/database/repositories/task-design-context.repository.js +76 -0
- package/dist/database/repositories/task-design-context.repository.js.map +1 -0
- package/dist/database/repository.module.d.ts.map +1 -1
- package/dist/database/repository.module.js +6 -0
- package/dist/database/repository.module.js.map +1 -1
- package/dist/dispatcher/dedup.service.d.ts +1 -1
- package/dist/dispatcher/dedup.service.d.ts.map +1 -1
- package/dist/dispatcher/dedup.service.js +2 -2
- package/dist/dispatcher/dedup.service.js.map +1 -1
- package/dist/dispatcher/dispatcher.module.d.ts.map +1 -1
- package/dist/dispatcher/dispatcher.module.js +2 -1
- package/dist/dispatcher/dispatcher.module.js.map +1 -1
- package/dist/dispatcher/dispatcher.service.d.ts +7 -1
- package/dist/dispatcher/dispatcher.service.d.ts.map +1 -1
- package/dist/dispatcher/dispatcher.service.js +79 -8
- package/dist/dispatcher/dispatcher.service.js.map +1 -1
- package/dist/dispatcher/dispatcher.types.d.ts +26 -0
- package/dist/dispatcher/dispatcher.types.d.ts.map +1 -1
- package/dist/dispatcher/scheduler.service.d.ts +3 -1
- package/dist/dispatcher/scheduler.service.d.ts.map +1 -1
- package/dist/dispatcher/scheduler.service.js +16 -2
- package/dist/dispatcher/scheduler.service.js.map +1 -1
- package/dist/dispatcher/task-creation.service.d.ts +47 -3
- package/dist/dispatcher/task-creation.service.d.ts.map +1 -1
- package/dist/dispatcher/task-creation.service.js +26 -9
- package/dist/dispatcher/task-creation.service.js.map +1 -1
- package/dist/dispatcher/task-lifecycle.service.d.ts +5 -1
- package/dist/dispatcher/task-lifecycle.service.d.ts.map +1 -1
- package/dist/dispatcher/task-lifecycle.service.js +32 -3
- package/dist/dispatcher/task-lifecycle.service.js.map +1 -1
- package/dist/notifier/notification-consumer.d.ts +3 -1
- package/dist/notifier/notification-consumer.d.ts.map +1 -1
- package/dist/notifier/notification-consumer.js +31 -8
- package/dist/notifier/notification-consumer.js.map +1 -1
- package/dist/notifier/template.service.d.ts +6 -0
- package/dist/notifier/template.service.d.ts.map +1 -1
- package/dist/notifier/template.service.js +12 -0
- package/dist/notifier/template.service.js.map +1 -1
- package/dist/web/admin/admin-connector.controller.d.ts +58 -0
- package/dist/web/admin/admin-connector.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-connector.controller.js +327 -0
- package/dist/web/admin/admin-connector.controller.js.map +1 -0
- package/dist/web/admin/admin-developer.controller.d.ts +1 -1
- package/dist/web/admin/admin-developer.controller.d.ts.map +1 -1
- package/dist/web/admin/admin-developer.controller.js +16 -5
- package/dist/web/admin/admin-developer.controller.js.map +1 -1
- package/dist/web/dashboard.controller.d.ts +1 -1
- package/dist/web/dashboard.service.d.ts +2 -7
- package/dist/web/dashboard.service.d.ts.map +1 -1
- package/dist/web/dashboard.service.js +16 -21
- package/dist/web/dashboard.service.js.map +1 -1
- package/dist/web/frame-handlers/review-report.handler.d.ts +3 -1
- package/dist/web/frame-handlers/review-report.handler.d.ts.map +1 -1
- package/dist/web/frame-handlers/review-report.handler.js +8 -3
- package/dist/web/frame-handlers/review-report.handler.js.map +1 -1
- package/dist/web/task.controller.d.ts +11 -1
- package/dist/web/task.controller.d.ts.map +1 -1
- package/dist/web/task.controller.js +118 -4
- package/dist/web/task.controller.js.map +1 -1
- package/dist/web/web.module.d.ts.map +1 -1
- package/dist/web/web.module.js +4 -1
- package/dist/web/web.module.js.map +1 -1
- package/dist/web/worker-channel.gateway.d.ts +3 -1
- package/dist/web/worker-channel.gateway.d.ts.map +1 -1
- package/dist/web/worker-channel.gateway.js +6 -3
- package/dist/web/worker-channel.gateway.js.map +1 -1
- package/package.json +4 -4
- package/public/assets/{AccessTokensPage-CBlLkkX6.js → AccessTokensPage-CoUlSpBu.js} +1 -1
- package/public/assets/{AdminPage-mynf8ODr.js → AdminPage-BonHpbC8.js} +1 -1
- package/public/assets/{AgentCliPage-DrnciW6T.js → AgentCliPage-2zflW4gy.js} +1 -1
- package/public/assets/{ApiReferencePage-DRe_cm_m.js → ApiReferencePage-BC8HEfcM.js} +1 -1
- package/public/assets/{ArchitecturePage-DNoVjW-a.js → ArchitecturePage-Da9rv0hg.js} +1 -1
- package/public/assets/{AuditLogPage-B1eTcJBR.js → AuditLogPage-BrF0T3MT.js} +1 -1
- package/public/assets/AutomationCreatePage-DI-Z1v9e.js +1 -0
- package/public/assets/{AutomationDetailPage-DWshoZlm.js → AutomationDetailPage-7TLMwELt.js} +1 -1
- package/public/assets/AutomationEditPage-BuOKTyTf.js +1 -0
- package/public/assets/AutomationListPage-D4XF43yR.js +26 -0
- package/public/assets/{AutomationRunDetailPage-D0oJoBJW.js → AutomationRunDetailPage-BDhPEndz.js} +1 -1
- package/public/assets/{BindPlatformPage-BTgH5eI0.js → BindPlatformPage-DNamr2h_.js} +1 -1
- package/public/assets/{BotIntegrationPage-D6GXacbO.js → BotIntegrationPage-DN665fG6.js} +1 -1
- package/public/assets/{BotManage-Cn_zH3U4.js → BotManage-DvfKuBFx.js} +1 -1
- package/public/assets/{BotSetupPage-DTb0r78_.js → BotSetupPage-DPsT5Ln6.js} +1 -1
- package/public/assets/{ChangelogPage-CNfqrRty.js → ChangelogPage-D1_YfUwN.js} +1 -1
- package/public/assets/{Checkbox-D1hAKR9E.js → Checkbox-D8xEau6n.js} +1 -1
- package/public/assets/{CliReferencePage-DK4sv8D8.js → CliReferencePage-DVtpCVyB.js} +1 -1
- package/public/assets/{ConfirmStageDialog-Bi3nbWlh.js → ConfirmStageDialog-Cu49oAnM.js} +1 -1
- package/public/assets/ConnectorsPage-DmC6MARl.js +48 -0
- package/public/assets/{DeploymentPage-xKePKzHX.js → DeploymentPage-P3jrGKlU.js} +1 -1
- package/public/assets/{DevWorkflowPage-DHNtwyat.js → DevWorkflowPage-DDE9wLKC.js} +1 -1
- package/public/assets/DeveloperManage-Bpo7QRy5.js +16 -0
- package/public/assets/{DeveloperSetupPage-C7_LFKDA.js → DeveloperSetupPage-CHz_5bNW.js} +1 -1
- package/public/assets/{DocsIndexPage-DDcOuwlz.js → DocsIndexPage-C8kNCHNc.js} +11 -6
- package/public/assets/{DocsLayout-B477jsxk.js → DocsLayout-CF22uAIS.js} +1 -1
- package/public/assets/{DocsPrimitives-CgyoKAir.js → DocsPrimitives-BhxcRaTm.js} +1 -1
- package/public/assets/{EditProjectPage-Dfm319Z2.js → EditProjectPage-D_3HRO1s.js} +1 -1
- package/public/assets/{EmptyState-P0FzomcO.js → EmptyState-IvQHEoph.js} +1 -1
- package/public/assets/{EnvVariablesPage-CnQo2yCF.js → EnvVariablesPage-DNuaFEmN.js} +1 -1
- package/public/assets/HomePage-B7S2lrwi.js +1 -0
- package/public/assets/{InfoRow-DbxM6iML.js → InfoRow-C_tQVkuP.js} +1 -1
- package/public/assets/{InstallationPage-CuOWbc1H.js → InstallationPage-CK1BUOe2.js} +1 -1
- package/public/assets/{LandingPage-Cbvdm3eI.js → LandingPage-DvR0mLWM.js} +1 -1
- package/public/assets/{LocalDevelopmentPage-0icX-WcV.js → LocalDevelopmentPage-C-5yQqhM.js} +1 -1
- package/public/assets/{LoginPage-6JnXQfU3.js → LoginPage-BdTmOyQm.js} +1 -1
- package/public/assets/{MetricBar-Dc-VQSMu.js → MetricBar-CKXN_2Ue.js} +1 -1
- package/public/assets/{MultiSelect-DCWH4BA8.js → MultiSelect-DegVW8UL.js} +1 -1
- package/public/assets/{NotFoundPage-DDuYP8W4.js → NotFoundPage-V93x8tfy.js} +1 -1
- package/public/assets/{OnboardingGuide-B0V0r8s3.js → OnboardingGuide-Crybb-Zh.js} +1 -1
- package/public/assets/{PermissionsPage-B0ggYIb5.js → PermissionsPage-BmehbFsh.js} +1 -1
- package/public/assets/{PipelineConfigPage-DtZQzMEH.js → PipelineConfigPage-DZVU3Vkj.js} +1 -1
- package/public/assets/{PipelineEditorPage-BJvEIr25.js → PipelineEditorPage-BH67Oewc.js} +1 -1
- package/public/assets/{PlanPage-C86YOhVS.js → PlanPage-B4OhS9_O.js} +1 -1
- package/public/assets/{ProfilePage-BnWgT5TC.js → ProfilePage-DpMfRGms.js} +1 -1
- package/public/assets/{ProjectDetailPage-DGQH-J_A.js → ProjectDetailPage-BOvwgwui.js} +1 -1
- package/public/assets/{ProjectListPage-CNCAX69Y.js → ProjectListPage-C2ZPh8P9.js} +1 -1
- package/public/assets/{PtyTerminal-kO8wCuuU.js → PtyTerminal-DKh7d_-3.js} +1 -1
- package/public/assets/{QuickAuth-DARffZGR.js → QuickAuth-D2EErll5.js} +1 -1
- package/public/assets/{RemoveMemberConfirmDialog-D9rPijXx.js → RemoveMemberConfirmDialog-Bnq4vIGU.js} +1 -1
- package/public/assets/ReviewAggregatePage-CTSuOo4O.js +6 -0
- package/public/assets/ReviewPage-Dx31QqyM.js +1 -0
- package/public/assets/{Select-CgGQnjuL.js → Select-BXx8KPbW.js} +1 -1
- package/public/assets/{SettingsPage-Dqser9QV.js → SettingsPage-D3tDh7gu.js} +1 -1
- package/public/assets/{Skeleton-KIdOfHCh.js → Skeleton-Crpru9Ol.js} +1 -1
- package/public/assets/{SkillPage-kituG7_x.js → SkillPage-BiwP6aqc.js} +1 -1
- package/public/assets/TaskDetailPage-DHW9thUL.js +21 -0
- package/public/assets/{TaskGuidePage-D3sA_3Vy.js → TaskGuidePage-DD_jyUVW.js} +1 -1
- package/public/assets/TaskListPage-CBIv7NTp.js +1 -0
- package/public/assets/{TaskStatusBadge-D9epJQNe.js → TaskStatusBadge-Cfz28K6K.js} +1 -1
- package/public/assets/{TerminalHomePage-Cl2Uh4Hp.js → TerminalHomePage-BmhBvY10.js} +1 -1
- package/public/assets/{TokenManage-DOg2xTt8.js → TokenManage-CYSBKzT7.js} +1 -1
- package/public/assets/{Tooltip-D1qzP0lG.js → Tooltip-DZdu3ZKx.js} +1 -1
- package/public/assets/{TotpSetupPage-CCbH89j8.js → TotpSetupPage-DP5q6oE-.js} +1 -1
- package/public/assets/{WorkerDetailPage-PtA39Lz5.js → WorkerDetailPage-LMirCNtN.js} +1 -1
- package/public/assets/{WorkerListPage-Rq7zwaP2.js → WorkerListPage-q6siISS8.js} +1 -1
- package/public/assets/{WorkerOperationsPage-CapQErvu.js → WorkerOperationsPage-CGzqG_QM.js} +1 -1
- package/public/assets/{WorkerSetupGuidePage-BVgaWQP0.js → WorkerSetupGuidePage-aVkDqrMr.js} +1 -1
- package/public/assets/{WorkerSetupPage-D-T4O7PE.js → WorkerSetupPage-C_zONAIf.js} +1 -1
- package/public/assets/agent-type-options-BiSKx1a4.js +1 -0
- package/public/assets/{arrow-left-CsRQX7H5.js → arrow-left-sGTyHBvX.js} +1 -1
- package/public/assets/{arrow-right-lhj-X9Ah.js → arrow-right-_NIT1UtR.js} +1 -1
- package/public/assets/{bot-BI0aOjZg.js → bot-CDSBtXc_.js} +1 -1
- package/public/assets/{chevron-down-BMMNE8tj.js → chevron-down-CE0uuyBZ.js} +1 -1
- package/public/assets/{chevron-left-C5QPcYfE.js → chevron-left-C0Zw71uv.js} +1 -1
- package/public/assets/{chevron-right-DUJ8mQK2.js → chevron-right-BCit7CZP.js} +1 -1
- package/public/assets/{chevron-up-tdj0sbLv.js → chevron-up-Bl0OZM4v.js} +1 -1
- package/public/assets/{circle-alert-CMpAAr9i.js → circle-alert-rHCTliEW.js} +1 -1
- package/public/assets/{clock-CM8cLcAb.js → clock-BwsbKSS6.js} +1 -1
- package/public/assets/{copy-DEFukTLk.js → copy-h1a805Rd.js} +1 -1
- package/public/assets/{download-enKZtRO3.js → download-URcu3Jx3.js} +1 -1
- package/public/assets/{external-link-DLg1H4XY.js → external-link-FhyMbjzB.js} +1 -1
- package/public/assets/{git-fork-BLuZ7mG_.js → git-fork-Dc1BvdTN.js} +1 -1
- package/public/assets/{index-6n4YMG-q.js → index-J1zWTACN.js} +13 -13
- package/public/assets/{key-DdT50FZZ.js → key-COdogDFT.js} +1 -1
- package/public/assets/{loader-circle-BsR1MJQw.js → loader-circle-Bq_BpbZ2.js} +1 -1
- package/public/assets/{pencil-wJOYzbVI.js → pencil-0fxibflK.js} +1 -1
- package/public/assets/{play-sxSJsoXu.js → play-Dbk8Wgkn.js} +1 -1
- package/public/assets/{plus-B3b8vXw9.js → plus-V36Q_nxP.js} +1 -1
- package/public/assets/{rotate-ccw-Wq-FsTE-.js → rotate-ccw-ByVQRmQu.js} +1 -1
- package/public/assets/{scroll-text-DrPNg6ww.js → scroll-text-C2iOLXnA.js} +1 -1
- package/public/assets/{settings-CG53o23z.js → settings-DrgaMc9j.js} +1 -1
- package/public/assets/{skip-forward-gDc2Yb8q.js → skip-forward-SfkU0vVB.js} +1 -1
- package/public/assets/{status-colors-D1PZs9TB.js → status-colors-IR97PkWv.js} +1 -1
- package/public/assets/{task-agent-DZDHjrS-.js → task-agent-BIYkVnlP.js} +1 -1
- package/public/assets/{task-constants-CCKesKBc.js → task-constants-07c7xWcv.js} +1 -1
- package/public/assets/{task.store-yMf_13Ff.js → task.store-DWG-SG1e.js} +1 -1
- package/public/assets/{timer-tBxBLW3s.js → timer-IeRNhyK4.js} +1 -1
- package/public/assets/{trash-2--fHS3BRC.js → trash-2-DuFeqRaH.js} +1 -1
- package/public/assets/{useFetch-CBIWj1ZT.js → useFetch-CZCaxaCi.js} +1 -1
- package/public/assets/{users-BWDidnLE.js → users-CG1y1K_u.js} +1 -1
- package/public/assets/{wifi-BTg-eNKI.js → wifi-Dvp0MK85.js} +1 -1
- package/public/assets/{workflow-CBP21ght.js → workflow-qWh96h21.js} +1 -1
- package/public/assets/{zap-Dhvfo8tD.js → zap-Cwv7x_Mg.js} +1 -1
- package/public/index.html +1 -1
- package/public/sw.js +1 -1
- package/public/assets/AutomationCreatePage-CukXfCtB.js +0 -1
- package/public/assets/AutomationEditPage-DL3-RPcj.js +0 -1
- package/public/assets/AutomationListPage-DGH6MsJc.js +0 -26
- package/public/assets/DeveloperManage-Di8MWrTf.js +0 -16
- package/public/assets/HomePage-Da2G6_QB.js +0 -1
- package/public/assets/ReviewAggregatePage-Bc1K6gXO.js +0 -6
- package/public/assets/ReviewPage-BPDRxqrG.js +0 -1
- package/public/assets/TaskDetailPage-DQVE-zp-.js +0 -21
- package/public/assets/TaskListPage-arWi98DB.js +0 -1
- package/public/assets/agent-type-options-CvfN3Xkt.js +0 -1
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var ConnectorDispatchService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.ConnectorDispatchService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const connector_repository_1 = require("../database/repositories/connector.repository");
|
|
16
|
+
const external_issue_link_repository_1 = require("../database/repositories/external-issue-link.repository");
|
|
17
|
+
const task_creation_service_1 = require("../dispatcher/task-creation.service");
|
|
18
|
+
const connector_registry_1 = require("./connector.registry");
|
|
19
|
+
const task_repository_1 = require("../database/repositories/task.repository");
|
|
20
|
+
const redis_service_1 = require("../redis/redis.service");
|
|
21
|
+
const project_repository_1 = require("../database/repositories/project.repository");
|
|
22
|
+
const design_context_service_1 = require("./design-context.service");
|
|
23
|
+
const connector_constants_1 = require("./connector.constants");
|
|
24
|
+
const EVENT_DEDUPE_TTL_SEC = 24 * 60 * 60; // 24h
|
|
25
|
+
let ConnectorDispatchService = ConnectorDispatchService_1 = class ConnectorDispatchService {
|
|
26
|
+
constructor(connectorRepo, externalIssueLinkRepo, taskRepo, taskCreationService, connectorRegistry, redis, designContextService, projectRepo) {
|
|
27
|
+
this.connectorRepo = connectorRepo;
|
|
28
|
+
this.externalIssueLinkRepo = externalIssueLinkRepo;
|
|
29
|
+
this.taskRepo = taskRepo;
|
|
30
|
+
this.taskCreationService = taskCreationService;
|
|
31
|
+
this.connectorRegistry = connectorRegistry;
|
|
32
|
+
this.redis = redis;
|
|
33
|
+
this.designContextService = designContextService;
|
|
34
|
+
this.projectRepo = projectRepo;
|
|
35
|
+
this.logger = new common_1.Logger(ConnectorDispatchService_1.name);
|
|
36
|
+
/** In-process lock to prevent duplicate task creation from concurrent webhooks for the same issue. */
|
|
37
|
+
this.dispatchingIssues = new Set();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Process a webhook result and create a task if needed.
|
|
41
|
+
*/
|
|
42
|
+
async dispatchFromConnector(result, instance) {
|
|
43
|
+
if (result.action !== 'create_task')
|
|
44
|
+
return;
|
|
45
|
+
// Check for duplicate: use eventId (comment ID, alert rule, etc.) when available
|
|
46
|
+
// to distinguish new events on the same issue from retries. Fall back to issue ID.
|
|
47
|
+
const issueDedupeKey = result.issueRef
|
|
48
|
+
? `${result.issueRef.platform}:${result.issueRef.issueId}${result.eventId ? `:${result.eventId}` : ''}`
|
|
49
|
+
: null;
|
|
50
|
+
if (issueDedupeKey) {
|
|
51
|
+
// Check persistent dedup first: if this exact event was already
|
|
52
|
+
// successfully processed, skip immediately.
|
|
53
|
+
if (result.eventId) {
|
|
54
|
+
const redisKey = `connector_event:${issueDedupeKey}`;
|
|
55
|
+
const existing = await this.redis.getClient().get(redisKey);
|
|
56
|
+
if (existing) {
|
|
57
|
+
this.logger.log({ issueId: result.issueRef.issueId, eventId: result.eventId }, 'External event already processed (Redis dedupe), skipping');
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// In-process lock for concurrent requests within the same event loop tick
|
|
62
|
+
if (this.dispatchingIssues.has(issueDedupeKey)) {
|
|
63
|
+
this.logger.log({ issueId: result.issueRef.issueId }, 'External issue dispatch already in progress, skipping concurrent duplicate');
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
this.dispatchingIssues.add(issueDedupeKey);
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
return await this.dispatchWithLock(result, instance);
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
if (issueDedupeKey) {
|
|
73
|
+
this.dispatchingIssues.delete(issueDedupeKey);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async dispatchWithLock(result, instance) {
|
|
78
|
+
// Only deduplicate by issue ID when there is no event-specific identifier.
|
|
79
|
+
// When eventId is present (e.g. Jira comment ID), each new event on the
|
|
80
|
+
// same issue is a legitimate new request — the in-process lock already
|
|
81
|
+
// prevents retries of the same event.
|
|
82
|
+
if (result.issueRef && !result.eventId) {
|
|
83
|
+
const existingLinks = this.externalIssueLinkRepo.findByExternalIssue(result.issueRef.platform, result.issueRef.issueId, instance.id);
|
|
84
|
+
const activeLink = existingLinks.find((link) => {
|
|
85
|
+
const task = this.taskRepo.findById(link.taskId);
|
|
86
|
+
return !!task && connector_constants_1.ACTIVE_TASK_STATUSES.has(task.status);
|
|
87
|
+
});
|
|
88
|
+
if (activeLink) {
|
|
89
|
+
this.logger.log({ issueId: result.issueRef.issueId, taskId: activeLink.taskId }, 'External issue already linked to an active task, skipping duplicate');
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Resolve project key from binding or result — always scoped to the
|
|
94
|
+
// receiving connector instance to avoid cross-instance misrouting.
|
|
95
|
+
const bindings = this.connectorRepo.findBindingsByInstanceId(instance.id);
|
|
96
|
+
let projectKey = result.projectKey;
|
|
97
|
+
// Validate explicit projectKey against bindings to prevent routing
|
|
98
|
+
// to a project not bound to this connector instance.
|
|
99
|
+
// Resolve alias to canonical key first (e.g. --project <alias> in comments).
|
|
100
|
+
if (projectKey) {
|
|
101
|
+
const canonical = this.projectRepo.findByAlias(projectKey)?.key ?? projectKey;
|
|
102
|
+
const isBound = bindings.some((b) => b.projectKey === canonical);
|
|
103
|
+
if (isBound) {
|
|
104
|
+
projectKey = canonical;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
this.logger.warn({ instanceId: instance.id, projectKey }, 'Explicit projectKey from webhook is not bound to this connector instance, ignoring');
|
|
108
|
+
projectKey = undefined;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (!projectKey) {
|
|
112
|
+
// Try matching by external project key from the webhook payload
|
|
113
|
+
if (result.issueRef?.projectKey) {
|
|
114
|
+
const matchedBinding = bindings.find((b) => b.externalProjectKey === result.issueRef.projectKey);
|
|
115
|
+
if (matchedBinding) {
|
|
116
|
+
projectKey = matchedBinding.projectKey;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Fall back to default binding or sole binding
|
|
120
|
+
if (!projectKey) {
|
|
121
|
+
const defaultBinding = bindings.find((b) => b.isDefault);
|
|
122
|
+
if (defaultBinding) {
|
|
123
|
+
projectKey = defaultBinding.projectKey;
|
|
124
|
+
}
|
|
125
|
+
else if (bindings.length === 1) {
|
|
126
|
+
projectKey = bindings[0].projectKey;
|
|
127
|
+
}
|
|
128
|
+
else if (bindings.length > 1) {
|
|
129
|
+
this.logger.warn({ instanceId: instance.id, platform: instance.platform, bindingCount: bindings.length }, 'Multiple bindings without a default — cannot resolve project key unambiguously, skipping task creation');
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (!projectKey) {
|
|
135
|
+
this.logger.warn({ instanceId: instance.id, platform: instance.platform }, 'Cannot resolve project key for connector webhook, skipping task creation');
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
// Build externalRefs for configSnapshot
|
|
139
|
+
const externalRefs = result.issueRef
|
|
140
|
+
? [{
|
|
141
|
+
platform: result.issueRef.platform,
|
|
142
|
+
issueId: result.issueRef.displayIssueId ?? result.issueRef.issueId,
|
|
143
|
+
url: result.issueRef.issueUrl,
|
|
144
|
+
}]
|
|
145
|
+
: undefined;
|
|
146
|
+
// Figma: pre-fetch design context before task creation
|
|
147
|
+
const figmaFileKey = result.context?.extra?.figmaFileKey;
|
|
148
|
+
let figmaData = null;
|
|
149
|
+
if (figmaFileKey) {
|
|
150
|
+
try {
|
|
151
|
+
figmaData = await this.designContextService.fetch(figmaFileKey, result.context.extra.figmaNodeIds, projectKey, instance.id);
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
this.logger.warn({ err, figmaFileKey }, 'Figma design context prefetch failed, creating task without design context');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
const createdBy = instance.createdBy;
|
|
158
|
+
if (!createdBy) {
|
|
159
|
+
this.logger.warn({ instanceId: instance.id, platform: instance.platform }, 'Connector webhook cannot create a task without a connector owner');
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
const task = await this.taskCreationService.createTask({
|
|
164
|
+
description: result.description ?? 'Task from external connector',
|
|
165
|
+
projectKey,
|
|
166
|
+
developerId: result.developerId,
|
|
167
|
+
}, createdBy, undefined, undefined, externalRefs ? { externalRefs } : undefined, figmaData
|
|
168
|
+
? (t) => {
|
|
169
|
+
this.designContextService.store(t.id, figmaData.instance.id, figmaData.context, result.context?.extra?.figmaCommentId);
|
|
170
|
+
}
|
|
171
|
+
: undefined, figmaData
|
|
172
|
+
? { instanceId: figmaData.instance.id, context: figmaData.context }
|
|
173
|
+
: undefined, result.issueRef
|
|
174
|
+
? { instanceId: instance.id, ref: result.issueRef }
|
|
175
|
+
: undefined);
|
|
176
|
+
// Create external issue link
|
|
177
|
+
if (result.issueRef) {
|
|
178
|
+
this.externalIssueLinkRepo.create({
|
|
179
|
+
taskId: task.id,
|
|
180
|
+
connectorInstanceId: instance.id,
|
|
181
|
+
connectorPlatform: result.issueRef.platform,
|
|
182
|
+
externalIssueId: result.issueRef.issueId,
|
|
183
|
+
externalIssueUrl: result.issueRef.issueUrl,
|
|
184
|
+
externalProjectKey: result.issueRef.projectKey,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
this.logger.log({ taskId: task.id, platform: instance.platform, issueId: result.issueRef?.issueId }, 'Created task from connector webhook');
|
|
188
|
+
// Mark event as processed AFTER successful task creation.
|
|
189
|
+
// This ensures failed dispatches can be retried by the external system.
|
|
190
|
+
if (result.eventId && result.issueRef) {
|
|
191
|
+
const redisKey = `connector_event:${result.issueRef.platform}:${result.issueRef.issueId}:${result.eventId}`;
|
|
192
|
+
this.redis.getClient().set(redisKey, '1', 'EX', EVENT_DEDUPE_TTL_SEC).catch((err) => {
|
|
193
|
+
this.logger.warn({ err, redisKey }, 'Failed to set Redis dedup key');
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
// Fire-and-forget: post acknowledgement comment back to external system
|
|
197
|
+
if (result.issueRef) {
|
|
198
|
+
const connector = this.connectorRegistry.get(instance.platform);
|
|
199
|
+
if (connector) {
|
|
200
|
+
connector
|
|
201
|
+
.addComment(instance, result.issueRef.issueId, `Overlord Task #${task.id} has been created for this issue.`)
|
|
202
|
+
.catch((err) => {
|
|
203
|
+
this.logger.warn({ err, issueId: result.issueRef.issueId }, 'Failed to post acknowledgement comment');
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
catch (err) {
|
|
209
|
+
this.logger.error({ err, platform: instance.platform }, 'Failed to create task from connector webhook');
|
|
210
|
+
throw err;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
exports.ConnectorDispatchService = ConnectorDispatchService;
|
|
215
|
+
exports.ConnectorDispatchService = ConnectorDispatchService = ConnectorDispatchService_1 = __decorate([
|
|
216
|
+
(0, common_1.Injectable)(),
|
|
217
|
+
__metadata("design:paramtypes", [connector_repository_1.ConnectorRepository,
|
|
218
|
+
external_issue_link_repository_1.ExternalIssueLinkRepository,
|
|
219
|
+
task_repository_1.TaskRepository,
|
|
220
|
+
task_creation_service_1.TaskCreationService,
|
|
221
|
+
connector_registry_1.ConnectorRegistry,
|
|
222
|
+
redis_service_1.RedisService,
|
|
223
|
+
design_context_service_1.DesignContextService,
|
|
224
|
+
project_repository_1.ProjectRepository])
|
|
225
|
+
], ConnectorDispatchService);
|
|
226
|
+
//# sourceMappingURL=connector-dispatch.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector-dispatch.service.js","sourceRoot":"","sources":["../../src/connectors/connector-dispatch.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.constants.d.ts","sourceRoot":"","sources":["../../src/connectors/connector.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,iBAK/B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ACTIVE_TASK_STATUSES = void 0;
|
|
4
|
+
const protocol_1 = require("@overlordai/protocol");
|
|
5
|
+
/** Task statuses considered "active" for connector dedup and auto-review checks. */
|
|
6
|
+
exports.ACTIVE_TASK_STATUSES = new Set([
|
|
7
|
+
protocol_1.TaskStatus.QUEUED,
|
|
8
|
+
protocol_1.TaskStatus.ASSIGNED,
|
|
9
|
+
protocol_1.TaskStatus.RUNNING,
|
|
10
|
+
protocol_1.TaskStatus.SUSPENDED,
|
|
11
|
+
]);
|
|
12
|
+
//# sourceMappingURL=connector.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.constants.js","sourceRoot":"","sources":["../../src/connectors/connector.constants.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAElD,oFAAoF;AACvE,QAAA,oBAAoB,GAAG,IAAI,GAAG,CAAa;IACtD,qBAAU,CAAC,MAAM;IACjB,qBAAU,CAAC,QAAQ;IACnB,qBAAU,CAAC,OAAO;IAClB,qBAAU,CAAC,SAAS;CACrB,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Request } from 'express';
|
|
2
|
+
import { ConnectorRepository } from '../database/repositories/connector.repository';
|
|
3
|
+
import { ConnectorRegistry } from './connector.registry';
|
|
4
|
+
import { ConnectorDispatchService } from './connector-dispatch.service';
|
|
5
|
+
import { CryptoService } from '../common/crypto.service';
|
|
6
|
+
export declare class ConnectorController {
|
|
7
|
+
private readonly connectorRepo;
|
|
8
|
+
private readonly connectorRegistry;
|
|
9
|
+
private readonly dispatchService;
|
|
10
|
+
private readonly cryptoService;
|
|
11
|
+
private readonly logger;
|
|
12
|
+
constructor(connectorRepo: ConnectorRepository, connectorRegistry: ConnectorRegistry, dispatchService: ConnectorDispatchService, cryptoService: CryptoService);
|
|
13
|
+
handleWebhook(platform: string, instanceId: string, req: Request): Promise<{
|
|
14
|
+
ok: boolean;
|
|
15
|
+
}>;
|
|
16
|
+
private verifySignature;
|
|
17
|
+
/** Timing-safe string comparison that handles length mismatches without throwing. */
|
|
18
|
+
private safeCompare;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=connector.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.controller.d.ts","sourceRoot":"","sources":["../../src/connectors/connector.controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,qBACa,mBAAmB;IAI5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa;IANhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;gBAG5C,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,wBAAwB,EACzC,aAAa,EAAE,aAAa;IAIzC,aAAa,CACE,QAAQ,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAChC,GAAG,EAAE,OAAO,GAClB,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;IA4C3B,OAAO,CAAC,eAAe;IAqCvB,qFAAqF;IACrF,OAAO,CAAC,WAAW;CAMpB"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
45
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
46
|
+
};
|
|
47
|
+
var ConnectorController_1;
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
exports.ConnectorController = void 0;
|
|
50
|
+
const common_1 = require("@nestjs/common");
|
|
51
|
+
const connector_repository_1 = require("../database/repositories/connector.repository");
|
|
52
|
+
const connector_registry_1 = require("./connector.registry");
|
|
53
|
+
const connector_dispatch_service_1 = require("./connector-dispatch.service");
|
|
54
|
+
const crypto_service_1 = require("../common/crypto.service");
|
|
55
|
+
const crypto = __importStar(require("node:crypto"));
|
|
56
|
+
let ConnectorController = ConnectorController_1 = class ConnectorController {
|
|
57
|
+
constructor(connectorRepo, connectorRegistry, dispatchService, cryptoService) {
|
|
58
|
+
this.connectorRepo = connectorRepo;
|
|
59
|
+
this.connectorRegistry = connectorRegistry;
|
|
60
|
+
this.dispatchService = dispatchService;
|
|
61
|
+
this.cryptoService = cryptoService;
|
|
62
|
+
this.logger = new common_1.Logger(ConnectorController_1.name);
|
|
63
|
+
}
|
|
64
|
+
async handleWebhook(platform, instanceId, req) {
|
|
65
|
+
const id = parseInt(instanceId, 10);
|
|
66
|
+
if (isNaN(id)) {
|
|
67
|
+
throw new common_1.BadRequestException('Invalid connector instance ID');
|
|
68
|
+
}
|
|
69
|
+
const instance = this.connectorRepo.findInstanceById(id);
|
|
70
|
+
if (!instance || instance.platform !== platform) {
|
|
71
|
+
throw new common_1.NotFoundException(`Connector instance #${id} not found for platform '${platform}'`);
|
|
72
|
+
}
|
|
73
|
+
if (instance.status !== 'active') {
|
|
74
|
+
throw new common_1.ForbiddenException(`Connector instance #${id} is disabled`);
|
|
75
|
+
}
|
|
76
|
+
// Verify webhook signature if configured
|
|
77
|
+
if (instance.webhookSecret) {
|
|
78
|
+
const secret = this.cryptoService.decryptAes(instance.webhookSecret);
|
|
79
|
+
if (!this.verifySignature(req, secret, platform)) {
|
|
80
|
+
this.logger.warn({ id, platform }, 'Webhook signature verification failed');
|
|
81
|
+
throw new common_1.ForbiddenException('Webhook signature verification failed');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const connector = this.connectorRegistry.get(platform);
|
|
85
|
+
if (!connector) {
|
|
86
|
+
throw new common_1.NotFoundException(`No connector registered for platform '${platform}'`);
|
|
87
|
+
}
|
|
88
|
+
const webhookReq = {
|
|
89
|
+
body: req.body,
|
|
90
|
+
headers: req.headers,
|
|
91
|
+
};
|
|
92
|
+
// Process synchronously so failures surface as 5xx to the external
|
|
93
|
+
// system, allowing it to retry. Without this, dispatch failures
|
|
94
|
+
// (DB errors, project validation) are silently swallowed behind 200.
|
|
95
|
+
const result = await connector.handleWebhook(webhookReq, instance);
|
|
96
|
+
if (result) {
|
|
97
|
+
await this.dispatchService.dispatchFromConnector(result, instance);
|
|
98
|
+
}
|
|
99
|
+
return { ok: true };
|
|
100
|
+
}
|
|
101
|
+
verifySignature(req, secret, platform) {
|
|
102
|
+
try {
|
|
103
|
+
if (platform === 'jira') {
|
|
104
|
+
// Jira uses HMAC-SHA256 in x-hub-signature header
|
|
105
|
+
const signature = req.headers['x-hub-signature'];
|
|
106
|
+
if (!signature)
|
|
107
|
+
return false;
|
|
108
|
+
const rawBody = req.rawBody;
|
|
109
|
+
if (!rawBody)
|
|
110
|
+
return false;
|
|
111
|
+
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
|
|
112
|
+
return this.safeCompare(signature, expected);
|
|
113
|
+
}
|
|
114
|
+
if (platform === 'sentry') {
|
|
115
|
+
// Sentry uses HMAC-SHA256 in sentry-hook-signature header
|
|
116
|
+
const signature = req.headers['sentry-hook-signature'];
|
|
117
|
+
if (!signature)
|
|
118
|
+
return false;
|
|
119
|
+
const rawBody = req.rawBody;
|
|
120
|
+
if (!rawBody)
|
|
121
|
+
return false;
|
|
122
|
+
const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
|
|
123
|
+
return this.safeCompare(signature, expected);
|
|
124
|
+
}
|
|
125
|
+
if (platform === 'figma') {
|
|
126
|
+
// Figma uses a passcode field in the webhook payload body
|
|
127
|
+
const payload = req.body;
|
|
128
|
+
const passcode = payload.passcode;
|
|
129
|
+
if (!passcode)
|
|
130
|
+
return false;
|
|
131
|
+
return this.safeCompare(passcode, secret);
|
|
132
|
+
}
|
|
133
|
+
this.logger.warn({ platform }, 'No signature verification method for platform');
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/** Timing-safe string comparison that handles length mismatches without throwing. */
|
|
141
|
+
safeCompare(a, b) {
|
|
142
|
+
const bufA = Buffer.from(a);
|
|
143
|
+
const bufB = Buffer.from(b);
|
|
144
|
+
if (bufA.length !== bufB.length)
|
|
145
|
+
return false;
|
|
146
|
+
return crypto.timingSafeEqual(bufA, bufB);
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
exports.ConnectorController = ConnectorController;
|
|
150
|
+
__decorate([
|
|
151
|
+
(0, common_1.Post)(':platform/:instanceId'),
|
|
152
|
+
__param(0, (0, common_1.Param)('platform')),
|
|
153
|
+
__param(1, (0, common_1.Param)('instanceId')),
|
|
154
|
+
__param(2, (0, common_1.Req)()),
|
|
155
|
+
__metadata("design:type", Function),
|
|
156
|
+
__metadata("design:paramtypes", [String, String, Object]),
|
|
157
|
+
__metadata("design:returntype", Promise)
|
|
158
|
+
], ConnectorController.prototype, "handleWebhook", null);
|
|
159
|
+
exports.ConnectorController = ConnectorController = ConnectorController_1 = __decorate([
|
|
160
|
+
(0, common_1.Controller)('webhook/connector'),
|
|
161
|
+
__metadata("design:paramtypes", [connector_repository_1.ConnectorRepository,
|
|
162
|
+
connector_registry_1.ConnectorRegistry,
|
|
163
|
+
connector_dispatch_service_1.ConnectorDispatchService,
|
|
164
|
+
crypto_service_1.CryptoService])
|
|
165
|
+
], ConnectorController);
|
|
166
|
+
//# sourceMappingURL=connector.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.controller.js","sourceRoot":"","sources":["../../src/connectors/connector.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { ConnectorPlatform } from '@overlordai/protocol';
|
|
2
|
+
import type { ConnectorInstanceRow } from '../database/repositories/connector.repository';
|
|
3
|
+
/** Context fetched from an external issue/alert. */
|
|
4
|
+
export interface ExternalContext {
|
|
5
|
+
title: string;
|
|
6
|
+
description: string;
|
|
7
|
+
labels?: string[];
|
|
8
|
+
priority?: string;
|
|
9
|
+
status?: string;
|
|
10
|
+
url?: string;
|
|
11
|
+
/** Platform-specific extra data (e.g. stacktrace for Sentry). */
|
|
12
|
+
extra?: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
/** Reference to an external issue. */
|
|
15
|
+
export interface ExternalIssueRef {
|
|
16
|
+
platform: ConnectorPlatform;
|
|
17
|
+
/** Stable identifier used for follow-up API calls. */
|
|
18
|
+
issueId: string;
|
|
19
|
+
/** Optional human-friendly identifier shown in prompts and UI text. */
|
|
20
|
+
displayIssueId?: string;
|
|
21
|
+
issueUrl: string;
|
|
22
|
+
projectKey?: string;
|
|
23
|
+
}
|
|
24
|
+
/** Result of processing an inbound webhook. */
|
|
25
|
+
export interface ConnectorWebhookResult {
|
|
26
|
+
action: 'create_task' | 'ignore';
|
|
27
|
+
/** Event-specific identifier for deduplication (e.g. Jira comment ID, Sentry event ID). */
|
|
28
|
+
eventId?: string;
|
|
29
|
+
issueRef?: ExternalIssueRef;
|
|
30
|
+
context?: ExternalContext;
|
|
31
|
+
projectKey?: string;
|
|
32
|
+
developerId?: number;
|
|
33
|
+
description?: string;
|
|
34
|
+
}
|
|
35
|
+
/** Incoming request shape for webhook handling. */
|
|
36
|
+
export interface ConnectorWebhookRequest {
|
|
37
|
+
body: unknown;
|
|
38
|
+
headers: Record<string, string | string[] | undefined>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* IConnector — interface for external system integrations (Jira, Sentry, Linear, etc.).
|
|
42
|
+
*
|
|
43
|
+
* Unlike IMessageAdapter (chat platforms), connectors deal with issues, alerts,
|
|
44
|
+
* and status transitions rather than messages and chats.
|
|
45
|
+
*/
|
|
46
|
+
export interface IConnector {
|
|
47
|
+
readonly platform: ConnectorPlatform;
|
|
48
|
+
/** Parse an inbound webhook. Returns null to ignore the event. */
|
|
49
|
+
handleWebhook(req: ConnectorWebhookRequest, instance: ConnectorInstanceRow): Promise<ConnectorWebhookResult | null>;
|
|
50
|
+
/** Fetch full context for an external issue/alert by ID. */
|
|
51
|
+
fetchContext(instance: ConnectorInstanceRow, externalId: string): Promise<ExternalContext>;
|
|
52
|
+
/** Add a comment on an external issue. */
|
|
53
|
+
addComment(instance: ConnectorInstanceRow, externalId: string, comment: string): Promise<void>;
|
|
54
|
+
/** Transition the issue/alert status (e.g. resolve, close). */
|
|
55
|
+
transitionStatus(instance: ConnectorInstanceRow, externalId: string, targetStatus: string): Promise<void>;
|
|
56
|
+
/** Associate an MR URL with an external issue. */
|
|
57
|
+
linkMR(instance: ConnectorInstanceRow, externalId: string, mrUrl: string): Promise<void>;
|
|
58
|
+
/** Validate that the provided credentials are correct. */
|
|
59
|
+
validateCredentials(credentials: Record<string, string>, baseUrl?: string): Promise<boolean>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=connector.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.interface.d.ts","sourceRoot":"","sources":["../../src/connectors/connector.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAE1F,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+CAA+C;AAC/C,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAAC;IACjC,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,mDAAmD;AACnD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACxD;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IAErC,kEAAkE;IAClE,aAAa,CAAC,GAAG,EAAE,uBAAuB,EAAE,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IAEpH,4DAA4D;IAC5D,YAAY,CAAC,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAE3F,0CAA0C;IAC1C,UAAU,CAAC,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/F,+DAA+D;IAC/D,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1G,kDAAkD;IAClD,MAAM,CAAC,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzF,0DAA0D;IAC1D,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.interface.js","sourceRoot":"","sources":["../../src/connectors/connector.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.module.d.ts","sourceRoot":"","sources":["../../src/connectors/connector.module.ts"],"names":[],"mappings":"AAcA,qBAsBa,eAAe;CAAG"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ConnectorModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const dispatcher_module_1 = require("../dispatcher/dispatcher.module");
|
|
12
|
+
const crypto_service_1 = require("../common/crypto.service");
|
|
13
|
+
const connector_registry_1 = require("./connector.registry");
|
|
14
|
+
const connector_controller_1 = require("./connector.controller");
|
|
15
|
+
const connector_dispatch_service_1 = require("./connector-dispatch.service");
|
|
16
|
+
const connector_closure_service_1 = require("./connector-closure.service");
|
|
17
|
+
const issue_ref_resolver_service_1 = require("./issue-ref-resolver.service");
|
|
18
|
+
const design_context_service_1 = require("./design-context.service");
|
|
19
|
+
const design_review_trigger_service_1 = require("./design-review-trigger.service");
|
|
20
|
+
const jira_connector_1 = require("./jira/jira.connector");
|
|
21
|
+
const sentry_connector_1 = require("./sentry/sentry.connector");
|
|
22
|
+
const figma_connector_1 = require("./figma/figma.connector");
|
|
23
|
+
let ConnectorModule = class ConnectorModule {
|
|
24
|
+
};
|
|
25
|
+
exports.ConnectorModule = ConnectorModule;
|
|
26
|
+
exports.ConnectorModule = ConnectorModule = __decorate([
|
|
27
|
+
(0, common_1.Module)({
|
|
28
|
+
imports: [(0, common_1.forwardRef)(() => dispatcher_module_1.DispatcherModule)],
|
|
29
|
+
controllers: [connector_controller_1.ConnectorController],
|
|
30
|
+
providers: [
|
|
31
|
+
crypto_service_1.CryptoService,
|
|
32
|
+
jira_connector_1.JiraConnector,
|
|
33
|
+
sentry_connector_1.SentryConnector,
|
|
34
|
+
figma_connector_1.FigmaConnector,
|
|
35
|
+
{
|
|
36
|
+
provide: connector_registry_1.CONNECTORS,
|
|
37
|
+
useFactory: (jira, sentry, figma) => [jira, sentry, figma],
|
|
38
|
+
inject: [jira_connector_1.JiraConnector, sentry_connector_1.SentryConnector, figma_connector_1.FigmaConnector],
|
|
39
|
+
},
|
|
40
|
+
connector_registry_1.ConnectorRegistry,
|
|
41
|
+
connector_dispatch_service_1.ConnectorDispatchService,
|
|
42
|
+
connector_closure_service_1.ConnectorClosureService,
|
|
43
|
+
issue_ref_resolver_service_1.IssueRefResolverService,
|
|
44
|
+
design_context_service_1.DesignContextService,
|
|
45
|
+
design_review_trigger_service_1.DesignReviewTriggerService,
|
|
46
|
+
],
|
|
47
|
+
exports: [connector_registry_1.ConnectorRegistry, connector_dispatch_service_1.ConnectorDispatchService, issue_ref_resolver_service_1.IssueRefResolverService, design_context_service_1.DesignContextService],
|
|
48
|
+
})
|
|
49
|
+
], ConnectorModule);
|
|
50
|
+
//# sourceMappingURL=connector.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.module.js","sourceRoot":"","sources":["../../src/connectors/connector.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,uEAAmE;AACnE,6DAAyD;AACzD,6DAAqE;AACrE,iEAA6D;AAC7D,6EAAwE;AACxE,2EAAsE;AACtE,6EAAuE;AACvE,qEAAgE;AAChE,mFAA6E;AAC7E,0DAAsD;AACtD,gEAA4D;AAC5D,6DAAyD;AAwBlD,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IAtB3B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,oCAAgB,CAAC,CAAC;QAC7C,WAAW,EAAE,CAAC,0CAAmB,CAAC;QAClC,SAAS,EAAE;YACT,8BAAa;YACb,8BAAa;YACb,kCAAe;YACf,gCAAc;YACd;gBACE,OAAO,EAAE,+BAAU;gBACnB,UAAU,EAAE,CAAC,IAAmB,EAAE,MAAuB,EAAE,KAAqB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;gBAC1G,MAAM,EAAE,CAAC,8BAAa,EAAE,kCAAe,EAAE,gCAAc,CAAC;aACzD;YACD,sCAAiB;YACjB,qDAAwB;YACxB,mDAAuB;YACvB,oDAAuB;YACvB,6CAAoB;YACpB,0DAA0B;SAC3B;QACD,OAAO,EAAE,CAAC,sCAAiB,EAAE,qDAAwB,EAAE,oDAAuB,EAAE,6CAAoB,CAAC;KACtG,CAAC;GACW,eAAe,CAAG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import type { ConnectorPlatform } from '@overlordai/protocol';
|
|
3
|
+
import type { IConnector } from './connector.interface';
|
|
4
|
+
export declare const CONNECTORS: unique symbol;
|
|
5
|
+
export declare class ConnectorRegistry implements OnModuleInit {
|
|
6
|
+
private readonly registered;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
private readonly connectors;
|
|
9
|
+
constructor(registered?: IConnector[]);
|
|
10
|
+
onModuleInit(): void;
|
|
11
|
+
get(platform: ConnectorPlatform | string): IConnector | undefined;
|
|
12
|
+
getAll(): IConnector[];
|
|
13
|
+
platforms(): string[];
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=connector.registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.registry.d.ts","sourceRoot":"","sources":["../../src/connectors/connector.registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,eAAO,MAAM,UAAU,eAAuB,CAAC;AAE/C,qBACa,iBAAkB,YAAW,YAAY;IAKlB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;gBAGT,UAAU,GAAE,UAAU,EAAO;IAGhF,YAAY,IAAI,IAAI;IAOpB,GAAG,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjE,MAAM,IAAI,UAAU,EAAE;IAItB,SAAS,IAAI,MAAM,EAAE;CAGtB"}
|