@schlenkr/ragents 0.1.18 → 0.1.20

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.
Files changed (209) hide show
  1. package/apps/server/src/host-api.json +6 -2
  2. package/apps/server/src/host-api.ts +3 -2
  3. package/apps/server/src/host-web.ts +3 -0
  4. package/apps/server/src/plugin-support/actor-programs/contract.ts +0 -3
  5. package/apps/server/src/plugin-support/removed-layout.ts +94 -0
  6. package/apps/server/src/ragents/engine.ts +2 -1
  7. package/apps/server/src/title-compactor.ts +5 -7
  8. package/apps/web/dist/assets/highlighted-body-KPVGNVTW-k67VKdbw.js +1 -0
  9. package/apps/web/dist/assets/main-CVjIz7BS.js +674 -0
  10. package/apps/web/dist/help/guide-clients.html +22 -42
  11. package/apps/web/dist/help/guide-clients.md +24 -45
  12. package/apps/web/dist/help/guide-functions.html +1 -1
  13. package/apps/web/dist/help/guide-functions.md +1 -1
  14. package/apps/web/dist/help/guide-getting-started.html +14 -22
  15. package/apps/web/dist/help/guide-getting-started.md +17 -24
  16. package/apps/web/dist/help/guide-ideas.html +1 -1
  17. package/apps/web/dist/help/guide-ideas.md +1 -1
  18. package/apps/web/dist/help/guide-plugins.html +1 -1
  19. package/apps/web/dist/help/guide-plugins.md +1 -1
  20. package/apps/web/dist/help/guide-programs.html +1 -1
  21. package/apps/web/dist/help/guide-programs.md +1 -1
  22. package/apps/web/dist/help/index.html +12 -79
  23. package/apps/web/dist/help/mini-app.css +8 -502
  24. package/apps/web/dist/host-web.json +28 -23
  25. package/apps/web/dist/index.html +2 -3
  26. package/apps/web/dist/run-panel.html +3 -4
  27. package/apps/web/src/Overview.tsx +4 -143
  28. package/apps/web/src/PluginChat.tsx +22 -116
  29. package/apps/web/src/PluginRegistry.tsx +4 -9
  30. package/apps/web/src/RunPreparationChat.tsx +4 -1
  31. package/apps/web/src/host-modules.ts +2 -0
  32. package/apps/web/src/main.tsx +23 -3
  33. package/apps/web/src/panel/RunLine.tsx +5 -2
  34. package/apps/web/src/panel/RunsPage.tsx +6 -6
  35. package/apps/web/src/panel/StartPage.tsx +6 -5
  36. package/apps/web/src/panel/contract.ts +3 -0
  37. package/apps/web/src/panel/page-props.ts +2 -0
  38. package/apps/web/src/run-apps.ts +34 -0
  39. package/apps/web/src/run-overview.ts +0 -27
  40. package/apps/web/src/run-panel/PanelContributions.tsx +41 -0
  41. package/apps/web/src/run-panel/RunPanelApp.tsx +172 -91
  42. package/apps/web/src/run-panel/RunPanelMenu.tsx +4 -3
  43. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +8 -2
  44. package/apps/web/src/run-panel/clipboard.ts +17 -14
  45. package/apps/web/src/run-panel/host-contract.ts +8 -9
  46. package/apps/web/src/run-panel/host.ts +5 -31
  47. package/apps/web/src/run-panel/input-bridge.ts +15 -7
  48. package/bundles/ragents.activity/ragents-bundle.json +2 -2
  49. package/bundles/ragents.actor-programs/prompt.hbs +4 -5
  50. package/bundles/ragents.actor-programs/ragents-bundle.json +4 -14
  51. package/bundles/ragents.actor-programs/server/index.js +2 -14
  52. package/bundles/ragents.actor-programs/server/index.js.map +2 -2
  53. package/bundles/ragents.actor-programs/web/classes.json +1 -1
  54. package/bundles/ragents.actor-programs/web/index.js +1 -3
  55. package/bundles/ragents.actor-programs/web/index.js.map +4 -4
  56. package/bundles/ragents.ask/ragents-bundle.json +2 -2
  57. package/bundles/ragents.browser/ragents-bundle.json +2 -2
  58. package/bundles/ragents.documents/ragents-bundle.json +2 -2
  59. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
  60. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
  61. package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
  62. package/bundles/ragents.model-relay/ragents-bundle.json +2 -2
  63. package/bundles/ragents.orchestration/ragents-bundle.json +15 -41
  64. package/bundles/ragents.orchestration/server/index.js +10 -249
  65. package/bundles/ragents.orchestration/server/index.js.map +4 -4
  66. package/bundles/ragents.orchestration/web/chunks/chunk-KU7O6MEX.js +2 -0
  67. package/bundles/ragents.orchestration/web/chunks/chunk-KU7O6MEX.js.map +7 -0
  68. package/bundles/ragents.orchestration/web/classes.json +1 -1
  69. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
  70. package/bundles/ragents.orchestration/web/index.js +10 -18
  71. package/bundles/ragents.orchestration/web/index.js.map +4 -4
  72. package/bundles/ragents.overseer/ragents-bundle.json +3 -3
  73. package/bundles/ragents.overseer/server/index.js +0 -1
  74. package/bundles/ragents.overseer/server/index.js.map +2 -2
  75. package/bundles/ragents.processes/ragents-bundle.json +2 -2
  76. package/bundles/ragents.product/ragents-bundle.json +2 -2
  77. package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
  78. package/bundles/ragents.reference/ragents-bundle.json +3 -3
  79. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +1 -1
  80. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +1 -2
  81. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +6 -7
  82. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +3 -3
  83. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +3 -13
  84. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  85. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +1 -6
  86. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +1 -15
  87. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +1 -1
  88. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  89. package/bundles/ragents.reference/run-scripts/quick-note/RUN.md +1 -1
  90. package/bundles/ragents.reference/run-scripts/quick-note/src/server.ts +1 -2
  91. package/bundles/ragents.reference/run-scripts/quick-note/tests/program.test.ts +0 -2
  92. package/bundles/ragents.reference/run-scripts/run-roster/RUN.md +2 -2
  93. package/bundles/ragents.reference/run-scripts/run-roster/src/server.ts +1 -2
  94. package/bundles/ragents.reference/run-scripts/run-roster/tests/program.test.ts +0 -2
  95. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +1 -1
  96. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  97. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +1 -1
  98. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +0 -1
  99. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +1 -2
  100. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +1 -1
  101. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +1 -1
  102. package/bundles/ragents.todo/ragents-bundle.json +2 -2
  103. package/bundles/ragents.transcript/ragents-bundle.json +2 -2
  104. package/bundles/ragents.watch/ragents-bundle.json +2 -2
  105. package/bundles/ragents.workspace/ragents-bundle.json +2 -2
  106. package/package.json +8 -8
  107. package/packages/agent/dist/core/agent-settings.d.ts +1 -1
  108. package/packages/agent/src/core/agent-settings.ts +2 -2
  109. package/packages/ai/dist/types.d.ts +2 -1
  110. package/packages/ai/src/api/ai-sdk.ts +15 -2
  111. package/packages/ai/src/types.ts +2 -1
  112. package/packages/ragents/src/runtime/journal.ts +4 -0
  113. package/plugins/ragents.actor-programs/prompt.hbs +4 -5
  114. package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
  115. package/plugins/ragents.actor-programs/server/index.ts +0 -2
  116. package/plugins/ragents.actor-programs/server/runtime.ts +2 -10
  117. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +5 -20
  118. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +3 -79
  119. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +0 -9
  120. package/plugins/ragents.actor-programs/web/api.ts +0 -20
  121. package/plugins/ragents.actor-programs/web/context.ts +0 -3
  122. package/plugins/ragents.actor-programs/web/index.tsx +0 -9
  123. package/plugins/ragents.orchestration/ragents-plugin.json +1 -2
  124. package/plugins/ragents.orchestration/server/index.ts +1 -11
  125. package/plugins/ragents.orchestration/web/ActorChat.tsx +1 -1
  126. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +1 -1
  127. package/plugins/ragents.orchestration/web/FlowInspector.tsx +2 -4
  128. package/plugins/ragents.orchestration/web/InspectionPanel.tsx +21 -0
  129. package/plugins/ragents.orchestration/web/index.tsx +13 -9
  130. package/plugins/ragents.orchestration/web/program-slot.ts +0 -3
  131. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +15 -36
  132. package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +76 -451
  133. package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +0 -27
  134. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -40
  135. package/plugins/ragents.overseer/server/coordinator-prompt.ts +0 -1
  136. package/plugins/ragents.reference/examples.ts +1 -2
  137. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +1 -1
  138. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +1 -2
  139. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +6 -7
  140. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +3 -3
  141. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +3 -13
  142. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  143. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +1 -6
  144. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +1 -15
  145. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +1 -1
  146. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  147. package/plugins/ragents.reference/run-scripts/quick-note/RUN.md +1 -1
  148. package/plugins/ragents.reference/run-scripts/quick-note/src/server.ts +1 -2
  149. package/plugins/ragents.reference/run-scripts/quick-note/tests/program.test.ts +0 -2
  150. package/plugins/ragents.reference/run-scripts/run-roster/RUN.md +2 -2
  151. package/plugins/ragents.reference/run-scripts/run-roster/src/server.ts +1 -2
  152. package/plugins/ragents.reference/run-scripts/run-roster/tests/program.test.ts +0 -2
  153. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +1 -1
  154. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  155. package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +1 -1
  156. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +0 -1
  157. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +1 -2
  158. package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +1 -1
  159. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +1 -1
  160. package/plugins/ragents.reference/walkthroughs.ts +13 -14
  161. package/apps/web/dist/assets/highlighted-body-KPVGNVTW-BwD4uYEe.js +0 -1
  162. package/apps/web/dist/assets/main-KBrc5Q77.js +0 -11
  163. package/apps/web/dist/assets/mermaid-HWGCJPDP-CSCkaArr.js +0 -608
  164. package/apps/web/dist/assets/runPanel-BjG5NBKm.js +0 -26
  165. package/apps/web/src/App.tsx +0 -318
  166. package/apps/web/src/SessionList.tsx +0 -157
  167. package/apps/web/src/SurfaceShortcuts.tsx +0 -60
  168. package/apps/web/src/WorkspacePanel.tsx +0 -309
  169. package/apps/web/src/run-panel.tsx +0 -52
  170. package/bundles/ragents.orchestration/server/chunks/chunk-QS3WJ3D7.js +0 -11
  171. package/bundles/ragents.orchestration/server/chunks/chunk-QS3WJ3D7.js.map +0 -7
  172. package/bundles/ragents.orchestration/server/exports/server/contract.js +0 -9
  173. package/bundles/ragents.orchestration/server/exports/server/contract.js.map +0 -7
  174. package/bundles/ragents.orchestration/surface.hbs +0 -39
  175. package/bundles/ragents.orchestration/web/chunks/chunk-CFMJD5ZI.js +0 -2
  176. package/bundles/ragents.orchestration/web/chunks/chunk-CFMJD5ZI.js.map +0 -7
  177. package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +0 -2
  178. package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js.map +0 -7
  179. package/bundles/ragents.orchestration/web/chunks/chunk-UCIMT2R4.js +0 -2
  180. package/bundles/ragents.orchestration/web/chunks/chunk-UCIMT2R4.js.map +0 -7
  181. package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js +0 -2
  182. package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js.map +0 -7
  183. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +0 -2
  184. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js.map +0 -7
  185. package/bundles/ragents.orchestration/web/exports/web/tile-docking.js +0 -2
  186. package/bundles/ragents.orchestration/web/exports/web/tile-docking.js.map +0 -7
  187. package/plugins/ragents.actor-programs/web/ExpandIcon.tsx +0 -5
  188. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +0 -31
  189. package/plugins/ragents.orchestration/contract.ts +0 -51
  190. package/plugins/ragents.orchestration/server/contract.ts +0 -14
  191. package/plugins/ragents.orchestration/server/surface-tool.ts +0 -198
  192. package/plugins/ragents.orchestration/surface.hbs +0 -39
  193. package/plugins/ragents.orchestration/tiled-layout.ts +0 -55
  194. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +0 -29
  195. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +0 -74
  196. package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +0 -130
  197. package/plugins/ragents.orchestration/web/ActorTile.tsx +0 -23
  198. package/plugins/ragents.orchestration/web/Center.tsx +0 -133
  199. package/plugins/ragents.orchestration/web/SurfaceTiles.tsx +0 -47
  200. package/plugins/ragents.orchestration/web/TiledSurface.tsx +0 -280
  201. package/plugins/ragents.orchestration/web/actor-header-settings.ts +0 -41
  202. package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +0 -50
  203. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +0 -47
  204. package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +0 -30
  205. package/plugins/ragents.orchestration/web/surface-entities.ts +0 -21
  206. package/plugins/ragents.orchestration/web/surface-view-settings.ts +0 -42
  207. package/plugins/ragents.orchestration/web/tile-docking.ts +0 -105
  208. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +0 -74
  209. /package/apps/web/dist/assets/{mermaid-HWGCJPDP-BPn4aV2r.css → main-BPn4aV2r.css} +0 -0
@@ -1 +1 @@
1
- ["!error","!latest","--background","--border","--card","--primary","@container","@max-[470px]:grid-cols-[34px_minmax(0,1fr)_14px]","@max-[470px]:hidden","@reviewer","[&>[data-slot=host-confirmation]]:flex-[0_1_auto]","[&>[data-slot=host-confirmation]]:max-h-[65%]","[&>[data-slot=host-confirmation]]:overflow-auto","[&_small]:col-start-2","[&_small]:font-normal","[&_small]:text-[0.61rem]","[&_small]:text-muted-foreground","[animation-duration:1.2s]","[overflow-wrap:anywhere]","[scrollbar-width:thin]","a","abort","absolute","accent-primary","accepts","access","action","actionError","actionId","actionIds","actions","activate","active","activeActorInvocations","activeActors","activeInvocations","activeKey","actor","actor-programs","actorByHandle","actorChatMessages","actorFunctionInput","actorFunctionParameterTypes","actorHandle","actorId","actorProgramApps","actorProgramContracts","actorProgramSourceFileFrom","actorProgramSourceFrom","actorProgramSourceReference","actorProgramSourceView","actorProgramSurfaceElements","actorProgramViews","actorProgramsListingFrom","actorProgramsRevision","actors","after:absolute","after:bg-primary","after:bottom-0","after:content-['']","after:h-[3px]","after:inset-x-0","after:pointer-events-none","agent","agents","alert","allow","allow-downloads","allow-forms","allow-scripts","already","an","anchorActorId","and","animate-fade-pulse","answer","answerQuestion","any","api","app","appId","appIds","appRef","appear","apps","are","aria-description","aria-expanded","aria-hidden","aria-label","aria-live","as","ask/ask-payload","askedBy","async","at","attachBridge","attachmentCapabilities","attachmentCapabilitiesError","attachments","available","await","base","be","been","before:absolute","before:border-border-strong","before:border-dashed","before:border-l","before:bottom-1/4","before:content-['']","before:left-0","before:pointer-events-none","before:top-1/4","belongs","bg-[color-mix(in_srgb,var(--primary)_12%,var(--background))]","bg-accent","bg-background","bg-background/70","bg-card","bg-destructive","bg-foreground/4","bg-glass-app","bg-muted-foreground/55","bg-primary","bg-primary/12","bg-primary/9","bg-success","bg-transparent","bg-warning","bg-warning-soft","boolean","border","border-0","border-[color-mix(in_srgb,var(--primary)_48%,var(--border))]","border-b","border-border","border-border-soft","border-info/25","border-input","border-r","border-r-0","bridge","bridgeConnectedRef","bridgeGenerationRef","bridgeReady","bridgeToken","bubbles","build","busy","button","by","byteLength","call","camera","canArrange","canInspect","cancelable","cancelled","cannot","canvas","capabilities","captured","card","cardSections","case","catch","caught","cause","changed","chat","chat-ack","chat-send","chat-state","chat-unwatch","chat-watch","chatCapabilities","chatSnapshotOf","checkbox","className","click","close","closeBridge","closeFullscreen","closeRef","cn","code","common","compact","completed","configuredPlugin","confirm","confirmation","confirmationAction","confirmationInvocation","connect","connected","connection","const","contains","content","contentWindow","contract","controller","controllerRef","conversationError","could","createActorProgramsApi","createContext","created","createdAt","current","currentActorListing","currentColor","currentViews","cursor-pointer","data","data-slot","decision","default","defaultValue","depth","description","descriptor","destructive","detail","did","disabled","disconnected","disposed","does","draggable","driver","duplicate","effectAllowed","else","embedded","empty","encodes","enter","entity","entries","entry","entryIconClass","error","escape","eslint-disable-next-line","event","executeRequest","execution","exists","expandedByDefault","export","failed","failure","false","field","file","files","fill","finally","finish","finished","finishedAt","flex","flex-1","flex-[0_0_28px]","flex-[0_0_31px]","flex-col","flex-none","flex-wrap","focus-visible:bg-[color-mix(in_srgb,var(--primary)_7%,var(--card))]","focus-visible:border-[color-mix(in_srgb,var(--primary)_52%,var(--border))]","focus-visible:outline-2","focus-visible:outline-offset-2","focus-visible:outline-primary/52","focus-within:bg-accent","font-[650]","font-bold","font-mono","font-normal","font-semibold","for","form","frame","frame-ready","frameBase","frameError","frameUrl","fresh","from","fulfilled","full","fullscreen","fullscreenAppId","function","functionId","functionInvocation","functions","gap-0","gap-0.5","gap-1.5","gap-2","gap-2.5","gap-3","gap-3.5","gap-[22px]","gap-[3px]","gap-[7px]","gap-[9px]","gap-px","gap-x-1.5","generation","geolocation","get-state","getAttachmentCapabilities","grid","grid-cols-2","grid-cols-[34px_minmax(0,1fr)_auto_14px]","grid-cols-[42px_minmax(0,1fr)]","grid-cols-[8px_auto_minmax(0,1fr)]","grid-cols-[auto_minmax(0,1fr)]","grid-cols-[minmax(0,1fr)]","group","h-7","h-8","h-[31px]","h-[calc(100%-2*clamp(16px,2vw,24px))]","h-full","handle","handleLoad","handlePortMessage","has","hash","have","headClass","height","host","host-confirmation","hostInput","hover:bg-[color-mix(in_srgb,var(--primary)_7%,var(--card))]","hover:bg-accent","hover:border-[color-mix(in_srgb,var(--primary)_52%,var(--border))]","hover:not-disabled:bg-transparent","human","icon","icon-sm","id","idFrom","identifier","identifiers","ids","if","iframeRef","import","in","includeFunctions","initialFocus","initialLoaded","input","inputWithinLimit","inset-0","inspect","installed","installedApp","installedBy","instanceof","integer","interface","interrupted","invalid","invocation","invocationId","invocationIds","invocationSignature","invocationTime","invocations","invoke","invokeActorFunction","invokeFunction","is","isJsonValue","isRecord","it","items-center","items-start","items-stretch","its","json","justify-center","justify-items-start","key","keyOf","keydown","kind","label","large","latest","latestInvocation","leading-[1.45]","left","length","let","line","list","listing","load","loadRevision","loaded","loading","longer","lucide-react","m-0","m9","m9.5","mapping","markTones","match","max-h-[320px]","max-h-[340px]","max-w-[132px]","max-w-[214px]","max-w-full","mb-1","mb-2","md:text-sm","message","messages","microphone","min-h-0","min-h-8","min-w-0","mini-app","minted","missing","ml-2","model","moduleId","moduleRevision","more","motion-reduce:animate-none","move","mt-1","multi","must","muted","name","names","need","needs","needsAnswer","needsRunView","new","next","no","no-referrer","none","not","nothing","null","number","object","of","ok","oldest","on","onAnswer","onClick","onDragStart","onOpenChange","onSubmit","once","one","onmessage","onmessageerror","onto","open","openFullscreen","optionalString","options","or","orchestration","order","order-1","origin","outline","output","overflow-auto","overflow-hidden","overflow-y-auto","overview","own","owner","ownerId","p-0","p-2.5","page","parameter","parameters","parseParameter","parsed","passed","path","pb-5","pb-7","pending","pendingConfirmationFor","pendingConfirmationInvocationId","pendingPort","per","pl-4","place-items-center","placed","placeholder","placement","placements","pluginId","pluginStates","polite","poll","port","portRef","postError","pr-3","presentation","primary","program","programActors","programChatNotice","programs","provider","pt-3","pt-[18px]","publish","purpose","px-2","px-2.5","px-[11px]","px-[9px]","px-workspace-inset","py-1","py-2","py-2.5","py-[5px]","py-[9px]","quassel/events","question","queued","quick-list","quickIconClass","raw","rawPlacements","react","react-hooks/exhaustive-deps","read-only","readActorInvocation","readOnly","readRight","readonly","ready","reason","receiveReady","recentRequestIdsRef","reduce","ref","referrerPolicy","refers","refresh","rejected","relative","relayFrameInput","render","replaceInvocation","request","requestId","requestIdFrom","requested","required","requiredString","resize-y","resolveChatActor","restarted","result","results","return","revision","role","round","rounded-[10px]","rounded-full","rounded-lg","rounded-md","routePrefix","rows","rpc","run","run-app","runActorFrom","runAppActionFrom","runAppFrom","runAppInvocationFrom","runAppPlacementFrom","runId","runScriptToolFrom","runToolParameterFrom","runToolTargetFrom","runView","runViewFrom","running","runs","s","sandbox","saved","scope","script","secondary","sectionLabelClass","segment","select","selectClass","selected","selectedName","selection","selects","sendActorMessage","sendChatState","sendState","sent","sentInvocationsRef","sentStateRef","session","sessionHeaders","sessionRef","setActionError","setActivePath","setBridgeReady","setBusy","setError","setExpanded","setFrameError","setFullscreen","setInvocation","setListing","setState","setSubmitting","shadow-[0_0_0_4px_color-mix(in_srgb,var(--primary)_12%,transparent)]","showCloseButton","signal","signature","size","size-[30px]","size-[34px]","size-[42px]","size-[7px]","slot","sm","snapshot","source","sourceHash","src","src/server.ts","stage","startedAt","state","stateSignature","states","status","step","stopped","string","stroke","strokeLinecap","strokeLinejoin","strokeWidth","submit","succeeded","success","such","surface","surfaceElements","switch","target","targetLabel","targets","text","text-[0.61rem]","text-[0.63rem]","text-[0.66rem]","text-[0.67rem]","text-[0.68rem]","text-[0.69rem]","text-[0.72rem]","text-[0.74rem]","text-[0.75rem]","text-[0.7rem]","text-[0.82rem]","text-[0.8rem]","text-[0.9rem]","text-[1.05rem]","text-base","text-destructive","text-foreground","text-info","text-left","text-muted-foreground","text-primary","text-sm","text-xs","than","the","theme","themeRef","this","throw","tile","tiled","timeout","timer","title","to","token","tone","too","tool","tools","tracking-[0.075em]","transition-[background-color,border-color]","true","truncate","try","type","typeof","undefined","unique","unknown","unreadable","unsupported","until","updates","uppercase","url","useAccess","useActorPrograms","useContext","useMemo","useOptionalActorPrograms","useRef","useResolvedTheme","useState","useSurfaceEntities","used","uses","valid","validateRunAppBridgeRequest","validation","value","values","variant","version","view","viewBox","views","visible","visibleApps","visibleStatus","void","w-[38px]","w-[calc(100%-2*clamp(16px,2vw,24px))]","w-full","waitForPoll","was","watchedChats","webPlugin","while","whitespace-nowrap","whitespace-pre-wrap","width","withAccessToken","workspaceTabs","writable","writableRef","write","yet","your"]
1
+ ["!error","!latest","--background","--border","--card","--primary","@container","@max-[470px]:grid-cols-[34px_minmax(0,1fr)_14px]","@max-[470px]:hidden","@reviewer","[&>[data-slot=host-confirmation]]:flex-[0_1_auto]","[&>[data-slot=host-confirmation]]:max-h-[65%]","[&>[data-slot=host-confirmation]]:overflow-auto","[&_small]:col-start-2","[&_small]:font-normal","[&_small]:text-[0.61rem]","[&_small]:text-muted-foreground","[overflow-wrap:anywhere]","[scrollbar-width:thin]","a","abort","absolute","accent-primary","accepts","access","action","actionError","actionId","actionIds","actions","activate","active","activeActorInvocations","activeActors","activeInvocations","activeKey","actor","actor-programs","actorByHandle","actorChatMessages","actorFunctionInput","actorFunctionParameterTypes","actorHandle","actorId","actorProgramApps","actorProgramContracts","actorProgramSourceFileFrom","actorProgramSourceFrom","actorProgramSourceReference","actorProgramSourceView","actorProgramSurfaceElements","actorProgramViews","actorProgramsListingFrom","actorProgramsRevision","actors","agent","agents","alert","allow","allow-downloads","allow-forms","allow-scripts","already","an","anchorActorId","and","answer","answerQuestion","any","api","app","appId","appIds","appRef","appear","apps","are","aria-description","aria-hidden","aria-label","aria-live","as","ask/ask-payload","askedBy","async","attachBridge","attachmentCapabilities","attachmentCapabilitiesError","attachments","available","await","base","be","been","bg-[color-mix(in_srgb,var(--primary)_12%,var(--background))]","bg-accent","bg-background/70","bg-card","bg-foreground/4","bg-primary/9","bg-transparent","bg-warning-soft","boolean","border","border-0","border-[color-mix(in_srgb,var(--primary)_48%,var(--border))]","border-b","border-border","border-border-soft","border-input","bridge","bridgeConnectedRef","bridgeGenerationRef","bridgeReady","bridgeToken","bubbles","build","busy","button","by","byteLength","call","camera","canInspect","cancelable","cancelled","cannot","capabilities","captured","card","cardSections","case","catch","caught","cause","changed","chat","chat-ack","chat-send","chat-state","chat-unwatch","chat-watch","chatCapabilities","chatSnapshotOf","checkbox","className","closeBridge","code","common","completed","configuredPlugin","confirm","confirmation","confirmationAction","confirmationInvocation","connect","connected","connection","const","contains","content","contentWindow","contract","controller","controllerRef","conversationError","could","createActorProgramsApi","createContext","created","createdAt","current","currentActorListing","currentColor","currentViews","cursor-pointer","data","data-slot","decision","default","defaultValue","depth","description","descriptor","destructive","detail","did","disabled","disconnected","disposed","does","driver","duplicate","else","empty","encodes","enter","entity","entry","entryIconClass","error","escape","eslint-disable-next-line","event","executeRequest","execution","exists","expandedByDefault","export","failed","failure","false","field","file","files","fill","finally","finish","finished","finishedAt","flex","flex-1","flex-[0_0_28px]","flex-col","flex-none","flex-wrap","focus-visible:bg-[color-mix(in_srgb,var(--primary)_7%,var(--card))]","focus-visible:border-[color-mix(in_srgb,var(--primary)_52%,var(--border))]","focus-visible:outline-2","focus-visible:outline-offset-2","focus-visible:outline-primary/52","font-[650]","font-mono","font-normal","font-semibold","for","form","frame","frame-ready","frameBase","frameError","frameUrl","fresh","from","fulfilled","function","functionId","functionInvocation","functions","gap-0.5","gap-1.5","gap-2","gap-2.5","gap-3","gap-3.5","gap-[22px]","gap-[3px]","gap-[9px]","gap-px","gap-x-1.5","generation","geolocation","get-state","getAttachmentCapabilities","grid","grid-cols-2","grid-cols-[34px_minmax(0,1fr)_auto_14px]","grid-cols-[42px_minmax(0,1fr)]","grid-cols-[auto_minmax(0,1fr)]","grid-cols-[minmax(0,1fr)]","h-7","h-8","h-full","handle","handleLoad","handlePortMessage","has","hash","have","headClass","height","host","host-confirmation","hostInput","hover:bg-[color-mix(in_srgb,var(--primary)_7%,var(--card))]","hover:border-[color-mix(in_srgb,var(--primary)_52%,var(--border))]","human","icon-sm","id","idFrom","identifier","identifiers","ids","if","iframeRef","import","in","includeFunctions","initialLoaded","input","inputWithinLimit","inset-0","inspect","installed","installedApp","installedBy","instanceof","integer","interface","interrupted","invalid","invocation","invocationId","invocationIds","invocationSignature","invocationTime","invocations","invoke","invokeActorFunction","invokeFunction","is","isJsonValue","isRecord","it","items-center","items-start","its","json","justify-center","justify-items-start","key","keyOf","keydown","kind","label","large","latest","latestInvocation","leading-[1.45]","left","length","let","line","list","listing","load","loadRevision","loaded","loading","longer","lucide-react","m-0","m9","m9.5","mapping","match","max-h-[320px]","max-h-[340px]","max-w-[132px]","max-w-full","mb-1","mb-2","md:text-sm","message","messages","microphone","min-h-0","min-h-8","min-w-0","minted","missing","ml-2","model","moduleId","moduleRevision","mt-1","multi","must","muted","name","names","needs","needsRunView","new","next","no","no-referrer","none","not","nothing","null","number","object","of","ok","oldest","on","onAnswer","onClick","onSubmit","once","onmessage","onmessageerror","open","optionalString","options","or","order","order-1","origin","outline","output","overflow-auto","overflow-hidden","overflow-y-auto","overview","owner","ownerId","p-2.5","page","parameter","parameters","parseParameter","parsed","passed","path","pb-5","pb-7","pending","pendingConfirmationFor","pendingConfirmationInvocationId","pendingPort","per","placeholder","pluginId","pluginStates","polite","poll","port","portRef","postError","primary","program","programActors","programChatNotice","programs","provider","pt-3","pt-[18px]","publish","purpose","px-2","px-2.5","px-[11px]","px-[9px]","px-workspace-inset","py-1","py-2","py-2.5","py-[9px]","quassel/events","question","queued","raw","react","react-hooks/exhaustive-deps","read-only","readActorInvocation","readOnly","readRight","readonly","ready","reason","receiveReady","recentRequestIdsRef","reduce","ref","referrerPolicy","refers","refresh","rejected","relative","relayFrameInput","replaceInvocation","request","requestId","requestIdFrom","requested","required","requiredString","resize-y","resolveChatActor","restarted","result","results","return","revision","role","round","rounded-[10px]","rounded-full","rounded-lg","rounded-md","routePrefix","rows","rpc","run","run-app","runActorFrom","runAppActionFrom","runAppFrom","runAppInvocationFrom","runId","runScriptToolFrom","runToolParameterFrom","runToolTargetFrom","runView","runViewFrom","running","runs","s","sandbox","saved","script","secondary","sectionLabelClass","segment","select","selectClass","selected","selectedName","selection","sendActorMessage","sendChatState","sendState","sent","sentInvocationsRef","sentStateRef","session","sessionRef","setActionError","setActivePath","setBridgeReady","setBusy","setError","setExpanded","setFrameError","setInvocation","setListing","setState","setSubmitting","signal","signature","size","size-[34px]","size-[42px]","slot","sm","snapshot","source","sourceHash","src","src/server.ts","startedAt","state","stateSignature","states","status","step","stopped","string","stroke","strokeLinecap","strokeLinejoin","strokeWidth","submit","succeeded","success","such","surfaceElements","switch","target","targetLabel","targets","text","text-[0.61rem]","text-[0.63rem]","text-[0.66rem]","text-[0.67rem]","text-[0.68rem]","text-[0.69rem]","text-[0.72rem]","text-[0.74rem]","text-[0.75rem]","text-[0.7rem]","text-[0.82rem]","text-[0.8rem]","text-[1.05rem]","text-base","text-destructive","text-foreground","text-left","text-muted-foreground","text-primary","text-sm","text-xs","the","theme","themeRef","this","throw","timeout","timer","title","to","token","tone","too","tool","tools","tracking-[0.075em]","transition-[background-color,border-color]","true","truncate","try","type","typeof","undefined","unique","unknown","unreadable","unsupported","until","updates","uppercase","url","useAccess","useActorPrograms","useContext","useMemo","useOptionalActorPrograms","useRef","useResolvedTheme","useState","used","uses","valid","validateRunAppBridgeRequest","validation","value","values","variant","version","view","viewBox","visible","visibleStatus","void","w-full","waitForPoll","was","watchedChats","webPlugin","while","whitespace-nowrap","whitespace-pre-wrap","width","withAccessToken","workspaceTabs","writable","writableRef","write","yet","your"]
@@ -1,4 +1,4 @@
1
- var s=(e,a)=>{let t=globalThis.__ragentsHostModules?.[e];if(t===void 0)throw new Error(`The host does not provide ${e}`);if(!(a in t))throw new Error(`The host does not provide ${a} from ${e}; the bundle was built against a newer host`);return t[a]};var ta=s("@ragents/web/PluginRegistry","pluginRoutePrefixFrom");var oa=s("@ragents/web/PluginRegistry","useSurfaceController");var P=s("@ragents/web/lib/guards","isRecord");var de=s("@ragents/web/rpc","rpc");var ra=s("@ragents/web/access-token","withAccessToken");var ua=s("@ragents/host/plugin-support/actor-programs/contract","ACTOR_INVOCATIONS_STATE_ID");var ee=s("@ragents/host/plugin-support/actor-programs/contract","ACTOR_PROGRAMS_STATE_ID");var Pe=s("@ragents/host/plugin-support/actor-programs/contract","ACTOR_STATE_ID");var se=s("@ragents/host/plugin-support/actor-programs/contract","actorProgramContracts");var _a=["string","number","integer","boolean","string[]","number[]","json"];var da=8,sa=20*1024*1024,Nt=29*1024*1024,za=(e,a)=>{let t=a.trim().toLowerCase();return t?t==="video/quicktime"?"video/mov":t:{png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",avif:"image/avif",svg:"image/svg+xml",pdf:"application/pdf",mp4:"video/mp4",webm:"video/webm",mov:"video/mov",mpeg:"video/mpeg",mpg:"video/mpeg",txt:"text/plain",md:"text/markdown",csv:"text/csv",tsv:"text/tab-separated-values",json:"application/json",jsonl:"application/x-ndjson",xml:"application/xml",yaml:"application/yaml",yml:"application/yaml",ts:"text/plain",tsx:"text/plain",js:"application/javascript",py:"text/plain",cs:"text/plain",fs:"text/plain",html:"text/html",css:"text/css",log:"text/plain"}[e.split(".").at(-1)?.toLowerCase()??""]??"application/octet-stream"},la=e=>{if(e===void 0)return[];if(!Array.isArray(e)||e.length>da)throw new Error(`Attachments must be a list of at most ${da} files.`);let a=0;return e.map((t,o)=>{if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Attachment ${o+1} is invalid.`);let{name:r,mediaType:d,data:l}=t;if(typeof r!="string"||!r.trim()||r.length>255||/[/\\\u0000-\u001f\u007f]/.test(r)||r==="."||r==="..")throw new Error(`Attachment ${o+1} needs a valid file name without a path.`);let c=typeof d=="string"?za(r,d):"";if(!/^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+$/i.test(c))throw new Error(`Attachment ${r} needs a valid MIME type.`);if(typeof l=="string"&&l.length>Math.ceil(sa/3)*4)throw new Error("Attachments may be at most 20 MiB in total.");if(typeof l!="string"||l.length%4!==0||!/^[A-Za-z0-9+/]*={0,2}$/.test(l))throw new Error(`Attachment ${r} contains invalid Base64.`);let f=l.endsWith("==")?2:l.endsWith("=")?1:0;if(f&&("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(l[l.length-f-1])&(f===2?15:3))!==0)throw new Error(`Attachment ${r} contains non-canonical Base64.`);if(a+=l.length/4*3-f,a>sa)throw new Error("Attachments may be at most 20 MiB in total.");return{name:r,mediaType:c,data:l}})};var U=1,Ja="ragents.app.frame-ready",$a="ragents.app.connected",Za="ragents.app.ready",Qa="ragents.app.theme",Xa="ragents.app.invoke",Xe="ragents.app.get-state",ja="ragents.app.state",fa="ragents.app.invocation",Ya="ragents.app.error",ia="ragents.app.chat-watch",na="ragents.app.chat-unwatch",ke="ragents.app.chat-send",et="ragents.app.chat-state",ca="ragents.app.chat-ack",at=/^[A-Za-z0-9_-]{1,64}$/,Vt=64*1024,Gt=24,ae=(e,a=0)=>a>Gt?!1:e===null||typeof e=="string"||typeof e=="boolean"?!0:typeof e=="number"?Number.isFinite(e):Array.isArray(e)?e.every(t=>ae(t,a+1)):P(e)?Object.entries(e).every(([t,o])=>t.length<=256&&ae(o,a+1)):!1,Wt=e=>typeof e=="string"&&at.test(e)?e:void 0,Ka=e=>{try{return new TextEncoder().encode(JSON.stringify(e)).byteLength<=Vt}catch{return!1}},tt=e=>{if(!P(e))return{ok:!1,error:"The app message is not an object"};let a=Wt(e.requestId);if(!a)return{ok:!1,error:"The app message contains no valid requestId"};if(e.version!==U)return{ok:!1,requestId:a,error:"The app uses an unsupported bridge version"};if(e.type===Xe)return{ok:!0,request:{type:Xe,version:U,requestId:a}};if(e.type===ia||e.type===na||e.type===ke){if(typeof e.actor!="string"||!/^@?[\p{L}\p{N}_-]{1,64}$/u.test(e.actor))return{ok:!1,requestId:a,error:"The chat target must be primary or an actor handle such as @reviewer"};let t={version:U,requestId:a,actor:e.actor};if(e.type!==ke)return{ok:!0,request:{...t,type:e.type}};let o;try{o=la(e.attachments)}catch(r){return{ok:!1,requestId:a,error:r instanceof Error?r.message:String(r)}}return typeof e.text!="string"||!e.text.trim()&&!o.length||!Ka(e.text)?{ok:!1,requestId:a,error:"The chat message is empty or too large"}:{ok:!0,request:{...t,type:ke,text:e.text.trim(),...o.length?{attachments:o}:{}}}}return e.type!==Xa?{ok:!1,requestId:a,error:"The app message has an unknown type"}:typeof e.actionId!="string"||!at.test(e.actionId)?{ok:!1,requestId:a,error:"The app message contains no valid actionId"}:!ae(e.input)||!Ka(e.input)?{ok:!1,requestId:a,error:"The input of the app action is not a valid JSON value or too large"}:{ok:!0,request:{type:Xa,version:U,requestId:a,actionId:e.actionId,input:e.input}}};var _t=/^[A-Za-z0-9_-]{1,100}$/,zt=/^[A-Za-z0-9_-]{1,130}$/,Xt=/^[a-f0-9]{64}$/,Kt=new Set(_a),A=(e,a)=>{if(typeof e!="string"||!e.trim())throw new Error(`${a} is missing or empty`);return e},ot=(e,a)=>{if(e!==void 0){if(typeof e!="string")throw new Error(`${a} is not text`);return e}},le=(e,a)=>{let t=A(e,a);if(!_t.test(t))throw new Error(`${a} is not a valid identifier`);return t},me=(e,a,t)=>{let o=e.map(a);if(new Set(o).size!==o.length)throw new Error(`${t} contains duplicate identifiers`);return e},Jt=e=>{if(!P(e))throw new Error("An app action is not an object");if(e.confirmation!==null&&typeof e.confirmation!="string")throw new Error("confirmation of an app action must be text or null");if(typeof e.confirmation=="string"&&!e.confirmation.trim())throw new Error("confirmation of an app action must not be empty");return{id:le(e.id,"action.id"),label:A(e.label,"action.label"),...e.description!==void 0?{description:ot(e.description,"action.description")}:{},confirmation:e.confirmation}},ye=e=>{if(!P(e))throw new Error("An app execution is not an object");if(!Array.isArray(e.output)||e.output.some(t=>typeof t!="string"))throw new Error("output of an app execution is not a text list");let a={id:le(e.id,"invocation.id"),actorId:A(e.actorId,"invocation.actorId"),actorHandle:A(e.actorHandle,"invocation.actorHandle"),appId:A(e.appId,"invocation.appId"),actionId:le(e.actionId,"invocation.actionId"),revision:A(e.revision,"invocation.revision"),output:e.output,createdAt:A(e.createdAt,"invocation.createdAt"),requestId:le(e.requestId,"invocation.requestId")};switch(e.status){case"queued":return{...a,status:"queued"};case"running":return{...a,status:"running",startedAt:A(e.startedAt,"invocation.startedAt")};case"succeeded":{if(!ae(e.result))throw new Error("result of an app execution is not a JSON value");return{...a,status:"succeeded",startedAt:A(e.startedAt,"invocation.startedAt"),finishedAt:A(e.finishedAt,"invocation.finishedAt"),result:e.result}}case"failed":case"cancelled":return{...a,status:e.status,...e.startedAt!==void 0?{startedAt:A(e.startedAt,"invocation.startedAt")}:{},finishedAt:A(e.finishedAt,"invocation.finishedAt"),error:A(e.error,"invocation.error")};default:throw new Error("status of an app execution is invalid")}},$t=e=>{if(!P(e))throw new Error("An app placement is not an object");if(e.kind==="canvas")return{kind:"canvas",anchorActorId:A(e.anchorActorId,"placement.anchorActorId")};throw new Error("kind of an app placement must be canvas")},Zt=e=>{if(!P(e))throw new Error("An app is not an object");if(!Array.isArray(e.actions))throw new Error("actions of an app is not a list");if(!Array.isArray(e.invocations))throw new Error("invocations of an app is not a list");let a=e.placements??[];if(!Array.isArray(a))throw new Error("placements of an app is not a list");if(!P(e.state)||e.state.version!==1||!Number.isSafeInteger(e.state.revision)||!ae(e.state.values))throw new Error("state of a view does not match the state contract");let t=me(e.actions.map(Jt),f=>f.id,"actions"),o=me(e.invocations.map(ye),f=>f.id,"invocations"),r=new Set(t.map(f=>f.id));if(o.some(f=>!r.has(f.actionId)))throw new Error("An app execution refers to an unknown action");if(e.visible!==void 0&&typeof e.visible!="boolean")throw new Error("visible of an app is not a boolean");if(a.length>1)throw new Error("placements of an app contains more than one placement");let d=a.map($t),l=A(e.id,"view.id");if(!zt.test(l))throw new Error("view.id is not a valid identifier");let c=A(e.actorId,"view.actorId");if(d.some(f=>f.anchorActorId!==c))throw new Error("The view must be placed at its own actor");return{id:l,actorId:c,actorHandle:A(e.actorHandle,"view.actorHandle"),visible:e.visible!==!1,title:A(e.title,"app.title"),...e.description!==void 0?{description:ot(e.description,"app.description")}:{},revision:A(e.revision,"app.revision"),actions:t,placements:d,state:{version:1,revision:e.state.revision,values:e.state.values},invocations:o}},Qt=e=>{if(!P(e))throw new Error("A tool parameter is not an object");if(typeof e.type!="string"||!Kt.has(e.type))throw new Error("type of a tool parameter is invalid");if(typeof e.required!="boolean")throw new Error("required of a tool parameter is not a boolean");return{name:le(e.name,"parameter.name"),description:A(e.description,"parameter.description"),type:e.type,required:e.required}},jt=e=>{if(!P(e))throw new Error("A tool target is not an object");if(e.handle!==null&&typeof e.handle!="string")throw new Error("handle of a tool target must be text or null");return{actorId:A(e.actorId,"target.actorId"),handle:e.handle}},Yt=e=>{if(!P(e))throw new Error("A script tool is not an object");if(!Array.isArray(e.parameters))throw new Error("parameters of a script tool is not a list");if(!Array.isArray(e.targets))throw new Error("targets of a script tool is not a list");let a=A(e.sourceHash,"tool.sourceHash");if(!Xt.test(a))throw new Error("sourceHash of a script tool is invalid");return{actorId:A(e.actorId,"tool.actorId"),actorHandle:A(e.actorHandle,"tool.actorHandle"),functionId:le(e.functionId,"tool.functionId"),revision:A(e.revision,"tool.revision"),moduleId:le(e.moduleId,"tool.moduleId"),name:le(e.name,"tool.name"),description:A(e.description,"tool.description"),parameters:me(e.parameters.map(Qt),t=>t.name,"parameters"),card:e.card===!0,sourceHash:a,targets:me(e.targets.map(jt),t=>t.actorId,"targets"),installedBy:A(e.installedBy,"tool.installedBy")}},eo=e=>{if(!P(e))throw new Error("A source file is not an object");if(typeof e.content!="string")throw new Error("content of a source file is not text");return{path:A(e.path,"source.path"),content:e.content}},ao=e=>{if(!P(e)||!Array.isArray(e.files))throw new Error("The source list does not match the contract");return me(e.files.map(eo),a=>a.path,"files")},to=e=>{if(!P(e)||!Array.isArray(e.apps)||!Array.isArray(e.tools))throw new Error("The list of actor programs does not match the contract");return{apps:me(e.apps.map(Zt),a=>a.id,"apps"),tools:me(e.tools.map(Yt),a=>a.name,"tools")}},pa=e=>encodeURIComponent(e),oo=(e,a)=>`${e}/runs/${pa(a)}/apps`,rt=e=>({list:async(a,t)=>to(await de.call(se.apps,{runId:a},{signal:t})),source:async(a,t,o)=>ao(await de.call(se.source,{runId:a,moduleId:t},{signal:o})),frameUrl:(a,t,o)=>ra(`${oo(e,a)}/${pa(t)}/frame?revision=${pa(o)}`),invoke:async(a,t,o,r,d,l,c)=>ye(await de.call(se.action,{runId:a,appId:t,revision:o,actionId:r,requestId:d,input:l},{signal:c})),invocation:async(a,t,o,r)=>ye(await de.call(se.invocation,{runId:a,appId:t,invocationId:o},{signal:r})),invokeFunction:async(a,t,o,r,d,l,c)=>ye(await de.call(se.function,{runId:a,actorHandle:t,revision:o,functionId:r,requestId:d,input:l},{signal:c})),functionInvocation:async(a,t,o,r)=>ye(await de.call(se.functionInvocation,{runId:a,actorHandle:t,invocationId:o},{signal:r}))});var Q=s("@ragents/web/AccessContext","useAccess");var be=s("react","createContext");var Le=s("react","createElement");var Te=s("react","forwardRef");var G=s("react","useCallback");var Re=s("react","useContext");var W=s("react","useEffect");var ma=s("react","useLayoutEffect");var j=s("react","useMemo");var B=s("react","useRef");var D=s("react","useState");var ut=e=>e?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function dt(e,a,t=[]){if(a==null)throw new Error("[lucide]: iconNode is required when icon name is used");return{name:ut(e),size:24,node:a,...t.length>0?{aliases:t}:{}}}var st=e=>{let a="",t=!1;for(let o of e){if(o==="-"||o==="_"||o<=" "){t=a.length>0;continue}a.length===0?a+=o.toLowerCase():a+=t?o.toUpperCase():o,t=!1}return a};var lt=e=>{let a=st(e);return a.charAt(0).toUpperCase()+a.slice(1)};var Be=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();var fe={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};function La(e){return e!=null}function ft(e,a={}){let t=a.attributeNames??{},o=n=>t[n]??n,r=e.size??e.width??fe.width,d=e.size??e.height??fe.height,l=e.aliases?.filter(n=>typeof n=="string"&&n.trim()!=="").map(n=>`lucide-${n}`)??[],c=[...e.name?[`lucide-${e.name}`]:[],...l],f=a.className?.split(" ").filter(Boolean)??[],C=a.includeDefaultClasses===!1?Be(...f):Be("lucide",...c,...f),g=a.absoluteStrokeWidth?Number(a.strokeWidth??fe["stroke-width"])*Number(e.size??e.width??fe.width)/Number(a.size??a.width??fe.width):a.strokeWidth??fe["stroke-width"];return["svg",{...Object.entries(fe).reduce((n,[x,y])=>(n[o(x)]=y,n),{}),..."color"in a&&a.color&&{[o("stroke")]:a.color},..."size"in a&&La(a.size)&&{[o("width")]:a.size,[o("height")]:a.size},..."width"in a&&La(a.width)&&{[o("width")]:a.width},..."height"in a&&La(a.height)&&{[o("height")]:a.height},[o("stroke-width")]:g,...C&&{[o("class")]:C},[o("viewBox")]:`0 0 ${r} ${d}`,...a.hasA11yProp===!1?{[o("aria-hidden")]:"true"}:{},..."attributes"in a&&a.attributes},e.node.map(n=>{let[x,y,E]=n,v=a.nonScalingStroke?{[o("vector-effect")]:"non-scaling-stroke",...y}:y;return E?[x,v,E]:[x,v]})]}function it(e,a={}){return ft(e,{...a,attributeNames:{...a.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}var nt=e=>{for(let a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return!0;return!1};var ro=be({});var ct=()=>Re(ro);var pt=Te(({color:e,size:a,width:t,height:o,strokeWidth:r,absoluteStrokeWidth:d,nonScalingStroke:l,className:c="",children:f,iconNode:C=[],icon:g={node:C,aliases:[],size:24},...m},n)=>{let{size:x=24,strokeWidth:y=2,absoluteStrokeWidth:E=!1,nonScalingStroke:v=!1,color:q="currentColor",className:I=""}=ct()??{},M=!!f||nt(m),[N,K,J=[]]=it(g,{color:e??q,width:t??a??x,height:o??a??x,strokeWidth:r??y,absoluteStrokeWidth:d??E,nonScalingStroke:l??v,className:Be(I,c),hasA11yProp:M,attributes:m});return Le(N,{ref:n,...K},[...J.map(([Ce,b])=>Le(Ce,b)),...Array.isArray(f)?f:[f]])});function he(e,a=[],t=[]){let o=typeof e=="string"?dt(e,a,t):e,r=Te(({className:d,...l},c)=>Le(pt,{ref:c,icon:o,className:d,...l}));return o.name&&(r.displayName=lt(o.name)),r}var mt={name:"arrow-left",size:24,node:[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]};mt.node;var Me=he(mt);var Lt={name:"layout-grid",size:24,node:[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]};Lt.node;var Fe=he(Lt);var xt={name:"x",size:24,node:[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]};xt.node;var De=he(xt);var ve=s("@ragents/web/ui","Alert");var Ke=s("@ragents/web/ui","Badge");var z=s("@ragents/web/ui","Button");var xa=s("@ragents/web/ui","Dialog");var Ia=s("@ragents/web/ui","DialogContent");var ga=s("@ragents/web/ui","DialogTitle");var qe=s("@ragents/web/ui","Empty");var Je=s("@ragents/web/ui","EmptyContent");var Ue=s("@ragents/web/ui","EmptyDescription");var He=s("@ragents/web/ui","EmptyHeader");var Oe=s("@ragents/web/ui","EmptyMedia");var Ee=s("@ragents/web/ui","EmptyTitle");var Ca=s("@ragents/web/ui","Input");var xe=s("@ragents/web/ui","Spinner");var ha=s("@ragents/web/ui","Textarea");var O=s("@ragents/web/ui","cn");var Sa=s("@ragents/web/Toolbar","ToolbarCopy");var $e=s("@ragents/web/Toolbar","ToolbarItem");var wa=s("@ragents/web/Toolbar","ToolbarLabel");var Aa=s("@ragents/web/Toolbar","ToolbarText");import{askPayloadOf as io,ASK_PLUGIN_ID as no}from"/plugins/ragents.ask/web/exports/ask-payload.js";import{answerQuestion as co}from"/plugins/ragents.ask/web/exports/web/api.js";import{QuestionCard as po}from"/plugins/ragents.ask/web/exports/web/QuestionCard.js";var Pa=s("@ragents/web/run-view","runActorFrom");var Y=s("@ragents/web/run-view","runViewFrom");import{useSurfaceEntities as mo}from"/plugins/ragents.orchestration/web/exports/web/surface-entities.js";import{SURFACE_TILE_DRAG_TYPE as Lo}from"/plugins/ragents.orchestration/web/exports/web/tile-docking.js";import{ProgramSlotContext as xo}from"/plugins/ragents.orchestration/web/exports/web/program-slot.js";var ka=s("@ragents/web/SourceCode","SourceCode");var It=(e,a)=>{let o=Y(e)?.pluginStates.find(d=>d.pluginId===ee&&d.scope.kind==="actor"&&d.scope.actorId===a);if(!o||!P(o.state)||o.state.program===null)return;let r=o.state.program;if(!P(r)||r.actorId!==a||typeof r.name!="string"||typeof r.revision!="string")throw new Error("The source code mapping of the actor program is invalid.");return{name:r.name,revision:r.revision}},ya=e=>{let a=Y(e);return a?a.pluginStates.flatMap(t=>{if(t.pluginId!==ee||t.scope.kind!=="actor")return[];let o=t.scope.actorId,r=a.actors.find(l=>l.id===o);if(!r||r.kind==="human"||r.lifecycle?.kind==="stopped")return[];if(!P(t.state)||!P(t.state.program))return[];let d=t.state.program;if(d.actorId!==r.id||d.actorHandle!==r.handle||typeof d.revision!="string"||!Array.isArray(d.views))throw new Error(`The view program of @${r.handle} is invalid.`);return d.views.map(l=>{if(!P(l)||typeof l.id!="string"||typeof l.title!="string")throw new Error(`A view of @${r.handle} is invalid.`);return{id:l.id,title:l.title,actorId:r.id,actorHandle:r.handle,revision:d.revision,app:l}})}):[]},gt=(e,a)=>{let t=Y(a);if(!e||!t)return;let o=new Map(ya(t).map(d=>[d.id,d])),r=new Set(t.actors.filter(d=>d.kind!=="human"&&d.lifecycle?.kind!=="stopped").map(d=>d.id));return{...e,apps:e.apps.flatMap(d=>{let l=o.get(d.id);if(!l||l.actorId!==d.actorId||l.revision!==d.revision)return[];let c=t.pluginStates.find(C=>C.pluginId===Pe&&C.scope.kind==="actor"&&C.scope.actorId===d.actorId),f=c?c.state:d.state.values;if(!ae(f))throw new Error(`The state of @${d.actorHandle} is not a JSON value.`);return[{...d,visible:l.app.visible!==!1,state:{...d.state,values:f}}]}),tools:e.tools.filter(d=>r.has(d.actorId)&&t.pluginStates.some(l=>l.pluginId===ee&&l.scope.kind==="actor"&&l.scope.actorId===d.actorId&&P(l.state)&&P(l.state.program)&&l.state.program.revision===d.revision))}};var Ne=s("react/jsx-runtime","Fragment");var u=s("react/jsx-runtime","jsx");var p=s("react/jsx-runtime","jsxs");function ba({api:e,moduleId:a,runId:t,revision:o,expandedByDefault:r=!1}){let[d,l]=D(r),[c,f]=D({kind:"loading"}),[C,g]=D();W(()=>{if(!d)return;let n=new AbortController;return f({kind:"loading"}),e.source(t,a,n.signal).then(x=>{n.signal.aborted||(f({kind:"ready",files:x}),g(x.find(y=>y.path==="src/server.ts")?.path??x.find(y=>/\.tsx?$/.test(y.path))?.path??x[0]?.path))},x=>{n.signal.aborted||f({kind:"error",message:x instanceof Error?x.message:String(x)})}),()=>n.abort()},[e,d,a,t,o]);let m=c.kind==="ready"?c.files.find(n=>n.path===C)??c.files[0]:void 0;return p("section",{className:"grid w-full min-w-0 grid-cols-[minmax(0,1fr)] justify-items-start gap-2",children:[u("h3",{className:"text-xs font-semibold text-muted-foreground",children:"Source code"}),!d&&u(z,{onClick:()=>l(!0),size:"sm",variant:"outline",children:"Show source code"}),d&&p(Ne,{children:[u("p",{className:"text-[0.67rem] text-muted-foreground",children:"Source of the installed build"}),c.kind==="loading"&&p("p",{className:"flex items-center gap-2 text-[0.72rem] text-muted-foreground",children:[u(xe,{"aria-hidden":!0,"aria-label":void 0,role:void 0}),u("span",{children:"Loading source code"})]}),c.kind==="error"&&u(ve,{className:"w-full",variant:"destructive",children:c.message}),c.kind==="ready"&&u("div",{className:"flex flex-wrap gap-1.5",children:c.files.map(n=>u("button",{className:O("max-w-full cursor-pointer rounded-lg border border-border-soft bg-background/70 px-[9px] py-1 text-left font-mono text-[0.66rem] text-muted-foreground [overflow-wrap:anywhere]",n.path===m?.path&&"border-[color-mix(in_srgb,var(--primary)_48%,var(--border))] bg-primary/9 text-foreground"),onClick:()=>g(n.path),type:"button",children:n.path},n.path))}),m&&u(ka,{className:"h-full max-h-[340px] w-full min-h-0 min-w-0 overflow-auto rounded-lg border border-border-soft bg-background/70",content:m.content,path:m.path}),!r&&u(z,{onClick:()=>l(!1),size:"sm",variant:"outline",children:"Hide source code"})]})]})}var Ct=(e,a,t)=>{let o=It(a,t);return o&&u(ba,{api:e,expandedByDefault:!0,moduleId:o.name,revision:o.revision,runId:a.id},`${a.id}:${t}:${o.revision}`)};var uo=e=>new Promise((a,t)=>{e.throwIfAborted();let r=setTimeout(()=>{e.removeEventListener("abort",d),a()},350),d=()=>{clearTimeout(r),t(e.reason)};e.addEventListener("abort",d,{once:!0})}),ht=async(e,a,t,o,r,d)=>{let l=await e.invokeFunction(a,t.actorHandle,t.revision,t.functionId,crypto.randomUUID().replaceAll("-",""),o,r);for(d(l);l.status==="queued"||l.status==="running";)await uo(r),l=await e.functionInvocation(a,t.actorHandle,l.id,r),d(l);return l};var so=(e,a)=>{let t=String(a.get(e.name)??"");if(e.type==="boolean")return e.required?a.has(e.name):t===""?void 0:t==="true";if(t===""&&!e.required)return;if(e.type==="string")return t;if(!t.trim())throw new Error(`${e.name}: Please enter a value.`);if(e.type==="number"||e.type==="integer"){let r=Number(t);if(!Number.isFinite(r)||e.type==="integer"&&!Number.isInteger(r))throw new Error(`${e.name} is not a valid ${e.type==="integer"?"integer":"number"}.`);return r}if(e.type==="string[]"&&!t.trimStart().startsWith("["))return t.split(/\r?\n|,/).map(r=>r.trim()).filter(Boolean);let o;try{o=JSON.parse(t)}catch{throw new Error(`${e.name}: Please enter valid JSON.`)}if(!ae(o))throw new Error(`${e.name}: Not a valid JSON value.`);if(e.type==="string[]"&&(!Array.isArray(o)||!o.every(r=>typeof r=="string")))throw new Error(`${e.name}: Please enter a list of texts.`);if(e.type==="number[]"&&(!Array.isArray(o)||!o.every(r=>typeof r=="number")))throw new Error(`${e.name}: Please enter a JSON list of numbers.`);return o},St=(e,a)=>Object.fromEntries(e.flatMap(t=>{let o=so(t,a);return o===void 0?[]:[[t.name,o]]}));var lo="h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base font-normal md:text-sm";function Ze({session:e,tool:a,detail:t=!1}){let o=Q().can("runs.write"),{api:r,refresh:d,runId:l}=X(),[c,f]=D(),[C,g]=D(!1),[m,n]=D(),x=B(void 0);W(()=>()=>x.current?.abort(),[]);let y=m?Ie(e,{invocations:[m]}):void 0,E=async I=>{if(I.preventDefault(),x.current||!o)return;let M=new AbortController;x.current=M,f(void 0),n(void 0);try{let N=St(a.parameters,new FormData(I.currentTarget));g(!0),await ht(r,l,a,N,M.signal,K=>{M.signal.aborted||n(K)}),M.signal.aborted||await d()}catch(N){M.signal.aborted||f(N instanceof Error?N.message:String(N))}finally{M.signal.aborted||g(!1),x.current===M&&(x.current=void 0)}},v=y?"Confirmation required":m?.status==="queued"?"Waiting for execution":m?.status==="running"?"Function running":m?.status==="succeeded"?"Executed":m?.status==="cancelled"?"Cancelled":m?.status==="failed"?"Failed":C?"Sending call":void 0,q=c??(m?.status==="failed"||m?.status==="cancelled"?m.error:void 0);return p("div",{className:"grid min-w-0 gap-2.5",children:[p("form",{"aria-label":`Call ${a.name}`,className:O("grid",t?"gap-3.5":"gap-2"),onSubmit:I=>{E(I)},children:[a.parameters.length===0&&t&&u("p",{children:"This function needs no parameters."}),a.parameters.map(I=>p("label",{className:O("grid gap-[3px] font-[650] text-foreground [&_small]:text-[0.61rem] [&_small]:font-normal [&_small]:text-muted-foreground",t?"text-[0.8rem]":"text-[0.68rem]",I.type==="boolean"&&I.required&&"grid-cols-[auto_minmax(0,1fr)] items-center gap-x-1.5 [&_small]:col-start-2"),children:[I.type==="boolean"&&I.required&&u("input",{"aria-description":I.description,className:"m-0 accent-primary",disabled:!o||C,name:I.name,type:"checkbox"}),p("span",{children:[I.name,I.required?" *":"",t&&p("small",{className:"ml-2",children:[I.type,I.required?"":" (optional)"]})]}),I.type==="boolean"?!I.required&&p("select",{className:lo,disabled:!o||C,name:I.name,defaultValue:"",children:[u("option",{value:"",children:"Not passed"}),u("option",{value:"true",children:"Yes"}),u("option",{value:"false",children:"No"})]}):I.type==="json"||I.type==="string[]"||I.type==="number[]"||t&&I.type==="string"?u(ha,{"aria-description":I.description,className:"min-h-8 resize-y font-normal",disabled:!o||C,name:I.name,placeholder:I.description,required:I.required,rows:2}):u(Ca,{"aria-description":I.description,className:"font-normal",disabled:!o||C,name:I.name,placeholder:I.description,required:I.required,step:I.type==="integer"?"1":I.type==="number"?"any":void 0,type:I.type==="integer"||I.type==="number"?"number":"text"}),(t||I.type==="boolean")&&u("small",{children:I.description}),I.type==="json"&&u("small",{children:"Enter as JSON."}),I.type==="number[]"&&u("small",{children:"Enter as a JSON list, e.g. [1, 2, 3]."}),I.type==="string[]"&&u("small",{children:"One entry per line or as a JSON list."})]},I.name)),p("div",{className:"flex flex-wrap items-center gap-2",children:[u(z,{disabled:!o||C,type:"submit",children:C?"Running ...":"Run"}),v&&u("span",{className:"text-[0.63rem] text-muted-foreground",role:"status",children:v})]})]}),y&&u(Se,{action:y,session:e},y.id),q&&u("p",{className:"text-destructive [overflow-wrap:anywhere]",role:"alert",children:q}),m?.status==="succeeded"&&!c&&p("section",{"aria-label":"Result",className:"grid min-w-0 gap-2",children:[u("h3",{children:"Result"}),u("pre",{className:"max-h-[320px] overflow-auto rounded-md border border-border-soft bg-card p-2.5 text-[0.75rem] whitespace-pre-wrap text-foreground [overflow-wrap:anywhere]",children:typeof m.result=="string"?m.result:JSON.stringify(m.result,null,2)})]})]})}function wt(){return u("svg",{"aria-hidden":!0,fill:"none",height:"14",stroke:"currentColor",strokeWidth:"1.7",viewBox:"0 0 24 24",width:"14",children:u("path",{d:"M9 3H3v6M15 3h6v6M3 15v6h6M21 15v6h-6"})})}var At=e=>{let a=Y(e),t=new Set(a?.pluginStates.filter(o=>o.pluginId===ee&&o.scope.kind==="actor").map(o=>o.scope.kind==="actor"?o.scope.actorId:"")??[]);return JSON.stringify({actors:a?.actors.filter(o=>t.has(o.id)).map(o=>[o.id,o.handle,o.lifecycle?.kind==="stopped"]).sort(([o],[r])=>String(o).localeCompare(String(r)))??[],states:(a?.pluginStates??[]).filter(o=>o.pluginId===ee||o.pluginId===ua||o.pluginId===Pe&&o.scope.kind==="actor"&&t.has(o.scope.actorId)).map(o=>[`${o.pluginId}:${o.scope.kind==="actor"?o.scope.actorId:"run"}`,o.state]).sort(([o],[r])=>String(o).localeCompare(String(r)))})};var kt=(e,a=!0)=>{let t=new Set(e.map(r=>r.id)),o=new Map;for(let r of e)for(let d of r.invocations)if(d.status==="queued"||d.status==="running"){if(!a&&!t.has(d.appId))continue;o.set(`${d.actorId}/${d.id}`,t.has(d.appId)?{kind:"app",appId:d.appId,invocationId:d.id}:{kind:"function",actorHandle:d.actorHandle,invocationId:d.id})}return[...o.entries()].sort(([r],[d])=>r.localeCompare(d)).map(([,r])=>r)},yt=(e,a,t,o)=>t.kind==="app"?e.invocation(a,t.appId,t.invocationId,o):e.functionInvocation(a,t.actorHandle,t.invocationId,o),Pt=e=>{let a=e.status==="queued"?e.createdAt:e.status==="running"?e.startedAt:e.finishedAt,t=Date.parse(a);return Number.isNaN(t)?0:t},bt=e=>e.invocations.reduce((a,t)=>!a||Pt(t)>=Pt(a)?t:a,void 0);var Ta=be(void 0),fo=()=>Re(Ta),X=()=>{let e=fo();if(!e)throw new Error("The actor program provider is not active");return e};var Ge="ragents.actor-programs.tools",Tt="flex size-[34px] items-center justify-center rounded-[10px] bg-[color-mix(in_srgb,var(--primary)_12%,var(--background))] text-primary",Io="grid flex-none grid-cols-[auto_minmax(0,1fr)] items-center gap-2.5 border-b border-border-soft px-workspace-inset py-[9px]",Rt="mb-2 text-[0.66rem] tracking-[0.075em] text-muted-foreground uppercase",go="grid size-[30px] flex-none place-items-center rounded-lg border border-info/25 bg-glass-app text-info",Mt=new Set(["queued","running"]),Co=700,Bt=(e,a)=>e&&{...e,apps:e.apps.map(t=>{if(t.actorId!==a.actorId||t.revision!==a.revision)return t;let o=t.invocations.some(r=>r.id===a.id);return{...t,invocations:o?t.invocations.map(r=>r.id===a.id?a:r):[...t.invocations,a]}})};function Ft({api:e,children:a,session:t}){let o=t.session.id,r=Q().can("runs.inspect"),[d,l]=D(),c=j(()=>gt(d,t.runView),[d,t.runView]),[f,C]=D(),[g,m]=D(),n=ge(t).filter(b=>b.app.visible!==!1),x=g?.runId===o&&n.some(b=>b.id===g.appId)?g.appId:void 0,y=G(()=>m(void 0),[]),E=G(b=>{if(!ge(t).some(k=>k.id===b&&k.app.visible!==!1))throw new Error("The actor view is not available on the surface.");m({runId:o,appId:b})},[o,t]);W(()=>{g&&!x&&m(void 0)},[g,x]);let v=B(0),q=G(async()=>{let b=++v.current;try{let k=await e.list(o);if(b!==v.current)return;l(k),C(void 0)}catch(k){if(b!==v.current)return;C(k instanceof Error?k.message:String(k))}},[e,o]),I=j(()=>At(t.runView),[t.runView]);W(()=>(l(void 0),C(void 0),()=>{v.current+=1}),[o]),W(()=>{q()},[I,q]);let M=j(()=>kt(c?.apps??[],r),[r,c]),N=M.length>0?JSON.stringify(M):"";W(()=>{if(!N)return;let b=M,k=!1,_,$,ie=async()=>{$=new AbortController;let te=await Promise.allSettled(b.map(async H=>({target:H,invocation:await yt(e,o,H,$?.signal)})));if(k)return;let oe=te.flatMap(H=>H.status==="fulfilled"?[H.value]:[]);oe.length>0&&(l(H=>oe.reduce((Z,We)=>Bt(Z,We.invocation),H)),C(void 0));let re=te.find(H=>H.status==="rejected");re&&C(re.reason instanceof Error?re.reason.message:String(re.reason)),oe.some(H=>!Mt.has(H.invocation.status))?await q():k||(_=window.setTimeout(()=>{ie()},Co))};return _=window.setTimeout(()=>{ie()},250),()=>{k=!0,_!==void 0&&window.clearTimeout(_),$?.abort()}},[N,e,q,o]);let K=G(async(b,k,_,$,ie)=>{v.current+=1;let te=await e.invoke(o,b,k,_,$,ie);return v.current+=1,l(oe=>Bt(oe,te)),te},[e,o]),J=j(()=>({api:e,error:f,fullscreenAppId:x,invoke:K,listing:c,openFullscreen:E,closeFullscreen:y,refresh:q,runId:o}),[e,f,x,K,c,E,y,q,o]),Ce=j(()=>({runId:o,needsAnswer:(b,k)=>{let _=c?.apps.find($=>$.id===k);return _!==void 0&&Ie(b,_)!==void 0},openFullscreen:E,source:(b,k)=>Ct(e,b,k)}),[e,c,E,o]);return u(Ta.Provider,{value:J,children:u(xo.Provider,{value:Ce,children:a})})}var ge=e=>ya(e.runView),Ie=(e,a)=>{let t=Y(e.runView);if(!t)return;let o=new Set(a.invocations.filter(r=>Mt.has(r.status)).map(r=>r.id));return t.actions.find(r=>r.owner===no&&r.status==="pending"&&r.askedBy===t.ownerId&&r.parameters.source===ee&&o.has(r.parameters.invocationId))};function Se({action:e,session:a}){let t=Q(),[o,r]=D(!1),[d,l]=D(),c=async f=>{if(!o){r(!0),l(void 0);try{await co(a.session.id,e.id,f)}catch(C){l(C instanceof Error?C.message:String(C)),r(!1)}}};return p("section",{"aria-label":"Host confirmation",className:"grid flex-none gap-2 border-b border-border-soft bg-warning-soft px-workspace-inset py-2.5","data-slot":"host-confirmation",children:[p("header",{className:"grid gap-0.5",children:[u("strong",{className:"text-[0.72rem] text-foreground",children:"Confirmation in the host"}),u("span",{className:"text-xs text-muted-foreground",children:"The app cannot answer this decision itself."})]}),o?u("p",{className:"text-xs text-muted-foreground",children:"Processing answer"}):u(po,{onAnswer:t.can("runs.write")?f=>{c(f)}:void 0,question:io(e.payload)??{question:e.title,options:[],multi:!1},text:e.title}),d&&u("p",{className:"text-xs text-destructive",role:"alert",children:d})]})}var ho=e=>e.handle?`@${e.handle}`:e.actorId;function Dt({active:e,navigation:a,selection:t,session:o}){let{api:r,error:d,listing:l,refresh:c,runId:f}=X(),C=typeof t=="string"?t:void 0,g=l?.tools.find(m=>m.name===C);return!l&&!d?p("div",{className:"flex h-full items-center justify-center gap-2.5 text-sm text-muted-foreground",children:[u(xe,{"aria-hidden":!0,"aria-label":void 0,role:void 0}),u("span",{children:"Loading functions"})]}):l?C&&!g?p(qe,{children:[p(He,{children:[u(Oe,{children:u(Ve,{})}),u(Ee,{children:"Function no longer available"}),u(Ue,{children:"The selected actor function is no longer installed in this run."})]}),u(Je,{children:u(z,{onClick:()=>a.openTab(Ge,null),variant:"outline",children:"To overview"})})]}):g?p("div",{className:"flex h-full min-h-0 flex-col",children:[p("header",{className:Io,children:[u(z,{"aria-label":"Back to function overview",onClick:()=>a.openTab(Ge,null),size:"icon-sm",title:"Back to function overview",variant:"outline",children:u(Me,{})}),p("span",{className:"grid min-w-0 gap-px",children:[u("strong",{className:"truncate text-[0.82rem] font-semibold",title:g.name,children:g.name}),p("small",{className:"truncate text-xs text-muted-foreground",children:["Function of @",g.actorHandle]})]})]}),p("div",{className:"flex min-h-0 flex-col gap-[22px] overflow-y-auto px-workspace-inset pt-[18px] pb-7",children:[p("div",{className:"grid grid-cols-[42px_minmax(0,1fr)] items-start gap-3",children:[u("span",{className:O(Tt,"size-[42px] bg-accent"),children:u(Ve,{size:22})}),p("div",{children:[u("h2",{className:"text-[1.05rem] text-foreground",children:g.name}),u("p",{className:"mt-1 text-[0.74rem] leading-[1.45] text-muted-foreground",children:g.description})]})]}),p("section",{children:[u("h3",{className:Rt,children:"Available to"}),u("div",{className:"flex flex-wrap gap-1.5",children:g.targets.map(m=>u("span",{className:"rounded-full bg-primary/9 px-2 py-1 text-xs text-foreground",children:ho(m)},m.actorId))})]}),p("section",{children:[u("h3",{className:Rt,children:"Parameter"}),e&&u(Ze,{detail:!0,session:o,tool:g},`${f}:${g.actorId}:${g.functionId}:${g.revision}`)]}),u(ba,{api:r,moduleId:g.moduleId,revision:g.revision,runId:f}),u("dl",{className:"grid grid-cols-2 gap-2",children:[{label:"Program",value:g.moduleId,title:void 0},{label:"Source hash",value:g.sourceHash.slice(0,12),title:g.sourceHash}].map(m=>p("div",{className:"grid gap-[3px] rounded-lg bg-foreground/4 px-2.5 py-2",children:[u("dt",{className:"text-[0.61rem] text-muted-foreground uppercase",children:m.label}),u("dd",{className:"truncate font-mono text-xs text-foreground",title:m.title,children:m.value})]},m.label))})]})]}):l.tools.length===0?u(qe,{children:p(He,{children:[u(Oe,{children:u(Ve,{})}),u(Ee,{children:"No functions yet"}),u(Ue,{children:"Actor functions created by agents in this run appear here."})]})}):p("div",{className:"@container flex h-full min-h-0 flex-col gap-2 overflow-y-auto px-workspace-inset pt-3 pb-5 [scrollbar-width:thin]",children:[d&&u(ve,{className:"mb-1",role:"status",variant:"destructive",children:d}),l.tools.map(m=>p("button",{className:"grid w-full cursor-pointer grid-cols-[34px_minmax(0,1fr)_auto_14px] items-center gap-2.5 rounded-lg border border-border bg-card px-[11px] py-2.5 text-left text-foreground transition-[background-color,border-color] hover:border-[color-mix(in_srgb,var(--primary)_52%,var(--border))] hover:bg-[color-mix(in_srgb,var(--primary)_7%,var(--card))] focus-visible:border-[color-mix(in_srgb,var(--primary)_52%,var(--border))] focus-visible:bg-[color-mix(in_srgb,var(--primary)_7%,var(--card))] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary/52 @max-[470px]:grid-cols-[34px_minmax(0,1fr)_14px]",onClick:()=>a.openTab(Ge,m.name),type:"button",children:[u("span",{className:Tt,children:u(Ve,{size:20})}),p("span",{className:"grid min-w-0 gap-0.5",children:[u("strong",{className:"truncate text-[0.8rem] font-semibold",children:m.name}),u("small",{className:"truncate text-[0.69rem] text-muted-foreground",children:m.description})]}),p(Ke,{className:"max-w-[132px] truncate @max-[470px]:hidden",variant:"secondary",children:[m.targets.length," ",m.targets.length===1?"agent":"agents"]}),u(So,{})]},m.name))]}):p(qe,{children:[p(He,{children:[u(Oe,{children:u(Ve,{})}),u(Ee,{children:"Functions could not be loaded"}),u(Ue,{children:d})]}),u(Je,{children:u(z,{onClick:()=>{c()},variant:"outline",children:"Retry"})})]})}function vt({session:e}){let a=Q().can("runs.inspect"),t=oa(),o=mo(e.session.id),{closeFullscreen:r,fullscreenAppId:d,openFullscreen:l}=X(),c=ge(e).filter(f=>f.app.visible!==!1);return c.length===0?null:u("nav",{"aria-label":"Actor views",className:"flex min-w-0 flex-none items-stretch",children:c.map(f=>p("div",{role:"group","aria-label":f.title,className:O("relative flex flex-none items-stretch border-r border-border hover:bg-accent focus-within:bg-accent",d===f.id&&"bg-primary/12 after:pointer-events-none after:absolute after:inset-x-0 after:bottom-0 after:h-[3px] after:bg-primary after:content-['']"),children:[p($e,{as:"button",className:"max-w-[214px] border-r-0 font-bold hover:not-disabled:bg-transparent",draggable:a,onDragStart:C=>{if(!a){C.preventDefault();return}C.dataTransfer.setData(Lo,`app:${f.id}`),C.dataTransfer.effectAllowed="move",r()},onClick:()=>{if(!t)throw new Error("The app entries need the surface controller of the orchestration plugin.");r(),t.acceptSelection({type:"run-app",id:f.id})},"aria-label":`Mini-app: ${f.title} of @${f.actorHandle}`,title:`Mini-app: ${f.title} of @${f.actorHandle}${a?". Drag onto a tile to dock.":""}`,type:"button",children:[u("span",{className:O(go,!o.has(`app:${f.id}`)&&"bg-transparent"),children:u(Fe,{size:20})}),p(Sa,{children:[p(wa,{children:["@",f.actorHandle]}),u(Aa,{children:f.title})]})]}),u($e,{as:"button","aria-expanded":d===f.id,"aria-label":`${f.title} ${d===f.id?"close full view":"open in full view"}`,title:`${f.title} ${d===f.id?"close full view":"open in full view"}`,className:"relative w-[38px] justify-center border-r-0 p-0 hover:not-disabled:bg-transparent before:pointer-events-none before:absolute before:top-1/4 before:bottom-1/4 before:left-0 before:border-l before:border-dashed before:border-border-strong before:content-['']",onClick:()=>d===f.id?r():l(f.id),type:"button",children:u(wt,{})})]},`app:${f.id}`))})}function qt(){let{listing:e}=X();return e&&e.tools.length>0?u(Ke,{variant:"secondary",children:e.tools.length}):null}function Ve({size:e=28}){return p("svg",{"aria-hidden":!0,fill:"none",height:e,stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.6",viewBox:"0 0 24 24",width:e,children:[u("path",{d:"M14.5 6.5 17.5 3.5l3 3-3 3"}),u("path",{d:"m9.5 17.5-3 3-3-3 3-3"}),u("path",{d:"M13 5H9a4 4 0 0 0-4 4v5.5M11 19h4a4 4 0 0 0 4-4V9.5"})]})}function So(){return u("svg",{"aria-hidden":!0,fill:"none",height:"14",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.8",viewBox:"0 0 24 24",width:"14",children:u("path",{d:"m9 18 6-6-6-6"})})}var Ra=s("@ragents/web/run-panel/input-bridge","hostInputEnabled");var Ba=s("@ragents/web/run-panel/input-bridge","isRunPanelKeyboardMessage");var Ma=s("@ragents/web/run-panel/input-bridge","relayFrameInput");var Fa=s("@ragents/web/theme","useResolvedTheme");var Da=s("@ragents/web/api","sendActorMessage");var va=s("@ragents/engine/src/http/contracts","actorByHandle");var qa=s("@ragents/web/actor-conversation","actorChatMessages");var Ua=s("@ragents/web/chat/chat-target","programChatNotice");var Qe=(e,a)=>{let t=Y(e.runView);if(!t||t.id!==e.session.id)throw new Error("The run view for this chat is not available yet");let o=a==="primary"?t.actors.find(r=>r.id===t.primaryActorId):va(t.actors,a);if(!o||o.kind==="human"){let r=t.actors.filter(d=>d.kind!=="human").map(d=>`@${d.handle}`).join(", ");throw new Error(`The chat target is not available. Allowed are primary and: ${r||"no actors yet"}`)}return{view:t,actor:o}},Ha=(e,a)=>{try{let{view:t,actor:o}=Qe(e,a),r=o.id===t.primaryActorId,d=o.kind==="script"?Ua:e.conversationError??(e.connected?o.lifecycle?.kind==="stopped"?`@${o.handle} stopped: ${o.lifecycle.reason}. It accepts no input until it is restarted`:void 0:"The connection to the run is interrupted");return{owner:o.id,messages:qa(t,o,e.messages,e.actorConversations?.[o.id]),running:r?e.running:o.lifecycle?.kind==="running",...o.kind==="script"?{readOnly:!0}:{},...d?{error:d}:{}}}catch(t){return{messages:[],running:!1,error:t instanceof Error?t.message:String(t)}}};var Oa=s("@ragents/web/chat/useAttachmentCapabilities","getAttachmentCapabilities");var wo=new Set(["queued","running"]),Ao=512,Ea=e=>JSON.stringify(e),Po={success:"bg-success",running:"bg-primary shadow-[0_0_0_4px_color-mix(in_srgb,var(--primary)_12%,transparent)] animate-fade-pulse [animation-duration:1.2s] motion-reduce:animate-none",confirm:"bg-warning",error:"bg-destructive"};function je({api:e,app:a,invoke:t,pendingConfirmationInvocationId:o,presentation:r,runId:d,session:l}){let c=Q(),f=Fa(),C=B(f);C.current=f;let g=B(c.can("runs.write"));g.current=c.can("runs.write");let m=B(null),n=B(void 0),x=B(0),y=B(!1),E=B(a),v=B(l);v.current=l;let q=B(new Map),I=B(new Map),M=B(new Set),N=B(""),K=B(new Map),[J,Ce]=D(!1),[b,k]=D(),[_,$]=D(),[ie,te]=D([]);E.current=a;let oe=j(()=>e.frameUrl(d,a.id,a.revision),[e,a.id,a.revision,d]),re=j(()=>crypto.randomUUID().replaceAll("-",""),[oe]),ne=G(()=>{x.current+=1,y.current=!1,n.current?.close(),n.current=void 0,q.current.clear(),I.current.clear(),Ce(!1),te([])},[]),H=G((L,i,w)=>{let R=x.current,F=T=>{if(R!==x.current||L!==n.current||!q.current.has(i))return;let S=Ha(v.current,i),ue={...S,...T,readOnly:S.readOnly===!0||!g.current},h=JSON.stringify(ue);w===void 0&&q.current.get(i)===h||(q.current.set(i,h),L.postMessage({type:et,version:U,actor:i,snapshot:ue,...w?{requestId:w}:{}}))};try{let T=v.current,S=Qe(T,i).actor,ue=JSON.stringify([T.session.id,S.id,S.execution?.driver]),h=I.current.get(ue);if(!h){let V=Oa(T.session.id,S.id).then(pe=>({attachmentCapabilities:pe}),pe=>({attachmentCapabilitiesError:pe instanceof Error?pe.message:String(pe)}));h={pending:V},I.current.set(ue,h);let aa=h;V.then(pe=>{aa.result=pe})}F(h.result??{attachmentCapabilitiesError:"Checking model capabilities ..."}),h.result||h.pending.then(F)}catch(T){F({attachmentCapabilitiesError:T instanceof Error?T.message:String(T)})}},[]),Z=G((L,i,w)=>{L.postMessage({type:Ya,version:U,...i?{requestId:i}:{},message:w})},[]),We=G(async(L,i,w,R)=>{if(!(w!==x.current||i!==n.current)){$(void 0),te(F=>[...F,L.requestId]);try{if(!g.current)throw new Error("You have read-only access to this actor view.");let F=await t(R.id,R.revision,L.actionId,L.requestId,L.input);if(w!==x.current||i!==n.current)return;K.current.set(F.id,Ea(F)),i.postMessage({type:fa,version:U,requestId:L.requestId,invocation:F})}catch(F){if(w!==x.current||i!==n.current)return;let T=F instanceof Error?F.message:String(F);$(T),Z(i,L.requestId,T)}finally{w===x.current&&i===n.current&&te(F=>F.filter(T=>T!==L.requestId))}}},[t,Z]),_e=G((L,i)=>{let w=E.current;L.postMessage({type:ja,version:U,...i?{requestId:i}:{},state:w.state??null})},[]),Va=G((L,i,w,R)=>{if(w!==x.current||i!==n.current||Ma(window,L,h=>{w===x.current&&i===n.current&&i.postMessage(h)}))return;let F=L;if(F?.type===$a&&F.version===U){y.current=!0,k(void 0),Ce(!0);return}let T=tt(L);if(!T.ok){Z(i,T.requestId,T.error);return}let{request:S}=T;if(M.current.has(S.requestId)){Z(i,S.requestId,"This requestId has already been used");return}if(M.current.add(S.requestId),M.current.size>Ao){let h=M.current.values().next().value;h!==void 0&&M.current.delete(h)}if(S.type===ia){q.current.set(S.actor,""),H(i,S.actor,S.requestId);return}if(S.type===na){q.current.delete(S.actor),i.postMessage({type:ca,version:U,requestId:S.requestId});return}if(S.type===ke){(async()=>{try{if(!g.current)throw new Error("You have read-only access to this chat.");let h=v.current,V=Ha(h,S.actor);if(V.error)throw new Error(V.error);let{actor:aa}=Qe(h,S.actor);await Da(h.session.id,aa.id,S.text,S.attachments),w===x.current&&i===n.current&&i.postMessage({type:ca,version:U,requestId:S.requestId})}catch(h){w===x.current&&i===n.current&&Z(i,S.requestId,h instanceof Error?h.message:String(h))}})();return}if(S.type===Xe){_e(i,S.requestId);return}if(!R.actions.find(h=>h.id===S.actionId)){Z(i,S.requestId,"The requested app action is not installed");return}We(S,i,w,R)},[We,Z,H,_e]),Ye=G((L,i)=>{if(n.current){L.close();return}ne();let w=x.current;n.current=L,L.onmessage=R=>Va(R.data,L,w,i),L.onmessageerror=()=>{w===x.current&&L===n.current&&Z(L,void 0,"The app sent an unreadable message")},L.start(),M.current=new Set,N.current=JSON.stringify(i.state??null),K.current=new Map(i.invocations.map(R=>[R.id,Ea(R)])),L.postMessage({type:Za,version:U,theme:C.current,hostInput:Ra(window),app:{id:i.id,actorId:i.actorId,actorHandle:i.actorHandle,title:i.title,description:i.description,actions:i.actions},actor:{id:i.actorId,handle:i.actorHandle},state:i.state??null,invocations:i.invocations}),k(void 0)},[ne,Va,Z]);ma(()=>{let L=m.current;if(!L)return;ne(),$(void 0),k(void 0);let i=E.current,w=!1,R,F=h=>{w?Ye(h,i):R=h},T=h=>{let V=h.data;if(h.source===L.contentWindow&&h.origin==="null"&&V?.type==="ragents.app.escape"&&V.version===U&&V.token===re){window.dispatchEvent(new KeyboardEvent("keydown",{...Ba(V.keyboard)?V.keyboard.event:{key:"Escape"},bubbles:!0,cancelable:!0}));return}if(!(h.source!==L.contentWindow||h.origin!=="null"||V?.type!==Ja||V.version!==U||V.token!==re||h.ports.length!==1)){if(R||n.current){h.ports[0].close();return}F(h.ports[0])}},S=()=>{if(!w){if(w=!0,R){let h=R;R=void 0,Ye(h,i)}return}R?.close(),R=void 0,ne(),k("The app left its installed page and was disconnected.")};window.addEventListener("message",T),L.addEventListener("load",S),L.src=`${oe}#ragentsBridge=${encodeURIComponent(re)}`;let ue=window.setTimeout(()=>{y.current||k("The app did not open a valid host bridge.")},5e3);return()=>{window.clearTimeout(ue),window.removeEventListener("message",T),L.removeEventListener("load",S),R?.close(),ne()}},[Ye,re,ne,oe]),W(()=>{J&&n.current?.postMessage({type:Qa,version:U,theme:f})},[J,f]),W(()=>{if(!J)return;let L=JSON.stringify(a.state??null);if(L!==N.current){N.current=L;let i=n.current;i&&_e(i)}a.invocations.forEach(i=>{let w=Ea(i);K.current.get(i.id)!==w&&(K.current.set(i.id,w),n.current?.postMessage({type:fa,version:U,invocation:i}))})},[a.invocations,a.state,J,_e]),W(()=>{if(!(!J||!n.current))for(let L of q.current.keys())H(n.current,L)},[J,H,l]);let ce=bt(a),ea=a.invocations.filter(L=>wo.has(L.status)),Ga=ea.find(L=>L.id===o),Wa=Ga?a.actions.find(L=>L.id===Ga.actionId):void 0,ze=b?{tone:"error",title:"App disconnected",detail:b}:ie.length>0?{tone:"running",title:"Starting action",detail:`${ie.length} request(s)`}:Wa?{tone:"confirm",title:"Waiting for your confirmation",detail:Wa.label}:ea.length>0?{tone:"running",title:"Action running",detail:ea.map(L=>a.actions.find(i=>i.id===L.actionId)?.label.trim()||(c.can("runs.inspect")?L.actionId:"")).filter(Boolean).join(", ")}:_?{tone:"error",title:"Action failed",detail:_}:ce?.status==="failed"?{tone:"error",title:"Last action failed",detail:ce.error}:ce?.status==="cancelled"?{tone:"muted",title:"Last action cancelled",detail:ce.actionId}:ce?.status==="succeeded"?{tone:"success",title:"Last action completed",detail:ce.output.at(-1)??ce.actionId}:J?void 0:{tone:"muted",title:"Loading app",detail:"Bridge not connected yet"},we=ze&&(r==="fullscreen"?ze.tone==="error":ze.tone!=="success")?ze:void 0,Ae=r!=="fullscreen";return p("div",{className:"flex min-h-0 flex-1 flex-col",children:[u("div",{"aria-live":"polite",role:"status",className:O("grid min-w-0 items-center overflow-hidden text-xs text-muted-foreground",Ae?"order-1 h-7 flex-[0_0_28px] grid-cols-[auto_minmax(0,1fr)] gap-1.5 px-workspace-inset py-1":"h-[31px] flex-[0_0_31px] grid-cols-[8px_auto_minmax(0,1fr)] gap-[7px] border-b border-border-soft px-workspace-inset py-[5px]"),children:we&&p(Ne,{children:[!Ae&&u("span",{className:O("size-[7px] rounded-full bg-muted-foreground/55",Po[we.tone])}),u("strong",{className:O("font-semibold whitespace-nowrap text-foreground",Ae?"text-[0.63rem]":"text-[0.7rem]"),children:we.title}),u("span",{className:"truncate",title:we.detail,children:we.detail})]})}),u("div",{className:O("relative flex min-h-0 flex-1 overflow-hidden",Ae?"bg-transparent":"bg-background"),children:u("iframe",{allow:"camera 'none'; geolocation 'none'; microphone 'none'",className:O("absolute inset-0 h-full w-full min-h-0 min-w-0 border-0",Ae?"bg-transparent":"bg-background"),ref:m,referrerPolicy:"no-referrer",sandbox:"allow-scripts allow-forms allow-downloads","aria-label":a.title,title:""})})]})}function Ut({session:e}){let{api:a,closeFullscreen:t,error:o,fullscreenAppId:r,invoke:d,listing:l,runId:c}=X(),f=B(null);if(!r)return null;let C=ge(e).find(x=>x.id===r&&x.app.visible!==!1);if(!C)return null;let g=l?.apps.find(x=>x.id===r),m=C.title,n=g?Ie(e,g):void 0;return u(xa,{open:!0,onOpenChange:x=>{x||t()},children:p(Ia,{className:"h-[calc(100%-2*clamp(16px,2vw,24px))] w-[calc(100%-2*clamp(16px,2vw,24px))] gap-0 bg-background p-0",initialFocus:f,scope:"surface",showCloseButton:!1,size:"full",children:[p("header",{className:"flex flex-none items-center gap-3 border-b border-border bg-card py-2 pr-3 pl-4",children:[u(ga,{className:"min-w-0 flex-1 truncate text-[0.9rem]",render:u("h2",{}),children:m}),u(z,{"aria-label":`Close ${m} full view`,className:"rounded-full",onClick:t,ref:f,size:"icon",title:`Close ${m} full view`,variant:"outline",children:u(De,{})})]}),p("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden [&>[data-slot=host-confirmation]]:max-h-[65%] [&>[data-slot=host-confirmation]]:flex-[0_1_auto] [&>[data-slot=host-confirmation]]:overflow-auto",children:[n&&u(Se,{action:n,session:e},n.id),g?u(je,{api:a,app:g,invoke:d,pendingConfirmationInvocationId:n?.parameters.invocationId,presentation:"fullscreen",runId:c,session:e}):u("p",{className:"flex flex-1 items-center justify-center gap-2 text-[0.7rem] text-muted-foreground",role:o?"alert":"status",children:o??"Loading actor view"})]})]})},`${c}:${r}`)}function Ht({actor:e,session:a}){let t=Q().can("runs.inspect"),{listing:o}=X(),r=Pa(e);if(!t||r.lifecycle?.kind==="stopped")return null;let d=o?.tools.filter(l=>l.card&&l.actorId===r.id)??[];return d.length===0?null:u("section",{className:"grid min-w-0 gap-[9px]",children:d.map(l=>p("article",{"aria-label":l.name,className:"min-w-0",children:[u("strong",{children:l.name}),u(Ze,{session:a,tool:l})]},`${a.session.id}:${l.actorId}:${l.functionId}:${l.revision}`))})}var Ot=e=>ge(e).flatMap(a=>{let t=a.app.placements,o=Array.isArray(t)?t.find(d=>P(d)&&d.kind==="canvas"):void 0,r=P(o)?o:void 0;if(r&&typeof r.anchorActorId!="string")throw new Error(`The surface placement of the actor view ${a.title} is invalid`);if(r&&r.anchorActorId!==a.actorId)throw new Error(`The view ${a.title} belongs to @${a.actorHandle}.`);return[{id:a.id,title:a.title,visible:a.app.visible!==!1,anchorActorId:a.actorId,data:{actorId:a.actorId,actorHandle:a.actorHandle},entity:{type:"run-app",id:a.id}}]});function Et({definition:e,session:a}){let{api:t,invoke:o,listing:r,runId:d}=X(),l=r?.apps.find(g=>g.id===e.id),c=l?Ie(a,l):void 0,f=e.title??e.id,C=l?u(je,{api:t,app:l,invoke:o,pendingConfirmationInvocationId:c?.parameters.invocationId,presentation:"tiled",runId:d,session:a}):p("div",{className:"flex flex-1 items-center justify-center gap-2 text-[0.7rem] text-muted-foreground",children:[u(xe,{"aria-hidden":!0,"aria-label":void 0,role:void 0}),u("span",{children:"Loading actor view"})]});return u("article",{"aria-label":f,className:"flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden",children:p("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden [&>[data-slot=host-confirmation]]:max-h-[65%] [&>[data-slot=host-confirmation]]:flex-[0_1_auto] [&>[data-slot=host-confirmation]]:overflow-auto",children:[c&&u(Se,{action:c,session:a},c.id),C]})})}var ko="ragents.actor-programs";function yo(){return p("svg",{"aria-hidden":!0,fill:"none",height:"15",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.7",viewBox:"0 0 24 24",width:"15",children:[u("path",{d:"M14.5 6.5 17.5 3.5l3 3-3 3"}),u("path",{d:"m9.5 17.5-3 3-3-3 3-3"}),u("path",{d:"M13 5H9a4 4 0 0 0-4 4v5.5M11 19h4a4 4 0 0 0 4-4V9.5"})]})}var bo=(e,a)=>{let t=rt(a);function o({children:r,session:d}){return p(Ft,{api:t,session:d,children:[r,u(Ut,{session:d})]})}return{...e,needsRunView:!0,SessionProvider:o,sessionHeaders:[{id:"ragents.actor-programs.quick-list",placement:"surface",order:250,Header:vt}],cardSections:[{id:"ragents.actor-programs.tools",order:400,Section:Ht}],surfaceElements:[{id:"ragents.actor-programs.apps",order:400,select:Ot,Element:Et}],workspaceTabs:[{readRight:"runs.inspect",id:Ge,label:"Functions",order:251,Icon:yo,Panel:Dt,Badge:qt}]}},Na={id:ko},Uf={...Na,activate:e=>bo(Na,ta(Na.id,e))};export{ko as ACTOR_PROGRAMS_PLUGIN_ID,Uf as webPlugin};
1
+ var l=(e,a)=>{let t=globalThis.__ragentsHostModules?.[e];if(t===void 0)throw new Error(`The host does not provide ${e}`);if(!(a in t))throw new Error(`The host does not provide ${a} from ${e}; the bundle was built against a newer host`);return t[a]};var Ke=l("@ragents/web/PluginRegistry","pluginRoutePrefixFrom");var k=l("@ragents/web/lib/guards","isRecord");var ee=l("@ragents/web/rpc","rpc");var Je=l("@ragents/web/access-token","withAccessToken");var Ze=l("@ragents/host/plugin-support/actor-programs/contract","ACTOR_INVOCATIONS_STATE_ID");var X=l("@ragents/host/plugin-support/actor-programs/contract","ACTOR_PROGRAMS_STATE_ID");var me=l("@ragents/host/plugin-support/actor-programs/contract","ACTOR_STATE_ID");var ae=l("@ragents/host/plugin-support/actor-programs/contract","actorProgramContracts");var Ta=["string","number","integer","boolean","string[]","number[]","json"];var $e=8,Qe=20*1024*1024,At=29*1024*1024,Ba=(e,a)=>{let t=a.trim().toLowerCase();return t?t==="video/quicktime"?"video/mov":t:{png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",avif:"image/avif",svg:"image/svg+xml",pdf:"application/pdf",mp4:"video/mp4",webm:"video/webm",mov:"video/mov",mpeg:"video/mpeg",mpg:"video/mpeg",txt:"text/plain",md:"text/markdown",csv:"text/csv",tsv:"text/tab-separated-values",json:"application/json",jsonl:"application/x-ndjson",xml:"application/xml",yaml:"application/yaml",yml:"application/yaml",ts:"text/plain",tsx:"text/plain",js:"application/javascript",py:"text/plain",cs:"text/plain",fs:"text/plain",html:"text/html",css:"text/css",log:"text/plain"}[e.split(".").at(-1)?.toLowerCase()??""]??"application/octet-stream"},je=e=>{if(e===void 0)return[];if(!Array.isArray(e)||e.length>$e)throw new Error(`Attachments must be a list of at most ${$e} files.`);let a=0;return e.map((t,o)=>{if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Attachment ${o+1} is invalid.`);let{name:r,mediaType:d,data:s}=t;if(typeof r!="string"||!r.trim()||r.length>255||/[/\\\u0000-\u001f\u007f]/.test(r)||r==="."||r==="..")throw new Error(`Attachment ${o+1} needs a valid file name without a path.`);let m=typeof d=="string"?Ba(r,d):"";if(!/^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+$/i.test(m))throw new Error(`Attachment ${r} needs a valid MIME type.`);if(typeof s=="string"&&s.length>Math.ceil(Qe/3)*4)throw new Error("Attachments may be at most 20 MiB in total.");if(typeof s!="string"||s.length%4!==0||!/^[A-Za-z0-9+/]*={0,2}$/.test(s))throw new Error(`Attachment ${r} contains invalid Base64.`);let C=s.endsWith("==")?2:s.endsWith("=")?1:0;if(C&&("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(s[s.length-C-1])&(C===2?15:3))!==0)throw new Error(`Attachment ${r} contains non-canonical Base64.`);if(a+=s.length/4*3-C,a>Qe)throw new Error("Attachments may be at most 20 MiB in total.");return{name:r,mediaType:m,data:s}})};var q=1,Da="ragents.app.frame-ready",va="ragents.app.connected",qa="ragents.app.ready",Ua="ragents.app.theme",Ma="ragents.app.invoke",Ue="ragents.app.get-state",Oa="ragents.app.state",Ye="ragents.app.invocation",Ha="ragents.app.error",ea="ragents.app.chat-watch",aa="ragents.app.chat-unwatch",Le="ragents.app.chat-send",Ea="ragents.app.chat-state",ta="ragents.app.chat-ack",Na=/^[A-Za-z0-9_-]{1,64}$/,Pt=64*1024,kt=24,K=(e,a=0)=>a>kt?!1:e===null||typeof e=="string"||typeof e=="boolean"?!0:typeof e=="number"?Number.isFinite(e):Array.isArray(e)?e.every(t=>K(t,a+1)):k(e)?Object.entries(e).every(([t,o])=>t.length<=256&&K(o,a+1)):!1,yt=e=>typeof e=="string"&&Na.test(e)?e:void 0,Fa=e=>{try{return new TextEncoder().encode(JSON.stringify(e)).byteLength<=Pt}catch{return!1}},Va=e=>{if(!k(e))return{ok:!1,error:"The app message is not an object"};let a=yt(e.requestId);if(!a)return{ok:!1,error:"The app message contains no valid requestId"};if(e.version!==q)return{ok:!1,requestId:a,error:"The app uses an unsupported bridge version"};if(e.type===Ue)return{ok:!0,request:{type:Ue,version:q,requestId:a}};if(e.type===ea||e.type===aa||e.type===Le){if(typeof e.actor!="string"||!/^@?[\p{L}\p{N}_-]{1,64}$/u.test(e.actor))return{ok:!1,requestId:a,error:"The chat target must be primary or an actor handle such as @reviewer"};let t={version:q,requestId:a,actor:e.actor};if(e.type!==Le)return{ok:!0,request:{...t,type:e.type}};let o;try{o=je(e.attachments)}catch(r){return{ok:!1,requestId:a,error:r instanceof Error?r.message:String(r)}}return typeof e.text!="string"||!e.text.trim()&&!o.length||!Fa(e.text)?{ok:!1,requestId:a,error:"The chat message is empty or too large"}:{ok:!0,request:{...t,type:Le,text:e.text.trim(),...o.length?{attachments:o}:{}}}}return e.type!==Ma?{ok:!1,requestId:a,error:"The app message has an unknown type"}:typeof e.actionId!="string"||!Na.test(e.actionId)?{ok:!1,requestId:a,error:"The app message contains no valid actionId"}:!K(e.input)||!Fa(e.input)?{ok:!1,requestId:a,error:"The input of the app action is not a valid JSON value or too large"}:{ok:!0,request:{type:Ma,version:q,requestId:a,actionId:e.actionId,input:e.input}}};var Rt=/^[A-Za-z0-9_-]{1,100}$/,bt=/^[A-Za-z0-9_-]{1,130}$/,Tt=/^[a-f0-9]{64}$/,Bt=new Set(Ta),P=(e,a)=>{if(typeof e!="string"||!e.trim())throw new Error(`${a} is missing or empty`);return e},Ga=(e,a)=>{if(e!==void 0){if(typeof e!="string")throw new Error(`${a} is not text`);return e}},te=(e,a)=>{let t=P(e,a);if(!Rt.test(t))throw new Error(`${a} is not a valid identifier`);return t},le=(e,a,t)=>{let o=e.map(a);if(new Set(o).size!==o.length)throw new Error(`${t} contains duplicate identifiers`);return e},Mt=e=>{if(!k(e))throw new Error("An app action is not an object");if(e.confirmation!==null&&typeof e.confirmation!="string")throw new Error("confirmation of an app action must be text or null");if(typeof e.confirmation=="string"&&!e.confirmation.trim())throw new Error("confirmation of an app action must not be empty");return{id:te(e.id,"action.id"),label:P(e.label,"action.label"),...e.description!==void 0?{description:Ga(e.description,"action.description")}:{},confirmation:e.confirmation}},xe=e=>{if(!k(e))throw new Error("An app execution is not an object");if(!Array.isArray(e.output)||e.output.some(t=>typeof t!="string"))throw new Error("output of an app execution is not a text list");let a={id:te(e.id,"invocation.id"),actorId:P(e.actorId,"invocation.actorId"),actorHandle:P(e.actorHandle,"invocation.actorHandle"),appId:P(e.appId,"invocation.appId"),actionId:te(e.actionId,"invocation.actionId"),revision:P(e.revision,"invocation.revision"),output:e.output,createdAt:P(e.createdAt,"invocation.createdAt"),requestId:te(e.requestId,"invocation.requestId")};switch(e.status){case"queued":return{...a,status:"queued"};case"running":return{...a,status:"running",startedAt:P(e.startedAt,"invocation.startedAt")};case"succeeded":{if(!K(e.result))throw new Error("result of an app execution is not a JSON value");return{...a,status:"succeeded",startedAt:P(e.startedAt,"invocation.startedAt"),finishedAt:P(e.finishedAt,"invocation.finishedAt"),result:e.result}}case"failed":case"cancelled":return{...a,status:e.status,...e.startedAt!==void 0?{startedAt:P(e.startedAt,"invocation.startedAt")}:{},finishedAt:P(e.finishedAt,"invocation.finishedAt"),error:P(e.error,"invocation.error")};default:throw new Error("status of an app execution is invalid")}},Ft=e=>{if(!k(e))throw new Error("An app is not an object");if(!Array.isArray(e.actions))throw new Error("actions of an app is not a list");if(!Array.isArray(e.invocations))throw new Error("invocations of an app is not a list");if(!k(e.state)||e.state.version!==1||!Number.isSafeInteger(e.state.revision)||!K(e.state.values))throw new Error("state of a view does not match the state contract");let a=le(e.actions.map(Mt),s=>s.id,"actions"),t=le(e.invocations.map(xe),s=>s.id,"invocations"),o=new Set(a.map(s=>s.id));if(t.some(s=>!o.has(s.actionId)))throw new Error("An app execution refers to an unknown action");if(e.visible!==void 0&&typeof e.visible!="boolean")throw new Error("visible of an app is not a boolean");let r=P(e.id,"view.id");if(!bt.test(r))throw new Error("view.id is not a valid identifier");let d=P(e.actorId,"view.actorId");return{id:r,actorId:d,actorHandle:P(e.actorHandle,"view.actorHandle"),visible:e.visible!==!1,title:P(e.title,"app.title"),...e.description!==void 0?{description:Ga(e.description,"app.description")}:{},revision:P(e.revision,"app.revision"),actions:a,state:{version:1,revision:e.state.revision,values:e.state.values},invocations:t}},Dt=e=>{if(!k(e))throw new Error("A tool parameter is not an object");if(typeof e.type!="string"||!Bt.has(e.type))throw new Error("type of a tool parameter is invalid");if(typeof e.required!="boolean")throw new Error("required of a tool parameter is not a boolean");return{name:te(e.name,"parameter.name"),description:P(e.description,"parameter.description"),type:e.type,required:e.required}},vt=e=>{if(!k(e))throw new Error("A tool target is not an object");if(e.handle!==null&&typeof e.handle!="string")throw new Error("handle of a tool target must be text or null");return{actorId:P(e.actorId,"target.actorId"),handle:e.handle}},qt=e=>{if(!k(e))throw new Error("A script tool is not an object");if(!Array.isArray(e.parameters))throw new Error("parameters of a script tool is not a list");if(!Array.isArray(e.targets))throw new Error("targets of a script tool is not a list");let a=P(e.sourceHash,"tool.sourceHash");if(!Tt.test(a))throw new Error("sourceHash of a script tool is invalid");return{actorId:P(e.actorId,"tool.actorId"),actorHandle:P(e.actorHandle,"tool.actorHandle"),functionId:te(e.functionId,"tool.functionId"),revision:P(e.revision,"tool.revision"),moduleId:te(e.moduleId,"tool.moduleId"),name:te(e.name,"tool.name"),description:P(e.description,"tool.description"),parameters:le(e.parameters.map(Dt),t=>t.name,"parameters"),card:e.card===!0,sourceHash:a,targets:le(e.targets.map(vt),t=>t.actorId,"targets"),installedBy:P(e.installedBy,"tool.installedBy")}},Ut=e=>{if(!k(e))throw new Error("A source file is not an object");if(typeof e.content!="string")throw new Error("content of a source file is not text");return{path:P(e.path,"source.path"),content:e.content}},Ot=e=>{if(!k(e)||!Array.isArray(e.files))throw new Error("The source list does not match the contract");return le(e.files.map(Ut),a=>a.path,"files")},Ht=e=>{if(!k(e)||!Array.isArray(e.apps)||!Array.isArray(e.tools))throw new Error("The list of actor programs does not match the contract");return{apps:le(e.apps.map(Ft),a=>a.id,"apps"),tools:le(e.tools.map(qt),a=>a.name,"tools")}},oa=e=>encodeURIComponent(e),Et=(e,a)=>`${e}/runs/${oa(a)}/apps`,Wa=e=>({list:async(a,t)=>Ht(await ee.call(ae.apps,{runId:a},{signal:t})),source:async(a,t,o)=>Ot(await ee.call(ae.source,{runId:a,moduleId:t},{signal:o})),frameUrl:(a,t,o)=>Je(`${Et(e,a)}/${oa(t)}/frame?revision=${oa(o)}`),invoke:async(a,t,o,r,d,s,m)=>xe(await ee.call(ae.action,{runId:a,appId:t,revision:o,actionId:r,requestId:d,input:s},{signal:m})),invocation:async(a,t,o,r)=>xe(await ee.call(ae.invocation,{runId:a,appId:t,invocationId:o},{signal:r})),invokeFunction:async(a,t,o,r,d,s,m)=>xe(await ee.call(ae.function,{runId:a,actorHandle:t,revision:o,functionId:r,requestId:d,input:s},{signal:m})),functionInvocation:async(a,t,o,r)=>xe(await ee.call(ae.functionInvocation,{runId:a,actorHandle:t,invocationId:o},{signal:r}))});var J=l("@ragents/web/AccessContext","useAccess");var Ie=l("react","createContext");var fe=l("react","createElement");var ge=l("react","forwardRef");var V=l("react","useCallback");var Ce=l("react","useContext");var N=l("react","useEffect");var ra=l("react","useLayoutEffect");var G=l("react","useMemo");var M=l("react","useRef");var F=l("react","useState");var _a=e=>e?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function za(e,a,t=[]){if(a==null)throw new Error("[lucide]: iconNode is required when icon name is used");return{name:_a(e),size:24,node:a,...t.length>0?{aliases:t}:{}}}var Xa=e=>{let a="",t=!1;for(let o of e){if(o==="-"||o==="_"||o<=" "){t=a.length>0;continue}a.length===0?a+=o.toLowerCase():a+=t?o.toUpperCase():o,t=!1}return a};var Ka=e=>{let a=Xa(e);return a.charAt(0).toUpperCase()+a.slice(1)};var he=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();var oe={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};function ua(e){return e!=null}function Ja(e,a={}){let t=a.attributeNames??{},o=L=>t[L]??L,r=e.size??e.width??oe.width,d=e.size??e.height??oe.height,s=e.aliases?.filter(L=>typeof L=="string"&&L.trim()!=="").map(L=>`lucide-${L}`)??[],m=[...e.name?[`lucide-${e.name}`]:[],...s],C=a.className?.split(" ").filter(Boolean)??[],x=a.includeDefaultClasses===!1?he(...C):he("lucide",...m,...C),I=a.absoluteStrokeWidth?Number(a.strokeWidth??oe["stroke-width"])*Number(e.size??e.width??oe.width)/Number(a.size??a.width??oe.width):a.strokeWidth??oe["stroke-width"];return["svg",{...Object.entries(oe).reduce((L,[S,y])=>(L[o(S)]=y,L),{}),..."color"in a&&a.color&&{[o("stroke")]:a.color},..."size"in a&&ua(a.size)&&{[o("width")]:a.size,[o("height")]:a.size},..."width"in a&&ua(a.width)&&{[o("width")]:a.width},..."height"in a&&ua(a.height)&&{[o("height")]:a.height},[o("stroke-width")]:I,...x&&{[o("class")]:x},[o("viewBox")]:`0 0 ${r} ${d}`,...a.hasA11yProp===!1?{[o("aria-hidden")]:"true"}:{},..."attributes"in a&&a.attributes},e.node.map(L=>{let[S,y,U]=L,D=a.nonScalingStroke?{[o("vector-effect")]:"non-scaling-stroke",...y}:y;return U?[S,D,U]:[S,D]})]}function Za(e,a={}){return Ja(e,{...a,attributeNames:{...a.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}var $a=e=>{for(let a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return!0;return!1};var Nt=Ie({});var Qa=()=>Ce(Nt);var ja=ge(({color:e,size:a,width:t,height:o,strokeWidth:r,absoluteStrokeWidth:d,nonScalingStroke:s,className:m="",children:C,iconNode:x=[],icon:I={node:x,aliases:[],size:24},...f},L)=>{let{size:S=24,strokeWidth:y=2,absoluteStrokeWidth:U=!1,nonScalingStroke:D=!1,color:_="currentColor",className:n=""}=Qa()??{},A=!!C||$a(f),[B,v,$=[]]=Za(I,{color:e??_,width:t??a??S,height:o??a??S,strokeWidth:r??y,absoluteStrokeWidth:d??U,nonScalingStroke:s??D,className:he(n,m),hasA11yProp:A,attributes:f});return fe(B,{ref:L,...v},[...$.map(([z,E])=>fe(z,E)),...Array.isArray(C)?C:[C]])});function Ya(e,a=[],t=[]){let o=typeof e=="string"?za(e,a,t):e,r=ge(({className:d,...s},m)=>fe(ja,{ref:m,icon:o,className:d,...s}));return o.name&&(r.displayName=Ka(o.name)),r}var et={name:"arrow-left",size:24,node:[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]};et.node;var Se=Ya(et);var we=l("@ragents/web/ui","Alert");var Oe=l("@ragents/web/ui","Badge");var Z=l("@ragents/web/ui","Button");var Ae=l("@ragents/web/ui","Empty");var He=l("@ragents/web/ui","EmptyContent");var Pe=l("@ragents/web/ui","EmptyDescription");var ke=l("@ragents/web/ui","EmptyHeader");var ye=l("@ragents/web/ui","EmptyMedia");var Re=l("@ragents/web/ui","EmptyTitle");var da=l("@ragents/web/ui","Input");var ie=l("@ragents/web/ui","Spinner");var sa=l("@ragents/web/ui","Textarea");var re=l("@ragents/web/ui","cn");import{askPayloadOf as zt,ASK_PLUGIN_ID as Xt}from"/plugins/ragents.ask/web/exports/ask-payload.js";import{answerQuestion as Kt}from"/plugins/ragents.ask/web/exports/web/api.js";import{QuestionCard as Jt}from"/plugins/ragents.ask/web/exports/web/QuestionCard.js";var la=l("@ragents/web/run-view","runActorFrom");var W=l("@ragents/web/run-view","runViewFrom");import{ProgramSlotContext as Zt}from"/plugins/ragents.orchestration/web/exports/web/program-slot.js";var fa=l("@ragents/web/SourceCode","SourceCode");var at=(e,a)=>{let o=W(e)?.pluginStates.find(d=>d.pluginId===X&&d.scope.kind==="actor"&&d.scope.actorId===a);if(!o||!k(o.state)||o.state.program===null)return;let r=o.state.program;if(!k(r)||r.actorId!==a||typeof r.name!="string"||typeof r.revision!="string")throw new Error("The source code mapping of the actor program is invalid.");return{name:r.name,revision:r.revision}},ia=e=>{let a=W(e);return a?a.pluginStates.flatMap(t=>{if(t.pluginId!==X||t.scope.kind!=="actor")return[];let o=t.scope.actorId,r=a.actors.find(s=>s.id===o);if(!r||r.kind==="human"||r.lifecycle?.kind==="stopped")return[];if(!k(t.state)||!k(t.state.program))return[];let d=t.state.program;if(d.actorId!==r.id||d.actorHandle!==r.handle||typeof d.revision!="string"||!Array.isArray(d.views))throw new Error(`The view program of @${r.handle} is invalid.`);return d.views.map(s=>{if(!k(s)||typeof s.id!="string"||typeof s.title!="string")throw new Error(`A view of @${r.handle} is invalid.`);return{id:s.id,title:s.title,actorId:r.id,actorHandle:r.handle,revision:d.revision,app:s}})}):[]},tt=(e,a)=>{let t=W(a);if(!e||!t)return;let o=new Map(ia(t).map(d=>[d.id,d])),r=new Set(t.actors.filter(d=>d.kind!=="human"&&d.lifecycle?.kind!=="stopped").map(d=>d.id));return{...e,apps:e.apps.flatMap(d=>{let s=o.get(d.id);if(!s||s.actorId!==d.actorId||s.revision!==d.revision)return[];let m=t.pluginStates.find(x=>x.pluginId===me&&x.scope.kind==="actor"&&x.scope.actorId===d.actorId),C=m?m.state:d.state.values;if(!K(C))throw new Error(`The state of @${d.actorHandle} is not a JSON value.`);return[{...d,visible:s.app.visible!==!1,state:{...d.state,values:C}}]}),tools:e.tools.filter(d=>r.has(d.actorId)&&t.pluginStates.some(s=>s.pluginId===X&&s.scope.kind==="actor"&&s.scope.actorId===d.actorId&&k(s.state)&&k(s.state.program)&&s.state.program.revision===d.revision))}};var be=l("react/jsx-runtime","Fragment");var u=l("react/jsx-runtime","jsx");var p=l("react/jsx-runtime","jsxs");function na({api:e,moduleId:a,runId:t,revision:o,expandedByDefault:r=!1}){let[d,s]=F(r),[m,C]=F({kind:"loading"}),[x,I]=F();N(()=>{if(!d)return;let L=new AbortController;return C({kind:"loading"}),e.source(t,a,L.signal).then(S=>{L.signal.aborted||(C({kind:"ready",files:S}),I(S.find(y=>y.path==="src/server.ts")?.path??S.find(y=>/\.tsx?$/.test(y.path))?.path??S[0]?.path))},S=>{L.signal.aborted||C({kind:"error",message:S instanceof Error?S.message:String(S)})}),()=>L.abort()},[e,d,a,t,o]);let f=m.kind==="ready"?m.files.find(L=>L.path===x)??m.files[0]:void 0;return p("section",{className:"grid w-full min-w-0 grid-cols-[minmax(0,1fr)] justify-items-start gap-2",children:[u("h3",{className:"text-xs font-semibold text-muted-foreground",children:"Source code"}),!d&&u(Z,{onClick:()=>s(!0),size:"sm",variant:"outline",children:"Show source code"}),d&&p(be,{children:[u("p",{className:"text-[0.67rem] text-muted-foreground",children:"Source of the installed build"}),m.kind==="loading"&&p("p",{className:"flex items-center gap-2 text-[0.72rem] text-muted-foreground",children:[u(ie,{"aria-hidden":!0,"aria-label":void 0,role:void 0}),u("span",{children:"Loading source code"})]}),m.kind==="error"&&u(we,{className:"w-full",variant:"destructive",children:m.message}),m.kind==="ready"&&u("div",{className:"flex flex-wrap gap-1.5",children:m.files.map(L=>u("button",{className:re("max-w-full cursor-pointer rounded-lg border border-border-soft bg-background/70 px-[9px] py-1 text-left font-mono text-[0.66rem] text-muted-foreground [overflow-wrap:anywhere]",L.path===f?.path&&"border-[color-mix(in_srgb,var(--primary)_48%,var(--border))] bg-primary/9 text-foreground"),onClick:()=>I(L.path),type:"button",children:L.path},L.path))}),f&&u(fa,{className:"h-full max-h-[340px] w-full min-h-0 min-w-0 overflow-auto rounded-lg border border-border-soft bg-background/70",content:f.content,path:f.path}),!r&&u(Z,{onClick:()=>s(!1),size:"sm",variant:"outline",children:"Hide source code"})]})]})}var ot=(e,a,t)=>{let o=at(a,t);return o&&u(na,{api:e,expandedByDefault:!0,moduleId:o.name,revision:o.revision,runId:a.id},`${a.id}:${t}:${o.revision}`)};var Vt=e=>new Promise((a,t)=>{e.throwIfAborted();let r=setTimeout(()=>{e.removeEventListener("abort",d),a()},350),d=()=>{clearTimeout(r),t(e.reason)};e.addEventListener("abort",d,{once:!0})}),rt=async(e,a,t,o,r,d)=>{let s=await e.invokeFunction(a,t.actorHandle,t.revision,t.functionId,crypto.randomUUID().replaceAll("-",""),o,r);for(d(s);s.status==="queued"||s.status==="running";)await Vt(r),s=await e.functionInvocation(a,t.actorHandle,s.id,r),d(s);return s};var Gt=(e,a)=>{let t=String(a.get(e.name)??"");if(e.type==="boolean")return e.required?a.has(e.name):t===""?void 0:t==="true";if(t===""&&!e.required)return;if(e.type==="string")return t;if(!t.trim())throw new Error(`${e.name}: Please enter a value.`);if(e.type==="number"||e.type==="integer"){let r=Number(t);if(!Number.isFinite(r)||e.type==="integer"&&!Number.isInteger(r))throw new Error(`${e.name} is not a valid ${e.type==="integer"?"integer":"number"}.`);return r}if(e.type==="string[]"&&!t.trimStart().startsWith("["))return t.split(/\r?\n|,/).map(r=>r.trim()).filter(Boolean);let o;try{o=JSON.parse(t)}catch{throw new Error(`${e.name}: Please enter valid JSON.`)}if(!K(o))throw new Error(`${e.name}: Not a valid JSON value.`);if(e.type==="string[]"&&(!Array.isArray(o)||!o.every(r=>typeof r=="string")))throw new Error(`${e.name}: Please enter a list of texts.`);if(e.type==="number[]"&&(!Array.isArray(o)||!o.every(r=>typeof r=="number")))throw new Error(`${e.name}: Please enter a JSON list of numbers.`);return o},ut=(e,a)=>Object.fromEntries(e.flatMap(t=>{let o=Gt(t,a);return o===void 0?[]:[[t.name,o]]}));var Wt="h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base font-normal md:text-sm";function Ee({session:e,tool:a,detail:t=!1}){let o=J().can("runs.write"),{api:r,refresh:d,runId:s}=j(),[m,C]=F(),[x,I]=F(!1),[f,L]=F(),S=M(void 0);N(()=>()=>S.current?.abort(),[]);let y=f?Ne(e,{invocations:[f]}):void 0,U=async n=>{if(n.preventDefault(),S.current||!o)return;let A=new AbortController;S.current=A,C(void 0),L(void 0);try{let B=ut(a.parameters,new FormData(n.currentTarget));I(!0),await rt(r,s,a,B,A.signal,v=>{A.signal.aborted||L(v)}),A.signal.aborted||await d()}catch(B){A.signal.aborted||C(B instanceof Error?B.message:String(B))}finally{A.signal.aborted||I(!1),S.current===A&&(S.current=void 0)}},D=y?"Confirmation required":f?.status==="queued"?"Waiting for execution":f?.status==="running"?"Function running":f?.status==="succeeded"?"Executed":f?.status==="cancelled"?"Cancelled":f?.status==="failed"?"Failed":x?"Sending call":void 0,_=m??(f?.status==="failed"||f?.status==="cancelled"?f.error:void 0);return p("div",{className:"grid min-w-0 gap-2.5",children:[p("form",{"aria-label":`Call ${a.name}`,className:re("grid",t?"gap-3.5":"gap-2"),onSubmit:n=>{U(n)},children:[a.parameters.length===0&&t&&u("p",{children:"This function needs no parameters."}),a.parameters.map(n=>p("label",{className:re("grid gap-[3px] font-[650] text-foreground [&_small]:text-[0.61rem] [&_small]:font-normal [&_small]:text-muted-foreground",t?"text-[0.8rem]":"text-[0.68rem]",n.type==="boolean"&&n.required&&"grid-cols-[auto_minmax(0,1fr)] items-center gap-x-1.5 [&_small]:col-start-2"),children:[n.type==="boolean"&&n.required&&u("input",{"aria-description":n.description,className:"m-0 accent-primary",disabled:!o||x,name:n.name,type:"checkbox"}),p("span",{children:[n.name,n.required?" *":"",t&&p("small",{className:"ml-2",children:[n.type,n.required?"":" (optional)"]})]}),n.type==="boolean"?!n.required&&p("select",{className:Wt,disabled:!o||x,name:n.name,defaultValue:"",children:[u("option",{value:"",children:"Not passed"}),u("option",{value:"true",children:"Yes"}),u("option",{value:"false",children:"No"})]}):n.type==="json"||n.type==="string[]"||n.type==="number[]"||t&&n.type==="string"?u(sa,{"aria-description":n.description,className:"min-h-8 resize-y font-normal",disabled:!o||x,name:n.name,placeholder:n.description,required:n.required,rows:2}):u(da,{"aria-description":n.description,className:"font-normal",disabled:!o||x,name:n.name,placeholder:n.description,required:n.required,step:n.type==="integer"?"1":n.type==="number"?"any":void 0,type:n.type==="integer"||n.type==="number"?"number":"text"}),(t||n.type==="boolean")&&u("small",{children:n.description}),n.type==="json"&&u("small",{children:"Enter as JSON."}),n.type==="number[]"&&u("small",{children:"Enter as a JSON list, e.g. [1, 2, 3]."}),n.type==="string[]"&&u("small",{children:"One entry per line or as a JSON list."})]},n.name)),p("div",{className:"flex flex-wrap items-center gap-2",children:[u(Z,{disabled:!o||x,type:"submit",children:x?"Running ...":"Run"}),D&&u("span",{className:"text-[0.63rem] text-muted-foreground",role:"status",children:D})]})]}),y&&u(Ve,{action:y,session:e},y.id),_&&u("p",{className:"text-destructive [overflow-wrap:anywhere]",role:"alert",children:_}),f?.status==="succeeded"&&!m&&p("section",{"aria-label":"Result",className:"grid min-w-0 gap-2",children:[u("h3",{children:"Result"}),u("pre",{className:"max-h-[320px] overflow-auto rounded-md border border-border-soft bg-card p-2.5 text-[0.75rem] whitespace-pre-wrap text-foreground [overflow-wrap:anywhere]",children:typeof f.result=="string"?f.result:JSON.stringify(f.result,null,2)})]})]})}var dt=e=>{let a=W(e),t=new Set(a?.pluginStates.filter(o=>o.pluginId===X&&o.scope.kind==="actor").map(o=>o.scope.kind==="actor"?o.scope.actorId:"")??[]);return JSON.stringify({actors:a?.actors.filter(o=>t.has(o.id)).map(o=>[o.id,o.handle,o.lifecycle?.kind==="stopped"]).sort(([o],[r])=>String(o).localeCompare(String(r)))??[],states:(a?.pluginStates??[]).filter(o=>o.pluginId===X||o.pluginId===Ze||o.pluginId===me&&o.scope.kind==="actor"&&t.has(o.scope.actorId)).map(o=>[`${o.pluginId}:${o.scope.kind==="actor"?o.scope.actorId:"run"}`,o.state]).sort(([o],[r])=>String(o).localeCompare(String(r)))})};var lt=(e,a=!0)=>{let t=new Set(e.map(r=>r.id)),o=new Map;for(let r of e)for(let d of r.invocations)if(d.status==="queued"||d.status==="running"){if(!a&&!t.has(d.appId))continue;o.set(`${d.actorId}/${d.id}`,t.has(d.appId)?{kind:"app",appId:d.appId,invocationId:d.id}:{kind:"function",actorHandle:d.actorHandle,invocationId:d.id})}return[...o.entries()].sort(([r],[d])=>r.localeCompare(d)).map(([,r])=>r)},ft=(e,a,t,o)=>t.kind==="app"?e.invocation(a,t.appId,t.invocationId,o):e.functionInvocation(a,t.actorHandle,t.invocationId,o),st=e=>{let a=e.status==="queued"?e.createdAt:e.status==="running"?e.startedAt:e.finishedAt,t=Date.parse(a);return Number.isNaN(t)?0:t},it=e=>e.invocations.reduce((a,t)=>!a||st(t)>=st(a)?t:a,void 0);var ca=Ie(void 0),_t=()=>Ce(ca),j=()=>{let e=_t();if(!e)throw new Error("The actor program provider is not active");return e};var Be="ragents.actor-programs.tools",nt="flex size-[34px] items-center justify-center rounded-[10px] bg-[color-mix(in_srgb,var(--primary)_12%,var(--background))] text-primary",$t="grid flex-none grid-cols-[auto_minmax(0,1fr)] items-center gap-2.5 border-b border-border-soft px-workspace-inset py-[9px]",ct="mb-2 text-[0.66rem] tracking-[0.075em] text-muted-foreground uppercase",mt=new Set(["queued","running"]),Qt=700,pt=(e,a)=>e&&{...e,apps:e.apps.map(t=>{if(t.actorId!==a.actorId||t.revision!==a.revision)return t;let o=t.invocations.some(r=>r.id===a.id);return{...t,invocations:o?t.invocations.map(r=>r.id===a.id?a:r):[...t.invocations,a]}})};function Lt({api:e,children:a,session:t}){let o=t.session.id,r=J().can("runs.inspect"),[d,s]=F(),m=G(()=>tt(d,t.runView),[d,t.runView]),[C,x]=F(),I=M(0),f=V(async()=>{let n=++I.current;try{let A=await e.list(o);if(n!==I.current)return;s(A),x(void 0)}catch(A){if(n!==I.current)return;x(A instanceof Error?A.message:String(A))}},[e,o]),L=G(()=>dt(t.runView),[t.runView]);N(()=>(s(void 0),x(void 0),()=>{I.current+=1}),[o]),N(()=>{f()},[L,f]);let S=G(()=>lt(m?.apps??[],r),[r,m]),y=S.length>0?JSON.stringify(S):"";N(()=>{if(!y)return;let n=S,A=!1,B,v,$=async()=>{v=new AbortController;let z=await Promise.allSettled(n.map(async O=>({target:O,invocation:await ft(e,o,O,v?.signal)})));if(A)return;let E=z.flatMap(O=>O.status==="fulfilled"?[O.value]:[]);E.length>0&&(s(O=>E.reduce((ce,pe)=>pt(ce,pe.invocation),O)),x(void 0));let ue=z.find(O=>O.status==="rejected");ue&&x(ue.reason instanceof Error?ue.reason.message:String(ue.reason)),E.some(O=>!mt.has(O.invocation.status))?await f():A||(B=window.setTimeout(()=>{$()},Qt))};return B=window.setTimeout(()=>{$()},250),()=>{A=!0,B!==void 0&&window.clearTimeout(B),v?.abort()}},[y,e,f,o]);let U=V(async(n,A,B,v,$)=>{I.current+=1;let z=await e.invoke(o,n,A,B,v,$);return I.current+=1,s(E=>pt(E,z)),z},[e,o]),D=G(()=>({api:e,error:C,invoke:U,listing:m,refresh:f,runId:o}),[e,C,U,m,f,o]),_=G(()=>({runId:o,source:(n,A)=>ot(e,n,A)}),[e,o]);return u(ca.Provider,{value:D,children:u(Zt.Provider,{value:_,children:a})})}var xt=e=>ia(e.runView),Ne=(e,a)=>{let t=W(e.runView);if(!t)return;let o=new Set(a.invocations.filter(r=>mt.has(r.status)).map(r=>r.id));return t.actions.find(r=>r.owner===Xt&&r.status==="pending"&&r.askedBy===t.ownerId&&r.parameters.source===X&&o.has(r.parameters.invocationId))};function Ve({action:e,session:a}){let t=J(),[o,r]=F(!1),[d,s]=F(),m=async C=>{if(!o){r(!0),s(void 0);try{await Kt(a.session.id,e.id,C)}catch(x){s(x instanceof Error?x.message:String(x)),r(!1)}}};return p("section",{"aria-label":"Host confirmation",className:"grid flex-none gap-2 border-b border-border-soft bg-warning-soft px-workspace-inset py-2.5","data-slot":"host-confirmation",children:[p("header",{className:"grid gap-0.5",children:[u("strong",{className:"text-[0.72rem] text-foreground",children:"Confirmation in the host"}),u("span",{className:"text-xs text-muted-foreground",children:"The app cannot answer this decision itself."})]}),o?u("p",{className:"text-xs text-muted-foreground",children:"Processing answer"}):u(Jt,{onAnswer:t.can("runs.write")?C=>{m(C)}:void 0,question:zt(e.payload)??{question:e.title,options:[],multi:!1},text:e.title}),d&&u("p",{className:"text-xs text-destructive",role:"alert",children:d})]})}var jt=e=>e.handle?`@${e.handle}`:e.actorId;function It({active:e,navigation:a,selection:t,session:o}){let{api:r,error:d,listing:s,refresh:m,runId:C}=j(),x=typeof t=="string"?t:void 0,I=s?.tools.find(f=>f.name===x);return!s&&!d?p("div",{className:"flex h-full items-center justify-center gap-2.5 text-sm text-muted-foreground",children:[u(ie,{"aria-hidden":!0,"aria-label":void 0,role:void 0}),u("span",{children:"Loading functions"})]}):s?x&&!I?p(Ae,{children:[p(ke,{children:[u(ye,{children:u(Te,{})}),u(Re,{children:"Function no longer available"}),u(Pe,{children:"The selected actor function is no longer installed in this run."})]}),u(He,{children:u(Z,{onClick:()=>a.openTab(Be,null),variant:"outline",children:"To overview"})})]}):I?p("div",{className:"flex h-full min-h-0 flex-col",children:[p("header",{className:$t,children:[u(Z,{"aria-label":"Back to function overview",onClick:()=>a.openTab(Be,null),size:"icon-sm",title:"Back to function overview",variant:"outline",children:u(Se,{})}),p("span",{className:"grid min-w-0 gap-px",children:[u("strong",{className:"truncate text-[0.82rem] font-semibold",title:I.name,children:I.name}),p("small",{className:"truncate text-xs text-muted-foreground",children:["Function of @",I.actorHandle]})]})]}),p("div",{className:"flex min-h-0 flex-col gap-[22px] overflow-y-auto px-workspace-inset pt-[18px] pb-7",children:[p("div",{className:"grid grid-cols-[42px_minmax(0,1fr)] items-start gap-3",children:[u("span",{className:re(nt,"size-[42px] bg-accent"),children:u(Te,{size:22})}),p("div",{children:[u("h2",{className:"text-[1.05rem] text-foreground",children:I.name}),u("p",{className:"mt-1 text-[0.74rem] leading-[1.45] text-muted-foreground",children:I.description})]})]}),p("section",{children:[u("h3",{className:ct,children:"Available to"}),u("div",{className:"flex flex-wrap gap-1.5",children:I.targets.map(f=>u("span",{className:"rounded-full bg-primary/9 px-2 py-1 text-xs text-foreground",children:jt(f)},f.actorId))})]}),p("section",{children:[u("h3",{className:ct,children:"Parameter"}),e&&u(Ee,{detail:!0,session:o,tool:I},`${C}:${I.actorId}:${I.functionId}:${I.revision}`)]}),u(na,{api:r,moduleId:I.moduleId,revision:I.revision,runId:C}),u("dl",{className:"grid grid-cols-2 gap-2",children:[{label:"Program",value:I.moduleId,title:void 0},{label:"Source hash",value:I.sourceHash.slice(0,12),title:I.sourceHash}].map(f=>p("div",{className:"grid gap-[3px] rounded-lg bg-foreground/4 px-2.5 py-2",children:[u("dt",{className:"text-[0.61rem] text-muted-foreground uppercase",children:f.label}),u("dd",{className:"truncate font-mono text-xs text-foreground",title:f.title,children:f.value})]},f.label))})]})]}):s.tools.length===0?u(Ae,{children:p(ke,{children:[u(ye,{children:u(Te,{})}),u(Re,{children:"No functions yet"}),u(Pe,{children:"Actor functions created by agents in this run appear here."})]})}):p("div",{className:"@container flex h-full min-h-0 flex-col gap-2 overflow-y-auto px-workspace-inset pt-3 pb-5 [scrollbar-width:thin]",children:[d&&u(we,{className:"mb-1",role:"status",variant:"destructive",children:d}),s.tools.map(f=>p("button",{className:"grid w-full cursor-pointer grid-cols-[34px_minmax(0,1fr)_auto_14px] items-center gap-2.5 rounded-lg border border-border bg-card px-[11px] py-2.5 text-left text-foreground transition-[background-color,border-color] hover:border-[color-mix(in_srgb,var(--primary)_52%,var(--border))] hover:bg-[color-mix(in_srgb,var(--primary)_7%,var(--card))] focus-visible:border-[color-mix(in_srgb,var(--primary)_52%,var(--border))] focus-visible:bg-[color-mix(in_srgb,var(--primary)_7%,var(--card))] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary/52 @max-[470px]:grid-cols-[34px_minmax(0,1fr)_14px]",onClick:()=>a.openTab(Be,f.name),type:"button",children:[u("span",{className:nt,children:u(Te,{size:20})}),p("span",{className:"grid min-w-0 gap-0.5",children:[u("strong",{className:"truncate text-[0.8rem] font-semibold",children:f.name}),u("small",{className:"truncate text-[0.69rem] text-muted-foreground",children:f.description})]}),p(Oe,{className:"max-w-[132px] truncate @max-[470px]:hidden",variant:"secondary",children:[f.targets.length," ",f.targets.length===1?"agent":"agents"]}),u(Yt,{})]},f.name))]}):p(Ae,{children:[p(ke,{children:[u(ye,{children:u(Te,{})}),u(Re,{children:"Functions could not be loaded"}),u(Pe,{children:d})]}),u(He,{children:u(Z,{onClick:()=>{m()},variant:"outline",children:"Retry"})})]})}function gt(){let{listing:e}=j();return e&&e.tools.length>0?u(Oe,{variant:"secondary",children:e.tools.length}):null}function Te({size:e=28}){return p("svg",{"aria-hidden":!0,fill:"none",height:e,stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.6",viewBox:"0 0 24 24",width:e,children:[u("path",{d:"M14.5 6.5 17.5 3.5l3 3-3 3"}),u("path",{d:"m9.5 17.5-3 3-3-3 3-3"}),u("path",{d:"M13 5H9a4 4 0 0 0-4 4v5.5M11 19h4a4 4 0 0 0 4-4V9.5"})]})}function Yt(){return u("svg",{"aria-hidden":!0,fill:"none",height:"14",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.8",viewBox:"0 0 24 24",width:"14",children:u("path",{d:"m9 18 6-6-6-6"})})}var pa=l("@ragents/web/run-panel/input-bridge","hostInputEnabled");var ma=l("@ragents/web/run-panel/input-bridge","isRunPanelKeyboardMessage");var La=l("@ragents/web/run-panel/input-bridge","relayFrameInput");var xa=l("@ragents/web/theme","useResolvedTheme");var Ia=l("@ragents/web/api","sendActorMessage");var ga=l("@ragents/engine/src/http/contracts","actorByHandle");var Ca=l("@ragents/web/actor-conversation","actorChatMessages");var ha=l("@ragents/web/chat/chat-target","programChatNotice");var Ge=(e,a)=>{let t=W(e.runView);if(!t||t.id!==e.session.id)throw new Error("The run view for this chat is not available yet");let o=a==="primary"?t.actors.find(r=>r.id===t.primaryActorId):ga(t.actors,a);if(!o||o.kind==="human"){let r=t.actors.filter(d=>d.kind!=="human").map(d=>`@${d.handle}`).join(", ");throw new Error(`The chat target is not available. Allowed are primary and: ${r||"no actors yet"}`)}return{view:t,actor:o}},Sa=(e,a)=>{try{let{view:t,actor:o}=Ge(e,a),r=o.id===t.primaryActorId,d=o.kind==="script"?ha:e.conversationError??(e.connected?o.lifecycle?.kind==="stopped"?`@${o.handle} stopped: ${o.lifecycle.reason}. It accepts no input until it is restarted`:void 0:"The connection to the run is interrupted");return{owner:o.id,messages:Ca(t,o,e.messages,e.actorConversations?.[o.id]),running:r?e.running:o.lifecycle?.kind==="running",...o.kind==="script"?{readOnly:!0}:{},...d?{error:d}:{}}}catch(t){return{messages:[],running:!1,error:t instanceof Error?t.message:String(t)}}};var wa=l("@ragents/web/chat/useAttachmentCapabilities","getAttachmentCapabilities");var eo=new Set(["queued","running"]),ao=512,Aa=e=>JSON.stringify(e);function Ct({api:e,app:a,invoke:t,pendingConfirmationInvocationId:o,runId:r,session:d}){let s=J(),m=xa(),C=M(m);C.current=m;let x=M(s.can("runs.write"));x.current=s.can("runs.write");let I=M(null),f=M(void 0),L=M(0),S=M(!1),y=M(a),U=M(d);U.current=d;let D=M(new Map),_=M(new Map),n=M(new Set),A=M(""),B=M(new Map),[v,$]=F(!1),[z,E]=F(),[ue,Me]=F(),[O,ce]=F([]);y.current=a;let pe=G(()=>e.frameUrl(r,a.id,a.revision),[e,a.id,a.revision,r]),Fe=G(()=>crypto.randomUUID().replaceAll("-",""),[pe]),ne=V(()=>{L.current+=1,S.current=!1,f.current?.close(),f.current=void 0,D.current.clear(),_.current.clear(),$(!1),ce([])},[]),De=V((c,i,w)=>{let b=L.current,T=R=>{if(b!==L.current||c!==f.current||!D.current.has(i))return;let h=Sa(U.current,i),Y={...h,...R,readOnly:h.readOnly===!0||!x.current},g=JSON.stringify(Y);w===void 0&&D.current.get(i)===g||(D.current.set(i,g),c.postMessage({type:Ea,version:q,actor:i,snapshot:Y,...w?{requestId:w}:{}}))};try{let R=U.current,h=Ge(R,i).actor,Y=JSON.stringify([R.session.id,h.id,h.execution?.driver]),g=_.current.get(Y);if(!g){let H=wa(R.session.id,h.id).then(se=>({attachmentCapabilities:se}),se=>({attachmentCapabilitiesError:se instanceof Error?se.message:String(se)}));g={pending:H},_.current.set(Y,g);let Xe=g;H.then(se=>{Xe.result=se})}T(g.result??{attachmentCapabilitiesError:"Checking model capabilities ..."}),g.result||g.pending.then(T)}catch(R){T({attachmentCapabilitiesError:R instanceof Error?R.message:String(R)})}},[]),Q=V((c,i,w)=>{c.postMessage({type:Ha,version:q,...i?{requestId:i}:{},message:w})},[]),ka=V(async(c,i,w,b)=>{if(!(w!==L.current||i!==f.current)){Me(void 0),ce(T=>[...T,c.requestId]);try{if(!x.current)throw new Error("You have read-only access to this actor view.");let T=await t(b.id,b.revision,c.actionId,c.requestId,c.input);if(w!==L.current||i!==f.current)return;B.current.set(T.id,Aa(T)),i.postMessage({type:Ye,version:q,requestId:c.requestId,invocation:T})}catch(T){if(w!==L.current||i!==f.current)return;let R=T instanceof Error?T.message:String(T);Me(R),Q(i,c.requestId,R)}finally{w===L.current&&i===f.current&&ce(T=>T.filter(R=>R!==c.requestId))}}},[t,Q]),ve=V((c,i)=>{let w=y.current;c.postMessage({type:Oa,version:q,...i?{requestId:i}:{},state:w.state??null})},[]),ya=V((c,i,w,b)=>{if(w!==L.current||i!==f.current||La(window,c,g=>{w===L.current&&i===f.current&&i.postMessage(g)}))return;let T=c;if(T?.type===va&&T.version===q){S.current=!0,E(void 0),$(!0);return}let R=Va(c);if(!R.ok){Q(i,R.requestId,R.error);return}let{request:h}=R;if(n.current.has(h.requestId)){Q(i,h.requestId,"This requestId has already been used");return}if(n.current.add(h.requestId),n.current.size>ao){let g=n.current.values().next().value;g!==void 0&&n.current.delete(g)}if(h.type===ea){D.current.set(h.actor,""),De(i,h.actor,h.requestId);return}if(h.type===aa){D.current.delete(h.actor),i.postMessage({type:ta,version:q,requestId:h.requestId});return}if(h.type===Le){(async()=>{try{if(!x.current)throw new Error("You have read-only access to this chat.");let g=U.current,H=Sa(g,h.actor);if(H.error)throw new Error(H.error);let{actor:Xe}=Ge(g,h.actor);await Ia(g.session.id,Xe.id,h.text,h.attachments),w===L.current&&i===f.current&&i.postMessage({type:ta,version:q,requestId:h.requestId})}catch(g){w===L.current&&i===f.current&&Q(i,h.requestId,g instanceof Error?g.message:String(g))}})();return}if(h.type===Ue){ve(i,h.requestId);return}if(!b.actions.find(g=>g.id===h.actionId)){Q(i,h.requestId,"The requested app action is not installed");return}ka(h,i,w,b)},[ka,Q,De,ve]),We=V((c,i)=>{if(f.current){c.close();return}ne();let w=L.current;f.current=c,c.onmessage=b=>ya(b.data,c,w,i),c.onmessageerror=()=>{w===L.current&&c===f.current&&Q(c,void 0,"The app sent an unreadable message")},c.start(),n.current=new Set,A.current=JSON.stringify(i.state??null),B.current=new Map(i.invocations.map(b=>[b.id,Aa(b)])),c.postMessage({type:qa,version:q,theme:C.current,hostInput:pa(window),app:{id:i.id,actorId:i.actorId,actorHandle:i.actorHandle,title:i.title,description:i.description,actions:i.actions},actor:{id:i.actorId,handle:i.actorHandle},state:i.state??null,invocations:i.invocations}),E(void 0)},[ne,ya,Q]);ra(()=>{let c=I.current;if(!c)return;ne(),Me(void 0),E(void 0);let i=y.current,w=!1,b,T=g=>{w?We(g,i):b=g},R=g=>{let H=g.data;if(g.source===c.contentWindow&&g.origin==="null"&&H?.type==="ragents.app.escape"&&H.version===q&&H.token===Fe){window.dispatchEvent(new KeyboardEvent("keydown",{...ma(H.keyboard)?H.keyboard.event:{key:"Escape"},bubbles:!0,cancelable:!0}));return}if(!(g.source!==c.contentWindow||g.origin!=="null"||H?.type!==Da||H.version!==q||H.token!==Fe||g.ports.length!==1)){if(b||f.current){g.ports[0].close();return}T(g.ports[0])}},h=()=>{if(!w){if(w=!0,b){let g=b;b=void 0,We(g,i)}return}b?.close(),b=void 0,ne(),E("The app left its installed page and was disconnected.")};window.addEventListener("message",R),c.addEventListener("load",h),c.src=`${pe}#ragentsBridge=${encodeURIComponent(Fe)}`;let Y=window.setTimeout(()=>{S.current||E("The app did not open a valid host bridge.")},5e3);return()=>{window.clearTimeout(Y),window.removeEventListener("message",R),c.removeEventListener("load",h),b?.close(),ne()}},[We,Fe,ne,pe]),N(()=>{v&&f.current?.postMessage({type:Ua,version:q,theme:m})},[v,m]),N(()=>{if(!v)return;let c=JSON.stringify(a.state??null);if(c!==A.current){A.current=c;let i=f.current;i&&ve(i)}a.invocations.forEach(i=>{let w=Aa(i);B.current.get(i.id)!==w&&(B.current.set(i.id,w),f.current?.postMessage({type:Ye,version:q,invocation:i}))})},[a.invocations,a.state,v,ve]),N(()=>{if(!(!v||!f.current))for(let c of D.current.keys())De(f.current,c)},[v,De,d]);let de=it(a),_e=a.invocations.filter(c=>eo.has(c.status)),Ra=_e.find(c=>c.id===o),ba=Ra?a.actions.find(c=>c.id===Ra.actionId):void 0,ze=z?{tone:"error",title:"App disconnected",detail:z}:O.length>0?{tone:"running",title:"Starting action",detail:`${O.length} request(s)`}:ba?{tone:"confirm",title:"Waiting for your confirmation",detail:ba.label}:_e.length>0?{tone:"running",title:"Action running",detail:_e.map(c=>a.actions.find(i=>i.id===c.actionId)?.label.trim()||(s.can("runs.inspect")?c.actionId:"")).filter(Boolean).join(", ")}:ue?{tone:"error",title:"Action failed",detail:ue}:de?.status==="failed"?{tone:"error",title:"Last action failed",detail:de.error}:de?.status==="cancelled"?{tone:"muted",title:"Last action cancelled",detail:de.actionId}:de?.status==="succeeded"?{tone:"success",title:"Last action completed",detail:de.output.at(-1)??de.actionId}:v?void 0:{tone:"muted",title:"Loading app",detail:"Bridge not connected yet"},qe=ze&&ze.tone!=="success"?ze:void 0;return p("div",{className:"flex min-h-0 flex-1 flex-col",children:[u("div",{"aria-live":"polite",role:"status",className:"order-1 grid h-7 min-w-0 flex-[0_0_28px] grid-cols-[auto_minmax(0,1fr)] items-center gap-1.5 overflow-hidden px-workspace-inset py-1 text-xs text-muted-foreground",children:qe&&p(be,{children:[u("strong",{className:"text-[0.63rem] font-semibold whitespace-nowrap text-foreground",children:qe.title}),u("span",{className:"truncate",title:qe.detail,children:qe.detail})]})}),u("div",{className:"relative flex min-h-0 flex-1 overflow-hidden bg-transparent",children:u("iframe",{allow:"camera 'none'; geolocation 'none'; microphone 'none'",className:"absolute inset-0 h-full w-full min-h-0 min-w-0 border-0 bg-transparent",ref:I,referrerPolicy:"no-referrer",sandbox:"allow-scripts allow-forms allow-downloads","aria-label":a.title,title:""})})]})}function ht({actor:e,session:a}){let t=J().can("runs.inspect"),{listing:o}=j(),r=la(e);if(!t||r.lifecycle?.kind==="stopped")return null;let d=o?.tools.filter(s=>s.card&&s.actorId===r.id)??[];return d.length===0?null:u("section",{className:"grid min-w-0 gap-[9px]",children:d.map(s=>p("article",{"aria-label":s.name,className:"min-w-0",children:[u("strong",{children:s.name}),u(Ee,{session:a,tool:s})]},`${a.session.id}:${s.actorId}:${s.functionId}:${s.revision}`))})}var St=e=>xt(e).flatMap(a=>[{id:a.id,title:a.title,visible:a.app.visible!==!1,anchorActorId:a.actorId,data:{actorId:a.actorId,actorHandle:a.actorHandle},entity:{type:"run-app",id:a.id}}]);function wt({definition:e,session:a}){let{api:t,invoke:o,listing:r,runId:d}=j(),s=r?.apps.find(I=>I.id===e.id),m=s?Ne(a,s):void 0,C=e.title??e.id,x=s?u(Ct,{api:t,app:s,invoke:o,pendingConfirmationInvocationId:m?.parameters.invocationId,runId:d,session:a}):p("div",{className:"flex flex-1 items-center justify-center gap-2 text-[0.7rem] text-muted-foreground",children:[u(ie,{"aria-hidden":!0,"aria-label":void 0,role:void 0}),u("span",{children:"Loading actor view"})]});return u("article",{"aria-label":C,className:"flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden",children:p("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden [&>[data-slot=host-confirmation]]:max-h-[65%] [&>[data-slot=host-confirmation]]:flex-[0_1_auto] [&>[data-slot=host-confirmation]]:overflow-auto",children:[m&&u(Ve,{action:m,session:a},m.id),x]})})}var to="ragents.actor-programs";function oo(){return p("svg",{"aria-hidden":!0,fill:"none",height:"15",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.7",viewBox:"0 0 24 24",width:"15",children:[u("path",{d:"M14.5 6.5 17.5 3.5l3 3-3 3"}),u("path",{d:"m9.5 17.5-3 3-3-3 3-3"}),u("path",{d:"M13 5H9a4 4 0 0 0-4 4v5.5M11 19h4a4 4 0 0 0 4-4V9.5"})]})}var ro=(e,a)=>{let t=Wa(a);function o({children:r,session:d}){return u(Lt,{api:t,session:d,children:r})}return{...e,needsRunView:!0,SessionProvider:o,cardSections:[{id:"ragents.actor-programs.tools",order:400,Section:ht}],surfaceElements:[{id:"ragents.actor-programs.apps",order:400,select:St,Element:wt}],workspaceTabs:[{readRight:"runs.inspect",id:Be,label:"Functions",order:251,Icon:oo,Panel:It,Badge:gt}]}},Pa={id:to},Cl={...Pa,activate:e=>ro(Pa,Ke(Pa.id,e))};export{to as ACTOR_PROGRAMS_PLUGIN_ID,Cl as webPlugin};
2
2
  /*! Bundled license information:
3
3
 
4
4
  lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs:
@@ -14,8 +14,6 @@ lucide-react/dist/esm/context.mjs:
14
14
  lucide-react/dist/esm/Icon.mjs:
15
15
  lucide-react/dist/esm/createLucideIcon.mjs:
16
16
  lucide-react/dist/esm/icons/arrow-left.mjs:
17
- lucide-react/dist/esm/icons/layout-grid.mjs:
18
- lucide-react/dist/esm/icons/x.mjs:
19
17
  lucide-react/dist/esm/lucide-react.mjs:
20
18
  (**
21
19
  * @license lucide-react v1.46.0 - ISC