@ycodium-ai/plugin-im 0.2.3236 → 0.2.3240
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/README.md +29 -22
- package/assets/ui.js +3 -3
- package/dist/index.js +2076 -1068
- package/locales/en.json +57 -5
- package/locales/zh-CN.json +57 -5
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -30,22 +30,29 @@ they pick their own project:
|
|
|
30
30
|
saved as secrets and the scanner as the only allowed person: no draft, no Save. It relies on
|
|
31
31
|
non-public console interfaces and may break; the inline panel then shows the step list with the
|
|
32
32
|
failed step marked. See `src/lark/setup/`.
|
|
33
|
-
- **Access mode** (per bot): `allowlist` (default)
|
|
34
|
-
the people on the allow list; `open` admits any sender the
|
|
33
|
+
- **Access mode** (per bot): `allowlist` (default), `open`, `privateOpen` or `groupOpen`.
|
|
34
|
+
`allowlist` admits only the people on the allow list; `open` admits any sender the
|
|
35
|
+
platform can identify.
|
|
36
|
+
`privateOpen` opens private chats and requires the allowlist in groups; `groupOpen`
|
|
37
|
+
opens groups and requires the allowlist in private chats. Both use the same list.
|
|
38
|
+
Either mixed mode requires the allowlist when the chat type is unknown.
|
|
35
39
|
New bots start on `allowlist`.
|
|
36
40
|
- **Allowed people** is an allow-list of that platform's user ids (shown when the
|
|
37
|
-
mode
|
|
38
|
-
not admitted gets one reply with their
|
|
41
|
+
mode requires the allowlist for either chat type). Empty blocks everyone in chats
|
|
42
|
+
that require the allowlist. Someone who is not admitted gets one reply with their
|
|
43
|
+
own user id and where to put it, at most
|
|
39
44
|
once every ten minutes per person (the table of who was told is bounded in memory).
|
|
40
45
|
In `open` mode any identifiable sender is admitted; the deny hint still applies
|
|
41
46
|
when the platform reports no sender id.
|
|
42
47
|
- A chat with no project starts nothing. The first message from an allowed
|
|
43
48
|
person gets a project picker (a card on Lark, an inline keyboard on Telegram,
|
|
44
|
-
a numbered text list on WeCom
|
|
49
|
+
a numbered text list on WeCom: reply with the number or
|
|
45
50
|
`/repo <number>`). The pick is written as a plugin fact and survives restarts.
|
|
46
51
|
`/repo` switches the project: the old thread is kept (still under that
|
|
47
52
|
project's `/sessions`), the chat forgets it, and a running turn blocks the
|
|
48
|
-
switch. The panel has a Pick project button.
|
|
53
|
+
switch. The panel has a Pick project button. On the WeCom smart bot, `/repo`
|
|
54
|
+
and this prompt stay the numbered list (`projectPicker` is false on
|
|
55
|
+
`src/wecomPanel.ts`); the button on the command card is separate.
|
|
49
56
|
- On Telegram a forum topic is a chat of its own: its chat id is `chat:topic`
|
|
50
57
|
(`chatIdOf`, only when Telegram marks the message `is_topic_message`; a reply
|
|
51
58
|
chain in an ordinary supergroup also carries `message_thread_id` and stays the
|
|
@@ -128,7 +135,15 @@ text and images (fetched through `media/get`), outbound text, images and files
|
|
|
128
135
|
It listens on `127.0.0.1:30987` by default (path `/wecom-app-callback/<rowId>/<secret>`);
|
|
129
136
|
put a reverse proxy or tunnel in front and paste the public URL into WeCom “Receive
|
|
130
137
|
messages → API receive”. Each column is validated, and a row with problems does not
|
|
131
|
-
connect. Streaming replies are
|
|
138
|
+
connect. Streaming replies are off by default (the app's passive stream reply has not
|
|
139
|
+
been verified on a real WeCom client). With it on, WeCom refreshes the reply as the agent
|
|
140
|
+
writes; if the client never refreshes the stream, the final reply is sent as text.
|
|
141
|
+
|
|
142
|
+
Known limits with Streaming replies on: the "Got it, working on it" placeholder is
|
|
143
|
+
not closed when a turn cannot start because the project has no default model, or
|
|
144
|
+
when handling the message throws; and a message queued for a team goal has its
|
|
145
|
+
placeholder closed right away, so it gets no 5-second fallback confirmation. The
|
|
146
|
+
reply itself still arrives as text in all three cases.
|
|
132
147
|
|
|
133
148
|
The default is one message per finished turn. A single turn can produce dozens
|
|
134
149
|
of assistant messages, mostly commentary between tool calls.
|
|
@@ -172,15 +187,15 @@ card, Telegram edits a message and its inline keyboard. A request is posted on
|
|
|
172
187
|
question, and answered through `ctx.threads.userInput.respond` once every question
|
|
173
188
|
has an answer; a free-form answer is the next ordinary message in the chat, and
|
|
174
189
|
`thread.request-resolved` freezes the cards of a question answered elsewhere or
|
|
175
|
-
closed unanswered. WeCom
|
|
190
|
+
closed unanswered. WeCom writes the options as numbers and the
|
|
176
191
|
reply is parsed in `src/questionCards.ts`. A message that lands behind a running
|
|
177
192
|
turn gets a queued card (Steer, Withdraw, Resume sending) drawn from
|
|
178
193
|
`getThreadExecution` and refreshed when the turn intents or the queue change
|
|
179
194
|
(`src/queueCards.ts`, `src/queueFlow.ts`); the buttons call
|
|
180
195
|
`threads.turnIntents.run` (steer, with the active turn id), `threads.turnIntents.cancel`
|
|
181
196
|
and `threads.turnQueue.resume`, and the card is the user's own action, so no
|
|
182
|
-
`intentAction` is sent. WeCom only gets a one-line notice
|
|
183
|
-
|
|
197
|
+
`intentAction` is sent. WeCom only gets a one-line notice: that notice has no
|
|
198
|
+
steer or withdraw buttons (resuming is the `/continue` command). Editing a queued message is not offered:
|
|
184
199
|
the host does not let a plugin dispatch `thread.turn-intent.edit`.
|
|
185
200
|
|
|
186
201
|
A chat keeps its place across restarts. Which project a chat picked, which thread
|
|
@@ -250,18 +265,10 @@ Chat commands: `/stop`, `/continue`, `/status`, `/new`, `/sessions`, `/resume`,
|
|
|
250
265
|
`/sessions`, `/resume` and the team commands answer with the project picker. `/sessions` and `/resume` only list and
|
|
251
266
|
switch threads this plugin opened, since the host lets a plugin send only into
|
|
252
267
|
its own threads. `/continue` calls `threads.turnQueue.resume` for the chat's thread
|
|
253
|
-
when its queue is paused (a `/stop` or a failure pauses it), which is how WeCom
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
On Lark and
|
|
257
|
-
is a button (a card on Lark, an inline keyboard on Telegram), and the ones that take an argument (a thread, a project, a model) open
|
|
258
|
-
a second view on the same message with a Back button. Telegram buttons carry only
|
|
259
|
-
a short `pn:<version>:<index>` token (`callback_data` is capped at 64 bytes);
|
|
260
|
-
the action stays in memory and a tap on an older keyboard version counts as expired. Each card keeps its own view
|
|
261
|
-
stack in memory (`src/panelController.ts`), so after a restart an old card only
|
|
262
|
-
answers that it has expired. A tap runs the same handler as the typed command and
|
|
263
|
-
waits in the same per-chat queue as typed messages. Another platform opts in by
|
|
264
|
-
implementing the optional `panel` surface on its adapter (`src/adapter.ts`).
|
|
268
|
+
when its queue is paused (a `/stop` or a failure pauses it), which is how WeCom
|
|
269
|
+
resumes a paused queue from the chat; it is not `/resume`, which already switches threads.
|
|
270
|
+
|
|
271
|
+
On Lark, Telegram, and the WeCom smart bot, `/panel` sends a command panel, and `/help` stays text and ends with a pointer to it. WeCom App does not implement the panel surface, so `/panel` answers with the text list and `/help` does not mention `/panel`. Lark cards and Telegram inline keyboards show all command buttons. The WeCom smart bot uses a template card from `src/wecomPanel.ts`; its main menu is limited to six buttons. Commands that do not fit are listed in `/help` and can be typed into the chat. Commands that take an argument (a thread, a project, a model) open a second view on the same message with a Back button. These lists let you reach every option by paging: Lark and Telegram show eight items per page, and WeCom shows three, leaving room for Back, Previous, and Next. A tap on the WeCom card updates that same card; when the update cannot be applied, `src/panelController.ts` posts a new card and the old one stops accepting taps. A busy placeholder is not drawn on that card: it stays as it is until the next interactive view. Telegram buttons carry only a short `pn:<version>:<index>` token (`callback_data` is capped at 64 bytes); the action stays in memory and a tap on an older keyboard version counts as expired. Each card keeps its own view stack in memory (`src/panelController.ts`), so after a restart an old card only answers that it has expired. A tap runs the same handler as the typed command and waits in the same per-chat queue as typed messages. Another platform opts in by implementing the optional `panel` surface on its adapter (`src/adapter.ts`).
|
|
265
272
|
|
|
266
273
|
`/team` uses the chat's selected project. It reads the roster from the `team` plugin and
|
|
267
274
|
each text message invokes `startGoal` with a stable request ID derived from the bot,
|
package/assets/ui.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var Kn=window.__ycodiumPluginHost.react;var{Activity:Xn,Children:Zn,Component:et,Fragment:Be,Profiler:nt,PureComponent:tt,StrictMode:it,Suspense:ot,__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE:rt,__COMPILER_RUNTIME:at,act:lt,cache:st,cacheSignal:dt,captureOwnerStack:ct,cloneElement:ut,createContext:te,createElement:xe,createRef:mt,forwardRef:gt,isValidElement:yt,lazy:ft,memo:pt,startTransition:bt,unstable_useCacheRefresh:vt,use:ie,useActionState:St,useCallback:It,useContext:wt,useDebugValue:Ct,useDeferredValue:ht,useEffect:Le,useEffectEvent:xt,useId:Rt,useImperativeHandle:kt,useInsertionEffect:Nt,useLayoutEffect:Tt,useMemo:M,useOptimistic:_t,useReducer:Pt,useRef:A,useState:R,useSyncExternalStore:Et,useTransition:At,version:Ot}=Kn;var O=(e,n)=>{let t=e[n];return typeof t=="string"?t.trim():""};var C="/developers/v1",Mt={uploadImage:`${C}/app/upload/image`,createFromTemplate:`${C}/manifest/upsert_by_template`,createBare:`${C}/app/create`,listApps:`${C}/app/list`,robotSwitch:e=>`${C}/robot/switch/${e}`,eventSwitch:e=>`${C}/event/switch/${e}`,eventRead:e=>`${C}/event/${e}`,eventUpdate:e=>`${C}/event/update/${e}`,callbackSwitch:e=>`${C}/callback/switch/${e}`,callbackRead:e=>`${C}/callback/${e}`,callbackUpdate:e=>`${C}/callback/update/${e}`,scopeCatalog:e=>`${C}/scope/all/${e}`,scopeUpdate:e=>`${C}/scope/update/${e}`,safeSetting:e=>`${C}/safe_setting/update/${e}`,visibleOnline:e=>`${C}/visible/online/${e}`,versionList:e=>`${C}/app_version/list/${e}`,versionCreate:e=>`${C}/app_version/create/${e}`,publishCommit:(e,n)=>`${C}/publish/commit/${e}/${n}`,secret:e=>`${C}/secret/${e}`};var Kt=10*6e4;var Me=9e4;var Ke="settings.view",Fe="settings.connections",Ve="settings.saveBot",De="settings.removeBot",Ue="settings.saveGeneral",$e="settings.saveTarget",Ge="settings.removeTarget",He="larkSetup.session",ze="wecomSetup.session",K={labelKey:"setup.action.label",descriptionKey:"setup.action.description",badgeKey:"setup.action.badge",warningKey:"setup.action.warning"},Qe={checkConnection:"im.settings.checkConnection",reconnect:"im.settings.reconnect",resetInbox:"im.settings.resetInbox",copyDiagnostics:"im.settings.copyDiagnostics",larkRepair:"im.settings.larkRepair",larkCallbackProbe:"im.settings.larkCallbackProbe"},We=e=>e==="telegram"?["rowAction.resetInbox.telegramOffline"]:[],je=[{id:"checkConnection",labelKey:"rowAction.checkConnection.label",descriptionKey:"rowAction.checkConnection.description"},{id:"reconnect",labelKey:"rowAction.reconnect.label",descriptionKey:"rowAction.reconnect.description"},{id:"resetInbox",labelKey:"rowAction.resetInbox.label",descriptionKey:"rowAction.resetInbox.description"},{id:"copyDiagnostics",labelKey:"rowAction.copyDiagnostics.label",descriptionKey:"rowAction.copyDiagnostics.description"},{id:"larkRepair",labelKey:"rowAction.larkRepair.label",descriptionKey:"rowAction.larkRepair.description",platform:"lark"},{id:"larkCallbackProbe",labelKey:"rowAction.larkCallbackProbe.label",descriptionKey:"rowAction.larkCallbackProbe.description",descriptionParams:{seconds:Me/1e3},platform:"lark"}],Fn="lark",oe=[{value:"zh-CN",labelKey:"settings.language.zhCN"},{value:"en",labelKey:"settings.language.en"}],Vn="botId",re=e=>O(e,"platform")||Fn,qe=(e,n)=>{let t=e.showWhen;if(t===void 0)return!0;let o=t.key==="platform"?re(n):O(n,t.key);return t.equals.includes(o)},Ye=(e,n,t)=>e.map(o=>o.key===Vn?{...o,kind:"select",options:n.map(l=>({value:l.rowId,label:`${O(l.values,"displayName")||t(l.platform)} (${l.rowId})`}))}:o),Je=(e,n)=>{switch(n.kind){case"qr":{let{expired:t,...o}=e,l=n.expiresAt===void 0?{payload:n.payload}:{payload:n.payload,expiresAt:n.expiresAt};return{...o,qr:l}}case"status":{let t=n.params===void 0?{statusKey:n.statusKey}:{statusKey:n.statusKey,params:n.params};if(n.expired!==!0)return{...e,status:t};let{qr:o,...l}=e;return{...l,status:t,expired:!0}}case"steps":return{...e,steps:n.steps};case"done":case"failed":{let{status:t,...o}=e;return{...o,result:n}}}},Re=e=>e==="inboxUnreadable"?"settingsSection.connection.reason.inbox-unreadable":e==="notAvailable"?"settingsSection.connection.reason.not-available":`rowAction.checkConnection.hint.${e}`,q=e=>e.reason==="not-available"||e.hint==="notAvailable",ae=e=>e?.state==="failed"&&(e.reason==="inbox-unreadable"||e.hint==="inboxUnreadable"),Xe=e=>e.hint==="wecomBotCredentials"||e.hint==="unauthorized"||e.hint==="larkCredentials"||e.hint==="wecomLongConnOff"||e.hint==="wecomTakenOver",F=e=>e.state==="duplicate"||q(e)||e.hint==="connecting"||e.hint==="wecomCallbackNotSeen"?"warning":"error";var Ze=e=>{if(!e||typeof e!="object"||Array.isArray(e)||!("code"in e)||typeof e.code!="string"||!e.code.trim()||!("reason"in e)||typeof e.reason!="string"||!e.reason.trim()||!("message"in e)||typeof e.message!="string"||!e.message.trim()||!("referenceId"in e)||typeof e.referenceId!="string"||!e.referenceId.trim()||!("at"in e)||typeof e.at!="number"||!Number.isFinite(e.at))return null;let n="messageKey"in e?e.messageKey:void 0;if(n!==void 0&&(typeof n!="string"||!n.trim()))return null;let t="messageParams"in e?e.messageParams:void 0,o;if(t!==void 0){if(!t||typeof t!="object"||Array.isArray(t)||!("detail"in t)||typeof t.detail!="string")return null;o={detail:t.detail.slice(0,500)}}return{code:e.code.slice(0,64),reason:e.reason.slice(0,64),message:e.message.slice(0,500),...n!==void 0?{messageKey:n.slice(0,128)}:{},...o===void 0?{}:{messageParams:o},referenceId:e.referenceId.slice(0,40),at:e.at}},en=e=>!e||typeof e!="object"||Array.isArray(e)?Ze(e):Ze(Object.fromEntries(Object.entries(e).map(([n,t])=>[n,typeof t=="string"?t.trim():t])));var nn=(e,n)=>{let t=e.filter(o=>o.configured);return{configured:t.length,connected:t.filter(o=>n?.[o.rowId]?.state==="connected").length}},tn=e=>{if(e.error!==null||e.isUnavailable||typeof e.data!="object"||e.data===null||Array.isArray(e.data))return null;let n=e.data;return Object.values(n).some(t=>"lastMessageError"in t||"statusSince"in t)?Object.fromEntries(Object.entries(n).map(([t,o])=>{let{lastMessageError:l,statusSince:r,...a}=o,d=en(l);return[t,{...a,...typeof r=="number"&&Number.isSafeInteger(r)&&r>=0&&r<=864e13?{statusSince:r}:{},...d===null?{}:{lastMessageError:d}}]})):n},ke=e=>e===null||!e.configured?{key:"settingsSection.status.incomplete",tone:"attention"}:{key:"settingsSection.status.ready",tone:"success"},on=(e,n)=>{if(e===null||!e.configured)return ke(e);let t=n?.[e.rowId];switch(t?.state){case"connecting":return{key:"settingsSection.status.connecting",tone:"working"};case"connected":return{key:"settingsSection.status.connected",tone:"success"};case"failed":case"duplicate":return{key:"settingsSection.status.notConnected",tone:F(t)};default:return{key:"settingsSection.status.ready",tone:"neutral"}}},rn=(e,n,t,o)=>{if(e===null||!e.configured)return null;let l=n?.[e.rowId];return l?.state==="failed"?ae(l)?{text:o(Re("inboxUnreadable")),variant:F(l)}:{text:[o(l.reason===void 0?"settingsSection.connection.failed":`settingsSection.connection.reason.${l.reason}`),l.hint===void 0?null:o(Re(l.hint)),q(l)||Xe(l)?null:o("settingsSection.connection.reconnect"),l.error===void 0?null:o("settingsSection.connection.details",{error:l.error})].filter(a=>a!==null).join(" "),variant:F(l)}:l?.state==="duplicate"?{text:o("settingsSection.connection.duplicate",{name:t??l.duplicateOf??""}),variant:F(l)}:null};var{jsx:i,jsxs:s,Fragment:N}=window.__ycodiumPluginHost.jsxRuntime;function an(e){let n=e.bridge.useFormatTimestamp();if(e.since===void 0)return null;let t=new Date(e.since).toISOString();return i("time",{className:"im-small im-muted",dateTime:t,children:e.t("settingsSection.connection.since",{time:n(t)})})}var ln=te(null);function sn(e){return i(ln,{value:e.bridge,children:e.children})}var Dn=new Set(["Collapsible","CollapsiblePanel","CollapsibleTrigger"]);function S(e){let n=t=>{let r=ie(ln)?.ui?.[e];return r===void 0?Dn.has(e)?xe("div",{className:t.className},t.children):null:xe(r,t)};return n.displayName=e,n}var p=S("Button"),$=S("Input"),G=S("Label"),dn=S("Switch"),le=S("Select"),se=S("SelectTrigger"),Y=S("SelectValue"),de=S("SelectPopup"),ce=S("SelectItem"),ue=S("StatusPill"),cn=S("PluginIcon"),un=S("EmptyInline"),H=S("Alert"),mn=S("AlertAction"),z=S("AlertDescription"),gn=S("Collapsible"),yn=S("CollapsibleTrigger"),fn=S("CollapsiblePanel"),V=S("Spinner"),pn=S("QRCodeSvg"),bn=S("ProxyChoiceSelect");var vn=(e,n)=>{if(e.kind==="done")return{headline:e.messageKey===void 0?n("settingsSection.action.done"):n(e.messageKey),tone:e.tone??"done",link:e.link===void 0?void 0:{url:e.link.url,label:n(e.link.labelKey)},note:void 0,headlineTone:e.tone??"done",details:(e.warnings??[]).map(d=>n(d.key,d.params))};let t=e.params?.ref,o=t===void 0?e.detail:n("rowAction.diagnostic.ref",{ref:t,detail:e.detail??""}).trimEnd(),l=e.params?.hint?.toString(),r=e.noteKey===void 0?void 0:n(e.noteKey),a=F({hint:l})==="warning"?"caution":"issue";return{headline:n(e.reasonKey,e.params),link:void 0,note:r,tone:a,headlineTone:r===void 0?a:"neutral",details:[...o===void 0?[]:[o],...(e.warnings??[]).map(d=>n(d.key,d.params))]}};var Sn=(e,n,t,o)=>{let l=o?.state==="failed"&&q(o),r=ae(o);return{actions:je.filter(a=>(a.platform===void 0||a.platform===e)&&(a.id!=="resetInbox"||r)).map(a=>({...a,descriptionKeys:[a.descriptionKey,...a.id==="resetInbox"?We(e):[]],disabled:n||t||a.id==="reconnect"&&l})),noteKey:n?"settingsSection.action.saveFirst":l?"rowAction.reconnect.notAvailable":null}},me=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),In=e=>me(e)&&Array.isArray(e.bots)&&Array.isArray(e.targets)&&me(e.delivery),wn=e=>me(e)&&In(e.view)&&Array.isArray(e.columns)&&Array.isArray(e.targetColumns)&&Array.isArray(e.proxies)?e:null,J=async(e,n,t,o)=>{try{let l=await e.commands.invoke(n,t,o);return me(l)&&l.ok===!0&&In(l.view)?l.view:null}catch{return null}},Cn=(e,n)=>n.isPending?e.phase==="asked"?{...e,phase:"refetching"}:e:n.view!==null&&!n.failed?e.phase==="refetching"||JSON.stringify(n.view)===JSON.stringify(e.view)?null:e:e.phase==="asked"?e:{...e,phase:"asked"},E=e=>e==null||e.length===0?{}:{environmentId:e},X=(e,n)=>n===null?e:`${e}:${n}`,Ne=e=>JSON.stringify([e.replyLanguage,e.delivery]);function Q(e,n,t){if(n!==void 0&&n.length>0)return e(n);if(t!==void 0&&t.length>0)return t}function hn(e,n){return n.length===0?null:n.map(t=>e(t==="required"?"settingsSection.issue.required":"settingsSection.issue.format")).join(" ")}function D(e,n,t){return`im-${(e??"here").replace(/[^A-Za-z0-9_-]/g,"")}-${n}-${t}`}function Z(e,n,t){let o=[n?`${e}-issue`:null,t?`${e}-hint`:null].filter(l=>l!==null);return o.length===0?void 0:o.join(" ")}function B(e){return s("div",{className:e.span===!0?"im-field im-span":"im-field",children:[i(G,{htmlFor:e.id,children:e.label}),e.children,e.issue?i("p",{id:`${e.id}-issue`,className:"im-small im-issue",role:"alert",children:e.issue}):null,e.description===void 0?null:i("p",{id:`${e.id}-hint`,className:"im-hint im-small im-muted",children:e.description})]})}function ge(e){let n=e.stored&&e.value===""&&!e.clearing?e.savedPlaceholder:e.placeholder;return s("div",{className:"im-secret",children:[i($,{id:e.id,type:"password",value:e.value,placeholder:n,disabled:e.disabled,autoComplete:"new-password","aria-invalid":e.invalid?!0:void 0,"aria-describedby":e.describedBy,onChange:t=>e.onChange(t.target.value)}),e.stored?i(p,{variant:"ghost",size:"sm","aria-pressed":e.clearing,disabled:e.disabled,onClick:e.onToggleClear,children:e.clearing?e.undoLabel:e.clearLabel}):null]})}function ye(e){let n=e.saving||e.busy===!0;return!e.dirty&&!e.saving&&!e.failed?null:s("div",{className:"im-span",children:[e.dirty||e.saving?s("div",{className:"im-actions",children:[s(p,{variant:e.solid?"default":"outline",disabled:n||!e.dirty,onClick:e.onSave,children:[e.saving?i(V,{}):null,e.saveLabel]}),e.dirty&&!n?i(p,{variant:"ghost",size:"sm",onClick:e.onRevert,children:e.revertLabel}):null]}):null,e.failed?i("p",{className:"im-small im-issue",role:"alert",children:e.failedLabel}):null]})}async function fe(e,n,t){try{await e.writeClipboard(n),e.notify(t("settingsSection.copied"),"success")}catch{e.notify(t("settingsSection.copyFailed"),"warning")}}var Un=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function pe(e){let n=M(()=>E(e.environmentId),[e.environmentId]),t=e.bridge.commands.useSubscription(e.command,e.payload,n),o=M(()=>Un(t.data)?e.items==="snapshots"?t.data:Je({},t.data):{},[t.data,e.items]),l=o.result,r=A(null),a=e.onSettled;Le(()=>{l===void 0||r.current===t.data||(r.current=t.data,a?.(l))},[l,t.data,a]);let d=e.t,m=l===void 0&&t.error===null&&!t.isUnavailable;return s("div",{className:"im-flow im-span",children:[t.isUnavailable||t.error!==null?i(H,{variant:"error",layout:"inline",children:i(z,{children:d("settingsSection.action.failedToRun")})}):null,o.qr===void 0?null:i("div",{className:"im-qr",children:i(pn,{value:o.qr.payload,size:176,marginSize:2,title:d("settingsSection.action.qrTitle")})}),o.status===void 0?null:s("p",{className:"im-inline im-medium",children:[m?i(V,{}):null,i("span",{children:d(o.status.statusKey,o.status.params)})]}),m&&o.status===void 0&&o.qr===void 0?s("p",{className:"im-inline im-medium",children:[i(V,{}),i("span",{children:d("settingsSection.action.running")})]}):null,o.steps===void 0?null:i("ul",{className:"im-steps im-small",children:o.steps.map(y=>s("li",{"data-state":y.state,children:[i("span",{children:d(y.labelKey)}),i("span",{className:"im-muted",children:d(`settingsSection.step.${y.state}`)})]},y.id))}),l===void 0?null:i($n,{result:l,bridge:e.bridge,t:d}),s("div",{className:"im-actions",children:[l?.kind==="failed"||o.expired===!0||t.error!==null?i(p,{variant:"ghost",size:"sm",onClick:t.refresh,children:d("settingsSection.retry")}):null,i(p,{variant:"ghost",size:"sm",onClick:e.onClose,children:d(l===void 0?"settingsSection.cancel":"settingsSection.action.close")})]})]})}var xn=e=>e==="issue"?"im-issue":e==="caution"?"im-caution":"";function $n(e){let{headline:n,headlineTone:t,tone:o,note:l,link:r,details:a}=vn(e.result,e.t),d=e.t;return s("div",{className:"im-result",children:[s("div",{className:"im-result-verdict",role:"status",children:[i("p",{className:`im-medium im-result-headline ${xn(t)}`.trimEnd(),children:n}),l===void 0?null:i("p",{className:`im-small im-result-note ${xn(o)}`.trimEnd(),children:l})]}),r===void 0?null:i("div",{className:"im-actions",children:i(p,{className:"im-link",variant:"link",size:"sm",onClick:()=>e.bridge.openExternal(r.url),children:r.label})}),a.length===0?null:s(N,{children:[i("pre",{className:"im-detail im-small",children:a.join(`
|
|
1
|
+
var Vn=window.__ycodiumPluginHost.react;var{Activity:Zn,Children:et,Component:nt,Fragment:Le,Profiler:tt,PureComponent:it,StrictMode:ot,Suspense:rt,__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE:at,__COMPILER_RUNTIME:lt,act:st,cache:dt,cacheSignal:ct,captureOwnerStack:ut,cloneElement:mt,createContext:ie,createElement:xe,createRef:gt,forwardRef:yt,isValidElement:ft,lazy:pt,memo:vt,startTransition:bt,unstable_useCacheRefresh:St,use:oe,useActionState:It,useCallback:wt,useContext:Ct,useDebugValue:ht,useDeferredValue:xt,useEffect:Me,useEffectEvent:Rt,useId:kt,useImperativeHandle:Tt,useInsertionEffect:Nt,useLayoutEffect:_t,useMemo:M,useOptimistic:Et,useReducer:Pt,useRef:A,useState:R,useSyncExternalStore:At,useTransition:Ot,version:Bt}=Vn;var O=(e,n)=>{let t=e[n];return typeof t=="string"?t.trim():""};var C="/developers/v1",Kt={uploadImage:`${C}/app/upload/image`,createFromTemplate:`${C}/manifest/upsert_by_template`,createBare:`${C}/app/create`,listApps:`${C}/app/list`,robotSwitch:e=>`${C}/robot/switch/${e}`,eventSwitch:e=>`${C}/event/switch/${e}`,eventRead:e=>`${C}/event/${e}`,eventUpdate:e=>`${C}/event/update/${e}`,callbackSwitch:e=>`${C}/callback/switch/${e}`,callbackRead:e=>`${C}/callback/${e}`,callbackUpdate:e=>`${C}/callback/update/${e}`,scopeCatalog:e=>`${C}/scope/all/${e}`,scopeUpdate:e=>`${C}/scope/update/${e}`,safeSetting:e=>`${C}/safe_setting/update/${e}`,visibleOnline:e=>`${C}/visible/online/${e}`,versionList:e=>`${C}/app_version/list/${e}`,versionCreate:e=>`${C}/app_version/create/${e}`,publishCommit:(e,n)=>`${C}/publish/commit/${e}/${n}`,secret:e=>`${C}/secret/${e}`};var Vt=10*6e4;var Ke=9e4;var Ve="settings.view",Fe="settings.connections",De="settings.saveBot",Ue="settings.removeBot",$e="settings.saveGeneral",Ge="settings.saveTarget",He="settings.removeTarget",ze="larkSetup.session",Qe="wecomSetup.session",K={labelKey:"setup.action.label",descriptionKey:"setup.action.description",badgeKey:"setup.action.badge",warningKey:"setup.action.warning"},We={checkConnection:"im.settings.checkConnection",reconnect:"im.settings.reconnect",resetInbox:"im.settings.resetInbox",copyDiagnostics:"im.settings.copyDiagnostics",larkRepair:"im.settings.larkRepair",larkCallbackProbe:"im.settings.larkCallbackProbe"},je=e=>e==="telegram"?["rowAction.resetInbox.telegramOffline"]:[],qe=[{id:"checkConnection",labelKey:"rowAction.checkConnection.label",descriptionKey:"rowAction.checkConnection.description"},{id:"reconnect",labelKey:"rowAction.reconnect.label",descriptionKey:"rowAction.reconnect.description"},{id:"resetInbox",labelKey:"rowAction.resetInbox.label",descriptionKey:"rowAction.resetInbox.description"},{id:"copyDiagnostics",labelKey:"rowAction.copyDiagnostics.label",descriptionKey:"rowAction.copyDiagnostics.description"},{id:"larkRepair",labelKey:"rowAction.larkRepair.label",descriptionKey:"rowAction.larkRepair.description",platform:"lark"},{id:"larkCallbackProbe",labelKey:"rowAction.larkCallbackProbe.label",descriptionKey:"rowAction.larkCallbackProbe.description",descriptionParams:{seconds:Ke/1e3},platform:"lark"}],Fn="lark",re=[{value:"zh-CN",labelKey:"settings.language.zhCN"},{value:"en",labelKey:"settings.language.en"}],Dn="botId",ae=e=>O(e,"platform")||Fn,Ye=(e,n)=>{let t=e.showWhen;if(t===void 0)return!0;let o=t.key==="platform"?ae(n):O(n,t.key);return t.equals.includes(o)},Je=(e,n,t)=>e.map(o=>o.key===Dn?{...o,kind:"select",options:n.map(l=>({value:l.rowId,label:`${O(l.values,"displayName")||t(l.platform)} (${l.rowId})`}))}:o),Xe=(e,n)=>{switch(n.kind){case"qr":{let{expired:t,...o}=e,l=n.expiresAt===void 0?{payload:n.payload}:{payload:n.payload,expiresAt:n.expiresAt};return{...o,qr:l}}case"status":{let t=n.params===void 0?{statusKey:n.statusKey}:{statusKey:n.statusKey,params:n.params};if(n.expired!==!0)return{...e,status:t};let{qr:o,...l}=e;return{...l,status:t,expired:!0}}case"steps":return{...e,steps:n.steps};case"done":case"failed":{let{status:t,...o}=e;return{...o,result:n}}}},Re=e=>e==="inboxUnreadable"?"settingsSection.connection.reason.inbox-unreadable":e==="notAvailable"?"settingsSection.connection.reason.not-available":`rowAction.checkConnection.hint.${e}`,q=e=>e.reason==="not-available"||e.hint==="notAvailable",le=e=>e?.state==="failed"&&(e.reason==="inbox-unreadable"||e.hint==="inboxUnreadable"),Ze=e=>e.hint==="wecomBotCredentials"||e.hint==="unauthorized"||e.hint==="larkCredentials"||e.hint==="wecomLongConnOff"||e.hint==="wecomTakenOver",V=e=>e.state==="duplicate"||q(e)||e.hint==="connecting"||e.hint==="wecomCallbackNotSeen"?"warning":"error";var en=e=>{if(!e||typeof e!="object"||Array.isArray(e)||!("code"in e)||typeof e.code!="string"||!e.code.trim()||!("reason"in e)||typeof e.reason!="string"||!e.reason.trim()||!("message"in e)||typeof e.message!="string"||!e.message.trim()||!("referenceId"in e)||typeof e.referenceId!="string"||!e.referenceId.trim()||!("at"in e)||typeof e.at!="number"||!Number.isFinite(e.at))return null;let n="messageKey"in e?e.messageKey:void 0;if(n!==void 0&&(typeof n!="string"||!n.trim()))return null;let t="messageParams"in e?e.messageParams:void 0,o;if(t!==void 0){if(!t||typeof t!="object"||Array.isArray(t)||!("detail"in t)||typeof t.detail!="string")return null;o={detail:t.detail.slice(0,500)}}return{code:e.code.slice(0,64),reason:e.reason.slice(0,64),message:e.message.slice(0,500),...n!==void 0?{messageKey:n.slice(0,128)}:{},...o===void 0?{}:{messageParams:o},referenceId:e.referenceId.slice(0,40),at:e.at}},nn=e=>!e||typeof e!="object"||Array.isArray(e)?en(e):en(Object.fromEntries(Object.entries(e).map(([n,t])=>[n,typeof t=="string"?t.trim():t])));var tn=(e,n)=>{let t=e.filter(o=>o.configured);return{configured:t.length,connected:t.filter(o=>n?.[o.rowId]?.state==="connected").length}},on=e=>{if(e.error!==null||e.isUnavailable||typeof e.data!="object"||e.data===null||Array.isArray(e.data))return null;let n=e.data;return Object.values(n).some(t=>"lastMessageError"in t||"statusSince"in t)?Object.fromEntries(Object.entries(n).map(([t,o])=>{let{lastMessageError:l,statusSince:r,...a}=o,d=nn(l);return[t,{...a,...typeof r=="number"&&Number.isSafeInteger(r)&&r>=0&&r<=864e13?{statusSince:r}:{},...d===null?{}:{lastMessageError:d}}]})):n},ke=e=>e===null||!e.configured?{key:"settingsSection.status.incomplete",tone:"attention"}:{key:"settingsSection.status.ready",tone:"success"},rn=(e,n)=>{if(e===null||!e.configured)return ke(e);let t=n?.[e.rowId];switch(t?.state){case"connecting":return{key:"settingsSection.status.connecting",tone:"working"};case"connected":return{key:"settingsSection.status.connected",tone:"success"};case"failed":case"duplicate":return{key:"settingsSection.status.notConnected",tone:V(t)};default:return{key:"settingsSection.status.ready",tone:"neutral"}}},an=(e,n,t,o)=>{if(e===null||!e.configured)return null;let l=n?.[e.rowId];return l?.state==="failed"?le(l)?{text:o(Re("inboxUnreadable")),variant:V(l)}:{text:[o(l.reason===void 0?"settingsSection.connection.failed":`settingsSection.connection.reason.${l.reason}`),l.hint===void 0?null:o(Re(l.hint)),q(l)||Ze(l)?null:o("settingsSection.connection.reconnect"),l.error===void 0?null:o("settingsSection.connection.details",{error:l.error})].filter(a=>a!==null).join(" "),variant:V(l)}:l?.state==="duplicate"?{text:o("settingsSection.connection.duplicate",{name:t??l.duplicateOf??""}),variant:V(l)}:null};var{jsx:i,jsxs:s,Fragment:T}=window.__ycodiumPluginHost.jsxRuntime;function ln(e){let n=e.bridge.useFormatTimestamp();if(e.since===void 0)return null;let t=new Date(e.since).toISOString();return i("time",{className:"im-small im-muted",dateTime:t,children:e.t("settingsSection.connection.since",{time:n(t)})})}var sn=ie(null);function dn(e){return i(sn,{value:e.bridge,children:e.children})}var Un=new Set(["Collapsible","CollapsiblePanel","CollapsibleTrigger"]);function S(e){let n=t=>{let r=oe(sn)?.ui?.[e];return r===void 0?Un.has(e)?xe("div",{className:t.className},t.children):null:xe(r,t)};return n.displayName=e,n}var p=S("Button"),$=S("Input"),G=S("Label"),cn=S("Switch"),se=S("Select"),de=S("SelectTrigger"),Y=S("SelectValue"),ce=S("SelectPopup"),J=S("SelectItem"),ue=S("StatusPill"),un=S("PluginIcon"),mn=S("EmptyInline"),H=S("Alert"),gn=S("AlertAction"),z=S("AlertDescription"),yn=S("Collapsible"),fn=S("CollapsibleTrigger"),pn=S("CollapsiblePanel"),F=S("Spinner"),vn=S("QRCodeSvg"),bn=S("ProxyChoiceSelect");var Sn=(e,n)=>{if(e.kind==="done")return{headline:e.messageKey===void 0?n("settingsSection.action.done"):n(e.messageKey),tone:e.tone??"done",link:e.link===void 0?void 0:{url:e.link.url,label:n(e.link.labelKey)},note:void 0,headlineTone:e.tone??"done",details:(e.warnings??[]).map(d=>n(d.key,d.params))};let t=e.params?.ref,o=t===void 0?e.detail:n("rowAction.diagnostic.ref",{ref:t,detail:e.detail??""}).trimEnd(),l=e.params?.hint?.toString(),r=e.noteKey===void 0?void 0:n(e.noteKey),a=V({hint:l})==="warning"?"caution":"issue";return{headline:n(e.reasonKey,e.params),link:void 0,note:r,tone:a,headlineTone:r===void 0?a:"neutral",details:[...o===void 0?[]:[o],...(e.warnings??[]).map(d=>n(d.key,d.params))]}};var In=(e,n,t,o)=>{let l=o?.state==="failed"&&q(o),r=le(o);return{actions:qe.filter(a=>(a.platform===void 0||a.platform===e)&&(a.id!=="resetInbox"||r)).map(a=>({...a,descriptionKeys:[a.descriptionKey,...a.id==="resetInbox"?je(e):[]],disabled:n||t||a.id==="reconnect"&&l})),noteKey:n?"settingsSection.action.saveFirst":l?"rowAction.reconnect.notAvailable":null}},me=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),wn=e=>me(e)&&Array.isArray(e.bots)&&Array.isArray(e.targets)&&me(e.delivery),Cn=e=>me(e)&&wn(e.view)&&Array.isArray(e.columns)&&Array.isArray(e.targetColumns)&&Array.isArray(e.proxies)?e:null,X=async(e,n,t,o)=>{try{let l=await e.commands.invoke(n,t,o);return me(l)&&l.ok===!0&&wn(l.view)?l.view:null}catch{return null}},hn=(e,n)=>n.isPending?e.phase==="asked"?{...e,phase:"refetching"}:e:n.view!==null&&!n.failed?e.phase==="refetching"||JSON.stringify(n.view)===JSON.stringify(e.view)?null:e:e.phase==="asked"?e:{...e,phase:"asked"},P=e=>e==null||e.length===0?{}:{environmentId:e},Z=(e,n)=>n===null?e:`${e}:${n}`,Te=e=>JSON.stringify([e.replyLanguage,e.delivery]);function Q(e,n,t){if(n!==void 0&&n.length>0)return e(n);if(t!==void 0&&t.length>0)return t}function xn(e,n){return n.length===0?null:n.map(t=>e(t==="required"?"settingsSection.issue.required":"settingsSection.issue.format")).join(" ")}function D(e,n,t){return`im-${(e??"here").replace(/[^A-Za-z0-9_-]/g,"")}-${n}-${t}`}function ee(e,n,t){let o=[n?`${e}-issue`:null,t?`${e}-hint`:null].filter(l=>l!==null);return o.length===0?void 0:o.join(" ")}function B(e){return s("div",{className:e.span===!0?"im-field im-span":"im-field",children:[i(G,{htmlFor:e.id,children:e.label}),e.children,e.issue?i("p",{id:`${e.id}-issue`,className:"im-small im-issue",role:"alert",children:e.issue}):null,e.description===void 0?null:i("p",{id:`${e.id}-hint`,className:"im-hint im-small im-muted",children:e.description})]})}function ge(e){let n=e.stored&&e.value===""&&!e.clearing?e.savedPlaceholder:e.placeholder;return s("div",{className:"im-secret",children:[i($,{id:e.id,type:"password",value:e.value,placeholder:n,disabled:e.disabled,autoComplete:"new-password","aria-invalid":e.invalid?!0:void 0,"aria-describedby":e.describedBy,onChange:t=>e.onChange(t.target.value)}),e.stored?i(p,{variant:"ghost",size:"sm","aria-pressed":e.clearing,disabled:e.disabled,onClick:e.onToggleClear,children:e.clearing?e.undoLabel:e.clearLabel}):null]})}function ye(e){let n=e.saving||e.busy===!0;return!e.dirty&&!e.saving&&!e.failed?null:s("div",{className:"im-span",children:[e.dirty||e.saving?s("div",{className:"im-actions",children:[s(p,{variant:e.solid?"default":"outline",disabled:n||!e.dirty,onClick:e.onSave,children:[e.saving?i(F,{}):null,e.saveLabel]}),e.dirty&&!n?i(p,{variant:"ghost",size:"sm",onClick:e.onRevert,children:e.revertLabel}):null]}):null,e.failed?i("p",{className:"im-small im-issue",role:"alert",children:e.failedLabel}):null]})}async function fe(e,n,t){try{await e.writeClipboard(n),e.notify(t("settingsSection.copied"),"success")}catch{e.notify(t("settingsSection.copyFailed"),"warning")}}var $n=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function pe(e){let n=M(()=>P(e.environmentId),[e.environmentId]),t=e.bridge.commands.useSubscription(e.command,e.payload,n),o=M(()=>$n(t.data)?e.items==="snapshots"?t.data:Xe({},t.data):{},[t.data,e.items]),l=o.result,r=A(null),a=e.onSettled;Me(()=>{l===void 0||r.current===t.data||(r.current=t.data,a?.(l))},[l,t.data,a]);let d=e.t,u=l===void 0&&t.error===null&&!t.isUnavailable;return s("div",{className:"im-flow im-span",children:[t.isUnavailable||t.error!==null?i(H,{variant:"error",layout:"inline",children:i(z,{children:d("settingsSection.action.failedToRun")})}):null,o.qr===void 0?null:i("div",{className:"im-qr",children:i(vn,{value:o.qr.payload,size:176,marginSize:2,title:d("settingsSection.action.qrTitle")})}),o.status===void 0?null:s("p",{className:"im-inline im-medium",children:[u?i(F,{}):null,i("span",{children:d(o.status.statusKey,o.status.params)})]}),u&&o.status===void 0&&o.qr===void 0?s("p",{className:"im-inline im-medium",children:[i(F,{}),i("span",{children:d("settingsSection.action.running")})]}):null,o.steps===void 0?null:i("ul",{className:"im-steps im-small",children:o.steps.map(g=>s("li",{"data-state":g.state,children:[i("span",{children:d(g.labelKey)}),i("span",{className:"im-muted",children:d(`settingsSection.step.${g.state}`)})]},g.id))}),l===void 0?null:i(Gn,{result:l,bridge:e.bridge,t:d}),s("div",{className:"im-actions",children:[l?.kind==="failed"||o.expired===!0||t.error!==null?i(p,{variant:"ghost",size:"sm",onClick:t.refresh,children:d("settingsSection.retry")}):null,i(p,{variant:"ghost",size:"sm",onClick:e.onClose,children:d(l===void 0?"settingsSection.cancel":"settingsSection.action.close")})]})]})}var Rn=e=>e==="issue"?"im-issue":e==="caution"?"im-caution":"";function Gn(e){let{headline:n,headlineTone:t,tone:o,note:l,link:r,details:a}=Sn(e.result,e.t),d=e.t;return s("div",{className:"im-result",children:[s("div",{className:"im-result-verdict",role:"status",children:[i("p",{className:`im-medium im-result-headline ${Rn(t)}`.trimEnd(),children:n}),l===void 0?null:i("p",{className:`im-small im-result-note ${Rn(o)}`.trimEnd(),children:l})]}),r===void 0?null:i("div",{className:"im-actions",children:i(p,{className:"im-link",variant:"link",size:"sm",onClick:()=>e.bridge.openExternal(r.url),children:r.label})}),a.length===0?null:s(T,{children:[i("pre",{className:"im-detail im-small",children:a.join(`
|
|
2
2
|
|
|
3
3
|
`)}),i("div",{className:"im-actions",children:i(p,{variant:"ghost",size:"sm",onClick:()=>{fe(e.bridge,a.join(`
|
|
4
4
|
|
|
5
|
-
`),d)},children:d("settingsSection.copy")})})]})]})}function Gn(e){return e.length>12?`${e.slice(0,8)}\u2022\u2022\u2022\u2022${e.slice(-4)}`:"cli_\u2022\u2022\u2022\u2022"}function Rn(e){return e.length<=10?`${e.slice(0,3)}\u2022\u2022\u2022`:`${e.slice(0,6)}\u2022\u2022\u2022\u2022${e.slice(-4)}`}var Hn={lark:{column:"larkAppId",mask:Gn},wecom:{column:"wecomBotId",mask:Rn},"wecom-app":{column:"wecomAppCorpId",mask:Rn}};function kn(e,n){let t=Hn[e];if(t===void 0)return null;let o=O(n,t.column);return o===""?null:t.mask(o)}function Te(e){return s(gn,{className:e.className===void 0?"im-collapse":`im-collapse ${e.className}`,...e.defaultOpen===void 0?{}:{defaultOpen:e.defaultOpen},...e.open===void 0?{}:{open:e.open},...e.onOpenChange===void 0?{}:{onOpenChange:e.onOpenChange},children:[s("div",{className:"im-head",children:[s(yn,{className:"im-toggle",children:[i("span",{className:"im-chevron","aria-hidden":"true"}),e.icon,i("span",{className:"im-title im-medium",children:e.title}),e.meta]}),e.actions]}),e.notice,i(fn,{children:i("div",{className:"im-panel",children:e.children})})]})}function be(e){return i("section",{className:"im-block",children:i(Te,{...e})})}function Nn(e){let n=e.columns.filter(u=>qe(u,e.values)),t=e.groupBotSettings?n.filter(u=>u.group==="essential"):n,o=e.groupBotSettings?n.filter(u=>u.group!=="essential"):[],l=e.issues.filter(u=>o.some(f=>f.key===u.column)),r=JSON.stringify(l),[a,d]=R(()=>({open:l.length>0,issues:r})),m=a.open||a.issues!==r&&l.length>0;a.issues!==r&&d({open:m,issues:r});let y=u=>i(zn,{column:u,scope:e.scope,environmentId:e.environmentId,proxies:e.proxies,values:e.values,secrets:e.secrets,clearSecrets:e.clearSecrets,storedSecrets:e.storedSecrets,issues:e.issues,disabled:e.disabled,t:e.t,onValue:e.onValue,onSecret:e.onSecret,onToggleClear:e.onToggleClear},u.key);return s(N,{children:[t.map(y),e.publicFields.map(u=>i(Wn,{field:u,scope:e.scope,environmentId:e.environmentId,bridge:e.bridge,t:e.t},u.key)),o.length===0?null:i(Te,{className:"im-span",title:l.length>0?e.t("settingsSection.moreSettingsIssues",{count:l.length}):e.t("settingsSection.moreSettings"),open:m,onOpenChange:u=>d({open:u,issues:r}),children:i("div",{className:"im-form",children:o.map(y)})})]})}function zn(e){let n=e.column,t=D(e.environmentId,e.scope,n.key),o=Q(e.t,n.labelKey,n.label)??n.key,l=Q(e.t,n.descriptionKey,n.description),r=Q(e.t,n.placeholderKey,n.placeholder),a=hn(e.t,e.issues.filter(m=>m.column===n.key).map(m=>m.code)),d=Z(t,a!==null,l!==void 0);return n.kind==="password"?i(B,{id:t,label:o,description:l,issue:a,children:i(ge,{id:t,value:e.secrets[n.key]??"",stored:e.storedSecrets[n.key]===!0,clearing:e.clearSecrets.includes(n.key),disabled:e.disabled,invalid:a!==null,describedBy:d,placeholder:r,savedPlaceholder:e.t("settingsSection.secret.saved"),clearLabel:e.t("settingsSection.secret.clear"),undoLabel:e.t("settingsSection.secret.clearUndo"),onChange:m=>{m!==(e.secrets[n.key]??"")&&e.onSecret(n.key,m)},onToggleClear:()=>e.onToggleClear(n.key)})}):n.kind==="select"?i(Qn,{column:n,id:t,label:o,description:l,issue:a,described:d,values:e.values,disabled:e.disabled,t:e.t,onValue:e.onValue}):n.kind==="proxy"?i("div",{className:"im-field",children:i(bn,{id:t,label:o,hint:l,value:e.values[n.key]??"",proxies:e.proxies,disabled:e.disabled,onChange:m=>{m!==(e.values[n.key]??"")&&e.onValue(n.key,m)},children:a===null?null:i("p",{id:`${t}-issue`,className:"im-small im-issue",role:"alert",children:a})})}):i(B,{id:t,label:o,description:l,issue:a,children:i($,{id:t,type:"text",value:e.values[n.key]??"",placeholder:r,disabled:e.disabled,"aria-invalid":a!==null?!0:void 0,"aria-describedby":d,onChange:m=>{let y=m.target.value;y!==(e.values[n.key]??"")&&e.onValue(n.key,y)}})})}function Qn(e){let n=e.values[e.column.key]??"",t=e.column.options??[],o=t.find(r=>r.value===n),l=n===""?void 0:o===void 0?n:Q(e.t,o.labelKey,o.label)??o.value;return i(B,{id:e.id,label:e.label,description:e.description,issue:e.issue,children:s(le,{className:"im-wide",value:n===""?null:n,disabled:e.disabled,onValueChange:r=>{let a=r??"";a!==n&&e.onValue(e.column.key,a)},children:[i(se,{id:e.id,"aria-invalid":e.issue!==null?!0:void 0,"aria-describedby":e.described,children:l===void 0?i(Y,{placeholder:e.t("settingsSection.select.default")}):i(Y,{children:l})}),i(de,{children:t.map(r=>r.value===""?null:i(ce,{value:r.value,children:Q(e.t,r.labelKey,r.label)??r.value},r.value))})]})})}function Wn(e){let n=D(e.environmentId,`${e.scope}-pub`,e.field.key);return s("div",{className:"im-field im-span",children:[i(G,{children:e.t(`settingsSection.publicField.${e.field.key}`)}),e.field.value===""?null:s("div",{className:"im-inline im-public-row",children:[i("span",{id:n,className:"im-public-value im-small",children:jn(e.field.value)}),e.field.copyable?i(p,{variant:"ghost",size:"sm",onClick:()=>{fe(e.bridge,e.field.value,e.t)},children:e.t("settingsSection.copy")}):null]}),e.field.hint===void 0?null:i("p",{className:"im-small im-muted",children:e.t(`settingsSection.publicFieldHint.${e.field.hint}`)})]})}function jn(e){let n=0;return e.split(/(?<=\/)(?!\/)/).map(t=>{let o=n;return n+=t.length,s(Be,{children:[o===0?null:i("wbr",{}),t]},o)})}function Tn(e){let n={};for(let[r,a]of Object.entries(e.values))(e.baseline[r]??"")!==a&&(n[r]=a);let t={};for(let[r,a]of Object.entries(e.secrets))a!==""&&(t[r]=a);let o=[];for(let r of e.clearSecrets)Object.hasOwn(t,r)||o.includes(r)||o.push(r);return e.rowId===void 0||Object.keys(n).length>0||Object.keys(t).length>0||o.length>0?{changed:!0,edit:{...e.rowId===void 0?{}:{rowId:e.rowId},values:n,...Object.keys(t).length>0?{secrets:t}:{},...o.length>0?{clearSecrets:o}:{}}}:{changed:!1}}function qn(e){let n=e.trim();if(!/^\d+$/.test(n))return null;let t=Number(n);return!Number.isInteger(t)||t<1||t>65535?null:t}function _n(e){let n={};e.replyLanguage!==e.baseline.replyLanguage&&(n.replyLanguage=e.replyLanguage),e.enabled!==e.baseline.enabled&&(n.deliveryHttpEnabled=e.enabled);let t=!1;if(e.enabled){let o=qn(e.port);o===null?t=!0:o!==e.baseline.port&&(n.deliveryHttpPort=o),e.token!==""?n.deliveryHttpToken=e.token:e.clearToken&&e.baseline.hasToken&&(n.clearDeliveryHttpToken=!0)}return t?{changed:!0,invalidPort:!0}:Object.keys(n).length===0?{changed:!1}:{changed:!0,invalidPort:!1,payload:n}}var Pn=te({activeId:null,activate:()=>{}});function En(e){return i(Pn,{value:{activeId:e.activeId,activate:e.activate},children:e.children})}function ve(e){let n=ie(Pn);return{chosen:n.activeId===e,activate:()=>n.activate(e)}}function Se(e,n){let t=A(!1);return{cancelProps:{autoFocus:!0,"aria-describedby":e,onClick:()=>{t.current=!0,n()}},confirmProps:{"aria-describedby":e},triggerRef:o=>{o===null||!t.current||(t.current=!1,o.focus())}}}function Ie(e,n){return{signature:n,values:{...e?.values},secrets:{},clearSecrets:[],saving:!1,failed:!1,confirming:!1,removing:!1,removeFailed:!1}}function _e(e){let{kind:n,row:t}=e,o=t===null?n.newSlot:JSON.stringify(t),l=ve(X(n.newSlot,t?.rowId??null)),r=A(0),[a,d]=R(()=>Ie(t,o)),m=t!==null&&n.removeHintKey!==void 0?`im-remove-consequence-${n.newSlot}-${t.rowId}`:void 0,y=Se(m,()=>d(g=>({...g,confirming:!1})));a.signature!==o&&(r.current+=1,d(Ie(t,o)));let u=Tn({...t===null?{}:{rowId:t.rowId},baseline:t?.values??{},values:a.values,secrets:a.secrets,clearSecrets:a.clearSecrets}),f=u.changed,h=t===null||!t.configured,v=e.status??ke(t),w=e.notice??null,c=a.saving||a.removing;function x(g){l.activate(),d(b=>({...g(b),failed:!1}))}function k(){if(!u.changed||c)return;l.activate();let g=u.edit,b=++r.current;d(I=>({...I,saving:!0,failed:!1})),J(e.bridge,n.saveCommand,g,E(e.environmentId)).then(I=>{if(r.current!==b)return;if(I===null){d(U=>({...U,saving:!1,failed:!0}));return}let P=t===null?void 0:n.rows(I).find(U=>U.rowId===t.rowId);P!==void 0&&d(Ie(P,JSON.stringify(P))),e.onSaved(I)})}function L(){if(t===null){e.onDiscard();return}let g=t.rowId,b=++r.current;d(I=>({...I,removing:!0,removeFailed:!1})),J(e.bridge,n.removeCommand,{rowId:g},E(e.environmentId)).then(I=>{if(r.current===b){if(I===null){d(P=>({...P,removing:!1,removeFailed:!0,confirming:!0}));return}e.onSaved(I)}})}return s(be,{title:e.title(a.values),icon:e.icon?.(a.values),defaultOpen:h,meta:s(N,{children:[e.meta?.(a.values),s("span",{className:"im-status",children:[e.statusMeta,i(ue,{tone:v.tone,children:e.t(v.key)})]})]}),actions:a.confirming?s("div",{className:"im-actions",children:[i(p,{type:"button",variant:"ghost",size:"sm",disabled:a.removing||a.saving,...y.cancelProps,children:e.t("settingsSection.cancel")}),i(p,{type:"button",variant:"destructive",size:"sm",disabled:a.removing||a.saving,...y.confirmProps,onClick:L,children:e.t(n.removeConfirmKey)})]}):i(p,{type:"button",variant:"ghost",size:"sm",disabled:c,ref:y.triggerRef,onClick:()=>d(g=>({...g,confirming:!0,removeFailed:!1})),children:e.t("settingsSection.remove")}),notice:s(N,{children:[e.summary,a.confirming&&t!==null&&n.removeHintKey!==void 0?i("p",{id:m,children:e.t(n.removeHintKey)}):null,a.removeFailed?i("p",{className:"im-small im-issue",role:"alert",children:e.t(n.removeFailedKey)}):null]}),children:[w===null?null:i(H,{variant:w.variant,children:i(z,{children:w.text})}),s("div",{className:"im-form",children:[i(Nn,{scope:`${n.newSlot}-${t?.rowId??"new"}`,environmentId:e.environmentId,columns:e.columns,groupBotSettings:n.groupBotSettings===!0,proxies:e.proxies,values:a.values,secrets:a.secrets,clearSecrets:a.clearSecrets,storedSecrets:t?.secrets??{},issues:t?.issues??[],publicFields:t?.publicFields??[],disabled:c,bridge:e.bridge,t:e.t,onValue:(g,b)=>x(I=>({...I,values:{...I.values,[g]:b}})),onSecret:(g,b)=>x(I=>({...I,secrets:{...I.secrets,[g]:b}})),onToggleClear:g=>x(b=>({...b,clearSecrets:b.clearSecrets.includes(g)?b.clearSecrets.filter(I=>I!==g):[...b.clearSecrets,g]}))}),e.extra?.({dirty:f,frozen:c}),i(ye,{dirty:f,saving:a.saving,busy:a.removing,solid:l.chosen&&f,failed:a.failed,saveLabel:e.t("settingsSection.save"),revertLabel:e.t("settingsSection.revert"),failedLabel:e.t("settingsSection.saveFailed"),onSave:k,onRevert:()=>{r.current+=1,d(Ie(t,o))}})]})]})}function An(e){let n=e.bridge.useFormatTimestamp(),{error:t,t:o}=e;if(t===void 0)return null;let l=new Date(t.at),r=Number.isFinite(l.getTime())?l.toISOString():null;return s("div",{className:"im-small",role:"status",children:[s("p",{children:[i("strong",{className:"im-issue",children:o("settingsSection.lastMessageError.title")}),o("settingsSection.lastMessageError.separator"),i("span",{children:t.messageKey===void 0?t.message:o(t.messageKey,{...t.messageParams,defaultValue:t.message})})]}),s("p",{className:"im-muted",children:[o("settingsSection.lastMessageError.code",{code:t.code})," \xB7 ",o("settingsSection.lastMessageError.reference",{referenceId:t.referenceId}),r===null?null:s(N,{children:[" \xB7 ",i("time",{dateTime:r,children:n(r)})]})]})]})}var we={groupBotSettings:!0,newSlot:"im-new-row",saveCommand:Ve,removeCommand:De,rows:e=>e.bots,removeConfirmKey:"settingsSection.removeConfirm",removeHintKey:"settingsSection.removeHint",removeFailedKey:"settingsSection.removeFailed"},Ce={newSlot:"im-new-target",saveCommand:$e,removeCommand:Ge,rows:e=>e.targets,removeConfirmKey:"settingsSection.target.removeConfirm",removeFailedKey:"settingsSection.target.removeFailed"},On=(e,n,t)=>{let o=(e.displayName??"").trim();return o.length>0?o:t(`platform.${n}`)};function Pe(e){let{bot:n,t}=e,o=e.bots.find(f=>f.rowId===(n===null?void 0:e.connections?.[n.rowId]?.duplicateOf)),l=rn(n,e.connections,o===void 0?void 0:On(o.values,o.platform,t),t),[r,a]=R(null),[d,m]=R(!1),y=n===null?void 0:`im-reset-consequence-${n.rowId}`,u=Se(y,()=>m(!1));return i(_e,{...e,kind:we,row:n,status:on(n,e.connections),statusMeta:n?.configured&&e.connections?.[n.rowId]?.statusSince!==void 0?i(an,{since:e.connections[n.rowId]?.statusSince,bridge:e.bridge,t}):null,notice:l,summary:n===null?null:i(An,{error:e.connections?.[n.rowId]?.lastMessageError,bridge:e.bridge,t}),title:f=>On(f,re(f),t),icon:f=>{let h=O(f,"platform");if(h==="")return null;let w=e.columns.find(c=>c.key==="platform")?.options?.find(c=>c.value===h)?.icon;return w?i(cn,{name:w}):null},meta:f=>{let h=re(f),v=kn(h,f),w=t(`platform.${h}`);return i("span",{className:"im-small im-muted",...v===null?{}:{title:v},children:v===null?w:`${w} \xB7 ${v}`})},extra:({dirty:f,frozen:h})=>{if(n===null)return null;let v=Sn(n.platform,f,h,e.connections?.[n.rowId]),w=v.actions.find(c=>c.id==="resetInbox");return s(N,{children:[s("div",{className:"im-span",children:[d&&w!==void 0?s(N,{children:[i("p",{id:y,children:w.descriptionKeys.map(c=>t(c)).join(" ")}),s("div",{className:"im-actions",children:[i(p,{type:"button",variant:"ghost",size:"sm",disabled:h,...u.cancelProps,children:t("settingsSection.cancel")}),i(p,{type:"button",variant:"destructive",size:"sm",disabled:w.disabled,...u.confirmProps,onClick:()=>{m(!1),a({id:"resetInbox",payload:{rowId:n.rowId}})},children:t("rowAction.resetInbox.confirm")})]})]}):i("div",{className:"im-actions",children:v.actions.map(c=>i(p,{type:"button",variant:"ghost",size:"sm",disabled:c.disabled,title:c.descriptionKeys.map(x=>t(x,c.descriptionParams)).join(" "),ref:c.id==="resetInbox"?u.triggerRef:void 0,onClick:()=>{c.id==="resetInbox"?m(!0):a({id:c.id,payload:{rowId:n.rowId}})},children:t(c.labelKey)},c.id))}),v.noteKey!==null?i("p",{className:"im-small im-muted",children:t(v.noteKey)}):null]}),r===null?null:i(pe,{bridge:e.bridge,command:Qe[r.id],payload:r.payload,items:"latest",environmentId:e.environmentId,t,onClose:()=>a(null)},r.id)]})}})}function Ee(e){let{t:n}=e;return i(_e,{...e,kind:Ce,row:e.target,title:t=>{let o=(t.name??"").trim()||(t.targetId??"").trim();return o.length>0?o:n("settingsSection.target.untitled")}})}var Yn="im-general";function he(e,n){return{signature:n,replyLanguage:e.replyLanguage,enabled:e.delivery.enabled,port:String(e.delivery.port),token:"",clearToken:!1,saving:!1,failed:!1}}function Bn(e){let n=e.view,t=Ne(n),o=ve(Yn),l=A(0),[r,a]=R(()=>he(n,t));r.signature!==t&&(l.current+=1,a(he(n,t)));let d=_n({baseline:{replyLanguage:n.replyLanguage,enabled:n.delivery.enabled,port:n.delivery.port,hasToken:n.delivery.hasToken},replyLanguage:r.replyLanguage,enabled:r.enabled,port:r.port,token:r.token,clearToken:r.clearToken}),m=d.changed,y=d.changed&&d.invalidPort,u=D(e.environmentId,"general","port"),f=D(e.environmentId,"general","token"),h=D(e.environmentId,"general","language");function v(c){o.activate(),a(x=>({...x,...c,failed:!1}))}function w(){if(!d.changed||r.saving)return;if(o.activate(),d.invalidPort){a(k=>({...k,failed:!0}));return}let c=d.payload,x=++l.current;a(k=>({...k,saving:!0,failed:!1})),J(e.bridge,Ue,c,E(e.environmentId)).then(k=>{if(l.current===x){if(k===null){a(L=>({...L,saving:!1,failed:!0}));return}a(he(k,Ne(k))),e.onSaved(k)}})}return i(be,{title:e.t("settingsSection.general"),defaultOpen:!1,children:s("div",{className:"im-form",children:[i(B,{id:h,label:e.t("settings.language.label"),description:e.t("settings.language.description"),children:s(le,{className:"im-wide",value:r.replyLanguage,disabled:r.saving,onValueChange:c=>{let x=oe.find(k=>k.value===c);x===void 0||x.value===r.replyLanguage||v({replyLanguage:x.value})},children:[i(se,{id:h,"aria-describedby":`${h}-hint`,children:i(Y,{children:oe.filter(c=>c.value===r.replyLanguage).map(c=>e.t(c.labelKey))})}),i(de,{children:oe.map(c=>i(ce,{value:c.value,children:e.t(c.labelKey)},c.value))})]})}),s("div",{className:"im-field",children:[s(G,{className:"im-inline",children:[i("span",{className:"im-medium",children:e.t("settings.deliveryHttp.enabled.label")}),i(dn,{checked:r.enabled,disabled:r.saving,onCheckedChange:c=>{c!==r.enabled&&v({enabled:c})}})]}),i("p",{className:"im-small im-muted",children:e.t("settings.deliveryHttp.enabled.description")})]}),r.enabled?i(B,{id:u,label:e.t("settings.deliveryHttp.port.label"),description:e.t("settings.deliveryHttp.port.description"),issue:y?e.t("settingsSection.issue.format"):null,children:i($,{id:u,type:"number",value:r.port,disabled:r.saving,"aria-invalid":y?!0:void 0,"aria-describedby":Z(u,y,!0),onChange:c=>{c.target.value!==r.port&&v({port:c.target.value})}})}):null,r.enabled?i(B,{id:f,label:e.t("settings.deliveryHttp.token.label"),description:e.t("settings.deliveryHttp.token.description"),children:i(ge,{id:f,value:r.token,stored:n.delivery.hasToken,clearing:r.clearToken,disabled:r.saving,invalid:!1,describedBy:Z(f,!1,!0),savedPlaceholder:e.t("settingsSection.secret.saved"),clearLabel:e.t("settingsSection.secret.clear"),undoLabel:e.t("settingsSection.secret.clearUndo"),onChange:c=>{c!==r.token&&v({token:c})},onToggleClear:()=>v({clearToken:!r.clearToken})})}):null,i(ye,{dirty:m,saving:r.saving,solid:o.chosen&&m,failed:r.failed,saveLabel:e.t("settingsSection.save"),revertLabel:e.t("settingsSection.revert"),failedLabel:e.t("settingsSection.saveFailed"),onSave:w,onRevert:()=>{l.current+=1,a(he(n,t))}})]})})}var Ln=`
|
|
5
|
+
`),d)},children:d("settingsSection.copy")})})]})]})}function Hn(e){return e.length>12?`${e.slice(0,8)}\u2022\u2022\u2022\u2022${e.slice(-4)}`:"cli_\u2022\u2022\u2022\u2022"}function kn(e){return e.length<=10?`${e.slice(0,3)}\u2022\u2022\u2022`:`${e.slice(0,6)}\u2022\u2022\u2022\u2022${e.slice(-4)}`}var zn={lark:{column:"larkAppId",mask:Hn},wecom:{column:"wecomBotId",mask:kn},"wecom-app":{column:"wecomAppCorpId",mask:kn}};function Tn(e,n){let t=zn[e];if(t===void 0)return null;let o=O(n,t.column);return o===""?null:t.mask(o)}function Ne(e){return s(yn,{className:e.className===void 0?"im-collapse":`im-collapse ${e.className}`,...e.defaultOpen===void 0?{}:{defaultOpen:e.defaultOpen},...e.open===void 0?{}:{open:e.open},...e.onOpenChange===void 0?{}:{onOpenChange:e.onOpenChange},children:[s("div",{className:"im-head",children:[s(fn,{className:"im-toggle",children:[i("span",{className:"im-chevron","aria-hidden":"true"}),e.icon,i("span",{className:"im-title im-medium",children:e.title}),e.meta]}),e.actions]}),e.notice,i(pn,{children:i("div",{className:"im-panel",children:e.children})})]})}function ve(e){return i("section",{className:"im-block",children:i(Ne,{...e})})}var _e="\0empty";function Nn(e){let n=e.columns.filter(m=>Ye(m,e.values)),t=e.groupBotSettings?n.filter(m=>m.group==="essential"):n,o=e.groupBotSettings?n.filter(m=>m.group!=="essential"):[],l=e.issues.filter(m=>o.some(f=>f.key===m.column)),r=JSON.stringify(l),[a,d]=R(()=>({open:l.length>0,issues:r})),u=a.open||a.issues!==r&&l.length>0;a.issues!==r&&d({open:u,issues:r});let g=m=>i(Qn,{column:m,scope:e.scope,environmentId:e.environmentId,proxies:e.proxies,values:e.values,savedValues:e.savedValues,secrets:e.secrets,clearSecrets:e.clearSecrets,storedSecrets:e.storedSecrets,issues:e.issues,disabled:e.disabled,t:e.t,onValue:e.onValue,onSecret:e.onSecret,onToggleClear:e.onToggleClear},m.key);return s(T,{children:[t.map(g),e.publicFields.map(m=>i(jn,{field:m,scope:e.scope,environmentId:e.environmentId,bridge:e.bridge,t:e.t},m.key)),o.length===0?null:i(Ne,{className:"im-span",title:l.length>0?e.t("settingsSection.moreSettingsIssues",{count:l.length}):e.t("settingsSection.moreSettings"),open:u,onOpenChange:m=>d({open:m,issues:r}),children:i("div",{className:"im-form",children:o.map(g)})})]})}function Qn(e){let n=e.column,t=D(e.environmentId,e.scope,n.key),o=Q(e.t,n.labelKey,n.label)??n.key,l=Q(e.t,n.descriptionKey,n.description),r=Q(e.t,n.placeholderKey,n.placeholder),a=xn(e.t,e.issues.filter(u=>u.column===n.key).map(u=>u.code)),d=ee(t,a!==null,l!==void 0);return n.kind==="password"?i(B,{id:t,label:o,description:l,issue:a,children:i(ge,{id:t,value:e.secrets[n.key]??"",stored:e.storedSecrets[n.key]===!0,clearing:e.clearSecrets.includes(n.key),disabled:e.disabled,invalid:a!==null,describedBy:d,placeholder:r,savedPlaceholder:e.t("settingsSection.secret.saved"),clearLabel:e.t("settingsSection.secret.clear"),undoLabel:e.t("settingsSection.secret.clearUndo"),onChange:u=>{u!==(e.secrets[n.key]??"")&&e.onSecret(n.key,u)},onToggleClear:()=>e.onToggleClear(n.key)})}):n.kind==="select"?i(Wn,{column:n,id:t,label:o,description:l,issue:a,described:d,values:e.values,savedValues:e.savedValues,disabled:e.disabled,t:e.t,onValue:e.onValue}):n.kind==="proxy"?i("div",{className:"im-field",children:i(bn,{id:t,label:o,hint:l,value:e.values[n.key]??"",proxies:e.proxies,disabled:e.disabled,onChange:u=>{u!==(e.values[n.key]??"")&&e.onValue(n.key,u)},children:a===null?null:i("p",{id:`${t}-issue`,className:"im-small im-issue",role:"alert",children:a})})}):i(B,{id:t,label:o,description:l,issue:a,children:i($,{id:t,type:"text",value:e.values[n.key]??"",placeholder:r,disabled:e.disabled,"aria-invalid":a!==null?!0:void 0,"aria-describedby":d,onChange:u=>{let g=u.target.value;g!==(e.values[n.key]??"")&&e.onValue(n.key,g)}})})}function Wn(e){let n=e.values[e.column.key]??"",t=e.savedValues[e.column.key]??"",o=e.column.options??[],l=o.some(u=>u.value===""),r=o.find(u=>u.value===n),a=u=>e.column.unavailableLabelKey===void 0?u:e.t(e.column.unavailableLabelKey,{value:u}),d=n===""&&r===void 0?void 0:r===void 0?a(n):Q(e.t,r.labelKey,r.label)??r.value;return i(B,{id:e.id,label:e.label,description:e.description,issue:e.issue,children:s(se,{className:"im-wide",value:n===""?l?_e:null:n,disabled:e.disabled,onValueChange:u=>{let g=l&&u===_e?"":u??"";g!==n&&e.onValue(e.column.key,g)},children:[i(de,{id:e.id,"aria-invalid":e.issue!==null?!0:void 0,"aria-describedby":e.described,children:d===void 0?i(Y,{placeholder:e.t("settingsSection.select.default")}):i(Y,{children:d})}),s(ce,{children:[e.column.listsUnknownValue===!0&&t!==""&&!o.some(u=>u.value===t)?i(J,{value:t,disabled:e.column.unavailableLabelKey!==void 0,children:a(t)}):null,o.map(u=>i(J,{value:u.value===""?_e:u.value,children:Q(e.t,u.labelKey,u.label)??u.value},u.value))]})]})})}function jn(e){let n=D(e.environmentId,`${e.scope}-pub`,e.field.key);return s("div",{className:"im-field im-span",children:[i(G,{children:e.t(`settingsSection.publicField.${e.field.key}`)}),e.field.value===""?null:s("div",{className:"im-inline im-public-row",children:[i("span",{id:n,className:"im-public-value im-small",children:qn(e.field.value)}),e.field.copyable?i(p,{variant:"ghost",size:"sm",onClick:()=>{fe(e.bridge,e.field.value,e.t)},children:e.t("settingsSection.copy")}):null]}),e.field.hint===void 0?null:i("p",{className:"im-small im-muted",children:e.t(`settingsSection.publicFieldHint.${e.field.hint}`)})]})}function qn(e){let n=0;return e.split(/(?<=\/)(?!\/)/).map(t=>{let o=n;return n+=t.length,s(Le,{children:[o===0?null:i("wbr",{}),t]},o)})}function _n(e){let n={};for(let[r,a]of Object.entries(e.values))(e.baseline[r]??"")!==a&&(n[r]=a);let t={};for(let[r,a]of Object.entries(e.secrets))a!==""&&(t[r]=a);let o=[];for(let r of e.clearSecrets)Object.hasOwn(t,r)||o.includes(r)||o.push(r);return e.rowId===void 0||Object.keys(n).length>0||Object.keys(t).length>0||o.length>0?{changed:!0,edit:{...e.rowId===void 0?{}:{rowId:e.rowId},values:n,...Object.keys(t).length>0?{secrets:t}:{},...o.length>0?{clearSecrets:o}:{}}}:{changed:!1}}function Yn(e){let n=e.trim();if(!/^\d+$/.test(n))return null;let t=Number(n);return!Number.isInteger(t)||t<1||t>65535?null:t}function En(e){let n={};e.replyLanguage!==e.baseline.replyLanguage&&(n.replyLanguage=e.replyLanguage),e.enabled!==e.baseline.enabled&&(n.deliveryHttpEnabled=e.enabled);let t=!1;if(e.enabled){let o=Yn(e.port);o===null?t=!0:o!==e.baseline.port&&(n.deliveryHttpPort=o),e.token!==""?n.deliveryHttpToken=e.token:e.clearToken&&e.baseline.hasToken&&(n.clearDeliveryHttpToken=!0)}return t?{changed:!0,invalidPort:!0}:Object.keys(n).length===0?{changed:!1}:{changed:!0,invalidPort:!1,payload:n}}var Pn=ie({activeId:null,activate:()=>{}});function An(e){return i(Pn,{value:{activeId:e.activeId,activate:e.activate},children:e.children})}function be(e){let n=oe(Pn);return{chosen:n.activeId===e,activate:()=>n.activate(e)}}function Se(e,n){let t=A(!1);return{cancelProps:{autoFocus:!0,"aria-describedby":e,onClick:()=>{t.current=!0,n()}},confirmProps:{"aria-describedby":e},triggerRef:o=>{o===null||!t.current||(t.current=!1,o.focus())}}}function Ie(e,n){return{signature:n,values:{...e?.values},secrets:{},clearSecrets:[],saving:!1,failed:!1,confirming:!1,removing:!1,removeFailed:!1}}function Ee(e){let{kind:n,row:t}=e,o=t===null?n.newSlot:JSON.stringify(t),l=be(Z(n.newSlot,t?.rowId??null)),r=A(0),[a,d]=R(()=>Ie(t,o)),u=t!==null&&n.removeHintKey!==void 0?`im-remove-consequence-${n.newSlot}-${t.rowId}`:void 0,g=Se(u,()=>d(y=>({...y,confirming:!1})));a.signature!==o&&(r.current+=1,d(Ie(t,o)));let m=_n({...t===null?{}:{rowId:t.rowId},baseline:t?.values??{},values:a.values,secrets:a.secrets,clearSecrets:a.clearSecrets}),f=m.changed,h=t===null||!t.configured,b=e.status??ke(t),w=e.notice??null,c=a.saving||a.removing;function x(y){l.activate(),d(v=>({...y(v),failed:!1}))}function k(){if(!m.changed||c)return;l.activate();let y=m.edit,v=++r.current;d(I=>({...I,saving:!0,failed:!1})),X(e.bridge,n.saveCommand,y,P(e.environmentId)).then(I=>{if(r.current!==v)return;if(I===null){d(U=>({...U,saving:!1,failed:!0}));return}let E=t===null?void 0:n.rows(I).find(U=>U.rowId===t.rowId);E!==void 0&&d(Ie(E,JSON.stringify(E))),e.onSaved(I)})}function L(){if(t===null){e.onDiscard();return}let y=t.rowId,v=++r.current;d(I=>({...I,removing:!0,removeFailed:!1})),X(e.bridge,n.removeCommand,{rowId:y},P(e.environmentId)).then(I=>{if(r.current===v){if(I===null){d(E=>({...E,removing:!1,removeFailed:!0,confirming:!0}));return}e.onSaved(I)}})}return s(ve,{title:e.title(a.values),icon:e.icon?.(a.values),defaultOpen:h,meta:s(T,{children:[e.meta?.(a.values),s("span",{className:"im-status",children:[e.statusMeta,i(ue,{tone:b.tone,children:e.t(b.key)})]})]}),actions:a.confirming?s("div",{className:"im-actions",children:[i(p,{type:"button",variant:"ghost",size:"sm",disabled:a.removing||a.saving,...g.cancelProps,children:e.t("settingsSection.cancel")}),i(p,{type:"button",variant:"destructive",size:"sm",disabled:a.removing||a.saving,...g.confirmProps,onClick:L,children:e.t(n.removeConfirmKey)})]}):i(p,{type:"button",variant:"ghost",size:"sm",disabled:c,ref:g.triggerRef,onClick:()=>d(y=>({...y,confirming:!0,removeFailed:!1})),children:e.t("settingsSection.remove")}),notice:s(T,{children:[e.summary,a.confirming&&t!==null&&n.removeHintKey!==void 0?i("p",{id:u,children:e.t(n.removeHintKey)}):null,a.removeFailed?i("p",{className:"im-small im-issue",role:"alert",children:e.t(n.removeFailedKey)}):null]}),children:[w===null?null:i(H,{variant:w.variant,children:i(z,{children:w.text})}),s("div",{className:"im-form",children:[i(Nn,{scope:`${n.newSlot}-${t?.rowId??"new"}`,environmentId:e.environmentId,columns:e.columns,groupBotSettings:n.groupBotSettings===!0,proxies:e.proxies,values:a.values,savedValues:t?.values??{},secrets:a.secrets,clearSecrets:a.clearSecrets,storedSecrets:t?.secrets??{},issues:t?.issues??[],publicFields:t?.publicFields??[],disabled:c,bridge:e.bridge,t:e.t,onValue:(y,v)=>x(I=>({...I,values:{...I.values,[y]:v}})),onSecret:(y,v)=>x(I=>({...I,secrets:{...I.secrets,[y]:v}})),onToggleClear:y=>x(v=>({...v,clearSecrets:v.clearSecrets.includes(y)?v.clearSecrets.filter(I=>I!==y):[...v.clearSecrets,y]}))}),e.extra?.({dirty:f,frozen:c}),i(ye,{dirty:f,saving:a.saving,busy:a.removing,solid:l.chosen&&f,failed:a.failed,saveLabel:e.t("settingsSection.save"),revertLabel:e.t("settingsSection.revert"),failedLabel:e.t("settingsSection.saveFailed"),onSave:k,onRevert:()=>{r.current+=1,d(Ie(t,o))}})]})]})}function On(e){let n=e.bridge.useFormatTimestamp(),{error:t,t:o}=e;if(t===void 0)return null;let l=new Date(t.at),r=Number.isFinite(l.getTime())?l.toISOString():null;return s("div",{className:"im-small",role:"status",children:[s("p",{children:[i("strong",{className:"im-issue",children:o("settingsSection.lastMessageError.title")}),o("settingsSection.lastMessageError.separator"),i("span",{children:t.messageKey===void 0?t.message:o(t.messageKey,{...t.messageParams,defaultValue:t.message})})]}),s("p",{className:"im-muted",children:[o("settingsSection.lastMessageError.code",{code:t.code})," \xB7 ",o("settingsSection.lastMessageError.reference",{referenceId:t.referenceId}),r===null?null:s(T,{children:[" \xB7 ",i("time",{dateTime:r,children:n(r)})]})]})]})}var we={groupBotSettings:!0,newSlot:"im-new-row",saveCommand:De,removeCommand:Ue,rows:e=>e.bots,removeConfirmKey:"settingsSection.removeConfirm",removeHintKey:"settingsSection.removeHint",removeFailedKey:"settingsSection.removeFailed"},Ce={newSlot:"im-new-target",saveCommand:Ge,removeCommand:He,rows:e=>e.targets,removeConfirmKey:"settingsSection.target.removeConfirm",removeFailedKey:"settingsSection.target.removeFailed"},Bn=(e,n,t)=>{let o=(e.displayName??"").trim();return o.length>0?o:t(`platform.${n}`)};function Pe(e){let{bot:n,t}=e,o=e.bots.find(f=>f.rowId===(n===null?void 0:e.connections?.[n.rowId]?.duplicateOf)),l=an(n,e.connections,o===void 0?void 0:Bn(o.values,o.platform,t),t),[r,a]=R(null),[d,u]=R(!1),g=n===null?void 0:`im-reset-consequence-${n.rowId}`,m=Se(g,()=>u(!1));return i(Ee,{...e,kind:we,row:n,status:rn(n,e.connections),statusMeta:n?.configured&&e.connections?.[n.rowId]?.statusSince!==void 0?i(ln,{since:e.connections[n.rowId]?.statusSince,bridge:e.bridge,t}):null,notice:l,summary:n===null?null:i(On,{error:e.connections?.[n.rowId]?.lastMessageError,bridge:e.bridge,t}),title:f=>Bn(f,ae(f),t),icon:f=>{let h=O(f,"platform");if(h==="")return null;let w=e.columns.find(c=>c.key==="platform")?.options?.find(c=>c.value===h)?.icon;return w?i(un,{name:w}):null},meta:f=>{let h=ae(f),b=Tn(h,f),w=t(`platform.${h}`);return i("span",{className:"im-small im-muted",...b===null?{}:{title:b},children:b===null?w:`${w} \xB7 ${b}`})},extra:({dirty:f,frozen:h})=>{if(n===null)return null;let b=In(n.platform,f,h,e.connections?.[n.rowId]),w=b.actions.find(c=>c.id==="resetInbox");return s(T,{children:[s("div",{className:"im-span",children:[d&&w!==void 0?s(T,{children:[i("p",{id:g,children:w.descriptionKeys.map(c=>t(c)).join(" ")}),s("div",{className:"im-actions",children:[i(p,{type:"button",variant:"ghost",size:"sm",disabled:h,...m.cancelProps,children:t("settingsSection.cancel")}),i(p,{type:"button",variant:"destructive",size:"sm",disabled:w.disabled,...m.confirmProps,onClick:()=>{u(!1),a({id:"resetInbox",payload:{rowId:n.rowId}})},children:t("rowAction.resetInbox.confirm")})]})]}):i("div",{className:"im-actions",children:b.actions.map(c=>i(p,{type:"button",variant:"ghost",size:"sm",disabled:c.disabled,title:c.descriptionKeys.map(x=>t(x,c.descriptionParams)).join(" "),ref:c.id==="resetInbox"?m.triggerRef:void 0,onClick:()=>{c.id==="resetInbox"?u(!0):a({id:c.id,payload:{rowId:n.rowId}})},children:t(c.labelKey)},c.id))}),b.noteKey!==null?i("p",{className:"im-small im-muted",children:t(b.noteKey)}):null]}),r===null?null:i(pe,{bridge:e.bridge,command:We[r.id],payload:r.payload,items:"latest",environmentId:e.environmentId,t,onClose:()=>a(null)},r.id)]})}})}function Ae(e){let{t:n}=e;return i(Ee,{...e,kind:Ce,row:e.target,title:t=>{let o=(t.name??"").trim()||(t.targetId??"").trim();return o.length>0?o:n("settingsSection.target.untitled")}})}var Jn="im-general";function he(e,n){return{signature:n,replyLanguage:e.replyLanguage,enabled:e.delivery.enabled,port:String(e.delivery.port),token:"",clearToken:!1,saving:!1,failed:!1}}function Ln(e){let n=e.view,t=Te(n),o=be(Jn),l=A(0),[r,a]=R(()=>he(n,t));r.signature!==t&&(l.current+=1,a(he(n,t)));let d=En({baseline:{replyLanguage:n.replyLanguage,enabled:n.delivery.enabled,port:n.delivery.port,hasToken:n.delivery.hasToken},replyLanguage:r.replyLanguage,enabled:r.enabled,port:r.port,token:r.token,clearToken:r.clearToken}),u=d.changed,g=d.changed&&d.invalidPort,m=D(e.environmentId,"general","port"),f=D(e.environmentId,"general","token"),h=D(e.environmentId,"general","language");function b(c){o.activate(),a(x=>({...x,...c,failed:!1}))}function w(){if(!d.changed||r.saving)return;if(o.activate(),d.invalidPort){a(k=>({...k,failed:!0}));return}let c=d.payload,x=++l.current;a(k=>({...k,saving:!0,failed:!1})),X(e.bridge,$e,c,P(e.environmentId)).then(k=>{if(l.current===x){if(k===null){a(L=>({...L,saving:!1,failed:!0}));return}a(he(k,Te(k))),e.onSaved(k)}})}return i(ve,{title:e.t("settingsSection.general"),defaultOpen:!1,children:s("div",{className:"im-form",children:[i(B,{id:h,label:e.t("settings.language.label"),description:e.t("settings.language.description"),children:s(se,{className:"im-wide",value:r.replyLanguage,disabled:r.saving,onValueChange:c=>{let x=re.find(k=>k.value===c);x===void 0||x.value===r.replyLanguage||b({replyLanguage:x.value})},children:[i(de,{id:h,"aria-describedby":`${h}-hint`,children:i(Y,{children:re.filter(c=>c.value===r.replyLanguage).map(c=>e.t(c.labelKey))})}),i(ce,{children:re.map(c=>i(J,{value:c.value,children:e.t(c.labelKey)},c.value))})]})}),s("div",{className:"im-field",children:[s(G,{className:"im-inline",children:[i("span",{className:"im-medium",children:e.t("settings.deliveryHttp.enabled.label")}),i(cn,{checked:r.enabled,disabled:r.saving,onCheckedChange:c=>{c!==r.enabled&&b({enabled:c})}})]}),i("p",{className:"im-small im-muted",children:e.t("settings.deliveryHttp.enabled.description")})]}),r.enabled?i(B,{id:m,label:e.t("settings.deliveryHttp.port.label"),description:e.t("settings.deliveryHttp.port.description"),issue:g?e.t("settingsSection.issue.format"):null,children:i($,{id:m,type:"number",value:r.port,disabled:r.saving,"aria-invalid":g?!0:void 0,"aria-describedby":ee(m,g,!0),onChange:c=>{c.target.value!==r.port&&b({port:c.target.value})}})}):null,r.enabled?i(B,{id:f,label:e.t("settings.deliveryHttp.token.label"),description:e.t("settings.deliveryHttp.token.description"),children:i(ge,{id:f,value:r.token,stored:n.delivery.hasToken,clearing:r.clearToken,disabled:r.saving,invalid:!1,describedBy:ee(f,!1,!0),savedPlaceholder:e.t("settingsSection.secret.saved"),clearLabel:e.t("settingsSection.secret.clear"),undoLabel:e.t("settingsSection.secret.clearUndo"),onChange:c=>{c!==r.token&&b({token:c})},onToggleClear:()=>b({clearToken:!r.clearToken})})}):null,i(ye,{dirty:u,saving:r.saving,solid:o.chosen&&u,failed:r.failed,saveLabel:e.t("settingsSection.save"),revertLabel:e.t("settingsSection.revert"),failedLabel:e.t("settingsSection.saveFailed"),onSave:w,onRevert:()=>{l.current+=1,a(he(n,t))}})]})})}var Mn=`
|
|
6
6
|
.im-settings {
|
|
7
7
|
box-sizing: border-box;
|
|
8
8
|
color: var(--foreground);
|
|
@@ -238,4 +238,4 @@ var Kn=window.__ycodiumPluginHost.react;var{Activity:Xn,Children:Zn,Component:et
|
|
|
238
238
|
grid-column: 1 / -1;
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
|
-
`;var
|
|
241
|
+
`;var Oe={};function Kn(e){let n=e.bridge.i18n.usePluginTranslation(),t=M(()=>P(e.environmentId),[e.environmentId]),o=e.bridge.commands.useQuery(Ve,Oe,t),l=e.bridge.commands.useSubscription(Fe,Oe,t),r=on(l),a=M(()=>Cn(o.data),[o.data]),[d,u]=R(null),[g,m]=R(null),[f,h]=R(!1),[b,w]=R(!1),[c,x]=R(null),[k,L]=R(null);if(a!==null&&a!==d&&u(a),g!==null){let _=hn(g,{view:a?.view??null,isPending:o.isPending,failed:o.error!==null});_!==g&&m(_)}let y=g?.view??a?.view??d?.view??null,v=a??d,I=a===null&&o.data!==null&&!o.isPending,E=c==="lark"?{command:ze,descriptionKey:K.descriptionKey}:c==="wecom"?{command:Qe,descriptionKey:"wecomSetup.action.description"}:null,U=M(()=>Je(v?.targetColumns??[],y?.bots??[],_=>n(`platform.${_}`)),[v,y,n]);function W(_){m({view:_,phase:"asked"}),o.refresh()}function ne(){m(null),o.refresh()}let j;if(o.isUnavailable)j=i(Be,{variant:"warning",message:n("settingsSection.unavailable"),retryLabel:n("settingsSection.retry"),onRetry:ne});else if(y===null&&o.isPending)j=i("div",{className:"im-pending",children:i(F,{size:"md"})});else if(y===null||v===null)j=i(Be,{variant:"error",message:n("settingsSection.loadFailed"),retryLabel:n("settingsSection.retry"),onRetry:ne});else{let _=y.bots.length===0&&!f;j=s(An,{activeId:k,activate:L,children:[o.error!==null||I?i(Be,{variant:"error",message:n("settingsSection.loadFailed"),retryLabel:n("settingsSection.retry"),onRetry:ne}):null,i(Ln,{view:y,environmentId:e.environmentId,bridge:e.bridge,t:n,onSaved:W}),y.bots.map(N=>i(Pe,{bot:N,bots:y.bots,connections:r,columns:v.columns,proxies:v.proxies,environmentId:e.environmentId,bridge:e.bridge,t:n,onSaved:W,onDiscard:()=>{}},N.rowId)),f?i(Pe,{bot:null,bots:y.bots,connections:r,columns:v.columns,proxies:v.proxies,environmentId:e.environmentId,bridge:e.bridge,t:n,onSaved:N=>{h(!1),W(N)},onDiscard:()=>h(!1)},we.newSlot):null,_?i(mn,{title:n("settingsSection.empty"),description:n("settingsSection.emptyGuide",{larkLabel:n(K.labelKey),wecomLabel:n("wecomSetup.action.label"),addBotLabel:n("settingsSection.addBot")})}):null,s("div",{className:"im-actions",children:[i(p,{variant:"outline",disabled:f,onClick:()=>{h(!0),L(Z(we.newSlot,null))},children:n("settingsSection.addBot")}),s(p,{variant:_?"default":"outline",disabled:c!==null,onClick:()=>x("lark"),children:[n(K.labelKey),i("span",{className:_?"im-badge im-badge-on-primary im-small":"im-badge im-small",children:n(K.badgeKey)})]}),s(p,{variant:"outline",disabled:c!==null,onClick:()=>x("wecom"),children:[n("wecomSetup.action.label"),i("span",{className:"im-badge im-small",children:n(K.badgeKey)})]})]}),i("p",{className:"im-small im-muted",children:n(K.warningKey)}),E?s("section",{className:"im-block",children:[i("p",{className:"im-small im-muted",children:n(E.descriptionKey)}),i(pe,{bridge:e.bridge,command:E.command,payload:Oe,items:"snapshots",environmentId:e.environmentId,t:n,onSettled:N=>{N.kind==="done"&&ne()},onClose:()=>x(null)})]}):null,i("h3",{className:"im-heading im-medium",children:n("settings.deliveryTargets.label")}),i("p",{className:"im-small im-muted",children:n("settingsSection.target.description")}),y.targets.map(N=>i(Ae,{target:N,columns:U,proxies:v.proxies,environmentId:e.environmentId,bridge:e.bridge,t:n,onSaved:W,onDiscard:()=>{}},N.rowId)),b?i(Ae,{target:null,columns:U,proxies:v.proxies,environmentId:e.environmentId,bridge:e.bridge,t:n,onSaved:N=>{w(!1),W(N)},onDiscard:()=>w(!1)},Ce.newSlot):null,i("div",{className:"im-actions",children:i(p,{variant:"outline",disabled:b,onClick:()=>{w(!0),L(Z(Ce.newSlot,null))},children:n("settingsSection.target.add")})})]})}let te=r===null?null:tn(y?.bots??[],r);return i(dn,{bridge:e.bridge,children:s("div",{className:"im-settings",children:[i("style",{children:Mn}),s("div",{className:"im-head",children:[i("h2",{className:"im-heading im-medium im-title",children:n("settings.title")}),te!==null&&te.configured>0?i(ue,{tone:"neutral","aria-label":n("settingsSection.onlineLabel",te),children:n("settingsSection.online",te)}):null]}),j]})})}function Be(e){return s(H,{variant:e.variant,layout:"inline",children:[i(z,{children:e.message}),i(gn,{children:i(p,{variant:"ghost",size:"sm",onClick:e.onRetry,children:e.retryLabel})})]})}function Xn(e){return{slots:[{name:"settings.section",order:20,component(n){return i(Kn,{bridge:e,environmentId:n.environmentId??null},n.environmentId??"")}}]}}export{Xn as default};
|