@agenticmail/enterprise 0.5.327 → 0.5.328

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 (866) hide show
  1. package/dist/dashboard/app.js +1 -1
  2. package/logs/cloudflared-error.log +6 -0
  3. package/logs/enterprise-out.log +1 -0
  4. package/package.json +1 -1
  5. package/src/admin/page-registry.ts +0 -290
  6. package/src/admin/routes.ts +0 -2968
  7. package/src/agent-tools/common.ts +0 -260
  8. package/src/agent-tools/index.ts +0 -542
  9. package/src/agent-tools/merge.ts +0 -62
  10. package/src/agent-tools/middleware.ts +0 -436
  11. package/src/agent-tools/schema/typebox.ts +0 -25
  12. package/src/agent-tools/security.ts +0 -352
  13. package/src/agent-tools/tool-resolver.ts +0 -1018
  14. package/src/agent-tools/tools/agenticmail.ts +0 -1017
  15. package/src/agent-tools/tools/bash.ts +0 -179
  16. package/src/agent-tools/tools/browser-tool.schema.ts +0 -112
  17. package/src/agent-tools/tools/browser-tool.ts +0 -388
  18. package/src/agent-tools/tools/browser.ts +0 -764
  19. package/src/agent-tools/tools/edit.ts +0 -100
  20. package/src/agent-tools/tools/enterprise-code-sandbox.ts +0 -395
  21. package/src/agent-tools/tools/enterprise-database.ts +0 -377
  22. package/src/agent-tools/tools/enterprise-diff.ts +0 -580
  23. package/src/agent-tools/tools/enterprise-documents.ts +0 -896
  24. package/src/agent-tools/tools/enterprise-http.ts +0 -485
  25. package/src/agent-tools/tools/enterprise-security-scan.ts +0 -528
  26. package/src/agent-tools/tools/enterprise-spreadsheet.ts +0 -825
  27. package/src/agent-tools/tools/glob.ts +0 -129
  28. package/src/agent-tools/tools/google/calendar.ts +0 -230
  29. package/src/agent-tools/tools/google/chat.ts +0 -725
  30. package/src/agent-tools/tools/google/contacts.ts +0 -209
  31. package/src/agent-tools/tools/google/docs.ts +0 -162
  32. package/src/agent-tools/tools/google/drive.ts +0 -392
  33. package/src/agent-tools/tools/google/forms.ts +0 -367
  34. package/src/agent-tools/tools/google/gmail.ts +0 -897
  35. package/src/agent-tools/tools/google/index.ts +0 -86
  36. package/src/agent-tools/tools/google/maps.ts +0 -543
  37. package/src/agent-tools/tools/google/meeting-voice.ts +0 -885
  38. package/src/agent-tools/tools/google/meetings.ts +0 -1094
  39. package/src/agent-tools/tools/google/sheets.ts +0 -215
  40. package/src/agent-tools/tools/google/slides.ts +0 -559
  41. package/src/agent-tools/tools/google/tasks.ts +0 -200
  42. package/src/agent-tools/tools/grep.ts +0 -178
  43. package/src/agent-tools/tools/integrations/_factory.ts +0 -102
  44. package/src/agent-tools/tools/integrations/activecampaign.ts +0 -14
  45. package/src/agent-tools/tools/integrations/adobe-sign.ts +0 -14
  46. package/src/agent-tools/tools/integrations/adp.ts +0 -14
  47. package/src/agent-tools/tools/integrations/airtable.ts +0 -14
  48. package/src/agent-tools/tools/integrations/apollo.ts +0 -14
  49. package/src/agent-tools/tools/integrations/asana.ts +0 -14
  50. package/src/agent-tools/tools/integrations/auth0.ts +0 -14
  51. package/src/agent-tools/tools/integrations/aws.ts +0 -14
  52. package/src/agent-tools/tools/integrations/azure-devops.ts +0 -14
  53. package/src/agent-tools/tools/integrations/bamboohr.ts +0 -14
  54. package/src/agent-tools/tools/integrations/basecamp.ts +0 -14
  55. package/src/agent-tools/tools/integrations/bigcommerce.ts +0 -14
  56. package/src/agent-tools/tools/integrations/bitbucket.ts +0 -14
  57. package/src/agent-tools/tools/integrations/box.ts +0 -14
  58. package/src/agent-tools/tools/integrations/brex.ts +0 -14
  59. package/src/agent-tools/tools/integrations/buffer.ts +0 -14
  60. package/src/agent-tools/tools/integrations/calendly.ts +0 -14
  61. package/src/agent-tools/tools/integrations/canva.ts +0 -14
  62. package/src/agent-tools/tools/integrations/chargebee.ts +0 -14
  63. package/src/agent-tools/tools/integrations/circleci.ts +0 -14
  64. package/src/agent-tools/tools/integrations/clickup.ts +0 -14
  65. package/src/agent-tools/tools/integrations/close.ts +0 -14
  66. package/src/agent-tools/tools/integrations/cloudflare.ts +0 -14
  67. package/src/agent-tools/tools/integrations/confluence.ts +0 -14
  68. package/src/agent-tools/tools/integrations/contentful.ts +0 -14
  69. package/src/agent-tools/tools/integrations/copper.ts +0 -14
  70. package/src/agent-tools/tools/integrations/crisp.ts +0 -14
  71. package/src/agent-tools/tools/integrations/crowdstrike.ts +0 -14
  72. package/src/agent-tools/tools/integrations/datadog.ts +0 -14
  73. package/src/agent-tools/tools/integrations/digitalocean.ts +0 -14
  74. package/src/agent-tools/tools/integrations/discord.ts +0 -14
  75. package/src/agent-tools/tools/integrations/docker.ts +0 -14
  76. package/src/agent-tools/tools/integrations/docusign.ts +0 -14
  77. package/src/agent-tools/tools/integrations/drift.ts +0 -14
  78. package/src/agent-tools/tools/integrations/dropbox.ts +0 -14
  79. package/src/agent-tools/tools/integrations/figma.ts +0 -14
  80. package/src/agent-tools/tools/integrations/firebase.ts +0 -14
  81. package/src/agent-tools/tools/integrations/flyio.ts +0 -14
  82. package/src/agent-tools/tools/integrations/freshbooks.ts +0 -14
  83. package/src/agent-tools/tools/integrations/freshdesk.ts +0 -14
  84. package/src/agent-tools/tools/integrations/freshsales.ts +0 -14
  85. package/src/agent-tools/tools/integrations/freshservice.ts +0 -14
  86. package/src/agent-tools/tools/integrations/front.ts +0 -14
  87. package/src/agent-tools/tools/integrations/github-actions.ts +0 -14
  88. package/src/agent-tools/tools/integrations/github.ts +0 -14
  89. package/src/agent-tools/tools/integrations/gitlab.ts +0 -14
  90. package/src/agent-tools/tools/integrations/gong.ts +0 -14
  91. package/src/agent-tools/tools/integrations/google-ads.ts +0 -14
  92. package/src/agent-tools/tools/integrations/google-analytics.ts +0 -14
  93. package/src/agent-tools/tools/integrations/google-cloud.ts +0 -14
  94. package/src/agent-tools/tools/integrations/gotomeeting.ts +0 -14
  95. package/src/agent-tools/tools/integrations/grafana.ts +0 -14
  96. package/src/agent-tools/tools/integrations/greenhouse.ts +0 -14
  97. package/src/agent-tools/tools/integrations/gusto.ts +0 -14
  98. package/src/agent-tools/tools/integrations/hashicorp-vault.ts +0 -14
  99. package/src/agent-tools/tools/integrations/heroku.ts +0 -14
  100. package/src/agent-tools/tools/integrations/hibob.ts +0 -14
  101. package/src/agent-tools/tools/integrations/hootsuite.ts +0 -14
  102. package/src/agent-tools/tools/integrations/hubspot.ts +0 -14
  103. package/src/agent-tools/tools/integrations/huggingface.ts +0 -14
  104. package/src/agent-tools/tools/integrations/index.ts +0 -474
  105. package/src/agent-tools/tools/integrations/intercom.ts +0 -14
  106. package/src/agent-tools/tools/integrations/jira.ts +0 -14
  107. package/src/agent-tools/tools/integrations/klaviyo.ts +0 -14
  108. package/src/agent-tools/tools/integrations/kubernetes.ts +0 -14
  109. package/src/agent-tools/tools/integrations/lattice.ts +0 -14
  110. package/src/agent-tools/tools/integrations/launchdarkly.ts +0 -14
  111. package/src/agent-tools/tools/integrations/lever.ts +0 -14
  112. package/src/agent-tools/tools/integrations/linear.ts +0 -14
  113. package/src/agent-tools/tools/integrations/linkedin.ts +0 -14
  114. package/src/agent-tools/tools/integrations/livechat.ts +0 -14
  115. package/src/agent-tools/tools/integrations/loom.ts +0 -14
  116. package/src/agent-tools/tools/integrations/mailchimp.ts +0 -14
  117. package/src/agent-tools/tools/integrations/mailgun.ts +0 -14
  118. package/src/agent-tools/tools/integrations/miro.ts +0 -14
  119. package/src/agent-tools/tools/integrations/mixpanel.ts +0 -14
  120. package/src/agent-tools/tools/integrations/monday.ts +0 -14
  121. package/src/agent-tools/tools/integrations/mongodb-atlas.ts +0 -14
  122. package/src/agent-tools/tools/integrations/neon.ts +0 -14
  123. package/src/agent-tools/tools/integrations/netlify.ts +0 -14
  124. package/src/agent-tools/tools/integrations/netsuite.ts +0 -14
  125. package/src/agent-tools/tools/integrations/newrelic.ts +0 -14
  126. package/src/agent-tools/tools/integrations/notion.ts +0 -14
  127. package/src/agent-tools/tools/integrations/okta.ts +0 -14
  128. package/src/agent-tools/tools/integrations/openai.ts +0 -14
  129. package/src/agent-tools/tools/integrations/opsgenie.ts +0 -14
  130. package/src/agent-tools/tools/integrations/outreach.ts +0 -14
  131. package/src/agent-tools/tools/integrations/paddle.ts +0 -14
  132. package/src/agent-tools/tools/integrations/pagerduty.ts +0 -14
  133. package/src/agent-tools/tools/integrations/pandadoc.ts +0 -14
  134. package/src/agent-tools/tools/integrations/paypal.ts +0 -14
  135. package/src/agent-tools/tools/integrations/personio.ts +0 -14
  136. package/src/agent-tools/tools/integrations/pinecone.ts +0 -14
  137. package/src/agent-tools/tools/integrations/pipedrive.ts +0 -14
  138. package/src/agent-tools/tools/integrations/plaid.ts +0 -14
  139. package/src/agent-tools/tools/integrations/postmark.ts +0 -14
  140. package/src/agent-tools/tools/integrations/power-automate.ts +0 -14
  141. package/src/agent-tools/tools/integrations/quickbooks.ts +0 -14
  142. package/src/agent-tools/tools/integrations/recurly.ts +0 -14
  143. package/src/agent-tools/tools/integrations/reddit.ts +0 -14
  144. package/src/agent-tools/tools/integrations/render.ts +0 -14
  145. package/src/agent-tools/tools/integrations/ringcentral.ts +0 -14
  146. package/src/agent-tools/tools/integrations/rippling.ts +0 -14
  147. package/src/agent-tools/tools/integrations/salesforce.ts +0 -14
  148. package/src/agent-tools/tools/integrations/salesloft.ts +0 -14
  149. package/src/agent-tools/tools/integrations/sanity.ts +0 -14
  150. package/src/agent-tools/tools/integrations/sap.ts +0 -14
  151. package/src/agent-tools/tools/integrations/segment.ts +0 -14
  152. package/src/agent-tools/tools/integrations/sendgrid.ts +0 -14
  153. package/src/agent-tools/tools/integrations/sentry.ts +0 -14
  154. package/src/agent-tools/tools/integrations/servicenow.ts +0 -14
  155. package/src/agent-tools/tools/integrations/shopify.ts +0 -14
  156. package/src/agent-tools/tools/integrations/shortcut.ts +0 -14
  157. package/src/agent-tools/tools/integrations/slack.ts +0 -14
  158. package/src/agent-tools/tools/integrations/smartsheet.ts +0 -14
  159. package/src/agent-tools/tools/integrations/snowflake.ts +0 -14
  160. package/src/agent-tools/tools/integrations/snyk.ts +0 -14
  161. package/src/agent-tools/tools/integrations/splunk.ts +0 -14
  162. package/src/agent-tools/tools/integrations/square.ts +0 -14
  163. package/src/agent-tools/tools/integrations/statuspage.ts +0 -14
  164. package/src/agent-tools/tools/integrations/stripe.ts +0 -14
  165. package/src/agent-tools/tools/integrations/supabase.ts +0 -14
  166. package/src/agent-tools/tools/integrations/teamwork.ts +0 -14
  167. package/src/agent-tools/tools/integrations/telegram.ts +0 -14
  168. package/src/agent-tools/tools/integrations/terraform.ts +0 -14
  169. package/src/agent-tools/tools/integrations/todoist.ts +0 -14
  170. package/src/agent-tools/tools/integrations/trello.ts +0 -14
  171. package/src/agent-tools/tools/integrations/twilio.ts +0 -14
  172. package/src/agent-tools/tools/integrations/twitter.ts +0 -14
  173. package/src/agent-tools/tools/integrations/vercel.ts +0 -14
  174. package/src/agent-tools/tools/integrations/weaviate.ts +0 -14
  175. package/src/agent-tools/tools/integrations/webex.ts +0 -14
  176. package/src/agent-tools/tools/integrations/webflow.ts +0 -14
  177. package/src/agent-tools/tools/integrations/whatsapp.ts +0 -14
  178. package/src/agent-tools/tools/integrations/whereby.ts +0 -14
  179. package/src/agent-tools/tools/integrations/woocommerce.ts +0 -14
  180. package/src/agent-tools/tools/integrations/wordpress.ts +0 -14
  181. package/src/agent-tools/tools/integrations/workday.ts +0 -14
  182. package/src/agent-tools/tools/integrations/wrike.ts +0 -14
  183. package/src/agent-tools/tools/integrations/xero.ts +0 -14
  184. package/src/agent-tools/tools/integrations/youtube.ts +0 -14
  185. package/src/agent-tools/tools/integrations/zendesk.ts +0 -14
  186. package/src/agent-tools/tools/integrations/zoho-crm.ts +0 -14
  187. package/src/agent-tools/tools/integrations/zoom.ts +0 -14
  188. package/src/agent-tools/tools/integrations/zuora.ts +0 -14
  189. package/src/agent-tools/tools/knowledge-search.ts +0 -318
  190. package/src/agent-tools/tools/local/coding.ts +0 -626
  191. package/src/agent-tools/tools/local/dependency-manager.ts +0 -647
  192. package/src/agent-tools/tools/local/file-edit.ts +0 -31
  193. package/src/agent-tools/tools/local/file-list.ts +0 -39
  194. package/src/agent-tools/tools/local/file-ops.ts +0 -48
  195. package/src/agent-tools/tools/local/file-read.ts +0 -39
  196. package/src/agent-tools/tools/local/file-search.ts +0 -46
  197. package/src/agent-tools/tools/local/file-write.ts +0 -28
  198. package/src/agent-tools/tools/local/filesystem.ts +0 -5
  199. package/src/agent-tools/tools/local/index.ts +0 -55
  200. package/src/agent-tools/tools/local/resolve-path.ts +0 -18
  201. package/src/agent-tools/tools/local/shell.ts +0 -277
  202. package/src/agent-tools/tools/local/system-info.ts +0 -29
  203. package/src/agent-tools/tools/management.ts +0 -425
  204. package/src/agent-tools/tools/mcp-bridge.ts +0 -142
  205. package/src/agent-tools/tools/mcp-server-tools.ts +0 -91
  206. package/src/agent-tools/tools/meeting-lifecycle.ts +0 -438
  207. package/src/agent-tools/tools/memory.ts +0 -509
  208. package/src/agent-tools/tools/messaging/index.ts +0 -6
  209. package/src/agent-tools/tools/messaging/telegram.ts +0 -167
  210. package/src/agent-tools/tools/messaging/whatsapp.ts +0 -651
  211. package/src/agent-tools/tools/microsoft/contacts.ts +0 -176
  212. package/src/agent-tools/tools/microsoft/excel-vba.ts +0 -331
  213. package/src/agent-tools/tools/microsoft/excel.ts +0 -261
  214. package/src/agent-tools/tools/microsoft/graph-api.ts +0 -161
  215. package/src/agent-tools/tools/microsoft/index.ts +0 -95
  216. package/src/agent-tools/tools/microsoft/onedrive.ts +0 -429
  217. package/src/agent-tools/tools/microsoft/onenote.ts +0 -186
  218. package/src/agent-tools/tools/microsoft/outlook-calendar.ts +0 -286
  219. package/src/agent-tools/tools/microsoft/outlook-mail.ts +0 -723
  220. package/src/agent-tools/tools/microsoft/planner.ts +0 -200
  221. package/src/agent-tools/tools/microsoft/powerbi.ts +0 -266
  222. package/src/agent-tools/tools/microsoft/powerpoint.ts +0 -186
  223. package/src/agent-tools/tools/microsoft/sharepoint.ts +0 -328
  224. package/src/agent-tools/tools/microsoft/teams.ts +0 -463
  225. package/src/agent-tools/tools/microsoft/todo.ts +0 -181
  226. package/src/agent-tools/tools/oauth-token-provider.ts +0 -101
  227. package/src/agent-tools/tools/read.ts +0 -160
  228. package/src/agent-tools/tools/visual-memory/capture.ts +0 -217
  229. package/src/agent-tools/tools/visual-memory/diff.ts +0 -283
  230. package/src/agent-tools/tools/visual-memory/index.ts +0 -698
  231. package/src/agent-tools/tools/visual-memory/phash.ts +0 -120
  232. package/src/agent-tools/tools/visual-memory/similarity.ts +0 -354
  233. package/src/agent-tools/tools/visual-memory/storage.ts +0 -534
  234. package/src/agent-tools/tools/visual-memory/types.ts +0 -100
  235. package/src/agent-tools/tools/web-fetch-utils.ts +0 -202
  236. package/src/agent-tools/tools/web-fetch.ts +0 -464
  237. package/src/agent-tools/tools/web-search.ts +0 -480
  238. package/src/agent-tools/tools/web-shared.ts +0 -232
  239. package/src/agent-tools/tools/write.ts +0 -68
  240. package/src/agent-tools/types.ts +0 -214
  241. package/src/agenticmail/index.ts +0 -34
  242. package/src/agenticmail/manager.ts +0 -253
  243. package/src/agenticmail/providers/google.ts +0 -391
  244. package/src/agenticmail/providers/imap.ts +0 -454
  245. package/src/agenticmail/providers/index.ts +0 -28
  246. package/src/agenticmail/providers/microsoft.ts +0 -260
  247. package/src/agenticmail/types.ts +0 -173
  248. package/src/auth/routes.ts +0 -1589
  249. package/src/browser/bridge-auth-registry.ts +0 -34
  250. package/src/browser/bridge-server.ts +0 -93
  251. package/src/browser/cdp.helpers.ts +0 -180
  252. package/src/browser/cdp.ts +0 -466
  253. package/src/browser/chrome.executables.ts +0 -625
  254. package/src/browser/chrome.profile-decoration.ts +0 -198
  255. package/src/browser/chrome.ts +0 -349
  256. package/src/browser/client-actions-core.ts +0 -259
  257. package/src/browser/client-actions-observe.ts +0 -184
  258. package/src/browser/client-actions-state.ts +0 -284
  259. package/src/browser/client-actions-types.ts +0 -16
  260. package/src/browser/client-actions-url.ts +0 -11
  261. package/src/browser/client-actions.ts +0 -4
  262. package/src/browser/client-fetch.ts +0 -253
  263. package/src/browser/client.ts +0 -337
  264. package/src/browser/config.ts +0 -301
  265. package/src/browser/constants.ts +0 -8
  266. package/src/browser/control-auth.ts +0 -94
  267. package/src/browser/control-service.ts +0 -81
  268. package/src/browser/csrf.ts +0 -87
  269. package/src/browser/enterprise-compat.ts +0 -562
  270. package/src/browser/extension-relay.ts +0 -834
  271. package/src/browser/http-auth.ts +0 -63
  272. package/src/browser/navigation-guard.ts +0 -50
  273. package/src/browser/paths.ts +0 -49
  274. package/src/browser/playwright.d.ts +0 -12
  275. package/src/browser/profiles-service.ts +0 -187
  276. package/src/browser/profiles.ts +0 -114
  277. package/src/browser/proxy-files.ts +0 -41
  278. package/src/browser/pw-ai-module.ts +0 -52
  279. package/src/browser/pw-ai-state.ts +0 -9
  280. package/src/browser/pw-ai.ts +0 -65
  281. package/src/browser/pw-role-snapshot.ts +0 -434
  282. package/src/browser/pw-session.ts +0 -810
  283. package/src/browser/pw-tools-core.activity.ts +0 -68
  284. package/src/browser/pw-tools-core.downloads.ts +0 -281
  285. package/src/browser/pw-tools-core.interactions.ts +0 -646
  286. package/src/browser/pw-tools-core.responses.ts +0 -124
  287. package/src/browser/pw-tools-core.shared.ts +0 -70
  288. package/src/browser/pw-tools-core.snapshot.ts +0 -213
  289. package/src/browser/pw-tools-core.state.ts +0 -209
  290. package/src/browser/pw-tools-core.storage.ts +0 -128
  291. package/src/browser/pw-tools-core.trace.ts +0 -37
  292. package/src/browser/pw-tools-core.ts +0 -8
  293. package/src/browser/resolved-config-refresh.ts +0 -59
  294. package/src/browser/routes/agent.act.shared.ts +0 -52
  295. package/src/browser/routes/agent.act.ts +0 -575
  296. package/src/browser/routes/agent.debug.ts +0 -149
  297. package/src/browser/routes/agent.shared.ts +0 -143
  298. package/src/browser/routes/agent.snapshot.ts +0 -333
  299. package/src/browser/routes/agent.storage.ts +0 -451
  300. package/src/browser/routes/agent.ts +0 -13
  301. package/src/browser/routes/basic.ts +0 -202
  302. package/src/browser/routes/dispatcher.ts +0 -126
  303. package/src/browser/routes/index.ts +0 -11
  304. package/src/browser/routes/path-output.ts +0 -1
  305. package/src/browser/routes/tabs.ts +0 -217
  306. package/src/browser/routes/types.ts +0 -26
  307. package/src/browser/routes/utils.ts +0 -73
  308. package/src/browser/screenshot.ts +0 -54
  309. package/src/browser/server-context.ts +0 -688
  310. package/src/browser/server-context.types.ts +0 -65
  311. package/src/browser/server-lifecycle.ts +0 -48
  312. package/src/browser/server-middleware.ts +0 -37
  313. package/src/browser/server.ts +0 -110
  314. package/src/browser/target-id.ts +0 -30
  315. package/src/browser/trash.ts +0 -21
  316. package/src/cli-agent.ts +0 -2452
  317. package/src/cli-reset-password.ts +0 -138
  318. package/src/cli-serve.ts +0 -314
  319. package/src/cli.ts +0 -103
  320. package/src/dashboard/HELP-TOOLTIPS-GUIDE.md +0 -45
  321. package/src/dashboard/app.js +0 -579
  322. package/src/dashboard/assets/brand-logos.js +0 -350
  323. package/src/dashboard/assets/icons/emoji-icons.js +0 -893
  324. package/src/dashboard/assets/logo.png +0 -0
  325. package/src/dashboard/assets/provider-logos.js +0 -139
  326. package/src/dashboard/components/error-boundary.js +0 -21
  327. package/src/dashboard/components/help-button.js +0 -65
  328. package/src/dashboard/components/icons.js +0 -64
  329. package/src/dashboard/components/knowledge-link.js +0 -79
  330. package/src/dashboard/components/modal.js +0 -125
  331. package/src/dashboard/components/org-switcher.js +0 -156
  332. package/src/dashboard/components/persona-fields.js +0 -460
  333. package/src/dashboard/components/settings-help.js +0 -193
  334. package/src/dashboard/components/tag-input.js +0 -96
  335. package/src/dashboard/components/timezones.js +0 -352
  336. package/src/dashboard/components/transport-encryption.js +0 -288
  337. package/src/dashboard/components/utils.js +0 -205
  338. package/src/dashboard/data/countries.js +0 -255
  339. package/src/dashboard/docs/activity.html +0 -253
  340. package/src/dashboard/docs/agent-activity.html +0 -199
  341. package/src/dashboard/docs/agent-autonomy.html +0 -161
  342. package/src/dashboard/docs/agent-budget.html +0 -190
  343. package/src/dashboard/docs/agent-channels.html +0 -189
  344. package/src/dashboard/docs/agent-communication.html +0 -171
  345. package/src/dashboard/docs/agent-configuration.html +0 -194
  346. package/src/dashboard/docs/agent-deployment.html +0 -323
  347. package/src/dashboard/docs/agent-email.html +0 -184
  348. package/src/dashboard/docs/agent-guardrails.html +0 -206
  349. package/src/dashboard/docs/agent-manager.html +0 -226
  350. package/src/dashboard/docs/agent-memory.html +0 -215
  351. package/src/dashboard/docs/agent-overview.html +0 -226
  352. package/src/dashboard/docs/agent-permissions.html +0 -305
  353. package/src/dashboard/docs/agent-personal.html +0 -155
  354. package/src/dashboard/docs/agent-security.html +0 -188
  355. package/src/dashboard/docs/agent-skills.html +0 -224
  356. package/src/dashboard/docs/agent-tool-security.html +0 -205
  357. package/src/dashboard/docs/agent-tools.html +0 -238
  358. package/src/dashboard/docs/agent-whatsapp.html +0 -210
  359. package/src/dashboard/docs/agent-workforce.html +0 -199
  360. package/src/dashboard/docs/agents.html +0 -258
  361. package/src/dashboard/docs/approvals.html +0 -200
  362. package/src/dashboard/docs/audit.html +0 -206
  363. package/src/dashboard/docs/browser-providers.html +0 -313
  364. package/src/dashboard/docs/cluster.html +0 -285
  365. package/src/dashboard/docs/community-skills.html +0 -253
  366. package/src/dashboard/docs/compliance.html +0 -221
  367. package/src/dashboard/docs/dashboard.html +0 -84
  368. package/src/dashboard/docs/database-access.html +0 -322
  369. package/src/dashboard/docs/dlp.html +0 -268
  370. package/src/dashboard/docs/docs-style.css +0 -26
  371. package/src/dashboard/docs/domain-status.html +0 -294
  372. package/src/dashboard/docs/guardrails.html +0 -265
  373. package/src/dashboard/docs/journal.html +0 -197
  374. package/src/dashboard/docs/knowledge-contributions.html +0 -286
  375. package/src/dashboard/docs/knowledge.html +0 -268
  376. package/src/dashboard/docs/memory-transfer.html +0 -311
  377. package/src/dashboard/docs/messages.html +0 -217
  378. package/src/dashboard/docs/multi-tenant.html +0 -311
  379. package/src/dashboard/docs/org-chart.html +0 -239
  380. package/src/dashboard/docs/organizations.html +0 -182
  381. package/src/dashboard/docs/roles.html +0 -195
  382. package/src/dashboard/docs/settings-network.html +0 -321
  383. package/src/dashboard/docs/settings-security.html +0 -347
  384. package/src/dashboard/docs/settings-tool-security.html +0 -176
  385. package/src/dashboard/docs/settings.html +0 -280
  386. package/src/dashboard/docs/skill-connections.html +0 -270
  387. package/src/dashboard/docs/skills.html +0 -206
  388. package/src/dashboard/docs/task-pipeline.html +0 -261
  389. package/src/dashboard/docs/transport-encryption.html +0 -359
  390. package/src/dashboard/docs/users.html +0 -225
  391. package/src/dashboard/docs/vault.html +0 -260
  392. package/src/dashboard/docs/workforce.html +0 -245
  393. package/src/dashboard/index.html +0 -444
  394. package/src/dashboard/pages/activity.js +0 -379
  395. package/src/dashboard/pages/agent-detail/activity.js +0 -277
  396. package/src/dashboard/pages/agent-detail/autonomy.js +0 -244
  397. package/src/dashboard/pages/agent-detail/budget.js +0 -269
  398. package/src/dashboard/pages/agent-detail/channels.js +0 -494
  399. package/src/dashboard/pages/agent-detail/communication.js +0 -296
  400. package/src/dashboard/pages/agent-detail/configuration.js +0 -882
  401. package/src/dashboard/pages/agent-detail/deployment.js +0 -958
  402. package/src/dashboard/pages/agent-detail/email.js +0 -674
  403. package/src/dashboard/pages/agent-detail/guardrails.js +0 -521
  404. package/src/dashboard/pages/agent-detail/index.js +0 -261
  405. package/src/dashboard/pages/agent-detail/manager.js +0 -357
  406. package/src/dashboard/pages/agent-detail/meeting-browser.js +0 -933
  407. package/src/dashboard/pages/agent-detail/memory.js +0 -368
  408. package/src/dashboard/pages/agent-detail/overview.js +0 -844
  409. package/src/dashboard/pages/agent-detail/permissions.js +0 -1163
  410. package/src/dashboard/pages/agent-detail/personal-details.js +0 -404
  411. package/src/dashboard/pages/agent-detail/security.js +0 -409
  412. package/src/dashboard/pages/agent-detail/shared.js +0 -85
  413. package/src/dashboard/pages/agent-detail/skills-section.js +0 -183
  414. package/src/dashboard/pages/agent-detail/tool-security.js +0 -380
  415. package/src/dashboard/pages/agent-detail/tools.js +0 -322
  416. package/src/dashboard/pages/agent-detail/whatsapp.js +0 -824
  417. package/src/dashboard/pages/agent-detail/workforce.js +0 -683
  418. package/src/dashboard/pages/agents.js +0 -1242
  419. package/src/dashboard/pages/approvals.js +0 -100
  420. package/src/dashboard/pages/audit.js +0 -198
  421. package/src/dashboard/pages/cluster.js +0 -512
  422. package/src/dashboard/pages/community-skills.js +0 -1219
  423. package/src/dashboard/pages/compliance.js +0 -475
  424. package/src/dashboard/pages/dashboard.js +0 -180
  425. package/src/dashboard/pages/database-access.js +0 -812
  426. package/src/dashboard/pages/dlp.js +0 -293
  427. package/src/dashboard/pages/domain-status.js +0 -951
  428. package/src/dashboard/pages/guardrails.js +0 -1035
  429. package/src/dashboard/pages/journal.js +0 -172
  430. package/src/dashboard/pages/knowledge-contributions.js +0 -1682
  431. package/src/dashboard/pages/knowledge-import.js +0 -455
  432. package/src/dashboard/pages/knowledge.js +0 -582
  433. package/src/dashboard/pages/login.js +0 -1056
  434. package/src/dashboard/pages/memory-transfer.js +0 -631
  435. package/src/dashboard/pages/messages.js +0 -303
  436. package/src/dashboard/pages/org-chart.js +0 -349
  437. package/src/dashboard/pages/organizations.js +0 -1081
  438. package/src/dashboard/pages/roles.js +0 -780
  439. package/src/dashboard/pages/settings.js +0 -3790
  440. package/src/dashboard/pages/skill-connections.js +0 -982
  441. package/src/dashboard/pages/skills.js +0 -879
  442. package/src/dashboard/pages/task-pipeline.js +0 -684
  443. package/src/dashboard/pages/users.js +0 -867
  444. package/src/dashboard/pages/vault.js +0 -791
  445. package/src/dashboard/pages/workforce.js +0 -851
  446. package/src/dashboard/vendor/react-dom.development.js +0 -29924
  447. package/src/dashboard/vendor/react-dom.production.min.js +0 -267
  448. package/src/dashboard/vendor/react.development.js +0 -3343
  449. package/src/dashboard/vendor/react.production.min.js +0 -31
  450. package/src/database-access/agent-tools.ts +0 -193
  451. package/src/database-access/connection-manager.ts +0 -1341
  452. package/src/database-access/index.ts +0 -21
  453. package/src/database-access/query-sanitizer.ts +0 -220
  454. package/src/database-access/routes.ts +0 -226
  455. package/src/database-access/types.ts +0 -226
  456. package/src/db/adapter.ts +0 -510
  457. package/src/db/dynamodb.ts +0 -454
  458. package/src/db/factory.ts +0 -129
  459. package/src/db/mongodb.ts +0 -360
  460. package/src/db/mysql.ts +0 -531
  461. package/src/db/postgres.ts +0 -863
  462. package/src/db/proxy.ts +0 -39
  463. package/src/db/resolve-driver.ts +0 -29
  464. package/src/db/sql-schema.ts +0 -124
  465. package/src/db/sqlite.ts +0 -493
  466. package/src/db/turso.ts +0 -470
  467. package/src/deploy/fly.ts +0 -368
  468. package/src/deploy/managed.ts +0 -235
  469. package/src/domain-lock/cli-recover.ts +0 -591
  470. package/src/domain-lock/cli-verify.ts +0 -190
  471. package/src/domain-lock/index.ts +0 -220
  472. package/src/engine/activity-routes.ts +0 -154
  473. package/src/engine/activity.ts +0 -568
  474. package/src/engine/agent-autonomy.ts +0 -974
  475. package/src/engine/agent-config.ts +0 -646
  476. package/src/engine/agent-heartbeat.ts +0 -720
  477. package/src/engine/agent-hierarchy.ts +0 -1064
  478. package/src/engine/agent-memory.ts +0 -806
  479. package/src/engine/agent-notify.ts +0 -50
  480. package/src/engine/agent-routes.ts +0 -2583
  481. package/src/engine/agent-status.ts +0 -311
  482. package/src/engine/ambient-memory.ts +0 -401
  483. package/src/engine/approvals.ts +0 -615
  484. package/src/engine/assets/thinking-hum.mp3 +0 -0
  485. package/src/engine/catalog-routes.ts +0 -232
  486. package/src/engine/chat-poller.ts +0 -913
  487. package/src/engine/chat-webhook-routes.ts +0 -304
  488. package/src/engine/cli-build-skill.ts +0 -285
  489. package/src/engine/cli-submit-skill.ts +0 -200
  490. package/src/engine/cli-validate.ts +0 -188
  491. package/src/engine/cluster.ts +0 -278
  492. package/src/engine/communication-routes.ts +0 -139
  493. package/src/engine/communication.ts +0 -765
  494. package/src/engine/community-registry.ts +0 -1529
  495. package/src/engine/community-routes.ts +0 -260
  496. package/src/engine/compliance-routes.ts +0 -133
  497. package/src/engine/compliance.ts +0 -1679
  498. package/src/engine/config-bus.ts +0 -103
  499. package/src/engine/db-adapter.ts +0 -1156
  500. package/src/engine/db-schema.ts +0 -1945
  501. package/src/engine/deploy-schema-routes.ts +0 -176
  502. package/src/engine/deployer.ts +0 -957
  503. package/src/engine/dlp-routes.ts +0 -101
  504. package/src/engine/dlp.ts +0 -410
  505. package/src/engine/email-poller.ts +0 -855
  506. package/src/engine/emoji.ts +0 -106
  507. package/src/engine/guardrail-routes.ts +0 -125
  508. package/src/engine/guardrails.ts +0 -465
  509. package/src/engine/index.ts +0 -255
  510. package/src/engine/journal-routes.ts +0 -56
  511. package/src/engine/journal.ts +0 -249
  512. package/src/engine/knowledge-contribution-routes.ts +0 -633
  513. package/src/engine/knowledge-contribution.ts +0 -1386
  514. package/src/engine/knowledge-import/chunker.ts +0 -241
  515. package/src/engine/knowledge-import/import-manager.ts +0 -416
  516. package/src/engine/knowledge-import/index.ts +0 -27
  517. package/src/engine/knowledge-import/processors/clean.ts +0 -149
  518. package/src/engine/knowledge-import/processors/extract-gdrive.ts +0 -102
  519. package/src/engine/knowledge-import/processors/extract-github.ts +0 -74
  520. package/src/engine/knowledge-import/processors/extract-sharepoint.ts +0 -69
  521. package/src/engine/knowledge-import/processors/extract-web.ts +0 -275
  522. package/src/engine/knowledge-import/processors/index.ts +0 -18
  523. package/src/engine/knowledge-import/processors/pipeline.ts +0 -171
  524. package/src/engine/knowledge-import/processors/types.ts +0 -78
  525. package/src/engine/knowledge-import/processors/validate.ts +0 -150
  526. package/src/engine/knowledge-import/provider-file-upload.ts +0 -95
  527. package/src/engine/knowledge-import/provider-github.ts +0 -144
  528. package/src/engine/knowledge-import/provider-google-sites.ts +0 -323
  529. package/src/engine/knowledge-import/provider-sharepoint.ts +0 -276
  530. package/src/engine/knowledge-import/provider-url.ts +0 -218
  531. package/src/engine/knowledge-import/routes.ts +0 -94
  532. package/src/engine/knowledge-import/types.ts +0 -92
  533. package/src/engine/knowledge-routes.ts +0 -231
  534. package/src/engine/knowledge.ts +0 -587
  535. package/src/engine/lifecycle.ts +0 -1420
  536. package/src/engine/mcp-process-manager.ts +0 -573
  537. package/src/engine/meeting-monitor.ts +0 -483
  538. package/src/engine/meeting-voice-intelligence.ts +0 -340
  539. package/src/engine/memory-routes.ts +0 -142
  540. package/src/engine/memory-transfer-routes.ts +0 -339
  541. package/src/engine/messaging-history.ts +0 -177
  542. package/src/engine/messaging-poller.ts +0 -786
  543. package/src/engine/model-fallback.ts +0 -141
  544. package/src/engine/oauth-connect-routes.ts +0 -603
  545. package/src/engine/oauth-connect.ts +0 -304
  546. package/src/engine/onboarding-routes.ts +0 -148
  547. package/src/engine/onboarding.ts +0 -574
  548. package/src/engine/org-approval-routes.ts +0 -146
  549. package/src/engine/org-integration-routes.ts +0 -399
  550. package/src/engine/org-integrations.ts +0 -608
  551. package/src/engine/org-policies.ts +0 -502
  552. package/src/engine/policy-import-routes.ts +0 -125
  553. package/src/engine/policy-import.ts +0 -1186
  554. package/src/engine/policy-routes.ts +0 -163
  555. package/src/engine/routes.ts +0 -1236
  556. package/src/engine/screen-unlock.ts +0 -136
  557. package/src/engine/session-router.ts +0 -212
  558. package/src/engine/skill-updater-routes.ts +0 -132
  559. package/src/engine/skill-updater.ts +0 -480
  560. package/src/engine/skill-validator.ts +0 -331
  561. package/src/engine/skills/agent-management.ts +0 -119
  562. package/src/engine/skills/agent-memory.ts +0 -19
  563. package/src/engine/skills/agenticmail.ts +0 -116
  564. package/src/engine/skills/core-tools.ts +0 -25
  565. package/src/engine/skills/database-access.ts +0 -78
  566. package/src/engine/skills/enterprise-code-sandbox.ts +0 -113
  567. package/src/engine/skills/enterprise-database.ts +0 -123
  568. package/src/engine/skills/enterprise-diff.ts +0 -95
  569. package/src/engine/skills/enterprise-documents.ts +0 -162
  570. package/src/engine/skills/enterprise-http.ts +0 -99
  571. package/src/engine/skills/enterprise-security-scan.ts +0 -125
  572. package/src/engine/skills/enterprise-spreadsheet.ts +0 -171
  573. package/src/engine/skills/gws-admin.ts +0 -18
  574. package/src/engine/skills/gws-calendar.ts +0 -21
  575. package/src/engine/skills/gws-chat.ts +0 -29
  576. package/src/engine/skills/gws-contacts.ts +0 -20
  577. package/src/engine/skills/gws-docs.ts +0 -18
  578. package/src/engine/skills/gws-drive.ts +0 -23
  579. package/src/engine/skills/gws-forms.ts +0 -23
  580. package/src/engine/skills/gws-gmail.ts +0 -30
  581. package/src/engine/skills/gws-groups.ts +0 -17
  582. package/src/engine/skills/gws-keep.ts +0 -17
  583. package/src/engine/skills/gws-maps.ts +0 -25
  584. package/src/engine/skills/gws-meet.ts +0 -23
  585. package/src/engine/skills/gws-sheets.ts +0 -22
  586. package/src/engine/skills/gws-sites.ts +0 -16
  587. package/src/engine/skills/gws-slides.ts +0 -27
  588. package/src/engine/skills/gws-tasks.ts +0 -22
  589. package/src/engine/skills/gws-vault.ts +0 -17
  590. package/src/engine/skills/index.ts +0 -159
  591. package/src/engine/skills/knowledge-search.ts +0 -18
  592. package/src/engine/skills/local-system.ts +0 -61
  593. package/src/engine/skills/m365-admin.ts +0 -18
  594. package/src/engine/skills/m365-bookings.ts +0 -17
  595. package/src/engine/skills/m365-copilot.ts +0 -17
  596. package/src/engine/skills/m365-excel.ts +0 -60
  597. package/src/engine/skills/m365-forms.ts +0 -17
  598. package/src/engine/skills/m365-onedrive.ts +0 -60
  599. package/src/engine/skills/m365-onenote.ts +0 -17
  600. package/src/engine/skills/m365-outlook.ts +0 -27
  601. package/src/engine/skills/m365-planner.ts +0 -18
  602. package/src/engine/skills/m365-power-automate.ts +0 -18
  603. package/src/engine/skills/m365-power-bi.ts +0 -19
  604. package/src/engine/skills/m365-powerpoint.ts +0 -33
  605. package/src/engine/skills/m365-sharepoint.ts +0 -20
  606. package/src/engine/skills/m365-teams.ts +0 -21
  607. package/src/engine/skills/m365-todo.ts +0 -17
  608. package/src/engine/skills/m365-whiteboard.ts +0 -16
  609. package/src/engine/skills/m365-word.ts +0 -42
  610. package/src/engine/skills/mcp-bridge.ts +0 -45
  611. package/src/engine/skills/meeting-lifecycle.ts +0 -20
  612. package/src/engine/skills/messaging.ts +0 -46
  613. package/src/engine/skills/visual-memory.ts +0 -25
  614. package/src/engine/skills.ts +0 -688
  615. package/src/engine/soul-library.ts +0 -142
  616. package/src/engine/soul-templates.json +0 -1525
  617. package/src/engine/storage-manager.ts +0 -252
  618. package/src/engine/storage-routes.ts +0 -113
  619. package/src/engine/storage.ts +0 -528
  620. package/src/engine/task-poller.ts +0 -394
  621. package/src/engine/task-queue-after-spawn.ts +0 -66
  622. package/src/engine/task-queue-before-spawn.ts +0 -113
  623. package/src/engine/task-queue-routes.ts +0 -161
  624. package/src/engine/task-queue.ts +0 -664
  625. package/src/engine/tenant.ts +0 -409
  626. package/src/engine/tool-catalog.ts +0 -354
  627. package/src/engine/vault-routes.ts +0 -134
  628. package/src/engine/vault.ts +0 -601
  629. package/src/engine/workforce-routes.ts +0 -331
  630. package/src/engine/workforce.ts +0 -1161
  631. package/src/index.ts +0 -77
  632. package/src/lib/cidr.ts +0 -122
  633. package/src/lib/config-store.ts +0 -86
  634. package/src/lib/resilience.ts +0 -326
  635. package/src/lib/text-search.ts +0 -358
  636. package/src/mcp/adapters/activecampaign.adapter.ts +0 -391
  637. package/src/mcp/adapters/adobe-sign.adapter.ts +0 -469
  638. package/src/mcp/adapters/adp.adapter.ts +0 -358
  639. package/src/mcp/adapters/airtable.adapter.ts +0 -273
  640. package/src/mcp/adapters/apollo.adapter.ts +0 -420
  641. package/src/mcp/adapters/asana.adapter.ts +0 -315
  642. package/src/mcp/adapters/auth0.adapter.ts +0 -386
  643. package/src/mcp/adapters/aws.adapter.ts +0 -345
  644. package/src/mcp/adapters/azure-devops.adapter.ts +0 -389
  645. package/src/mcp/adapters/bamboohr.adapter.ts +0 -376
  646. package/src/mcp/adapters/basecamp.adapter.ts +0 -366
  647. package/src/mcp/adapters/bigcommerce.adapter.ts +0 -429
  648. package/src/mcp/adapters/bitbucket.adapter.ts +0 -260
  649. package/src/mcp/adapters/box.adapter.ts +0 -350
  650. package/src/mcp/adapters/brex.adapter.ts +0 -367
  651. package/src/mcp/adapters/buffer.adapter.ts +0 -303
  652. package/src/mcp/adapters/calendly.adapter.ts +0 -262
  653. package/src/mcp/adapters/canva.adapter.ts +0 -256
  654. package/src/mcp/adapters/chargebee.adapter.ts +0 -448
  655. package/src/mcp/adapters/circleci.adapter.ts +0 -216
  656. package/src/mcp/adapters/clickup.adapter.ts +0 -335
  657. package/src/mcp/adapters/close.adapter.ts +0 -390
  658. package/src/mcp/adapters/cloudflare.adapter.ts +0 -378
  659. package/src/mcp/adapters/confluence.adapter.ts +0 -301
  660. package/src/mcp/adapters/contentful.adapter.ts +0 -355
  661. package/src/mcp/adapters/copper.adapter.ts +0 -468
  662. package/src/mcp/adapters/crisp.adapter.ts +0 -415
  663. package/src/mcp/adapters/crowdstrike.adapter.ts +0 -413
  664. package/src/mcp/adapters/datadog.adapter.ts +0 -373
  665. package/src/mcp/adapters/digitalocean.adapter.ts +0 -336
  666. package/src/mcp/adapters/discord.adapter.ts +0 -248
  667. package/src/mcp/adapters/docker.adapter.ts +0 -238
  668. package/src/mcp/adapters/docusign.adapter.ts +0 -431
  669. package/src/mcp/adapters/drift.adapter.ts +0 -386
  670. package/src/mcp/adapters/dropbox.adapter.ts +0 -315
  671. package/src/mcp/adapters/figma.adapter.ts +0 -302
  672. package/src/mcp/adapters/firebase.adapter.ts +0 -446
  673. package/src/mcp/adapters/flyio.adapter.ts +0 -302
  674. package/src/mcp/adapters/freshbooks.adapter.ts +0 -474
  675. package/src/mcp/adapters/freshdesk.adapter.ts +0 -441
  676. package/src/mcp/adapters/freshsales.adapter.ts +0 -457
  677. package/src/mcp/adapters/freshservice.adapter.ts +0 -481
  678. package/src/mcp/adapters/front.adapter.ts +0 -357
  679. package/src/mcp/adapters/github-actions.adapter.ts +0 -329
  680. package/src/mcp/adapters/github.adapter.ts +0 -387
  681. package/src/mcp/adapters/gitlab.adapter.ts +0 -368
  682. package/src/mcp/adapters/gong.adapter.ts +0 -386
  683. package/src/mcp/adapters/google-ads.adapter.ts +0 -363
  684. package/src/mcp/adapters/google-analytics.adapter.ts +0 -316
  685. package/src/mcp/adapters/google-cloud.adapter.ts +0 -312
  686. package/src/mcp/adapters/gotomeeting.adapter.ts +0 -255
  687. package/src/mcp/adapters/grafana.adapter.ts +0 -361
  688. package/src/mcp/adapters/greenhouse.adapter.ts +0 -354
  689. package/src/mcp/adapters/gusto.adapter.ts +0 -329
  690. package/src/mcp/adapters/hashicorp-vault.adapter.ts +0 -355
  691. package/src/mcp/adapters/heroku.adapter.ts +0 -291
  692. package/src/mcp/adapters/hibob.adapter.ts +0 -334
  693. package/src/mcp/adapters/hootsuite.adapter.ts +0 -322
  694. package/src/mcp/adapters/hubspot.adapter.ts +0 -400
  695. package/src/mcp/adapters/huggingface.adapter.ts +0 -349
  696. package/src/mcp/adapters/index.ts +0 -524
  697. package/src/mcp/adapters/intercom.adapter.ts +0 -269
  698. package/src/mcp/adapters/jira.adapter.ts +0 -482
  699. package/src/mcp/adapters/klaviyo.adapter.ts +0 -353
  700. package/src/mcp/adapters/kubernetes.adapter.ts +0 -431
  701. package/src/mcp/adapters/lattice.adapter.ts +0 -339
  702. package/src/mcp/adapters/launchdarkly.adapter.ts +0 -368
  703. package/src/mcp/adapters/lever.adapter.ts +0 -347
  704. package/src/mcp/adapters/linear.adapter.ts +0 -300
  705. package/src/mcp/adapters/linkedin.adapter.ts +0 -331
  706. package/src/mcp/adapters/livechat.adapter.ts +0 -259
  707. package/src/mcp/adapters/loom.adapter.ts +0 -230
  708. package/src/mcp/adapters/mailchimp.adapter.ts +0 -394
  709. package/src/mcp/adapters/mailgun.adapter.ts +0 -425
  710. package/src/mcp/adapters/miro.adapter.ts +0 -274
  711. package/src/mcp/adapters/mixpanel.adapter.ts +0 -324
  712. package/src/mcp/adapters/monday.adapter.ts +0 -308
  713. package/src/mcp/adapters/mongodb-atlas.adapter.ts +0 -345
  714. package/src/mcp/adapters/neon.adapter.ts +0 -312
  715. package/src/mcp/adapters/netlify.adapter.ts +0 -324
  716. package/src/mcp/adapters/netsuite.adapter.ts +0 -411
  717. package/src/mcp/adapters/newrelic.adapter.ts +0 -339
  718. package/src/mcp/adapters/notion.adapter.ts +0 -338
  719. package/src/mcp/adapters/okta.adapter.ts +0 -394
  720. package/src/mcp/adapters/openai.adapter.ts +0 -315
  721. package/src/mcp/adapters/opsgenie.adapter.ts +0 -375
  722. package/src/mcp/adapters/outreach.adapter.ts +0 -372
  723. package/src/mcp/adapters/paddle.adapter.ts +0 -467
  724. package/src/mcp/adapters/pagerduty.adapter.ts +0 -412
  725. package/src/mcp/adapters/pandadoc.adapter.ts +0 -389
  726. package/src/mcp/adapters/paypal.adapter.ts +0 -465
  727. package/src/mcp/adapters/personio.adapter.ts +0 -401
  728. package/src/mcp/adapters/pinecone.adapter.ts +0 -340
  729. package/src/mcp/adapters/pipedrive.adapter.ts +0 -324
  730. package/src/mcp/adapters/plaid.adapter.ts +0 -444
  731. package/src/mcp/adapters/postmark.adapter.ts +0 -387
  732. package/src/mcp/adapters/power-automate.adapter.ts +0 -388
  733. package/src/mcp/adapters/quickbooks.adapter.ts +0 -431
  734. package/src/mcp/adapters/recurly.adapter.ts +0 -433
  735. package/src/mcp/adapters/reddit.adapter.ts +0 -371
  736. package/src/mcp/adapters/render.adapter.ts +0 -332
  737. package/src/mcp/adapters/ringcentral.adapter.ts +0 -281
  738. package/src/mcp/adapters/rippling.adapter.ts +0 -287
  739. package/src/mcp/adapters/salesforce.adapter.ts +0 -321
  740. package/src/mcp/adapters/salesloft.adapter.ts +0 -413
  741. package/src/mcp/adapters/sanity.adapter.ts +0 -363
  742. package/src/mcp/adapters/sap.adapter.ts +0 -483
  743. package/src/mcp/adapters/segment.adapter.ts +0 -260
  744. package/src/mcp/adapters/sendgrid.adapter.ts +0 -265
  745. package/src/mcp/adapters/sentry.adapter.ts +0 -331
  746. package/src/mcp/adapters/servicenow.adapter.ts +0 -468
  747. package/src/mcp/adapters/shopify.adapter.ts +0 -451
  748. package/src/mcp/adapters/shortcut.adapter.ts +0 -290
  749. package/src/mcp/adapters/slack.adapter.ts +0 -380
  750. package/src/mcp/adapters/smartsheet.adapter.ts +0 -326
  751. package/src/mcp/adapters/snowflake.adapter.ts +0 -347
  752. package/src/mcp/adapters/snyk.adapter.ts +0 -394
  753. package/src/mcp/adapters/splunk.adapter.ts +0 -403
  754. package/src/mcp/adapters/square.adapter.ts +0 -467
  755. package/src/mcp/adapters/statuspage.adapter.ts +0 -401
  756. package/src/mcp/adapters/stripe.adapter.ts +0 -380
  757. package/src/mcp/adapters/supabase.adapter.ts +0 -334
  758. package/src/mcp/adapters/teamwork.adapter.ts +0 -404
  759. package/src/mcp/adapters/telegram.adapter.ts +0 -299
  760. package/src/mcp/adapters/terraform.adapter.ts +0 -300
  761. package/src/mcp/adapters/todoist.adapter.ts +0 -239
  762. package/src/mcp/adapters/trello.adapter.ts +0 -316
  763. package/src/mcp/adapters/twilio.adapter.ts +0 -233
  764. package/src/mcp/adapters/twitter.adapter.ts +0 -348
  765. package/src/mcp/adapters/vercel.adapter.ts +0 -219
  766. package/src/mcp/adapters/weaviate.adapter.ts +0 -371
  767. package/src/mcp/adapters/webex.adapter.ts +0 -237
  768. package/src/mcp/adapters/webflow.adapter.ts +0 -287
  769. package/src/mcp/adapters/whatsapp.adapter.ts +0 -273
  770. package/src/mcp/adapters/whereby.adapter.ts +0 -240
  771. package/src/mcp/adapters/woocommerce.adapter.ts +0 -454
  772. package/src/mcp/adapters/wordpress.adapter.ts +0 -455
  773. package/src/mcp/adapters/workday.adapter.ts +0 -354
  774. package/src/mcp/adapters/wrike.adapter.ts +0 -349
  775. package/src/mcp/adapters/xero.adapter.ts +0 -472
  776. package/src/mcp/adapters/youtube.adapter.ts +0 -401
  777. package/src/mcp/adapters/zendesk.adapter.ts +0 -399
  778. package/src/mcp/adapters/zoho-crm.adapter.ts +0 -410
  779. package/src/mcp/adapters/zoom.adapter.ts +0 -241
  780. package/src/mcp/adapters/zuora.adapter.ts +0 -476
  781. package/src/mcp/framework/api-executor.ts +0 -192
  782. package/src/mcp/framework/aws-sigv4.ts +0 -216
  783. package/src/mcp/framework/credential-resolver.ts +0 -128
  784. package/src/mcp/framework/oauth-token-manager.ts +0 -22
  785. package/src/mcp/framework/skill-mcp-framework.ts +0 -226
  786. package/src/mcp/framework/types.ts +0 -130
  787. package/src/mcp/index.ts +0 -124
  788. package/src/mcp/integration-catalog.ts +0 -178
  789. package/src/middleware/dns-rebinding.ts +0 -44
  790. package/src/middleware/egress-filter.ts +0 -104
  791. package/src/middleware/firewall.ts +0 -192
  792. package/src/middleware/geo-ip.ts +0 -156
  793. package/src/middleware/index.ts +0 -390
  794. package/src/middleware/network-config.ts +0 -90
  795. package/src/middleware/proxy-config.ts +0 -71
  796. package/src/middleware/request-limits.ts +0 -59
  797. package/src/middleware/transport-encryption.ts +0 -398
  798. package/src/registry/cli.ts +0 -63
  799. package/src/registry/server.ts +0 -504
  800. package/src/runtime/agent-loop.ts +0 -779
  801. package/src/runtime/compaction.ts +0 -638
  802. package/src/runtime/email-channel.ts +0 -120
  803. package/src/runtime/environment.ts +0 -300
  804. package/src/runtime/followup.ts +0 -211
  805. package/src/runtime/gateway.ts +0 -260
  806. package/src/runtime/hooks.ts +0 -564
  807. package/src/runtime/index.ts +0 -1110
  808. package/src/runtime/llm-client.ts +0 -1056
  809. package/src/runtime/model-router.ts +0 -97
  810. package/src/runtime/providers.ts +0 -228
  811. package/src/runtime/session-manager.ts +0 -345
  812. package/src/runtime/subagent.ts +0 -153
  813. package/src/runtime/tool-executor.ts +0 -208
  814. package/src/runtime/types.ts +0 -255
  815. package/src/security/brute-force.ts +0 -423
  816. package/src/security/config.ts +0 -159
  817. package/src/security/csp.ts +0 -407
  818. package/src/security/external-content.ts +0 -299
  819. package/src/security/index.ts +0 -557
  820. package/src/security/input-sanitizer.ts +0 -452
  821. package/src/security/output-filter.ts +0 -575
  822. package/src/security/port-scanner.ts +0 -342
  823. package/src/security/prompt-guard.ts +0 -387
  824. package/src/security/sql-guard.ts +0 -338
  825. package/src/security/threat-logger.ts +0 -484
  826. package/src/server.ts +0 -828
  827. package/src/setup/company.ts +0 -183
  828. package/src/setup/database.ts +0 -153
  829. package/src/setup/deployment.ts +0 -561
  830. package/src/setup/domain.ts +0 -112
  831. package/src/setup/index.ts +0 -171
  832. package/src/setup/provision.ts +0 -532
  833. package/src/setup/registration.ts +0 -302
  834. package/src/system-prompts/catchup.ts +0 -48
  835. package/src/system-prompts/google/calendar.ts +0 -37
  836. package/src/system-prompts/google/chat.ts +0 -92
  837. package/src/system-prompts/google/contacts.ts +0 -25
  838. package/src/system-prompts/google/docs.ts +0 -29
  839. package/src/system-prompts/google/drive.ts +0 -34
  840. package/src/system-prompts/google/forms.ts +0 -25
  841. package/src/system-prompts/google/gmail.ts +0 -50
  842. package/src/system-prompts/google/index.ts +0 -23
  843. package/src/system-prompts/google/maps.ts +0 -20
  844. package/src/system-prompts/google/meet.ts +0 -130
  845. package/src/system-prompts/google/sheets.ts +0 -32
  846. package/src/system-prompts/google/slides.ts +0 -26
  847. package/src/system-prompts/google/tasks.ts +0 -27
  848. package/src/system-prompts/index.ts +0 -88
  849. package/src/system-prompts/microsoft/contacts.ts +0 -34
  850. package/src/system-prompts/microsoft/excel.ts +0 -52
  851. package/src/system-prompts/microsoft/index.ts +0 -31
  852. package/src/system-prompts/microsoft/onedrive.ts +0 -41
  853. package/src/system-prompts/microsoft/onenote.ts +0 -36
  854. package/src/system-prompts/microsoft/outlook-calendar.ts +0 -37
  855. package/src/system-prompts/microsoft/outlook-mail.ts +0 -46
  856. package/src/system-prompts/microsoft/planner.ts +0 -37
  857. package/src/system-prompts/microsoft/powerbi.ts +0 -38
  858. package/src/system-prompts/microsoft/powerpoint.ts +0 -35
  859. package/src/system-prompts/microsoft/sharepoint.ts +0 -44
  860. package/src/system-prompts/microsoft/teams.ts +0 -49
  861. package/src/system-prompts/microsoft/todo.ts +0 -37
  862. package/src/system-prompts/shared-blocks.ts +0 -87
  863. package/src/system-prompts/task.ts +0 -21
  864. package/src/system-prompts/triage.ts +0 -34
  865. package/src/types/hono-env.ts +0 -18
  866. package/src/types/optional-deps.d.ts +0 -10
@@ -1,851 +0,0 @@
1
- import { h, useState, useEffect, useCallback, Fragment, useApp, engineCall, buildAgentEmailMap, resolveAgentEmail, buildAgentDataMap, renderAgentBadge, getOrgId , apiCall } from '../components/utils.js';
2
- import { I } from '../components/icons.js';
3
- import { TimezoneSelect } from '../components/timezones.js';
4
- import { DetailModal } from '../components/modal.js';
5
- import { HelpButton } from '../components/help-button.js';
6
- import { useOrgContext } from '../components/org-switcher.js';
7
- import { KnowledgeLink } from '../components/knowledge-link.js';
8
-
9
- export function WorkforcePage() {
10
- var orgCtx = useOrgContext();
11
- var effectiveOrgId = orgCtx.selectedOrgId || getOrgId();
12
- const { toast } = useApp();
13
- const [tab, setTab] = useState('overview');
14
- const [status, setStatus] = useState(null);
15
- const [schedules, setSchedules] = useState([]);
16
- const [clockRecords, setClockRecords] = useState([]);
17
- const [selectedAgent, setSelectedAgent] = useState(null);
18
- const [showScheduleModal, setShowScheduleModal] = useState(false);
19
- const [loading, setLoading] = useState(true);
20
- const [budgetData, setBudgetData] = useState(null);
21
- const [schedForm, setSchedForm] = useState({
22
- agentId: '', timezone: 'UTC', scheduleType: 'standard',
23
- config: { standardHours: { start: '09:00', end: '17:00', daysOfWeek: [1, 2, 3, 4, 5] } },
24
- enforceClockIn: true, enforceClockOut: true, autoWakeEnabled: true,
25
- offHoursAction: 'pause', gracePeriodMinutes: 5, enabled: true,
26
- });
27
- const [editingScheduleId, setEditingScheduleId] = useState(null);
28
- const [taskForm, setTaskForm] = useState({ agentId: '', title: '', description: '', priority: 'normal', type: 'new' });
29
- const [showTaskForm, setShowTaskForm] = useState(false);
30
- const [tasks, setTasks] = useState([]);
31
- const [editingBudgetAgent, setEditingBudgetAgent] = useState(null);
32
- const [budgetForm, setBudgetForm] = useState({ dailyTokens: 0, monthlyTokens: 0, dailyCost: 0, monthlyCost: 0, enabled: true });
33
- const [agents, setAgents] = useState([]);
34
-
35
- // History tab filters
36
- const [historyPage, setHistoryPage] = useState(1);
37
- const [historyPerPage, setHistoryPerPage] = useState(10);
38
- const [historySearch, setHistorySearch] = useState('');
39
- const [historyEventFilter, setHistoryEventFilter] = useState('');
40
- const [historyAgentFilter, setHistoryAgentFilter] = useState('');
41
-
42
- // Task tab filters
43
- const [taskPage, setTaskPage] = useState(1);
44
- const [taskPerPage, setTaskPerPage] = useState(10);
45
- const [taskSearch, setTaskSearch] = useState('');
46
- const [taskStatusFilter, setTaskStatusFilter] = useState('');
47
- const [taskPriorityFilter, setTaskPriorityFilter] = useState('');
48
- const [taskAgentFilter, setTaskAgentFilter] = useState('');
49
-
50
- // Schedule tab filters
51
- const [schedPage, setSchedPage] = useState(1);
52
- const [schedPerPage, setSchedPerPage] = useState(10);
53
- const [schedSearch, setSchedSearch] = useState('');
54
- const [schedTypeFilter, setSchedTypeFilter] = useState('');
55
- const [schedStatusFilter, setSchedStatusFilter] = useState('');
56
-
57
- // Budget tab filters
58
- const [budgetPage, setBudgetPage] = useState(1);
59
- const [budgetPerPage, setBudgetPerPage] = useState(10);
60
- const [budgetSearch, setBudgetSearch] = useState('');
61
- const [budgetStatusFilter, setBudgetStatusFilter] = useState('');
62
- const [selectedRecord, setSelectedRecord] = useState(null);
63
-
64
- const formatTime = (iso) => iso ? new Date(iso).toLocaleString() : '-';
65
- const dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
66
- const formatDays = (days) => days?.map(d => dayNames[d]).join(', ') || '-';
67
-
68
- const loadData = async () => {
69
- setLoading(true);
70
- try {
71
- const [statusRes, schedulesRes, budgetRes, recordsRes] = await Promise.all([
72
- engineCall('/workforce/status?orgId=' + (orgCtx.selectedOrgId || getOrgId())),
73
- engineCall('/workforce/schedules?orgId=' + (orgCtx.selectedOrgId || getOrgId())),
74
- engineCall('/workforce/budget-overview?orgId=' + (orgCtx.selectedOrgId || getOrgId())),
75
- engineCall('/workforce/clock-records?limit=50&orgId=' + (orgCtx.selectedOrgId || getOrgId())),
76
- ]);
77
- setStatus(statusRes);
78
- setSchedules(schedulesRes.schedules || []);
79
- setBudgetData(budgetRes);
80
- setClockRecords(recordsRes.records || []);
81
- engineCall('/agents?orgId=' + (orgCtx.selectedOrgId || getOrgId())).then(d => setAgents(d.agents || [])).catch(() => {});
82
- } catch (err) { toast('Failed to load workforce data', 'error'); }
83
- setLoading(false);
84
- };
85
-
86
- useEffect(() => { loadData(); }, []);
87
-
88
- // --- Actions ---
89
- const handleClockIn = async (agentId) => {
90
- try {
91
- await engineCall('/workforce/clock-in/' + agentId, { method: 'POST' });
92
- toast('Agent clocked in', 'success');
93
- loadData();
94
- } catch (err) { toast(err.message, 'error'); }
95
- };
96
-
97
- const handleClockOut = async (agentId) => {
98
- try {
99
- await engineCall('/workforce/clock-out/' + agentId, { method: 'POST' });
100
- toast('Agent clocked out', 'success');
101
- loadData();
102
- } catch (err) { toast(err.message, 'error'); }
103
- };
104
-
105
- const saveSchedule = async () => {
106
- try {
107
- if (editingScheduleId) {
108
- await engineCall('/workforce/schedules/' + editingScheduleId, { method: 'PUT', body: JSON.stringify(schedForm) });
109
- toast('Schedule updated', 'success');
110
- } else {
111
- await engineCall('/workforce/schedules', { method: 'POST', body: JSON.stringify(schedForm) });
112
- toast('Schedule created', 'success');
113
- }
114
- setShowScheduleModal(false);
115
- setEditingScheduleId(null);
116
- loadData();
117
- } catch (err) { toast(err.message, 'error'); }
118
- };
119
-
120
- const deleteSchedule = async (id) => {
121
- try {
122
- await engineCall('/workforce/schedules/' + id, { method: 'DELETE' });
123
- toast('Schedule deleted', 'success');
124
- loadData();
125
- } catch (err) { toast(err.message, 'error'); }
126
- };
127
-
128
- const openEditSchedule = (sched) => {
129
- setEditingScheduleId(sched.id);
130
- setSchedForm({
131
- agentId: sched.agentId || '', timezone: sched.timezone || 'UTC', scheduleType: sched.scheduleType || 'standard',
132
- config: sched.config || { standardHours: { start: '09:00', end: '17:00', daysOfWeek: [1, 2, 3, 4, 5] } },
133
- enforceClockIn: sched.enforceClockIn !== false, enforceClockOut: sched.enforceClockOut !== false,
134
- autoWakeEnabled: sched.autoWakeEnabled !== false, offHoursAction: sched.offHoursAction || 'pause',
135
- gracePeriodMinutes: sched.gracePeriodMinutes || 5, enabled: sched.enabled !== false,
136
- });
137
- setShowScheduleModal(true);
138
- };
139
-
140
- const openNewSchedule = () => {
141
- setEditingScheduleId(null);
142
- setSchedForm({
143
- agentId: '', timezone: 'UTC', scheduleType: 'standard',
144
- config: { standardHours: { start: '09:00', end: '17:00', daysOfWeek: [1, 2, 3, 4, 5] } },
145
- enforceClockIn: true, enforceClockOut: true, autoWakeEnabled: true,
146
- offHoursAction: 'pause', gracePeriodMinutes: 5, enabled: true,
147
- });
148
- setShowScheduleModal(true);
149
- };
150
-
151
- const addTask = async () => {
152
- try {
153
- await engineCall('/workforce/tasks', { method: 'POST', body: JSON.stringify(taskForm) });
154
- toast('Task added', 'success');
155
- setShowTaskForm(false);
156
- setTaskForm({ agentId: '', title: '', description: '', priority: 'normal', type: 'new' });
157
- loadTasks();
158
- } catch (err) { toast(err.message, 'error'); }
159
- };
160
-
161
- const loadTasks = async () => {
162
- try {
163
- const res = await engineCall('/workforce/tasks');
164
- setTasks(res.tasks || []);
165
- } catch (err) { /* ignore */ }
166
- };
167
-
168
- const completeTask = async (taskId) => {
169
- try {
170
- await engineCall('/workforce/tasks/' + taskId + '/complete', { method: 'POST' });
171
- toast('Task completed', 'success');
172
- loadTasks();
173
- } catch (err) { toast(err.message, 'error'); }
174
- };
175
-
176
- const cancelTask = async (taskId) => {
177
- try {
178
- await engineCall('/workforce/tasks/' + taskId + '/cancel', { method: 'POST' });
179
- toast('Task cancelled', 'success');
180
- loadTasks();
181
- } catch (err) { toast(err.message, 'error'); }
182
- };
183
-
184
- const saveBudgetCaps = async (agentId) => {
185
- try {
186
- await engineCall('/agents/' + agentId + '/budget', { method: 'PUT', body: JSON.stringify(budgetForm) });
187
- toast('Budget caps updated', 'success');
188
- setEditingBudgetAgent(null);
189
- loadData();
190
- } catch (err) { toast(err.message, 'error'); }
191
- };
192
-
193
- useEffect(() => {
194
- if (tab === 'tasks') loadTasks();
195
- }, [tab]);
196
-
197
- const toggleDay = (day) => {
198
- const days = schedForm.config?.standardHours?.daysOfWeek || [];
199
- const next = days.includes(day) ? days.filter(d => d !== day) : [...days, day].sort();
200
- setSchedForm({ ...schedForm, config: { ...schedForm.config, standardHours: { ...schedForm.config.standardHours, daysOfWeek: next } } });
201
- };
202
-
203
- const addShift = () => {
204
- const shifts = schedForm.config?.shifts || [];
205
- setSchedForm({ ...schedForm, config: { ...schedForm.config, shifts: [...shifts, { name: 'Shift ' + (shifts.length + 1), start: '09:00', end: '17:00', daysOfWeek: [1, 2, 3, 4, 5] }] } });
206
- };
207
-
208
- const updateShift = (idx, field, value) => {
209
- const shifts = [...(schedForm.config?.shifts || [])];
210
- shifts[idx] = { ...shifts[idx], [field]: value };
211
- setSchedForm({ ...schedForm, config: { ...schedForm.config, shifts } });
212
- };
213
-
214
- const removeShift = (idx) => {
215
- const shifts = (schedForm.config?.shifts || []).filter((_, i) => i !== idx);
216
- setSchedForm({ ...schedForm, config: { ...schedForm.config, shifts } });
217
- };
218
-
219
- // --- Progress bar helper ---
220
- const progressBar = (used, cap, label) => {
221
- const pct = cap > 0 ? Math.min(100, (used / cap) * 100) : 0;
222
- const color = pct > 80 ? 'var(--danger)' : pct > 50 ? 'var(--warning)' : 'var(--success)';
223
- return h('div', { style: { marginBottom: 8 } },
224
- h('div', { style: { display: 'flex', justifyContent: 'space-between', fontSize: 12, marginBottom: 2 } },
225
- h('span', null, label),
226
- h('span', null, used.toLocaleString() + ' / ' + cap.toLocaleString())
227
- ),
228
- h('div', { style: { height: 8, borderRadius: 4, background: 'var(--bg-tertiary)', overflow: 'hidden' } },
229
- h('div', { style: { height: '100%', width: pct + '%', background: color, borderRadius: 4, transition: 'width 0.3s' } })
230
- )
231
- );
232
- };
233
-
234
- // --- Stat card helper ---
235
- const statCard = (label, value, color) => h('div', { className: 'card', style: { flex: 1, minWidth: 160, padding: 20, textAlign: 'center' } },
236
- h('div', { style: { display: 'flex', alignItems: 'center', justifyContent: 'center', gap: 8, marginBottom: 8 } },
237
- h('div', { style: { width: 10, height: 10, borderRadius: '50%', background: color } }),
238
- h('span', { style: { fontSize: 13, color: 'var(--text-muted)' } }, label)
239
- ),
240
- h('div', { style: { fontSize: 28, fontWeight: 700 } }, value)
241
- );
242
-
243
- // --- Badge helpers ---
244
- const statusBadge = (s) => {
245
- if (s === 'clocked_in') return h('span', { className: 'badge', style: { background: 'var(--success)', color: '#fff' } }, 'Clocked In');
246
- if (s === 'clocked_out') return h('span', { className: 'badge', style: { background: 'var(--warning)', color: '#fff' } }, 'Clocked Out');
247
- return h('span', { className: 'badge', style: { background: 'var(--text-muted)', color: '#fff' } }, 'No Schedule');
248
- };
249
-
250
- const typeBadge = (t) => {
251
- const colors = { continue: 'var(--info)', new: 'var(--primary)', scheduled: 'var(--warning)', delegation: 'var(--success)' };
252
- return h('span', { className: 'badge', style: { background: colors[t] || 'var(--text-muted)', color: '#fff' } }, t || 'unknown');
253
- };
254
-
255
- const eventBadge = (t) => {
256
- const map = { clock_in: ['Clocked In', 'var(--success)'], clock_out: ['Clocked Out', 'var(--warning)'], auto_wake: ['Auto Wake', 'var(--info)'], auto_pause: ['Auto Pause', 'var(--text-muted)'] };
257
- const [label, color] = map[t] || [t, 'var(--text-muted)'];
258
- return h('span', { className: 'badge', style: { background: color, color: '#fff' } }, label);
259
- };
260
-
261
- const schedTypeBadge = (t) => {
262
- const colors = { standard: 'var(--primary)', shift: 'var(--warning)', custom: 'var(--info)' };
263
- return h('span', { className: 'badge', style: { background: colors[t] || 'var(--text-muted)', color: '#fff' } }, (t || 'standard').charAt(0).toUpperCase() + (t || 'standard').slice(1));
264
- };
265
-
266
- const emailMap = buildAgentEmailMap(agents);
267
- const agentData = buildAgentDataMap(agents);
268
-
269
- if (loading) return h('div', { className: 'page-inner' },
270
- h('div', { className: 'page-header' }, h('h1', null, 'Workforce Management')),
271
- h('div', { style: { textAlign: 'center', padding: 60, color: 'var(--text-muted)' } }, 'Loading workforce data...')
272
- );
273
-
274
- // --- Tab definitions ---
275
- const tabs = [
276
- { key: 'overview', label: 'Overview', icon: I.dashboard },
277
- { key: 'schedules', label: 'Schedules', icon: I.calendar },
278
- { key: 'tasks', label: 'Task Queue', icon: I.workflow },
279
- { key: 'budgets', label: 'Budgets', icon: I.chart },
280
- { key: 'history', label: 'Clock History', icon: I.clock },
281
- ];
282
-
283
- var _h4 = { marginTop: 16, marginBottom: 8, fontSize: 14 };
284
- var _ul = { paddingLeft: 20, margin: '4px 0 8px' };
285
- var _tip = { marginTop: 12, padding: 12, background: 'var(--bg-secondary, #1e293b)', borderRadius: 'var(--radius, 8px)', fontSize: 13 };
286
-
287
- return h('div', { className: 'page-inner' },
288
- h(orgCtx.Switcher),
289
- h('div', { className: 'page-header' },
290
- h('h1', { style: { display: 'flex', alignItems: 'center' } }, 'Workforce Management', h(KnowledgeLink, { page: 'workforce' }), h(HelpButton, { label: 'Workforce Management' },
291
- h('p', null, 'Manage your agents like employees — set work schedules, assign tasks, track budgets, and monitor clock-in/out history.'),
292
- h('h4', { style: _h4 }, 'Key sections'),
293
- h('ul', { style: _ul },
294
- h('li', null, h('strong', null, 'Overview'), ' — See which agents are clocked in, off duty, or unscheduled.'),
295
- h('li', null, h('strong', null, 'Schedules'), ' — Define working hours, shifts, and auto-wake rules.'),
296
- h('li', null, h('strong', null, 'Task Queue'), ' — Assign and track tasks for specific agents.'),
297
- h('li', null, h('strong', null, 'Budgets'), ' — Set token caps to control agent spending.'),
298
- h('li', null, h('strong', null, 'Clock History'), ' — Audit trail of all clock-in/out events.')
299
- ),
300
- h('div', { style: _tip }, h('strong', null, 'Tip: '), 'Use schedules with auto-wake to have agents automatically start working at their scheduled time each day.')
301
- )),
302
- h('button', { className: 'btn btn-ghost', onClick: loadData }, I.refresh(), ' Refresh')
303
- ),
304
- // Tab bar
305
- h('div', { className: 'tabs', style: { marginBottom: 16 } },
306
- tabs.map(t => h('button', { key: t.key, className: 'tab' + (tab === t.key ? ' active' : ''), onClick: () => setTab(t.key), style: { display: 'flex', alignItems: 'center', gap: 6 } }, t.icon(), t.label))
307
- ),
308
-
309
- // ===== OVERVIEW TAB =====
310
- tab === 'overview' && h(Fragment, null,
311
- h('div', { style: { display: 'flex', gap: 16, marginBottom: 20, flexWrap: 'wrap' } },
312
- statCard('Agents Clocked In', status?.totalClocked || 0, 'var(--success)'),
313
- statCard('Agents Off Duty', status?.totalOff || 0, 'var(--warning)'),
314
- statCard('Unscheduled', status?.totalUnscheduled || 0, 'var(--text-muted)')
315
- ),
316
- h('div', { className: 'card' },
317
- h('table', { className: 'data-table' },
318
- h('thead', null, h('tr', null,
319
- h('th', null, 'Agent'),
320
- h('th', null, 'Status'),
321
- h('th', null, 'Schedule'),
322
- h('th', null, 'Next Event'),
323
- h('th', null, 'Actions')
324
- )),
325
- h('tbody', null,
326
- (!status?.agents || status.agents.length === 0)
327
- ? h('tr', { key: '_empty' }, h('td', { colSpan: 5, style: { textAlign: 'center', color: 'var(--text-muted)', padding: 40 } }, 'No agents found'))
328
- : status.agents.map(a => h('tr', { key: a.agentId },
329
- h('td', null, renderAgentBadge(a.agentId || a.id, agentData)),
330
- h('td', null, statusBadge(a.clockStatus || a.status)),
331
- h('td', null, a.schedule
332
- ? h(Fragment, null,
333
- schedTypeBadge(a.schedule.scheduleType || a.schedule.type || 'standard'),
334
- ' ',
335
- a.schedule.scheduleType === 'standard' && a.schedule.config?.standardHours
336
- ? (a.schedule.config.standardHours.start || '09:00') + ' - ' + (a.schedule.config.standardHours.end || '17:00')
337
- : a.schedule.scheduleType === 'shift' && a.schedule.config?.shifts?.length
338
- ? a.schedule.config.shifts[0].start + ' - ' + a.schedule.config.shifts[0].end
339
- : (a.schedule.start || '-') + ' - ' + (a.schedule.end || '-')
340
- )
341
- : h('span', { style: { color: 'var(--text-muted)' } }, 'None')),
342
- h('td', null, a.nextEvent
343
- ? h(Fragment, null,
344
- h('span', { className: 'badge', style: { background: a.nextEvent.type === 'clock_in' ? 'var(--success)' : 'var(--warning)', color: '#fff', marginRight: 4 } }, a.nextEvent.type === 'clock_in' ? 'Clock In' : 'Clock Out'),
345
- formatTime(a.nextEvent.at)
346
- )
347
- : '-'),
348
- h('td', { style: { display: 'flex', gap: 4 } },
349
- (a.clockStatus || a.status) !== 'clocked_in' && h('button', { className: 'btn btn-ghost btn-sm', onClick: () => handleClockIn(a.agentId || a.id) }, I.play(), ' Clock In'),
350
- (a.clockStatus || a.status) === 'clocked_in' && h('button', { className: 'btn btn-ghost btn-sm', onClick: () => handleClockOut(a.agentId || a.id) }, I.pause(), ' Clock Out')
351
- )
352
- ))
353
- )
354
- )
355
- )
356
- ),
357
-
358
- // ===== SCHEDULES TAB =====
359
- tab === 'schedules' && (function() {
360
- var filteredScheds = schedules.filter(function(s) {
361
- if (schedSearch) {
362
- var name = (agentData[s.agentId]?.name || agentData[s.agentId]?.displayName || s.agentId || '').toLowerCase();
363
- if (name.indexOf(schedSearch.toLowerCase()) === -1) return false;
364
- }
365
- if (schedTypeFilter && (s.scheduleType || 'standard') !== schedTypeFilter) return false;
366
- if (schedStatusFilter === 'enabled' && s.enabled === false) return false;
367
- if (schedStatusFilter === 'disabled' && s.enabled !== false) return false;
368
- return true;
369
- });
370
- var sTotal = filteredScheds.length;
371
- var sStart = (schedPage - 1) * schedPerPage;
372
- var sEnd = Math.min(sStart + schedPerPage, sTotal);
373
- var pageScheds = filteredScheds.slice(sStart, sEnd);
374
- return h(Fragment, null,
375
- h('div', { style: { display: 'flex', gap: 8, marginBottom: 12, flexWrap: 'wrap', alignItems: 'center' } },
376
- h('button', { className: 'btn btn-primary', onClick: openNewSchedule }, I.plus(), ' Create Schedule'),
377
- h('input', { className: 'input', style: { flex: 1, minWidth: 200 }, placeholder: 'Search agent name...', value: schedSearch, onChange: function(e) { setSchedSearch(e.target.value); setSchedPage(1); } }),
378
- h('select', { className: 'input', style: { width: 150 }, value: schedTypeFilter, onChange: function(e) { setSchedTypeFilter(e.target.value); setSchedPage(1); } },
379
- h('option', { value: '' }, 'All Types'),
380
- h('option', { value: 'standard' }, 'Standard'),
381
- h('option', { value: 'shift' }, 'Shift'),
382
- h('option', { value: 'custom' }, 'Custom')
383
- ),
384
- h('select', { className: 'input', style: { width: 140 }, value: schedStatusFilter, onChange: function(e) { setSchedStatusFilter(e.target.value); setSchedPage(1); } },
385
- h('option', { value: '' }, 'All Status'),
386
- h('option', { value: 'enabled' }, 'Enabled'),
387
- h('option', { value: 'disabled' }, 'Disabled')
388
- ),
389
- h('select', { className: 'input', style: { width: 80 }, value: schedPerPage, onChange: function(e) { setSchedPerPage(Number(e.target.value)); setSchedPage(1); } },
390
- h('option', { value: 10 }, '10'), h('option', { value: 25 }, '25'), h('option', { value: 50 }, '50')
391
- )
392
- ),
393
- sTotal === 0
394
- ? h('div', { className: 'card', style: { textAlign: 'center', padding: 40, color: 'var(--text-muted)' } }, 'No schedules configured')
395
- : h('div', { style: { display: 'grid', gridTemplateColumns: 'repeat(auto-fill, minmax(360px, 1fr))', gap: 16 } },
396
- pageScheds.map(s => h('div', { key: s.id, className: 'card', style: { padding: 20 } },
397
- h('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 12 } },
398
- renderAgentBadge(s.agentId, agentData),
399
- schedTypeBadge(s.scheduleType)
400
- ),
401
- h('div', { style: { fontSize: 13, color: 'var(--text-secondary)', marginBottom: 8 } },
402
- s.scheduleType === 'standard' && s.config?.standardHours
403
- ? formatDays(s.config.standardHours.daysOfWeek) + ' ' + (s.config.standardHours.start || '09:00') + ' - ' + (s.config.standardHours.end || '17:00')
404
- : s.scheduleType === 'shift' && s.config?.shifts
405
- ? s.config.shifts.map(sh => sh.name + ': ' + sh.start + '-' + sh.end).join(', ')
406
- : 'Custom schedule'
407
- ),
408
- h('div', { style: { fontSize: 12, color: 'var(--text-muted)', marginBottom: 8 } }, 'Timezone: ' + (s.timezone || 'UTC')),
409
- h('div', { style: { display: 'flex', gap: 8, flexWrap: 'wrap', fontSize: 12, marginBottom: 12 } },
410
- s.enforceClockIn !== false && h('span', { className: 'badge', style: { background: 'var(--bg-tertiary)' } }, 'Enforce Clock-In'),
411
- s.enforceClockOut !== false && h('span', { className: 'badge', style: { background: 'var(--bg-tertiary)' } }, 'Enforce Clock-Out'),
412
- s.autoWakeEnabled !== false && h('span', { className: 'badge', style: { background: 'var(--bg-tertiary)' } }, 'Auto-Wake'),
413
- h('span', { className: 'badge', style: { background: 'var(--bg-tertiary)' } }, 'Off-hours: ' + (s.offHoursAction || 'pause'))
414
- ),
415
- h('div', { style: { display: 'flex', gap: 8 } },
416
- h('button', { className: 'btn btn-ghost btn-sm', onClick: () => openEditSchedule(s) }, 'Edit'),
417
- h('button', { className: 'btn btn-ghost btn-sm', style: { color: 'var(--danger)' }, onClick: () => deleteSchedule(s.id) }, I.trash(), ' Delete')
418
- )
419
- ))
420
- ),
421
- sTotal > 0 && h('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', padding: '12px 0' } },
422
- h('span', { style: { fontSize: 13, color: 'var(--text-muted)' } }, 'Showing ' + (sStart + 1) + '-' + sEnd + ' of ' + sTotal),
423
- h('div', { style: { display: 'flex', gap: 4 } },
424
- h('button', { className: 'btn btn-ghost btn-sm', disabled: schedPage <= 1, onClick: function() { setSchedPage(schedPage - 1); } }, 'Previous'),
425
- h('button', { className: 'btn btn-ghost btn-sm', disabled: sEnd >= sTotal, onClick: function() { setSchedPage(schedPage + 1); } }, 'Next')
426
- )
427
- )
428
- ); })(),
429
-
430
- // ===== TASK QUEUE TAB =====
431
- tab === 'tasks' && (function() {
432
- var filteredTasks = tasks.filter(function(t) {
433
- if (taskSearch) {
434
- var s = taskSearch.toLowerCase();
435
- var title = (t.title || '').toLowerCase();
436
- var desc = (t.description || '').toLowerCase();
437
- if (title.indexOf(s) === -1 && desc.indexOf(s) === -1) return false;
438
- }
439
- if (taskStatusFilter && (t.status || '') !== taskStatusFilter) return false;
440
- if (taskPriorityFilter && (t.priority || 'normal') !== taskPriorityFilter) return false;
441
- if (taskAgentFilter && t.agentId !== taskAgentFilter) return false;
442
- return true;
443
- });
444
- var tTotal = filteredTasks.length;
445
- var tStart = (taskPage - 1) * taskPerPage;
446
- var tEnd = Math.min(tStart + taskPerPage, tTotal);
447
- var pageTasks = filteredTasks.slice(tStart, tEnd);
448
- return h(Fragment, null,
449
- h('div', { style: { marginBottom: 12, display: 'flex', gap: 8, flexWrap: 'wrap', alignItems: 'center' } },
450
- h('button', { className: 'btn btn-primary', onClick: function() { setShowTaskForm(!showTaskForm); } }, I.plus(), ' Add Task'),
451
- h('button', { className: 'btn btn-ghost', onClick: loadTasks }, I.refresh(), ' Refresh'),
452
- h('input', { className: 'input', style: { flex: 1, minWidth: 200 }, placeholder: 'Search title, description...', value: taskSearch, onChange: function(e) { setTaskSearch(e.target.value); setTaskPage(1); } }),
453
- h('select', { className: 'input', style: { width: 140 }, value: taskStatusFilter, onChange: function(e) { setTaskStatusFilter(e.target.value); setTaskPage(1); } },
454
- h('option', { value: '' }, 'All Status'),
455
- h('option', { value: 'pending' }, 'Pending'),
456
- h('option', { value: 'in_progress' }, 'In Progress'),
457
- h('option', { value: 'completed' }, 'Completed'),
458
- h('option', { value: 'cancelled' }, 'Cancelled')
459
- ),
460
- h('select', { className: 'input', style: { width: 120 }, value: taskPriorityFilter, onChange: function(e) { setTaskPriorityFilter(e.target.value); setTaskPage(1); } },
461
- h('option', { value: '' }, 'All Priority'),
462
- h('option', { value: 'low' }, 'Low'),
463
- h('option', { value: 'normal' }, 'Normal'),
464
- h('option', { value: 'high' }, 'High'),
465
- h('option', { value: 'critical' }, 'Critical')
466
- ),
467
- h('select', { className: 'input', style: { width: 160 }, value: taskAgentFilter, onChange: function(e) { setTaskAgentFilter(e.target.value); setTaskPage(1); } },
468
- h('option', { value: '' }, 'All Agents'),
469
- agents.map(function(a) { return h('option', { key: a.id, value: a.id }, a.config?.displayName || a.config?.name || a.name || a.id); })
470
- ),
471
- h('select', { className: 'input', style: { width: 80 }, value: taskPerPage, onChange: function(e) { setTaskPerPage(Number(e.target.value)); setTaskPage(1); } },
472
- h('option', { value: 10 }, '10'), h('option', { value: 25 }, '25'), h('option', { value: 50 }, '50')
473
- )
474
- ),
475
- showTaskForm && h('div', { className: 'card', style: { padding: 16, marginBottom: 16 } },
476
- h('div', { style: { display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 12 } },
477
- h('div', { className: 'form-group' },
478
- h('label', { className: 'form-label' }, 'Agent'),
479
- h('select', { className: 'input', value: taskForm.agentId, onChange: e => setTaskForm({ ...taskForm, agentId: e.target.value }) },
480
- h('option', { value: '' }, '-- Select Agent --'),
481
- agents.map(a => h('option', { key: a.id, value: a.id }, (a.config?.displayName || a.config?.name || a.name || 'Agent') + (a.config?.email?.address ? ' (' + a.config.email.address + ')' : '')))
482
- )
483
- ),
484
- h('div', { className: 'form-group' },
485
- h('label', { className: 'form-label' }, 'Title'),
486
- h('input', { className: 'input', value: taskForm.title, onChange: e => setTaskForm({ ...taskForm, title: e.target.value }), placeholder: 'Task title...' })
487
- ),
488
- h('div', { className: 'form-group', style: { gridColumn: '1 / -1' } },
489
- h('label', { className: 'form-label' }, 'Description'),
490
- h('input', { className: 'input', value: taskForm.description, onChange: e => setTaskForm({ ...taskForm, description: e.target.value }), placeholder: 'Task description...' })
491
- ),
492
- h('div', { className: 'form-group' },
493
- h('label', { className: 'form-label' }, 'Priority'),
494
- h('select', { className: 'input', value: taskForm.priority, onChange: e => setTaskForm({ ...taskForm, priority: e.target.value }) },
495
- h('option', { value: 'low' }, 'Low'), h('option', { value: 'normal' }, 'Normal'), h('option', { value: 'high' }, 'High'), h('option', { value: 'critical' }, 'Critical'))
496
- ),
497
- h('div', { className: 'form-group' },
498
- h('label', { className: 'form-label' }, 'Type'),
499
- h('select', { className: 'input', value: taskForm.type, onChange: e => setTaskForm({ ...taskForm, type: e.target.value }) },
500
- h('option', { value: 'new' }, 'New'), h('option', { value: 'continue' }, 'Continue'), h('option', { value: 'scheduled' }, 'Scheduled'), h('option', { value: 'delegation' }, 'Delegation'))
501
- )
502
- ),
503
- h('div', { style: { marginTop: 12, display: 'flex', gap: 8 } },
504
- h('button', { className: 'btn btn-primary', onClick: addTask }, 'Add Task'),
505
- h('button', { className: 'btn btn-ghost', onClick: () => setShowTaskForm(false) }, 'Cancel')
506
- )
507
- ),
508
- tTotal === 0
509
- ? h('div', { className: 'card', style: { textAlign: 'center', padding: 40, color: 'var(--text-muted)' } }, 'No tasks in queue')
510
- : h('div', { className: 'card' },
511
- h('table', { className: 'data-table' },
512
- h('thead', null, h('tr', null,
513
- h('th', null, 'Agent'), h('th', null, 'Type'), h('th', null, 'Title'), h('th', null, 'Priority'), h('th', null, 'Status'), h('th', null, 'Created'), h('th', null, 'Actions')
514
- )),
515
- h('tbody', null,
516
- pageTasks.map(function(t) { return h('tr', { key: t.id },
517
- h('td', null, renderAgentBadge(t.agentId, agentData)),
518
- h('td', null, typeBadge(t.type)),
519
- h('td', null, h('strong', null, t.title || '-')),
520
- h('td', null, h('span', { className: 'badge', style: { background: t.priority === 'critical' ? 'var(--danger)' : t.priority === 'high' ? 'var(--warning)' : 'var(--bg-tertiary)' } }, t.priority || 'normal')),
521
- h('td', null, t.status || '-'),
522
- h('td', null, formatTime(t.createdAt)),
523
- h('td', { style: { display: 'flex', gap: 4 } },
524
- h('button', { className: 'btn btn-ghost btn-sm', onClick: function() { completeTask(t.id); } }, I.check(), ' Done'),
525
- h('button', { className: 'btn btn-ghost btn-sm', style: { color: 'var(--danger)' }, onClick: function() { cancelTask(t.id); } }, I.x(), ' Cancel')
526
- )
527
- ); })
528
- )
529
- )
530
- ),
531
- tTotal > 0 && h('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', padding: '12px 0' } },
532
- h('span', { style: { fontSize: 13, color: 'var(--text-muted)' } }, 'Showing ' + (tStart + 1) + '-' + tEnd + ' of ' + tTotal),
533
- h('div', { style: { display: 'flex', gap: 4 } },
534
- h('button', { className: 'btn btn-ghost btn-sm', disabled: taskPage <= 1, onClick: function() { setTaskPage(taskPage - 1); } }, 'Previous'),
535
- h('button', { className: 'btn btn-ghost btn-sm', disabled: tEnd >= tTotal, onClick: function() { setTaskPage(taskPage + 1); } }, 'Next')
536
- )
537
- )
538
- ); })(),
539
-
540
- // ===== BUDGETS TAB =====
541
- tab === 'budgets' && (function() {
542
- var allBudgets = budgetData?.agentBudgets || [];
543
- var filteredBudgets = allBudgets.filter(function(a) {
544
- var name = (agentData[a.id]?.name || agentData[a.id]?.displayName || a.name || a.id || '').toLowerCase();
545
- if (budgetSearch && name.indexOf(budgetSearch.toLowerCase()) === -1) return false;
546
- if (budgetStatusFilter === 'over') {
547
- var over = (a.budget?.dailyTokens && a.usage?.tokensToday > a.budget.dailyTokens) || (a.budget?.dailyCost && a.usage?.costToday > a.budget.dailyCost);
548
- if (!over) return false;
549
- }
550
- if (budgetStatusFilter === 'under') {
551
- var hasBudget = a.budget && (a.budget.dailyTokens || a.budget.monthlyTokens || a.budget.dailyCost || a.budget.monthlyCost);
552
- var isOver = (a.budget?.dailyTokens && a.usage?.tokensToday > a.budget.dailyTokens) || (a.budget?.dailyCost && a.usage?.costToday > a.budget.dailyCost);
553
- if (!hasBudget || isOver) return false;
554
- }
555
- if (budgetStatusFilter === 'none') {
556
- var has = a.budget && (a.budget.dailyTokens || a.budget.monthlyTokens || a.budget.dailyCost || a.budget.monthlyCost);
557
- if (has) return false;
558
- }
559
- return true;
560
- });
561
- var bTotal = filteredBudgets.length;
562
- var bStart = (budgetPage - 1) * budgetPerPage;
563
- var bEnd = Math.min(bStart + budgetPerPage, bTotal);
564
- var pageBudgets = filteredBudgets.slice(bStart, bEnd);
565
- return h(Fragment, null,
566
- // Summary stats
567
- budgetData && h('div', { style: { display: 'flex', gap: 16, marginBottom: 16, flexWrap: 'wrap' } },
568
- statCard('Total Daily Tokens', (budgetData.totalDailyTokens || 0).toLocaleString(), 'var(--primary)'),
569
- statCard('Total Daily Cost', '$' + (budgetData.totalDailyCost || 0).toFixed(4), 'var(--warning)')
570
- ),
571
- // Filter bar
572
- h('div', { style: { display: 'flex', gap: 8, marginBottom: 12, flexWrap: 'wrap', alignItems: 'center' } },
573
- h('input', { className: 'input', style: { flex: 1, minWidth: 200 }, placeholder: 'Search agent name...', value: budgetSearch, onChange: function(e) { setBudgetSearch(e.target.value); setBudgetPage(1); } }),
574
- h('select', { className: 'input', style: { width: 160 }, value: budgetStatusFilter, onChange: function(e) { setBudgetStatusFilter(e.target.value); setBudgetPage(1); } },
575
- h('option', { value: '' }, 'All Budgets'),
576
- h('option', { value: 'over' }, 'Over Budget'),
577
- h('option', { value: 'under' }, 'Under Budget'),
578
- h('option', { value: 'none' }, 'No Budget Set')
579
- ),
580
- h('select', { className: 'input', style: { width: 80 }, value: budgetPerPage, onChange: function(e) { setBudgetPerPage(Number(e.target.value)); setBudgetPage(1); } },
581
- h('option', { value: 10 }, '10'), h('option', { value: 25 }, '25'), h('option', { value: 50 }, '50')
582
- )
583
- ),
584
- bTotal === 0
585
- ? h('div', { className: 'card', style: { textAlign: 'center', padding: 40, color: 'var(--text-muted)' } }, 'No budget data available')
586
- : h('div', { style: { display: 'grid', gridTemplateColumns: 'repeat(auto-fill, minmax(380px, 1fr))', gap: 16 } },
587
- pageBudgets.map(function(a) {
588
- var aid = a.id;
589
- var agentInfo = agentData[aid] || {};
590
- return h('div', { key: aid, className: 'card', style: { padding: 20 } },
591
- h('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 16 } },
592
- h('div', { style: { display: 'flex', alignItems: 'center', gap: 12 } },
593
- agentInfo.avatar
594
- ? h('img', { src: agentInfo.avatar, style: { width: 40, height: 40, borderRadius: '50%', objectFit: 'cover', flexShrink: 0 } })
595
- : h('div', { style: { width: 40, height: 40, borderRadius: '50%', background: 'var(--accent-soft)', color: 'var(--accent-text)', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: 16, fontWeight: 600, flexShrink: 0 } }, (agentInfo.name || a.name || 'A').charAt(0).toUpperCase()),
596
- h('div', { style: { lineHeight: 1.3 } },
597
- h('div', { style: { fontWeight: 600, fontSize: 14 } }, agentInfo.name || a.name || 'Agent'),
598
- h('div', { style: { fontSize: 12, color: 'var(--text-muted)' } }, agentInfo.email || aid.slice(0, 8))
599
- )
600
- ),
601
- editingBudgetAgent === aid
602
- ? h('button', { className: 'btn btn-primary btn-sm', onClick: function() { saveBudgetCaps(aid); } }, 'Save')
603
- : h('button', { className: 'btn btn-ghost btn-sm', onClick: function() { setEditingBudgetAgent(aid); setBudgetForm({ dailyTokens: a.budget?.dailyTokens || 0, monthlyTokens: a.budget?.monthlyTokens || 0, dailyCost: a.budget?.dailyCost || 0, monthlyCost: a.budget?.monthlyCost || 0, enabled: a.budget?.enabled !== false }); } }, 'Edit Caps')
604
- ),
605
- editingBudgetAgent === aid
606
- ? h('div', { style: { display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 8 } },
607
- h('div', { className: 'form-group' },
608
- h('label', { className: 'form-label' }, 'Daily Token Cap'),
609
- h('input', { className: 'input', type: 'number', value: budgetForm.dailyTokens, onChange: function(e) { setBudgetForm({ ...budgetForm, dailyTokens: parseInt(e.target.value) || 0 }); } })
610
- ),
611
- h('div', { className: 'form-group' },
612
- h('label', { className: 'form-label' }, 'Monthly Token Cap'),
613
- h('input', { className: 'input', type: 'number', value: budgetForm.monthlyTokens, onChange: function(e) { setBudgetForm({ ...budgetForm, monthlyTokens: parseInt(e.target.value) || 0 }); } })
614
- ),
615
- h('div', { className: 'form-group' },
616
- h('label', { className: 'form-label' }, 'Daily Cost Cap ($)'),
617
- h('input', { className: 'input', type: 'number', step: '0.01', value: budgetForm.dailyCost, onChange: function(e) { setBudgetForm({ ...budgetForm, dailyCost: parseFloat(e.target.value) || 0 }); } })
618
- ),
619
- h('div', { className: 'form-group' },
620
- h('label', { className: 'form-label' }, 'Monthly Cost Cap ($)'),
621
- h('input', { className: 'input', type: 'number', step: '0.01', value: budgetForm.monthlyCost, onChange: function(e) { setBudgetForm({ ...budgetForm, monthlyCost: parseFloat(e.target.value) || 0 }); } })
622
- ),
623
- h('label', { style: { display: 'flex', alignItems: 'center', gap: 6, cursor: 'pointer', fontSize: 13, gridColumn: '1 / -1' } },
624
- h('input', { type: 'checkbox', checked: budgetForm.enabled, onChange: function(e) { setBudgetForm({ ...budgetForm, enabled: e.target.checked }); } }),
625
- 'Budget Enabled'
626
- ),
627
- h('button', { className: 'btn btn-ghost btn-sm', style: { gridColumn: '1 / -1' }, onClick: function() { setEditingBudgetAgent(null); } }, 'Cancel')
628
- )
629
- : h(Fragment, null,
630
- progressBar(a.usage?.tokensToday || 0, a.budget?.dailyTokens || 0, 'Daily Tokens'),
631
- progressBar(a.usage?.tokensMonth || 0, a.budget?.monthlyTokens || 0, 'Monthly Tokens'),
632
- h('div', { style: { fontSize: 12, color: 'var(--text-muted)', marginTop: 8 } },
633
- 'Daily cost: $' + (a.usage?.costToday || 0).toFixed(4) + (a.budget?.dailyCost ? ' / $' + a.budget.dailyCost.toFixed(2) : '')
634
- ),
635
- a.budget?.monthlyCost && h('div', { style: { fontSize: 12, color: 'var(--text-muted)', marginTop: 4 } },
636
- 'Monthly cost: $' + (a.usage?.costMonth || 0).toFixed(4) + ' / $' + a.budget.monthlyCost.toFixed(2)
637
- )
638
- )
639
- );
640
- })
641
- ),
642
- bTotal > 0 && h('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', padding: '12px 0' } },
643
- h('span', { style: { fontSize: 13, color: 'var(--text-muted)' } }, 'Showing ' + (bStart + 1) + '-' + bEnd + ' of ' + bTotal),
644
- h('div', { style: { display: 'flex', gap: 4 } },
645
- h('button', { className: 'btn btn-ghost btn-sm', disabled: budgetPage <= 1, onClick: function() { setBudgetPage(budgetPage - 1); } }, 'Previous'),
646
- h('button', { className: 'btn btn-ghost btn-sm', disabled: bEnd >= bTotal, onClick: function() { setBudgetPage(budgetPage + 1); } }, 'Next')
647
- )
648
- )
649
- );
650
- })(),
651
-
652
- // ===== CLOCK HISTORY TAB =====
653
- tab === 'history' && (function() {
654
- var filtered = clockRecords.filter(function(r) {
655
- if (historySearch) {
656
- var s = historySearch.toLowerCase();
657
- var name = (agentData[r.agentId]?.name || agentData[r.agentId]?.displayName || r.agentId || '').toLowerCase();
658
- var reason = (r.reason || '').toLowerCase();
659
- var trig = (r.triggeredBy || '').toLowerCase();
660
- if (name.indexOf(s) === -1 && reason.indexOf(s) === -1 && trig.indexOf(s) === -1) return false;
661
- }
662
- if (historyEventFilter && (r.eventType || r.type) !== historyEventFilter) return false;
663
- if (historyAgentFilter && r.agentId !== historyAgentFilter) return false;
664
- return true;
665
- });
666
- var hTotal = filtered.length;
667
- var hStart = (historyPage - 1) * historyPerPage;
668
- var hEnd = Math.min(hStart + historyPerPage, hTotal);
669
- var pageRecords = filtered.slice(hStart, hEnd);
670
- return h(Fragment, null,
671
- h('div', { style: { display: 'flex', gap: 8, marginBottom: 12, flexWrap: 'wrap', alignItems: 'center' } },
672
- h('input', { className: 'input', style: { flex: 1, minWidth: 200 }, placeholder: 'Search agent, reason, triggered by...', value: historySearch, onChange: function(e) { setHistorySearch(e.target.value); setHistoryPage(1); } }),
673
- h('select', { className: 'input', style: { width: 150 }, value: historyEventFilter, onChange: function(e) { setHistoryEventFilter(e.target.value); setHistoryPage(1); } },
674
- h('option', { value: '' }, 'All Events'),
675
- h('option', { value: 'clock_in' }, 'Clock In'),
676
- h('option', { value: 'clock_out' }, 'Clock Out'),
677
- h('option', { value: 'auto_wake' }, 'Auto Wake'),
678
- h('option', { value: 'auto_pause' }, 'Auto Pause')
679
- ),
680
- h('select', { className: 'input', style: { width: 160 }, value: historyAgentFilter, onChange: function(e) { setHistoryAgentFilter(e.target.value); setHistoryPage(1); } },
681
- h('option', { value: '' }, 'All Agents'),
682
- agents.map(function(a) { return h('option', { key: a.id, value: a.id }, a.config?.displayName || a.config?.name || a.name || a.id); })
683
- ),
684
- h('select', { className: 'input', style: { width: 80 }, value: historyPerPage, onChange: function(e) { setHistoryPerPage(Number(e.target.value)); setHistoryPage(1); } },
685
- h('option', { value: 10 }, '10'), h('option', { value: 25 }, '25'), h('option', { value: 50 }, '50')
686
- )
687
- ),
688
- h('div', { className: 'card' },
689
- h('table', { className: 'data-table' },
690
- h('thead', null, h('tr', null,
691
- h('th', null, 'Time'), h('th', null, 'Agent'), h('th', null, 'Event'), h('th', null, 'Triggered By'), h('th', null, 'Scheduled At'), h('th', null, 'Reason')
692
- )),
693
- h('tbody', null,
694
- pageRecords.length === 0
695
- ? h('tr', { key: '_empty' }, h('td', { colSpan: 6, style: { textAlign: 'center', color: 'var(--text-muted)', padding: 40 } }, 'No clock records found'))
696
- : pageRecords.map(function(r, i) { return h('tr', { key: r.id || i, onClick: function() { setSelectedRecord(r); }, style: { cursor: 'pointer' }, title: 'Click to view details' },
697
- h('td', null, formatTime(r.timestamp || r.createdAt)),
698
- h('td', null, renderAgentBadge(r.agentId, agentData)),
699
- h('td', null, eventBadge(r.eventType || r.type)),
700
- h('td', null, r.triggeredBy || '-'),
701
- h('td', null, r.scheduledAt ? formatTime(r.scheduledAt) : '-'),
702
- h('td', { style: { maxWidth: 200, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } }, r.reason || '-')
703
- ); })
704
- )
705
- )
706
- ),
707
- hTotal > 0 && h('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', padding: '12px 0' } },
708
- h('span', { style: { fontSize: 13, color: 'var(--text-muted)' } }, 'Showing ' + (hStart + 1) + '-' + hEnd + ' of ' + hTotal),
709
- h('div', { style: { display: 'flex', gap: 4 } },
710
- h('button', { className: 'btn btn-ghost btn-sm', disabled: historyPage <= 1, onClick: function() { setHistoryPage(historyPage - 1); } }, 'Previous'),
711
- h('button', { className: 'btn btn-ghost btn-sm', disabled: hEnd >= hTotal, onClick: function() { setHistoryPage(historyPage + 1); } }, 'Next')
712
- )
713
- )
714
- );
715
- })(),
716
-
717
- // ===== SCHEDULE EDITOR MODAL =====
718
- // ===== CLOCK RECORD DETAIL MODAL =====
719
- selectedRecord && h(DetailModal, {
720
- title: 'Clock Record Details',
721
- onClose: function() { setSelectedRecord(null); },
722
- badge: {
723
- label: (selectedRecord.eventType || selectedRecord.type || 'unknown').replace(/_/g, ' ').toUpperCase(),
724
- color: (selectedRecord.eventType || selectedRecord.type) === 'clock_in' ? 'var(--success)' : (selectedRecord.eventType || selectedRecord.type) === 'clock_out' ? 'var(--warning)' : 'var(--info)',
725
- },
726
- header: h('div', { style: { display: 'flex', alignItems: 'center', gap: 8 } },
727
- renderAgentBadge(selectedRecord.agentId, agentData)
728
- ),
729
- data: {
730
- 'Record ID': selectedRecord.id || '-',
731
- 'Event Type': (selectedRecord.eventType || selectedRecord.type || '-').replace(/_/g, ' '),
732
- 'Agent ID': selectedRecord.agentId || '-',
733
- 'Timestamp': formatTime(selectedRecord.timestamp || selectedRecord.createdAt),
734
- 'Triggered By': selectedRecord.triggeredBy || '-',
735
- 'Scheduled At': selectedRecord.scheduledAt ? formatTime(selectedRecord.scheduledAt) : '-',
736
- 'Reason': selectedRecord.reason || '-',
737
- 'Duration': selectedRecord.duration ? (Math.round(selectedRecord.duration / 60) + ' min') : selectedRecord.durationMs ? (Math.round(selectedRecord.durationMs / 60000) + ' min') : '-',
738
- 'Schedule ID': selectedRecord.scheduleId || '-',
739
- 'IP Address': selectedRecord.ip || selectedRecord.ipAddress || '-',
740
- 'Session ID': selectedRecord.sessionId || '-',
741
- 'Metadata': selectedRecord.metadata ? JSON.stringify(selectedRecord.metadata) : '-',
742
- },
743
- exclude: [],
744
- }),
745
-
746
- showScheduleModal && h('div', { className: 'modal-overlay', onClick: () => { setShowScheduleModal(false); setEditingScheduleId(null); } },
747
- h('div', { className: 'modal', style: { maxWidth: 560 }, onClick: e => e.stopPropagation() },
748
- h('div', { className: 'modal-header' },
749
- h('h2', null, editingScheduleId ? 'Edit Schedule' : 'Create Schedule'),
750
- h('button', { className: 'btn btn-ghost btn-icon', onClick: () => { setShowScheduleModal(false); setEditingScheduleId(null); } }, I.x())
751
- ),
752
- h('div', { className: 'modal-body' },
753
- // Agent
754
- h('div', { className: 'form-group' },
755
- h('label', { className: 'form-label' }, 'Agent'),
756
- h('select', { className: 'input', value: schedForm.agentId, onChange: e => setSchedForm({ ...schedForm, agentId: e.target.value }) },
757
- h('option', { value: '' }, '-- Select Agent --'),
758
- agents.map(a => h('option', { key: a.id, value: a.id }, (a.config?.displayName || a.config?.name || a.name || 'Agent') + (a.config?.email?.address ? ' (' + a.config.email.address + ')' : '')))
759
- )
760
- ),
761
- // Schedule type
762
- h('div', { className: 'form-group' },
763
- h('label', { className: 'form-label' }, 'Schedule Type'),
764
- h('div', { style: { display: 'flex', gap: 16 } },
765
- ['standard', 'shift', 'custom'].map(t => h('label', { key: t, style: { display: 'flex', alignItems: 'center', gap: 4, cursor: 'pointer' } },
766
- h('input', { type: 'radio', name: 'schedType', checked: schedForm.scheduleType === t, onChange: () => setSchedForm({ ...schedForm, scheduleType: t }) }),
767
- t.charAt(0).toUpperCase() + t.slice(1)
768
- ))
769
- )
770
- ),
771
- // Standard fields
772
- schedForm.scheduleType === 'standard' && h(Fragment, null,
773
- h('div', { style: { display: 'flex', gap: 12 } },
774
- h('div', { className: 'form-group', style: { flex: 1 } },
775
- h('label', { className: 'form-label' }, 'Start Time'),
776
- h('input', { className: 'input', type: 'time', value: schedForm.config?.standardHours?.start || '09:00', onChange: e => setSchedForm({ ...schedForm, config: { ...schedForm.config, standardHours: { ...schedForm.config.standardHours, start: e.target.value } } }) })
777
- ),
778
- h('div', { className: 'form-group', style: { flex: 1 } },
779
- h('label', { className: 'form-label' }, 'End Time'),
780
- h('input', { className: 'input', type: 'time', value: schedForm.config?.standardHours?.end || '17:00', onChange: e => setSchedForm({ ...schedForm, config: { ...schedForm.config, standardHours: { ...schedForm.config.standardHours, end: e.target.value } } }) })
781
- )
782
- ),
783
- h('div', { className: 'form-group' },
784
- h('label', { className: 'form-label' }, 'Days of Week'),
785
- h('div', { style: { display: 'flex', gap: 6, flexWrap: 'wrap' } },
786
- [0, 1, 2, 3, 4, 5, 6].map(d => h('button', {
787
- key: d, type: 'button',
788
- className: 'btn btn-sm ' + ((schedForm.config?.standardHours?.daysOfWeek || []).includes(d) ? 'btn-primary' : 'btn-ghost'),
789
- onClick: () => toggleDay(d)
790
- }, dayNames[d]))
791
- )
792
- )
793
- ),
794
- // Shift fields
795
- schedForm.scheduleType === 'shift' && h(Fragment, null,
796
- h('div', { className: 'form-group' },
797
- h('label', { className: 'form-label' }, 'Shifts'),
798
- (schedForm.config?.shifts || []).map((sh, idx) => h('div', { key: idx, style: { display: 'flex', gap: 8, alignItems: 'center', marginBottom: 8, padding: 8, background: 'var(--bg-tertiary)', borderRadius: 6 } },
799
- h('input', { className: 'input', style: { flex: 1 }, placeholder: 'Shift name', value: sh.name, onChange: e => updateShift(idx, 'name', e.target.value) }),
800
- h('input', { className: 'input', type: 'time', style: { width: 110 }, value: sh.start, onChange: e => updateShift(idx, 'start', e.target.value) }),
801
- h('input', { className: 'input', type: 'time', style: { width: 110 }, value: sh.end, onChange: e => updateShift(idx, 'end', e.target.value) }),
802
- h('button', { className: 'btn btn-ghost btn-icon btn-sm', onClick: () => removeShift(idx) }, I.x())
803
- )),
804
- h('button', { className: 'btn btn-ghost btn-sm', onClick: addShift }, I.plus(), ' Add Shift')
805
- )
806
- ),
807
- // Timezone
808
- h('div', { className: 'form-group' },
809
- h('label', { className: 'form-label' }, 'Timezone'),
810
- TimezoneSelect(h, schedForm.timezone, e => setSchedForm({ ...schedForm, timezone: e.target.value }))
811
- ),
812
- // Toggles
813
- h('div', { style: { display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 12 } },
814
- h('label', { style: { display: 'flex', alignItems: 'center', gap: 6, cursor: 'pointer', fontSize: 13 } },
815
- h('input', { type: 'checkbox', checked: schedForm.enforceClockIn, onChange: e => setSchedForm({ ...schedForm, enforceClockIn: e.target.checked }) }),
816
- 'Enforce Clock-In'
817
- ),
818
- h('label', { style: { display: 'flex', alignItems: 'center', gap: 6, cursor: 'pointer', fontSize: 13 } },
819
- h('input', { type: 'checkbox', checked: schedForm.enforceClockOut, onChange: e => setSchedForm({ ...schedForm, enforceClockOut: e.target.checked }) }),
820
- 'Enforce Clock-Out'
821
- ),
822
- h('label', { style: { display: 'flex', alignItems: 'center', gap: 6, cursor: 'pointer', fontSize: 13 } },
823
- h('input', { type: 'checkbox', checked: schedForm.autoWakeEnabled, onChange: e => setSchedForm({ ...schedForm, autoWakeEnabled: e.target.checked }) }),
824
- 'Auto-Wake'
825
- ),
826
- h('label', { style: { display: 'flex', alignItems: 'center', gap: 6, cursor: 'pointer', fontSize: 13 } },
827
- h('input', { type: 'checkbox', checked: schedForm.enabled, onChange: e => setSchedForm({ ...schedForm, enabled: e.target.checked }) }),
828
- 'Enabled'
829
- )
830
- ),
831
- // Off-hours action + grace period
832
- h('div', { style: { display: 'flex', gap: 12, marginTop: 12 } },
833
- h('div', { className: 'form-group', style: { flex: 1 } },
834
- h('label', { className: 'form-label' }, 'Off-Hours Action'),
835
- h('select', { className: 'input', value: schedForm.offHoursAction, onChange: e => setSchedForm({ ...schedForm, offHoursAction: e.target.value }) },
836
- h('option', { value: 'pause' }, 'Pause'), h('option', { value: 'stop' }, 'Stop'), h('option', { value: 'queue' }, 'Queue'))
837
- ),
838
- h('div', { className: 'form-group', style: { flex: 1 } },
839
- h('label', { className: 'form-label' }, 'Grace Period (min)'),
840
- h('input', { className: 'input', type: 'number', value: schedForm.gracePeriodMinutes, onChange: e => setSchedForm({ ...schedForm, gracePeriodMinutes: parseInt(e.target.value) || 0 }) })
841
- )
842
- )
843
- ),
844
- h('div', { className: 'modal-footer' },
845
- h('button', { className: 'btn btn-ghost', onClick: () => { setShowScheduleModal(false); setEditingScheduleId(null); } }, 'Cancel'),
846
- h('button', { className: 'btn btn-primary', onClick: saveSchedule }, editingScheduleId ? 'Update Schedule' : 'Create Schedule')
847
- )
848
- )
849
- )
850
- );
851
- }