@halcyonlabs/app 0.47.0-halcyon.320 → 0.47.0-halcyon.325

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/dist/index.d.ts CHANGED
@@ -316,8 +316,8 @@ declare const appKeybindingOverridesSchema: z$1.ZodArray<z$1.ZodObject<{
316
316
  shift: z$1.ZodBoolean;
317
317
  }, z$1.core.$strict>>;
318
318
  platform: z$1.ZodOptional<z$1.ZodEnum<{
319
- mac: "mac";
320
319
  windows: "windows";
320
+ mac: "mac";
321
321
  linux: "linux";
322
322
  }>>;
323
323
  }, z$1.core.$strict>>;
@@ -524,8 +524,8 @@ declare const environmentSchema: z$1.ZodObject<{
524
524
  retireAt: z$1.ZodNullable<z$1.ZodNumber>;
525
525
  teardown: z$1.ZodNullable<z$1.ZodObject<{
526
526
  status: z$1.ZodEnum<{
527
- running: "running";
528
527
  failed: "failed";
528
+ running: "running";
529
529
  removed: "removed";
530
530
  }>;
531
531
  attempt: z$1.ZodNumber;
@@ -620,8 +620,8 @@ declare const hostSchema: z$1.ZodObject<{
620
620
  pendingLog: z$1.ZodString;
621
621
  teardown: z$1.ZodNullable<z$1.ZodObject<{
622
622
  status: z$1.ZodEnum<{
623
- running: "running";
624
623
  failed: "failed";
624
+ running: "running";
625
625
  removed: "removed";
626
626
  }>;
627
627
  attempt: z$1.ZodNumber;
@@ -732,8 +732,8 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
732
732
  providerThreadId: z$1.ZodString;
733
733
  objective: z$1.ZodString;
734
734
  status: z$1.ZodEnum<{
735
- paused: "paused";
736
735
  active: "active";
736
+ paused: "paused";
737
737
  budgetLimited: "budgetLimited";
738
738
  complete: "complete";
739
739
  }>;
@@ -1304,9 +1304,9 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
1304
1304
  step: z$1.ZodString;
1305
1305
  status: z$1.ZodOptional<z$1.ZodEnum<{
1306
1306
  pending: "pending";
1307
+ active: "active";
1307
1308
  completed: "completed";
1308
1309
  failed: "failed";
1309
- active: "active";
1310
1310
  }>>;
1311
1311
  }, z$1.core.$strip>>;
1312
1312
  explanation: z$1.ZodOptional<z$1.ZodString>;
@@ -1385,10 +1385,10 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
1385
1385
  }>;
1386
1386
  taskStatus: z$1.ZodEnum<{
1387
1387
  pending: "pending";
1388
- running: "running";
1389
- paused: "paused";
1390
1388
  completed: "completed";
1391
1389
  failed: "failed";
1390
+ paused: "paused";
1391
+ running: "running";
1392
1392
  killed: "killed";
1393
1393
  stopped: "stopped";
1394
1394
  }>;
@@ -1405,8 +1405,8 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
1405
1405
  index: z$1.ZodNumber;
1406
1406
  label: z$1.ZodString;
1407
1407
  state: z$1.ZodEnum<{
1408
- running: "running";
1409
1408
  failed: "failed";
1409
+ running: "running";
1410
1410
  queued: "queued";
1411
1411
  done: "done";
1412
1412
  skipped: "skipped";
@@ -2076,9 +2076,9 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
2076
2076
  step: z$1.ZodString;
2077
2077
  status: z$1.ZodOptional<z$1.ZodEnum<{
2078
2078
  pending: "pending";
2079
+ active: "active";
2079
2080
  completed: "completed";
2080
2081
  failed: "failed";
2081
- active: "active";
2082
2082
  }>>;
2083
2083
  }, z$1.core.$strip>>;
2084
2084
  explanation: z$1.ZodOptional<z$1.ZodString>;
@@ -2157,10 +2157,10 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
2157
2157
  }>;
2158
2158
  taskStatus: z$1.ZodEnum<{
2159
2159
  pending: "pending";
2160
- running: "running";
2161
- paused: "paused";
2162
2160
  completed: "completed";
2163
2161
  failed: "failed";
2162
+ paused: "paused";
2163
+ running: "running";
2164
2164
  killed: "killed";
2165
2165
  stopped: "stopped";
2166
2166
  }>;
@@ -2177,8 +2177,8 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
2177
2177
  index: z$1.ZodNumber;
2178
2178
  label: z$1.ZodString;
2179
2179
  state: z$1.ZodEnum<{
2180
- running: "running";
2181
2180
  failed: "failed";
2181
+ running: "running";
2182
2182
  queued: "queued";
2183
2183
  done: "done";
2184
2184
  skipped: "skipped";
@@ -2389,10 +2389,10 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
2389
2389
  }>;
2390
2390
  taskStatus: z$1.ZodEnum<{
2391
2391
  pending: "pending";
2392
- running: "running";
2393
- paused: "paused";
2394
2392
  completed: "completed";
2395
2393
  failed: "failed";
2394
+ paused: "paused";
2395
+ running: "running";
2396
2396
  killed: "killed";
2397
2397
  stopped: "stopped";
2398
2398
  }>;
@@ -2409,8 +2409,8 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
2409
2409
  index: z$1.ZodNumber;
2410
2410
  label: z$1.ZodString;
2411
2411
  state: z$1.ZodEnum<{
2412
- running: "running";
2413
2412
  failed: "failed";
2413
+ running: "running";
2414
2414
  queued: "queued";
2415
2415
  done: "done";
2416
2416
  skipped: "skipped";
@@ -2488,10 +2488,10 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
2488
2488
  }>;
2489
2489
  taskStatus: z$1.ZodEnum<{
2490
2490
  pending: "pending";
2491
- running: "running";
2492
- paused: "paused";
2493
2491
  completed: "completed";
2494
2492
  failed: "failed";
2493
+ paused: "paused";
2494
+ running: "running";
2495
2495
  killed: "killed";
2496
2496
  stopped: "stopped";
2497
2497
  }>;
@@ -2508,8 +2508,8 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
2508
2508
  index: z$1.ZodNumber;
2509
2509
  label: z$1.ZodString;
2510
2510
  state: z$1.ZodEnum<{
2511
- running: "running";
2512
2511
  failed: "failed";
2512
+ running: "running";
2513
2513
  queued: "queued";
2514
2514
  done: "done";
2515
2515
  skipped: "skipped";
@@ -2704,9 +2704,9 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
2704
2704
  step: z$1.ZodString;
2705
2705
  status: z$1.ZodOptional<z$1.ZodEnum<{
2706
2706
  pending: "pending";
2707
+ active: "active";
2707
2708
  completed: "completed";
2708
2709
  failed: "failed";
2709
- active: "active";
2710
2710
  }>>;
2711
2711
  }, z$1.core.$strip>>;
2712
2712
  explanation: z$1.ZodOptional<z$1.ZodString>;
@@ -2715,8 +2715,8 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
2715
2715
  threadId: z$1.ZodString;
2716
2716
  providerThreadId: z$1.ZodString;
2717
2717
  state: z$1.ZodEnum<{
2718
- running: "running";
2719
2718
  idle: "idle";
2719
+ running: "running";
2720
2720
  }>;
2721
2721
  }, z$1.core.$strip>, z$1.ZodObject<{
2722
2722
  type: z$1.ZodLiteral<"turn/diff/updated">;
@@ -3578,9 +3578,9 @@ declare const threadEventSchema: z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.
3578
3578
  threadId: z$1.ZodString;
3579
3579
  provisioningId: z$1.ZodString;
3580
3580
  status: z$1.ZodEnum<{
3581
+ active: "active";
3581
3582
  completed: "completed";
3582
3583
  failed: "failed";
3583
- active: "active";
3584
3584
  cancelled: "cancelled";
3585
3585
  }>;
3586
3586
  environmentId: z$1.ZodNullable<z$1.ZodString>;
@@ -6129,8 +6129,8 @@ declare const hostDaemonCommandRegistry: {
6129
6129
  skillFilePath: z$1.ZodString;
6130
6130
  }, z$1.core.$strict>], "kind">>;
6131
6131
  instructionMode: z$1.ZodEnum<{
6132
- append: "append";
6133
6132
  replace: "replace";
6133
+ append: "append";
6134
6134
  }>;
6135
6135
  type: z$1.ZodLiteral<"thread.rewind.prepare">;
6136
6136
  leaseId: z$1.ZodString;
@@ -6278,8 +6278,8 @@ declare const hostDaemonCommandRegistry: {
6278
6278
  skillFilePath: z$1.ZodString;
6279
6279
  }, z$1.core.$strict>], "kind">>;
6280
6280
  instructionMode: z$1.ZodEnum<{
6281
- append: "append";
6282
6281
  replace: "replace";
6282
+ append: "append";
6283
6283
  }>;
6284
6284
  type: z$1.ZodLiteral<"thread.start">;
6285
6285
  requestId: z$1.ZodString;
@@ -6742,8 +6742,8 @@ declare const hostDaemonCommandRegistry: {
6742
6742
  envPassthrough: z$1.ZodArray<z$1.ZodString>;
6743
6743
  }, z$1.core.$strict>;
6744
6744
  instructionMode: z$1.ZodEnum<{
6745
- append: "append";
6746
6745
  replace: "replace";
6746
+ append: "append";
6747
6747
  }>;
6748
6748
  projectId: z$1.ZodString;
6749
6749
  providerId: z$1.ZodString;
@@ -6958,8 +6958,8 @@ declare const hostDaemonCommandRegistry: {
6958
6958
  envPassthrough: z$1.ZodArray<z$1.ZodString>;
6959
6959
  }, z$1.core.$strict>;
6960
6960
  instructionMode: z$1.ZodEnum<{
6961
- append: "append";
6962
6961
  replace: "replace";
6962
+ append: "append";
6963
6963
  }>;
6964
6964
  projectId: z$1.ZodString;
6965
6965
  providerId: z$1.ZodString;
@@ -8183,9 +8183,9 @@ declare const hostDaemonCommandRegistry: {
8183
8183
  executablePath: z$1.ZodNullable<z$1.ZodString>;
8184
8184
  installed: z$1.ZodBoolean;
8185
8185
  installSource: z$1.ZodEnum<{
8186
- external: "external";
8187
8186
  notInstalled: "notInstalled";
8188
8187
  npmGlobal: "npmGlobal";
8188
+ external: "external";
8189
8189
  }>;
8190
8190
  currentVersion: z$1.ZodNullable<z$1.ZodString>;
8191
8191
  latestVersion: z$1.ZodNullable<z$1.ZodString>;
@@ -8734,9 +8734,9 @@ declare const providerCliStatusResponseSchema: z$1.ZodRecord<z$1.ZodString, z$1.
8734
8734
  executablePath: z$1.ZodNullable<z$1.ZodString>;
8735
8735
  installed: z$1.ZodBoolean;
8736
8736
  installSource: z$1.ZodEnum<{
8737
- external: "external";
8738
8737
  notInstalled: "notInstalled";
8739
8738
  npmGlobal: "npmGlobal";
8739
+ external: "external";
8740
8740
  }>;
8741
8741
  currentVersion: z$1.ZodNullable<z$1.ZodString>;
8742
8742
  latestVersion: z$1.ZodNullable<z$1.ZodString>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@halcyonlabs/app",
3
- "version": "0.47.0-halcyon.320",
3
+ "version": "0.47.0-halcyon.325",
4
4
  "description": "bb app launcher for npx",
5
5
  "keywords": [
6
6
  "bb",
@@ -1,4 +1,4 @@
1
- var K=globalThis.__bbPluginRuntime;if(K==null||K.pluginSdkApp==null)throw new Error('Cannot load "@get-bb/plugin-sdk/app": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var A=K.pluginSdkApp,Qe="default"in A?A.default:A,{Markdown:z,ThreadChat:We,ThreadTitle:de,UrlLink:Je,definePluginApp:pe,experimental_BranchPicker:Ze,experimental_ComposerRoot:et,experimental_DetailRow:tt,experimental_Diff:nt,experimental_FailedVoiceRecordings:rt,experimental_FileLink:it,experimental_Icon:ot,experimental_ImageLightbox:at,experimental_InfoList:st,experimental_InfoListRow:lt,experimental_InfoSection:dt,experimental_NewThreadComposer:pt,experimental_PermissionModePicker:ct,experimental_PluginIcon:ut,experimental_PluginRpcCallError:ft,experimental_PromptMentionIcon:mt,experimental_ProviderIcon:gt,experimental_ProviderModelPicker:bt,experimental_ShortcutHint:ht,experimental_SidebarNavigationIcon:xt,experimental_SourceCode:vt,experimental_THREAD_ACTION_GROUPS:wt,experimental_THREAD_CONTEXT_SEGMENT_GROUPS:yt,experimental_THREAD_INFO_ROW_GROUPS:kt,experimental_THREAD_INFO_SECTION_GROUPS:St,experimental_ThreadActionsContextMenu:Tt,experimental_ThreadActionsMenu:_t,experimental_ThreadStatusGlyph:Nt,experimental_ThreadTitleText:zt,experimental_VoiceInputButton:Ct,experimental_VoiceInputTextarea:Rt,experimental_VoiceRecordingBar:Mt,experimental_copyToClipboard:Lt,experimental_describePromptMention:It,experimental_promptMentionClipboardAttributes:Et,experimental_readPromptMentionClipboard:Dt,experimental_saveFile:$t,experimental_useAppPanel:Pt,experimental_useArchiveEnvironmentThreads:Ft,experimental_useBranches:Ot,experimental_useCheckoutState:At,experimental_useCodeTheme:Bt,experimental_useComposerCommandSearch:Ht,experimental_useComposerContributions:Ut,experimental_useComposerMentionSearch:Gt,experimental_useComposerRenderer:Vt,experimental_useExperiment:jt,experimental_useFixedTabTarget:Xt,experimental_usePluginId:Yt,experimental_useProviders:Kt,experimental_useQuestionFormHost:qt,experimental_useRpcKeyedQuery:Qt,experimental_useRpcMutation:Wt,experimental_useRpcQuery:Jt,experimental_useRpcRefresh:Zt,experimental_useSidebar:en,experimental_useSidebarNavigation:tn,experimental_useSidebarNavigationSplit:nn,experimental_useSidebarThreadActions:rn,experimental_useSidebarThreadSplit:on,experimental_useSidebarThreads:an,experimental_useThreadActionRegistrations:sn,experimental_useThreadActions:ln,experimental_useThreadTitleDisplayText:dn,useBbContext:ce,useBbNavigate:B,useComposer:pn,useComposerView:cn,useComposers:un,useEnvironmentProviders:fn,useRealtime:mn,useRealtimeConnectionState:gn,useRpc:ue,useSdk:fe,useSettings:bn,useSidebarSplitLayout:hn,useSidebarThreadDraft:xn,useSidebarThreadDraftIds:vn,useSidebarThreadRowStatus:wn,useSidebarThreadRowStatuses:yn,useSidebarThreadShortcut:kn,experimental_useSidebarThreadPullRequest:Sn}=A;var q=globalThis.__bbPluginRuntime;if(q==null||q.react==null)throw new Error('Cannot load "react": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var H=q.react,_n="default"in H?H.default:H,{Activity:Nn,Children:zn,Component:Cn,Fragment:Rn,Profiler:Mn,PureComponent:Ln,StrictMode:In,Suspense:En,act:Dn,cache:$n,cacheSignal:Pn,captureOwnerStack:Fn,cloneElement:On,createContext:me,createElement:An,createRef:Bn,forwardRef:Hn,isValidElement:Un,lazy:Gn,memo:Vn,startTransition:jn,unstable_useCacheRefresh:Xn,use:Yn,useActionState:Kn,useCallback:ge,useContext:be,useDebugValue:qn,useDeferredValue:Qn,useEffect:C,useEffectEvent:Wn,useId:Jn,useImperativeHandle:Zn,useInsertionEffect:er,useLayoutEffect:tr,useMemo:Q,useOptimistic:nr,useReducer:rr,useRef:$,useState:v,useSyncExternalStore:W,useTransition:ir,version:or}=H;var J=e=>[...new Map(e.map(t=>[t.id,t])).values()].map((t,n)=>({message:t,index:n})).sort((t,n)=>t.message.time-n.message.time||t.index-n.index).slice(-300).map(({message:t})=>t),R={en:{locale:"en-US",title:"Notifications",button:e=>`Notifications: ${e}`,fresh:e=>`${e} new`,kinds:{done:"Done",failed:"Failed",interrupted:"Interrupted",attention:"Needs reply",digest:"Digest",message:"Message",reply:"Agent reply",system:"System"},filters:{all:"All",done:"Done",attention:"Attention",info:"Info / replies"},filtersLabel:"Notification filters",today:"Today",yesterday:"Yesterday",isNew:"New",hasReply:"Has an agent reply",replyTag:"\u21A9 +reply",more:"More",less:"Less",threadMessage:"Thread message",agentReply:"Agent reply",empty:"No notifications.",emptyFilter:"No entries of this kind.",system:"System",agent:"Agent",views:{time:"By time",threads:"By thread"},viewsLabel:"View",entries:e=>`Entries: ${e}`,emptyThreads:"No threads in this state.",back:"Threads",thread:"Thread",you:"You",outFailed:"The agent's own messages to this thread could not be read, so some may be missing here.",replyLabel:"Message to the thread",replyPlaceholder:"Write to this thread\u2026",send:"Send",sending:"Sending\u2026",sendFailed:e=>`Not sent: ${e}. Your text is kept, try again.`,tooLong:(e,t)=>`The message is ${e.toLocaleString("en-US")} characters long; the limit is ${t.toLocaleString("en-US")}. Shorten it to send.`,maybeSent:"It may have been sent: the connection dropped before BB answered. Check the conversation before you send it again.",noteUnknown:"The message was sent. The note to the agent may not have been: the connection dropped before BB answered.",noteLabel:"Tell the agent",noteHint:"The agent gets a note in its Notifications tab. The note starts its turn.",noteFailed:e=>`The message was sent, but the note to the agent was not: ${e}.`,noteText:(e,t)=>`wrote to thread ${e}: ${t}`,closed:{archived:"This thread is archived, so you cannot write to it from here.",gone:"This thread is unavailable: it was deleted or cannot be read. You cannot write to it.",none:"These entries have no sending thread, so there is nobody to reply to."},instruction:e=>`Start a short housekeeping reply to a message from another thread or from the system with ${e}; a result meant for the user goes without the marker.`,systemTexts:[[/^\s*failed\.?(?=\s|$)/i,"Failed."],[/^\s*was interrupted because\s+/i,"Interrupted: "],[/^\s*was interrupted\.?(?=\s|$)/i,"Interrupted."]],bareCompleted:"Completed."},ru:{locale:"ru-RU",title:"\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F",button:e=>`\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F: ${e}`,fresh:e=>`${e} ${e%10===1&&e%100!==11?"\u043D\u043E\u0432\u043E\u0435":"\u043D\u043E\u0432\u044B\u0445"}`,kinds:{done:"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B",failed:"\u0423\u043F\u0430\u043B",interrupted:"\u041F\u0440\u0435\u0440\u0432\u0430\u043D",attention:"\u041D\u0443\u0436\u0435\u043D \u043E\u0442\u0432\u0435\u0442",digest:"\u0421\u0432\u043E\u0434\u043A\u0430",message:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435",reply:"\u041E\u0442\u0432\u0435\u0442 \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E",system:"\u0421\u0438\u0441\u0442\u0435\u043C\u0430"},filters:{all:"\u0412\u0441\u0435",done:"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B",attention:"\u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435",info:"\u0418\u043D\u0444\u043E / \u043E\u0442\u0432\u0435\u0442\u044B"},filtersLabel:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0439",today:"\u0421\u0435\u0433\u043E\u0434\u043D\u044F",yesterday:"\u0412\u0447\u0435\u0440\u0430",isNew:"\u041D\u043E\u0432\u043E\u0435",hasReply:"\u0421 \u043E\u0442\u0432\u0435\u0442\u043E\u043C \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E",replyTag:"\u21A9 +\u043E\u0442\u0432\u0435\u0442",more:"\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435",less:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C",threadMessage:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0442\u0440\u0435\u0434\u0430",agentReply:"\u041E\u0442\u0432\u0435\u0442 \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E",empty:"\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0439 \u043D\u0435\u0442.",emptyFilter:"\u041D\u0435\u0442 \u0437\u0430\u043F\u0438\u0441\u0435\u0439 \u044D\u0442\u043E\u0433\u043E \u0432\u0438\u0434\u0430.",system:"\u0421\u0438\u0441\u0442\u0435\u043C\u0430",agent:"\u0412\u0435\u0434\u0443\u0449\u0438\u0439",views:{time:"\u041F\u043E \u0432\u0440\u0435\u043C\u0435\u043D\u0438",threads:"\u041F\u043E \u0442\u0440\u0435\u0434\u0430\u043C"},viewsLabel:"\u0412\u0438\u0434",entries:e=>`\u0417\u0430\u043F\u0438\u0441\u0435\u0439: ${e}`,emptyThreads:"\u041D\u0435\u0442 \u0442\u0440\u0435\u0434\u043E\u0432 \u0441 \u0442\u0430\u043A\u0438\u043C \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435\u043C.",back:"\u0422\u0440\u0435\u0434\u044B",thread:"\u0422\u0440\u0435\u0434",you:"\u0412\u044B",outFailed:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E \u044D\u0442\u043E\u043C\u0443 \u0442\u0440\u0435\u0434\u0443 \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0437\u0434\u0435\u0441\u044C \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u043D\u0435 \u0432\u0441\u0435.",replyLabel:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0442\u0440\u0435\u0434\u0443",replyPlaceholder:"\u041D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u044D\u0442\u043E\u043C\u0443 \u0442\u0440\u0435\u0434\u0443\u2026",send:"\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C",sending:"\u041E\u0442\u043F\u0440\u0430\u0432\u043A\u0430\u2026",sendFailed:e=>`\u041D\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E: ${e}. \u0422\u0435\u043A\u0441\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437.`,tooLong:(e,t)=>`\u0412 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0438 ${e.toLocaleString("ru-RU")} \u0437\u043D\u0430\u043A\u043E\u0432, \u043F\u0440\u0435\u0434\u0435\u043B \u2014 ${t.toLocaleString("ru-RU")}. \u0421\u043E\u043A\u0440\u0430\u0442\u0438\u0442\u0435 \u0435\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C.`,maybeSent:"\u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E: \u0441\u0432\u044F\u0437\u044C \u043E\u0431\u043E\u0440\u0432\u0430\u043B\u0430\u0441\u044C \u0440\u0430\u043D\u044C\u0448\u0435 \u043E\u0442\u0432\u0435\u0442\u0430 BB. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u0435\u0440\u0435\u043F\u0438\u0441\u043A\u0443, \u043F\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043C \u043F\u043E\u0432\u0442\u043E\u0440\u044F\u0442\u044C.",noteUnknown:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E. \u0417\u0430\u043C\u0435\u0442\u043A\u0430 \u0432\u0435\u0434\u0443\u0449\u0435\u043C\u0443, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043D\u0435 \u0443\u0448\u043B\u0430: \u0441\u0432\u044F\u0437\u044C \u043E\u0431\u043E\u0440\u0432\u0430\u043B\u0430\u0441\u044C \u0440\u0430\u043D\u044C\u0448\u0435 \u043E\u0442\u0432\u0435\u0442\u0430 BB.",noteLabel:"\u0421\u043E\u043E\u0431\u0449\u0438\u0442\u044C \u0432\u0435\u0434\u0443\u0449\u0435\u043C\u0443",noteHint:"\u0412\u0435\u0434\u0443\u0449\u0438\u0439 \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0437\u0430\u043C\u0435\u0442\u043A\u0443 \u0432\u043E \u0432\u043A\u043B\u0430\u0434\u043A\u0443 \xAB\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F\xBB. \u0417\u0430\u043C\u0435\u0442\u043A\u0430 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u0435\u0433\u043E \u0445\u043E\u0434.",noteFailed:e=>`\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E, \u043D\u043E \u0437\u0430\u043C\u0435\u0442\u043A\u0430 \u0432\u0435\u0434\u0443\u0449\u0435\u043C\u0443 \u043D\u0435 \u0443\u0448\u043B\u0430: ${e}.`,noteText:(e,t)=>`\u043D\u0430\u043F\u0438\u0441\u0430\u043B \u0442\u0440\u0435\u0434\u0443 ${e}: ${t}`,closed:{archived:"\u0422\u0440\u0435\u0434 \u0432 \u0430\u0440\u0445\u0438\u0432\u0435, \u043D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0435\u043C\u0443 \u043E\u0442\u0441\u044E\u0434\u0430 \u043D\u0435\u043B\u044C\u0437\u044F.",gone:"\u0422\u0440\u0435\u0434 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D: \u043E\u043D \u0443\u0434\u0430\u043B\u0451\u043D \u0438\u043B\u0438 \u043D\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F. \u041D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0435\u043C\u0443 \u043D\u0435\u043B\u044C\u0437\u044F.",none:"\u0423 \u044D\u0442\u0438\u0445 \u0437\u0430\u043F\u0438\u0441\u0435\u0439 \u043D\u0435\u0442 \u0442\u0440\u0435\u0434\u0430-\u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044F, \u043E\u0442\u0432\u0435\u0447\u0430\u0442\u044C \u043D\u0435\u043A\u043E\u043C\u0443."},instruction:e=>`\u041A\u043E\u0440\u043E\u0442\u043A\u0438\u0439 \u0441\u043B\u0443\u0436\u0435\u0431\u043D\u044B\u0439 \u043E\u0442\u0432\u0435\u0442 \u043D\u0430 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0434\u0440\u0443\u0433\u043E\u0433\u043E \u0442\u0440\u0435\u0434\u0430 \u0438\u043B\u0438 \u0441\u0438\u0441\u0442\u0435\u043C\u044B \u043D\u0430\u0447\u0438\u043D\u0430\u0439 \u0441 ${e}; \u0438\u0442\u043E\u0433 \u0434\u043B\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u2014 \u0431\u0435\u0437 \u043C\u0435\u0442\u043A\u0438.`,systemTexts:[[/^\s*failed\.?(?=\s|$)/i,"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B\u0441\u044F \u0441 \u043E\u0448\u0438\u0431\u043A\u043E\u0439."],[/was interrupted because its host daemon restarted\./gi,"\u041F\u0440\u0435\u0440\u0432\u0430\u043D: \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u043B\u0430\u0441\u044C \u0441\u043B\u0443\u0436\u0431\u0430 BB \u043D\u0430 \u043C\u0430\u0448\u0438\u043D\u0435 \u0438\u0441\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044F."],[/Child thread updates:/g,"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B\u0438 \u0445\u043E\u0434:"],[/\bcompleted\./gi,"\u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043B."],[/\bfailed\./gi,"\u0443\u043F\u0430\u043B."],[/\bwas interrupted\b/gi,"\u043F\u0440\u0435\u0440\u0432\u0430\u043D"],[/Review the thread before deciding next steps\./g,"\u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0442\u0440\u0435\u0434 \u043F\u0435\u0440\u0435\u0434 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C \u0448\u0430\u0433\u043E\u043C."]],bareCompleted:""}};var Z=globalThis.__bbPluginRuntime;if(Z==null||Z.jsxRuntime==null)throw new Error('Cannot load "react/jsx-runtime": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var U=Z.jsxRuntime,pr="default"in U?U.default:U,{Fragment:P,jsx:i,jsxs:c}=U;var ve="en",we=()=>R[ve].title,Me=8e3,Le=2,ye={hideIds:[],items:[]},Ie=me(null);function X(){let e=ue().call;return be(Ie)??e}var M=new Map,ee=new Map;function Ee(e,t,n){let o=M.get(e);if(!o){let r={data:{...ye,...ee.get(e)},listeners:new Set,timer:0,fails:0},s=()=>{t("feed",{threadId:e}).then(l=>{M.get(e)===r&&(ve=l.lang,r.fails=0,r.data=l,ee.set(e,{hideIds:l.hideIds,hide:l.hide}),r.listeners.forEach(p=>p()))}).catch(()=>{M.get(e)!==r||++r.fails!==Le||(ee.delete(e),r.data={...r.data,stale:!0},r.listeners.forEach(l=>l()))})};s(),r.timer=window.setInterval(s,Me),M.set(e,r),o=r}let d=o;return d.listeners.add(n),()=>{d.listeners.delete(n),!(d.listeners.size||M.get(e)!==d)&&(window.clearInterval(d.timer),M.delete(e))}}function re(e){let t=X(),n=ge(o=>e?Ee(e,t,o):()=>{},[t,e]);return W(n,()=>(e?M.get(e)?.data:null)??ye)}function De(e){let t=s=>`[data-timeline-row-id=${JSON.stringify(s)}]`,n=s=>`[data-timeline-virtual-spacer]>${t(s)}`,o=e.map(s=>`:not([data-timeline-virtual-spacer])>${t(s)}`).join(`,
1
+ var K=globalThis.__bbPluginRuntime;if(K==null||K.pluginSdkApp==null)throw new Error('Cannot load "@get-bb/plugin-sdk/app": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var A=K.pluginSdkApp,Qe="default"in A?A.default:A,{Markdown:z,ThreadChat:We,ThreadTitle:de,UrlLink:Je,definePluginApp:pe,experimental_BranchPicker:Ze,experimental_ComposerRoot:et,experimental_DetailRow:tt,experimental_Diff:nt,experimental_FailedVoiceRecordings:rt,experimental_FileLink:it,experimental_Icon:ot,experimental_ImageLightbox:at,experimental_InfoList:st,experimental_InfoListRow:lt,experimental_InfoSection:dt,experimental_NewThreadComposer:pt,experimental_PermissionModePicker:ct,experimental_PluginIcon:ut,experimental_PluginRpcCallError:ft,experimental_PromptMentionIcon:mt,experimental_ProviderIcon:gt,experimental_ProviderModelPicker:bt,experimental_ShortcutHint:ht,experimental_SidebarNavigationIcon:xt,experimental_SourceCode:vt,experimental_THREAD_ACTION_GROUPS:wt,experimental_THREAD_CONTEXT_SEGMENT_GROUPS:yt,experimental_THREAD_INFO_ROW_GROUPS:kt,experimental_THREAD_INFO_SECTION_GROUPS:St,experimental_ThreadActionsContextMenu:Tt,experimental_ThreadActionsMenu:_t,experimental_ThreadStatusGlyph:Nt,experimental_ThreadTitleText:zt,experimental_VoiceInputButton:Ct,experimental_VoiceInputTextarea:Rt,experimental_VoiceRecordingBar:Mt,experimental_copyToClipboard:Lt,experimental_describePromptMention:It,experimental_promptMentionClipboardAttributes:Et,experimental_readPromptMentionClipboard:Dt,experimental_saveFile:$t,experimental_useAppPanel:Pt,experimental_useArchiveEnvironmentThreads:Ft,experimental_useBranches:Ot,experimental_useCheckoutState:At,experimental_useCodeTheme:Bt,experimental_useComposerCommandSearch:Ht,experimental_useComposerContributions:Ut,experimental_useComposerMentionSearch:Gt,experimental_useComposerRenderer:Vt,experimental_useExperiment:jt,experimental_useFixedTabTarget:Xt,experimental_usePluginId:Yt,experimental_useProviders:Kt,experimental_useQuestionFormHost:qt,experimental_useRpcKeyedQuery:Qt,experimental_useRpcMutation:Wt,experimental_useRpcQuery:Jt,experimental_useRpcRefresh:Zt,experimental_useSidebar:en,experimental_useSidebarNavigation:tn,experimental_useSidebarNavigationSplit:nn,experimental_useSidebarThreadActions:rn,experimental_useSidebarThreadSplit:on,experimental_useSidebarThreads:an,experimental_useThreadActionRegistrations:sn,experimental_useThreadActions:ln,experimental_useThreadTitleDisplayText:dn,useBbContext:ce,useBbNavigate:B,useComposer:pn,useComposerView:cn,useComposers:un,useEnvironmentProviders:fn,useRealtime:mn,useRealtimeConnectionState:gn,useRpc:ue,useSdk:fe,useSettings:bn,useSidebarSplitLayout:hn,useSidebarThreadDraft:xn,useSidebarThreadDraftIds:vn,useSidebarThreadRowStatus:wn,useSidebarThreadRowStatuses:yn,useSidebarThreadShortcut:kn,experimental_useSidebarThreadPullRequest:Sn}=A;var q=globalThis.__bbPluginRuntime;if(q==null||q.react==null)throw new Error('Cannot load "react": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var H=q.react,_n="default"in H?H.default:H,{Activity:Nn,Children:zn,Component:Cn,Fragment:Rn,Profiler:Mn,PureComponent:Ln,StrictMode:In,Suspense:En,act:Dn,cache:$n,cacheSignal:Pn,captureOwnerStack:Fn,cloneElement:On,createContext:me,createElement:An,createRef:Bn,forwardRef:Hn,isValidElement:Un,lazy:Gn,memo:Vn,startTransition:jn,unstable_useCacheRefresh:Xn,use:Yn,useActionState:Kn,useCallback:ge,useContext:be,useDebugValue:qn,useDeferredValue:Qn,useEffect:C,useEffectEvent:Wn,useId:Jn,useImperativeHandle:Zn,useInsertionEffect:er,useLayoutEffect:tr,useMemo:Q,useOptimistic:nr,useReducer:rr,useRef:$,useState:v,useSyncExternalStore:W,useTransition:ir,version:or}=H;var J=e=>[...new Map(e.map(t=>[t.id,t])).values()].map((t,n)=>({message:t,index:n})).sort((t,n)=>t.message.time-n.message.time||t.index-n.index).slice(-300).map(({message:t})=>t),R={en:{locale:"en-US",title:"Notifications",button:e=>`Notifications: ${e}`,fresh:e=>`${e} new`,kinds:{done:"Done",failed:"Failed",interrupted:"Interrupted",attention:"Needs reply",digest:"Digest",message:"Message",reply:"Agent reply",system:"System"},filters:{all:"All",done:"Done",attention:"Attention",info:"Info / replies"},filtersLabel:"Notification filters",today:"Today",yesterday:"Yesterday",isNew:"New",hasReply:"Has an agent reply",replyTag:"\u21A9 +reply",more:"More",less:"Less",threadMessage:"Thread message",agentReply:"Agent reply",empty:"No notifications.",emptyFilter:"No entries of this kind.",system:"System",agent:"Agent",views:{time:"By time",threads:"By thread"},viewsLabel:"View",entries:e=>`Entries: ${e}`,emptyThreads:"No threads in this state.",back:"Threads",thread:"Thread",you:"You",outFailed:"The agent's own messages to this thread could not be read, so some may be missing here.",replyLabel:"Message to the thread",replyPlaceholder:"Write to this thread\u2026",send:"Send",sending:"Sending\u2026",sendFailed:e=>`Not sent: ${e}. Your text is kept, try again.`,tooLong:(e,t)=>`The message is ${e.toLocaleString("en-US")} characters long; the limit is ${t.toLocaleString("en-US")}. Shorten it to send.`,maybeSent:"It may have been sent: the connection dropped before the server answered. Check the conversation before you send it again.",noteUnknown:"The message was sent. The note to the agent may not have been: the connection dropped before the server answered.",noteLabel:"Tell the agent",noteHint:"The agent gets a note in its Notifications tab. The note starts its turn.",noteFailed:e=>`The message was sent, but the note to the agent was not: ${e}.`,noteText:(e,t)=>`wrote to thread ${e}: ${t}`,closed:{archived:"This thread is archived, so you cannot write to it from here.",gone:"This thread is unavailable: it was deleted or cannot be read. You cannot write to it.",none:"These entries have no sending thread, so there is nobody to reply to."},instruction:e=>`Start a short housekeeping reply to a message from another thread or from the system with ${e}; a result meant for the user goes without the marker.`,systemTexts:[[/^\s*failed\.?(?=\s|$)/i,"Failed."],[/^\s*was interrupted because\s+/i,"Interrupted: "],[/^\s*was interrupted\.?(?=\s|$)/i,"Interrupted."]],bareCompleted:"Completed."},ru:{locale:"ru-RU",title:"\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F",button:e=>`\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F: ${e}`,fresh:e=>`${e} ${e%10===1&&e%100!==11?"\u043D\u043E\u0432\u043E\u0435":"\u043D\u043E\u0432\u044B\u0445"}`,kinds:{done:"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B",failed:"\u0423\u043F\u0430\u043B",interrupted:"\u041F\u0440\u0435\u0440\u0432\u0430\u043D",attention:"\u041D\u0443\u0436\u0435\u043D \u043E\u0442\u0432\u0435\u0442",digest:"\u0421\u0432\u043E\u0434\u043A\u0430",message:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435",reply:"\u041E\u0442\u0432\u0435\u0442 \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E",system:"\u0421\u0438\u0441\u0442\u0435\u043C\u0430"},filters:{all:"\u0412\u0441\u0435",done:"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B",attention:"\u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435",info:"\u0418\u043D\u0444\u043E / \u043E\u0442\u0432\u0435\u0442\u044B"},filtersLabel:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0439",today:"\u0421\u0435\u0433\u043E\u0434\u043D\u044F",yesterday:"\u0412\u0447\u0435\u0440\u0430",isNew:"\u041D\u043E\u0432\u043E\u0435",hasReply:"\u0421 \u043E\u0442\u0432\u0435\u0442\u043E\u043C \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E",replyTag:"\u21A9 +\u043E\u0442\u0432\u0435\u0442",more:"\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435",less:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C",threadMessage:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0442\u0440\u0435\u0434\u0430",agentReply:"\u041E\u0442\u0432\u0435\u0442 \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E",empty:"\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0439 \u043D\u0435\u0442.",emptyFilter:"\u041D\u0435\u0442 \u0437\u0430\u043F\u0438\u0441\u0435\u0439 \u044D\u0442\u043E\u0433\u043E \u0432\u0438\u0434\u0430.",system:"\u0421\u0438\u0441\u0442\u0435\u043C\u0430",agent:"\u0412\u0435\u0434\u0443\u0449\u0438\u0439",views:{time:"\u041F\u043E \u0432\u0440\u0435\u043C\u0435\u043D\u0438",threads:"\u041F\u043E \u0442\u0440\u0435\u0434\u0430\u043C"},viewsLabel:"\u0412\u0438\u0434",entries:e=>`\u0417\u0430\u043F\u0438\u0441\u0435\u0439: ${e}`,emptyThreads:"\u041D\u0435\u0442 \u0442\u0440\u0435\u0434\u043E\u0432 \u0441 \u0442\u0430\u043A\u0438\u043C \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435\u043C.",back:"\u0422\u0440\u0435\u0434\u044B",thread:"\u0422\u0440\u0435\u0434",you:"\u0412\u044B",outFailed:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E \u044D\u0442\u043E\u043C\u0443 \u0442\u0440\u0435\u0434\u0443 \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0437\u0434\u0435\u0441\u044C \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u043D\u0435 \u0432\u0441\u0435.",replyLabel:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0442\u0440\u0435\u0434\u0443",replyPlaceholder:"\u041D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u044D\u0442\u043E\u043C\u0443 \u0442\u0440\u0435\u0434\u0443\u2026",send:"\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C",sending:"\u041E\u0442\u043F\u0440\u0430\u0432\u043A\u0430\u2026",sendFailed:e=>`\u041D\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E: ${e}. \u0422\u0435\u043A\u0441\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437.`,tooLong:(e,t)=>`\u0412 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0438 ${e.toLocaleString("ru-RU")} \u0437\u043D\u0430\u043A\u043E\u0432, \u043F\u0440\u0435\u0434\u0435\u043B \u2014 ${t.toLocaleString("ru-RU")}. \u0421\u043E\u043A\u0440\u0430\u0442\u0438\u0442\u0435 \u0435\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C.`,maybeSent:"\u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E: \u0441\u0432\u044F\u0437\u044C \u043E\u0431\u043E\u0440\u0432\u0430\u043B\u0430\u0441\u044C \u0440\u0430\u043D\u044C\u0448\u0435 \u043E\u0442\u0432\u0435\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u0435\u0440\u0435\u043F\u0438\u0441\u043A\u0443, \u043F\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043C \u043F\u043E\u0432\u0442\u043E\u0440\u044F\u0442\u044C.",noteUnknown:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E. \u0417\u0430\u043C\u0435\u0442\u043A\u0430 \u0432\u0435\u0434\u0443\u0449\u0435\u043C\u0443, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043D\u0435 \u0443\u0448\u043B\u0430: \u0441\u0432\u044F\u0437\u044C \u043E\u0431\u043E\u0440\u0432\u0430\u043B\u0430\u0441\u044C \u0440\u0430\u043D\u044C\u0448\u0435 \u043E\u0442\u0432\u0435\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.",noteLabel:"\u0421\u043E\u043E\u0431\u0449\u0438\u0442\u044C \u0432\u0435\u0434\u0443\u0449\u0435\u043C\u0443",noteHint:"\u0412\u0435\u0434\u0443\u0449\u0438\u0439 \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0437\u0430\u043C\u0435\u0442\u043A\u0443 \u0432\u043E \u0432\u043A\u043B\u0430\u0434\u043A\u0443 \xAB\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F\xBB. \u0417\u0430\u043C\u0435\u0442\u043A\u0430 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u0435\u0433\u043E \u0445\u043E\u0434.",noteFailed:e=>`\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E, \u043D\u043E \u0437\u0430\u043C\u0435\u0442\u043A\u0430 \u0432\u0435\u0434\u0443\u0449\u0435\u043C\u0443 \u043D\u0435 \u0443\u0448\u043B\u0430: ${e}.`,noteText:(e,t)=>`\u043D\u0430\u043F\u0438\u0441\u0430\u043B \u0442\u0440\u0435\u0434\u0443 ${e}: ${t}`,closed:{archived:"\u0422\u0440\u0435\u0434 \u0432 \u0430\u0440\u0445\u0438\u0432\u0435, \u043D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0435\u043C\u0443 \u043E\u0442\u0441\u044E\u0434\u0430 \u043D\u0435\u043B\u044C\u0437\u044F.",gone:"\u0422\u0440\u0435\u0434 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D: \u043E\u043D \u0443\u0434\u0430\u043B\u0451\u043D \u0438\u043B\u0438 \u043D\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F. \u041D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0435\u043C\u0443 \u043D\u0435\u043B\u044C\u0437\u044F.",none:"\u0423 \u044D\u0442\u0438\u0445 \u0437\u0430\u043F\u0438\u0441\u0435\u0439 \u043D\u0435\u0442 \u0442\u0440\u0435\u0434\u0430-\u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044F, \u043E\u0442\u0432\u0435\u0447\u0430\u0442\u044C \u043D\u0435\u043A\u043E\u043C\u0443."},instruction:e=>`\u041A\u043E\u0440\u043E\u0442\u043A\u0438\u0439 \u0441\u043B\u0443\u0436\u0435\u0431\u043D\u044B\u0439 \u043E\u0442\u0432\u0435\u0442 \u043D\u0430 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0434\u0440\u0443\u0433\u043E\u0433\u043E \u0442\u0440\u0435\u0434\u0430 \u0438\u043B\u0438 \u0441\u0438\u0441\u0442\u0435\u043C\u044B \u043D\u0430\u0447\u0438\u043D\u0430\u0439 \u0441 ${e}; \u0438\u0442\u043E\u0433 \u0434\u043B\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u2014 \u0431\u0435\u0437 \u043C\u0435\u0442\u043A\u0438.`,systemTexts:[[/^\s*failed\.?(?=\s|$)/i,"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B\u0441\u044F \u0441 \u043E\u0448\u0438\u0431\u043A\u043E\u0439."],[/was interrupted because its host daemon restarted\./gi,"\u041F\u0440\u0435\u0440\u0432\u0430\u043D: \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u043B\u0430\u0441\u044C \u0441\u043B\u0443\u0436\u0431\u0430 BB \u043D\u0430 \u043C\u0430\u0448\u0438\u043D\u0435 \u0438\u0441\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044F."],[/Child thread updates:/g,"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B\u0438 \u0445\u043E\u0434:"],[/\bcompleted\./gi,"\u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043B."],[/\bfailed\./gi,"\u0443\u043F\u0430\u043B."],[/\bwas interrupted\b/gi,"\u043F\u0440\u0435\u0440\u0432\u0430\u043D"],[/Review the thread before deciding next steps\./g,"\u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0442\u0440\u0435\u0434 \u043F\u0435\u0440\u0435\u0434 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C \u0448\u0430\u0433\u043E\u043C."]],bareCompleted:""}};var Z=globalThis.__bbPluginRuntime;if(Z==null||Z.jsxRuntime==null)throw new Error('Cannot load "react/jsx-runtime": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var U=Z.jsxRuntime,pr="default"in U?U.default:U,{Fragment:P,jsx:i,jsxs:c}=U;var ve="en",we=()=>R[ve].title,Me=8e3,Le=2,ye={hideIds:[],items:[]},Ie=me(null);function X(){let e=ue().call;return be(Ie)??e}var M=new Map,ee=new Map;function Ee(e,t,n){let o=M.get(e);if(!o){let r={data:{...ye,...ee.get(e)},listeners:new Set,timer:0,fails:0},s=()=>{t("feed",{threadId:e}).then(l=>{M.get(e)===r&&(ve=l.lang,r.fails=0,r.data=l,ee.set(e,{hideIds:l.hideIds,hide:l.hide}),r.listeners.forEach(p=>p()))}).catch(()=>{M.get(e)!==r||++r.fails!==Le||(ee.delete(e),r.data={...r.data,stale:!0},r.listeners.forEach(l=>l()))})};s(),r.timer=window.setInterval(s,Me),M.set(e,r),o=r}let d=o;return d.listeners.add(n),()=>{d.listeners.delete(n),!(d.listeners.size||M.get(e)!==d)&&(window.clearInterval(d.timer),M.delete(e))}}function re(e){let t=X(),n=ge(o=>e?Ee(e,t,o):()=>{},[t,e]);return W(n,()=>(e?M.get(e)?.data:null)??ye)}function De(e){let t=s=>`[data-timeline-row-id=${JSON.stringify(s)}]`,n=s=>`[data-timeline-virtual-spacer]>${t(s)}`,o=e.map(s=>`:not([data-timeline-virtual-spacer])>${t(s)}`).join(`,
2
2
  `),d=e.map(n).join(`,
3
3
  `),r=e.map(s=>`${n(s)}>*`).join(`,
4
4
  `);return`${o}{display:none!important}
@@ -4,6 +4,6 @@ import { fileURLToPath as __fileURLToPath } from "node:url";
4
4
  const require = __createRequire(import.meta.url);
5
5
  var __filename = __fileURLToPath(import.meta.url);
6
6
  var __dirname = __pathDirname(__filename);
7
- var xe=Object.defineProperty;var i=(e,n)=>xe(e,"name",{value:n,configurable:!0});import{defineRpcContract as Ae}from"@get-bb/plugin-sdk";import{z as A}from"zod";var C=["en","ru"],z=i(e=>e==="ru"?"ru":"en","langOf"),ee=2e4,Se=300,te=i(e=>[...new Map(e.map(n=>[n.id,n])).values()].map((n,u)=>({message:n,index:u})).sort((n,u)=>n.message.time-u.message.time||n.index-u.index).slice(-Se).map(({message:n})=>n),"lastSent"),E={en:{locale:"en-US",title:"Notifications",button:i(e=>`Notifications: ${e}`,"button"),fresh:i(e=>`${e} new`,"fresh"),kinds:{done:"Done",failed:"Failed",interrupted:"Interrupted",attention:"Needs reply",digest:"Digest",message:"Message",reply:"Agent reply",system:"System"},filters:{all:"All",done:"Done",attention:"Attention",info:"Info / replies"},filtersLabel:"Notification filters",today:"Today",yesterday:"Yesterday",isNew:"New",hasReply:"Has an agent reply",replyTag:"\u21A9 +reply",more:"More",less:"Less",threadMessage:"Thread message",agentReply:"Agent reply",empty:"No notifications.",emptyFilter:"No entries of this kind.",system:"System",agent:"Agent",views:{time:"By time",threads:"By thread"},viewsLabel:"View",entries:i(e=>`Entries: ${e}`,"entries"),emptyThreads:"No threads in this state.",back:"Threads",thread:"Thread",you:"You",outFailed:"The agent's own messages to this thread could not be read, so some may be missing here.",replyLabel:"Message to the thread",replyPlaceholder:"Write to this thread\u2026",send:"Send",sending:"Sending\u2026",sendFailed:i(e=>`Not sent: ${e}. Your text is kept, try again.`,"sendFailed"),tooLong:i((e,n)=>`The message is ${e.toLocaleString("en-US")} characters long; the limit is ${n.toLocaleString("en-US")}. Shorten it to send.`,"tooLong"),maybeSent:"It may have been sent: the connection dropped before BB answered. Check the conversation before you send it again.",noteUnknown:"The message was sent. The note to the agent may not have been: the connection dropped before BB answered.",noteLabel:"Tell the agent",noteHint:"The agent gets a note in its Notifications tab. The note starts its turn.",noteFailed:i(e=>`The message was sent, but the note to the agent was not: ${e}.`,"noteFailed"),noteText:i((e,n)=>`wrote to thread ${e}: ${n}`,"noteText"),closed:{archived:"This thread is archived, so you cannot write to it from here.",gone:"This thread is unavailable: it was deleted or cannot be read. You cannot write to it.",none:"These entries have no sending thread, so there is nobody to reply to."},instruction:i(e=>`Start a short housekeeping reply to a message from another thread or from the system with ${e}; a result meant for the user goes without the marker.`,"instruction"),systemTexts:[[/^\s*failed\.?(?=\s|$)/i,"Failed."],[/^\s*was interrupted because\s+/i,"Interrupted: "],[/^\s*was interrupted\.?(?=\s|$)/i,"Interrupted."]],bareCompleted:"Completed."},ru:{locale:"ru-RU",title:"\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F",button:i(e=>`\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F: ${e}`,"button"),fresh:i(e=>`${e} ${e%10===1&&e%100!==11?"\u043D\u043E\u0432\u043E\u0435":"\u043D\u043E\u0432\u044B\u0445"}`,"fresh"),kinds:{done:"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B",failed:"\u0423\u043F\u0430\u043B",interrupted:"\u041F\u0440\u0435\u0440\u0432\u0430\u043D",attention:"\u041D\u0443\u0436\u0435\u043D \u043E\u0442\u0432\u0435\u0442",digest:"\u0421\u0432\u043E\u0434\u043A\u0430",message:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435",reply:"\u041E\u0442\u0432\u0435\u0442 \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E",system:"\u0421\u0438\u0441\u0442\u0435\u043C\u0430"},filters:{all:"\u0412\u0441\u0435",done:"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B",attention:"\u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435",info:"\u0418\u043D\u0444\u043E / \u043E\u0442\u0432\u0435\u0442\u044B"},filtersLabel:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0439",today:"\u0421\u0435\u0433\u043E\u0434\u043D\u044F",yesterday:"\u0412\u0447\u0435\u0440\u0430",isNew:"\u041D\u043E\u0432\u043E\u0435",hasReply:"\u0421 \u043E\u0442\u0432\u0435\u0442\u043E\u043C \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E",replyTag:"\u21A9 +\u043E\u0442\u0432\u0435\u0442",more:"\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435",less:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C",threadMessage:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0442\u0440\u0435\u0434\u0430",agentReply:"\u041E\u0442\u0432\u0435\u0442 \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E",empty:"\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0439 \u043D\u0435\u0442.",emptyFilter:"\u041D\u0435\u0442 \u0437\u0430\u043F\u0438\u0441\u0435\u0439 \u044D\u0442\u043E\u0433\u043E \u0432\u0438\u0434\u0430.",system:"\u0421\u0438\u0441\u0442\u0435\u043C\u0430",agent:"\u0412\u0435\u0434\u0443\u0449\u0438\u0439",views:{time:"\u041F\u043E \u0432\u0440\u0435\u043C\u0435\u043D\u0438",threads:"\u041F\u043E \u0442\u0440\u0435\u0434\u0430\u043C"},viewsLabel:"\u0412\u0438\u0434",entries:i(e=>`\u0417\u0430\u043F\u0438\u0441\u0435\u0439: ${e}`,"entries"),emptyThreads:"\u041D\u0435\u0442 \u0442\u0440\u0435\u0434\u043E\u0432 \u0441 \u0442\u0430\u043A\u0438\u043C \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435\u043C.",back:"\u0422\u0440\u0435\u0434\u044B",thread:"\u0422\u0440\u0435\u0434",you:"\u0412\u044B",outFailed:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E \u044D\u0442\u043E\u043C\u0443 \u0442\u0440\u0435\u0434\u0443 \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0437\u0434\u0435\u0441\u044C \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u043D\u0435 \u0432\u0441\u0435.",replyLabel:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0442\u0440\u0435\u0434\u0443",replyPlaceholder:"\u041D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u044D\u0442\u043E\u043C\u0443 \u0442\u0440\u0435\u0434\u0443\u2026",send:"\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C",sending:"\u041E\u0442\u043F\u0440\u0430\u0432\u043A\u0430\u2026",sendFailed:i(e=>`\u041D\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E: ${e}. \u0422\u0435\u043A\u0441\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437.`,"sendFailed"),tooLong:i((e,n)=>`\u0412 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0438 ${e.toLocaleString("ru-RU")} \u0437\u043D\u0430\u043A\u043E\u0432, \u043F\u0440\u0435\u0434\u0435\u043B \u2014 ${n.toLocaleString("ru-RU")}. \u0421\u043E\u043A\u0440\u0430\u0442\u0438\u0442\u0435 \u0435\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C.`,"tooLong"),maybeSent:"\u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E: \u0441\u0432\u044F\u0437\u044C \u043E\u0431\u043E\u0440\u0432\u0430\u043B\u0430\u0441\u044C \u0440\u0430\u043D\u044C\u0448\u0435 \u043E\u0442\u0432\u0435\u0442\u0430 BB. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u0435\u0440\u0435\u043F\u0438\u0441\u043A\u0443, \u043F\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043C \u043F\u043E\u0432\u0442\u043E\u0440\u044F\u0442\u044C.",noteUnknown:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E. \u0417\u0430\u043C\u0435\u0442\u043A\u0430 \u0432\u0435\u0434\u0443\u0449\u0435\u043C\u0443, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043D\u0435 \u0443\u0448\u043B\u0430: \u0441\u0432\u044F\u0437\u044C \u043E\u0431\u043E\u0440\u0432\u0430\u043B\u0430\u0441\u044C \u0440\u0430\u043D\u044C\u0448\u0435 \u043E\u0442\u0432\u0435\u0442\u0430 BB.",noteLabel:"\u0421\u043E\u043E\u0431\u0449\u0438\u0442\u044C \u0432\u0435\u0434\u0443\u0449\u0435\u043C\u0443",noteHint:"\u0412\u0435\u0434\u0443\u0449\u0438\u0439 \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0437\u0430\u043C\u0435\u0442\u043A\u0443 \u0432\u043E \u0432\u043A\u043B\u0430\u0434\u043A\u0443 \xAB\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F\xBB. \u0417\u0430\u043C\u0435\u0442\u043A\u0430 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u0435\u0433\u043E \u0445\u043E\u0434.",noteFailed:i(e=>`\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E, \u043D\u043E \u0437\u0430\u043C\u0435\u0442\u043A\u0430 \u0432\u0435\u0434\u0443\u0449\u0435\u043C\u0443 \u043D\u0435 \u0443\u0448\u043B\u0430: ${e}.`,"noteFailed"),noteText:i((e,n)=>`\u043D\u0430\u043F\u0438\u0441\u0430\u043B \u0442\u0440\u0435\u0434\u0443 ${e}: ${n}`,"noteText"),closed:{archived:"\u0422\u0440\u0435\u0434 \u0432 \u0430\u0440\u0445\u0438\u0432\u0435, \u043D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0435\u043C\u0443 \u043E\u0442\u0441\u044E\u0434\u0430 \u043D\u0435\u043B\u044C\u0437\u044F.",gone:"\u0422\u0440\u0435\u0434 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D: \u043E\u043D \u0443\u0434\u0430\u043B\u0451\u043D \u0438\u043B\u0438 \u043D\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F. \u041D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0435\u043C\u0443 \u043D\u0435\u043B\u044C\u0437\u044F.",none:"\u0423 \u044D\u0442\u0438\u0445 \u0437\u0430\u043F\u0438\u0441\u0435\u0439 \u043D\u0435\u0442 \u0442\u0440\u0435\u0434\u0430-\u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044F, \u043E\u0442\u0432\u0435\u0447\u0430\u0442\u044C \u043D\u0435\u043A\u043E\u043C\u0443."},instruction:i(e=>`\u041A\u043E\u0440\u043E\u0442\u043A\u0438\u0439 \u0441\u043B\u0443\u0436\u0435\u0431\u043D\u044B\u0439 \u043E\u0442\u0432\u0435\u0442 \u043D\u0430 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0434\u0440\u0443\u0433\u043E\u0433\u043E \u0442\u0440\u0435\u0434\u0430 \u0438\u043B\u0438 \u0441\u0438\u0441\u0442\u0435\u043C\u044B \u043D\u0430\u0447\u0438\u043D\u0430\u0439 \u0441 ${e}; \u0438\u0442\u043E\u0433 \u0434\u043B\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u2014 \u0431\u0435\u0437 \u043C\u0435\u0442\u043A\u0438.`,"instruction"),systemTexts:[[/^\s*failed\.?(?=\s|$)/i,"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B\u0441\u044F \u0441 \u043E\u0448\u0438\u0431\u043A\u043E\u0439."],[/was interrupted because its host daemon restarted\./gi,"\u041F\u0440\u0435\u0440\u0432\u0430\u043D: \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u043B\u0430\u0441\u044C \u0441\u043B\u0443\u0436\u0431\u0430 BB \u043D\u0430 \u043C\u0430\u0448\u0438\u043D\u0435 \u0438\u0441\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044F."],[/Child thread updates:/g,"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B\u0438 \u0445\u043E\u0434:"],[/\bcompleted\./gi,"\u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043B."],[/\bfailed\./gi,"\u0443\u043F\u0430\u043B."],[/\bwas interrupted\b/gi,"\u043F\u0440\u0435\u0440\u0432\u0430\u043D"],[/Review the thread before deciding next steps\./g,"\u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0442\u0440\u0435\u0434 \u043F\u0435\u0440\u0435\u0434 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C \u0448\u0430\u0433\u043E\u043C."]],bareCompleted:""}};import{z as s}from"zod";var ke=s.object({kind:s.enum(["message","reply"]),text:s.string(),time:s.number().optional()}),Te=s.object({id:s.string(),time:s.number(),sender:s.string(),senderThreadId:s.string().nullable().optional(),senderTitle:s.string().nullable().optional(),kind:s.string(),text:s.string(),reply:s.string(),replyAt:s.number(),parts:s.array(ke)}),Re=s.object({hideIds:s.array(s.string()),items:s.array(Te),closed:s.record(s.string(),s.enum(["archived","gone"]))}),x=s.string().min(1).max(128),$=["time","threads"],L=s.object({id:s.string().min(1).max(64),to:x,text:s.string().min(1).max(ee),time:s.number()}),ne={feed:{input:s.object({threadId:x}),output:Re.extend({seenAt:s.number(),lang:s.enum(C),marker:s.string(),hide:s.boolean(),view:s.enum($),sent:s.array(L)})},seen:{input:s.object({threadId:x,at:s.number()}),output:s.object({seenAt:s.number()})},view:{input:s.object({threadId:x,view:s.enum($)}),output:s.object({view:s.enum($)})},talk:{input:s.object({threadId:x,peerId:x}),output:s.object({ok:s.boolean(),out:s.array(s.object({id:s.string(),time:s.number(),text:s.string()}))})},sent:{input:L.extend({threadId:x}),output:s.object({sent:s.array(L)})},delivered:{input:s.object({threadId:x,peerId:x,text:s.string().min(1),since:s.number()}),output:s.object({found:s.boolean()})}};var ve=Ae(ne),de=A.array(A.string().min(1)),Ie=A.string().refine(e=>{try{return de.safeParse(JSON.parse(e)).success}catch{return!1}},"Must be a JSON array of thread ids"),se=i(e=>{try{return de.parse(JSON.parse(e))}catch{return null}},"scopeOf"),Me=20,$e=50,Le=10*6e4,H=i((e,n,u)=>{for(e.delete(n),e.set(n,u);e.size>$e;)e.delete(e.keys().next().value)},"keep"),Ne=5e3,_e=2e4,Pe=6e4,je=5e3,Ce=["active","pending","starting","stopping"],F=i((e,n=[])=>{for(let u of e)n.push(u),u.children&&F(u.children,n);return n},"flatten"),W=i((e,n)=>{if(!e.children||!n.children)return{...e,...n,children:n.children??e.children};let u=new Map(e.children.map(h=>[h.id,h])),c=new Set(n.children.map(h=>h.id)),p=[...e.children.filter(h=>!c.has(h.id)),...n.children.map(h=>u.has(h.id)?W(u.get(h.id),h):h)];return{...e,...n,children:p}},"joinRow"),re=i((e,n)=>{let u=new Set(n.map(f=>f.id)),c=e.findIndex(f=>u.has(f.id));if(c<0)return[...e,...n];let p=n[0],h=e.find(f=>f.id===p.id);return[...e.slice(0,c),...h?[W(h,p)]:[p],...n.slice(1)]},"joinRows"),Ee=i(e=>n=>!!e&&n.kind==="conversation"&&n.role==="assistant"&&!!n.text?.trimStart().startsWith(e),"isBgWith"),le=i(e=>e.kind==="conversation"&&e.role==="user"&&(!!e.senderThreadId||e.systemMessageKind?.startsWith("child-")===!0)||e.kind==="system"&&/@thread:[\w-]+\s+(?:finished|completed)\s*:/i.test(`${e.title??""} ${e.detail??""}`),"notification"),ce=/^\[notify:([\p{L}\p{N}][\p{L}\p{N} .-]{0,31})\](?:\r?\n|$)/u,ie=i(e=>e.kind==="conversation"&&e.role==="user"&&!le(e)?e.text?.match(ce)?.[1]??null:null,"toolOf"),ae=/((?:```[\s\S]*?```|~~~[\s\S]*?~~~|`+[^`\r\n]+`+|^[ ]{4,}.*$|!?\[(?:[^\[\]]|\[[^\[\]]*\])*\](?:\([^\)]*\)|\[[^\]]*\])|^[ \t]*\[[^\]]+\]:[ \t]*\S+.*$|\b[a-z]+:\/\/[^\s<>()]+|\bthr_\w+(?::[\w-]+)+|(?<!\w)[\/.][\w.\/-]+))|(?<![\w/:.\-=?&#])(?:@thread:)?(thr_\w+)(?![\w/\-=?&#]|[.:](?!\s|$))|(::task\{key="([^"]+)"[^}]*\})/gm,Fe=i(e=>e.replace(/[\\\[\]*_`]/g,"\\$&"),"esc"),Be=/^(?:(?:\[bb message from thread:[^\]]+\]|\[bb system\](?=\s*Child thread updates:))[ \t]*(?:\r?\n(?:\r?\n)?)?|\[bb system\]\s*@thread:[^\s:]+[ \t]*(?:(?:completed|finished):[ \t]*(?:\r?\n(?:\r?\n)?|$))?)/i,oe=i(e=>e.replace(Be,""),"clean"),De=i((e,n,u)=>{let c=E[e];return n.systemMessageKind==="child-completed"?c.bareCompleted&&/^\s*completed\.?\s*$/i.test(u)?c.bareCompleted:u:n.kind==="system"||n.systemMessageKind?.startsWith("child-")?c.systemTexts.reduce((p,[h,f])=>p.replace(h,f),u):u},"systemTextOf"),R=new Map,Oe=i(e=>{let n=R.get(e);return n?n.failed?Date.now()-n.at>=6e4:Date.now()-n.at>=6e5:!0},"isStale");function Ke(e){let n=[...e].sort((c,p)=>c.time-p.time),u=new Set;return n.forEach((c,p)=>{if(!(c.kind!=="message"||!c.senderThreadId))for(let h of n.slice(p+1)){if(h.time-c.time>Pe)break;if(!(h.kind!=="done"||h.senderThreadId!==c.senderThreadId)){h.parts.push({kind:"message",text:c.text,time:c.time}),c.reply&&h.parts.push({kind:"reply",text:c.reply,time:c.replyAt??c.time}),u.add(c.id);break}}}),n.filter(c=>!u.has(c.id)).reverse()}i(Ke,"glue");async function Ue(e){let n=e.settings.define({language:{type:"select",label:"Language",options:[...C],default:"en"},marker:{type:"string",label:"Reply marker, for example [bg] (empty = agent replies are not hidden and agents get no instruction)",experimental_schema:A.string().max(32,"At most 32 characters"),default:""},hide:{type:"boolean",label:"Hide rows in the main feed (off = stock feed, the button and the tab keep working)",default:!0},threads:{type:"string",label:"Threads (JSON array of thread ids; empty = every thread)",experimental_multiline:!0,experimental_schema:Ie,default:"[]"}}),u=await n.get(),c=se(u.threads),p=u.hide,h=z(u.language),f=u.marker.trim(),N=i(r=>c!==null&&(c.length===0||c.includes(r)),"inScope"),B=new Map,ge=i(async(r,a)=>{let m=new Set(a?.map(g=>g.id)),o=[],d=[],l=!1,y={threadId:r,includeNestedRows:"true"};for(let g=0;g<Me;g++){let w=await e.sdk.threads.timeline(y),j=w.rows;o=re(j,o),g===0&&(d=w.timelinePage.olderRowUpdates??[]);let k=w.timelinePage.olderCursor;if(l=!k,!k||j.some(v=>m.has(v.id)))break;y={threadId:r,includeNestedRows:"true",beforeAnchorId:k.anchorId,beforeAnchorSeq:String(k.anchorSeq)}}if(!a||l)return o;let S=new Map(d.map(g=>[g.id,g]));return re(a.map(g=>S.has(g.id)?W(g,S.get(g.id)):g),o)},"readRows"),X=i(async r=>{let a=B.get(r);if(a?.reading)return F(await a.reading);let m=Date.now(),o=!a||m-a.at>=Le,d=ge(r,o?null:a.rows),l={rows:a?.rows??[],at:a?.at??0,reading:d};H(B,r,l);try{l.rows=await d,o&&(l.at=m)}catch(y){throw a||B.delete(r),y}finally{delete l.reading}return F(l.rows)},"allRows"),V=i(async(r,a=[])=>{let m=new Set(a);for(let o of r)for(let d of o.matchAll(ae))d[2]&&m.add(d[2]);return await Promise.all([...m].filter(Oe).map(async o=>{try{let d=await e.sdk.threads.get({threadId:o});R.set(o,{title:d.title||d.titleFallback||o,href:`/projects/${d.projectId}/threads/${o}`,at:Date.now(),archived:d.archivedAt!=null})}catch{R.set(o,{at:Date.now(),failed:!0})}})),o=>o.replace(ae,(d,l,y,S,g)=>{if(l)return l;if(y){let w=R.get(y);return w?.title&&w.href?`[${Fe(w.title)}](${w.href})`:d}return g?`[${g}](/plugins/tasks/tasks/task/${g})`:d})},"linker"),ue=i(async r=>{if(!N(r))return{hideIds:[],items:[],closed:{}};let a=E[h],m=Ee(f),o=await X(r),d=o.filter(t=>le(t)||ie(t)!==null),y=Ce.includes((await e.sdk.threads.get({threadId:r})).status)?[...o].reverse().find(t=>t.turnId)?.turnId:null,S=o.filter(t=>m(t)&&!!t.turnId&&t.turnId!==y),g=[...new Set([...d,...S].map(t=>t.id))],w=new Set(d.map(t=>t.id)),j=new Set(o.filter(m).map(t=>t.id)),k=new Map,v=new Map,Q=new Set,I=null;for(let t of o)t.kind==="conversation"&&t.role==="user"?I=w.has(t.id)?t.id:null:I&&j.has(t.id)&&(k.set(I,t.text??""),v.set(I,t.createdAt??t.startedAt??0),Q.add(t.id),I=null);let pe={"child-completed":"done","child-failed":"failed","child-interrupted":"interrupted","child-stopped":"interrupted","child-needs-attention":"attention","child-question":"attention","child-outcome-batch":"digest"},fe=d.map(t=>{let T=ie(t);if(T!==null)return{id:t.id,time:t.createdAt??t.startedAt??0,sender:T,senderThreadId:null,kind:"notify",text:(t.text??"").replace(ce,""),reply:k.get(t.id)??"",replyAt:v.get(t.id)??t.createdAt??t.startedAt??0,parts:[]};let G=t.systemMessageSubject?.kind==="thread-batch"?null:t.senderThreadId??t.systemMessageSubject?.threadId??t.text?.match(/@thread:(thr_[\w-]+)/)?.[1]??null,M=t.systemMessageKind&&t.systemMessageKind!=="unlabeled"?t.systemMessageKind:t.kind==="system"?t.title??"system":"message",be=t.text??[t.title,t.detail].filter(Boolean).join(`
8
- `);return{id:t.id,time:t.createdAt??t.startedAt??0,sender:t.senderThreadId??t.systemMessageSubject?.threadName??t.systemMessageSubject?.threadId??a.system,senderThreadId:G,kind:pe[M]??M,text:De(h,t,oe(be)),reply:k.get(t.id)??"",replyAt:v.get(t.id)??t.createdAt??t.startedAt??0,parts:[]}}),ye=S.filter(t=>!Q.has(t.id)).map(t=>({id:t.id,time:t.createdAt??t.startedAt??0,sender:a.agent,senderThreadId:null,kind:"reply",text:t.text??"",reply:"",replyAt:t.createdAt??t.startedAt??0,parts:[]})),O=Ke([...fe,...ye]),Z=[...new Set(O.flatMap(t=>t.senderThreadId?[t.senderThreadId]:[]))],K=await V(O.flatMap(t=>[t.text,t.reply,...t.parts.map(T=>T.text)]),Z),we=O.map(t=>{let G=(t.senderThreadId?R.get(t.senderThreadId):null)?.title??null;return{...t,senderTitle:G,text:K(t.text),reply:K(t.reply),parts:t.parts.map(M=>({...M,text:K(M.text)}))}}),U={};for(let t of Z){let T=R.get(t);T?.failed?U[t]="gone":T?.archived&&(U[t]="archived")}return{hideIds:g,items:we,closed:U}},"compute"),Y=new Map,he=i((r,a)=>{let m=`${r}|${a}`,o=Y.get(m);if(o&&Date.now()-o.at<_e)return o.value;let d=(async()=>{if(!N(r))return{ok:!0,out:[]};try{let l=(await X(a)).filter(g=>g.kind==="conversation"&&g.role==="user"&&g.senderThreadId===r),y=l.map(g=>oe(g.text??"")),S=await V(y);return{ok:!0,out:l.map((g,w)=>({id:g.id,time:g.createdAt??g.startedAt??0,text:S(y[w])}))}}catch{return{ok:!1,out:[]}}})();return H(Y,m,{at:Date.now(),value:d}),d},"talkOf"),D=new Map,me=i(r=>{let a=D.get(r);if(a&&Date.now()-a.at<Ne)return a.value;let m=ue(r);return H(D,r,{at:Date.now(),value:m}),m},"rowsOf");n.onChange(r=>{c=se(r.threads),p=r.hide,h=z(r.language),f=r.marker.trim(),D.clear()});let b=e.storage.kv,_=await b.get("since");typeof _!="number"&&(_=Date.now(),await b.set("since",_));let q=_,P=Promise.resolve(),J=i(async r=>A.array(L).catch([]).parse(await b.get(`sent:${r}`)),"sentOf");e.rpc.register(ve,{feed:i(async({threadId:r})=>({...await me(r),seenAt:await b.get(`seen:${r}`)??q,lang:h,marker:f,hide:p,view:A.enum($).catch("time").parse(await b.get(`view:${r}`)),sent:await J(r)}),"feed"),view:i(async({threadId:r,view:a})=>(await b.set(`view:${r}`,a),{view:a}),"view"),talk:i(({threadId:r,peerId:a})=>he(r,a),"talk"),delivered:i(async({threadId:r,peerId:a,text:m,since:o})=>{if(!N(r))return{found:!1};try{return{found:F((await e.sdk.threads.timeline({threadId:a,includeNestedRows:"true"})).rows).some(l=>l.kind==="conversation"&&l.role==="user"&&!l.senderThreadId&&(l.createdAt??l.startedAt??0)>=o-je&&l.text?.trim()===m.trim())}}catch{return{found:!1}}},"delivered"),sent:i(({threadId:r,...a})=>{let m=P.then(async()=>{let o=await J(r);if(o.some(l=>l.id===a.id))return{sent:o};let d=te([...o,a]);return d.some(l=>l.id===a.id)?(await b.set(`sent:${r}`,d),{sent:d}):{sent:o}});return P=m.catch(()=>{}),m},"sent"),seen:i(({threadId:r,at:a})=>{let m=P.then(async()=>{let o=`seen:${r}`,d=await b.get(o)??q,l=Math.max(d,Math.min(a,Date.now()));return l>d&&await b.set(o,l),{seenAt:l}});return P=m.catch(()=>{}),m},"seen")}),e.agents.contributeInstructions(r=>f&&N(r.threadId)?E[h].instruction(f):null)}i(Ue,"plugin");export{Ue as default,Ke as glue,ve as rpcContract,De as systemTextOf,ie as toolOf};
7
+ var xe=Object.defineProperty;var i=(e,n)=>xe(e,"name",{value:n,configurable:!0});import{defineRpcContract as Ae}from"@get-bb/plugin-sdk";import{z as A}from"zod";var C=["en","ru"],z=i(e=>e==="ru"?"ru":"en","langOf"),ee=2e4,Se=300,te=i(e=>[...new Map(e.map(n=>[n.id,n])).values()].map((n,u)=>({message:n,index:u})).sort((n,u)=>n.message.time-u.message.time||n.index-u.index).slice(-Se).map(({message:n})=>n),"lastSent"),E={en:{locale:"en-US",title:"Notifications",button:i(e=>`Notifications: ${e}`,"button"),fresh:i(e=>`${e} new`,"fresh"),kinds:{done:"Done",failed:"Failed",interrupted:"Interrupted",attention:"Needs reply",digest:"Digest",message:"Message",reply:"Agent reply",system:"System"},filters:{all:"All",done:"Done",attention:"Attention",info:"Info / replies"},filtersLabel:"Notification filters",today:"Today",yesterday:"Yesterday",isNew:"New",hasReply:"Has an agent reply",replyTag:"\u21A9 +reply",more:"More",less:"Less",threadMessage:"Thread message",agentReply:"Agent reply",empty:"No notifications.",emptyFilter:"No entries of this kind.",system:"System",agent:"Agent",views:{time:"By time",threads:"By thread"},viewsLabel:"View",entries:i(e=>`Entries: ${e}`,"entries"),emptyThreads:"No threads in this state.",back:"Threads",thread:"Thread",you:"You",outFailed:"The agent's own messages to this thread could not be read, so some may be missing here.",replyLabel:"Message to the thread",replyPlaceholder:"Write to this thread\u2026",send:"Send",sending:"Sending\u2026",sendFailed:i(e=>`Not sent: ${e}. Your text is kept, try again.`,"sendFailed"),tooLong:i((e,n)=>`The message is ${e.toLocaleString("en-US")} characters long; the limit is ${n.toLocaleString("en-US")}. Shorten it to send.`,"tooLong"),maybeSent:"It may have been sent: the connection dropped before the server answered. Check the conversation before you send it again.",noteUnknown:"The message was sent. The note to the agent may not have been: the connection dropped before the server answered.",noteLabel:"Tell the agent",noteHint:"The agent gets a note in its Notifications tab. The note starts its turn.",noteFailed:i(e=>`The message was sent, but the note to the agent was not: ${e}.`,"noteFailed"),noteText:i((e,n)=>`wrote to thread ${e}: ${n}`,"noteText"),closed:{archived:"This thread is archived, so you cannot write to it from here.",gone:"This thread is unavailable: it was deleted or cannot be read. You cannot write to it.",none:"These entries have no sending thread, so there is nobody to reply to."},instruction:i(e=>`Start a short housekeeping reply to a message from another thread or from the system with ${e}; a result meant for the user goes without the marker.`,"instruction"),systemTexts:[[/^\s*failed\.?(?=\s|$)/i,"Failed."],[/^\s*was interrupted because\s+/i,"Interrupted: "],[/^\s*was interrupted\.?(?=\s|$)/i,"Interrupted."]],bareCompleted:"Completed."},ru:{locale:"ru-RU",title:"\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F",button:i(e=>`\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F: ${e}`,"button"),fresh:i(e=>`${e} ${e%10===1&&e%100!==11?"\u043D\u043E\u0432\u043E\u0435":"\u043D\u043E\u0432\u044B\u0445"}`,"fresh"),kinds:{done:"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B",failed:"\u0423\u043F\u0430\u043B",interrupted:"\u041F\u0440\u0435\u0440\u0432\u0430\u043D",attention:"\u041D\u0443\u0436\u0435\u043D \u043E\u0442\u0432\u0435\u0442",digest:"\u0421\u0432\u043E\u0434\u043A\u0430",message:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435",reply:"\u041E\u0442\u0432\u0435\u0442 \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E",system:"\u0421\u0438\u0441\u0442\u0435\u043C\u0430"},filters:{all:"\u0412\u0441\u0435",done:"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B",attention:"\u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435",info:"\u0418\u043D\u0444\u043E / \u043E\u0442\u0432\u0435\u0442\u044B"},filtersLabel:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0439",today:"\u0421\u0435\u0433\u043E\u0434\u043D\u044F",yesterday:"\u0412\u0447\u0435\u0440\u0430",isNew:"\u041D\u043E\u0432\u043E\u0435",hasReply:"\u0421 \u043E\u0442\u0432\u0435\u0442\u043E\u043C \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E",replyTag:"\u21A9 +\u043E\u0442\u0432\u0435\u0442",more:"\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435",less:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C",threadMessage:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0442\u0440\u0435\u0434\u0430",agentReply:"\u041E\u0442\u0432\u0435\u0442 \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E",empty:"\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0439 \u043D\u0435\u0442.",emptyFilter:"\u041D\u0435\u0442 \u0437\u0430\u043F\u0438\u0441\u0435\u0439 \u044D\u0442\u043E\u0433\u043E \u0432\u0438\u0434\u0430.",system:"\u0421\u0438\u0441\u0442\u0435\u043C\u0430",agent:"\u0412\u0435\u0434\u0443\u0449\u0438\u0439",views:{time:"\u041F\u043E \u0432\u0440\u0435\u043C\u0435\u043D\u0438",threads:"\u041F\u043E \u0442\u0440\u0435\u0434\u0430\u043C"},viewsLabel:"\u0412\u0438\u0434",entries:i(e=>`\u0417\u0430\u043F\u0438\u0441\u0435\u0439: ${e}`,"entries"),emptyThreads:"\u041D\u0435\u0442 \u0442\u0440\u0435\u0434\u043E\u0432 \u0441 \u0442\u0430\u043A\u0438\u043C \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435\u043C.",back:"\u0422\u0440\u0435\u0434\u044B",thread:"\u0422\u0440\u0435\u0434",you:"\u0412\u044B",outFailed:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043E \u044D\u0442\u043E\u043C\u0443 \u0442\u0440\u0435\u0434\u0443 \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0437\u0434\u0435\u0441\u044C \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u043D\u0435 \u0432\u0441\u0435.",replyLabel:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0442\u0440\u0435\u0434\u0443",replyPlaceholder:"\u041D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u044D\u0442\u043E\u043C\u0443 \u0442\u0440\u0435\u0434\u0443\u2026",send:"\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C",sending:"\u041E\u0442\u043F\u0440\u0430\u0432\u043A\u0430\u2026",sendFailed:i(e=>`\u041D\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E: ${e}. \u0422\u0435\u043A\u0441\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437.`,"sendFailed"),tooLong:i((e,n)=>`\u0412 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0438 ${e.toLocaleString("ru-RU")} \u0437\u043D\u0430\u043A\u043E\u0432, \u043F\u0440\u0435\u0434\u0435\u043B \u2014 ${n.toLocaleString("ru-RU")}. \u0421\u043E\u043A\u0440\u0430\u0442\u0438\u0442\u0435 \u0435\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C.`,"tooLong"),maybeSent:"\u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E: \u0441\u0432\u044F\u0437\u044C \u043E\u0431\u043E\u0440\u0432\u0430\u043B\u0430\u0441\u044C \u0440\u0430\u043D\u044C\u0448\u0435 \u043E\u0442\u0432\u0435\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u0435\u0440\u0435\u043F\u0438\u0441\u043A\u0443, \u043F\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043C \u043F\u043E\u0432\u0442\u043E\u0440\u044F\u0442\u044C.",noteUnknown:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E. \u0417\u0430\u043C\u0435\u0442\u043A\u0430 \u0432\u0435\u0434\u0443\u0449\u0435\u043C\u0443, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043D\u0435 \u0443\u0448\u043B\u0430: \u0441\u0432\u044F\u0437\u044C \u043E\u0431\u043E\u0440\u0432\u0430\u043B\u0430\u0441\u044C \u0440\u0430\u043D\u044C\u0448\u0435 \u043E\u0442\u0432\u0435\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.",noteLabel:"\u0421\u043E\u043E\u0431\u0449\u0438\u0442\u044C \u0432\u0435\u0434\u0443\u0449\u0435\u043C\u0443",noteHint:"\u0412\u0435\u0434\u0443\u0449\u0438\u0439 \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0437\u0430\u043C\u0435\u0442\u043A\u0443 \u0432\u043E \u0432\u043A\u043B\u0430\u0434\u043A\u0443 \xAB\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F\xBB. \u0417\u0430\u043C\u0435\u0442\u043A\u0430 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u0435\u0433\u043E \u0445\u043E\u0434.",noteFailed:i(e=>`\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E, \u043D\u043E \u0437\u0430\u043C\u0435\u0442\u043A\u0430 \u0432\u0435\u0434\u0443\u0449\u0435\u043C\u0443 \u043D\u0435 \u0443\u0448\u043B\u0430: ${e}.`,"noteFailed"),noteText:i((e,n)=>`\u043D\u0430\u043F\u0438\u0441\u0430\u043B \u0442\u0440\u0435\u0434\u0443 ${e}: ${n}`,"noteText"),closed:{archived:"\u0422\u0440\u0435\u0434 \u0432 \u0430\u0440\u0445\u0438\u0432\u0435, \u043D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0435\u043C\u0443 \u043E\u0442\u0441\u044E\u0434\u0430 \u043D\u0435\u043B\u044C\u0437\u044F.",gone:"\u0422\u0440\u0435\u0434 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D: \u043E\u043D \u0443\u0434\u0430\u043B\u0451\u043D \u0438\u043B\u0438 \u043D\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F. \u041D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0435\u043C\u0443 \u043D\u0435\u043B\u044C\u0437\u044F.",none:"\u0423 \u044D\u0442\u0438\u0445 \u0437\u0430\u043F\u0438\u0441\u0435\u0439 \u043D\u0435\u0442 \u0442\u0440\u0435\u0434\u0430-\u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044F, \u043E\u0442\u0432\u0435\u0447\u0430\u0442\u044C \u043D\u0435\u043A\u043E\u043C\u0443."},instruction:i(e=>`\u041A\u043E\u0440\u043E\u0442\u043A\u0438\u0439 \u0441\u043B\u0443\u0436\u0435\u0431\u043D\u044B\u0439 \u043E\u0442\u0432\u0435\u0442 \u043D\u0430 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0434\u0440\u0443\u0433\u043E\u0433\u043E \u0442\u0440\u0435\u0434\u0430 \u0438\u043B\u0438 \u0441\u0438\u0441\u0442\u0435\u043C\u044B \u043D\u0430\u0447\u0438\u043D\u0430\u0439 \u0441 ${e}; \u0438\u0442\u043E\u0433 \u0434\u043B\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u2014 \u0431\u0435\u0437 \u043C\u0435\u0442\u043A\u0438.`,"instruction"),systemTexts:[[/^\s*failed\.?(?=\s|$)/i,"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B\u0441\u044F \u0441 \u043E\u0448\u0438\u0431\u043A\u043E\u0439."],[/was interrupted because its host daemon restarted\./gi,"\u041F\u0440\u0435\u0440\u0432\u0430\u043D: \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u043B\u0430\u0441\u044C \u0441\u043B\u0443\u0436\u0431\u0430 BB \u043D\u0430 \u043C\u0430\u0448\u0438\u043D\u0435 \u0438\u0441\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044F."],[/Child thread updates:/g,"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043B\u0438 \u0445\u043E\u0434:"],[/\bcompleted\./gi,"\u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043B."],[/\bfailed\./gi,"\u0443\u043F\u0430\u043B."],[/\bwas interrupted\b/gi,"\u043F\u0440\u0435\u0440\u0432\u0430\u043D"],[/Review the thread before deciding next steps\./g,"\u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0442\u0440\u0435\u0434 \u043F\u0435\u0440\u0435\u0434 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C \u0448\u0430\u0433\u043E\u043C."]],bareCompleted:""}};import{z as s}from"zod";var ke=s.object({kind:s.enum(["message","reply"]),text:s.string(),time:s.number().optional()}),Te=s.object({id:s.string(),time:s.number(),sender:s.string(),senderThreadId:s.string().nullable().optional(),senderTitle:s.string().nullable().optional(),kind:s.string(),text:s.string(),reply:s.string(),replyAt:s.number(),parts:s.array(ke)}),Re=s.object({hideIds:s.array(s.string()),items:s.array(Te),closed:s.record(s.string(),s.enum(["archived","gone"]))}),x=s.string().min(1).max(128),$=["time","threads"],L=s.object({id:s.string().min(1).max(64),to:x,text:s.string().min(1).max(ee),time:s.number()}),ne={feed:{input:s.object({threadId:x}),output:Re.extend({seenAt:s.number(),lang:s.enum(C),marker:s.string(),hide:s.boolean(),view:s.enum($),sent:s.array(L)})},seen:{input:s.object({threadId:x,at:s.number()}),output:s.object({seenAt:s.number()})},view:{input:s.object({threadId:x,view:s.enum($)}),output:s.object({view:s.enum($)})},talk:{input:s.object({threadId:x,peerId:x}),output:s.object({ok:s.boolean(),out:s.array(s.object({id:s.string(),time:s.number(),text:s.string()}))})},sent:{input:L.extend({threadId:x}),output:s.object({sent:s.array(L)})},delivered:{input:s.object({threadId:x,peerId:x,text:s.string().min(1),since:s.number()}),output:s.object({found:s.boolean()})}};var ve=Ae(ne),de=A.array(A.string().min(1)),Ie=A.string().refine(e=>{try{return de.safeParse(JSON.parse(e)).success}catch{return!1}},"Must be a JSON array of thread ids"),se=i(e=>{try{return de.parse(JSON.parse(e))}catch{return null}},"scopeOf"),Me=20,$e=50,Le=10*6e4,H=i((e,n,u)=>{for(e.delete(n),e.set(n,u);e.size>$e;)e.delete(e.keys().next().value)},"keep"),Ne=5e3,_e=2e4,Pe=6e4,je=5e3,Ce=["active","pending","starting","stopping"],F=i((e,n=[])=>{for(let u of e)n.push(u),u.children&&F(u.children,n);return n},"flatten"),W=i((e,n)=>{if(!e.children||!n.children)return{...e,...n,children:n.children??e.children};let u=new Map(e.children.map(h=>[h.id,h])),c=new Set(n.children.map(h=>h.id)),p=[...e.children.filter(h=>!c.has(h.id)),...n.children.map(h=>u.has(h.id)?W(u.get(h.id),h):h)];return{...e,...n,children:p}},"joinRow"),re=i((e,n)=>{let u=new Set(n.map(f=>f.id)),c=e.findIndex(f=>u.has(f.id));if(c<0)return[...e,...n];let p=n[0],h=e.find(f=>f.id===p.id);return[...e.slice(0,c),...h?[W(h,p)]:[p],...n.slice(1)]},"joinRows"),Ee=i(e=>n=>!!e&&n.kind==="conversation"&&n.role==="assistant"&&!!n.text?.trimStart().startsWith(e),"isBgWith"),le=i(e=>e.kind==="conversation"&&e.role==="user"&&(!!e.senderThreadId||e.systemMessageKind?.startsWith("child-")===!0)||e.kind==="system"&&/@thread:[\w-]+\s+(?:finished|completed)\s*:/i.test(`${e.title??""} ${e.detail??""}`),"notification"),ce=/^\[notify:([\p{L}\p{N}][\p{L}\p{N} .-]{0,31})\](?:\r?\n|$)/u,ie=i(e=>e.kind==="conversation"&&e.role==="user"&&!le(e)?e.text?.match(ce)?.[1]??null:null,"toolOf"),ae=/((?:```[\s\S]*?```|~~~[\s\S]*?~~~|`+[^`\r\n]+`+|^[ ]{4,}.*$|!?\[(?:[^\[\]]|\[[^\[\]]*\])*\](?:\([^\)]*\)|\[[^\]]*\])|^[ \t]*\[[^\]]+\]:[ \t]*\S+.*$|\b[a-z]+:\/\/[^\s<>()]+|\bthr_\w+(?::[\w-]+)+|(?<!\w)[\/.][\w.\/-]+))|(?<![\w/:.\-=?&#])(?:@thread:)?(thr_\w+)(?![\w/\-=?&#]|[.:](?!\s|$))|(::task\{key="([^"]+)"[^}]*\})/gm,Fe=i(e=>e.replace(/[\\\[\]*_`]/g,"\\$&"),"esc"),De=/^(?:(?:\[bb message from thread:[^\]]+\]|\[bb system\](?=\s*Child thread updates:))[ \t]*(?:\r?\n(?:\r?\n)?)?|\[bb system\]\s*@thread:[^\s:]+[ \t]*(?:(?:completed|finished):[ \t]*(?:\r?\n(?:\r?\n)?|$))?)/i,oe=i(e=>e.replace(De,""),"clean"),Oe=i((e,n,u)=>{let c=E[e];return n.systemMessageKind==="child-completed"?c.bareCompleted&&/^\s*completed\.?\s*$/i.test(u)?c.bareCompleted:u:n.kind==="system"||n.systemMessageKind?.startsWith("child-")?c.systemTexts.reduce((p,[h,f])=>p.replace(h,f),u):u},"systemTextOf"),R=new Map,Ke=i(e=>{let n=R.get(e);return n?n.failed?Date.now()-n.at>=6e4:Date.now()-n.at>=6e5:!0},"isStale");function Ue(e){let n=[...e].sort((c,p)=>c.time-p.time),u=new Set;return n.forEach((c,p)=>{if(!(c.kind!=="message"||!c.senderThreadId))for(let h of n.slice(p+1)){if(h.time-c.time>Pe)break;if(!(h.kind!=="done"||h.senderThreadId!==c.senderThreadId)){h.parts.push({kind:"message",text:c.text,time:c.time}),c.reply&&h.parts.push({kind:"reply",text:c.reply,time:c.replyAt??c.time}),u.add(c.id);break}}}),n.filter(c=>!u.has(c.id)).reverse()}i(Ue,"glue");async function Be(e){let n=e.settings.define({language:{type:"select",label:"Language",options:[...C],default:"en"},marker:{type:"string",label:"Reply marker, for example [bg] (empty = agent replies are not hidden and agents get no instruction)",experimental_schema:A.string().max(32,"At most 32 characters"),default:""},hide:{type:"boolean",label:"Hide rows in the main feed (off = stock feed, the button and the tab keep working)",default:!0},threads:{type:"string",label:"Threads (JSON array of thread ids; empty = every thread)",experimental_multiline:!0,experimental_schema:Ie,default:"[]"}}),u=await n.get(),c=se(u.threads),p=u.hide,h=z(u.language),f=u.marker.trim(),N=i(r=>c!==null&&(c.length===0||c.includes(r)),"inScope"),D=new Map,ge=i(async(r,a)=>{let m=new Set(a?.map(g=>g.id)),o=[],d=[],l=!1,y={threadId:r,includeNestedRows:"true"};for(let g=0;g<Me;g++){let w=await e.sdk.threads.timeline(y),j=w.rows;o=re(j,o),g===0&&(d=w.timelinePage.olderRowUpdates??[]);let k=w.timelinePage.olderCursor;if(l=!k,!k||j.some(v=>m.has(v.id)))break;y={threadId:r,includeNestedRows:"true",beforeAnchorId:k.anchorId,beforeAnchorSeq:String(k.anchorSeq)}}if(!a||l)return o;let S=new Map(d.map(g=>[g.id,g]));return re(a.map(g=>S.has(g.id)?W(g,S.get(g.id)):g),o)},"readRows"),X=i(async r=>{let a=D.get(r);if(a?.reading)return F(await a.reading);let m=Date.now(),o=!a||m-a.at>=Le,d=ge(r,o?null:a.rows),l={rows:a?.rows??[],at:a?.at??0,reading:d};H(D,r,l);try{l.rows=await d,o&&(l.at=m)}catch(y){throw a||D.delete(r),y}finally{delete l.reading}return F(l.rows)},"allRows"),V=i(async(r,a=[])=>{let m=new Set(a);for(let o of r)for(let d of o.matchAll(ae))d[2]&&m.add(d[2]);return await Promise.all([...m].filter(Ke).map(async o=>{try{let d=await e.sdk.threads.get({threadId:o});R.set(o,{title:d.title||d.titleFallback||o,href:`/projects/${d.projectId}/threads/${o}`,at:Date.now(),archived:d.archivedAt!=null})}catch{R.set(o,{at:Date.now(),failed:!0})}})),o=>o.replace(ae,(d,l,y,S,g)=>{if(l)return l;if(y){let w=R.get(y);return w?.title&&w.href?`[${Fe(w.title)}](${w.href})`:d}return g?`[${g}](/plugins/tasks/tasks/task/${g})`:d})},"linker"),ue=i(async r=>{if(!N(r))return{hideIds:[],items:[],closed:{}};let a=E[h],m=Ee(f),o=await X(r),d=o.filter(t=>le(t)||ie(t)!==null),y=Ce.includes((await e.sdk.threads.get({threadId:r})).status)?[...o].reverse().find(t=>t.turnId)?.turnId:null,S=o.filter(t=>m(t)&&!!t.turnId&&t.turnId!==y),g=[...new Set([...d,...S].map(t=>t.id))],w=new Set(d.map(t=>t.id)),j=new Set(o.filter(m).map(t=>t.id)),k=new Map,v=new Map,Q=new Set,I=null;for(let t of o)t.kind==="conversation"&&t.role==="user"?I=w.has(t.id)?t.id:null:I&&j.has(t.id)&&(k.set(I,t.text??""),v.set(I,t.createdAt??t.startedAt??0),Q.add(t.id),I=null);let pe={"child-completed":"done","child-failed":"failed","child-interrupted":"interrupted","child-stopped":"interrupted","child-needs-attention":"attention","child-question":"attention","child-outcome-batch":"digest"},fe=d.map(t=>{let T=ie(t);if(T!==null)return{id:t.id,time:t.createdAt??t.startedAt??0,sender:T,senderThreadId:null,kind:"notify",text:(t.text??"").replace(ce,""),reply:k.get(t.id)??"",replyAt:v.get(t.id)??t.createdAt??t.startedAt??0,parts:[]};let G=t.systemMessageSubject?.kind==="thread-batch"?null:t.senderThreadId??t.systemMessageSubject?.threadId??t.text?.match(/@thread:(thr_[\w-]+)/)?.[1]??null,M=t.systemMessageKind&&t.systemMessageKind!=="unlabeled"?t.systemMessageKind:t.kind==="system"?t.title??"system":"message",be=t.text??[t.title,t.detail].filter(Boolean).join(`
8
+ `);return{id:t.id,time:t.createdAt??t.startedAt??0,sender:t.senderThreadId??t.systemMessageSubject?.threadName??t.systemMessageSubject?.threadId??a.system,senderThreadId:G,kind:pe[M]??M,text:Oe(h,t,oe(be)),reply:k.get(t.id)??"",replyAt:v.get(t.id)??t.createdAt??t.startedAt??0,parts:[]}}),ye=S.filter(t=>!Q.has(t.id)).map(t=>({id:t.id,time:t.createdAt??t.startedAt??0,sender:a.agent,senderThreadId:null,kind:"reply",text:t.text??"",reply:"",replyAt:t.createdAt??t.startedAt??0,parts:[]})),K=Ue([...fe,...ye]),Z=[...new Set(K.flatMap(t=>t.senderThreadId?[t.senderThreadId]:[]))],U=await V(K.flatMap(t=>[t.text,t.reply,...t.parts.map(T=>T.text)]),Z),we=K.map(t=>{let G=(t.senderThreadId?R.get(t.senderThreadId):null)?.title??null;return{...t,senderTitle:G,text:U(t.text),reply:U(t.reply),parts:t.parts.map(M=>({...M,text:U(M.text)}))}}),B={};for(let t of Z){let T=R.get(t);T?.failed?B[t]="gone":T?.archived&&(B[t]="archived")}return{hideIds:g,items:we,closed:B}},"compute"),Y=new Map,he=i((r,a)=>{let m=`${r}|${a}`,o=Y.get(m);if(o&&Date.now()-o.at<_e)return o.value;let d=(async()=>{if(!N(r))return{ok:!0,out:[]};try{let l=(await X(a)).filter(g=>g.kind==="conversation"&&g.role==="user"&&g.senderThreadId===r),y=l.map(g=>oe(g.text??"")),S=await V(y);return{ok:!0,out:l.map((g,w)=>({id:g.id,time:g.createdAt??g.startedAt??0,text:S(y[w])}))}}catch{return{ok:!1,out:[]}}})();return H(Y,m,{at:Date.now(),value:d}),d},"talkOf"),O=new Map,me=i(r=>{let a=O.get(r);if(a&&Date.now()-a.at<Ne)return a.value;let m=ue(r);return H(O,r,{at:Date.now(),value:m}),m},"rowsOf");n.onChange(r=>{c=se(r.threads),p=r.hide,h=z(r.language),f=r.marker.trim(),O.clear()});let b=e.storage.kv,_=await b.get("since");typeof _!="number"&&(_=Date.now(),await b.set("since",_));let q=_,P=Promise.resolve(),J=i(async r=>A.array(L).catch([]).parse(await b.get(`sent:${r}`)),"sentOf");e.rpc.register(ve,{feed:i(async({threadId:r})=>({...await me(r),seenAt:await b.get(`seen:${r}`)??q,lang:h,marker:f,hide:p,view:A.enum($).catch("time").parse(await b.get(`view:${r}`)),sent:await J(r)}),"feed"),view:i(async({threadId:r,view:a})=>(await b.set(`view:${r}`,a),{view:a}),"view"),talk:i(({threadId:r,peerId:a})=>he(r,a),"talk"),delivered:i(async({threadId:r,peerId:a,text:m,since:o})=>{if(!N(r))return{found:!1};try{return{found:F((await e.sdk.threads.timeline({threadId:a,includeNestedRows:"true"})).rows).some(l=>l.kind==="conversation"&&l.role==="user"&&!l.senderThreadId&&(l.createdAt??l.startedAt??0)>=o-je&&l.text?.trim()===m.trim())}}catch{return{found:!1}}},"delivered"),sent:i(({threadId:r,...a})=>{let m=P.then(async()=>{let o=await J(r);if(o.some(l=>l.id===a.id))return{sent:o};let d=te([...o,a]);return d.some(l=>l.id===a.id)?(await b.set(`sent:${r}`,d),{sent:d}):{sent:o}});return P=m.catch(()=>{}),m},"sent"),seen:i(({threadId:r,at:a})=>{let m=P.then(async()=>{let o=`seen:${r}`,d=await b.get(o)??q,l=Math.max(d,Math.min(a,Date.now()));return l>d&&await b.set(o,l),{seenAt:l}});return P=m.catch(()=>{}),m},"seen")}),e.agents.contributeInstructions(r=>f&&N(r.threadId)?E[h].instruction(f):null)}i(Be,"plugin");export{Be as default,Ue as glue,ve as rpcContract,Oe as systemTextOf,ie as toolOf};
9
9
  //# sourceMappingURL=server.js.map