@overlordai/server 1.0.180 → 1.0.182
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/022-binding-multi-external-key.sql +31 -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 -2
- package/dist/adapters/nlu.service.js.map +1 -1
- package/dist/connectors/connector-closure.service.js +1 -1
- package/dist/connectors/connector-closure.service.js.map +1 -1
- package/dist/connectors/figma/figma.connector.js +1 -1
- package/dist/connectors/figma/figma.connector.js.map +1 -1
- package/dist/connectors/issue-ref-helpers.d.ts +13 -1
- package/dist/connectors/issue-ref-helpers.d.ts.map +1 -1
- package/dist/connectors/issue-ref-helpers.js +22 -1
- package/dist/connectors/issue-ref-helpers.js.map +1 -1
- package/dist/connectors/jira/jira.connector.js +1 -1
- package/dist/connectors/jira/jira.connector.js.map +1 -1
- package/dist/database/repositories/connector.repository.d.ts +7 -1
- package/dist/database/repositories/connector.repository.d.ts.map +1 -1
- package/dist/database/repositories/connector.repository.js +36 -3
- package/dist/database/repositories/connector.repository.js.map +1 -1
- package/dist/dispatcher/dispatcher.service.d.ts +5 -1
- package/dist/dispatcher/dispatcher.service.d.ts.map +1 -1
- package/dist/dispatcher/dispatcher.service.js +52 -9
- package/dist/dispatcher/dispatcher.service.js.map +1 -1
- package/dist/web/admin/admin-connector.controller.d.ts.map +1 -1
- package/dist/web/admin/admin-connector.controller.js +38 -7
- package/dist/web/admin/admin-connector.controller.js.map +1 -1
- package/dist/web/task.controller.d.ts +3 -1
- package/dist/web/task.controller.d.ts.map +1 -1
- package/dist/web/task.controller.js +9 -3
- package/dist/web/task.controller.js.map +1 -1
- package/package.json +4 -4
- package/public/assets/{AccessTokensPage-DSRaXrXC.js → AccessTokensPage-Cg4UZvt6.js} +1 -1
- package/public/assets/{AdminPage-quo_nZu0.js → AdminPage-WEmuQlD5.js} +1 -1
- package/public/assets/{AgentCliPage-B_cQKyB7.js → AgentCliPage-CDU4Ftl3.js} +1 -1
- package/public/assets/{ApiReferencePage-CkzYCBis.js → ApiReferencePage-Zx_0FwKi.js} +1 -1
- package/public/assets/{ArchitecturePage-B0j0c21l.js → ArchitecturePage-HaHz0DzU.js} +1 -1
- package/public/assets/{AuditLogPage-DdW6Rjbw.js → AuditLogPage-D596Dy27.js} +1 -1
- package/public/assets/{AutomationCreatePage-DglF_EDi.js → AutomationCreatePage-D_kzW67V.js} +1 -1
- package/public/assets/{AutomationDetailPage-C3aTSg-j.js → AutomationDetailPage-DJOsI2SU.js} +1 -1
- package/public/assets/{AutomationEditPage-CcC-aVlt.js → AutomationEditPage-DE_ZnBps.js} +1 -1
- package/public/assets/{AutomationListPage-DR_CE70e.js → AutomationListPage-CA8kwO4F.js} +1 -1
- package/public/assets/{AutomationRunDetailPage-CZ4pxP1x.js → AutomationRunDetailPage-DlOBmkCy.js} +1 -1
- package/public/assets/{BindPlatformPage-Bn9R5es1.js → BindPlatformPage-BxwKge0g.js} +1 -1
- package/public/assets/{BotIntegrationPage-BF9ii7I9.js → BotIntegrationPage-I_1xpjJg.js} +1 -1
- package/public/assets/{BotManage-CVBala6Z.js → BotManage-CnBZbyTy.js} +1 -1
- package/public/assets/{BotSetupPage-B2w5uyZ-.js → BotSetupPage-BjpJJmFA.js} +1 -1
- package/public/assets/{ChangelogPage-CQ09e6Bp.js → ChangelogPage-D9HZN2SW.js} +1 -1
- package/public/assets/{Checkbox-ksCSqTDb.js → Checkbox-BxkP1Gjq.js} +1 -1
- package/public/assets/{CliReferencePage-CXSJI2NI.js → CliReferencePage-Du1rebvQ.js} +1 -1
- package/public/assets/{ConfirmStageDialog-pT-iA956.js → ConfirmStageDialog-BMIvrUBw.js} +1 -1
- package/public/assets/ConnectorsManage-BEqB7l9N.js +6 -0
- package/public/assets/ConnectorsPage-DacjHOXY.js +48 -0
- package/public/assets/{DeploymentPage-CUZ5KK3d.js → DeploymentPage-DI3l9eUC.js} +1 -1
- package/public/assets/{DevWorkflowPage-j3fyS7Y_.js → DevWorkflowPage-Cu6OqZOT.js} +1 -1
- package/public/assets/{DeveloperManage-BKyKIipO.js → DeveloperManage-DyaMmGZn.js} +1 -1
- package/public/assets/{DeveloperSetupPage-BZoCYXpK.js → DeveloperSetupPage-DeUTuoLy.js} +1 -1
- package/public/assets/{DocsIndexPage-BvqoOdfl.js → DocsIndexPage-3K82AgOj.js} +1 -1
- package/public/assets/{DocsLayout-C59ONhjV.js → DocsLayout-Ca__iW0l.js} +1 -1
- package/public/assets/{DocsPrimitives-CipzCTEu.js → DocsPrimitives-Cb0bFqS4.js} +1 -1
- package/public/assets/{EditProjectPage-Bi5rAJ13.js → EditProjectPage-BI69_Ll1.js} +1 -1
- package/public/assets/{EmptyState-DV7LUJer.js → EmptyState-CQdwHvir.js} +1 -1
- package/public/assets/{EnvVariablesPage-jcd0s6Kk.js → EnvVariablesPage-BSPpBXea.js} +1 -1
- package/public/assets/{HomePage-CG2VZtpZ.js → HomePage-D1VFSy44.js} +1 -1
- package/public/assets/{InfoRow-DtLvNV_J.js → InfoRow-Cxb_amM2.js} +1 -1
- package/public/assets/{InstallationPage-BCxuKwTs.js → InstallationPage-BzVofEfV.js} +1 -1
- package/public/assets/{LandingPage-CnUihNQl.js → LandingPage-BuNafrf-.js} +1 -1
- package/public/assets/{LocalDevelopmentPage-BvDGaeS9.js → LocalDevelopmentPage-BRCJB6HO.js} +1 -1
- package/public/assets/{LoginPage-CnO_s0hQ.js → LoginPage-Cl07RCja.js} +1 -1
- package/public/assets/{MetricBar-DnOi5rBL.js → MetricBar-CjW63zYD.js} +1 -1
- package/public/assets/{MultiSelect-B-bLdzr4.js → MultiSelect-DROGpjsm.js} +1 -1
- package/public/assets/{NotFoundPage-H5psGKE8.js → NotFoundPage-BJf2Uab2.js} +1 -1
- package/public/assets/{OnboardingGuide-Cj05MAli.js → OnboardingGuide-BnKKSnS1.js} +1 -1
- package/public/assets/{PermissionsPage-CDjMHQvq.js → PermissionsPage-Dx9RkkUX.js} +1 -1
- package/public/assets/{PipelineConfigPage-D_TTvIoA.js → PipelineConfigPage-40A097KU.js} +1 -1
- package/public/assets/{PipelineEditorPage-xKDOKA_r.js → PipelineEditorPage-DtpM7kpt.js} +1 -1
- package/public/assets/{PlanPage-pjNFq5I8.js → PlanPage-CqXJcshX.js} +1 -1
- package/public/assets/{ProfilePage-CS9IfoHU.js → ProfilePage-Dw6HJgNY.js} +1 -1
- package/public/assets/{ProjectDetailPage-BFQsH4bl.js → ProjectDetailPage-C2YidhiQ.js} +1 -1
- package/public/assets/{ProjectListPage-DzCFTq0z.js → ProjectListPage-BIUm262r.js} +1 -1
- package/public/assets/{PtyTerminal-DWRVuu-D.js → PtyTerminal-CF_f3F2O.js} +1 -1
- package/public/assets/{QuickAuth-DmFeLmAr.js → QuickAuth-CInUBTJq.js} +1 -1
- package/public/assets/{RemoveMemberConfirmDialog-CHU9g7rJ.js → RemoveMemberConfirmDialog-bPlNk3Ul.js} +1 -1
- package/public/assets/{ReviewAggregatePage-Bf7aL-gD.js → ReviewAggregatePage-uoqFR0P6.js} +1 -1
- package/public/assets/{ReviewPage-DV9HrPzi.js → ReviewPage-CKOD8Lmo.js} +1 -1
- package/public/assets/{Select-xdty1j0i.js → Select-BPJ3ZDvV.js} +1 -1
- package/public/assets/{SettingsPage-DAIr4JkV.js → SettingsPage-CC_9-SO6.js} +1 -1
- package/public/assets/{Skeleton-CmBnyd29.js → Skeleton-BISjosgc.js} +1 -1
- package/public/assets/{SkillPage-Cj3pNfKV.js → SkillPage-QliDzJrF.js} +1 -1
- package/public/assets/{TaskDetailPage-CLwDpv_i.js → TaskDetailPage-Ebbqq53i.js} +1 -1
- package/public/assets/{TaskGuidePage-nIfi5sYx.js → TaskGuidePage-zXuveA2S.js} +1 -1
- package/public/assets/{TaskListPage-BUcEF_A8.js → TaskListPage-DSVvg2Gd.js} +1 -1
- package/public/assets/{TaskStatusBadge-4rifJwVC.js → TaskStatusBadge-DaCp1QSL.js} +1 -1
- package/public/assets/{TerminalHomePage-BfTnmFzn.js → TerminalHomePage-BMH2Kq5s.js} +1 -1
- package/public/assets/{TokenManage-DUxh8mAN.js → TokenManage-COvgXxQZ.js} +1 -1
- package/public/assets/{Tooltip-CAj06OH3.js → Tooltip-D0KYtVLc.js} +1 -1
- package/public/assets/{TotpSetupPage-DGSu7E4H.js → TotpSetupPage-DN2EqH0H.js} +1 -1
- package/public/assets/{WorkerDetailPage-BMQxaS56.js → WorkerDetailPage-MMwSCh90.js} +1 -1
- package/public/assets/{WorkerListPage-Dblt6aZ1.js → WorkerListPage-CzRNl8Ij.js} +1 -1
- package/public/assets/{WorkerOperationsPage-CzxRiINJ.js → WorkerOperationsPage-CWVrxo01.js} +1 -1
- package/public/assets/{WorkerSetupGuidePage-WaRQgvcM.js → WorkerSetupGuidePage-BK0ymQAo.js} +1 -1
- package/public/assets/{WorkerSetupPage-B5xXzfZ8.js → WorkerSetupPage-DgtGU9sI.js} +1 -1
- package/public/assets/{agent-type-options-BgAoGQFU.js → agent-type-options-CWWVWoQD.js} +1 -1
- package/public/assets/{arrow-left-Dsd8akiF.js → arrow-left-yYFq1rpy.js} +1 -1
- package/public/assets/{arrow-right-BwFsEszb.js → arrow-right-DBU60L86.js} +1 -1
- package/public/assets/{bot-C7wSfjw1.js → bot-CH59AGIm.js} +1 -1
- package/public/assets/{chevron-down-SeRjAX4r.js → chevron-down-CahIJuU0.js} +1 -1
- package/public/assets/{chevron-left-BvZWPLc1.js → chevron-left-Df7VRwKj.js} +1 -1
- package/public/assets/{chevron-right-Dirw-Ueo.js → chevron-right-BcUWHunU.js} +1 -1
- package/public/assets/{chevron-up-D_UYsCj8.js → chevron-up-B6YCe5Eb.js} +1 -1
- package/public/assets/{circle-alert-WAD2ix0l.js → circle-alert-we2u3Qak.js} +1 -1
- package/public/assets/{clock-oJUEgAKB.js → clock-CINPmcEt.js} +1 -1
- package/public/assets/{copy-BWTAfZ7b.js → copy-BKGKCl-b.js} +1 -1
- package/public/assets/{developer-options-Czaxdx-w.js → developer-options-CAniK8j5.js} +1 -1
- package/public/assets/{download-l-ATQbZQ.js → download-BAZlnFIU.js} +1 -1
- package/public/assets/{external-link-BesNRyvW.js → external-link-wdiS2p0x.js} +1 -1
- package/public/assets/{git-fork-_pBPs-xc.js → git-fork-vPhJNNA4.js} +1 -1
- package/public/assets/{index-0QFy9ku9.js → index-CGOSTEkg.js} +3 -3
- package/public/assets/{key-BilH6uAl.js → key--eP2nhet.js} +1 -1
- package/public/assets/{link-2-ELPNTQde.js → link-2-DAE9NRwS.js} +1 -1
- package/public/assets/{loader-circle-OCqj772N.js → loader-circle-CJrXxsMg.js} +1 -1
- package/public/assets/{pencil-QmINK6St.js → pencil-xLCIM4Nr.js} +1 -1
- package/public/assets/{play-CUByBpQ0.js → play-B_CP_ayc.js} +1 -1
- package/public/assets/{plug-CvdRvl-j.js → plug-BUqudJ6e.js} +1 -1
- package/public/assets/{plus-D38pnIMa.js → plus-BdEGIDcc.js} +1 -1
- package/public/assets/{power-CzLnYo_h.js → power-B8pvv5cv.js} +1 -1
- package/public/assets/{rotate-ccw-BsCb3qU2.js → rotate-ccw-SkDSUpbe.js} +1 -1
- package/public/assets/{scroll-text-CF1Ze80E.js → scroll-text-Cw8Zkn8p.js} +1 -1
- package/public/assets/{settings-CqcmKnX4.js → settings-CgdTYy9N.js} +1 -1
- package/public/assets/{skip-forward-DcSN0O55.js → skip-forward-GdSukGV-.js} +1 -1
- package/public/assets/{status-colors-DlyerwQ7.js → status-colors-CO1LBoH8.js} +1 -1
- package/public/assets/{task-agent-Cgyq_UGX.js → task-agent-BpDng5ru.js} +1 -1
- package/public/assets/{task-constants-D5ty4qUR.js → task-constants-BfV2gi5F.js} +1 -1
- package/public/assets/{task.store-D_nwogGq.js → task.store-Hs41Urqw.js} +1 -1
- package/public/assets/{timer-EysIetGz.js → timer-Df6Eo29o.js} +1 -1
- package/public/assets/{trash-2-CYdvAzYO.js → trash-2-ztNSTG0l.js} +1 -1
- package/public/assets/{useFetch-BqnEzaSJ.js → useFetch-DVEgC9J0.js} +1 -1
- package/public/assets/{users-dmt7eU5B.js → users-rjy_P4uf.js} +1 -1
- package/public/assets/{wifi-Bore97VF.js → wifi-BJbk4MoV.js} +1 -1
- package/public/assets/{workflow-DLz7dyVN.js → workflow-CSZUMobs.js} +1 -1
- package/public/assets/{zap-DhNn8k7Z.js → zap-DksqFp8G.js} +1 -1
- package/public/index.html +1 -1
- package/public/sw.js +1 -1
- package/public/assets/ConnectorsManage-Dfl92aJZ.js +0 -6
- package/public/assets/ConnectorsPage-B65QSW6u.js +0 -48
|
@@ -1 +1 @@
|
|
|
1
|
-
import{W as r,o as e,V as s,ac as u,a9 as a}from"./index-
|
|
1
|
+
import{W as r,o as e,V as s,ac as u,a9 as a}from"./index-CGOSTEkg.js";const n={[e.QUEUED]:"var(--text-muted)",[e.ASSIGNED]:"#60a5fa",[e.RUNNING]:"var(--accent)",[e.SUSPENDED]:"var(--warning)",[e.COMPLETED]:"var(--info)",[e.FAILED]:"var(--destructive)",[e.CANCELLED]:"var(--text-muted)"};function v(t){return n[t]??"var(--text-muted)"}const o={[r.ONLINE]:"var(--accent)",[r.OFFLINE]:"var(--destructive)",[r.DRAINING]:"var(--warning)",[r.DECOMMISSIONED]:"var(--text-muted)"};function E(t){return o[t]??"var(--text-muted)"}function x(t){switch(t){case s.ACTIVE:return"text-green-400";case s.DISABLED:return"text-red-400";default:return"text-[var(--text-muted)]"}}function S(t){switch(t){case a.ACTIVE:return"text-green-400";case a.USED:return"text-blue-400";case a.REVOKED:return"text-red-400";case a.EXPIRED:return"text-[var(--text-muted)]";default:return"text-[var(--text-muted)]"}}function d(t){switch(t){case u.ACTIVE:return"text-green-400";case"error":return"text-red-400";default:return"text-[var(--text-muted)]"}}function i(t){return t>.8?"var(--destructive)":t>.6?"var(--warning)":"var(--accent)"}export{v as a,i as b,x as c,d,S as e,E as g,n as t,o as w};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as a,Q as t}from"./index-
|
|
1
|
+
import{o as a,Q as t}from"./index-CGOSTEkg.js";import{b as l}from"./agent-type-options-CWWVWoQD.js";const r=[a.COMPLETED,a.FAILED,a.CANCELLED],E=[{value:"feat",label:"feat"},{value:"fix",label:"fix"},{value:"refactor",label:"refactor"},{value:"docs",label:"docs"},{value:"chore",label:"chore"}],o=l(e=>e);[...o];function c(e){return(e??t.CLAUDE).toLowerCase()}export{r as T,E as a,c as g};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as i,h as c}from"./index-
|
|
1
|
+
import{n as i,h as c}from"./index-CGOSTEkg.js";const k=i((a,o)=>({tasks:[],currentTask:null,loading:!1,error:null,nextCursor:null,_fetchTasksAbort:null,_fetchTasksRequestId:0,fetchTasks:async s=>{const t=o()._fetchTasksAbort;t&&t.abort();const e=new AbortController,n=o()._fetchTasksRequestId+1;a({loading:!0,error:null,_fetchTasksAbort:e,_fetchTasksRequestId:n});try{const r={};s!=null&&s.status&&(r.status=s.status),s!=null&&s.projectKey&&(r.projectKey=s.projectKey),s!=null&&s.developerId&&(r.developerId=s.developerId),s!=null&&s.taskMode&&(r.taskMode=s.taskMode),s!=null&&s.cursor&&(r.cursor=s.cursor),s!=null&&s.limit&&(r.limit=String(s.limit));const l=await c.get("web/tasks",{searchParams:r,signal:e.signal}).json();if(o()._fetchTasksRequestId!==n)return;a({tasks:l.data,nextCursor:l.nextCursor??null,_fetchTasksAbort:null})}catch(r){if(r instanceof DOMException&&r.name==="AbortError")return;o()._fetchTasksRequestId===n&&a({error:r instanceof Error?r.message:"Failed to fetch tasks"})}finally{o()._fetchTasksRequestId===n&&a({loading:!1,_fetchTasksAbort:null})}},fetchTask:async s=>{a({loading:!0,error:null});try{const t=await c.get(`web/tasks/${s}`).json();a({currentTask:t})}catch(t){a({error:t instanceof Error?t.message:"Failed to fetch task"})}finally{a({loading:!1})}},createTask:async s=>{a({error:null});try{const t=await c.post("web/tasks",{json:s}).json();return a(e=>({tasks:[t,...e.tasks]})),t}catch(t){throw a({error:t instanceof Error?t.message:"Failed to create task"}),t}},cancelTask:async s=>{a({error:null});try{await c.post(`web/tasks/${s}/cancel`);const{currentTask:t}=o();(t==null?void 0:t.id)===s&&await o().fetchTask(s)}catch(t){throw a({error:t instanceof Error?t.message:"Failed to cancel task"}),t}},reset:()=>{a({tasks:[],currentTask:null,loading:!1,error:null,nextCursor:null,_fetchTasksAbort:null,_fetchTasksRequestId:0})}}));export{k as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./index-
|
|
1
|
+
import{r as e}from"./index-CGOSTEkg.js";function p(s,l){const[i,d]=e.useState(null),[R,a]=e.useState(!0),[m,o]=e.useState(null),f=e.useRef(s);f.current=s;const r=e.useRef(0),t=e.useRef(!0),u=e.useCallback(async()=>{const c=++r.current;a(!0),o(null);try{const n=await f.current();t.current&&c===r.current&&d(n)}catch(n){if(t.current&&c===r.current){const E=n instanceof Error?n.message:"An unexpected error occurred";o(E)}}finally{t.current&&c===r.current&&a(!1)}},l);return e.useEffect(()=>{u()},[u]),e.useEffect(()=>()=>{t.current=!1,r.current+=1},[]),{data:i,loading:R,error:m,refetch:u}}export{p as u};
|
package/public/index.html
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap"
|
|
29
29
|
rel="stylesheet"
|
|
30
30
|
/>
|
|
31
|
-
<script type="module" crossorigin src="/assets/index-
|
|
31
|
+
<script type="module" crossorigin src="/assets/index-CGOSTEkg.js"></script>
|
|
32
32
|
<link rel="stylesheet" crossorigin href="/assets/index-CTXH5Ib6.css">
|
|
33
33
|
<link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script></head>
|
|
34
34
|
<body>
|
package/public/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let s,e={};const l=(l,i)=>(l=new URL(l+".js",i).href,e[l]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()}).then(()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s}));self.define=(i,n)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let
|
|
1
|
+
if(!self.define){let s,e={};const l=(l,i)=>(l=new URL(l+".js",i).href,e[l]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()}).then(()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s}));self.define=(i,n)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let u={};const a=s=>l(s,r),o={module:{uri:r},exports:u,require:a};e[r]=Promise.all(i.map(s=>o[s]||a(s))).then(s=>(n(...s),u))}}define(["./workbox-6e9b121d"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"og-image.png",revision:"f1563b4bdc7d1a4ab0aef864b0c2294e"},{url:"index.html",revision:"9517d96b9943a1efedacdaad1a99d148"},{url:"icon-maskable-512x512.png",revision:"69ada030d99c4a087bc309c00d716654"},{url:"icon-maskable-192x192.png",revision:"bf88226fe789dcb35bf89a307d3ba1af"},{url:"icon-512x512.png",revision:"74e561c3eb152bbb9cdcb333b5f1f3be"},{url:"icon-192x192.png",revision:"0bc2b74efb274c01d9eb50f717f4b7cf"},{url:"favicon.svg",revision:"e91ea32c7308cc2267ae15a5974a27f8"},{url:"apple-touch-icon-180x180.png",revision:"34c1b155ebc55bee221777f86f4612d8"},{url:"apple-touch-icon-152x152.png",revision:"8cc7ef3bc3aa19c3d8a29a58646d0636"},{url:"apple-touch-icon-120x120.png",revision:"7057fb6fb60df3fcf3cd49883db13be9"},{url:"assets/zap-DksqFp8G.js",revision:null},{url:"assets/workflow-CSZUMobs.js",revision:null},{url:"assets/wifi-BJbk4MoV.js",revision:null},{url:"assets/users-rjy_P4uf.js",revision:null},{url:"assets/useFetch-DVEgC9J0.js",revision:null},{url:"assets/trash-2-ztNSTG0l.js",revision:null},{url:"assets/timer-Df6Eo29o.js",revision:null},{url:"assets/task.store-Hs41Urqw.js",revision:null},{url:"assets/task-constants-BfV2gi5F.js",revision:null},{url:"assets/task-agent-BpDng5ru.js",revision:null},{url:"assets/status-colors-CO1LBoH8.js",revision:null},{url:"assets/skip-forward-GdSukGV-.js",revision:null},{url:"assets/settings-CgdTYy9N.js",revision:null},{url:"assets/scroll-text-Cw8Zkn8p.js",revision:null},{url:"assets/rotate-ccw-SkDSUpbe.js",revision:null},{url:"assets/power-B8pvv5cv.js",revision:null},{url:"assets/plus-BdEGIDcc.js",revision:null},{url:"assets/plug-BUqudJ6e.js",revision:null},{url:"assets/play-B_CP_ayc.js",revision:null},{url:"assets/pencil-xLCIM4Nr.js",revision:null},{url:"assets/password-CHk45-jw.js",revision:null},{url:"assets/loader-circle-CJrXxsMg.js",revision:null},{url:"assets/link-2-DAE9NRwS.js",revision:null},{url:"assets/key--eP2nhet.js",revision:null},{url:"assets/index-CTXH5Ib6.css",revision:null},{url:"assets/index-CGOSTEkg.js",revision:null},{url:"assets/git-fork-vPhJNNA4.js",revision:null},{url:"assets/external-link-wdiS2p0x.js",revision:null},{url:"assets/download-BAZlnFIU.js",revision:null},{url:"assets/developer-options-CAniK8j5.js",revision:null},{url:"assets/date-CmcdoD87.js",revision:null},{url:"assets/copy-BKGKCl-b.js",revision:null},{url:"assets/clock-CINPmcEt.js",revision:null},{url:"assets/circle-alert-we2u3Qak.js",revision:null},{url:"assets/chevron-up-B6YCe5Eb.js",revision:null},{url:"assets/chevron-right-BcUWHunU.js",revision:null},{url:"assets/chevron-left-Df7VRwKj.js",revision:null},{url:"assets/chevron-down-CahIJuU0.js",revision:null},{url:"assets/bot-CH59AGIm.js",revision:null},{url:"assets/automationFindings-DfyQvLZV.js",revision:null},{url:"assets/arrow-right-DBU60L86.js",revision:null},{url:"assets/arrow-left-yYFq1rpy.js",revision:null},{url:"assets/agent-type-options-CWWVWoQD.js",revision:null},{url:"assets/WorkerSetupPage-DgtGU9sI.js",revision:null},{url:"assets/WorkerSetupGuidePage-BK0ymQAo.js",revision:null},{url:"assets/WorkerOperationsPage-CWVrxo01.js",revision:null},{url:"assets/WorkerListPage-CzRNl8Ij.js",revision:null},{url:"assets/WorkerDetailPage-MMwSCh90.js",revision:null},{url:"assets/TotpSetupPage-DN2EqH0H.js",revision:null},{url:"assets/Tooltip-D0KYtVLc.js",revision:null},{url:"assets/TokenManage-COvgXxQZ.js",revision:null},{url:"assets/TerminalHomePage-BMH2Kq5s.js",revision:null},{url:"assets/TaskStatusBadge-DaCp1QSL.js",revision:null},{url:"assets/TaskListPage-DSVvg2Gd.js",revision:null},{url:"assets/TaskGuidePage-zXuveA2S.js",revision:null},{url:"assets/TaskDetailPage-Ebbqq53i.js",revision:null},{url:"assets/SkillPage-QliDzJrF.js",revision:null},{url:"assets/Skeleton-BISjosgc.js",revision:null},{url:"assets/SettingsPage-CC_9-SO6.js",revision:null},{url:"assets/Select-BPJ3ZDvV.js",revision:null},{url:"assets/ReviewPage-CKOD8Lmo.js",revision:null},{url:"assets/ReviewAggregatePage-uoqFR0P6.js",revision:null},{url:"assets/RemoveMemberConfirmDialog-bPlNk3Ul.js",revision:null},{url:"assets/QuickAuth-CInUBTJq.js",revision:null},{url:"assets/PtyTerminal-CF_f3F2O.js",revision:null},{url:"assets/PtyTerminal-6GBZ9nXN.css",revision:null},{url:"assets/ProjectListPage-BIUm262r.js",revision:null},{url:"assets/ProjectDetailPage-C2YidhiQ.js",revision:null},{url:"assets/ProfilePage-Dw6HJgNY.js",revision:null},{url:"assets/PlanPage-CqXJcshX.js",revision:null},{url:"assets/PipelineEditorPage-DtpM7kpt.js",revision:null},{url:"assets/PipelineConfigPage-40A097KU.js",revision:null},{url:"assets/PermissionsPage-Dx9RkkUX.js",revision:null},{url:"assets/OnboardingGuide-BnKKSnS1.js",revision:null},{url:"assets/NotFoundPage-BJf2Uab2.js",revision:null},{url:"assets/MultiSelect-DROGpjsm.js",revision:null},{url:"assets/MetricBar-CjW63zYD.js",revision:null},{url:"assets/LoginPage-Cl07RCja.js",revision:null},{url:"assets/LocalDevelopmentPage-BRCJB6HO.js",revision:null},{url:"assets/LandingPage-BuNafrf-.js",revision:null},{url:"assets/InstallationPage-BzVofEfV.js",revision:null},{url:"assets/InfoRow-Cxb_amM2.js",revision:null},{url:"assets/HomePage-D1VFSy44.js",revision:null},{url:"assets/EnvVariablesPage-BSPpBXea.js",revision:null},{url:"assets/EmptyState-CQdwHvir.js",revision:null},{url:"assets/EditProjectPage-BI69_Ll1.js",revision:null},{url:"assets/DocsPrimitives-Cb0bFqS4.js",revision:null},{url:"assets/DocsLayout-Ca__iW0l.js",revision:null},{url:"assets/DocsIndexPage-3K82AgOj.js",revision:null},{url:"assets/DeveloperSetupPage-DeUTuoLy.js",revision:null},{url:"assets/DeveloperManage-DyaMmGZn.js",revision:null},{url:"assets/DevWorkflowPage-Cu6OqZOT.js",revision:null},{url:"assets/DeploymentPage-DI3l9eUC.js",revision:null},{url:"assets/ConnectorsPage-DacjHOXY.js",revision:null},{url:"assets/ConnectorsManage-BEqB7l9N.js",revision:null},{url:"assets/ConfirmStageDialog-BMIvrUBw.js",revision:null},{url:"assets/CliReferencePage-Du1rebvQ.js",revision:null},{url:"assets/Checkbox-BxkP1Gjq.js",revision:null},{url:"assets/ChangelogPage-D9HZN2SW.js",revision:null},{url:"assets/BotSetupPage-BjpJJmFA.js",revision:null},{url:"assets/BotManage-CnBZbyTy.js",revision:null},{url:"assets/BotIntegrationPage-I_1xpjJg.js",revision:null},{url:"assets/BindPlatformPage-BxwKge0g.js",revision:null},{url:"assets/AutomationRunDetailPage-DlOBmkCy.js",revision:null},{url:"assets/AutomationListPage-CA8kwO4F.js",revision:null},{url:"assets/AutomationEditPage-DE_ZnBps.js",revision:null},{url:"assets/AutomationDetailPage-DJOsI2SU.js",revision:null},{url:"assets/AutomationCreatePage-D_kzW67V.js",revision:null},{url:"assets/AuditLogPage-D596Dy27.js",revision:null},{url:"assets/ArchitecturePage-HaHz0DzU.js",revision:null},{url:"assets/ApiReferencePage-Zx_0FwKi.js",revision:null},{url:"assets/AgentCliPage-CDU4Ftl3.js",revision:null},{url:"assets/AdminPage-WEmuQlD5.js",revision:null},{url:"assets/AccessTokensPage-Cg4UZvt6.js",revision:null},{url:"apple-touch-icon-180x180.png",revision:"34c1b155ebc55bee221777f86f4612d8"},{url:"favicon.svg",revision:"e91ea32c7308cc2267ae15a5974a27f8"},{url:"icon-192x192.png",revision:"0bc2b74efb274c01d9eb50f717f4b7cf"},{url:"icon-512x512.png",revision:"74e561c3eb152bbb9cdcb333b5f1f3be"},{url:"icon-maskable-192x192.png",revision:"bf88226fe789dcb35bf89a307d3ba1af"},{url:"icon-maskable-512x512.png",revision:"69ada030d99c4a087bc309c00d716654"},{url:"manifest.webmanifest",revision:"e3100788a89f54481dbd663d57df57a6"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("/index.html"))),s.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new s.CacheFirst({cacheName:"google-fonts-stylesheets",plugins:[]}),"GET"),s.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new s.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new s.ExpirationPlugin({maxEntries:10,maxAgeSeconds:31536e3})]}),"GET")});
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{c as H,a as q,v as J,r as o,j as e,X as W,h as u,t as $,s as Q}from"./index-0QFy9ku9.js";import{S as Y}from"./Select-xdty1j0i.js";import{u as U}from"./useFetch-BqnEzaSJ.js";import{T as I}from"./trash-2-CYdvAzYO.js";import{P as X}from"./plus-D38pnIMa.js";import{E as Z}from"./EmptyState-DV7LUJer.js";import{T as ee}from"./Skeleton-CmBnyd29.js";import{P as te}from"./plug-CvdRvl-j.js";import{L as O}from"./loader-circle-OCqj772N.js";import{P as re}from"./power-CzLnYo_h.js";import{P as ae}from"./pencil-QmINK6St.js";import{L as se}from"./link-2-ELPNTQde.js";import"./chevron-down-SeRjAX4r.js";/**
|
|
2
|
-
* @license lucide-react v0.469.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const ne=H("CircleCheckBig",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),oe=[{value:"jira",label:"jira"},{value:"sentry",label:"sentry"},{value:"figma",label:"figma"}];function le({isOpen:a,onClose:d,onCreated:P,editConnector:i}){const{t:r}=q(),l=!!i;J(a);const[y,T]=o.useState(""),[c,m]=o.useState("jira"),[b,K]=o.useState(""),[g,w]=o.useState(""),[A,E]=o.useState(!1),[_,h]=o.useState(""),[S,v]=o.useState(!1),[p,x]=o.useState(""),[N,C]=o.useState(""),[L,B]=o.useState(""),[f,s]=o.useState(""),[t,D]=o.useState(""),[j,F]=o.useState(""),[M,z]=o.useState("");o.useEffect(()=>{a&&(i?(T(i.name),m(i.platform),K(i.baseUrl??""),h(i.mentionKeyword??"")):(T(""),m("jira"),K(""),h("")),w(""),E(!1),C(""),B(""),s(""),D(""),F(""),z(""),v(!1),x(""))},[i,a]);async function G(){if(x(""),!y.trim()){x(r("admin.connector_name_required"));return}const n={};if(c==="jira"){const R=f.trim(),V=N.trim()&&L.trim();if(!l&&!R&&!V){x(r("admin.connector_jira_creds_required"));return}R?n.personalAccessToken=f.trim():(N.trim()&&(n.email=N.trim()),L.trim()&&(n.apiToken=L.trim()))}else if(c==="sentry"){if(!l&&(!t.trim()||!j.trim())){x(r("admin.connector_sentry_creds_required"));return}t.trim()&&(n.authToken=t.trim()),j.trim()&&(n.org=j.trim())}else if(c==="figma"){if(!l&&!M.trim()){x(r("admin.connector_figma_creds_required"));return}if(!l&&!g.trim()){x(r("admin.connector_figma_webhook_required"));return}M.trim()&&(n.personalAccessToken=M.trim())}const k={name:y.trim()};l||(k.platform=c),l?(k.baseUrl=b.trim()||null,k.mentionKeyword=_.trim()):(b.trim()&&(k.baseUrl=b.trim()),_.trim()&&(k.mentionKeyword=_.trim())),Object.keys(n).length>0&&(k.credentials=n),g.trim()?k.webhookSecret=g.trim():l&&A&&(k.webhookSecret="");try{v(!0),l?await u.put(`admin/connectors/${i.id}`,{json:k}).json():await u.post("admin/connectors",{json:k}).json(),d(),P()}catch(R){const V=R instanceof Error?R.message:r(l?"admin.connector_failed_to_update":"admin.connector_failed_to_create");x(V)}finally{v(!1)}}return a?e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",style:{backdropFilter:"blur(2px)"},children:[e.jsx("div",{className:"fixed inset-0 bg-[var(--modal-backdrop)]"}),e.jsxs("div",{className:"relative z-10 w-full max-w-[480px] max-h-[90vh] overflow-y-auto rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] font-mono",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-5 py-4",children:[e.jsx("h3",{className:"text-sm text-[var(--text-primary)]",children:l?`// ${r("admin.connector_edit")}`:`// ${r("admin.connector_create")}`}),e.jsx("button",{type:"button",className:"rounded-[4px] p-1 text-[var(--text-muted)] hover:text-[var(--text-primary)] transition-colors",onClick:d,children:e.jsx(W,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"space-y-4 px-5 py-5",children:[p&&e.jsx("div",{className:"rounded-[4px] border border-red-500/30 bg-red-500/10 px-3 py-2 text-xs text-red-400",children:p}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r("admin.connector_name")}),e.jsx("input",{type:"text",placeholder:"e.g. jira production",value:y,onChange:n=>T(n.target.value),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r("admin.platform")}),e.jsx(Y,{value:c,onChange:m,options:oe,disabled:l})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r("admin.connector_base_url")}),e.jsx("input",{type:"text",placeholder:c==="jira"?"https://your-domain.atlassian.net":c==="sentry"?"https://sentry.io":"",value:b,onChange:n=>K(n.target.value),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]}),c==="jira"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-[var(--text-muted)]",children:r("admin.connector_jira_cloud_label")}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r(l?"admin.connector_jira_email_keep":"admin.connector_jira_email")}),e.jsx("input",{type:"text",placeholder:"user@example.com",value:N,onChange:n=>{C(n.target.value),n.target.value&&s("")},className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r(l?"admin.connector_jira_token_keep":"admin.connector_jira_token")}),e.jsx("input",{type:"password",placeholder:"api token",value:L,onChange:n=>{B(n.target.value),n.target.value&&s("")},className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]}),e.jsx("div",{className:"text-[11px] text-[var(--text-muted)]",children:r("admin.connector_jira_pat_label")}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r(l?"admin.connector_jira_pat_keep":"admin.connector_jira_pat")}),e.jsx("input",{type:"password",placeholder:"personal access token",value:f,onChange:n=>{s(n.target.value),n.target.value&&(C(""),B(""))},className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]})]}),c==="sentry"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r(l?"admin.connector_sentry_token_keep":"admin.connector_sentry_token")}),e.jsx("input",{type:"password",placeholder:"auth token",value:t,onChange:n=>D(n.target.value),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r(l?"admin.connector_sentry_org_keep":"admin.connector_sentry_org")}),e.jsx("input",{type:"text",placeholder:"organization slug",value:j,onChange:n=>F(n.target.value),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]})]}),c==="figma"&&e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r(l?"admin.connector_figma_token_keep":"admin.connector_figma_token")}),e.jsx("input",{type:"password",placeholder:"personal access token",value:M,onChange:n=>z(n.target.value),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r(l?"admin.connector_webhook_secret_keep":"admin.connector_webhook_secret")}),e.jsx("input",{type:"password",placeholder:"webhook secret",value:g,onChange:n=>w(n.target.value),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"}),l&&c!=="figma"&&e.jsxs("label",{className:"mt-1.5 flex items-center gap-2 text-[11px] text-[var(--text-muted)] cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:A,onChange:n=>E(n.target.checked),className:"rounded-[4px]"}),r("admin.connector_webhook_secret_clear")]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r("admin.connector_mention_keyword")}),e.jsx("div",{className:"mb-1 text-xs text-[var(--text-muted)]",children:r("admin.connector_mention_keyword_hint")}),e.jsx("input",{type:"text",placeholder:"e.g. @overlord",value:_,onChange:n=>h(n.target.value),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]})]}),e.jsxs("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-5 py-4",children:[e.jsx("button",{type:"button",className:"rounded-[4px] border border-[var(--border)] px-3 py-1.5 text-xs text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors",onClick:d,children:r("common.cancel")}),e.jsx("button",{type:"button",className:"rounded-[4px] bg-[var(--accent)] px-3 py-1.5 text-xs text-black hover:opacity-90 transition-opacity disabled:opacity-50",disabled:S,onClick:G,children:r(S?l?"common.saving":"common.creating":l?"common.save_changes":"common.create")})]})]})]}):null}function de({isOpen:a,connector:d,onClose:P,onUpdated:i}){const{t:r}=q();J(a);const[l,y]=o.useState(""),[T,c]=o.useState(""),[m,b]=o.useState(!1),[K,g]=o.useState(!1),[w,A]=o.useState(""),[E,_]=o.useState(!1),[h,S]=o.useState(!1),[v,p]=o.useState("");o.useEffect(()=>{a&&p("")},[a]);const{data:x,refetch:N}=U(()=>u.get(`admin/connectors/${d.id}/bindings`).json(),[d.id]),{data:C}=U(()=>u.get("admin/projects").json(),[]);async function L(){if(p(""),!l.trim()){p(r("admin.connector_binding_project_required"));return}try{_(!0),await u.post(`admin/connectors/${d.id}/bindings`,{json:{projectKey:l.trim(),externalProjectKey:T.trim()||void 0,isDefault:m,autoDesignReview:d.platform==="figma"?K:void 0,statusMapping:w.trim()?{done:w.trim()}:void 0}}).json(),y(""),c(""),b(!1),g(!1),A(""),N(),i()}catch(s){const t=s instanceof Error?s.message:r("admin.connector_binding_failed_to_add");p(t)}finally{_(!1)}}async function B(s){if(!h){S(!0);try{await u.delete(`admin/connectors/bindings/${s}`),N(),i()}catch{$.error(r("admin.connector_binding_failed_to_delete"))}finally{S(!1)}}}async function f(s,t){if(!h){S(!0);try{await u.put(`admin/connectors/bindings/${s}`,{json:t}),N(),i()}catch{$.error(r("admin.connector_binding_failed_to_update"))}finally{S(!1)}}}return a?e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",style:{backdropFilter:"blur(2px)"},children:[e.jsx("div",{className:"fixed inset-0 bg-[var(--modal-backdrop)]"}),e.jsxs("div",{className:"relative z-10 w-full max-w-[540px] max-h-[90vh] overflow-y-auto rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] font-mono",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-5 py-4",children:[e.jsx("h3",{className:"text-sm text-[var(--text-primary)]",children:r("admin.connector_bindings_title",{name:d.name})}),e.jsx("button",{type:"button",className:"rounded-[4px] p-1 text-[var(--text-muted)] hover:text-[var(--text-primary)] transition-colors",onClick:P,children:e.jsx(W,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"px-5 py-5 space-y-4",children:[x&&x.length>0?e.jsx("div",{className:"space-y-2",children:x.map(s=>{var t;return e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] px-3 py-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-[var(--text-primary)]",children:s.projectKey}),e.jsx("input",{type:"text",defaultValue:s.externalProjectKey??"",placeholder:r("admin.connector_binding_external_key"),onBlur:D=>{const j=D.target.value.trim()||null;j!==(s.externalProjectKey??null)&&f(s.id,{externalProjectKey:j})},className:"w-20 rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] px-1.5 py-0.5 text-[11px] text-[var(--text-secondary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"}),e.jsxs("label",{className:"flex items-center gap-1 text-[11px] text-[var(--text-muted)] cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:s.isDefault,onChange:()=>f(s.id,{isDefault:!s.isDefault}),className:"rounded-[4px]"}),r("admin.connector_binding_default")]})]}),e.jsx("button",{type:"button",className:"rounded-[4px] p-1.5 text-red-400 hover:text-red-300 hover:bg-white/[0.05] transition-colors",title:r("common.delete"),onClick:()=>B(s.id),children:e.jsx(I,{className:"h-3.5 w-3.5"})})]}),e.jsxs("div",{className:"mt-1.5 flex items-center gap-3 text-[11px] text-[var(--text-muted)]",children:[(d.platform==="jira"||d.platform==="sentry")&&e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsxs("span",{children:[r("admin.connector_binding_status_done"),":"]}),e.jsx("input",{type:"text",defaultValue:((t=s.statusMapping)==null?void 0:t.done)??"",placeholder:d.platform==="jira"?"Done":"resolved",onBlur:D=>{var M;const j=D.target.value.trim(),F=((M=s.statusMapping)==null?void 0:M.done)??"";j!==F&&f(s.id,{statusMapping:j?{done:j}:null})},className:"w-24 rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] px-1.5 py-0.5 text-[11px] text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]}),d.platform==="figma"&&e.jsxs("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:s.autoDesignReview,onChange:()=>f(s.id,{autoDesignReview:!s.autoDesignReview}),className:"rounded-[4px]"}),r("admin.connector_binding_auto_review")]})]})]},s.id)})}):e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:r("admin.connector_no_bindings")}),e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-3 space-y-3",children:[e.jsx("div",{className:"text-xs text-[var(--text-muted)]",children:r("admin.connector_add_binding")}),v&&e.jsx("div",{className:"rounded-[4px] border border-red-500/30 bg-red-500/10 px-3 py-2 text-xs text-red-400",children:v}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r("admin.connector_binding_project")}),C&&C.length>0?e.jsxs("select",{value:l,onChange:s=>y(s.target.value),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] px-3 py-2 text-xs text-[var(--text-primary)] focus:outline-none focus:border-[var(--accent)]",children:[e.jsx("option",{value:"",children:r("admin.connector_binding_select_project")}),C.map(s=>e.jsxs("option",{value:s.key,children:[s.key," — ",s.name]},s.key))]}):e.jsx("input",{type:"text",placeholder:"project key",value:l,onChange:s=>y(s.target.value),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r("admin.connector_binding_external_key")}),e.jsx("input",{type:"text",placeholder:d.platform==="jira"?"PROJ":d.platform==="sentry"?"my-project":"",value:T,onChange:s=>c(s.target.value),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]}),(d.platform==="jira"||d.platform==="sentry")&&e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:r("admin.connector_binding_status_done")}),e.jsx("input",{type:"text",placeholder:d.platform==="jira"?"e.g. Done":"e.g. resolved",value:w,onChange:s=>A(s.target.value),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] px-3 py-2 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:outline-none focus:border-[var(--accent)]"})]}),e.jsxs("label",{className:"flex items-center gap-2 text-xs text-[var(--text-secondary)] cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:m,onChange:s=>b(s.target.checked),className:"rounded-[4px]"}),r("admin.connector_binding_is_default")]}),d.platform==="figma"&&e.jsxs("label",{className:"flex items-center gap-2 text-xs text-[var(--text-secondary)] cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:K,onChange:s=>g(s.target.checked),className:"rounded-[4px]"}),r("admin.connector_binding_auto_review")]}),e.jsxs("button",{type:"button",className:"flex items-center gap-1.5 rounded-[4px] bg-[var(--accent)] px-3 py-1.5 text-xs text-black hover:opacity-90 transition-opacity disabled:opacity-50",disabled:E,onClick:L,children:[e.jsx(X,{className:"h-3.5 w-3.5"}),r(E?"admin.connector_binding_adding":"admin.connector_add_binding")]})]})]}),e.jsx("div",{className:"flex items-center justify-end border-t border-[var(--border)] px-5 py-4",children:e.jsx("button",{type:"button",className:"rounded-[4px] border border-[var(--border)] px-3 py-1.5 text-xs text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors",onClick:P,children:r("common.close")})})]})]}):null}function _e(){const{t:a}=q(),[d,P]=o.useState(!1),[i,r]=o.useState(null),[l,y]=o.useState(null),[T,c]=o.useState(!1),[m,b]=o.useState(null),[K,g]=o.useState(!1),[w,A]=o.useState(null),[E,_]=o.useState(null),{data:h,loading:S,refetch:v}=U(()=>u.get("admin/connectors").json(),[]),{data:p,refetch:x}=U(()=>u.get("admin/connectors/bindings").json(),[]);async function N(){if(m){g(!0);try{await u.delete(`admin/connectors/${m.id}`),c(!1),b(null),v(),x()}catch{$.error(a("admin.connector_failed_to_delete"))}finally{g(!1)}}}async function C(t){A(t.id);try{(await u.post(`admin/connectors/${t.id}/validate`).json()).valid?$.success(a("admin.connector_valid")):$.error(a("admin.connector_invalid"))}catch{$.error(a("admin.connector_validate_failed"))}finally{A(null)}}async function L(t){const D=t.status==="active"?"disabled":"active";_(t.id);try{await u.put(`admin/connectors/${t.id}`,{json:{status:D}}),v()}catch{$.error(a("admin.connector_failed_to_update"))}finally{_(null)}}function B(t){switch(t){case"jira":return"text-blue-400";case"sentry":return"text-purple-400";case"figma":return"text-pink-400";default:return"text-[var(--text-secondary)]"}}function f(t){switch(t){case"active":return"text-green-400";case"disabled":return"text-red-400";default:return"text-[var(--text-muted)]"}}function s(t){return e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{type:"button",className:"rounded-[4px] p-2.5 md:p-1.5 text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-white/[0.05] transition-colors",title:a("admin.connector_validate"),onClick:()=>C(t),disabled:w===t.id,children:w===t.id?e.jsx(O,{className:"h-3.5 w-3.5 animate-spin"}):e.jsx(ne,{className:"h-3.5 w-3.5"})}),e.jsx("button",{type:"button",className:`rounded-[4px] p-2.5 md:p-1.5 hover:bg-white/[0.05] transition-colors ${t.status==="active"?"text-green-400 hover:text-green-300":"text-red-400 hover:text-red-300"}`,title:t.status==="active"?a("admin.connector_disable"):a("admin.connector_enable"),onClick:()=>L(t),disabled:E===t.id,children:E===t.id?e.jsx(O,{className:"h-3.5 w-3.5 animate-spin"}):e.jsx(re,{className:"h-3.5 w-3.5"})}),e.jsx("button",{type:"button",className:"rounded-[4px] p-2.5 md:p-1.5 text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-white/[0.05] transition-colors",title:a("common.edit"),onClick:()=>r(t),children:e.jsx(ae,{className:"h-3.5 w-3.5"})}),e.jsx("button",{type:"button",className:"rounded-[4px] p-2.5 md:p-1.5 text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-white/[0.05] transition-colors",title:a("admin.connector_bindings"),onClick:()=>y(t),children:e.jsx(se,{className:"h-3.5 w-3.5"})}),e.jsx("button",{type:"button",className:"rounded-[4px] p-2.5 md:p-1.5 text-red-400 hover:text-red-300 hover:bg-white/[0.05] transition-colors",title:a("common.delete"),onClick:()=>{b(t),c(!0)},children:e.jsx(I,{className:"h-3.5 w-3.5"})})]})}return e.jsxs("div",{className:"font-mono",children:[e.jsxs("div",{className:"mb-6 flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm text-[var(--text-primary)]",children:a("admin.connectors_title")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:a("admin.connectors_subtitle")})]}),e.jsxs("button",{type:"button",className:"flex items-center gap-1.5 rounded-[4px] bg-[var(--accent)] px-3 py-1.5 text-xs text-black hover:opacity-90 transition-opacity",onClick:()=>{r(null),P(!0)},children:[e.jsx(X,{className:"h-3.5 w-3.5"}),a("admin.connector_create")]})]}),S?e.jsx("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4",children:e.jsx(ee,{rows:3})}):!h||h.length===0?e.jsx(Z,{icon:te,title:a("admin.connectors_empty"),description:a("admin.connectors_empty_desc"),actionLabel:a("admin.connector_create"),onAction:()=>{r(null),P(!0)}}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"hidden md:block overflow-x-auto",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-[var(--border)] text-left text-[var(--text-muted)]",children:[e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.connector_name")}),e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.platform")}),e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.connector_base_url")}),e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.connector_webhook_url")}),e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.status")}),e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("common.created_at")}),e.jsx("th",{className:"pb-2 font-normal",children:a("common.actions")})]})}),e.jsx("tbody",{children:h.map(t=>e.jsxs("tr",{className:"border-b border-[var(--border-row)] hover:bg-white/[0.02] transition-colors",children:[e.jsx("td",{className:"py-2.5 pr-4 text-[var(--text-primary)]",children:t.name}),e.jsx("td",{className:"py-2.5 pr-4",children:e.jsx("span",{className:B(t.platform),children:t.platform})}),e.jsx("td",{className:"py-2.5 pr-4 text-[var(--text-secondary)]",children:t.baseUrl??"-"}),e.jsx("td",{className:"py-2.5 pr-4",children:e.jsxs("code",{className:"text-[10px] text-[var(--text-muted)] select-all",children:["/webhook/connector/",t.platform,"/",t.id]})}),e.jsx("td",{className:"py-2.5 pr-4",children:e.jsx("span",{className:f(t.status),children:t.status})}),e.jsx("td",{className:"py-2.5 pr-4 text-[var(--text-muted)]",children:new Date(t.createdAt).toLocaleDateString()}),e.jsx("td",{className:"py-2.5",children:s(t)})]},t.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3",children:h.map(t=>e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-3",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("span",{className:"text-xs text-[var(--text-primary)] font-medium",children:t.name}),s(t)]}),e.jsxs("div",{className:"flex items-center gap-3 text-[11px]",children:[e.jsx("span",{className:B(t.platform),children:t.platform}),e.jsx("span",{className:f(t.status),children:t.status})]}),t.baseUrl&&e.jsx("div",{className:"mt-1 text-[11px] text-[var(--text-secondary)] truncate",children:t.baseUrl}),e.jsxs("div",{className:"mt-1 text-[10px] text-[var(--text-muted)] truncate select-all",children:["/webhook/connector/",t.platform,"/",t.id]})]},t.id))})]}),e.jsx(le,{isOpen:d||!!i,onClose:()=>{P(!1),r(null)},onCreated:v,editConnector:i}),l&&e.jsx(de,{isOpen:!!l,connector:l,onClose:()=>y(null),onUpdated:()=>{v(),x()}}),e.jsx(Q,{isOpen:T,onClose:()=>{c(!1),b(null)},onConfirm:N,title:a("admin.connector_delete"),message:a("admin.connector_delete_confirm",{name:(m==null?void 0:m.name)??""}),confirmLabel:a("common.delete"),confirmVariant:"danger",isLoading:K}),e.jsxs("div",{className:"mt-8",children:[e.jsxs("h2",{className:"mb-4 text-sm text-[var(--text-primary)]",children:[a("admin.connector_bindings"),e.jsx("span",{className:"ml-2 text-[var(--text-muted)]",children:a("admin.connector_bindings_subtitle")})]}),!p||p.length===0?e.jsx("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-8 text-center",children:e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:a("admin.connector_no_bindings")})}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"hidden md:block overflow-x-auto",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-[var(--border)] text-left text-[var(--text-muted)]",children:[e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.connector_name")}),e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.connector_binding_project")}),e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.connector_binding_external_key")}),e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.connector_binding_default")}),e.jsx("th",{className:"pb-2 font-normal",children:a("common.created_at")})]})}),e.jsx("tbody",{children:p.map(t=>e.jsxs("tr",{className:"border-b border-[var(--border-row)] hover:bg-white/[0.02] transition-colors",children:[e.jsx("td",{className:"py-2.5 pr-4 text-[var(--text-secondary)]",children:t.connectorName??"-"}),e.jsx("td",{className:"py-2.5 pr-4 text-[var(--text-primary)]",children:t.projectKey}),e.jsx("td",{className:"py-2.5 pr-4 text-[var(--text-secondary)]",children:t.externalProjectKey??"-"}),e.jsx("td",{className:"py-2.5 pr-4",children:t.isDefault&&e.jsx("span",{className:"rounded-[4px] border border-[var(--accent)] px-1.5 py-0.5 text-[10px] text-[var(--accent)]",children:a("admin.connector_binding_default")})}),e.jsx("td",{className:"py-2.5 text-[var(--text-muted)]",children:new Date(t.createdAt).toLocaleDateString()})]},t.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3",children:p.map(t=>e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-3",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("span",{className:"text-xs text-[var(--text-primary)] font-medium",children:t.projectKey}),t.isDefault&&e.jsx("span",{className:"rounded-[4px] border border-[var(--accent)] px-1.5 py-0.5 text-[10px] text-[var(--accent)]",children:a("admin.connector_binding_default")})]}),e.jsx("div",{className:"text-[11px] text-[var(--text-muted)]",children:t.connectorName}),e.jsx("div",{className:"text-[11px] text-[var(--text-secondary)]",children:t.externalProjectKey??"-"})]},t.id))})]})]})]})}export{_e as default};
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./index-0QFy9ku9.js";import{a as s}from"./DocsPrimitives-CipzCTEu.js";import"./copy-BWTAfZ7b.js";function c(){return e.jsxs("div",{className:"mx-auto max-w-4xl px-4 md:px-6 py-8 font-mono lowercase",children:[e.jsxs("div",{className:"mb-8",children:[e.jsx("h2",{className:"text-sm text-[var(--text-primary)]",children:"// external connectors"}),e.jsx("p",{className:"mt-2 text-xs text-[var(--text-muted)]",children:"connect overlord to jira, sentry, and figma. when a jira comment mentions the trigger keyword, a sentry alert fires, or a figma comment tags overlord, a coding task is automatically created."})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4 space-y-3",children:[e.jsx("h2",{className:"text-sm text-[var(--accent)]",children:"> supported platforms"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("th",{className:"text-left py-2 pr-4 text-[var(--text-secondary)]",children:"platform"}),e.jsx("th",{className:"text-left py-2 pr-4 text-[var(--text-secondary)]",children:"trigger"}),e.jsx("th",{className:"text-left py-2 text-[var(--text-secondary)]",children:"closure actions"})]})}),e.jsxs("tbody",{className:"text-[var(--text-muted)]",children:[e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("td",{className:"py-2 pr-4 text-[var(--text-primary)]",children:"jira"}),e.jsxs("td",{className:"py-2 pr-4",children:["comment with ",e.jsx("code",{className:"text-[var(--accent)]",children:"@Overlord"})," mention"]}),e.jsx("td",{className:"py-2",children:"comment, link mr, transition status"})]}),e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("td",{className:"py-2 pr-4 text-[var(--text-primary)]",children:"sentry"}),e.jsx("td",{className:"py-2 pr-4",children:"alert rule triggered"}),e.jsx("td",{className:"py-2",children:"comment, resolve/unresolve"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-2 pr-4 text-[var(--text-primary)]",children:"figma"}),e.jsxs("td",{className:"py-2 pr-4",children:["comment with ",e.jsx("code",{className:"text-[var(--accent)]",children:"@Overlord"})," mention"]}),e.jsx("td",{className:"py-2",children:"comment"})]})]})]})})]}),e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4 space-y-4",children:[e.jsx("h2",{className:"text-sm text-[var(--accent)]",children:"> setup"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-xs text-[var(--text-primary)]",children:"1. create a connector instance"}),e.jsxs("p",{className:"text-xs text-[var(--text-muted)]",children:["go to ",e.jsx("span",{className:"text-[var(--accent)]",children:"admin → connectors → add connector"}),", or use the api:"]}),e.jsx(s,{code:`# jira
|
|
2
|
-
curl -X POST https://overlord.example.com/api/admin/connectors \\
|
|
3
|
-
-H "Authorization: Bearer $TOKEN" \\
|
|
4
|
-
-H "Content-Type: application/json" \\
|
|
5
|
-
-d '{
|
|
6
|
-
"platform": "jira",
|
|
7
|
-
"name": "Company Jira",
|
|
8
|
-
"baseUrl": "https://company.atlassian.net",
|
|
9
|
-
"credentials": {
|
|
10
|
-
"email": "bot@company.com",
|
|
11
|
-
"apiToken": "your-jira-api-token"
|
|
12
|
-
},
|
|
13
|
-
"webhookSecret": "your-webhook-secret",
|
|
14
|
-
"mentionKeyword": "@Overlord"
|
|
15
|
-
}'`}),e.jsx(s,{code:`# sentry
|
|
16
|
-
curl -X POST https://overlord.example.com/api/admin/connectors \\
|
|
17
|
-
-H "Authorization: Bearer $TOKEN" \\
|
|
18
|
-
-H "Content-Type: application/json" \\
|
|
19
|
-
-d '{
|
|
20
|
-
"platform": "sentry",
|
|
21
|
-
"name": "Company Sentry",
|
|
22
|
-
"baseUrl": "https://sentry.io",
|
|
23
|
-
"credentials": {
|
|
24
|
-
"authToken": "your-sentry-auth-token",
|
|
25
|
-
"org": "your-org-slug"
|
|
26
|
-
},
|
|
27
|
-
"webhookSecret": "your-sentry-webhook-secret"
|
|
28
|
-
}'`}),e.jsx(s,{code:`# figma
|
|
29
|
-
curl -X POST https://overlord.example.com/api/admin/connectors \\
|
|
30
|
-
-H "Authorization: Bearer $TOKEN" \\
|
|
31
|
-
-H "Content-Type: application/json" \\
|
|
32
|
-
-d '{
|
|
33
|
-
"platform": "figma",
|
|
34
|
-
"name": "Company Figma",
|
|
35
|
-
"credentials": {
|
|
36
|
-
"personalAccessToken": "your-figma-pat"
|
|
37
|
-
},
|
|
38
|
-
"webhookSecret": "your-figma-passcode",
|
|
39
|
-
"mentionKeyword": "@Overlord"
|
|
40
|
-
}'`}),e.jsxs("p",{className:"text-xs text-[var(--text-muted)]",children:[e.jsx("span",{className:"text-[var(--warning)]",children:"note:"})," figma requires ",e.jsx("code",{className:"text-[var(--accent)]",children:"webhookSecret"})," (used as passcode for webhook verification)"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-xs text-[var(--text-primary)]",children:"2. create a binding"}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"link the connector to an overlord project:"}),e.jsx(s,{code:`curl -X POST https://overlord.example.com/api/admin/connectors/1/bindings \\
|
|
41
|
-
-H "Authorization: Bearer $TOKEN" \\
|
|
42
|
-
-H "Content-Type: application/json" \\
|
|
43
|
-
-d '{
|
|
44
|
-
"projectKey": "my-project",
|
|
45
|
-
"externalProjectKey": "PROJ",
|
|
46
|
-
"isDefault": true,
|
|
47
|
-
"statusMapping": { "done": "Done" }
|
|
48
|
-
}'`}),e.jsxs("ul",{className:"space-y-1 text-xs text-[var(--text-muted)] pl-4",children:[e.jsxs("li",{children:["- ",e.jsx("code",{className:"text-[var(--accent)]",children:"externalProjectKey"})," — jira project key or sentry project slug"]}),e.jsxs("li",{children:["- ",e.jsx("code",{className:"text-[var(--accent)]",children:"isDefault"})," — fallback binding when no exact external key match"]}),e.jsxs("li",{children:["- ",e.jsx("code",{className:"text-[var(--accent)]",children:"statusMapping.done"})," — jira status to transition to on task completion"]}),e.jsxs("li",{children:["- ",e.jsx("code",{className:"text-[var(--accent)]",children:"autoDesignReview"})," — figma only: auto-trigger design review when task completes"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-xs text-[var(--text-primary)]",children:"3. configure webhook in external system"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-xs text-[var(--text-secondary)]",children:"jira:"}),e.jsxs("ul",{className:"space-y-1 text-xs text-[var(--text-muted)] pl-4",children:[e.jsx("li",{children:"- jira settings → system → webhooks"}),e.jsxs("li",{children:["- url: ",e.jsx("code",{className:"text-[var(--accent)]",children:"https://overlord.example.com/webhook/connector/jira/{instanceId}"})]}),e.jsx("li",{children:"- events: issue → comment created"}),e.jsxs("li",{children:["- secret: match ",e.jsx("code",{className:"text-[var(--accent)]",children:"webhookSecret"})]})]}),e.jsx("p",{className:"text-xs text-[var(--text-secondary)]",children:"sentry:"}),e.jsxs("ul",{className:"space-y-1 text-xs text-[var(--text-muted)] pl-4",children:[e.jsx("li",{children:"- sentry settings → integrations → webhooks"}),e.jsxs("li",{children:["- url: ",e.jsx("code",{className:"text-[var(--accent)]",children:"https://overlord.example.com/webhook/connector/sentry/{instanceId}"})]}),e.jsx("li",{children:"- events: issue alerts"}),e.jsxs("li",{children:["- signing secret: match ",e.jsx("code",{className:"text-[var(--accent)]",children:"webhookSecret"})]})]}),e.jsx("p",{className:"text-xs text-[var(--text-secondary)]",children:"figma:"}),e.jsxs("ul",{className:"space-y-1 text-xs text-[var(--text-muted)] pl-4",children:[e.jsx("li",{children:"- figma → team settings → webhooks"}),e.jsxs("li",{children:["- url: ",e.jsx("code",{className:"text-[var(--accent)]",children:"https://overlord.example.com/webhook/connector/figma/{instanceId}"})]}),e.jsx("li",{children:"- events: FILE_COMMENT"}),e.jsxs("li",{children:["- passcode: match ",e.jsx("code",{className:"text-[var(--accent)]",children:"webhookSecret"})]})]})]})]})]}),e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4 space-y-4",children:[e.jsx("h2",{className:"text-sm text-[var(--accent)]",children:"> usage flows"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-xs text-[var(--text-primary)]",children:"jira: comment-triggered task"}),e.jsxs("ol",{className:"space-y-1 text-xs text-[var(--text-muted)] pl-4",children:[e.jsxs("li",{children:["1. developer comments on PROJ-123: ",e.jsx("code",{className:"text-[var(--accent)]",children:"@Overlord fix the login timeout bug"})]}),e.jsx("li",{children:"2. overlord receives webhook → creates task with description from comment"}),e.jsx("li",{children:'3. overlord replies on PROJ-123: "task #456 has been created"'}),e.jsx("li",{children:"4. agent executes task → creates mr"}),e.jsx("li",{children:"5. task completes → overlord comments with results + mr link"}),e.jsx("li",{children:'6. if statusMapping.done is set → jira issue transitions (e.g. "done")'})]}),e.jsxs("p",{className:"text-xs text-[var(--text-muted)]",children:["specify target project: ",e.jsx("code",{className:"text-[var(--accent)]",children:"@Overlord --project frontend fix the bug"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-xs text-[var(--text-primary)]",children:"sentry: alert-triggered task"}),e.jsxs("ol",{className:"space-y-1 text-xs text-[var(--text-muted)] pl-4",children:[e.jsx("li",{children:"1. sentry alert fires (error rate spike, new issue, etc.)"}),e.jsx("li",{children:"2. overlord receives webhook → creates task with error details"}),e.jsx("li",{children:"3. agent investigates and fixes → creates mr"}),e.jsx("li",{children:"4. task completes → overlord comments on sentry issue"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-xs text-[var(--text-primary)]",children:"figma: design-to-code task"}),e.jsxs("ol",{className:"space-y-1 text-xs text-[var(--text-muted)] pl-4",children:[e.jsxs("li",{children:["1. designer comments on figma file: ",e.jsx("code",{className:"text-[var(--accent)]",children:"@Overlord implement this login page"})]}),e.jsx("li",{children:"2. overlord fetches frame screenshots + node anchoring as design context"}),e.jsx("li",{children:"3. task created with design reference → agent implements the design"}),e.jsx("li",{children:"4. task completes → overlord comments on figma file"}),e.jsxs("li",{children:["5. if ",e.jsx("code",{className:"text-[var(--accent)]",children:"autoDesignReview"})," is enabled → review task auto-created"]})]}),e.jsxs("p",{className:"text-xs text-[var(--text-muted)]",children:["specify target project: ",e.jsx("code",{className:"text-[var(--accent)]",children:"@Overlord --project frontend implement this page"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-xs text-[var(--text-primary)]",children:"manual issue linking (bot / cli / web)"}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"link any task to a jira, sentry, or figma issue at creation time. on task completion, closure actions run automatically."}),e.jsxs("ul",{className:"space-y-1 text-xs text-[var(--text-muted)] pl-4",children:[e.jsxs("li",{children:["- bot: ",e.jsx("code",{className:"text-[var(--accent)]",children:'@bot develop "fix bug" --ref PROJ-123'})]}),e.jsxs("li",{children:["- bot: ",e.jsx("code",{className:"text-[var(--accent)]",children:'@bot develop "implement design" --ref https://www.figma.com/design/abc123/Page'})]}),e.jsxs("li",{children:["- cli: ",e.jsx("code",{className:"text-[var(--accent)]",children:'ov task create -d "fix bug" --ref PROJ-123'})]}),e.jsx("li",{children:'- web: task creation form → "external issue" field'}),e.jsxs("li",{children:["- accepts jira keys (",e.jsx("code",{className:"text-[var(--accent)]",children:"PROJ-123"}),") or full urls (jira, sentry, figma)"]})]}),e.jsxs("p",{className:"text-xs text-[var(--text-muted)]",children:["figma refs require ",e.jsx("code",{className:"text-[var(--accent)]",children:"--project"})," and automatically attach design screenshots as context."]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-xs text-[var(--text-primary)]",children:"manual design review"}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"trigger a design review for an existing task:"}),e.jsxs("ul",{className:"space-y-1 text-xs text-[var(--text-muted)] pl-4",children:[e.jsxs("li",{children:["- bot: ",e.jsx("code",{className:"text-[var(--accent)]",children:"@bot review #123 --ref https://www.figma.com/design/abc123/Page"})]}),e.jsxs("li",{children:["- cli: ",e.jsx("code",{className:"text-[var(--accent)]",children:"ov task review 123 --ref https://www.figma.com/design/abc123/Page"})]}),e.jsx("li",{children:"- web: task detail → launch review → paste figma url in ref field"})]}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"the review agent receives figma screenshots and compares the implementation against the design."})]})]}),e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4 space-y-3",children:[e.jsx("h2",{className:"text-sm text-[var(--accent)]",children:"> deduplication"}),e.jsxs("ul",{className:"space-y-1 text-xs text-[var(--text-muted)] pl-4",children:[e.jsxs("li",{children:["- ",e.jsx("span",{className:"text-[var(--text-secondary)]",children:"event-level"})," — same jira comment, sentry alert, or figma comment is never processed twice (24h redis ttl)"]}),e.jsxs("li",{children:["- ",e.jsx("span",{className:"text-[var(--text-secondary)]",children:"issue-level"})," — if an active task exists for the same issue on the same connector, new webhooks are skipped"]}),e.jsxs("li",{children:["- ",e.jsx("span",{className:"text-[var(--text-secondary)]",children:"in-process"})," — concurrent requests for the same event within the same tick are deduplicated"]}),e.jsxs("li",{children:["- ",e.jsx("span",{className:"text-[var(--text-secondary)]",children:"fingerprint"})," — same issue as key or url produces identical dedup fingerprint"]})]})]}),e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4 space-y-3",children:[e.jsx("h2",{className:"text-sm text-[var(--accent)]",children:"> platform capabilities"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("th",{className:"text-left py-2 pr-4 text-[var(--text-secondary)]",children:"capability"}),e.jsx("th",{className:"text-left py-2 pr-4 text-[var(--text-secondary)]",children:"jira"}),e.jsx("th",{className:"text-left py-2 pr-4 text-[var(--text-secondary)]",children:"sentry"}),e.jsx("th",{className:"text-left py-2 text-[var(--text-secondary)]",children:"figma"})]})}),e.jsxs("tbody",{className:"text-[var(--text-muted)]",children:[e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("td",{className:"py-2 pr-4",children:"closure comment"}),e.jsx("td",{className:"py-2 pr-4 text-green-400",children:"yes"}),e.jsx("td",{className:"py-2 pr-4 text-green-400",children:"yes"}),e.jsx("td",{className:"py-2 text-green-400",children:"yes"})]}),e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("td",{className:"py-2 pr-4",children:"mr link"}),e.jsx("td",{className:"py-2 pr-4 text-green-400",children:"yes"}),e.jsx("td",{className:"py-2 pr-4 text-[var(--text-muted)]",children:"—"}),e.jsx("td",{className:"py-2 text-[var(--text-muted)]",children:"—"})]}),e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("td",{className:"py-2 pr-4",children:"status transition"}),e.jsx("td",{className:"py-2 pr-4 text-green-400",children:"yes"}),e.jsx("td",{className:"py-2 pr-4 text-yellow-400",children:"resolve only"}),e.jsx("td",{className:"py-2 text-[var(--text-muted)]",children:"—"})]}),e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("td",{className:"py-2 pr-4",children:"design context"}),e.jsx("td",{className:"py-2 pr-4 text-[var(--text-muted)]",children:"—"}),e.jsx("td",{className:"py-2 pr-4 text-[var(--text-muted)]",children:"—"}),e.jsx("td",{className:"py-2 text-green-400",children:"yes"})]}),e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("td",{className:"py-2 pr-4",children:"auto design review"}),e.jsx("td",{className:"py-2 pr-4 text-[var(--text-muted)]",children:"—"}),e.jsx("td",{className:"py-2 pr-4 text-[var(--text-muted)]",children:"—"}),e.jsx("td",{className:"py-2 text-green-400",children:"yes"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-2 pr-4",children:"--ref format"}),e.jsx("td",{className:"py-2 pr-4",children:"key or url"}),e.jsx("td",{className:"py-2 pr-4",children:"url only"}),e.jsx("td",{className:"py-2",children:"url only"})]})]})]})})]}),e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4 space-y-3",children:[e.jsx("h2",{className:"text-sm text-[var(--accent)]",children:"> troubleshooting"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("th",{className:"text-left py-2 pr-4 text-[var(--text-secondary)]",children:"symptom"}),e.jsx("th",{className:"text-left py-2 pr-4 text-[var(--text-secondary)]",children:"cause"}),e.jsx("th",{className:"text-left py-2 text-[var(--text-secondary)]",children:"fix"})]})}),e.jsxs("tbody",{className:"text-[var(--text-muted)]",children:[e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("td",{className:"py-2 pr-4",children:"webhook returns 401"}),e.jsx("td",{className:"py-2 pr-4",children:"signature/passcode mismatch"}),e.jsx("td",{className:"py-2",children:"verify webhookSecret matches external system"})]}),e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("td",{className:"py-2 pr-4",children:"task not created"}),e.jsx("td",{className:"py-2 pr-4",children:"missing keyword / no binding"}),e.jsx("td",{className:"py-2",children:"check comment contains @Overlord; create a binding"})]}),e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("td",{className:"py-2 pr-4",children:"figma ref fails"}),e.jsx("td",{className:"py-2 pr-4",children:"no --project specified"}),e.jsx("td",{className:"py-2",children:"figma design refs require explicit --project flag"})]}),e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("td",{className:"py-2 pr-4",children:"no design screenshots"}),e.jsx("td",{className:"py-2 pr-4",children:"figma api error or invalid nodes"}),e.jsx("td",{className:"py-2",children:"task is created without context; check figma token permissions"})]}),e.jsxs("tr",{className:"border-b border-[var(--border)]",children:[e.jsx("td",{className:"py-2 pr-4",children:"closure not working"}),e.jsx("td",{className:"py-2 pr-4",children:"connector disabled"}),e.jsx("td",{className:"py-2",children:"re-enable the connector instance"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-2 pr-4",children:"status not transitioning"}),e.jsx("td",{className:"py-2 pr-4",children:"missing statusMapping"}),e.jsx("td",{className:"py-2",children:"add statusMapping.done to the binding"})]})]})]})})]})]})]})}export{c as default};
|