@xopcai/xopc 0.0.107 → 0.0.108

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 (234) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  3. package/dist/extensions/feishu/src/workflow-progress.js +1 -1
  4. package/dist/extensions/telegram/src/adapters/streaming-adapter.js +1 -1
  5. package/dist/extensions/telegram/src/inbound-processor.js +1 -1
  6. package/dist/extensions/telegram/src/plugin.js +1 -1
  7. package/dist/extensions/telegram/src/routing-integration.js +2 -2
  8. package/dist/extensions/telegram/src/update-offset-store.js +1 -1
  9. package/dist/extensions/telegram/src/workflow-progress.js +1 -1
  10. package/dist/extensions/telegram/xopc.extension.json +1 -1
  11. package/dist/extensions/weixin/src/api/api.js +2 -2
  12. package/dist/extensions/weixin/src/auth/accounts.js +1 -1
  13. package/dist/extensions/weixin/src/cdn/upload.js +1 -1
  14. package/dist/extensions/weixin/src/media/data-url.js +1 -1
  15. package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
  16. package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
  17. package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
  18. package/dist/extensions/weixin/src/plugin.js +1 -1
  19. package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
  20. package/dist/extensions/weixin/src/workflow-progress.js +1 -1
  21. package/dist/gateway/static/root/assets/{agents-BXg2_mE4.js → agents-56kCGHdV.js} +1 -1
  22. package/dist/gateway/static/root/assets/{apps-page-CJqQ-7Ss.js → apps-page-Dd88J47r.js} +1 -1
  23. package/dist/gateway/static/root/assets/{channels-settings-DvMZ6NAd.js → channels-settings-Ckyvnvml.js} +1 -1
  24. package/dist/gateway/static/root/assets/{cron-page-BPBlvSl5.js → cron-page-DKo2ZdRA.js} +1 -1
  25. package/dist/gateway/static/root/assets/{dist-CZh0c-s8.js → dist-dmxWdtPG.js} +1 -1
  26. package/dist/gateway/static/root/assets/{extension-debug-page-DyJQR0SR.js → extension-debug-page-iGpG-vpp.js} +1 -1
  27. package/dist/gateway/static/root/assets/{extension-page-CDTuUr9B.js → extension-page-I7-3uHiD.js} +1 -1
  28. package/dist/gateway/static/root/assets/{extension-settings-page-DszZ8zHD.js → extension-settings-page-BisnHG7r.js} +1 -1
  29. package/dist/gateway/static/root/assets/{heartbeat-config-api-U10wnPdc.js → heartbeat-config-api-tbWAFPN8.js} +1 -1
  30. package/dist/gateway/static/root/assets/{index-DBc-bVOQ.js → index-slwUkhxH.js} +3 -3
  31. package/dist/gateway/static/root/assets/{logs-page-B6js8Bfi.js → logs-page-CCZiXrWu.js} +1 -1
  32. package/dist/gateway/static/root/assets/{note-detail-page-DFzAXR35.js → note-detail-page-BYbw2GLl.js} +1 -1
  33. package/dist/gateway/static/root/assets/{note-time-DOiSU-10.js → note-time-Cya72Lte.js} +1 -1
  34. package/dist/gateway/static/root/assets/{notes-page-DAuZJMT8.js → notes-page-DrAO7VRK.js} +1 -1
  35. package/dist/gateway/static/root/assets/{schema-form-zM36dvbY.js → schema-form-a6UJCK55.js} +1 -1
  36. package/dist/gateway/static/root/assets/{sessions-page-CAsV03BY.js → sessions-page-DNU3Ymvz.js} +1 -1
  37. package/dist/gateway/static/root/assets/{settings-advanced-gate-BCvObK1y.js → settings-advanced-gate-CyEJYTbw.js} +1 -1
  38. package/dist/gateway/static/root/assets/{settings-form-section-Bvl-RInc.js → settings-form-section-DpHo2ecA.js} +1 -1
  39. package/dist/gateway/static/root/assets/{settings-page-DuCJDd74.js → settings-page-YRwe4q56.js} +1 -1
  40. package/dist/gateway/static/root/assets/{share-preview-page-rpL4DDTO.js → share-preview-page-B7rf4QB4.js} +1 -1
  41. package/dist/gateway/static/root/assets/{skills-page--BioR9J4.js → skills-page-we1NAt7u.js} +1 -1
  42. package/dist/gateway/static/root/assets/{voice-api-key-field-D2RJaoj_.js → voice-api-key-field-Btagks_B.js} +1 -1
  43. package/dist/gateway/static/root/assets/{workflow-page.utils-BxacHYen.js → workflow-page.utils-DvzJKs6W.js} +1 -1
  44. package/dist/gateway/static/root/assets/{workflows-page-B1B-est-.js → workflows-page-BgOAgCOG.js} +1 -1
  45. package/dist/gateway/static/root/index.html +1 -1
  46. package/dist/package.js +1 -1
  47. package/dist/src/agent/agent-manager.js +7 -7
  48. package/dist/src/agent/agent-scope.js +1 -1
  49. package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -1
  50. package/dist/src/agent/context/workspace-seed.js +2 -2
  51. package/dist/src/agent/context/workspace-state.js +1 -1
  52. package/dist/src/agent/goals/goal-run-store.js +4 -4
  53. package/dist/src/agent/goals/persistent-goal-service.js +1 -1
  54. package/dist/src/agent/goals/post-turn.js +2 -2
  55. package/dist/src/agent/image/load-image-media.js +2 -2
  56. package/dist/src/agent/ipc/bus.js +1 -1
  57. package/dist/src/agent/ipc/inbox.js +2 -2
  58. package/dist/src/agent/ipc/socket.js +1 -1
  59. package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
  60. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  61. package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
  62. package/dist/src/agent/mcp/mcp-transport.js +1 -1
  63. package/dist/src/agent/memory/builtin-memory-store.js +1 -1
  64. package/dist/src/agent/memory/dreaming/deep-promotion.js +1 -1
  65. package/dist/src/agent/memory/dreaming/events.js +1 -1
  66. package/dist/src/agent/memory/dreaming/last-run.js +1 -1
  67. package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
  68. package/dist/src/agent/memory/dreaming/preview.js +1 -1
  69. package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
  70. package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
  71. package/dist/src/agent/memory/dreaming/utils.js +1 -1
  72. package/dist/src/agent/memory/memory-flush.js +1 -1
  73. package/dist/src/agent/memory/plugin-discovery.js +1 -1
  74. package/dist/src/agent/models/manager.js +1 -1
  75. package/dist/src/agent/prompt/service-prompt-builder.js +2 -2
  76. package/dist/src/agent/reply/post-compaction-context.js +1 -1
  77. package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
  78. package/dist/src/agent/sandbox/path-policy.js +2 -2
  79. package/dist/src/agent/service.js +4 -4
  80. package/dist/src/agent/session/session-inspector.js +1 -1
  81. package/dist/src/agent/skills/config.js +1 -1
  82. package/dist/src/agent/skills/hub-hash.js +2 -2
  83. package/dist/src/agent/skills/hub-lock.js +1 -1
  84. package/dist/src/agent/skills/hub-pull.js +2 -2
  85. package/dist/src/agent/skills/index.js +1 -1
  86. package/dist/src/agent/skills/managed-store.js +1 -1
  87. package/dist/src/agent/skills/scanner.js +1 -1
  88. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  89. package/dist/src/agent/skills/skill-manager.js +1 -1
  90. package/dist/src/agent/starter-agents.js +1 -1
  91. package/dist/src/agent/tools/dreaming-tool.js +1 -1
  92. package/dist/src/agent/tools/factory.js +1 -1
  93. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  94. package/dist/src/agent/tools/send-media.js +1 -1
  95. package/dist/src/agent/tools/skill-manage-tool.js +1 -1
  96. package/dist/src/agent/tools/workflow-tool.js +1 -1
  97. package/dist/src/agent/tools/write.js +1 -1
  98. package/dist/src/agent/workflow/catalog.js +1 -1
  99. package/dist/src/auth/credentials.js +3 -3
  100. package/dist/src/auth/profiles/store.js +2 -2
  101. package/dist/src/auth/sync-provider-auth.js +1 -1
  102. package/dist/src/browser/cache-dir-policy.js +1 -1
  103. package/dist/src/browser/cdp-local-launcher.js +2 -2
  104. package/dist/src/browser/providers/browser-ext-install.js +3 -3
  105. package/dist/src/browser/providers/cloakbrowser.js +4 -4
  106. package/dist/src/browser/providers/playwright-doctor.js +1 -1
  107. package/dist/src/browser/stealth.js +1 -1
  108. package/dist/src/channels/outbound/persist-store.js +1 -1
  109. package/dist/src/channels/pairing/allow-from-file.js +1 -1
  110. package/dist/src/channels/pairing/pairing-store.js +2 -2
  111. package/dist/src/chat-commands/agent-edit.js +2 -2
  112. package/dist/src/chat-commands/builtins/config.js +2 -2
  113. package/dist/src/chat-commands/context.js +1 -1
  114. package/dist/src/cli/commands/config.js +1 -1
  115. package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
  116. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  117. package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
  118. package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -1
  119. package/dist/src/cli/commands/extension-create.js +1 -1
  120. package/dist/src/cli/commands/extension-dev.js +1 -1
  121. package/dist/src/cli/commands/extension-marketplace.js +2 -2
  122. package/dist/src/cli/commands/extension-pack.js +2 -2
  123. package/dist/src/cli/commands/extension.js +2 -2
  124. package/dist/src/cli/commands/gateway/logs.js +1 -1
  125. package/dist/src/cli/commands/image.js +1 -1
  126. package/dist/src/cli/commands/init.js +3 -3
  127. package/dist/src/cli/commands/models.js +1 -1
  128. package/dist/src/cli/commands/onboard/model.js +2 -2
  129. package/dist/src/cli/utils/init-workspace-core.js +2 -2
  130. package/dist/src/config/agent-profile.js +1 -1
  131. package/dist/src/config/agent-typed-models.js +1 -1
  132. package/dist/src/config/gateway-bind.js +1 -1
  133. package/dist/src/config/index.js +5 -5
  134. package/dist/src/config/loader.js +2 -2
  135. package/dist/src/config/models-json.js +2 -2
  136. package/dist/src/config/paths-state.js +1 -1
  137. package/dist/src/config/paths.js +4 -1
  138. package/dist/src/config/paths.js.map +1 -1
  139. package/dist/src/config/profile.js +2 -2
  140. package/dist/src/config/workspace-path.js +1 -1
  141. package/dist/src/cron/executor.js +2 -2
  142. package/dist/src/cron/persistence.js +1 -1
  143. package/dist/src/daemon/constants.js +1 -1
  144. package/dist/src/daemon/install-plan.js +2 -2
  145. package/dist/src/daemon/launchd.js +2 -2
  146. package/dist/src/daemon/schtasks.js +2 -2
  147. package/dist/src/daemon/systemd.js +2 -2
  148. package/dist/src/extensions/bundle-mcp.js +1 -1
  149. package/dist/src/extensions/discover-extensions.js +1 -1
  150. package/dist/src/extensions/health.js +1 -1
  151. package/dist/src/extensions/loader.js +1 -1
  152. package/dist/src/extensions/lockfile.js +2 -2
  153. package/dist/src/extensions/update.js +1 -1
  154. package/dist/src/gateway/agents-admin.js +2 -2
  155. package/dist/src/gateway/file-path-classifier.js +2 -2
  156. package/dist/src/gateway/heartbeat/service.js +1 -1
  157. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  158. package/dist/src/gateway/hono/lib/extension-store.js +2 -2
  159. package/dist/src/gateway/hono/lib/static-ui.js +2 -2
  160. package/dist/src/gateway/hono/oauth-async.js +1 -1
  161. package/dist/src/gateway/hono/oauth.js +1 -1
  162. package/dist/src/gateway/hono/routes/agents.js +1 -1
  163. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  164. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  165. package/dist/src/gateway/hono/routes/dreaming.js +1 -1
  166. package/dist/src/gateway/hono/routes/host-fs.js +2 -2
  167. package/dist/src/gateway/hono/routes/models.js +1 -1
  168. package/dist/src/gateway/hono/routes/shares.js +1 -1
  169. package/dist/src/gateway/hono/routes/workflows.js +1 -1
  170. package/dist/src/gateway/hono/routes/workspace.js +2 -2
  171. package/dist/src/gateway/lock.js +3 -3
  172. package/dist/src/gateway/ports.js +1 -1
  173. package/dist/src/gateway/service/agent-runner.js +2 -2
  174. package/dist/src/gateway/service/marketplace-service.js +2 -2
  175. package/dist/src/gateway/service.js +2 -2
  176. package/dist/src/gateway/workspace-fs-file-list.js +1 -1
  177. package/dist/src/heartbeat/index.js +1 -1
  178. package/dist/src/infra/brew.js +1 -1
  179. package/dist/src/infra/package-json.js +1 -1
  180. package/dist/src/infra/package-update-steps.js +1 -1
  181. package/dist/src/infra/path-env.js +2 -2
  182. package/dist/src/infra/restart.js +2 -2
  183. package/dist/src/infra/stable-node-path.js +1 -1
  184. package/dist/src/infra/update-check.js +1 -1
  185. package/dist/src/infra/update-global.js +1 -1
  186. package/dist/src/infra/update-lock.js +3 -3
  187. package/dist/src/infra/update-runner.js +1 -1
  188. package/dist/src/infra/update-startup.js +2 -2
  189. package/dist/src/infra/write-file-atomic.js +2 -2
  190. package/dist/src/media/store.js +1 -1
  191. package/dist/src/notes/agent-context.js +1 -1
  192. package/dist/src/notes/store.js +2 -2
  193. package/dist/src/project-trust/trust-store.js +2 -2
  194. package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
  195. package/dist/src/providers/index.js +2 -2
  196. package/dist/src/providers/model-registry.js +1 -1
  197. package/dist/src/session/init-session-turn.js +2 -2
  198. package/dist/src/session/resolve-session.js +3 -3
  199. package/dist/src/session/session-title.js +2 -2
  200. package/dist/src/session/store.js +2 -2
  201. package/dist/src/share/share-auto.js +2 -2
  202. package/dist/src/share/share-store.js +3 -3
  203. package/dist/src/share/share-thumbnail.js +2 -2
  204. package/dist/src/share/share-zip.js +1 -1
  205. package/dist/src/share/site-share-store.js +3 -3
  206. package/dist/src/share/site-static-serve.js +1 -1
  207. package/dist/src/storage/sqlite/connection.js +2 -2
  208. package/dist/src/storage/sqlite/memory-index-repository.js +2 -2
  209. package/dist/src/storage/sqlite/migrations/discover.js +1 -1
  210. package/dist/src/storage/sqlite/migrations/runner.js +1 -1
  211. package/dist/src/storage/sqlite/schema.js +1 -1
  212. package/dist/src/tui/backends/embedded-backend.js +1 -1
  213. package/dist/src/tui/clipboard-image.js +3 -3
  214. package/dist/src/tui/theme-manager.js +1 -1
  215. package/dist/src/tui/tui-command-formatters.js +3 -3
  216. package/dist/src/tui/tui-commands.js +2 -2
  217. package/dist/src/tui/tui-keybindings-file.js +1 -1
  218. package/dist/src/tui/tui-scoped-models.js +2 -2
  219. package/dist/src/tui/tui-settings.js +1 -1
  220. package/dist/src/tui/tui-startup-resources.js +1 -1
  221. package/dist/src/tui/tui.js +5 -5
  222. package/dist/src/tunnel/frpc-binary.js +3 -3
  223. package/dist/src/tunnel/frpc-config.js +1 -1
  224. package/dist/src/tunnel/frpc-extract.js +1 -1
  225. package/dist/src/tunnel/tunnel-state.js +1 -1
  226. package/dist/src/utils/logger/audit.js +1 -1
  227. package/dist/src/utils/logger/log-store.js +1 -1
  228. package/dist/src/utils/logger/rotation.js +1 -1
  229. package/dist/src/voice/tts/audio.js +1 -1
  230. package/dist/src/voice/tts/providers/edge-speech.js +2 -2
  231. package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
  232. package/dist/src/workflows/store/event-store.js +1 -1
  233. package/dist/src/workflows/store/run-store.js +1 -1
  234. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{i,o as a}from"./url-DQRqHuL-.js";import{i as o}from"./vendor-swr-BIWyz7Rc.js";import{t as s}from"./circle-check-C23XjkUj.js";import{t as c}from"./copy-Dv6d4Dvw.js";import{a as l}from"./fetch-CFdKBnE6.js";import{A as u,Ar as d,C as f,D as p,Do as m,Dr as h,E as g,Ea as _,Er as v,Fo as y,Gi as b,M as x,Nt as S,O as C,Or as w,Po as T,S as E,T as D,Ti as O,Tr as k,Ua as A,Ui as j,Vi as M,Vr as N,Zi as P,_ as ee,a as F,b as I,ba as te,bi as ne,d as L,ei as R,es as re,f as z,fa as B,fi as V,fo as H,g as U,h as W,hi as ie,i as ae,ia as G,ii as K,j as oe,ji as se,jr as ce,k as le,kr as q,m as ue,mo as de,ns as fe,o as pe,pi as J,r as me,ra as he,ro as ge,s as _e,u as ve,ua as ye,v as be,w as xe,x as Se,y as Ce,yo as we,zo as Te,zt as Ee}from"./index-DBc-bVOQ.js";import{a as De,c as Oe,d as ke,f as Ae,h as Y,i as je,l as Me,m as Ne,n as Pe,o as Fe,p as Ie,r as Le,s as X,t as Re,u as ze}from"./workflow-page.utils-BxacHYen.js";var Z=e(t(),1),Q=n(),Be=[`queued`,`running`,`succeeded`,`attention`],Ve=10080*60*1e3,He=new Set([`failed`,`timeout`,`cancelled`]);function Ue(e){return e.metadata?.sessionKey?.trim()||null}function We(e,t){return e.length<=t?e:`${e.slice(0,t-1)}…`}function Ge(e,t){if(!e||typeof e!=`object`)return null;let n=e;for(let e of t){let t=n[e];if(typeof t==`string`&&t.trim())return t.trim()}return null}function Ke(e,t=90){let n=e.metadata?.input?.goal?.trim()||(typeof e.metadata?.input?.payload==`string`?e.metadata.input.payload.trim():null)||Ge(e.metadata?.input?.payload,[`query`,`goal`,`prompt`,`input`,`message`])||Ge(e.metadata?.input?.variables,[`query`,`goal`,`prompt`,`input`,`message`]);return n?We(n,t):null}function qe(e,t=90){return Ke(e,t)??We(e.title?.trim()||e.definitionId,t)}function Je(e,t=44){return We(e.title?.trim()||e.definitionId,t)}function Ye(e,t){let n=t.trim().toLowerCase();return n?[Ke(e,500),e.title,e.definitionId,e.id].filter(Boolean).join(` `).toLowerCase().includes(n):!0}function Xe(e,t){let n=t.workflowFilterId.trim();return e.filter(e=>n&&e.definitionId!==n||!ze(e,t.triggerFilter??`all`)?!1:Ye(e,t.searchQuery))}function Ze(e){return e.completedAtMs??e.createdAtMs}function Qe(e,t){return t-Ze(e)<=Ve}function $e(e,t){return e.status===`queued`?`queued`:e.status===`running`?`running`:e.status===`succeeded`?Qe(e,t)?`succeeded`:null:He.has(e.status)?`attention`:null}function et(e,t){let n=[...t];return e===`queued`?n.sort((e,t)=>e.createdAtMs-t.createdAtMs):e===`running`?n.sort((e,t)=>(t.startedAtMs??t.createdAtMs)-(e.startedAtMs??e.createdAtMs)):n.sort((e,t)=>Ze(t)-Ze(e))}function tt(e,t){let n={queued:[],running:[],succeeded:[],attention:[]};for(let r of e){let e=$e(r,t);e&&n[e].push(r)}let r=et(`succeeded`,n.succeeded),i=r.length,a=r.slice(0,20),o=Math.max(0,i-20);return Be.map(e=>e===`succeeded`?{id:e,runs:a,totalInWindow:i,hiddenByCap:o}:{id:e,runs:et(e,n[e])})}var nt=new Map;function rt(e){let t=nt.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:`auto`}),nt.set(e,t)),t}function it(e,t,n){let r=Math.round((t-e)/1e3),i=rt(n);if(r<60)return i.format(-r,`second`);let a=Math.round(r/60);if(a<60)return i.format(-a,`minute`);let o=Math.round(a/60);if(o<48)return i.format(-o,`hour`);let s=Math.round(o/24);return i.format(-s,`day`)}function at(e){return e.status===`queued`||e.status===`running`}function ot(e){return e.status===`failed`||e.status===`timeout`||e.status===`cancelled`}var $=r(),st=(0,Z.memo)(function(e){let t=(0,Q.c)(65),{run:n,language:r,localeTag:i,nowMs:o,selected:s,onOpen:c,onOpenChat:l,onCancel:u,onRetry:d}=e,f=a(r).workflows,[p,m]=(0,Z.useState)(!1),h;t[0]===n?h=t[1]:(h=Ue(n),t[0]=n,t[1]=h);let g=!h,_;t[2]===n?_=t[3]:(_=at(n),t[2]=n,t[3]=_);let v=_,y=n.status===`running`||n.status===`queued`,b;t[4]!==n.metrics.agentCount||t[5]!==n.metrics.doneAgentCount?(b=n.metrics.agentCount>0?Math.round(n.metrics.doneAgentCount/n.metrics.agentCount*100):0,t[4]=n.metrics.agentCount,t[5]=n.metrics.doneAgentCount,t[6]=b):b=t[6];let x=b,S=n.metrics.errorAgentCount>0,C=n.startedAtMs??n.createdAtMs,w=je(v?o-C:n.metrics.durationMs),T=X(f.taskArtifacts,{count:n.metrics.artifactCount}),E;t[7]===n?E=t[8]:(E=qe(n),t[7]=n,t[8]=E);let D=E,k;t[9]===n?k=t[10]:(k=Je(n),t[9]=n,t[10]=k);let A=k,j;t[11]!==c||t[12]!==n?(j=()=>{c(n)},t[11]=c,t[12]=n,t[13]=j):j=t[13];let M=j,N;t[14]!==g||t[15]!==l||t[16]!==n?(N=()=>{g||l(n)},t[14]=g,t[15]=l,t[16]=n,t[17]=N):N=t[17];let P=N,ee=s?`border-accent/70 ring-1 ring-accent/30`:`border-edge`,F;t[18]===ee?F=t[19]:(F=J(`group relative overflow-hidden rounded-xl border bg-surface-panel p-3.5 transition-colors`,ee,`hover:border-edge-strong hover:bg-surface-hover/50`),t[18]=ee,t[19]=F);let I;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(I=J(`w-full text-left`,K.focusRingPanel),t[20]=I):I=t[20];let te;t[21]===D?te=t[22]:(te=(0,$.jsx)(`div`,{className:`line-clamp-2 text-sm font-semibold leading-5 text-fg`,children:D}),t[21]=D,t[22]=te);let ne;t[23]===A?ne=t[24]:(ne=(0,$.jsx)(`div`,{className:`mt-1 truncate text-[11px] font-medium text-fg-muted`,children:A}),t[23]=A,t[24]=ne);let L;t[25]!==te||t[26]!==ne?(L=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[te,ne]}),t[25]=te,t[26]=ne,t[27]=L):L=t[27];let R;t[28]===n.status?R=t[29]:(R=J(`shrink-0 rounded-full px-2 py-0.5 text-[10px] font-semibold shadow-sm`,ke(n.status)),t[28]=n.status,t[29]=R);let re;t[30]!==i||t[31]!==o||t[32]!==C?(re=it(C,o,i),t[30]=i,t[31]=o,t[32]=C,t[33]=re):re=t[33];let z;t[34]===re?z=t[35]:(z=(0,$.jsx)(`span`,{children:re}),t[34]=re,t[35]=z);let B=w===`—`?null:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,$.jsx)(`span`,{children:X(f.taskElapsed,{duration:w})})]}),U;t[36]!==z||t[37]!==B?(U=(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5 text-[11px] text-fg-subtle`,children:[z,B]}),t[36]=z,t[37]=B,t[38]=U):U=t[38];let W=n.metrics.artifactCount>0?(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 font-medium text-fg-muted`,children:T}):null,ie=s?(0,$.jsx)(`span`,{className:`font-medium text-accent-fg`,children:f.taskOpenDetails}):null,ae;t[39]!==W||t[40]!==ie?(ae=(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2 text-[11px] text-fg-subtle`,children:[W,ie]}),t[39]=W,t[40]=ie,t[41]=ae):ae=t[41];let G;t[42]===m?G=t[43]:(G=()=>m(lt),t[42]=m,t[43]=G);let oe;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(oe=(0,$.jsx)(H,{className:`size-4`,"aria-hidden":!0}),t[44]=oe):oe=t[44];let se;t[45]!==f.taskActionsAria||t[46]!==p||t[47]!==G?(se=(0,$.jsx)(V,{variant:`ghost`,className:`size-7 p-0 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100`,"aria-label":f.taskActionsAria,"aria-expanded":p,onClick:G,children:oe}),t[45]=f.taskActionsAria,t[46]=p,t[47]=G,t[48]=se):se=t[48];let ce;t[49]!==v||t[50]!==g||t[51]!==P||t[52]!==f.cancel||t[53]!==f.continueInChat||t[54]!==f.rerun||t[55]!==f.taskCloseMenu||t[56]!==p||t[57]!==u||t[58]!==d||t[59]!==n||t[60]!==m?(ce=p?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{type:`button`,className:`fixed inset-0 z-10 cursor-default`,"aria-label":f.taskCloseMenu,onClick:()=>m(!1)}),(0,$.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 min-w-36 rounded-lg border border-edge bg-surface-panel py-1 shadow-surface`,children:[(0,$.jsx)(ct,{label:f.continueInChat,disabled:g,onClick:()=>{m(!1),P()}}),v?(0,$.jsx)(ct,{label:f.cancel,tone:`danger`,onClick:()=>{m(!1),u(n.id)}}):null,ot(n)?(0,$.jsx)(ct,{label:f.rerun,onClick:()=>{m(!1),d(n.id)}}):null]})]}):null,t[49]=v,t[50]=g,t[51]=P,t[52]=f.cancel,t[53]=f.continueInChat,t[54]=f.rerun,t[55]=f.taskCloseMenu,t[56]=p,t[57]=u,t[58]=d,t[59]=n,t[60]=m,t[61]=ce):ce=t[61];let le;return t[62]!==se||t[63]!==ce?(le=(0,$.jsxs)(`div`,{className:`absolute right-2 top-2`,children:[se,ce]}),t[62]=se,t[63]=ce,t[64]=le):le=t[64],(0,$.jsxs)(`div`,{className:F,children:[(0,$.jsxs)(`button`,{type:`button`,onClick:M,"aria-label":`${f.taskOpenDetails}: ${D}`,"aria-current":s?`true`:void 0,className:I,children:[(0,$.jsxs)(`div`,{className:`pr-7`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-2`,children:[L,(0,$.jsx)(`span`,{className:R,children:f.status[n.status]??n.status})]}),U]}),y?(0,$.jsxs)(`div`,{className:`mt-2.5`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-[11px] text-fg-muted`,children:[(0,$.jsx)(`span`,{children:X(f.agentProgress,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount})}),(0,$.jsxs)(`span`,{children:[x,`%`]})]}),(0,$.jsx)(`div`,{className:`mt-1.5 h-1.5 overflow-hidden rounded-full bg-surface-hover`,children:(0,$.jsx)(`div`,{className:`h-full rounded-full bg-accent transition-all`,style:{width:`${x}%`}})})]}):null,ae,S?(0,$.jsxs)(`div`,{className:`mt-2 flex items-center gap-1 text-[11px] text-amber-700 dark:text-amber-300`,children:[(0,$.jsx)(O,{className:`size-3 shrink-0`,"aria-hidden":!0}),X(f.runRowErrorSummary,{count:n.metrics.errorAgentCount})]}):null]}),le]})});function ct(e){let t=(0,Q.c)(8),{label:n,disabled:r,tone:i,onClick:a}=e,o=r?`cursor-not-allowed text-fg-subtle`:`text-fg hover:bg-surface-hover`,s=i===`danger`&&!r&&`text-red-600 dark:text-red-300`,c;t[0]!==o||t[1]!==s?(c=J(`block w-full px-3 py-1.5 text-left text-xs`,o,s),t[0]=o,t[1]=s,t[2]=c):c=t[2];let l;return t[3]!==r||t[4]!==n||t[5]!==a||t[6]!==c?(l=(0,$.jsx)(`button`,{type:`button`,disabled:r,onClick:a,className:c,children:n}),t[3]=r,t[4]=n,t[5]=a,t[6]=c,t[7]=l):l=t[7],l}function lt(e){return!e}function ut(e,t){return t.boardColumns[e]}var dt=(0,Z.memo)(function(e){let t=(0,Q.c)(14),{column:n,language:r,localeTag:i,nowMs:o,selectedRunId:s,onOpenRun:c,onOpenRunChat:l,onCancelRun:u,onRetryRun:d}=e,f=a(r).workflows,[p,m]=(0,Z.useState)(!1),h=n.id===`succeeded`,g=h?5:n.runs.length,_;t[0]!==g||t[1]!==n.runs||t[2]!==p||t[3]!==h?(_=h&&!p?n.runs.slice(0,g):n.runs,t[0]=g,t[1]=n.runs,t[2]=p,t[3]=h,t[4]=_):_=t[4];let v=_,y=h&&n.runs.length>5&&!p,b=h&&p,x;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(x=J(`flex min-h-112 w-73 shrink-0 snap-center flex-col rounded-2xl border border-edge bg-surface-panel/40`),t[5]=x):x=t[5];let S;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsx)(`span`,{className:`size-2 rounded-full bg-accent`,"aria-hidden":!0}),t[6]=S):S=t[6];let C;t[7]===n.runs.length?C=t[8]:(C=(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2.5 py-1 text-xs font-semibold tabular-nums text-fg-muted`,children:n.runs.length}),t[7]=n.runs.length,t[8]=C);let w=v.length===0?(0,$.jsx)(`div`,{className:`flex min-h-32 items-center justify-center rounded-xl border border-dashed border-edge bg-surface-panel/40 px-4 py-6 text-center text-xs text-fg-subtle`,children:f.boardColumnEmpty}):v.map(e=>(0,$.jsx)(st,{run:e,language:r,localeTag:i,nowMs:o,selected:e.id===s,onOpen:c,onOpenChat:l,onCancel:u,onRetry:d},e.id)),T=y?(0,$.jsx)(V,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>m(!0),children:X(f.boardExpandSucceeded,{count:Math.min(n.runs.length,n.totalInWindow??n.runs.length)})}):null,E=b?(0,$.jsx)(V,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>m(!1),children:f.boardCollapseSucceeded}):null,D=h&&(n.hiddenByCap??0)>0?(0,$.jsx)(`p`,{className:`px-1 text-center text-[11px] text-fg-subtle`,children:X(f.boardSucceededCapHint,{count:n.hiddenByCap??0})}):null,O;return t[9]!==w||t[10]!==T||t[11]!==E||t[12]!==D?(O=(0,$.jsxs)(`div`,{className:`flex flex-1 flex-col gap-3 p-2.5`,children:[w,T,E,D]}),t[9]=w,t[10]=T,t[11]=E,t[12]=D,t[13]=O):O=t[13],(0,$.jsxs)(`section`,{className:x,"aria-label":ut(n.id,f),children:[(0,$.jsxs)(`header`,{className:`sticky top-0 z-10 flex items-center justify-between gap-2 rounded-t-2xl border-b border-edge-subtle bg-surface-panel/90 px-3.5 py-3 backdrop-blur`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[S,(0,$.jsx)(`h2`,{className:`truncate text-sm font-semibold text-fg`,children:ut(n.id,f)})]}),C]}),O]})}),ft=(0,Z.memo)(function(e){let t=(0,Q.c)(45),{runs:n,language:r,localeTag:i,labels:a,searchQuery:o,workflowFilterId:s,triggerFilter:c,selectedRunId:l,loading:u,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m,onStart:h}=e,g;t[0]===n?g=t[1]:(g=n.some(pt),t[0]=n,t[1]=g);let _=g,[v,y]=(0,Z.useState)(mt),b,x;t[2]===_?(b=t[3],x=t[4]):(b=()=>{if(!_)return;let e=window.setInterval(()=>y(Date.now()),1e3);return()=>window.clearInterval(e)},x=[_],t[2]=_,t[3]=b,t[4]=x),(0,Z.useEffect)(b,x);let S;t[5]!==v||t[6]!==n||t[7]!==o||t[8]!==c||t[9]!==s?(S=tt(Xe(n,{searchQuery:o,workflowFilterId:s,triggerFilter:c}),v),t[5]=v,t[6]=n,t[7]=o,t[8]=c,t[9]=s,t[10]=S):S=t[10];let C=S,w=C.reduce(ht,0);if(u&&w===0){let e;return t[11]===a.loading?e=t[12]:(e=(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:a.loading}),t[11]=a.loading,t[12]=e),e}if(!u&&w===0){let e;t[13]===a.boardEmptyTitle?e=t[14]:(e=(0,$.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:a.boardEmptyTitle}),t[13]=a.boardEmptyTitle,t[14]=e);let n;t[15]===a.boardEmptyHint?n=t[16]:(n=(0,$.jsx)(`p`,{className:`mx-auto mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:a.boardEmptyHint}),t[15]=a.boardEmptyHint,t[16]=n);let r;t[17]!==a.boardStart||t[18]!==h?(r=(0,$.jsx)(`div`,{className:`mt-4 flex justify-center`,children:(0,$.jsx)(V,{variant:`primary`,onClick:h,children:a.boardStart})}),t[17]=a.boardStart,t[18]=h,t[19]=r):r=t[19];let i;return t[20]!==e||t[21]!==n||t[22]!==r?(i=(0,$.jsxs)(`div`,{className:`rounded-2xl border border-dashed border-edge bg-surface-panel/40 px-6 py-12 text-center`,children:[e,n,r]}),t[20]=e,t[21]=n,t[22]=r,t[23]=i):i=t[23],i}let T;if(t[24]!==C||t[25]!==r||t[26]!==i||t[27]!==v||t[28]!==p||t[29]!==d||t[30]!==f||t[31]!==m||t[32]!==l){let e;t[34]!==r||t[35]!==i||t[36]!==v||t[37]!==p||t[38]!==d||t[39]!==f||t[40]!==m||t[41]!==l?(e=e=>(0,$.jsx)(dt,{column:e,language:r,localeTag:i,nowMs:v,selectedRunId:l,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m},e.id),t[34]=r,t[35]=i,t[36]=v,t[37]=p,t[38]=d,t[39]=f,t[40]=m,t[41]=l,t[42]=e):e=t[42],T=C.map(e),t[24]=C,t[25]=r,t[26]=i,t[27]=v,t[28]=p,t[29]=d,t[30]=f,t[31]=m,t[32]=l,t[33]=T}else T=t[33];let E;return t[43]===T?E=t[44]:(E=(0,$.jsx)(`div`,{className:`-mx-1 flex min-w-0 snap-x snap-mandatory gap-3 overflow-x-auto px-1 pb-2`,children:T}),t[43]=T,t[44]=E),E});function pt(e){return e.status===`queued`||e.status===`running`}function mt(){return Date.now()}function ht(e,t){return e+t.runs.length}var gt=`export const meta = {
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{i,o as a}from"./url-DQRqHuL-.js";import{i as o}from"./vendor-swr-BIWyz7Rc.js";import{t as s}from"./circle-check-C23XjkUj.js";import{t as c}from"./copy-Dv6d4Dvw.js";import{a as l}from"./fetch-CFdKBnE6.js";import{A as u,Ar as d,C as f,D as p,Do as m,Dr as h,E as g,Ea as _,Er as v,Fo as y,Gi as b,M as x,Nt as S,O as C,Or as w,Po as T,S as E,T as D,Ti as O,Tr as k,Ua as A,Ui as j,Vi as M,Vr as N,Zi as P,_ as ee,a as F,b as I,ba as te,bi as ne,d as L,ei as R,es as re,f as z,fa as B,fi as V,fo as H,g as U,h as W,hi as ie,i as ae,ia as G,ii as K,j as oe,ji as se,jr as ce,k as le,kr as q,m as ue,mo as de,ns as fe,o as pe,pi as J,r as me,ra as he,ro as ge,s as _e,u as ve,ua as ye,v as be,w as xe,x as Se,y as Ce,yo as we,zo as Te,zt as Ee}from"./index-slwUkhxH.js";import{a as De,c as Oe,d as ke,f as Ae,h as Y,i as je,l as Me,m as Ne,n as Pe,o as Fe,p as Ie,r as Le,s as X,t as Re,u as ze}from"./workflow-page.utils-DvzJKs6W.js";var Z=e(t(),1),Q=n(),Be=[`queued`,`running`,`succeeded`,`attention`],Ve=10080*60*1e3,He=new Set([`failed`,`timeout`,`cancelled`]);function Ue(e){return e.metadata?.sessionKey?.trim()||null}function We(e,t){return e.length<=t?e:`${e.slice(0,t-1)}…`}function Ge(e,t){if(!e||typeof e!=`object`)return null;let n=e;for(let e of t){let t=n[e];if(typeof t==`string`&&t.trim())return t.trim()}return null}function Ke(e,t=90){let n=e.metadata?.input?.goal?.trim()||(typeof e.metadata?.input?.payload==`string`?e.metadata.input.payload.trim():null)||Ge(e.metadata?.input?.payload,[`query`,`goal`,`prompt`,`input`,`message`])||Ge(e.metadata?.input?.variables,[`query`,`goal`,`prompt`,`input`,`message`]);return n?We(n,t):null}function qe(e,t=90){return Ke(e,t)??We(e.title?.trim()||e.definitionId,t)}function Je(e,t=44){return We(e.title?.trim()||e.definitionId,t)}function Ye(e,t){let n=t.trim().toLowerCase();return n?[Ke(e,500),e.title,e.definitionId,e.id].filter(Boolean).join(` `).toLowerCase().includes(n):!0}function Xe(e,t){let n=t.workflowFilterId.trim();return e.filter(e=>n&&e.definitionId!==n||!ze(e,t.triggerFilter??`all`)?!1:Ye(e,t.searchQuery))}function Ze(e){return e.completedAtMs??e.createdAtMs}function Qe(e,t){return t-Ze(e)<=Ve}function $e(e,t){return e.status===`queued`?`queued`:e.status===`running`?`running`:e.status===`succeeded`?Qe(e,t)?`succeeded`:null:He.has(e.status)?`attention`:null}function et(e,t){let n=[...t];return e===`queued`?n.sort((e,t)=>e.createdAtMs-t.createdAtMs):e===`running`?n.sort((e,t)=>(t.startedAtMs??t.createdAtMs)-(e.startedAtMs??e.createdAtMs)):n.sort((e,t)=>Ze(t)-Ze(e))}function tt(e,t){let n={queued:[],running:[],succeeded:[],attention:[]};for(let r of e){let e=$e(r,t);e&&n[e].push(r)}let r=et(`succeeded`,n.succeeded),i=r.length,a=r.slice(0,20),o=Math.max(0,i-20);return Be.map(e=>e===`succeeded`?{id:e,runs:a,totalInWindow:i,hiddenByCap:o}:{id:e,runs:et(e,n[e])})}var nt=new Map;function rt(e){let t=nt.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:`auto`}),nt.set(e,t)),t}function it(e,t,n){let r=Math.round((t-e)/1e3),i=rt(n);if(r<60)return i.format(-r,`second`);let a=Math.round(r/60);if(a<60)return i.format(-a,`minute`);let o=Math.round(a/60);if(o<48)return i.format(-o,`hour`);let s=Math.round(o/24);return i.format(-s,`day`)}function at(e){return e.status===`queued`||e.status===`running`}function ot(e){return e.status===`failed`||e.status===`timeout`||e.status===`cancelled`}var $=r(),st=(0,Z.memo)(function(e){let t=(0,Q.c)(65),{run:n,language:r,localeTag:i,nowMs:o,selected:s,onOpen:c,onOpenChat:l,onCancel:u,onRetry:d}=e,f=a(r).workflows,[p,m]=(0,Z.useState)(!1),h;t[0]===n?h=t[1]:(h=Ue(n),t[0]=n,t[1]=h);let g=!h,_;t[2]===n?_=t[3]:(_=at(n),t[2]=n,t[3]=_);let v=_,y=n.status===`running`||n.status===`queued`,b;t[4]!==n.metrics.agentCount||t[5]!==n.metrics.doneAgentCount?(b=n.metrics.agentCount>0?Math.round(n.metrics.doneAgentCount/n.metrics.agentCount*100):0,t[4]=n.metrics.agentCount,t[5]=n.metrics.doneAgentCount,t[6]=b):b=t[6];let x=b,S=n.metrics.errorAgentCount>0,C=n.startedAtMs??n.createdAtMs,w=je(v?o-C:n.metrics.durationMs),T=X(f.taskArtifacts,{count:n.metrics.artifactCount}),E;t[7]===n?E=t[8]:(E=qe(n),t[7]=n,t[8]=E);let D=E,k;t[9]===n?k=t[10]:(k=Je(n),t[9]=n,t[10]=k);let A=k,j;t[11]!==c||t[12]!==n?(j=()=>{c(n)},t[11]=c,t[12]=n,t[13]=j):j=t[13];let M=j,N;t[14]!==g||t[15]!==l||t[16]!==n?(N=()=>{g||l(n)},t[14]=g,t[15]=l,t[16]=n,t[17]=N):N=t[17];let P=N,ee=s?`border-accent/70 ring-1 ring-accent/30`:`border-edge`,F;t[18]===ee?F=t[19]:(F=J(`group relative overflow-hidden rounded-xl border bg-surface-panel p-3.5 transition-colors`,ee,`hover:border-edge-strong hover:bg-surface-hover/50`),t[18]=ee,t[19]=F);let I;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(I=J(`w-full text-left`,K.focusRingPanel),t[20]=I):I=t[20];let te;t[21]===D?te=t[22]:(te=(0,$.jsx)(`div`,{className:`line-clamp-2 text-sm font-semibold leading-5 text-fg`,children:D}),t[21]=D,t[22]=te);let ne;t[23]===A?ne=t[24]:(ne=(0,$.jsx)(`div`,{className:`mt-1 truncate text-[11px] font-medium text-fg-muted`,children:A}),t[23]=A,t[24]=ne);let L;t[25]!==te||t[26]!==ne?(L=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[te,ne]}),t[25]=te,t[26]=ne,t[27]=L):L=t[27];let R;t[28]===n.status?R=t[29]:(R=J(`shrink-0 rounded-full px-2 py-0.5 text-[10px] font-semibold shadow-sm`,ke(n.status)),t[28]=n.status,t[29]=R);let re;t[30]!==i||t[31]!==o||t[32]!==C?(re=it(C,o,i),t[30]=i,t[31]=o,t[32]=C,t[33]=re):re=t[33];let z;t[34]===re?z=t[35]:(z=(0,$.jsx)(`span`,{children:re}),t[34]=re,t[35]=z);let B=w===`—`?null:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,$.jsx)(`span`,{children:X(f.taskElapsed,{duration:w})})]}),U;t[36]!==z||t[37]!==B?(U=(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5 text-[11px] text-fg-subtle`,children:[z,B]}),t[36]=z,t[37]=B,t[38]=U):U=t[38];let W=n.metrics.artifactCount>0?(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 font-medium text-fg-muted`,children:T}):null,ie=s?(0,$.jsx)(`span`,{className:`font-medium text-accent-fg`,children:f.taskOpenDetails}):null,ae;t[39]!==W||t[40]!==ie?(ae=(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2 text-[11px] text-fg-subtle`,children:[W,ie]}),t[39]=W,t[40]=ie,t[41]=ae):ae=t[41];let G;t[42]===m?G=t[43]:(G=()=>m(lt),t[42]=m,t[43]=G);let oe;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(oe=(0,$.jsx)(H,{className:`size-4`,"aria-hidden":!0}),t[44]=oe):oe=t[44];let se;t[45]!==f.taskActionsAria||t[46]!==p||t[47]!==G?(se=(0,$.jsx)(V,{variant:`ghost`,className:`size-7 p-0 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100`,"aria-label":f.taskActionsAria,"aria-expanded":p,onClick:G,children:oe}),t[45]=f.taskActionsAria,t[46]=p,t[47]=G,t[48]=se):se=t[48];let ce;t[49]!==v||t[50]!==g||t[51]!==P||t[52]!==f.cancel||t[53]!==f.continueInChat||t[54]!==f.rerun||t[55]!==f.taskCloseMenu||t[56]!==p||t[57]!==u||t[58]!==d||t[59]!==n||t[60]!==m?(ce=p?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{type:`button`,className:`fixed inset-0 z-10 cursor-default`,"aria-label":f.taskCloseMenu,onClick:()=>m(!1)}),(0,$.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 min-w-36 rounded-lg border border-edge bg-surface-panel py-1 shadow-surface`,children:[(0,$.jsx)(ct,{label:f.continueInChat,disabled:g,onClick:()=>{m(!1),P()}}),v?(0,$.jsx)(ct,{label:f.cancel,tone:`danger`,onClick:()=>{m(!1),u(n.id)}}):null,ot(n)?(0,$.jsx)(ct,{label:f.rerun,onClick:()=>{m(!1),d(n.id)}}):null]})]}):null,t[49]=v,t[50]=g,t[51]=P,t[52]=f.cancel,t[53]=f.continueInChat,t[54]=f.rerun,t[55]=f.taskCloseMenu,t[56]=p,t[57]=u,t[58]=d,t[59]=n,t[60]=m,t[61]=ce):ce=t[61];let le;return t[62]!==se||t[63]!==ce?(le=(0,$.jsxs)(`div`,{className:`absolute right-2 top-2`,children:[se,ce]}),t[62]=se,t[63]=ce,t[64]=le):le=t[64],(0,$.jsxs)(`div`,{className:F,children:[(0,$.jsxs)(`button`,{type:`button`,onClick:M,"aria-label":`${f.taskOpenDetails}: ${D}`,"aria-current":s?`true`:void 0,className:I,children:[(0,$.jsxs)(`div`,{className:`pr-7`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-2`,children:[L,(0,$.jsx)(`span`,{className:R,children:f.status[n.status]??n.status})]}),U]}),y?(0,$.jsxs)(`div`,{className:`mt-2.5`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-[11px] text-fg-muted`,children:[(0,$.jsx)(`span`,{children:X(f.agentProgress,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount})}),(0,$.jsxs)(`span`,{children:[x,`%`]})]}),(0,$.jsx)(`div`,{className:`mt-1.5 h-1.5 overflow-hidden rounded-full bg-surface-hover`,children:(0,$.jsx)(`div`,{className:`h-full rounded-full bg-accent transition-all`,style:{width:`${x}%`}})})]}):null,ae,S?(0,$.jsxs)(`div`,{className:`mt-2 flex items-center gap-1 text-[11px] text-amber-700 dark:text-amber-300`,children:[(0,$.jsx)(O,{className:`size-3 shrink-0`,"aria-hidden":!0}),X(f.runRowErrorSummary,{count:n.metrics.errorAgentCount})]}):null]}),le]})});function ct(e){let t=(0,Q.c)(8),{label:n,disabled:r,tone:i,onClick:a}=e,o=r?`cursor-not-allowed text-fg-subtle`:`text-fg hover:bg-surface-hover`,s=i===`danger`&&!r&&`text-red-600 dark:text-red-300`,c;t[0]!==o||t[1]!==s?(c=J(`block w-full px-3 py-1.5 text-left text-xs`,o,s),t[0]=o,t[1]=s,t[2]=c):c=t[2];let l;return t[3]!==r||t[4]!==n||t[5]!==a||t[6]!==c?(l=(0,$.jsx)(`button`,{type:`button`,disabled:r,onClick:a,className:c,children:n}),t[3]=r,t[4]=n,t[5]=a,t[6]=c,t[7]=l):l=t[7],l}function lt(e){return!e}function ut(e,t){return t.boardColumns[e]}var dt=(0,Z.memo)(function(e){let t=(0,Q.c)(14),{column:n,language:r,localeTag:i,nowMs:o,selectedRunId:s,onOpenRun:c,onOpenRunChat:l,onCancelRun:u,onRetryRun:d}=e,f=a(r).workflows,[p,m]=(0,Z.useState)(!1),h=n.id===`succeeded`,g=h?5:n.runs.length,_;t[0]!==g||t[1]!==n.runs||t[2]!==p||t[3]!==h?(_=h&&!p?n.runs.slice(0,g):n.runs,t[0]=g,t[1]=n.runs,t[2]=p,t[3]=h,t[4]=_):_=t[4];let v=_,y=h&&n.runs.length>5&&!p,b=h&&p,x;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(x=J(`flex min-h-112 w-73 shrink-0 snap-center flex-col rounded-2xl border border-edge bg-surface-panel/40`),t[5]=x):x=t[5];let S;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsx)(`span`,{className:`size-2 rounded-full bg-accent`,"aria-hidden":!0}),t[6]=S):S=t[6];let C;t[7]===n.runs.length?C=t[8]:(C=(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2.5 py-1 text-xs font-semibold tabular-nums text-fg-muted`,children:n.runs.length}),t[7]=n.runs.length,t[8]=C);let w=v.length===0?(0,$.jsx)(`div`,{className:`flex min-h-32 items-center justify-center rounded-xl border border-dashed border-edge bg-surface-panel/40 px-4 py-6 text-center text-xs text-fg-subtle`,children:f.boardColumnEmpty}):v.map(e=>(0,$.jsx)(st,{run:e,language:r,localeTag:i,nowMs:o,selected:e.id===s,onOpen:c,onOpenChat:l,onCancel:u,onRetry:d},e.id)),T=y?(0,$.jsx)(V,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>m(!0),children:X(f.boardExpandSucceeded,{count:Math.min(n.runs.length,n.totalInWindow??n.runs.length)})}):null,E=b?(0,$.jsx)(V,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>m(!1),children:f.boardCollapseSucceeded}):null,D=h&&(n.hiddenByCap??0)>0?(0,$.jsx)(`p`,{className:`px-1 text-center text-[11px] text-fg-subtle`,children:X(f.boardSucceededCapHint,{count:n.hiddenByCap??0})}):null,O;return t[9]!==w||t[10]!==T||t[11]!==E||t[12]!==D?(O=(0,$.jsxs)(`div`,{className:`flex flex-1 flex-col gap-3 p-2.5`,children:[w,T,E,D]}),t[9]=w,t[10]=T,t[11]=E,t[12]=D,t[13]=O):O=t[13],(0,$.jsxs)(`section`,{className:x,"aria-label":ut(n.id,f),children:[(0,$.jsxs)(`header`,{className:`sticky top-0 z-10 flex items-center justify-between gap-2 rounded-t-2xl border-b border-edge-subtle bg-surface-panel/90 px-3.5 py-3 backdrop-blur`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[S,(0,$.jsx)(`h2`,{className:`truncate text-sm font-semibold text-fg`,children:ut(n.id,f)})]}),C]}),O]})}),ft=(0,Z.memo)(function(e){let t=(0,Q.c)(45),{runs:n,language:r,localeTag:i,labels:a,searchQuery:o,workflowFilterId:s,triggerFilter:c,selectedRunId:l,loading:u,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m,onStart:h}=e,g;t[0]===n?g=t[1]:(g=n.some(pt),t[0]=n,t[1]=g);let _=g,[v,y]=(0,Z.useState)(mt),b,x;t[2]===_?(b=t[3],x=t[4]):(b=()=>{if(!_)return;let e=window.setInterval(()=>y(Date.now()),1e3);return()=>window.clearInterval(e)},x=[_],t[2]=_,t[3]=b,t[4]=x),(0,Z.useEffect)(b,x);let S;t[5]!==v||t[6]!==n||t[7]!==o||t[8]!==c||t[9]!==s?(S=tt(Xe(n,{searchQuery:o,workflowFilterId:s,triggerFilter:c}),v),t[5]=v,t[6]=n,t[7]=o,t[8]=c,t[9]=s,t[10]=S):S=t[10];let C=S,w=C.reduce(ht,0);if(u&&w===0){let e;return t[11]===a.loading?e=t[12]:(e=(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:a.loading}),t[11]=a.loading,t[12]=e),e}if(!u&&w===0){let e;t[13]===a.boardEmptyTitle?e=t[14]:(e=(0,$.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:a.boardEmptyTitle}),t[13]=a.boardEmptyTitle,t[14]=e);let n;t[15]===a.boardEmptyHint?n=t[16]:(n=(0,$.jsx)(`p`,{className:`mx-auto mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:a.boardEmptyHint}),t[15]=a.boardEmptyHint,t[16]=n);let r;t[17]!==a.boardStart||t[18]!==h?(r=(0,$.jsx)(`div`,{className:`mt-4 flex justify-center`,children:(0,$.jsx)(V,{variant:`primary`,onClick:h,children:a.boardStart})}),t[17]=a.boardStart,t[18]=h,t[19]=r):r=t[19];let i;return t[20]!==e||t[21]!==n||t[22]!==r?(i=(0,$.jsxs)(`div`,{className:`rounded-2xl border border-dashed border-edge bg-surface-panel/40 px-6 py-12 text-center`,children:[e,n,r]}),t[20]=e,t[21]=n,t[22]=r,t[23]=i):i=t[23],i}let T;if(t[24]!==C||t[25]!==r||t[26]!==i||t[27]!==v||t[28]!==p||t[29]!==d||t[30]!==f||t[31]!==m||t[32]!==l){let e;t[34]!==r||t[35]!==i||t[36]!==v||t[37]!==p||t[38]!==d||t[39]!==f||t[40]!==m||t[41]!==l?(e=e=>(0,$.jsx)(dt,{column:e,language:r,localeTag:i,nowMs:v,selectedRunId:l,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m},e.id),t[34]=r,t[35]=i,t[36]=v,t[37]=p,t[38]=d,t[39]=f,t[40]=m,t[41]=l,t[42]=e):e=t[42],T=C.map(e),t[24]=C,t[25]=r,t[26]=i,t[27]=v,t[28]=p,t[29]=d,t[30]=f,t[31]=m,t[32]=l,t[33]=T}else T=t[33];let E;return t[43]===T?E=t[44]:(E=(0,$.jsx)(`div`,{className:`-mx-1 flex min-w-0 snap-x snap-mandatory gap-3 overflow-x-auto px-1 pb-2`,children:T}),t[43]=T,t[44]=E),E});function pt(e){return e.status===`queued`||e.status===`running`}function mt(){return Date.now()}function ht(e,t){return e+t.runs.length}var gt=`export const meta = {
2
2
  name: 'my_workflow',
3
3
  description: 'Describe what this workflow does.',
4
4
  whenToUse: 'When the user asks for ...',
@@ -10,7 +10,7 @@
10
10
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png?v=20260621-4" />
11
11
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=20260621-4" />
12
12
  <title>xopc</title>
13
- <script type="module" crossorigin src="/assets/index-DBc-bVOQ.js"></script>
13
+ <script type="module" crossorigin src="/assets/index-slwUkhxH.js"></script>
14
14
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/vendor-codemirror-DYoKfS8f.js">
package/dist/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
- var version = "0.0.107";
2
+ var version = "0.0.108";
3
3
  //#endregion
4
4
  export { version };
5
5
 
@@ -1,14 +1,14 @@
1
- import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
2
- import { applyConfigOverrides } from "../config/runtime-overrides.js";
1
+ import { createLogger } from "../utils/logger/index.js";
2
+ import { init_logger } from "../utils/logger.js";
3
3
  import { resolveStateDir } from "../config/paths-state.js";
4
4
  import { expandWorkspacePathString, init_workspace_path } from "../config/workspace-path.js";
5
5
  import { init_agent_scope, resolveAgentProfileDir } from "./agent-scope.js";
6
- import { resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
7
- import { createLogger } from "../utils/logger/index.js";
8
- import { init_logger } from "../utils/logger.js";
9
6
  import { init_paths, resolveBundledSkillsDir } from "../config/paths.js";
10
- import { init_sync_provider_auth, resolveProviderApiKeySync } from "../auth/sync-provider-auth.js";
11
7
  import { CredentialResolver, init_credentials } from "../auth/credentials.js";
8
+ import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
9
+ import { init_sync_provider_auth, resolveProviderApiKeySync } from "../auth/sync-provider-auth.js";
10
+ import { applyConfigOverrides } from "../config/runtime-overrides.js";
11
+ import { resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
12
12
  import { getApiKeySync, getDefaultModelSync, init_providers, resolveModel } from "../providers/index.js";
13
13
  import { createExtensionAwareStreamFn } from "../providers/extension-stream-bridge.js";
14
14
  import { extractTextContent, loadProfileMarkdownFiles } from "./context/workspace.js";
@@ -28,8 +28,8 @@ import { MemoryPrefetchCoordinator } from "./memory/prefetch-coordinator.js";
28
28
  import { WorkspaceRuntimeRegistry } from "./workspace-runtime/registry.js";
29
29
  import { BackgroundReviewCoordinator } from "./background-review/coordinator.js";
30
30
  import { maybeRequestChannelExecApproval } from "../channels/exec-approval-runtime.js";
31
- import { Agent } from "@earendil-works/pi-agent-core";
32
31
  import { basename, resolve, sep } from "node:path";
32
+ import { Agent } from "@earendil-works/pi-agent-core";
33
33
  //#region src/agent/agent-manager.ts
34
34
  /**
35
35
  * Agent Manager - Manages Agent instances per session
@@ -2,8 +2,8 @@ import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
2
  import { init_paths_state, resolveStateDir } from "../config/paths-state.js";
3
3
  import { expandWorkspacePathString, init_workspace_path } from "../config/workspace-path.js";
4
4
  import { init_workspace_defaults, resolveDefaultAgentWorkspaceDir } from "../config/workspace-defaults.js";
5
- import { basename, isAbsolute, join, relative, resolve } from "node:path";
6
5
  import fs from "node:fs";
6
+ import { basename, isAbsolute, join, relative, resolve } from "node:path";
7
7
  //#region src/agent/agent-scope.ts
8
8
  /**
9
9
  * Agent path and list resolution (config is the single source of truth).
@@ -1,6 +1,6 @@
1
1
  import { DEFAULT_AGENTS_FILENAME, DEFAULT_HEARTBEAT_FILENAME, DEFAULT_IDENTITY_FILENAME, DEFAULT_MEMORY_FILENAME, DEFAULT_SOUL_FILENAME, DEFAULT_TOOLS_FILENAME, DEFAULT_USER_FILENAME, stripFrontMatter } from "../context/workspace.js";
2
- import { join, resolve } from "node:path";
3
2
  import { existsSync, readFileSync } from "node:fs";
3
+ import { join, resolve } from "node:path";
4
4
  //#region src/agent/bootstrap/load-bootstrap-files.ts
5
5
  const PROFILE_LOAD_ORDER = [
6
6
  DEFAULT_AGENTS_FILENAME,
@@ -1,10 +1,10 @@
1
- import { init_agent_scope, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent-scope.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_agent_scope, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent-scope.js";
4
4
  import { WORKSPACE_FILES, init_paths } from "../../config/paths.js";
5
5
  import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES } from "./workspace.js";
6
- import { dirname, join } from "node:path";
7
6
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
7
+ import { dirname, join } from "node:path";
8
8
  import { fileURLToPath } from "node:url";
9
9
  import { execFileSync } from "node:child_process";
10
10
  //#region src/agent/context/workspace-seed.ts
@@ -1,6 +1,6 @@
1
1
  import { FILENAMES, init_paths, resolveWorkspaceStatePath } from "../../config/paths.js";
2
- import { dirname, join } from "node:path";
3
2
  import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
4
  //#region src/agent/context/workspace-state.ts
5
5
  /**
6
6
  * Workspace setup metadata in `<markdownWorkspace>/.xopc/workspace.json`
@@ -1,13 +1,13 @@
1
- import { init_agent_scope, resolveAgentHomeDir } from "../agent-scope.js";
2
- import { extractProfileAgentId } from "../../config/agent-profile.js";
1
+ import { init_write_file_atomic, writeTextAtomic } from "../../infra/write-file-atomic.js";
3
2
  import { createLogger } from "../../utils/logger/index.js";
4
3
  import { init_logger } from "../../utils/logger.js";
5
- import { init_write_file_atomic, writeTextAtomic } from "../../infra/write-file-atomic.js";
4
+ import { init_agent_scope, resolveAgentHomeDir } from "../agent-scope.js";
5
+ import { extractProfileAgentId } from "../../config/agent-profile.js";
6
6
  import { checklistCounts } from "./checklist-types.js";
7
7
  import "./goal-run-types.js";
8
- import { join } from "node:path";
9
8
  import { createHash, randomUUID } from "node:crypto";
10
9
  import { readFile } from "node:fs/promises";
10
+ import { join } from "node:path";
11
11
  //#region src/agent/goals/goal-run-store.ts
12
12
  init_agent_scope();
13
13
  init_write_file_atomic();
@@ -1,6 +1,6 @@
1
- import { init_session_key, parseSessionKey } from "../../routing/session-key.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_session_key, parseSessionKey } from "../../routing/session-key.js";
4
4
  import { handlePersistentGoalPostTurn } from "./post-turn.js";
5
5
  //#region src/agent/goals/persistent-goal-service.ts
6
6
  init_session_key();
@@ -1,7 +1,7 @@
1
- import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
2
- import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
3
1
  import { createLogger } from "../../utils/logger/index.js";
4
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
4
+ import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
5
5
  import { PERSISTENT_GOAL_CUSTOM_KEY, mergeCustomDataPatch, readPersistentGoal, serializePersistentGoal } from "./state.js";
6
6
  import { resolveGoalUiLocale } from "./goal-locale.js";
7
7
  import { evaluateAfterTurnHermesLike } from "./evaluate-turn.js";
@@ -1,8 +1,8 @@
1
1
  import { checkFileSafety } from "../prompt/safety.js";
2
2
  import { decodeDataUrl } from "./image-helpers.js";
3
- import { homedir } from "node:os";
4
- import path from "node:path";
5
3
  import { promises } from "node:fs";
4
+ import path from "node:path";
5
+ import { homedir } from "node:os";
6
6
  //#region src/agent/image/load-image-media.ts
7
7
  function expandUser(p) {
8
8
  if (p.startsWith("~/") || p === "~") return path.join(homedir(), p.slice(1));
@@ -1,6 +1,6 @@
1
- import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
4
4
  import { createResponseMessage, createSignalMessage, createTaskMessage } from "./types.js";
5
5
  import { AgentInbox } from "./inbox.js";
6
6
  //#region src/agent/ipc/bus.ts
@@ -1,10 +1,10 @@
1
+ import { init_write_file_atomic, writeTextAtomic } from "../../infra/write-file-atomic.js";
1
2
  import { createLogger } from "../../utils/logger/index.js";
2
3
  import { init_logger } from "../../utils/logger.js";
3
4
  import { init_paths, resolveAgentDir } from "../../config/paths.js";
4
- import { init_write_file_atomic, writeTextAtomic } from "../../infra/write-file-atomic.js";
5
+ import { mkdir, readFile, readdir, rename } from "fs/promises";
5
6
  import { join } from "path";
6
7
  import { existsSync, watch } from "fs";
7
- import { mkdir, readFile, readdir, rename } from "fs/promises";
8
8
  //#region src/agent/ipc/inbox.ts
9
9
  init_write_file_atomic();
10
10
  init_logger();
@@ -2,8 +2,8 @@ import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
3
  import { init_paths, resolveSocketPath } from "../../config/paths.js";
4
4
  import { isValidIPCMessage } from "./types.js";
5
- import { dirname } from "path";
6
5
  import { mkdir } from "fs/promises";
6
+ import { dirname } from "path";
7
7
  import { Socket, createServer } from "net";
8
8
  //#region src/agent/ipc/socket.ts
9
9
  init_logger();
@@ -1,6 +1,6 @@
1
- import { init_string_coerce, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "../../utils/string-coerce.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_string_coerce, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "../../utils/string-coerce.js";
4
4
  import { buildSafeToolName, normalizeReservedToolNames } from "./bundle-mcp-names.js";
5
5
  import { setPluginToolMeta } from "./mcp-tool-meta.js";
6
6
  import crypto from "node:crypto";
@@ -1,6 +1,6 @@
1
- import { init_string_coerce, normalizeOptionalString } from "../../utils/string-coerce.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_string_coerce, normalizeOptionalString } from "../../utils/string-coerce.js";
4
4
  import { resolveGlobalSingleton } from "../../utils/global-singleton.js";
5
5
  import { sanitizeServerName } from "./bundle-mcp-names.js";
6
6
  import { redactSensitiveUrlLikeString } from "../../utils/redact-sensitive-url.js";
@@ -1,6 +1,6 @@
1
- import { init_string_coerce, normalizeLowercaseStringOrEmpty } from "../../utils/string-coerce.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_string_coerce, normalizeLowercaseStringOrEmpty } from "../../utils/string-coerce.js";
4
4
  import { resolveXopcMcpTransportAlias } from "../../config/mcp-config-normalize.js";
5
5
  import { sanitizeForLog } from "../../utils/sanitize-log.js";
6
6
  import { describeHttpMcpServerLaunchConfig, resolveHttpMcpServerLaunchConfig } from "./mcp-http.js";
@@ -1,6 +1,6 @@
1
- import { init_string_coerce, normalizeOptionalString } from "../../utils/string-coerce.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_string_coerce, normalizeOptionalString } from "../../utils/string-coerce.js";
4
4
  import { XopcStdioClientTransport } from "./mcp-stdio-transport.js";
5
5
  import { resolveMcpTransportConfig } from "./mcp-transport-config.js";
6
6
  import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
@@ -1,6 +1,6 @@
1
- import { join } from "node:path";
2
1
  import { existsSync, mkdirSync, readFileSync } from "node:fs";
3
2
  import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
3
+ import { join } from "node:path";
4
4
  import lockfile from "proper-lockfile";
5
5
  //#region src/agent/memory/builtin-memory-store.ts
6
6
  /**
@@ -4,8 +4,8 @@ import { MEMORY_MD_FILENAME } from "./constants.js";
4
4
  import { clamp01, compareCandidatesByScore, computeCandidateScore, extractPromotionMarkers, isContaminatedSnippet, isExpiredEntry, isoDay, readFileLines, resolveDeepDefaults, sliceRange, snippetHash } from "./utils.js";
5
5
  import { loadDreamingStore, saveDreamingStore, withDreamingPromotionLock } from "./short-term-store.js";
6
6
  import { emptyDeepPhaseSkipped, writeDreamingDeepLastRun } from "./last-run.js";
7
- import path from "node:path";
8
7
  import fs from "node:fs/promises";
8
+ import path from "node:path";
9
9
  //#region src/agent/memory/dreaming/deep-promotion.ts
10
10
  init_logger();
11
11
  const log = createLogger("Dreaming:Deep");
@@ -1,6 +1,6 @@
1
1
  import { DREAMING_DIR_RELATIVE, DREAMING_EVENTS_LOG_RELATIVE } from "./constants.js";
2
- import path from "node:path";
3
2
  import fs from "node:fs/promises";
3
+ import path from "node:path";
4
4
  //#region src/agent/memory/dreaming/events.ts
5
5
  /**
6
6
  * Append a single event line to `memory/.dreams/events.jsonl`.
@@ -1,6 +1,6 @@
1
1
  import { DREAMING_LAST_RUN_RELATIVE } from "./constants.js";
2
- import path from "node:path";
3
2
  import fs from "node:fs/promises";
3
+ import path from "node:path";
4
4
  //#region src/agent/memory/dreaming/last-run.ts
5
5
  const DREAMING_LAST_RUN_FORMAT_VERSION = 2;
6
6
  function isRecord(v) {
@@ -4,8 +4,8 @@ import { DREAMING_DIR_RELATIVE } from "./constants.js";
4
4
  import { buildEntryKey, isoDay, normalizeMemoryPath, normalizeSnippetForHash, snippetHash } from "./utils.js";
5
5
  import { bumpEntryPhaseSignal, loadDreamingStore, saveDreamingStore } from "./short-term-store.js";
6
6
  import "./last-run.js";
7
- import path from "node:path";
8
7
  import fs from "node:fs/promises";
8
+ import path from "node:path";
9
9
  //#region src/agent/memory/dreaming/light-sweep.ts
10
10
  init_logger();
11
11
  const log = createLogger("Dreaming:Light");
@@ -1,8 +1,8 @@
1
1
  import { MEMORY_MD_FILENAME } from "./constants.js";
2
2
  import { clamp01, compareCandidatesByScore, computeCandidateScore, extractPromotionMarkers, isContaminatedSnippet, isExpiredEntry, readFileLines, resolveDeepDefaults, sliceRange, snippetHash } from "./utils.js";
3
3
  import { loadDreamingStore } from "./short-term-store.js";
4
- import path from "node:path";
5
4
  import fs from "node:fs/promises";
5
+ import path from "node:path";
6
6
  //#region src/agent/memory/dreaming/preview.ts
7
7
  async function previewDreamingDeepPromotion(params) {
8
8
  const cfg = resolveDeepDefaults(params.config);
@@ -4,8 +4,8 @@ import { DREAMING_DIR_RELATIVE, DREAMS_MD_FILENAME, MS_PER_DAY } from "./constan
4
4
  import { isoDay } from "./utils.js";
5
5
  import { bumpEntryPhaseSignal, loadDreamingStore, saveDreamingStore } from "./short-term-store.js";
6
6
  import "./last-run.js";
7
- import path from "node:path";
8
7
  import fs from "node:fs/promises";
8
+ import path from "node:path";
9
9
  //#region src/agent/memory/dreaming/rem-patterns.ts
10
10
  init_logger();
11
11
  const log = createLogger("Dreaming:REM");
@@ -2,9 +2,9 @@ import { createLogger } from "../../../utils/logger/index.js";
2
2
  import { init_logger } from "../../../utils/logger.js";
3
3
  import { SHORT_TERM_PROMOTION_LOCK_RELATIVE, SHORT_TERM_RECALL_STORE_RELATIVE } from "./constants.js";
4
4
  import { buildEntryKey, clamp01, isoDay, normalizeMemoryPath } from "./utils.js";
5
- import path from "node:path";
6
5
  import { createHash, randomUUID } from "node:crypto";
7
6
  import fs from "node:fs/promises";
7
+ import path from "node:path";
8
8
  //#region src/agent/memory/dreaming/short-term-store.ts
9
9
  init_logger();
10
10
  const log = createLogger("Dreaming:Store");
@@ -1,7 +1,7 @@
1
1
  import { DEFAULT_DEEP_CRON, DIVERSITY_WEIGHT, MS_PER_DAY, REINFORCEMENT_WEIGHT } from "./constants.js";
2
- import path from "node:path";
3
2
  import { createHash } from "node:crypto";
4
3
  import fs from "node:fs/promises";
4
+ import path from "node:path";
5
5
  //#region src/agent/memory/dreaming/utils.ts
6
6
  /** Normalize a workspace-relative memory path: forward slashes, no odd ../ escapes at start. */
7
7
  function normalizeMemoryPath(rel) {
@@ -1,8 +1,8 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
- import { join } from "node:path";
4
3
  import { existsSync } from "node:fs";
5
4
  import { appendFile, mkdir, readFile, writeFile } from "node:fs/promises";
5
+ import { join } from "node:path";
6
6
  //#region src/agent/memory/memory-flush.ts
7
7
  init_logger();
8
8
  const log = createLogger("MemoryFlush");
@@ -1,5 +1,5 @@
1
- import { dirname, join } from "node:path";
2
1
  import { readdir, stat } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  //#region src/agent/memory/plugin-discovery.ts
5
5
  async function discoverMemoryPlugins() {
@@ -1,6 +1,6 @@
1
- import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
4
4
  import { getAllModels, getDefaultModelSync, init_providers, resolveModel } from "../../providers/index.js";
5
5
  import { resolveAgentTurnTimeoutMs, runAgentTurnWithTimeout } from "../orchestration/run-agent-turn-with-timeout.js";
6
6
  import { isAssistantTurnAborted, isAssistantTurnFailed, maybeRetryTurnAfterTransientLlmFailure } from "../orchestration/llm-turn-retry.js";
@@ -1,6 +1,6 @@
1
- import { resolveStateDir } from "../../config/paths-state.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { resolveStateDir } from "../../config/paths-state.js";
4
4
  import { init_paths } from "../../config/paths.js";
5
5
  import { DEFAULT_USER_FILENAME } from "../context/workspace.js";
6
6
  import { resolveSystemPromptBuildParams } from "./system-prompt-params.js";
@@ -9,8 +9,8 @@ import { createSkillConfigManager } from "../skills/config.js";
9
9
  import { buildTtsSystemPromptHint } from "../../voice/tts/directives.js";
10
10
  import { mergeTtsConfigFromAppConfig } from "../../voice/tts/merge-config.js";
11
11
  import { selectSkillsVisibleInPrompt } from "../skills/format-skills-prompt.js";
12
- import { join } from "node:path";
13
12
  import { existsSync, readFileSync } from "node:fs";
13
+ import { join } from "node:path";
14
14
  //#region src/agent/prompt/service-prompt-builder.ts
15
15
  /**
16
16
  * System Prompt Builder - Builds the complete system prompt
@@ -1,7 +1,7 @@
1
1
  import { init_agent_scope, resolveAgentProfileDir } from "../agent-scope.js";
2
2
  import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
3
- import { join, resolve } from "node:path";
4
3
  import { readFileSync } from "node:fs";
4
+ import { join, resolve } from "node:path";
5
5
  //#region src/agent/reply/post-compaction-context.ts
6
6
  init_agent_scope();
7
7
  const MAX_CONTEXT_CHARS = 1800;
@@ -1,5 +1,5 @@
1
- import { resolve } from "node:path";
2
1
  import { readFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
3
  //#region src/agent/reply/workspace-boundary-read.ts
4
4
  /**
5
5
  * Read a file relative to workspace root with path traversal guard and byte cap.
@@ -1,6 +1,6 @@
1
- import { homedir } from "node:os";
2
- import { isAbsolute, normalize, resolve, sep } from "node:path";
3
1
  import { realpathSync } from "node:fs";
2
+ import { isAbsolute, normalize, resolve, sep } from "node:path";
3
+ import { homedir } from "node:os";
4
4
  //#region src/agent/sandbox/path-policy.ts
5
5
  /**
6
6
  * Path safety validation for sandbox isolation.
@@ -1,9 +1,9 @@
1
+ import { createLogger } from "../utils/logger/index.js";
2
+ import { init_logger } from "../utils/logger.js";
3
+ import { init_agent_scope, resolveAgentHomeDir, resolveAgentProfileDir, resolveDefaultAgentId } from "./agent-scope.js";
1
4
  import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
2
5
  import { applyConfigOverrides } from "../config/runtime-overrides.js";
3
- import { init_agent_scope, resolveAgentHomeDir, resolveAgentProfileDir, resolveDefaultAgentId } from "./agent-scope.js";
4
6
  import { extractProfileAgentId, resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
5
- import { createLogger } from "../utils/logger/index.js";
6
- import { init_logger } from "../utils/logger.js";
7
7
  import { extractTextContent } from "./context/workspace.js";
8
8
  import { getWorkflowProgressBroker } from "./workflow/progress-broker.js";
9
9
  import { onSessionTranscriptUpdate } from "../session/transcript-events.js";
@@ -60,8 +60,8 @@ import { parseOutboundSessionKey } from "./service/parse-outbound-session-key.js
60
60
  import { cleanTrailingErrors } from "./memory/message-sanitizer.js";
61
61
  import { MemoryFlushService } from "./memory/memory-flush.js";
62
62
  import { tryApplySessionTranscriptHygiene } from "./transcript/transcript-hygiene.js";
63
- import { join } from "node:path";
64
63
  import { existsSync, readFileSync } from "node:fs";
64
+ import { join } from "node:path";
65
65
  //#region src/agent/service.ts
66
66
  init_schema();
67
67
  init_logger();
@@ -1,6 +1,6 @@
1
- import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
4
4
  import { resolveVerboseLevel } from "../../session/config-store.js";
5
5
  import { resolveEffectiveReasoningLevel, resolveEffectiveThinkingLevel } from "../../session/thinking-resolve.js";
6
6
  import { effectiveWorkspacePathForSession } from "../../session/session-workspace.js";
@@ -1,6 +1,6 @@
1
+ import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
1
2
  import { createLogger } from "../../utils/logger/index.js";
2
3
  import { init_logger } from "../../utils/logger.js";
3
- import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
4
4
  import { hasBinary } from "./installer.js";
5
5
  import { join } from "path";
6
6
  import { existsSync, readFileSync } from "fs";
@@ -1,6 +1,6 @@
1
- import { join, relative } from "node:path";
2
- import { createReadStream, existsSync, readFileSync, readdirSync, statSync } from "node:fs";
3
1
  import { createHash } from "node:crypto";
2
+ import { createReadStream, existsSync, readFileSync, readdirSync, statSync } from "node:fs";
3
+ import { join, relative } from "node:path";
4
4
  //#region src/agent/skills/hub-hash.ts
5
5
  /**
6
6
  * Deterministic content hash for a skill directory (for hub lock / drift detection).
@@ -1,5 +1,5 @@
1
- import { init_paths, resolveSkillsLockPath } from "../../config/paths.js";
2
1
  import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
2
+ import { init_paths, resolveSkillsLockPath } from "../../config/paths.js";
3
3
  import { existsSync, readFileSync } from "node:fs";
4
4
  //#region src/agent/skills/hub-lock.ts
5
5
  /**
@@ -4,9 +4,9 @@ import { formatScanSummary, scanSkillDirectory } from "./scanner.js";
4
4
  import { getSkillsLockEntry, recordSkillsHubInstall } from "./hub-lock.js";
5
5
  import { installSkillFromZip, isValidSkillId } from "./managed-store.js";
6
6
  import { computeSkillTreeHashSync } from "./hub-hash.js";
7
- import { tmpdir } from "node:os";
8
- import { basename, join, normalize, resolve, sep } from "node:path";
9
7
  import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
8
+ import { basename, join, normalize, resolve, sep } from "node:path";
9
+ import { tmpdir } from "node:os";
10
10
  import { fileURLToPath } from "node:url";
11
11
  import { execFileSync } from "node:child_process";
12
12
  import { fetch } from "undici";
@@ -1,6 +1,6 @@
1
- import { resolveStateDir } from "../../config/paths-state.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { resolveStateDir } from "../../config/paths-state.js";
4
4
  import { init_paths } from "../../config/paths.js";
5
5
  import { parseFrontmatter } from "../../markdown/frontmatter.js";
6
6
  import { findInstallSpec, getDefaultInstallerPreferences, hasBinary, installSkill } from "./installer.js";
@@ -1,8 +1,8 @@
1
1
  import { init_paths, resolveSkillsDir } from "../../config/paths.js";
2
2
  import { parseFrontmatter } from "../../markdown/frontmatter.js";
3
3
  import { loadSkillsLock } from "./hub-lock.js";
4
- import { dirname, join, resolve, sep } from "node:path";
5
4
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
5
+ import { dirname, join, resolve, sep } from "node:path";
6
6
  import AdmZip from "adm-zip";
7
7
  //#region src/agent/skills/managed-store.ts
8
8
  /**
@@ -1,7 +1,7 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
- import { join } from "path";
4
3
  import { readFile, readdir } from "fs/promises";
4
+ import { join } from "path";
5
5
  //#region src/agent/skills/scanner.ts
6
6
  /**
7
7
  * Skill security scanner — scans skill directories for potentially dangerous code patterns.
@@ -2,9 +2,9 @@ import { init_paths, resolveSkillsDir } from "../../config/paths.js";
2
2
  import { parseFrontmatter } from "../../markdown/frontmatter.js";
3
3
  import { fuzzyFindText, normalizeForFuzzyMatch, normalizeToLF, restoreLineEndings } from "../tools/edit-diff.js";
4
4
  import { formatScanSummary, scanSkillDirectory } from "./scanner.js";
5
+ import { mkdir, writeFile } from "fs/promises";
5
6
  import { join, resolve, sep } from "path";
6
7
  import { existsSync, realpathSync } from "fs";
7
- import { mkdir, writeFile } from "fs/promises";
8
8
  //#region src/agent/skills/skill-manage-ops.ts
9
9
  /**
10
10
  * Shared logic for the skill_manage agent tool (create / edit / patch / delete / write_file / remove_file).
@@ -1,6 +1,6 @@
1
- import { resolveStateDir } from "../../config/paths-state.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { resolveStateDir } from "../../config/paths-state.js";
4
4
  import { init_paths, resolveBundledSkillsDir } from "../../config/paths.js";
5
5
  import { createSkillConfigManager, isSkillEnabled } from "./config.js";
6
6
  import { formatSkillsForPrompt, selectSkillsVisibleInPrompt } from "./format-skills-prompt.js";
@@ -1,8 +1,8 @@
1
1
  import { init_agent_scope, listAgentEntries, normalizeAgentId, resolveAgentProfileDir, resolveAgentWorkspaceDir } from "./agent-scope.js";
2
2
  import { WORKSPACE_FILES, init_paths } from "../config/paths.js";
3
3
  import { applyAgentConfig } from "../commands/agents.config.js";
4
- import { join } from "node:path";
5
4
  import { existsSync, mkdirSync, writeFileSync } from "node:fs";
5
+ import { join } from "node:path";
6
6
  //#region src/agent/starter-agents.ts
7
7
  init_paths();
8
8
  init_agent_scope();