libre-webui 0.26.0 → 0.28.0

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 (395) hide show
  1. package/README.md +57 -29
  2. package/backend/dist/index.d.ts.map +1 -1
  3. package/backend/dist/index.js +7 -0
  4. package/backend/dist/index.js.map +1 -1
  5. package/backend/dist/persistence/postgresAutomationWorkTargetMigration.d.ts +9 -0
  6. package/backend/dist/persistence/postgresAutomationWorkTargetMigration.d.ts.map +1 -0
  7. package/backend/dist/persistence/postgresAutomationWorkTargetMigration.js +44 -0
  8. package/backend/dist/persistence/postgresAutomationWorkTargetMigration.js.map +1 -0
  9. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.d.ts +9 -0
  10. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.d.ts.map +1 -0
  11. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.js +107 -0
  12. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.js.map +1 -0
  13. package/backend/dist/persistence/postgresMigrationRegistry.d.ts.map +1 -1
  14. package/backend/dist/persistence/postgresMigrationRegistry.js +8 -0
  15. package/backend/dist/persistence/postgresMigrationRegistry.js.map +1 -1
  16. package/backend/dist/persistence/postgresResourceRepositories.d.ts.map +1 -1
  17. package/backend/dist/persistence/postgresResourceRepositories.js +179 -4
  18. package/backend/dist/persistence/postgresResourceRepositories.js.map +1 -1
  19. package/backend/dist/persistence/postgresSecurityRepositories.d.ts.map +1 -1
  20. package/backend/dist/persistence/postgresSecurityRepositories.js +154 -0
  21. package/backend/dist/persistence/postgresSecurityRepositories.js.map +1 -1
  22. package/backend/dist/persistence/postgresWorkComputerMigration.d.ts +8 -0
  23. package/backend/dist/persistence/postgresWorkComputerMigration.d.ts.map +1 -0
  24. package/backend/dist/persistence/postgresWorkComputerMigration.js +37 -0
  25. package/backend/dist/persistence/postgresWorkComputerMigration.js.map +1 -0
  26. package/backend/dist/persistence/postgresWorkTakeoverMigration.d.ts +9 -0
  27. package/backend/dist/persistence/postgresWorkTakeoverMigration.d.ts.map +1 -0
  28. package/backend/dist/persistence/postgresWorkTakeoverMigration.js +38 -0
  29. package/backend/dist/persistence/postgresWorkTakeoverMigration.js.map +1 -0
  30. package/backend/dist/persistence/resourceTypes.d.ts +64 -0
  31. package/backend/dist/persistence/resourceTypes.d.ts.map +1 -1
  32. package/backend/dist/persistence/resourceTypes.js.map +1 -1
  33. package/backend/dist/persistence/securityTypes.d.ts +60 -0
  34. package/backend/dist/persistence/securityTypes.d.ts.map +1 -1
  35. package/backend/dist/persistence/sqliteMigrations.d.ts +4 -0
  36. package/backend/dist/persistence/sqliteMigrations.d.ts.map +1 -1
  37. package/backend/dist/persistence/sqliteMigrations.js +267 -0
  38. package/backend/dist/persistence/sqliteMigrations.js.map +1 -1
  39. package/backend/dist/persistence/sqliteResourceRepositories.d.ts.map +1 -1
  40. package/backend/dist/persistence/sqliteResourceRepositories.js +151 -7
  41. package/backend/dist/persistence/sqliteResourceRepositories.js.map +1 -1
  42. package/backend/dist/persistence/sqliteSecurityRepositories.d.ts.map +1 -1
  43. package/backend/dist/persistence/sqliteSecurityRepositories.js +140 -0
  44. package/backend/dist/persistence/sqliteSecurityRepositories.js.map +1 -1
  45. package/backend/dist/persistence/sqliteToPostgresMigration.d.ts.map +1 -1
  46. package/backend/dist/persistence/sqliteToPostgresMigration.js +45 -0
  47. package/backend/dist/persistence/sqliteToPostgresMigration.js.map +1 -1
  48. package/backend/dist/platform/jobs/domainJobContracts.d.ts +2 -0
  49. package/backend/dist/platform/jobs/domainJobContracts.d.ts.map +1 -1
  50. package/backend/dist/platform/jobs/domainJobContracts.js +2 -0
  51. package/backend/dist/platform/jobs/domainJobContracts.js.map +1 -1
  52. package/backend/dist/platform/jobs/domainJobHandlers.d.ts.map +1 -1
  53. package/backend/dist/platform/jobs/domainJobHandlers.js +152 -2
  54. package/backend/dist/platform/jobs/domainJobHandlers.js.map +1 -1
  55. package/backend/dist/platform/workPersistence/postgresWorkPersistence.d.ts.map +1 -1
  56. package/backend/dist/platform/workPersistence/postgresWorkPersistence.js +7 -3
  57. package/backend/dist/platform/workPersistence/postgresWorkPersistence.js.map +1 -1
  58. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.d.ts.map +1 -1
  59. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js +8 -4
  60. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js.map +1 -1
  61. package/backend/dist/platform/workPersistence/types.d.ts +2 -0
  62. package/backend/dist/platform/workPersistence/types.d.ts.map +1 -1
  63. package/backend/dist/platform/workPersistence/types.js.map +1 -1
  64. package/backend/dist/routes/auth.d.ts.map +1 -1
  65. package/backend/dist/routes/auth.js +427 -5
  66. package/backend/dist/routes/auth.js.map +1 -1
  67. package/backend/dist/routes/automations.d.ts.map +1 -1
  68. package/backend/dist/routes/automations.js +5 -0
  69. package/backend/dist/routes/automations.js.map +1 -1
  70. package/backend/dist/routes/documents.d.ts.map +1 -1
  71. package/backend/dist/routes/documents.js +4 -0
  72. package/backend/dist/routes/documents.js.map +1 -1
  73. package/backend/dist/routes/push.d.ts +3 -0
  74. package/backend/dist/routes/push.d.ts.map +1 -0
  75. package/backend/dist/routes/push.js +105 -0
  76. package/backend/dist/routes/push.js.map +1 -0
  77. package/backend/dist/routes/recovery.d.ts +3 -0
  78. package/backend/dist/routes/recovery.d.ts.map +1 -0
  79. package/backend/dist/routes/recovery.js +83 -0
  80. package/backend/dist/routes/recovery.js.map +1 -0
  81. package/backend/dist/routes/users.d.ts.map +1 -1
  82. package/backend/dist/routes/users.js +35 -0
  83. package/backend/dist/routes/users.js.map +1 -1
  84. package/backend/dist/routes/work.d.ts.map +1 -1
  85. package/backend/dist/routes/work.js +205 -1
  86. package/backend/dist/routes/work.js.map +1 -1
  87. package/backend/dist/services/authService.d.ts +8 -0
  88. package/backend/dist/services/authService.d.ts.map +1 -1
  89. package/backend/dist/services/authService.js +29 -0
  90. package/backend/dist/services/authService.js.map +1 -1
  91. package/backend/dist/services/automationSchedulerService.d.ts.map +1 -1
  92. package/backend/dist/services/automationSchedulerService.js +31 -0
  93. package/backend/dist/services/automationSchedulerService.js.map +1 -1
  94. package/backend/dist/services/automationService.d.ts +4 -1
  95. package/backend/dist/services/automationService.d.ts.map +1 -1
  96. package/backend/dist/services/automationService.js +27 -0
  97. package/backend/dist/services/automationService.js.map +1 -1
  98. package/backend/dist/services/dataArchiveService.d.ts.map +1 -1
  99. package/backend/dist/services/dataArchiveService.js +3 -0
  100. package/backend/dist/services/dataArchiveService.js.map +1 -1
  101. package/backend/dist/services/documentMediaExtractionService.d.ts +40 -0
  102. package/backend/dist/services/documentMediaExtractionService.d.ts.map +1 -0
  103. package/backend/dist/services/documentMediaExtractionService.js +157 -0
  104. package/backend/dist/services/documentMediaExtractionService.js.map +1 -0
  105. package/backend/dist/services/documentService.d.ts +6 -0
  106. package/backend/dist/services/documentService.d.ts.map +1 -1
  107. package/backend/dist/services/documentService.js +58 -4
  108. package/backend/dist/services/documentService.js.map +1 -1
  109. package/backend/dist/services/encryptionService.d.ts +6 -0
  110. package/backend/dist/services/encryptionService.d.ts.map +1 -1
  111. package/backend/dist/services/encryptionService.js +12 -0
  112. package/backend/dist/services/encryptionService.js.map +1 -1
  113. package/backend/dist/services/mfaService.d.ts +64 -0
  114. package/backend/dist/services/mfaService.d.ts.map +1 -0
  115. package/backend/dist/services/mfaService.js +262 -0
  116. package/backend/dist/services/mfaService.js.map +1 -0
  117. package/backend/dist/services/notificationService.d.ts +5 -0
  118. package/backend/dist/services/notificationService.d.ts.map +1 -1
  119. package/backend/dist/services/notificationService.js +33 -1
  120. package/backend/dist/services/notificationService.js.map +1 -1
  121. package/backend/dist/services/preferencesService.d.ts +1 -1
  122. package/backend/dist/services/preferencesService.d.ts.map +1 -1
  123. package/backend/dist/services/preferencesService.js +1 -0
  124. package/backend/dist/services/preferencesService.js.map +1 -1
  125. package/backend/dist/services/recoveryDrillService.d.ts +57 -0
  126. package/backend/dist/services/recoveryDrillService.d.ts.map +1 -0
  127. package/backend/dist/services/recoveryDrillService.js +363 -0
  128. package/backend/dist/services/recoveryDrillService.js.map +1 -0
  129. package/backend/dist/services/webPushService.d.ts +71 -0
  130. package/backend/dist/services/webPushService.d.ts.map +1 -0
  131. package/backend/dist/services/webPushService.js +328 -0
  132. package/backend/dist/services/webPushService.js.map +1 -0
  133. package/backend/dist/services/webauthnService.d.ts +58 -0
  134. package/backend/dist/services/webauthnService.d.ts.map +1 -0
  135. package/backend/dist/services/webauthnService.js +301 -0
  136. package/backend/dist/services/webauthnService.js.map +1 -0
  137. package/backend/dist/services/websocketTicketService.d.ts +1 -1
  138. package/backend/dist/services/websocketTicketService.d.ts.map +1 -1
  139. package/backend/dist/services/websocketTicketService.js +3 -1
  140. package/backend/dist/services/websocketTicketService.js.map +1 -1
  141. package/backend/dist/services/workAgentGuidance.d.ts +14 -0
  142. package/backend/dist/services/workAgentGuidance.d.ts.map +1 -1
  143. package/backend/dist/services/workAgentGuidance.js +38 -2
  144. package/backend/dist/services/workAgentGuidance.js.map +1 -1
  145. package/backend/dist/services/workAgentService.d.ts +9 -0
  146. package/backend/dist/services/workAgentService.d.ts.map +1 -1
  147. package/backend/dist/services/workAgentService.js +503 -13
  148. package/backend/dist/services/workAgentService.js.map +1 -1
  149. package/backend/dist/services/workComputerSetupService.d.ts +33 -0
  150. package/backend/dist/services/workComputerSetupService.d.ts.map +1 -0
  151. package/backend/dist/services/workComputerSetupService.js +164 -0
  152. package/backend/dist/services/workComputerSetupService.js.map +1 -0
  153. package/backend/dist/services/workComputerTeachService.d.ts +105 -0
  154. package/backend/dist/services/workComputerTeachService.d.ts.map +1 -0
  155. package/backend/dist/services/workComputerTeachService.js +513 -0
  156. package/backend/dist/services/workComputerTeachService.js.map +1 -0
  157. package/backend/dist/services/workKubernetesDriver.d.ts +8 -0
  158. package/backend/dist/services/workKubernetesDriver.d.ts.map +1 -1
  159. package/backend/dist/services/workKubernetesDriver.js +22 -0
  160. package/backend/dist/services/workKubernetesDriver.js.map +1 -1
  161. package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
  162. package/backend/dist/services/workModelProviderService.js +102 -8
  163. package/backend/dist/services/workModelProviderService.js.map +1 -1
  164. package/backend/dist/services/workPolicyService.d.ts +8 -0
  165. package/backend/dist/services/workPolicyService.d.ts.map +1 -1
  166. package/backend/dist/services/workPolicyService.js +25 -0
  167. package/backend/dist/services/workPolicyService.js.map +1 -1
  168. package/backend/dist/services/workRuntimeDriver.d.ts +32 -0
  169. package/backend/dist/services/workRuntimeDriver.d.ts.map +1 -1
  170. package/backend/dist/services/workRuntimeDriver.js +54 -8
  171. package/backend/dist/services/workRuntimeDriver.js.map +1 -1
  172. package/backend/dist/services/workRuntimeService.d.ts +212 -1
  173. package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
  174. package/backend/dist/services/workRuntimeService.js +1184 -9
  175. package/backend/dist/services/workRuntimeService.js.map +1 -1
  176. package/backend/dist/services/workRuntimeShared.d.ts +11 -1
  177. package/backend/dist/services/workRuntimeShared.d.ts.map +1 -1
  178. package/backend/dist/services/workRuntimeShared.js +24 -1
  179. package/backend/dist/services/workRuntimeShared.js.map +1 -1
  180. package/backend/dist/services/workScreenControlService.d.ts +60 -0
  181. package/backend/dist/services/workScreenControlService.d.ts.map +1 -0
  182. package/backend/dist/services/workScreenControlService.js +201 -0
  183. package/backend/dist/services/workScreenControlService.js.map +1 -0
  184. package/backend/dist/services/workTaskService.d.ts +11 -0
  185. package/backend/dist/services/workTaskService.d.ts.map +1 -1
  186. package/backend/dist/services/workTaskService.js +31 -0
  187. package/backend/dist/services/workTaskService.js.map +1 -1
  188. package/backend/dist/types/index.d.ts +10 -2
  189. package/backend/dist/types/index.d.ts.map +1 -1
  190. package/backend/dist/types/index.js.map +1 -1
  191. package/backend/dist/types/work.d.ts +13 -0
  192. package/backend/dist/types/work.d.ts.map +1 -1
  193. package/backend/dist/utils/documentExtraction.d.ts +31 -3
  194. package/backend/dist/utils/documentExtraction.d.ts.map +1 -1
  195. package/backend/dist/utils/documentExtraction.js +106 -0
  196. package/backend/dist/utils/documentExtraction.js.map +1 -1
  197. package/backend/dist/utils/toolEgress.d.ts +2 -1
  198. package/backend/dist/utils/toolEgress.d.ts.map +1 -1
  199. package/backend/dist/utils/toolEgress.js +14 -2
  200. package/backend/dist/utils/toolEgress.js.map +1 -1
  201. package/backend/dist/utils/totp.d.ts +19 -0
  202. package/backend/dist/utils/totp.d.ts.map +1 -0
  203. package/backend/dist/utils/totp.js +117 -0
  204. package/backend/dist/utils/totp.js.map +1 -0
  205. package/backend/dist/utils/webauthn.d.ts +47 -0
  206. package/backend/dist/utils/webauthn.d.ts.map +1 -0
  207. package/backend/dist/utils/webauthn.js +323 -0
  208. package/backend/dist/utils/webauthn.js.map +1 -0
  209. package/backend/dist/websocketServer.d.ts.map +1 -1
  210. package/backend/dist/websocketServer.js +9 -0
  211. package/backend/dist/websocketServer.js.map +1 -1
  212. package/backend/dist/workScreenServer.d.ts +12 -0
  213. package/backend/dist/workScreenServer.d.ts.map +1 -0
  214. package/backend/dist/workScreenServer.js +291 -0
  215. package/backend/dist/workScreenServer.js.map +1 -0
  216. package/backend/package.json +1 -1
  217. package/deploy/work-computer/Dockerfile +48 -0
  218. package/deploy/work-computer/README.md +93 -0
  219. package/deploy/work-computer/fonts/fonts.css +335 -0
  220. package/deploy/work-computer/fonts/v16-aFTR7PB1QTsUX8KYvumzEY2tbYf-Vlh3uA.woff2 +0 -0
  221. package/deploy/work-computer/fonts/v16-aFTR7PB1QTsUX8KYvumzEYOtbYf-Vlg.woff2 +0 -0
  222. package/deploy/work-computer/fonts/v16-aFTU7PB1QTsUX8KYthSQBK6PYK3EXw.woff2 +0 -0
  223. package/deploy/work-computer/fonts/v16-aFTU7PB1QTsUX8KYthqQBK6PYK0.woff2 +0 -0
  224. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggOxSvfedN62Zw.woff2 +0 -0
  225. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggSxSvfedN62Zw.woff2 +0 -0
  226. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggexSvfedN4.woff2 +0 -0
  227. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggixSvfedN62Zw.woff2 +0 -0
  228. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggmxSvfedN62Zw.woff2 +0 -0
  229. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggqxSvfedN62Zw.woff2 +0 -0
  230. package/deploy/work-computer/fonts/v22-V8mDoQDjQSkFtoMM3T6r8E7mPb54C_k3HqUtEw.woff2 +0 -0
  231. package/deploy/work-computer/fonts/v22-V8mDoQDjQSkFtoMM3T6r8E7mPb94C_k3HqUtEw.woff2 +0 -0
  232. package/deploy/work-computer/fonts/v22-V8mDoQDjQSkFtoMM3T6r8E7mPbF4C_k3HqU.woff2 +0 -0
  233. package/deploy/work-computer/start-computer.sh +155 -0
  234. package/deploy/work-computer/start-page.html +251 -0
  235. package/deploy/work-computer/tint2rc +76 -0
  236. package/deploy/work-computer/wallpaper.png +0 -0
  237. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
  238. package/frontend/dist/assets/index-DGy6mo0B.js +33 -0
  239. package/frontend/dist/assets/index-DqLJKWF-.css +1 -0
  240. package/frontend/dist/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
  241. package/frontend/dist/fonts/jetbrains-mono-latin-700-normal.woff2 +0 -0
  242. package/frontend/dist/fonts/jetbrains-mono.css +24 -0
  243. package/frontend/dist/index.html +40 -18
  244. package/frontend/dist/js/ArtifactContainer-DvIMxleC.js +1 -0
  245. package/frontend/dist/js/{ArtifactDemoPage-D0JEIAbZ.js → ArtifactDemoPage-BqYskFqc.js} +1 -1
  246. package/frontend/dist/js/ArtifactSandboxFrame-9wuufHn6.js +111 -0
  247. package/frontend/dist/js/ArtifactSlideOutPanel-DXESMtPh.js +1 -0
  248. package/frontend/dist/js/AutomationsPage-DByxhIKj.js +1 -0
  249. package/frontend/dist/js/AvatarUpload-DnCGQ46o.js +1 -0
  250. package/frontend/dist/js/{Button-C0r3J9G_.js → Button-CpobxJ2P.js} +1 -1
  251. package/frontend/dist/js/CalendarPage-JywVP-9y.js +1 -0
  252. package/frontend/dist/js/ChannelsPage-B31rcARd.js +1 -0
  253. package/frontend/dist/js/ChatPage-CHXJY8m3.js +14 -0
  254. package/frontend/dist/js/{EvaluationsPage-Bm8FRoeX.js → EvaluationsPage-CcmB5wdF.js} +1 -1
  255. package/frontend/dist/js/FirstTimeSetup-DDU7SowM.js +1 -0
  256. package/frontend/dist/js/GalleryPage-XfX_7iCf.js +1 -0
  257. package/frontend/dist/js/HomePage-DAZAkoAV.js +1 -0
  258. package/frontend/dist/js/LibreClawPage-De0gZmbF.js +1 -0
  259. package/frontend/dist/js/Logo-yKM43xGa.js +1 -0
  260. package/frontend/dist/js/LogoMark-PmpKQOre.js +1 -0
  261. package/frontend/dist/js/{ModelManagerModals-DX9eT5r2.js → ModelManagerModals-hz2cZZ4a.js} +1 -1
  262. package/frontend/dist/js/ModelSelector-BoFehQy-.js +1 -0
  263. package/frontend/dist/js/NotesPage-BGPI3gG6.js +3 -0
  264. package/frontend/dist/js/OptimizedSyntaxHighlighter-DrejdNUm.js +1 -0
  265. package/frontend/dist/js/OptimizedSyntaxHighlighter-hNqZPLiB.js +1 -0
  266. package/frontend/dist/js/PasswordStrengthMeter-RwModpZ1.js +1 -0
  267. package/frontend/dist/js/PersonasPage-BkNRD2wO.js +13 -0
  268. package/frontend/dist/js/PluginUsagePage-Cqt7V2SQ.js +1 -0
  269. package/frontend/dist/js/RichMessageContent-B2QSyX-l.js +1 -0
  270. package/frontend/dist/js/RichMessageContent-CYEhT6uU.js +3 -0
  271. package/frontend/dist/js/SettingsModal-IbIvVyss.js +19 -0
  272. package/frontend/dist/js/{SettingsToggle-BIVyfGjl.js → SettingsToggle-3GxA96E0.js} +1 -1
  273. package/frontend/dist/js/ShareDialog-BoE4OVhV.js +1 -0
  274. package/frontend/dist/js/SystemPage-B5ecz5H3.js +1 -0
  275. package/frontend/dist/js/TurnstileWidget-DHU9IUM1.js +1 -0
  276. package/frontend/dist/js/UserManagementPage-C0VUfbMk.js +1 -0
  277. package/frontend/dist/js/WorkPage-EweYI5Dx.js +74 -0
  278. package/frontend/dist/js/api-Bbh2AHHN.js +1 -0
  279. package/frontend/dist/js/api-F0CnlVH8.js +14 -0
  280. package/frontend/dist/js/appNavigation-DqV69ohR.js +1 -0
  281. package/frontend/dist/js/appStore-SLLBamo2.js +2 -0
  282. package/frontend/dist/js/appVersion-46bF9UkF.js +1 -0
  283. package/frontend/dist/js/ar-C4yo7x5J.js +2 -0
  284. package/frontend/dist/js/artifactHtml-DDmfpcB0.js +41 -0
  285. package/frontend/dist/js/authStore-CcfL8T6T.js +1 -0
  286. package/frontend/dist/js/authStore-DlSQ1TcP.js +4 -0
  287. package/frontend/dist/js/axios-_ZpUYd3e.js +1 -0
  288. package/frontend/dist/js/bn-BeZ6d2qF.js +2 -0
  289. package/frontend/dist/js/chatStore-DI79tEJ-.js +3 -0
  290. package/frontend/dist/js/classPrivateMethodInitSpec-B31Q4d2M.js +1 -0
  291. package/frontend/dist/js/{config-8KdgjtEx.js → config-0QgGZCrI.js} +1 -1
  292. package/frontend/dist/js/cs-9K5LILI5.js +2 -0
  293. package/frontend/dist/js/da-BWbBhLK8.js +2 -0
  294. package/frontend/dist/js/de-BXD9t2uY.js +2 -0
  295. package/frontend/dist/js/es-Dv4wZKlU.js +2 -0
  296. package/frontend/dist/js/{estree-BU5-LV_1.js → estree-WDwviHUZ.js} +1 -1
  297. package/frontend/dist/js/evaluationsApi-wjf0nh5J.js +1 -0
  298. package/frontend/dist/js/fr-BkXGyEei.js +2 -0
  299. package/frontend/dist/js/hi-BS1ldbWk.js +2 -0
  300. package/frontend/dist/js/{html-DeoAy2bo.js → html-Cj0HNcRt.js} +1 -1
  301. package/frontend/dist/js/id-Cr1njx5M.js +2 -0
  302. package/frontend/dist/js/is-BqpNCtDd.js +2 -0
  303. package/frontend/dist/js/it-Dp-iwH27.js +2 -0
  304. package/frontend/dist/js/ja-_e4v_6Mn.js +2 -0
  305. package/frontend/dist/js/ko-CjXf2pIX.js +2 -0
  306. package/frontend/dist/js/{logger-DSXjF4ye.js → logger-CpCQz3Vi.js} +1 -1
  307. package/frontend/dist/js/{markdown-DOLsYkBY.js → markdown-DTahdtRF.js} +1 -1
  308. package/frontend/dist/js/{messageCodeStyles-DhVgizF-.js → messageCodeStyles-COJFoq4P.js} +2 -2
  309. package/frontend/dist/js/ms-xpn-zACj.js +2 -0
  310. package/frontend/dist/js/nl-Baf0a2X0.js +2 -0
  311. package/frontend/dist/js/pl-BEOTrcUv.js +2 -0
  312. package/frontend/dist/js/pt-B5FUaihM.js +2 -0
  313. package/frontend/dist/js/rfb-bJaPz33m.js +5 -0
  314. package/frontend/dist/js/ru-BjzgMmkJ.js +2 -0
  315. package/frontend/dist/js/{standalone-BO5pzI8_.js → standalone-C04jT26m.js} +1 -1
  316. package/frontend/dist/js/sv-DDX_gP1z.js +2 -0
  317. package/frontend/dist/js/{syntax-highlight-DcR9Vhb7.js → syntax-highlight-P2zo9o06.js} +1 -1
  318. package/frontend/dist/js/teamEventStream-CgUkgjFC.js +8 -0
  319. package/frontend/dist/js/th-BXr3KovE.js +2 -0
  320. package/frontend/dist/js/tr-CdqxHEM8.js +2 -0
  321. package/frontend/dist/js/ttsBatching-BfhNT3c5.js +2 -0
  322. package/frontend/dist/js/{typescript-6GJ8APmn.js → typescript-FtGI7Y5P.js} +1 -1
  323. package/frontend/dist/js/ui-DFa2W4QC.js +2 -0
  324. package/frontend/dist/js/ui-vendor-CRZXLK0Q.js +177 -0
  325. package/frontend/dist/js/uk-CotKDP2Q.js +2 -0
  326. package/frontend/dist/js/useChat-BawGm7ua.js +10 -0
  327. package/frontend/dist/js/useQuery-BboI5V5G.js +1 -0
  328. package/frontend/dist/js/{useTranslation-5b5UhAc9.js → useTranslation-D7uLySn1.js} +1 -1
  329. package/frontend/dist/js/{utils-BGrdX9ie.js → utils-sD-qFh8D.js} +1 -1
  330. package/frontend/dist/js/utils-vendor-DTLgmsuc.js +9 -0
  331. package/frontend/dist/js/vi-F2NC1HaJ.js +2 -0
  332. package/frontend/dist/js/webauthnClient-CPSq528Q.js +1 -0
  333. package/frontend/dist/js/workApi-8mBuh_-J.js +6 -0
  334. package/frontend/dist/js/workApi-DJtLOslf.js +1 -0
  335. package/frontend/dist/js/workStatus-CcO9Fg41.js +1 -0
  336. package/frontend/dist/js/zh-DZ-kpEEA.js +2 -0
  337. package/frontend/dist/manifest.webmanifest +32 -0
  338. package/frontend/dist/sw.js +125 -0
  339. package/package.json +4 -2
  340. package/frontend/dist/assets/index-BPsH9FII.js +0 -80
  341. package/frontend/dist/assets/index-BtXF0Oxa.css +0 -1
  342. package/frontend/dist/js/ArtifactContainer-CIoFoMv8.js +0 -1
  343. package/frontend/dist/js/ArtifactSandboxFrame-REazyIrx.js +0 -151
  344. package/frontend/dist/js/ArtifactSlideOutPanel-A-i94ghF.js +0 -1
  345. package/frontend/dist/js/AutomationsPage-Dow_lbIf.js +0 -1
  346. package/frontend/dist/js/CalendarPage-DLjasZOd.js +0 -1
  347. package/frontend/dist/js/ChannelsPage-C8hvTD7J.js +0 -1
  348. package/frontend/dist/js/ChatPage-BAgBHUES.js +0 -16
  349. package/frontend/dist/js/FirstTimeSetup-BxJapNul.js +0 -1
  350. package/frontend/dist/js/GalleryPage-DHz9DkK7.js +0 -1
  351. package/frontend/dist/js/HomePage-BqNy-FWX.js +0 -1
  352. package/frontend/dist/js/LibreClawPage-BDzDILjY.js +0 -1
  353. package/frontend/dist/js/ModelSelector-ol8mK2ja.js +0 -1
  354. package/frontend/dist/js/NotesPage-DzHEx2O4.js +0 -3
  355. package/frontend/dist/js/OptimizedSyntaxHighlighter-CZNPwN0i.js +0 -1
  356. package/frontend/dist/js/PersonasPage-M_WKH2a9.js +0 -13
  357. package/frontend/dist/js/PluginUsagePage-Ctoka6JZ.js +0 -1
  358. package/frontend/dist/js/RichMessageContent-BqgafH4p.js +0 -3
  359. package/frontend/dist/js/SettingsModal-R9EDadAV.js +0 -19
  360. package/frontend/dist/js/SystemPage-aOkrSuY7.js +0 -1
  361. package/frontend/dist/js/UserManagementPage-BOuaX3ay.js +0 -1
  362. package/frontend/dist/js/WorkPage-DxZISerQ.js +0 -6
  363. package/frontend/dist/js/api-6bSMtSNh.js +0 -14
  364. package/frontend/dist/js/appStore-CdObhQBb.js +0 -2
  365. package/frontend/dist/js/ar-DT_VLBO3.js +0 -2
  366. package/frontend/dist/js/authStore-DbqqrfZv.js +0 -4
  367. package/frontend/dist/js/bn-BrvEqhGA.js +0 -2
  368. package/frontend/dist/js/chatStore-DbZPJNsu.js +0 -3
  369. package/frontend/dist/js/cs-BthnM_YI.js +0 -2
  370. package/frontend/dist/js/da-DCth-6_j.js +0 -2
  371. package/frontend/dist/js/de-BBWt0gJ_.js +0 -2
  372. package/frontend/dist/js/es-DuslOPqM.js +0 -2
  373. package/frontend/dist/js/evaluationsApi-CwZJsgeG.js +0 -1
  374. package/frontend/dist/js/fr-DZAeg46S.js +0 -2
  375. package/frontend/dist/js/hi-ijDSiY77.js +0 -2
  376. package/frontend/dist/js/id-BS6qS0oq.js +0 -2
  377. package/frontend/dist/js/is-CO2PMDte.js +0 -2
  378. package/frontend/dist/js/it-ChhxT4hs.js +0 -2
  379. package/frontend/dist/js/ja-cyeqUeJN.js +0 -2
  380. package/frontend/dist/js/ko-CfqHTLXj.js +0 -2
  381. package/frontend/dist/js/ms-DZ5pACe1.js +0 -2
  382. package/frontend/dist/js/nl-BsRsnOVp.js +0 -2
  383. package/frontend/dist/js/pl-DXSTAW4M.js +0 -2
  384. package/frontend/dist/js/pt-DmDx0JxB.js +0 -2
  385. package/frontend/dist/js/ru-d2g8EWfY.js +0 -2
  386. package/frontend/dist/js/sv-CIhYUTVQ.js +0 -2
  387. package/frontend/dist/js/th-B3wSxanB.js +0 -2
  388. package/frontend/dist/js/tr-R4UGgPOY.js +0 -2
  389. package/frontend/dist/js/ui-CV0LYmkM.js +0 -2
  390. package/frontend/dist/js/ui-vendor-CWjIBW-z.js +0 -177
  391. package/frontend/dist/js/uk-BzUF4Vkt.js +0 -2
  392. package/frontend/dist/js/utils-vendor-9bQ62WeD.js +0 -9
  393. package/frontend/dist/js/vi-CKc6Fg4h.js +0 -2
  394. package/frontend/dist/js/workApi-BruWTlHM.js +0 -6
  395. package/frontend/dist/js/zh-CXL-kDe8.js +0 -2
@@ -0,0 +1,513 @@
1
+ /*
2
+ * Libre WebUI
3
+ * Copyright (C) 2025 Kroonen AI, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at:
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * Work Computer teach mode: turn a recorded human demonstration (raw
19
+ * pointer/key/wheel events captured by the Screen pane during a held
20
+ * control lease) into a reusable playbook, deterministically — no model in
21
+ * the loop. The playbook is a natural-language procedure the agent
22
+ * re-interprets with computer_observe on replay, not a pixel-exact macro,
23
+ * and it is stored as an ordinary user skill so it shows up in the Skills
24
+ * UI with versioning and sharing for free. Computer-enabled Work runs load
25
+ * the owner's taught skills into their system prompt, so replay is just a
26
+ * normal agent run.
27
+ */
28
+ import { createSkill, getSkillBySlug, listSkills, updateSkill, } from './skillService.js';
29
+ import { WorkRuntimeError } from './workRuntimeShared.js';
30
+ /** Slug namespace for demonstration-taught skills. */
31
+ export const WORK_TAUGHT_SKILL_PREFIX = 'taught-';
32
+ /** Taught skills loaded into one Work run, newest first. */
33
+ export const WORK_TAUGHT_SKILLS_PER_RUN = 8;
34
+ export const WORK_TEACH_MAX_EVENTS = 10000;
35
+ /** A pause longer than this between steps becomes an explicit wait step. */
36
+ const WAIT_GAP_MS = 3000;
37
+ /** Down/up farther apart than this is a drag, not a click. */
38
+ const DRAG_THRESHOLD_PX = 8;
39
+ /** Two clicks this close in time and space collapse to a double-click. */
40
+ const DOUBLE_CLICK_MS = 400;
41
+ /** Words that mark surrounding typed text as secret material. */
42
+ const SECRET_CONTEXT_PATTERN = /password|secret|token|api[_-]?key|passphrase/i;
43
+ const REDACTED_PLACEHOLDER = '[REDACTED — never type this value; use request_takeover so the user enters it]';
44
+ const invalidRecording = (reason) => new WorkRuntimeError(`The recording is invalid: ${reason}`, 400, 'WORK_TEACH_INVALID_RECORDING');
45
+ const finite = (value) => typeof value === 'number' && Number.isFinite(value);
46
+ export function validateWorkTeachEvents(events) {
47
+ if (!Array.isArray(events) || events.length === 0) {
48
+ throw invalidRecording('it contains no events.');
49
+ }
50
+ if (events.length > WORK_TEACH_MAX_EVENTS) {
51
+ throw invalidRecording(`it exceeds ${WORK_TEACH_MAX_EVENTS} events; record a shorter demonstration.`);
52
+ }
53
+ const validated = [];
54
+ for (const value of events) {
55
+ const event = value;
56
+ if (!event ||
57
+ typeof event !== 'object' ||
58
+ !finite(event.t) ||
59
+ event.t < 0) {
60
+ throw invalidRecording('an event is malformed.');
61
+ }
62
+ switch (event.kind) {
63
+ case 'down':
64
+ case 'up':
65
+ case 'move':
66
+ if (!finite(event.x) || !finite(event.y)) {
67
+ throw invalidRecording('a pointer event has no coordinates.');
68
+ }
69
+ break;
70
+ case 'wheel':
71
+ if (!finite(event.dy)) {
72
+ throw invalidRecording('a wheel event has no delta.');
73
+ }
74
+ break;
75
+ case 'key':
76
+ if (typeof event.key !== 'string' || event.key.length === 0) {
77
+ throw invalidRecording('a key event has no key.');
78
+ }
79
+ break;
80
+ default:
81
+ throw invalidRecording('an event has an unknown kind.');
82
+ }
83
+ // Anchors and URLs are best-effort enrichment from the recorder's
84
+ // probe: keep them only when well-formed, never fail the recording.
85
+ const copy = { ...event };
86
+ delete copy.anchor;
87
+ delete copy.url;
88
+ if (event.kind === 'down' &&
89
+ typeof event.anchor === 'string' &&
90
+ event.anchor.trim()) {
91
+ copy.anchor = event.anchor.trim().slice(0, 200);
92
+ }
93
+ if (typeof event.url === 'string' && event.url.trim()) {
94
+ copy.url = event.url.trim().slice(0, 300);
95
+ }
96
+ validated.push(copy);
97
+ }
98
+ return validated.sort((left, right) => left.t - right.t);
99
+ }
100
+ const round = (value) => Math.round(value);
101
+ /** Map DOM KeyboardEvent.key names to xdotool keysyms the agent can use. */
102
+ const KEYSYM_BY_DOM_KEY = {
103
+ Enter: 'Return',
104
+ Escape: 'Escape',
105
+ Backspace: 'BackSpace',
106
+ Delete: 'Delete',
107
+ Tab: 'Tab',
108
+ ArrowUp: 'Up',
109
+ ArrowDown: 'Down',
110
+ ArrowLeft: 'Left',
111
+ ArrowRight: 'Right',
112
+ Home: 'Home',
113
+ End: 'End',
114
+ PageUp: 'Prior',
115
+ PageDown: 'Next',
116
+ ' ': 'space',
117
+ };
118
+ const chordFor = (event) => {
119
+ const key = event.key ?? '';
120
+ const parts = [];
121
+ if (event.ctrl)
122
+ parts.push('ctrl');
123
+ if (event.alt)
124
+ parts.push('alt');
125
+ if (event.meta)
126
+ parts.push('super');
127
+ if (event.shift && key.length > 1)
128
+ parts.push('shift');
129
+ const keysym = KEYSYM_BY_DOM_KEY[key] ?? (key.length === 1 ? key.toLowerCase() : key);
130
+ if (['Shift', 'Control', 'Alt', 'Meta'].includes(key))
131
+ return undefined;
132
+ if (key.length === 1 && parts.length === 0)
133
+ return undefined; // plain text
134
+ if (parts.length === 0 && !KEYSYM_BY_DOM_KEY[key])
135
+ return undefined;
136
+ return [...parts, keysym].join('+');
137
+ };
138
+ const isPlainCharacter = (event) => typeof event.key === 'string' &&
139
+ event.key.length === 1 &&
140
+ !event.ctrl &&
141
+ !event.alt &&
142
+ !event.meta;
143
+ /**
144
+ * Deterministic secret redaction. Two rules: typed text mentioning secret
145
+ * vocabulary is masked, and any whitespace-free run of 8+ characters mixing
146
+ * three character classes is masked as credential-shaped — a demo should
147
+ * never carry a password into a stored skill, that is what request_takeover
148
+ * is for.
149
+ */
150
+ export function isSecretLikeText(text) {
151
+ if (SECRET_CONTEXT_PATTERN.test(text))
152
+ return true;
153
+ if (text.length >= 8 && !/\s/.test(text)) {
154
+ const classes = [
155
+ /[a-z]/.test(text),
156
+ /[A-Z]/.test(text),
157
+ /[0-9]/.test(text),
158
+ /[^a-zA-Z0-9]/.test(text),
159
+ ].filter(Boolean).length;
160
+ if (classes >= 3)
161
+ return true;
162
+ }
163
+ return false;
164
+ }
165
+ function collectSteps(events) {
166
+ const steps = [];
167
+ let typeRun;
168
+ let pendingDown;
169
+ let lastStepTime = 0;
170
+ const flushType = () => {
171
+ if (typeRun && typeRun.text.length > 0) {
172
+ steps.push({ kind: 'type', text: typeRun.text, t: typeRun.t });
173
+ }
174
+ typeRun = undefined;
175
+ };
176
+ const noteGap = (t) => {
177
+ if (steps.length > 0 && t - lastStepTime >= WAIT_GAP_MS) {
178
+ steps.push({ kind: 'wait', ms: t - lastStepTime, t });
179
+ }
180
+ lastStepTime = t;
181
+ };
182
+ for (const event of events) {
183
+ switch (event.kind) {
184
+ case 'down':
185
+ flushType();
186
+ pendingDown = event;
187
+ break;
188
+ case 'up': {
189
+ if (!pendingDown)
190
+ break;
191
+ noteGap(pendingDown.t);
192
+ const fromX = round(pendingDown.x ?? 0);
193
+ const fromY = round(pendingDown.y ?? 0);
194
+ const toX = round(event.x ?? fromX);
195
+ const toY = round(event.y ?? fromY);
196
+ const distance = Math.hypot(toX - fromX, toY - fromY);
197
+ if (distance >= DRAG_THRESHOLD_PX) {
198
+ steps.push({
199
+ kind: 'drag',
200
+ fromX,
201
+ fromY,
202
+ toX,
203
+ toY,
204
+ t: event.t,
205
+ ...(pendingDown.anchor ? { anchor: pendingDown.anchor } : {}),
206
+ });
207
+ }
208
+ else {
209
+ const previous = steps[steps.length - 1];
210
+ if (previous?.kind === 'click' &&
211
+ previous.button === (pendingDown.button ?? 0) &&
212
+ event.t - previous.t <= DOUBLE_CLICK_MS &&
213
+ Math.hypot(previous.x - toX, previous.y - toY) < DRAG_THRESHOLD_PX) {
214
+ previous.count += 1;
215
+ previous.t = event.t;
216
+ }
217
+ else {
218
+ steps.push({
219
+ kind: 'click',
220
+ x: toX,
221
+ y: toY,
222
+ button: pendingDown.button ?? 0,
223
+ count: 1,
224
+ t: event.t,
225
+ ...(pendingDown.anchor ? { anchor: pendingDown.anchor } : {}),
226
+ });
227
+ }
228
+ }
229
+ lastStepTime = event.t;
230
+ pendingDown = undefined;
231
+ break;
232
+ }
233
+ case 'move':
234
+ break;
235
+ case 'wheel': {
236
+ flushType();
237
+ noteGap(event.t);
238
+ const direction = (event.dy ?? 0) < 0 ? 'up' : 'down';
239
+ const previous = steps[steps.length - 1];
240
+ if (previous?.kind === 'scroll' &&
241
+ previous.direction === direction &&
242
+ event.t - previous.t <= 1000) {
243
+ previous.t = event.t;
244
+ }
245
+ else {
246
+ steps.push({
247
+ kind: 'scroll',
248
+ direction,
249
+ x: round(event.x ?? 0),
250
+ y: round(event.y ?? 0),
251
+ t: event.t,
252
+ });
253
+ }
254
+ lastStepTime = event.t;
255
+ break;
256
+ }
257
+ case 'key': {
258
+ const chord = chordFor(event);
259
+ if (chord) {
260
+ flushType();
261
+ noteGap(event.t);
262
+ steps.push({ kind: 'key', chord, t: event.t });
263
+ lastStepTime = event.t;
264
+ }
265
+ else if (isPlainCharacter(event)) {
266
+ if (!typeRun) {
267
+ noteGap(event.t);
268
+ typeRun = { text: '', t: event.t };
269
+ }
270
+ typeRun.text += event.key;
271
+ lastStepTime = event.t;
272
+ }
273
+ // Bare modifiers and unmapped specials are dropped.
274
+ break;
275
+ }
276
+ }
277
+ }
278
+ flushType();
279
+ return steps;
280
+ }
281
+ const BUTTON_NAMES = {
282
+ 0: 'Click',
283
+ 1: 'Middle-click',
284
+ 2: 'Right-click',
285
+ };
286
+ function describeStep(step, onRedact) {
287
+ switch (step.kind) {
288
+ case 'click': {
289
+ const verb = step.count >= 2
290
+ ? 'Double-click'
291
+ : (BUTTON_NAMES[step.button] ?? 'Click');
292
+ return step.anchor
293
+ ? `${verb} "${step.anchor}" — it was at about (${step.x}, ${step.y}) in the demonstration.`
294
+ : `${verb} at about (${step.x}, ${step.y}).`;
295
+ }
296
+ case 'drag':
297
+ return step.anchor
298
+ ? `Drag "${step.anchor}" from about (${step.fromX}, ${step.fromY}) to (${step.toX}, ${step.toY}).`
299
+ : `Drag from about (${step.fromX}, ${step.fromY}) to (${step.toX}, ${step.toY}).`;
300
+ case 'type': {
301
+ if (isSecretLikeText(step.text)) {
302
+ onRedact(step.text);
303
+ return `Type ${REDACTED_PLACEHOLDER} into the focused field.`;
304
+ }
305
+ return `Type "${step.text}" into the focused field.`;
306
+ }
307
+ case 'key':
308
+ return `Press ${step.chord}.`;
309
+ case 'scroll':
310
+ return `Scroll ${step.direction} around (${step.x}, ${step.y}).`;
311
+ case 'wait':
312
+ return `Wait for the screen to settle (about ${Math.min(10, Math.round(step.ms / 1000))}s in the demonstration).`;
313
+ }
314
+ }
315
+ /**
316
+ * Build the playbook from a validated recording. Pure and deterministic:
317
+ * the same demonstration always yields the same skill text.
318
+ */
319
+ export function buildWorkComputerPlaybook(events, options) {
320
+ const steps = collectSteps(events);
321
+ if (steps.length === 0) {
322
+ throw invalidRecording('it contains no usable actions.');
323
+ }
324
+ let redactions = 0;
325
+ const typedInputs = [];
326
+ const lines = [];
327
+ for (const step of steps) {
328
+ const line = describeStep(step, () => {
329
+ redactions += 1;
330
+ });
331
+ if (!line)
332
+ continue;
333
+ if (step.kind === 'type' && !isSecretLikeText(step.text)) {
334
+ if (!typedInputs.includes(step.text))
335
+ typedInputs.push(step.text);
336
+ }
337
+ lines.push(`${lines.length + 1}. ${line}`);
338
+ }
339
+ const screen = options.screenWidth && options.screenHeight
340
+ ? `${options.screenWidth}×${options.screenHeight}`
341
+ : '1280×800';
342
+ // The demonstration's own footprint becomes the replay envelope: the
343
+ // distinct web hosts it touched, derived deterministically from the
344
+ // recorded page URLs. A taught procedure never inherits open-ended
345
+ // authority beyond what the human actually showed.
346
+ const hosts = [
347
+ ...new Set(events
348
+ .map(event => event.url)
349
+ .filter((url) => Boolean(url))
350
+ .map(url => {
351
+ try {
352
+ return new URL(url).host;
353
+ }
354
+ catch {
355
+ return '';
356
+ }
357
+ })
358
+ .filter(Boolean)),
359
+ ].sort();
360
+ const anchored = steps.some(step => (step.kind === 'click' || step.kind === 'drag') && step.anchor);
361
+ const inputsSection = typedInputs.length > 0
362
+ ? typedInputs
363
+ .map(value => `- "${value}" was typed in the demonstration; substitute the value the current request calls for.`)
364
+ .join('\n')
365
+ : '- None recorded; follow the request.';
366
+ const instructions = `Demonstrated procedure recorded on the Work Computer (${screen} screen).
367
+ ${anchored
368
+ ? 'Quoted anchors name the demonstrated targets — find the same control by its label or role first; coordinates are only where it sat during the demonstration. computer_observe first and adapt when the layout differs.'
369
+ : 'Coordinates are hints from the demonstration, not exact targets: computer_observe first, find the equivalent element on the current screen, and adapt when the layout differs.'}
370
+
371
+ ## When to use
372
+ When the request matches "${options.name}".
373
+
374
+ ## Inputs
375
+ ${inputsSection}
376
+
377
+ ## Steps
378
+ ${lines.join('\n')}
379
+
380
+ ## How to check
381
+ Re-observe after each consequential step and confirm the screen changed as the step intended before continuing.
382
+
383
+ ## Allowed scope
384
+ ${hosts.length > 0
385
+ ? `The demonstration stayed on: ${hosts.join(', ')}. Replay within that scope only — if the flow leads to a different site, stop and ask instead of extending the procedure to new territory.`
386
+ : 'The demonstration recorded no web destination. If replaying takes you onto the web, stop and confirm the destination with the user first.'}
387
+
388
+ ## Approval boundaries
389
+ Never type credentials, one-time codes, or CAPTCHA answers — call request_takeover so the user enters them directly. Stop and ask before destructive or payment actions${redactions > 0 ? '. This demonstration contained redacted secret input at the marked step; a takeover is required there' : ''}.
390
+
391
+ ## What to return
392
+ Summarize the end state and how it was verified.
393
+
394
+ ## Failure handling
395
+ If a step cannot be completed as demonstrated, stop and ask the user; do not improvise around errors.`;
396
+ return { steps: lines, redactions, typedInputs, hosts, instructions };
397
+ }
398
+ const slugify = (name) => name
399
+ .toLowerCase()
400
+ .normalize('NFKD')
401
+ .replace(/[^a-z0-9]+/g, '-')
402
+ .replace(/^-+|-+$/g, '')
403
+ .slice(0, 40) || 'procedure';
404
+ export class WorkComputerTeachService {
405
+ /**
406
+ * Build the playbook and store it as a user skill in the taught-skill
407
+ * namespace. A name collision gets a numeric suffix instead of failing —
408
+ * re-teaching a task is normal.
409
+ */
410
+ async saveDemonstration(userId, input) {
411
+ const name = typeof input.name === 'string' && input.name.trim()
412
+ ? input.name.trim().slice(0, 120)
413
+ : undefined;
414
+ if (!name) {
415
+ throw invalidRecording('a name for the taught task is required.');
416
+ }
417
+ const events = validateWorkTeachEvents(input.events);
418
+ const playbook = buildWorkComputerPlaybook(events, {
419
+ name,
420
+ screenWidth: finite(input.screenWidth) ? input.screenWidth : undefined,
421
+ screenHeight: finite(input.screenHeight) ? input.screenHeight : undefined,
422
+ });
423
+ const base = `${WORK_TAUGHT_SKILL_PREFIX}${slugify(name)}`;
424
+ let slug = base;
425
+ for (let suffix = 2; await getSkillBySlug(userId, slug); suffix++) {
426
+ if (suffix > 50) {
427
+ throw invalidRecording('too many taught skills share this name.');
428
+ }
429
+ slug = `${base}-${suffix}`;
430
+ }
431
+ const skill = await createSkill(userId, {
432
+ slug,
433
+ name,
434
+ description: `Taught on the Work Computer: ${name}`,
435
+ instructions: playbook.instructions,
436
+ enabled: true,
437
+ });
438
+ return { skill, playbook };
439
+ }
440
+ /**
441
+ * Record a user-reviewed replay outcome on a taught skill: a dated
442
+ * "worked / failed" line in the skill's Track record section, newest
443
+ * first and bounded. Goes through updateSkill, so every annotation is a
444
+ * reviewable skill version.
445
+ */
446
+ async recordSkillTrace(userId, slug, input) {
447
+ if (input.outcome !== 'success' && input.outcome !== 'failure') {
448
+ throw new WorkRuntimeError('A skill trace outcome must be "success" or "failure".', 400, 'WORK_TEACH_INVALID_TRACE');
449
+ }
450
+ const note = typeof input.note === 'string' && input.note.trim()
451
+ ? input.note.trim().split('\n').join(' ').slice(0, 300)
452
+ : undefined;
453
+ const skill = await getSkillBySlug(userId, slug);
454
+ if (!skill || !skill.slug.startsWith(WORK_TAUGHT_SKILL_PREFIX)) {
455
+ throw new WorkRuntimeError('No taught skill with this slug exists for you.', 404, 'WORK_TEACH_SKILL_NOT_FOUND');
456
+ }
457
+ const line = `- ${new Date().toISOString().slice(0, 10)}: ` +
458
+ `${input.outcome === 'success' ? 'Worked' : 'Failed'}${note ? ` — ${note}` : ''}`;
459
+ const header = '## Track record';
460
+ const intro = 'User-reviewed replay outcomes, newest first.';
461
+ const sectionStart = skill.instructions.indexOf(`${header}\n`);
462
+ let instructions;
463
+ if (sectionStart < 0) {
464
+ instructions = `${skill.instructions.trimEnd()}\n\n${header}\n${intro}\n${line}\n`;
465
+ }
466
+ else {
467
+ const afterHeader = sectionStart + header.length + 1;
468
+ const rest = skill.instructions.slice(afterHeader);
469
+ const nextSection = rest.indexOf('\n## ');
470
+ const sectionBody = nextSection < 0 ? rest : rest.slice(0, nextSection);
471
+ const tail = nextSection < 0 ? '' : rest.slice(nextSection);
472
+ const existing = sectionBody
473
+ .split('\n')
474
+ .filter(entry => entry.startsWith('- '))
475
+ .slice(0, 4);
476
+ instructions =
477
+ skill.instructions.slice(0, afterHeader) +
478
+ `${intro}\n${[line, ...existing].join('\n')}\n` +
479
+ tail;
480
+ }
481
+ const updated = await updateSkill(skill.id, { userId }, {
482
+ name: skill.name,
483
+ description: skill.description,
484
+ instructions,
485
+ enabled: skill.enabled,
486
+ });
487
+ if (!updated) {
488
+ throw new WorkRuntimeError('No taught skill with this slug exists for you.', 404, 'WORK_TEACH_SKILL_NOT_FOUND');
489
+ }
490
+ return { skill: updated, outcome: input.outcome };
491
+ }
492
+ /**
493
+ * The owner's enabled taught skills, newest first and bounded, for
494
+ * injection into a computer-enabled Work run's system prompt.
495
+ */
496
+ async taughtSkillsForUser(userId) {
497
+ const all = await listSkills(userId);
498
+ return all
499
+ .filter(skill => skill.enabled && skill.slug.startsWith(WORK_TAUGHT_SKILL_PREFIX))
500
+ .sort((left, right) => right.updatedAt - left.updatedAt)
501
+ .slice(0, WORK_TAUGHT_SKILLS_PER_RUN)
502
+ .map(skill => ({
503
+ slug: skill.slug,
504
+ name: skill.name,
505
+ // A hand-edited taught skill can grow; keep one skill from
506
+ // dominating the run's system prompt.
507
+ instructions: skill.instructions.slice(0, 6000),
508
+ }));
509
+ }
510
+ }
511
+ export const workComputerTeachService = new WorkComputerTeachService();
512
+ export default workComputerTeachService;
513
+ //# sourceMappingURL=workComputerTeachService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workComputerTeachService.js","sourceRoot":"","sources":["../../src/services/workComputerTeachService.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,14 @@ export declare class KubernetesWorkRuntimeDriver implements WorkRuntimeDriver {
36
36
  host: string;
37
37
  port: number;
38
38
  } | undefined>;
39
+ screenEndpoint(task: WorkTaskRecord): Promise<{
40
+ host: string;
41
+ port: number;
42
+ } | undefined>;
43
+ audioEndpoint(task: WorkTaskRecord): Promise<{
44
+ host: string;
45
+ port: number;
46
+ } | undefined>;
39
47
  listManaged(): Promise<DiscoveredWorkContainer[]>;
40
48
  removeOrphan(name: string): Promise<void>;
41
49
  listWorkspaces(): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"workKubernetesDriver.d.ts","sourceRoot":"","sources":["../../src/services/workKubernetesDriver.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,aAAa,EACb,yBAAyB,EAM1B,MAAM,wBAAwB,CAAC;AAOhC,eAAO,MAAM,wBAAwB;aACnC,SAAS,EAAE,kBAAkB;aAC7B,aAAa,EAAE,KAAK;aACpB,iBAAiB,EAAE,MAAO;aAC1B,gBAAgB,EAAE,KAAM;CAChB,CAAC;AA4CX;;;;;;;;GAQG;AACH,qBAAa,2BAA4B,YAAW,iBAAiB;IACnE,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IACtC,QAAQ,CAAC,KAAK,SAAgB;IAC9B,QAAQ,CAAC,SAAS,SAAuB;IACzC,OAAO,CAAC,WAAW,CAAC,CAA4B;IAEhD,OAAO,CAAC,MAAM;IAyBR,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAW3B;IAED,QAAQ,IAAI,IAAI,CAEf;IAEK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjC;IAEK,eAAe,CACnB,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAwBf;IAEK,aAAa,CACjB,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAiCf;IAEK,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAKlE;IAEK,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3E;IAEK,aAAa,CACjB,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAEf;IAEK,mBAAmB,CACvB,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAgCf;IAEK,IAAI,CACR,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAMxB;IAEK,eAAe,CACnB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAUrD;IAEK,WAAW,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAWtD;IAEK,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9C;IAEK,cAAc,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAUlE;IAED,yBAAyB,IAAI,IAAI,CAEhC;IAED;;;;;;OAMG;IACG,YAAY,CAChB,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,qBAAqB,CAAC,CAiEhC;YAEa,OAAO;YAOP,gBAAgB;YA2BhB,iBAAiB;YA2CjB,SAAS;CAoIxB;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,cAAc,EACpB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,yBAAyB,EAAE,uBAAuB,CAmB3D;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,EACpB,MAAM,GAAE,yBAAgD,GACvD,OAAO,yBAAyB,EAAE,KAAK,CAuEzC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,EAAE,CAGV;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO9D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM5D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAQvE;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,OAAO,yBAAyB,EAAE,QAAQ,GAAG,SAAS,GAC7D,MAAM,CAQR;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,CAgBR"}
1
+ {"version":3,"file":"workKubernetesDriver.d.ts","sourceRoot":"","sources":["../../src/services/workKubernetesDriver.ts"],"names":[],"mappings":"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"}
@@ -219,6 +219,28 @@ export class KubernetesWorkRuntimeDriver {
219
219
  return undefined;
220
220
  return { host: podIp, port: config.previewPort };
221
221
  }
222
+ async screenEndpoint(task) {
223
+ // Same shape as the preview: the backend reaches websockify on the Pod
224
+ // IP directly; nothing is published outside the cluster.
225
+ const pod = await this.readPod(task.containerName);
226
+ if (!pod)
227
+ return undefined;
228
+ assertOwnedRuntime(pod.metadata?.labels, task);
229
+ const podIp = pod.status?.podIP;
230
+ if (!podIp)
231
+ return undefined;
232
+ return { host: podIp, port: config.screenPort };
233
+ }
234
+ async audioEndpoint(task) {
235
+ const pod = await this.readPod(task.containerName);
236
+ if (!pod)
237
+ return undefined;
238
+ assertOwnedRuntime(pod.metadata?.labels, task);
239
+ const podIp = pod.status?.podIP;
240
+ if (!podIp)
241
+ return undefined;
242
+ return { host: podIp, port: config.audioPort };
243
+ }
222
244
  async listManaged() {
223
245
  const { core } = await this.client();
224
246
  const pods = await core.listNamespacedPod({