@promptbook/cli 0.113.0-7 → 0.113.0-9

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 (593) hide show
  1. package/apps/agents-server/next.config.ts +6 -3
  2. package/apps/agents-server/src/app/admin/resource-monitor/page.tsx +456 -0
  3. package/apps/agents-server/src/app/admin/task-manager/TaskManagerClient.tsx +14 -2
  4. package/apps/agents-server/src/app/admin/task-manager/TaskManagerTaskLogActions.tsx +150 -0
  5. package/apps/agents-server/src/app/admin/task-manager/TaskManagerTaskRow.tsx +58 -18
  6. package/apps/agents-server/src/app/admin/task-manager/TaskManagerTaskTerminalDialog.tsx +125 -0
  7. package/apps/agents-server/src/app/admin/task-manager/TaskManagerTasksCard.tsx +3 -1
  8. package/apps/agents-server/src/app/admin/task-manager/page.tsx +3 -2
  9. package/apps/agents-server/src/app/admin/update/AdvancedOriginRepositoryPanel.tsx +14 -9
  10. package/apps/agents-server/src/app/admin/update/AutomaticSelfUpdateConfigurationCard.tsx +93 -0
  11. package/apps/agents-server/src/app/admin/update/CurrentDeploymentCard.tsx +15 -13
  12. package/apps/agents-server/src/app/admin/update/CustomCommitPicker.tsx +10 -10
  13. package/apps/agents-server/src/app/admin/update/InstalledVersionsCard.tsx +112 -0
  14. package/apps/agents-server/src/app/admin/update/PendingCommitsCard.tsx +9 -8
  15. package/apps/agents-server/src/app/admin/update/TargetEnvironmentCard.tsx +14 -14
  16. package/apps/agents-server/src/app/admin/update/UpdateClient.tsx +18 -8
  17. package/apps/agents-server/src/app/admin/update/UpdateDatabaseMigrationsPanel.tsx +305 -0
  18. package/apps/agents-server/src/app/admin/update/UpdateJobCard.tsx +29 -8
  19. package/apps/agents-server/src/app/admin/update/UpdateOverview.ts +68 -0
  20. package/apps/agents-server/src/app/admin/update/updatePageCardClassName.ts +6 -0
  21. package/apps/agents-server/src/app/admin/update/useUpdateClientState.ts +241 -7
  22. package/apps/agents-server/src/app/agents/[agentName]/AgentChatWrapper.tsx +17 -3
  23. package/apps/agents-server/src/app/agents/[agentName]/chat/CanonicalAgentChatSurface.tsx +6 -2
  24. package/apps/agents-server/src/app/api/admin/chat-tasks/[taskId]/terminal/route.ts +52 -0
  25. package/apps/agents-server/src/app/api/admin/update/route.ts +55 -8
  26. package/apps/agents-server/src/app/api/admin/update/versions/route.ts +34 -0
  27. package/apps/agents-server/src/app/api/auth/shibboleth/acs/route.ts +4 -2
  28. package/apps/agents-server/src/app/api/auth/shibboleth/login/route.ts +3 -1
  29. package/apps/agents-server/src/app/api/auth/shibboleth/metadata/route.ts +5 -2
  30. package/apps/agents-server/src/app/api/auth/shibboleth/status/route.ts +5 -2
  31. package/apps/agents-server/src/app/layout.tsx +39 -25
  32. package/apps/agents-server/src/components/AgentAvatar/AgentAvatar.tsx +1 -1
  33. package/apps/agents-server/src/components/AgentAvatar/DefaultAgentAvatarVisualProvider.tsx +1 -1
  34. package/apps/agents-server/src/components/Header/Header.tsx +16 -3
  35. package/apps/agents-server/src/components/Header/HeaderTypes.ts +6 -0
  36. package/apps/agents-server/src/components/Header/buildAgentMenuStructure.tsx +6 -4
  37. package/apps/agents-server/src/components/Header/buildHeaderSystemMenuItems.ts +13 -1
  38. package/apps/agents-server/src/components/Homepage/useAgentsListState.ts +1 -1
  39. package/apps/agents-server/src/components/LayoutWrapper/LayoutWrapper.tsx +21 -5
  40. package/apps/agents-server/src/constants/defaultAgentAvatarVisual.ts +4 -3
  41. package/apps/agents-server/src/database/metadataDefaults.ts +1 -1
  42. package/apps/agents-server/src/database/migrate.ts +25 -1
  43. package/apps/agents-server/src/database/migratePrefix.ts +24 -0
  44. package/apps/agents-server/src/database/runDatabaseMigrations.ts +9 -1
  45. package/apps/agents-server/src/instrumentation-node.ts +15 -0
  46. package/apps/agents-server/src/languages/ServerTranslationKeys.ts +1 -0
  47. package/apps/agents-server/src/languages/translations/czech.yaml +1 -0
  48. package/apps/agents-server/src/languages/translations/english.yaml +1 -0
  49. package/apps/agents-server/src/{components/Homepage → utils/agentOrganization}/hiddenFolders.ts +49 -29
  50. package/apps/agents-server/src/utils/backup/createServerBackupZipStream.ts +7 -1382
  51. package/apps/agents-server/src/utils/backup/serverBackup/appendAgentBackupEntriesToZip.ts +27 -0
  52. package/apps/agents-server/src/utils/backup/serverBackup/appendConversationBackupEntriesToZip.ts +140 -0
  53. package/apps/agents-server/src/utils/backup/serverBackup/appendFileBackupEntriesToZip.ts +147 -0
  54. package/apps/agents-server/src/utils/backup/serverBackup/appendMessageBackupEntriesToZip.ts +65 -0
  55. package/apps/agents-server/src/utils/backup/serverBackup/appendMetadataBackupEntriesToZip.ts +39 -0
  56. package/apps/agents-server/src/utils/backup/serverBackup/appendSectionEntriesToZip.ts +92 -0
  57. package/apps/agents-server/src/utils/backup/serverBackup/appendUserBackupEntriesToZip.ts +80 -0
  58. package/apps/agents-server/src/utils/backup/serverBackup/createRedactedWalletBackupRecord.ts +34 -0
  59. package/apps/agents-server/src/utils/backup/serverBackup/createServerBackupManifest.ts +82 -0
  60. package/apps/agents-server/src/utils/backup/serverBackup/downloadBackupBinaryContent.ts +39 -0
  61. package/apps/agents-server/src/utils/backup/serverBackup/resolveFeedbackThreadMessages.ts +53 -0
  62. package/apps/agents-server/src/utils/backup/serverBackup/serverBackupAttachments.ts +151 -0
  63. package/apps/agents-server/src/utils/backup/serverBackup/serverBackupContext.ts +167 -0
  64. package/apps/agents-server/src/utils/backup/serverBackup/serverBackupFilenames.ts +161 -0
  65. package/apps/agents-server/src/utils/backup/serverBackup/serverBackupPreviews.ts +97 -0
  66. package/apps/agents-server/src/utils/backup/serverBackup/serverBackupRowUtilities.ts +158 -0
  67. package/apps/agents-server/src/utils/backup/serverBackup/serverBackupTypes.ts +59 -0
  68. package/apps/agents-server/src/utils/chat/createAttachmentAwareCitationLabelResolver.ts +147 -0
  69. package/apps/agents-server/src/utils/chatTasksAdmin.ts +1 -1
  70. package/apps/agents-server/src/utils/externalChatRunner/processExternalUserChatJob.ts +11 -5
  71. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks/GetAdminChatTasksData.ts +12 -0
  72. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks/adminChatTaskSqlQuery.ts +264 -0
  73. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks/adminChatTaskSqlValues.ts +35 -0
  74. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks/adminChatTaskTimeUtilities.ts +30 -0
  75. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks/compareAdminChatTasks.ts +135 -0
  76. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks/createAdminChatTaskCounters.ts +29 -0
  77. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks/filterAdminChatTasks.ts +78 -0
  78. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks/getAdminChatTasksViaClientSql.ts +62 -0
  79. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks/getAdminChatTasksViaSupabaseQuery.ts +29 -0
  80. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks/loadAdminChatTaskFallbackData.ts +193 -0
  81. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks/mapAdminChatTaskFallbackRows.ts +99 -0
  82. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks/mapAdminChatTaskSqlRows.ts +94 -0
  83. package/apps/agents-server/src/utils/getAdminChatTasksResponse/getAdminChatTasks.ts +4 -947
  84. package/apps/agents-server/src/utils/getAdminChatTasksResponse/mapVpsSelfUpdateJobToAdminChatTask.ts +18 -5
  85. package/apps/agents-server/src/utils/getAdminChatTasksResponse.ts +57 -21
  86. package/apps/agents-server/src/utils/localChatRunner/processLocalUserChatJob.ts +20 -5
  87. package/apps/agents-server/src/utils/pagePreviewBrowserSessions.ts +13 -1
  88. package/apps/agents-server/src/utils/resourceMonitor/formatResourceMonitorValue.ts +50 -0
  89. package/apps/agents-server/src/utils/resourceMonitor/readCpuResourceUsage.ts +75 -0
  90. package/apps/agents-server/src/utils/resourceMonitor/readDiskResourceUsage.ts +42 -0
  91. package/apps/agents-server/src/utils/resourceMonitor/readMemoryResourceUsage.ts +28 -0
  92. package/apps/agents-server/src/utils/resourceMonitor/readNetworkResourceUsage.ts +271 -0
  93. package/apps/agents-server/src/utils/resourceMonitor/readServerResourceMonitorSnapshot.ts +47 -0
  94. package/apps/agents-server/src/utils/resourceMonitor/resolveServerResourceWarningStatus.ts +72 -0
  95. package/apps/agents-server/src/utils/resourceMonitor/resourceMonitorConstants.ts +29 -0
  96. package/apps/agents-server/src/utils/resourceMonitor/resourceMonitorTypes.ts +155 -0
  97. package/apps/agents-server/src/utils/resourceMonitor/waitForResourceMonitorSample.ts +11 -0
  98. package/apps/agents-server/src/utils/shibbolethAuthentication/createShibbolethSamlClient.ts +35 -0
  99. package/apps/agents-server/src/utils/shibbolethAuthentication/createShibbolethServiceProviderMetadataXml.ts +25 -0
  100. package/apps/agents-server/src/utils/shibbolethAuthentication/extractShibbolethProfileAttributes.ts +173 -0
  101. package/apps/agents-server/src/utils/shibbolethAuthentication/fetchIdentityProviderMetadataXml.ts +21 -0
  102. package/apps/agents-server/src/utils/shibbolethAuthentication/findOrCreateShibbolethUser.ts +323 -0
  103. package/apps/agents-server/src/utils/shibbolethAuthentication/getShibbolethAuthenticationAttemptTableName.ts +13 -0
  104. package/apps/agents-server/src/utils/shibbolethAuthentication/getShibbolethRequestDetails.ts +19 -0
  105. package/apps/agents-server/src/utils/shibbolethAuthentication/getShibbolethUserIdentityTableName.ts +13 -0
  106. package/apps/agents-server/src/utils/shibbolethAuthentication/parseIdentityProviderMetadataXml.ts +110 -0
  107. package/apps/agents-server/src/utils/shibbolethAuthentication/recordShibbolethAuthenticationAttempt.ts +57 -0
  108. package/apps/agents-server/src/utils/shibbolethAuthentication/resolveShibbolethAuthenticationConfiguration.ts +78 -0
  109. package/apps/agents-server/src/utils/shibbolethAuthentication/resolveShibbolethPublicRequestUrl.ts +101 -0
  110. package/apps/agents-server/src/utils/shibbolethAuthentication/resolveShibbolethServiceProviderUrls.ts +63 -0
  111. package/apps/agents-server/src/utils/shibbolethAuthentication/sanitizeShibbolethRelayState.ts +17 -0
  112. package/apps/agents-server/src/utils/shibbolethAuthentication/shibbolethAuthenticationConstants.ts +62 -0
  113. package/apps/agents-server/src/utils/shibbolethAuthentication/shibbolethAuthenticationTypes.ts +105 -0
  114. package/apps/agents-server/src/utils/shibbolethAuthentication.ts +25 -957
  115. package/apps/agents-server/src/utils/taskTerminal/resolveAdminTaskTerminalSession.ts +322 -0
  116. package/apps/agents-server/src/utils/taskTerminal/runWithTaskTerminalCapture.ts +134 -0
  117. package/apps/agents-server/src/utils/taskTerminal/taskTerminalLog.ts +360 -0
  118. package/apps/agents-server/src/utils/userChat/finalizeUserChatJob.ts +16 -0
  119. package/apps/agents-server/src/utils/userChatTimeout/userChatTimeoutStore/updateUserChatTimeoutTerminalState.ts +3 -0
  120. package/apps/agents-server/src/utils/userChatTimeout/userChatTimeoutWorker.ts +4 -1
  121. package/apps/agents-server/src/utils/vpsConfiguration.ts +4 -0
  122. package/apps/agents-server/src/utils/vpsSelfUpdate/deleteVpsSelfUpdateInstalledVersion.ts +81 -0
  123. package/apps/agents-server/src/utils/vpsSelfUpdate/listVpsSelfUpdateCandidateCommits.ts +217 -0
  124. package/apps/agents-server/src/utils/vpsSelfUpdate/readPersistedVpsSelfUpdateJob.ts +310 -0
  125. package/apps/agents-server/src/utils/vpsSelfUpdate/readVpsSelfUpdateOverview.ts +178 -0
  126. package/apps/agents-server/src/utils/vpsSelfUpdate/resolveVpsSelfUpdateJobForOverview.ts +42 -0
  127. package/apps/agents-server/src/utils/vpsSelfUpdate/startVpsSelfUpdate.ts +201 -0
  128. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateAutomaticConfiguration.ts +152 -0
  129. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateConfiguration.ts +81 -0
  130. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateCron.ts +357 -0
  131. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateEnvironment.ts +120 -0
  132. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateInstalledVersions.ts +162 -0
  133. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateJobConstants.ts +15 -0
  134. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateJobHistory.ts +387 -0
  135. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateJobIdentity.ts +26 -0
  136. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateOriginRepository.ts +90 -0
  137. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateRepository.ts +286 -0
  138. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateScheduler.ts +191 -0
  139. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateStateFiles.ts +197 -0
  140. package/apps/agents-server/src/utils/vpsSelfUpdate/vpsSelfUpdateTypes.ts +452 -0
  141. package/apps/agents-server/src/utils/vpsSelfUpdate.ts +66 -1547
  142. package/esm/apps/agents-server/src/database/migratePrefix.d.ts +19 -0
  143. package/esm/apps/agents-server/src/database/runDatabaseMigrations.d.ts +4 -0
  144. package/esm/book/scripts/import-markdown/increaseHeadings.d.ts +8 -0
  145. package/esm/index.es.js +28566 -27913
  146. package/esm/index.es.js.map +1 -1
  147. package/esm/scripts/run-agent-messages/main/runMultipleAgentMessages/MultipleAgentAutoPuller.d.ts +27 -0
  148. package/esm/scripts/run-agent-messages/main/runMultipleAgentMessages/MultipleAgentGithubSynchronizer.d.ts +26 -0
  149. package/esm/scripts/run-agent-messages/main/runMultipleAgentMessages/MultipleAgentRunUiPresenter.d.ts +66 -0
  150. package/esm/scripts/run-agent-messages/main/runMultipleAgentMessages/RunMultipleAgentMessageTaskScheduler.d.ts +67 -0
  151. package/esm/scripts/run-agent-messages/main/runMultipleAgentMessages/formatProjectPath.d.ts +6 -0
  152. package/esm/scripts/run-agent-messages/main/runMultipleAgentMessages/loadLocalAgentRunnerProjectSummaries.d.ts +11 -0
  153. package/esm/scripts/run-agent-messages/main/runMultipleAgentMessages/wait.d.ts +6 -0
  154. package/esm/scripts/run-agent-messages/main/runMultipleAgentMessages.d.ts +1 -1
  155. package/esm/scripts/run-codex-prompts/runners/claude-code/ClaudeCodeRunner.d.ts +4 -0
  156. package/esm/scripts/run-codex-prompts/runners/claude-code/ClaudeCodeSessionResurrection.d.ts +37 -0
  157. package/esm/scripts/run-codex-prompts/runners/claude-code/parseClaudeCodeOutputEvents.d.ts +47 -0
  158. package/esm/scripts/run-codex-prompts/ui/CoderRunUiState.d.ts +6 -4
  159. package/esm/scripts/run-codex-prompts/ui/buildCoderRunAgentVisual.d.ts +30 -5
  160. package/esm/scripts/run-codex-prompts/ui/buildCoderRunUiFrame.d.ts +7 -1
  161. package/esm/scripts/run-codex-prompts/ui/coderRunUiRefresh.d.ts +2 -2
  162. package/esm/src/_packages/types.index.d.ts +2 -2
  163. package/esm/src/avatars/renderAvatarVisualAsciiArt.d.ts +24 -1
  164. package/esm/src/avatars/visuals/octopus3dAvatarVisualShared.d.ts +1 -1
  165. package/esm/src/book-components/BookEditor/BookEditorMonacoUploadPanel.d.ts +1 -1
  166. package/esm/src/book-components/BookEditor/useBookEditorMonacoUploads/bookEditorMonacoUploadTypes.d.ts +120 -0
  167. package/esm/src/book-components/BookEditor/useBookEditorMonacoUploads/clearScheduledTimer.d.ts +6 -0
  168. package/esm/src/book-components/BookEditor/useBookEditorMonacoUploads/enqueueFilesForUpload.d.ts +26 -0
  169. package/esm/src/book-components/BookEditor/useBookEditorMonacoUploads/useBookEditorMonacoUploadEditorSync.d.ts +23 -0
  170. package/esm/src/book-components/BookEditor/useBookEditorMonacoUploads/useBookEditorMonacoUploadItemsState.d.ts +21 -0
  171. package/esm/src/book-components/BookEditor/useBookEditorMonacoUploads/useBookEditorMonacoUploadProgressQueue.d.ts +12 -0
  172. package/esm/src/book-components/BookEditor/useBookEditorMonacoUploads/useBookEditorMonacoUploadQueue.d.ts +27 -0
  173. package/esm/src/book-components/BookEditor/useBookEditorMonacoUploads/useCompletedUploadsAutoClear.d.ts +12 -0
  174. package/esm/src/book-components/BookEditor/useBookEditorMonacoUploads.d.ts +5 -58
  175. package/esm/src/book-components/Chat/Chat/ChatImageAttachmentModal.d.ts +25 -0
  176. package/esm/src/book-components/Chat/Chat/ChatInputArea.d.ts +3 -0
  177. package/esm/src/book-components/Chat/Chat/ChatMessageAttachments.d.ts +27 -0
  178. package/esm/src/book-components/Chat/Chat/ChatMessageItem.d.ts +1 -1
  179. package/esm/src/book-components/Chat/Chat/ChatMessageList.d.ts +1 -0
  180. package/esm/src/book-components/Chat/Chat/ChatProps.d.ts +8 -0
  181. package/esm/src/book-components/Chat/Chat/useChatInputAreaComposer.d.ts +12 -0
  182. package/esm/src/book-components/Chat/Chat/useChatInputAreaComposer.draftMessage.test.d.ts +2 -0
  183. package/esm/src/book-components/Chat/utils/isVisibleChatToolCall.d.ts +1 -1
  184. package/esm/src/book-components/Chat/utils/parseMessageButtons.d.ts +16 -2
  185. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/AGENTS_SERVER_BUILD_CACHE_FILENAME.d.ts +6 -0
  186. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/AGENTS_SERVER_BUILD_CACHE_VERSION.d.ts +6 -0
  187. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/AGENTS_SERVER_NEXT_BUILD_ID_FILENAME.d.ts +6 -0
  188. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/AgentsServerBuildCache.d.ts +10 -0
  189. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/AgentsServerBuildCacheOptions.d.ts +10 -0
  190. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/NODE_MODULES_DIRECTORY_NAME.d.ts +6 -0
  191. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/PreparedAgentsServerRuntime.d.ts +18 -0
  192. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/createAgentsServerBuildSourceFingerprint.d.ts +6 -0
  193. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/createAgentsServerRuntimeEnvironment.d.ts +28 -0
  194. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/ensureAgentsServerBuild.d.ts +19 -0
  195. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/getAgentsServerBuildInputRelativePaths.d.ts +11 -0
  196. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/isAgentsServerAppPath.d.ts +6 -0
  197. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/isAgentsServerAppPathMaterialized.d.ts +6 -0
  198. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/isAgentsServerBuildCacheCurrent.d.ts +7 -0
  199. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/isAgentsServerBuildInputTestFile.d.ts +6 -0
  200. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/isExcludedAgentsServerBuildInputDirectoryName.d.ts +6 -0
  201. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/isExcludedAgentsServerBuildInputPath.d.ts +6 -0
  202. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/isExcludedAgentsServerRuntimeSourcePath.d.ts +6 -0
  203. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/isFile.d.ts +6 -0
  204. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/isPathInsideNodeModules.d.ts +6 -0
  205. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/normalizeAgentsServerBuildInputPath.d.ts +6 -0
  206. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/prepareAgentsServerRuntime.d.ts +9 -0
  207. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/readAgentsServerBuildCache.d.ts +8 -0
  208. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/resolveAgentsServerAppPath.d.ts +6 -0
  209. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/resolveAgentsServerBuildAppPath.d.ts +9 -0
  210. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/resolveAgentsServerBuildOutputPath.d.ts +7 -0
  211. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/resolveNextCliPath.d.ts +6 -0
  212. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/resolveNodeModulesPath.d.ts +6 -0
  213. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/runNextBuild.d.ts +12 -0
  214. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/shouldCopyAgentsServerRuntimePath.d.ts +6 -0
  215. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/synchronizeMaterializedAgentsServerRuntime.d.ts +11 -0
  216. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer/writeAgentsServerBuildCache.d.ts +7 -0
  217. package/esm/src/cli/cli-commands/agents-server/buildAgentsServer.d.ts +8 -109
  218. package/esm/src/cli/cli-commands/agents-server/ensureAgentsServerEnvFile.d.ts +1 -1
  219. package/esm/src/cli/cli-commands/agents-server/ensureAgentsServerGitignoreFile.d.ts +1 -1
  220. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/AgentsServerChildEnvironment.d.ts +16 -0
  221. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/AgentsServerLogStreams.d.ts +30 -0
  222. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/AgentsServerRuntimePaths.d.ts +19 -0
  223. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/AgentsServerSupervisorState.d.ts +37 -0
  224. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/LocalAgentRunnerLimits.d.ts +9 -0
  225. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/PreparedAgentsServerLaunch.d.ts +13 -0
  226. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/StartAgentsServerOptions.d.ts +24 -0
  227. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/createInternalRouteErrorMessage.d.ts +6 -0
  228. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/createLocalAgentRunOptions.d.ts +9 -0
  229. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/forwardChildOutput.d.ts +13 -0
  230. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/loadAgentsServerProjectEnvironment.d.ts +6 -0
  231. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/prepareAgentsServerLaunch.d.ts +18 -0
  232. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/readInternalRouteErrorDetails.d.ts +6 -0
  233. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/resolveAgentsServerChildHostname.d.ts +7 -0
  234. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/startNextServer.d.ts +20 -0
  235. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/startUserChatJobWorkerPump.d.ts +15 -0
  236. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/stopChildProcess.d.ts +8 -0
  237. package/esm/src/cli/cli-commands/agents-server/startAgentsServer/waitForLocalAgentRunnerLimits.d.ts +16 -0
  238. package/esm/src/cli/cli-commands/agents-server/startAgentsServer.d.ts +3 -30
  239. package/esm/src/cli/cli-commands/common/promptRunnerCliOptions.d.ts +1 -1
  240. package/esm/src/collection/agent-collection/CreateAgentInput.d.ts +1 -1
  241. package/esm/src/collection/agent-collection/constructors/agent-collection-in-supabase/prepareAgentSourceForPersistence.d.ts +1 -1
  242. package/esm/src/commitments/META/META.d.ts +2 -2
  243. package/esm/src/commitments/META_AVATAR/META_AVATAR.d.ts +9 -4
  244. package/esm/src/commitments/index.d.ts +1 -1
  245. package/esm/src/conversion/validation/validatePipeline/createPipelineValidationContext.d.ts +16 -0
  246. package/esm/src/conversion/validation/validatePipeline/validatePipelineCollectionsStructure.d.ts +7 -0
  247. package/esm/src/conversion/validation/validatePipeline/validatePipelineDependencyResolution.d.ts +7 -0
  248. package/esm/src/conversion/validation/validatePipeline/validatePipelineMetadata.d.ts +7 -0
  249. package/esm/src/conversion/validation/validatePipeline/validatePipelineParameters.d.ts +7 -0
  250. package/esm/src/conversion/validation/validatePipeline/validatePipelineTasks.d.ts +7 -0
  251. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/RegisteredLlmToolsMessageContext.d.ts +46 -0
  252. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/USED_ENV_FILENAME.d.ts +11 -0
  253. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolConfigurationStatusMessage.d.ts +7 -0
  254. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolEntryKey.d.ts +7 -0
  255. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolInstallationStatusMessage.d.ts +7 -0
  256. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolStatus.d.ts +14 -0
  257. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolsMessageContext.d.ts +7 -0
  258. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/getAvailableRegisteredLlmToolsEnvironmentVariables.d.ts +7 -0
  259. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/getRegisteredLlmToolRegisters.d.ts +7 -0
  260. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/hasRegisteredLlmToolEntry.d.ts +7 -0
  261. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/listRegisteredLlmToolEntries.d.ts +9 -0
  262. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/listRegisteredLlmToolStatuses.d.ts +7 -0
  263. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/renderAvailableRegisteredLlmTools.d.ts +7 -0
  264. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/renderNoRegisteredLlmToolsMessage.d.ts +7 -0
  265. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/renderRegisteredLlmToolsMessage.d.ts +8 -0
  266. package/esm/src/llm-providers/_common/register/$registeredLlmToolsMessage/renderRelevantRegisteredLlmToolsEnvironmentVariables.d.ts +7 -0
  267. package/esm/src/utils/agents/resolveAgentAvatarImageUrl.d.ts +2 -2
  268. package/esm/src/utils/color/Color.d.ts +1 -1
  269. package/esm/src/version.d.ts +1 -1
  270. package/package.json +1 -1
  271. package/src/_packages/types.index.ts +2 -2
  272. package/src/avatars/Avatar.tsx +2 -13
  273. package/src/avatars/renderAvatarVisual.ts +2 -13
  274. package/src/avatars/renderAvatarVisualAsciiArt.ts +137 -18
  275. package/src/avatars/visuals/asciiOctopusAvatarVisual.ts +1 -6
  276. package/src/avatars/visuals/avatarVisualRegistry.ts +1 -1
  277. package/src/avatars/visuals/minecraft2AvatarVisual.ts +1 -2
  278. package/src/avatars/visuals/octopus2AvatarVisual.ts +1 -5
  279. package/src/avatars/visuals/octopus3AvatarVisual.ts +1 -8
  280. package/src/avatars/visuals/octopus3d2AvatarVisual.ts +4 -13
  281. package/src/avatars/visuals/octopus3d3AvatarVisual.ts +4 -13
  282. package/src/avatars/visuals/octopus3d4AvatarVisual.ts +4 -13
  283. package/src/avatars/visuals/octopus3dAvatarVisual.ts +3 -3
  284. package/src/avatars/visuals/octopus3dAvatarVisualShared.ts +2 -7
  285. package/src/book-2.0/agent-source/parseAgentSource/applyMetaCommitment.ts +2 -1
  286. package/src/book-2.0/book-language-documentation/createStandaloneBookLanguageMarkdown.ts +3 -5
  287. package/src/book-3.0/CliAgent.ts +1 -7
  288. package/src/book-3.0/LiteAgent.ts +5 -5
  289. package/src/book-components/AvatarProfile/AvatarProfile/AvatarProfile.tsx +1 -4
  290. package/src/book-components/BookEditor/BookEditor.tsx +2 -2
  291. package/src/book-components/BookEditor/BookEditorAboutPromptbookInformation.tsx +3 -2
  292. package/src/book-components/BookEditor/BookEditorActionbar.tsx +1 -1
  293. package/src/book-components/BookEditor/BookEditorMonaco.tsx +2 -2
  294. package/src/book-components/BookEditor/BookEditorMonacoUploadPanel.tsx +1 -1
  295. package/src/book-components/BookEditor/useBookEditorMonacoLanguage.ts +1 -1
  296. package/src/book-components/BookEditor/useBookEditorMonacoStyles.ts +1 -1
  297. package/src/book-components/BookEditor/useBookEditorMonacoUploads/bookEditorMonacoUploadTypes.ts +147 -0
  298. package/src/book-components/BookEditor/useBookEditorMonacoUploads/clearScheduledTimer.ts +10 -0
  299. package/src/book-components/BookEditor/useBookEditorMonacoUploads/enqueueFilesForUpload.ts +209 -0
  300. package/src/book-components/BookEditor/useBookEditorMonacoUploads/useBookEditorMonacoUploadEditorSync.ts +164 -0
  301. package/src/book-components/BookEditor/useBookEditorMonacoUploads/useBookEditorMonacoUploadItemsState.ts +121 -0
  302. package/src/book-components/BookEditor/useBookEditorMonacoUploads/useBookEditorMonacoUploadProgressQueue.ts +81 -0
  303. package/src/book-components/BookEditor/useBookEditorMonacoUploads/useBookEditorMonacoUploadQueue.ts +360 -0
  304. package/src/book-components/BookEditor/useBookEditorMonacoUploads/useCompletedUploadsAutoClear.ts +47 -0
  305. package/src/book-components/BookEditor/useBookEditorMonacoUploads.ts +10 -1067
  306. package/src/book-components/Chat/Chat/Chat.module.css +159 -0
  307. package/src/book-components/Chat/Chat/Chat.tsx +16 -1
  308. package/src/book-components/Chat/Chat/ChatCitationModal.tsx +2 -2
  309. package/src/book-components/Chat/Chat/ChatImageAttachmentModal.tsx +108 -0
  310. package/src/book-components/Chat/Chat/ChatInputArea.tsx +43 -27
  311. package/src/book-components/Chat/Chat/ChatMessageAttachments.tsx +212 -0
  312. package/src/book-components/Chat/Chat/ChatMessageItem.tsx +32 -18
  313. package/src/book-components/Chat/Chat/ChatMessageList.tsx +3 -0
  314. package/src/book-components/Chat/Chat/ChatProps.tsx +9 -0
  315. package/src/book-components/Chat/Chat/renderTimeoutToolCallDetails.tsx +1 -5
  316. package/src/book-components/Chat/Chat/useChatInputAreaComposer.ts +59 -7
  317. package/src/book-components/Chat/Chat/useChatInputAreaDictation.ts +7 -7
  318. package/src/book-components/Chat/Chat/useChatToolCallModalState.ts +1 -4
  319. package/src/book-components/Chat/hooks/useChatRatings.ts +1 -1
  320. package/src/book-components/Chat/save/html/htmlSaveFormatDefinition.ts +2 -3
  321. package/src/book-components/Chat/save/markdown/mdSaveFormatDefinition.ts +2 -2
  322. package/src/book-components/Chat/save/pdf/buildChatPdf.ts +1 -1
  323. package/src/book-components/Chat/utils/getToolCallChipletInfo.ts +1 -5
  324. package/src/book-components/Chat/utils/isVisibleChatToolCall.ts +2 -1
  325. package/src/book-components/Chat/utils/parseMessageButtons.ts +27 -2
  326. package/src/cli/cli-commands/about.ts +1 -1
  327. package/src/cli/cli-commands/agent/agentCliOptions.ts +2 -5
  328. package/src/cli/cli-commands/agent-folder/agentProjectPaths.ts +6 -12
  329. package/src/cli/cli-commands/agent-folder/init.ts +3 -8
  330. package/src/cli/cli-commands/agent-folder/initializeAgentProjectConfiguration.ts +2 -11
  331. package/src/cli/cli-commands/agent-folder/printAgentInitializationSummary.ts +2 -9
  332. package/src/cli/cli-commands/agents-server/buildAgentsServer/AGENTS_SERVER_BUILD_CACHE_FILENAME.ts +6 -0
  333. package/src/cli/cli-commands/agents-server/buildAgentsServer/AGENTS_SERVER_BUILD_CACHE_VERSION.ts +6 -0
  334. package/src/cli/cli-commands/agents-server/buildAgentsServer/AGENTS_SERVER_NEXT_BUILD_ID_FILENAME.ts +6 -0
  335. package/src/cli/cli-commands/agents-server/buildAgentsServer/AgentsServerBuildCache.ts +11 -0
  336. package/src/cli/cli-commands/agents-server/buildAgentsServer/AgentsServerBuildCacheOptions.ts +9 -0
  337. package/src/cli/cli-commands/agents-server/buildAgentsServer/NODE_MODULES_DIRECTORY_NAME.ts +6 -0
  338. package/src/cli/cli-commands/agents-server/buildAgentsServer/PreparedAgentsServerRuntime.ts +19 -0
  339. package/src/cli/cli-commands/agents-server/buildAgentsServer/createAgentsServerBuildSourceFingerprint.ts +71 -0
  340. package/src/cli/cli-commands/agents-server/buildAgentsServer/createAgentsServerRuntimeEnvironment.ts +69 -0
  341. package/src/cli/cli-commands/agents-server/buildAgentsServer/ensureAgentsServerBuild.ts +59 -0
  342. package/src/cli/cli-commands/agents-server/buildAgentsServer/getAgentsServerBuildInputRelativePaths.ts +23 -0
  343. package/src/cli/cli-commands/agents-server/buildAgentsServer/isAgentsServerAppPath.ts +20 -0
  344. package/src/cli/cli-commands/agents-server/buildAgentsServer/isAgentsServerAppPathMaterialized.ts +17 -0
  345. package/src/cli/cli-commands/agents-server/buildAgentsServer/isAgentsServerBuildCacheCurrent.ts +27 -0
  346. package/src/cli/cli-commands/agents-server/buildAgentsServer/isAgentsServerBuildInputTestFile.ts +21 -0
  347. package/src/cli/cli-commands/agents-server/buildAgentsServer/isExcludedAgentsServerBuildInputDirectoryName.ts +22 -0
  348. package/src/cli/cli-commands/agents-server/buildAgentsServer/isExcludedAgentsServerBuildInputPath.ts +30 -0
  349. package/src/cli/cli-commands/agents-server/buildAgentsServer/isExcludedAgentsServerRuntimeSourcePath.ts +41 -0
  350. package/src/cli/cli-commands/agents-server/buildAgentsServer/isFile.ts +14 -0
  351. package/src/cli/cli-commands/agents-server/buildAgentsServer/isPathInsideNodeModules.ts +10 -0
  352. package/src/cli/cli-commands/agents-server/buildAgentsServer/normalizeAgentsServerBuildInputPath.ts +10 -0
  353. package/src/cli/cli-commands/agents-server/buildAgentsServer/prepareAgentsServerRuntime.ts +31 -0
  354. package/src/cli/cli-commands/agents-server/buildAgentsServer/readAgentsServerBuildCache.ts +35 -0
  355. package/src/cli/cli-commands/agents-server/buildAgentsServer/resolveAgentsServerAppPath.ts +33 -0
  356. package/src/cli/cli-commands/agents-server/buildAgentsServer/resolveAgentsServerBuildAppPath.ts +30 -0
  357. package/src/cli/cli-commands/agents-server/buildAgentsServer/resolveAgentsServerBuildOutputPath.ts +19 -0
  358. package/src/cli/cli-commands/agents-server/buildAgentsServer/resolveNextCliPath.ts +21 -0
  359. package/src/cli/cli-commands/agents-server/buildAgentsServer/resolveNodeModulesPath.ts +19 -0
  360. package/src/cli/cli-commands/agents-server/buildAgentsServer/runNextBuild.ts +184 -0
  361. package/src/cli/cli-commands/agents-server/buildAgentsServer/shouldCopyAgentsServerRuntimePath.ts +48 -0
  362. package/src/cli/cli-commands/agents-server/buildAgentsServer/synchronizeMaterializedAgentsServerRuntime.ts +179 -0
  363. package/src/cli/cli-commands/agents-server/buildAgentsServer/writeAgentsServerBuildCache.ts +28 -0
  364. package/src/cli/cli-commands/agents-server/buildAgentsServer.ts +22 -1045
  365. package/src/cli/cli-commands/agents-server/ensureAgentsServerEnvFile.ts +2 -1
  366. package/src/cli/cli-commands/agents-server/ensureAgentsServerGitignoreFile.ts +2 -1
  367. package/src/cli/cli-commands/agents-server/run.ts +2 -5
  368. package/src/cli/cli-commands/agents-server/startAgentsServer/AgentsServerChildEnvironment.ts +67 -0
  369. package/src/cli/cli-commands/agents-server/startAgentsServer/AgentsServerLogStreams.ts +43 -0
  370. package/src/cli/cli-commands/agents-server/startAgentsServer/AgentsServerRuntimePaths.ts +44 -0
  371. package/src/cli/cli-commands/agents-server/startAgentsServer/AgentsServerSupervisorState.ts +59 -0
  372. package/src/cli/cli-commands/agents-server/startAgentsServer/LocalAgentRunnerLimits.ts +9 -0
  373. package/src/cli/cli-commands/agents-server/startAgentsServer/PreparedAgentsServerLaunch.ts +14 -0
  374. package/src/cli/cli-commands/agents-server/startAgentsServer/StartAgentsServerOptions.ts +26 -0
  375. package/src/cli/cli-commands/agents-server/startAgentsServer/createInternalRouteErrorMessage.ts +15 -0
  376. package/src/cli/cli-commands/agents-server/startAgentsServer/createLocalAgentRunOptions.ts +29 -0
  377. package/src/cli/cli-commands/agents-server/startAgentsServer/forwardChildOutput.ts +32 -0
  378. package/src/cli/cli-commands/agents-server/startAgentsServer/loadAgentsServerProjectEnvironment.ts +18 -0
  379. package/src/cli/cli-commands/agents-server/startAgentsServer/prepareAgentsServerLaunch.ts +81 -0
  380. package/src/cli/cli-commands/agents-server/startAgentsServer/readInternalRouteErrorDetails.ts +52 -0
  381. package/src/cli/cli-commands/agents-server/startAgentsServer/resolveAgentsServerChildHostname.ts +17 -0
  382. package/src/cli/cli-commands/agents-server/startAgentsServer/startNextServer.ts +97 -0
  383. package/src/cli/cli-commands/agents-server/startAgentsServer/startUserChatJobWorkerPump.ts +132 -0
  384. package/src/cli/cli-commands/agents-server/startAgentsServer/stopChildProcess.ts +14 -0
  385. package/src/cli/cli-commands/agents-server/startAgentsServer/waitForLocalAgentRunnerLimits.ts +132 -0
  386. package/src/cli/cli-commands/agents-server/startAgentsServer.ts +24 -797
  387. package/src/cli/cli-commands/agents-server.ts +2 -6
  388. package/src/cli/cli-commands/coder/agentCodingFile.ts +1 -7
  389. package/src/cli/cli-commands/coder/generate-boilerplates.ts +2 -6
  390. package/src/cli/cli-commands/coder/initializeCoderProjectConfiguration.ts +2 -7
  391. package/src/cli/cli-commands/coder/server.ts +4 -2
  392. package/src/cli/cli-commands/common/promptRunnerCliOptions.ts +3 -8
  393. package/src/cli/cli-commands/make.ts +1 -1
  394. package/src/cli/cli-commands/run/runCommandAction.ts +1 -1
  395. package/src/collection/agent-collection/CreateAgentInput.ts +2 -5
  396. package/src/collection/agent-collection/constructors/agent-collection-in-supabase/prepareAgentSourceForPersistence.ts +1 -1
  397. package/src/commitments/MEMORY/createMemoryToolFunctions.ts +1 -10
  398. package/src/commitments/MEMORY/getMemoryToolRuntimeAdapterOrDisabledResult.ts +1 -10
  399. package/src/commitments/MEMORY/parseMemoryToolArgs.ts +1 -6
  400. package/src/commitments/META/META.ts +4 -4
  401. package/src/commitments/META_AVATAR/META_AVATAR.ts +16 -10
  402. package/src/commitments/USE_CALENDAR/createUseCalendarToolFunctions.ts +1 -4
  403. package/src/commitments/USE_PROJECT/createUseProjectToolFunctions.ts +2 -10
  404. package/src/commitments/USE_TIMEOUT/createTimeoutToolFunctions.ts +1 -11
  405. package/src/commitments/USE_TIMEOUT/getTimeoutToolRuntimeAdapterOrDisabledResult.ts +1 -6
  406. package/src/commitments/USE_TIMEOUT/parseTimeoutToolArgs.ts +1 -6
  407. package/src/commitments/WALLET/createWalletToolFunctions.ts +2 -11
  408. package/src/commitments/WALLET/getWalletToolRuntimeAdapterOrDisabledResult.ts +1 -6
  409. package/src/commitments/WALLET/parseWalletToolArgs.ts +1 -10
  410. package/src/commitments/index.ts +1 -0
  411. package/src/conversion/parsePipeline/applyPipelineHead.ts +1 -1
  412. package/src/conversion/parsePipeline/createUniqueSectionNameResolver.ts +1 -1
  413. package/src/conversion/parsePipeline/processPipelineSection.ts +1 -1
  414. package/src/conversion/validation/validatePipeline/createPipelineValidationContext.ts +43 -0
  415. package/src/conversion/validation/validatePipeline/validatePipelineCollectionsStructure.ts +72 -0
  416. package/src/conversion/validation/validatePipeline/validatePipelineDependencyResolution.ts +220 -0
  417. package/src/conversion/validation/validatePipeline/validatePipelineMetadata.ts +66 -0
  418. package/src/conversion/validation/validatePipeline/validatePipelineParameters.ts +136 -0
  419. package/src/conversion/validation/validatePipeline/validatePipelineTasks.ts +243 -0
  420. package/src/conversion/validation/validatePipeline.ts +7 -750
  421. package/src/execution/LlmExecutionTools.ts +1 -6
  422. package/src/execution/createPipelineExecutor/getReservedParametersForTask.ts +1 -5
  423. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/RegisteredLlmToolsMessageContext.ts +51 -0
  424. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/USED_ENV_FILENAME.ts +30 -0
  425. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolConfigurationStatusMessage.ts +62 -0
  426. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolEntryKey.ts +10 -0
  427. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolInstallationStatusMessage.ts +75 -0
  428. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolStatus.ts +101 -0
  429. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolsMessageContext.ts +24 -0
  430. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/getAvailableRegisteredLlmToolsEnvironmentVariables.ts +17 -0
  431. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/getRegisteredLlmToolRegisters.ts +15 -0
  432. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/hasRegisteredLlmToolEntry.ts +19 -0
  433. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/listRegisteredLlmToolEntries.ts +44 -0
  434. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/listRegisteredLlmToolStatuses.ts +21 -0
  435. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/renderAvailableRegisteredLlmTools.ts +97 -0
  436. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/renderNoRegisteredLlmToolsMessage.ts +17 -0
  437. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/renderRegisteredLlmToolsMessage.ts +30 -0
  438. package/src/llm-providers/_common/register/$registeredLlmToolsMessage/renderRelevantRegisteredLlmToolsEnvironmentVariables.ts +32 -0
  439. package/src/llm-providers/_common/register/$registeredLlmToolsMessage.ts +5 -568
  440. package/src/llm-providers/_common/utils/count-total-usage/limitTotalUsage.ts +1 -6
  441. package/src/llm-providers/openai/OpenAiAgentKitExecutionTools.ts +2 -2
  442. package/src/llm-providers/openai/OpenAiAssistantExecutionTools.ts +1 -1
  443. package/src/llm-providers/openai/OpenAiAssistantExecutionToolsStreamRunner.ts +2 -2
  444. package/src/llm-providers/openai/OpenAiAssistantExecutionToolsToolRunner.ts +1 -1
  445. package/src/llm-providers/openai/OpenAiCompatibleExecutionTools.ts +2 -7
  446. package/src/llm-providers/openai/utils/OpenAiCompatibleChatPromptBuilder.ts +1 -1
  447. package/src/llm-providers/openai/utils/OpenAiCompatibleChatToolCaller.ts +2 -2
  448. package/src/llm-providers/openai/utils/OpenAiCompatibleUnsupportedParameterRetrier.ts +1 -5
  449. package/src/llm-providers/openai/utils/buildToolInvocationScript.ts +1 -6
  450. package/src/other/templates/getTemplatesPipelineCollection.ts +705 -791
  451. package/src/remote-server/startRemoteServer/registerExecutionRoutes.ts +1 -1
  452. package/src/remote-server/startRemoteServer/registerServerIndexRoute.ts +1 -1
  453. package/src/scrapers/_common/utils/makeKnowledgeSourceHandler.ts +1 -6
  454. package/src/speech-recognition/OpenAiSpeechRecognition.ts +1 -6
  455. package/src/transpilers/_common/prepareSdkTranspilerContext.ts +1 -4
  456. package/src/types/Prompt.ts +1 -7
  457. package/src/types/string_host.ts +1 -9
  458. package/src/types/string_pipeline_url.ts +1 -4
  459. package/src/utils/agents/resolveAgentAvatarImageUrl.ts +2 -2
  460. package/src/utils/color/Color.ts +2 -2
  461. package/src/utils/markdown/parseMarkdownSection.ts +1 -5
  462. package/src/utils/random/$randomFullnameWithColor.ts +1 -6
  463. package/src/version.ts +2 -2
  464. package/src/versions.txt +2 -1
  465. package/umd/apps/agents-server/src/database/migratePrefix.d.ts +19 -0
  466. package/umd/apps/agents-server/src/database/runDatabaseMigrations.d.ts +4 -0
  467. package/umd/book/scripts/import-markdown/increaseHeadings.d.ts +8 -0
  468. package/umd/index.umd.js +28568 -27915
  469. package/umd/index.umd.js.map +1 -1
  470. package/umd/scripts/run-agent-messages/main/runMultipleAgentMessages/MultipleAgentAutoPuller.d.ts +27 -0
  471. package/umd/scripts/run-agent-messages/main/runMultipleAgentMessages/MultipleAgentGithubSynchronizer.d.ts +26 -0
  472. package/umd/scripts/run-agent-messages/main/runMultipleAgentMessages/MultipleAgentRunUiPresenter.d.ts +66 -0
  473. package/umd/scripts/run-agent-messages/main/runMultipleAgentMessages/RunMultipleAgentMessageTaskScheduler.d.ts +67 -0
  474. package/umd/scripts/run-agent-messages/main/runMultipleAgentMessages/formatProjectPath.d.ts +6 -0
  475. package/umd/scripts/run-agent-messages/main/runMultipleAgentMessages/loadLocalAgentRunnerProjectSummaries.d.ts +11 -0
  476. package/umd/scripts/run-agent-messages/main/runMultipleAgentMessages/wait.d.ts +6 -0
  477. package/umd/scripts/run-agent-messages/main/runMultipleAgentMessages.d.ts +1 -1
  478. package/umd/scripts/run-codex-prompts/runners/claude-code/ClaudeCodeRunner.d.ts +4 -0
  479. package/umd/scripts/run-codex-prompts/runners/claude-code/ClaudeCodeSessionResurrection.d.ts +37 -0
  480. package/umd/scripts/run-codex-prompts/runners/claude-code/parseClaudeCodeOutputEvents.d.ts +47 -0
  481. package/umd/scripts/run-codex-prompts/ui/CoderRunUiState.d.ts +6 -4
  482. package/umd/scripts/run-codex-prompts/ui/buildCoderRunAgentVisual.d.ts +30 -5
  483. package/umd/scripts/run-codex-prompts/ui/buildCoderRunUiFrame.d.ts +7 -1
  484. package/umd/scripts/run-codex-prompts/ui/coderRunUiRefresh.d.ts +2 -2
  485. package/umd/src/_packages/types.index.d.ts +2 -2
  486. package/umd/src/avatars/renderAvatarVisualAsciiArt.d.ts +24 -1
  487. package/umd/src/avatars/visuals/octopus3dAvatarVisualShared.d.ts +1 -1
  488. package/umd/src/book-components/BookEditor/BookEditorMonacoUploadPanel.d.ts +1 -1
  489. package/umd/src/book-components/BookEditor/useBookEditorMonacoUploads/bookEditorMonacoUploadTypes.d.ts +120 -0
  490. package/umd/src/book-components/BookEditor/useBookEditorMonacoUploads/clearScheduledTimer.d.ts +6 -0
  491. package/umd/src/book-components/BookEditor/useBookEditorMonacoUploads/enqueueFilesForUpload.d.ts +26 -0
  492. package/umd/src/book-components/BookEditor/useBookEditorMonacoUploads/useBookEditorMonacoUploadEditorSync.d.ts +23 -0
  493. package/umd/src/book-components/BookEditor/useBookEditorMonacoUploads/useBookEditorMonacoUploadItemsState.d.ts +21 -0
  494. package/umd/src/book-components/BookEditor/useBookEditorMonacoUploads/useBookEditorMonacoUploadProgressQueue.d.ts +12 -0
  495. package/umd/src/book-components/BookEditor/useBookEditorMonacoUploads/useBookEditorMonacoUploadQueue.d.ts +27 -0
  496. package/umd/src/book-components/BookEditor/useBookEditorMonacoUploads/useCompletedUploadsAutoClear.d.ts +12 -0
  497. package/umd/src/book-components/BookEditor/useBookEditorMonacoUploads.d.ts +5 -58
  498. package/umd/src/book-components/Chat/Chat/ChatImageAttachmentModal.d.ts +25 -0
  499. package/umd/src/book-components/Chat/Chat/ChatInputArea.d.ts +3 -0
  500. package/umd/src/book-components/Chat/Chat/ChatMessageAttachments.d.ts +27 -0
  501. package/umd/src/book-components/Chat/Chat/ChatMessageItem.d.ts +1 -1
  502. package/umd/src/book-components/Chat/Chat/ChatMessageList.d.ts +1 -0
  503. package/umd/src/book-components/Chat/Chat/ChatProps.d.ts +8 -0
  504. package/umd/src/book-components/Chat/Chat/useChatInputAreaComposer.d.ts +12 -0
  505. package/umd/src/book-components/Chat/Chat/useChatInputAreaComposer.draftMessage.test.d.ts +2 -0
  506. package/umd/src/book-components/Chat/utils/isVisibleChatToolCall.d.ts +1 -1
  507. package/umd/src/book-components/Chat/utils/parseMessageButtons.d.ts +16 -2
  508. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/AGENTS_SERVER_BUILD_CACHE_FILENAME.d.ts +6 -0
  509. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/AGENTS_SERVER_BUILD_CACHE_VERSION.d.ts +6 -0
  510. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/AGENTS_SERVER_NEXT_BUILD_ID_FILENAME.d.ts +6 -0
  511. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/AgentsServerBuildCache.d.ts +10 -0
  512. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/AgentsServerBuildCacheOptions.d.ts +10 -0
  513. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/NODE_MODULES_DIRECTORY_NAME.d.ts +6 -0
  514. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/PreparedAgentsServerRuntime.d.ts +18 -0
  515. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/createAgentsServerBuildSourceFingerprint.d.ts +6 -0
  516. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/createAgentsServerRuntimeEnvironment.d.ts +28 -0
  517. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/ensureAgentsServerBuild.d.ts +19 -0
  518. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/getAgentsServerBuildInputRelativePaths.d.ts +11 -0
  519. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/isAgentsServerAppPath.d.ts +6 -0
  520. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/isAgentsServerAppPathMaterialized.d.ts +6 -0
  521. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/isAgentsServerBuildCacheCurrent.d.ts +7 -0
  522. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/isAgentsServerBuildInputTestFile.d.ts +6 -0
  523. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/isExcludedAgentsServerBuildInputDirectoryName.d.ts +6 -0
  524. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/isExcludedAgentsServerBuildInputPath.d.ts +6 -0
  525. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/isExcludedAgentsServerRuntimeSourcePath.d.ts +6 -0
  526. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/isFile.d.ts +6 -0
  527. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/isPathInsideNodeModules.d.ts +6 -0
  528. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/normalizeAgentsServerBuildInputPath.d.ts +6 -0
  529. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/prepareAgentsServerRuntime.d.ts +9 -0
  530. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/readAgentsServerBuildCache.d.ts +8 -0
  531. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/resolveAgentsServerAppPath.d.ts +6 -0
  532. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/resolveAgentsServerBuildAppPath.d.ts +9 -0
  533. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/resolveAgentsServerBuildOutputPath.d.ts +7 -0
  534. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/resolveNextCliPath.d.ts +6 -0
  535. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/resolveNodeModulesPath.d.ts +6 -0
  536. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/runNextBuild.d.ts +12 -0
  537. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/shouldCopyAgentsServerRuntimePath.d.ts +6 -0
  538. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/synchronizeMaterializedAgentsServerRuntime.d.ts +11 -0
  539. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer/writeAgentsServerBuildCache.d.ts +7 -0
  540. package/umd/src/cli/cli-commands/agents-server/buildAgentsServer.d.ts +8 -109
  541. package/umd/src/cli/cli-commands/agents-server/ensureAgentsServerEnvFile.d.ts +1 -1
  542. package/umd/src/cli/cli-commands/agents-server/ensureAgentsServerGitignoreFile.d.ts +1 -1
  543. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/AgentsServerChildEnvironment.d.ts +16 -0
  544. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/AgentsServerLogStreams.d.ts +30 -0
  545. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/AgentsServerRuntimePaths.d.ts +19 -0
  546. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/AgentsServerSupervisorState.d.ts +37 -0
  547. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/LocalAgentRunnerLimits.d.ts +9 -0
  548. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/PreparedAgentsServerLaunch.d.ts +13 -0
  549. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/StartAgentsServerOptions.d.ts +24 -0
  550. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/createInternalRouteErrorMessage.d.ts +6 -0
  551. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/createLocalAgentRunOptions.d.ts +9 -0
  552. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/forwardChildOutput.d.ts +13 -0
  553. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/loadAgentsServerProjectEnvironment.d.ts +6 -0
  554. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/prepareAgentsServerLaunch.d.ts +18 -0
  555. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/readInternalRouteErrorDetails.d.ts +6 -0
  556. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/resolveAgentsServerChildHostname.d.ts +7 -0
  557. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/startNextServer.d.ts +20 -0
  558. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/startUserChatJobWorkerPump.d.ts +15 -0
  559. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/stopChildProcess.d.ts +8 -0
  560. package/umd/src/cli/cli-commands/agents-server/startAgentsServer/waitForLocalAgentRunnerLimits.d.ts +16 -0
  561. package/umd/src/cli/cli-commands/agents-server/startAgentsServer.d.ts +3 -30
  562. package/umd/src/cli/cli-commands/common/promptRunnerCliOptions.d.ts +1 -1
  563. package/umd/src/collection/agent-collection/CreateAgentInput.d.ts +1 -1
  564. package/umd/src/collection/agent-collection/constructors/agent-collection-in-supabase/prepareAgentSourceForPersistence.d.ts +1 -1
  565. package/umd/src/commitments/META/META.d.ts +2 -2
  566. package/umd/src/commitments/META_AVATAR/META_AVATAR.d.ts +9 -4
  567. package/umd/src/commitments/index.d.ts +1 -1
  568. package/umd/src/conversion/validation/validatePipeline/createPipelineValidationContext.d.ts +16 -0
  569. package/umd/src/conversion/validation/validatePipeline/validatePipelineCollectionsStructure.d.ts +7 -0
  570. package/umd/src/conversion/validation/validatePipeline/validatePipelineDependencyResolution.d.ts +7 -0
  571. package/umd/src/conversion/validation/validatePipeline/validatePipelineMetadata.d.ts +7 -0
  572. package/umd/src/conversion/validation/validatePipeline/validatePipelineParameters.d.ts +7 -0
  573. package/umd/src/conversion/validation/validatePipeline/validatePipelineTasks.d.ts +7 -0
  574. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/RegisteredLlmToolsMessageContext.d.ts +46 -0
  575. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/USED_ENV_FILENAME.d.ts +11 -0
  576. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolConfigurationStatusMessage.d.ts +7 -0
  577. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolEntryKey.d.ts +7 -0
  578. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolInstallationStatusMessage.d.ts +7 -0
  579. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolStatus.d.ts +14 -0
  580. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/createRegisteredLlmToolsMessageContext.d.ts +7 -0
  581. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/getAvailableRegisteredLlmToolsEnvironmentVariables.d.ts +7 -0
  582. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/getRegisteredLlmToolRegisters.d.ts +7 -0
  583. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/hasRegisteredLlmToolEntry.d.ts +7 -0
  584. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/listRegisteredLlmToolEntries.d.ts +9 -0
  585. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/listRegisteredLlmToolStatuses.d.ts +7 -0
  586. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/renderAvailableRegisteredLlmTools.d.ts +7 -0
  587. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/renderNoRegisteredLlmToolsMessage.d.ts +7 -0
  588. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/renderRegisteredLlmToolsMessage.d.ts +8 -0
  589. package/umd/src/llm-providers/_common/register/$registeredLlmToolsMessage/renderRelevantRegisteredLlmToolsEnvironmentVariables.d.ts +7 -0
  590. package/umd/src/utils/agents/resolveAgentAvatarImageUrl.d.ts +2 -2
  591. package/umd/src/utils/color/Color.d.ts +1 -1
  592. package/umd/src/version.d.ts +1 -1
  593. package/apps/agents-server/src/utils/userChat/createUserChatRunnerProgressCard.ts +0 -57
@@ -1,128 +1,20 @@
1
1
  import type { editor } from 'monaco-editor';
2
- import { type MutableRefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
- import type { Promisable } from 'type-fest';
4
- import { BookEditable } from '../../book-2.0/agent-source/BookEditable';
5
- import type { string_book } from '../../book-2.0/agent-source/string_book';
6
- import { DEFAULT_MAX_CONCURRENT_UPLOADS } from './BookEditorBrowserConfig';
7
- import { BookEditorMonacoConstants } from './BookEditorMonacoConstants';
8
- import { BookEditorMonacoFormatting } from './BookEditorMonacoFormatting';
2
+ import { useCallback, useEffect, useMemo, useRef } from 'react';
3
+ import type { BookEditorMonacoOnFileUpload } from './useBookEditorMonacoUploads/bookEditorMonacoUploadTypes';
4
+ import { enqueueFilesForUpload } from './useBookEditorMonacoUploads/enqueueFilesForUpload';
5
+ import { useBookEditorMonacoUploadEditorSync } from './useBookEditorMonacoUploads/useBookEditorMonacoUploadEditorSync';
6
+ import { useBookEditorMonacoUploadItemsState } from './useBookEditorMonacoUploads/useBookEditorMonacoUploadItemsState';
7
+ import { useBookEditorMonacoUploadProgressQueue } from './useBookEditorMonacoUploads/useBookEditorMonacoUploadProgressQueue';
8
+ import { useBookEditorMonacoUploadQueue } from './useBookEditorMonacoUploads/useBookEditorMonacoUploadQueue';
9
+ import { useCompletedUploadsAutoClear } from './useBookEditorMonacoUploads/useCompletedUploadsAutoClear';
10
+
11
+ export type { UploadItem, UploadStats } from './useBookEditorMonacoUploads/bookEditorMonacoUploadTypes';
9
12
 
10
13
  /**
11
14
  * Type describing monaco editor.
12
15
  */
13
16
  type MonacoEditor = typeof import('monaco-editor');
14
17
 
15
- /**
16
- * Type describing upload status.
17
- */
18
- type UploadStatus = 'queued' | 'uploading' | 'paused' | 'completed' | 'failed';
19
-
20
- /**
21
- * Type describing upload item.
22
- */
23
- export type UploadItem = {
24
- readonly id: string;
25
- readonly fileName: string;
26
- readonly fileSize: number;
27
- readonly status: UploadStatus;
28
- readonly progress: number;
29
- readonly loadedBytes: number;
30
- readonly totalBytes: number;
31
- readonly startedAt: number | null;
32
- readonly completedAt: number | null;
33
- readonly errorMessage?: string;
34
- };
35
-
36
- /**
37
- * Type describing upload progress update.
38
- */
39
- type UploadProgressUpdate = {
40
- readonly progress: number;
41
- readonly loadedBytes: number;
42
- readonly totalBytes: number;
43
- };
44
-
45
- /**
46
- * Type describing upload replacement.
47
- */
48
- type UploadReplacement = {
49
- readonly uploadId: string;
50
- readonly decorationId: string;
51
- readonly replacementText: string;
52
- };
53
-
54
- /**
55
- * Type describing placeholder entry inserted into Monaco while the file uploads.
56
- */
57
- type UploadPlaceholderEntry = {
58
- readonly id: string;
59
- readonly file: File;
60
- readonly placeholder: string;
61
- };
62
-
63
- /**
64
- * Type describing how upload placeholders should be inserted into the Monaco model.
65
- */
66
- type UploadPlaceholderInsertPlan = {
67
- readonly insertLine: number;
68
- readonly insertColumn: number;
69
- readonly insertStartOffset: number;
70
- readonly prefixLength: number;
71
- readonly textToInsert: string;
72
- };
73
-
74
- /**
75
- * Type describing upload stats.
76
- */
77
- export type UploadStats = {
78
- readonly totalFiles: number;
79
- readonly queuedFiles: number;
80
- readonly uploadingFiles: number;
81
- readonly pausedFiles: number;
82
- readonly failedFiles: number;
83
- readonly completedFiles: number;
84
- readonly totalBytes: number;
85
- readonly uploadedBytes: number;
86
- readonly progress: number;
87
- readonly elapsedMs: number;
88
- readonly speedBytesPerSecond: number;
89
- };
90
-
91
- /**
92
- * Type describing book editor monaco upload progress callback.
93
- */
94
- type BookEditorMonacoUploadProgressCallback = (
95
- progress: number,
96
- stats?: {
97
- loadedBytes: number;
98
- totalBytes: number;
99
- },
100
- ) => void;
101
-
102
- /**
103
- * Options for book editor monaco upload.
104
- */
105
- type BookEditorMonacoUploadOptions = {
106
- readonly onProgress?: BookEditorMonacoUploadProgressCallback;
107
- readonly abortSignal?: AbortSignal;
108
- };
109
-
110
- /**
111
- * Type describing book editor monaco on file upload.
112
- */
113
- type BookEditorMonacoOnFileUpload = (
114
- file: File,
115
- options?: BookEditorMonacoUploadOptions | BookEditorMonacoUploadProgressCallback,
116
- ) => Promisable<string>;
117
-
118
- /**
119
- * Type describing callback-shaped upload options passed to `onFileUpload`.
120
- */
121
- type UploadRequestOptions = BookEditorMonacoUploadProgressCallback & {
122
- onProgress?: BookEditorMonacoUploadProgressCallback;
123
- abortSignal?: AbortSignal;
124
- };
125
-
126
18
  /**
127
19
  * Props for use book editor monaco uploads.
128
20
  */
@@ -132,955 +24,6 @@ type UseBookEditorMonacoUploadsProps = {
132
24
  readonly onFileUpload?: BookEditorMonacoOnFileUpload;
133
25
  };
134
26
 
135
- /**
136
- * Setter-like updater used by upload state helpers.
137
- */
138
- type SetUploadItems = (updater: (items: UploadItem[]) => UploadItem[]) => void;
139
-
140
- /**
141
- * Single-upload updater used by upload state helpers.
142
- */
143
- type UpdateUploadItem = (uploadId: string, createNextUploadItem: (uploadItem: UploadItem) => UploadItem) => void;
144
-
145
- /**
146
- * Mutable upload items reference shared across upload helpers.
147
- */
148
- type UploadItemsRef = MutableRefObject<UploadItem[]>;
149
-
150
- /**
151
- * Mutable upload file registry reference shared across upload helpers.
152
- */
153
- type UploadFilesRef = MutableRefObject<Map<string, File>>;
154
-
155
- /**
156
- * Mutable Monaco decoration registry reference shared across upload helpers.
157
- */
158
- type UploadDecorationIdsRef = MutableRefObject<Map<string, string>>;
159
-
160
- /**
161
- * Delay before clearing completed uploads from UI.
162
- *
163
- * @private function of BookEditorMonaco
164
- */
165
- const COMPLETED_UPLOADS_CLEAR_DELAY_MS = 1500;
166
-
167
- /**
168
- * Generates deterministic ids for uploads that support server preloading.
169
- *
170
- * @private function of BookEditorMonaco
171
- */
172
- const createUploadId = (() => {
173
- let sequence = 0;
174
- return () => {
175
- if (typeof crypto !== 'undefined' && 'randomUUID' in crypto) {
176
- return crypto.randomUUID();
177
- }
178
-
179
- sequence += 1;
180
- return `upload-${Date.now()}-${sequence}`;
181
- };
182
- })();
183
-
184
- /**
185
- * Recognizes abort signals that should pause but not mark uploads as failed.
186
- *
187
- * @private function of BookEditorMonaco
188
- */
189
- const isAbortError = (error: unknown) => {
190
- if (!error) {
191
- return false;
192
- }
193
-
194
- if (typeof error === 'object' && 'name' in error) {
195
- return (error as { name?: string }).name === 'AbortError';
196
- }
197
-
198
- const message = error instanceof Error ? error.message : String(error);
199
- return message.toLowerCase().includes('abort');
200
- };
201
-
202
- /**
203
- * Updates one upload item while leaving every other item untouched.
204
- *
205
- * @private function of BookEditorMonaco
206
- */
207
- function replaceUploadItemById(
208
- uploadItems: ReadonlyArray<UploadItem>,
209
- uploadId: string,
210
- updateUploadItem: (uploadItem: UploadItem) => UploadItem,
211
- ): Array<UploadItem> {
212
- return uploadItems.map((uploadItem) => (uploadItem.id === uploadId ? updateUploadItem(uploadItem) : uploadItem));
213
- }
214
-
215
- /**
216
- * Applies debounced progress updates gathered between renders.
217
- *
218
- * @private function of BookEditorMonaco
219
- */
220
- function applyProgressUpdates(
221
- uploadItems: ReadonlyArray<UploadItem>,
222
- progressUpdates: ReadonlyMap<string, UploadProgressUpdate>,
223
- ): Array<UploadItem> {
224
- return uploadItems.map((uploadItem) => {
225
- const progressUpdate = progressUpdates.get(uploadItem.id);
226
- if (!progressUpdate) {
227
- return uploadItem;
228
- }
229
-
230
- return {
231
- ...uploadItem,
232
- progress: progressUpdate.progress,
233
- loadedBytes: progressUpdate.loadedBytes,
234
- totalBytes: progressUpdate.totalBytes,
235
- };
236
- });
237
- }
238
-
239
- /**
240
- * Creates placeholder entries for files that are about to be uploaded.
241
- *
242
- * @private function of BookEditorMonaco
243
- */
244
- function createUploadPlaceholderEntries(files: ReadonlyArray<File>): Array<UploadPlaceholderEntry> {
245
- return files.map((file) => ({
246
- id: createUploadId(),
247
- file,
248
- placeholder: BookEditorMonacoFormatting.getUploadPlaceholderText(file.name),
249
- }));
250
- }
251
-
252
- /**
253
- * Resolves the Monaco insertion point for new upload placeholders.
254
- *
255
- * @private function of BookEditorMonaco
256
- */
257
- function createUploadPlaceholderInsertPlan(
258
- model: editor.ITextModel,
259
- monaco: MonacoEditor,
260
- placeholders: ReadonlyArray<UploadPlaceholderEntry>,
261
- ): UploadPlaceholderInsertPlan {
262
- const currentValue = model.getValue() as string_book;
263
- const bookEditable = new BookEditable(currentValue);
264
- const closedLineIndex = bookEditable.findLastCommitmentLineIndex('CLOSED');
265
- const isInsertingBeforeClosed = closedLineIndex !== null;
266
- const insertLine = isInsertingBeforeClosed ? closedLineIndex + 1 : model.getLineCount();
267
- const insertColumn = isInsertingBeforeClosed ? 1 : model.getLineMaxColumn(insertLine);
268
- const shouldAddLeadingLineBreak = !isInsertingBeforeClosed && Boolean(currentValue);
269
- const prefix = shouldAddLeadingLineBreak ? '\n' : '';
270
- const placeholderBlock = placeholders.map(({ placeholder }) => `${placeholder}\n`).join('');
271
- const textToInsert = `${prefix}${placeholderBlock}`;
272
- const insertStartOffset = model.getOffsetAt(new monaco.Position(insertLine, insertColumn));
273
-
274
- return {
275
- insertLine,
276
- insertColumn,
277
- insertStartOffset,
278
- prefixLength: prefix.length,
279
- textToInsert,
280
- };
281
- }
282
-
283
- /**
284
- * Creates Monaco decorations tracking the placeholder ranges for later replacement.
285
- *
286
- * @private function of BookEditorMonaco
287
- */
288
- function createUploadPlaceholderDecorations(
289
- model: editor.ITextModel,
290
- monaco: MonacoEditor,
291
- placeholders: ReadonlyArray<UploadPlaceholderEntry>,
292
- insertStartOffset: number,
293
- prefixLength: number,
294
- ): Array<editor.IModelDeltaDecoration> {
295
- let runningOffset = prefixLength;
296
-
297
- return placeholders.map((placeholder) => {
298
- const startOffset = insertStartOffset + runningOffset;
299
- const endOffset = startOffset + placeholder.placeholder.length;
300
- const startPosition = model.getPositionAt(startOffset);
301
- const endPosition = model.getPositionAt(endOffset);
302
-
303
- runningOffset += placeholder.placeholder.length + 1;
304
-
305
- return {
306
- range: new monaco.Range(
307
- startPosition.lineNumber,
308
- startPosition.column,
309
- endPosition.lineNumber,
310
- endPosition.column,
311
- ),
312
- options: {
313
- stickiness: monaco.editor.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,
314
- },
315
- };
316
- });
317
- }
318
-
319
- /**
320
- * Creates queued upload items matching newly inserted placeholders.
321
- *
322
- * @private function of BookEditorMonaco
323
- */
324
- function createQueuedUploadItems(placeholders: ReadonlyArray<UploadPlaceholderEntry>): Array<UploadItem> {
325
- return placeholders.map(({ id, file }) => ({
326
- id,
327
- fileName: file.name,
328
- fileSize: file.size,
329
- status: 'queued',
330
- progress: 0,
331
- loadedBytes: 0,
332
- totalBytes: file.size,
333
- startedAt: null,
334
- completedAt: null,
335
- }));
336
- }
337
-
338
- /**
339
- * Normalizes progress payloads so uploads can work with callbacks that omit byte stats.
340
- *
341
- * @private function of BookEditorMonaco
342
- */
343
- function createUploadProgressUpdate(
344
- fileSize: number,
345
- progress: number,
346
- stats?: {
347
- loadedBytes: number;
348
- totalBytes: number;
349
- },
350
- ): UploadProgressUpdate {
351
- const loadedBytes = stats?.loadedBytes ?? Math.round(Math.min(1, progress) * (fileSize || 0));
352
- const totalBytes = stats?.totalBytes ?? (fileSize || loadedBytes);
353
-
354
- return {
355
- progress,
356
- loadedBytes,
357
- totalBytes,
358
- };
359
- }
360
-
361
- /**
362
- * Type describing the callback used to enqueue debounced progress updates.
363
- */
364
- type QueueProgressUpdate = (uploadId: string, progress: number, loadedBytes: number, totalBytes: number) => void;
365
-
366
- /**
367
- * Creates the callback-shaped upload options object expected by legacy callers.
368
- *
369
- * @private function of BookEditorMonaco
370
- */
371
- function createUploadRequestOptions(
372
- file: File,
373
- uploadId: string,
374
- abortSignal: AbortSignal,
375
- queueProgressUpdate: QueueProgressUpdate,
376
- ): UploadRequestOptions {
377
- const uploadRequestOptions = ((progress, stats) => {
378
- const progressUpdate = createUploadProgressUpdate(file.size, progress, stats);
379
- queueProgressUpdate(uploadId, progressUpdate.progress, progressUpdate.loadedBytes, progressUpdate.totalBytes);
380
- }) as UploadRequestOptions;
381
-
382
- uploadRequestOptions.onProgress = uploadRequestOptions;
383
- uploadRequestOptions.abortSignal = abortSignal;
384
-
385
- return uploadRequestOptions;
386
- }
387
-
388
- /**
389
- * Extracts the user-facing error message for a failed upload.
390
- *
391
- * @private function of BookEditorMonaco
392
- */
393
- function getUploadErrorMessage(error: unknown): string {
394
- return error instanceof Error ? error.message : 'Upload failed';
395
- }
396
-
397
- /**
398
- * Checks whether an upload item is currently eligible to start.
399
- *
400
- * @private function of BookEditorMonaco
401
- */
402
- function isUploadStartable(uploadItem: UploadItem | undefined): uploadItem is UploadItem {
403
- return Boolean(uploadItem && uploadItem.status !== 'uploading' && uploadItem.status !== 'completed');
404
- }
405
-
406
- /**
407
- * Selects queued uploads that can start immediately based on remaining capacity.
408
- *
409
- * @private function of BookEditorMonaco
410
- */
411
- function getQueuedUploadIds(uploadItems: ReadonlyArray<UploadItem>, availableSlots: number): Array<string> {
412
- if (availableSlots <= 0) {
413
- return [];
414
- }
415
-
416
- return uploadItems
417
- .filter((uploadItem) => uploadItem.status === 'queued')
418
- .slice(0, availableSlots)
419
- .map(({ id }) => id);
420
- }
421
-
422
- /**
423
- * Clears an optional scheduled timer when it exists.
424
- *
425
- * @private function of BookEditorMonaco
426
- */
427
- function clearScheduledTimer(timerId: number | null): void {
428
- if (timerId !== null) {
429
- clearTimeout(timerId);
430
- }
431
- }
432
-
433
- /**
434
- * Aggregates upload status, throughput and elapsed time for the upload panel.
435
- *
436
- * @private function of BookEditorMonaco
437
- */
438
- function createUploadStats(uploadItems: ReadonlyArray<UploadItem>): UploadStats {
439
- let queuedFiles = 0;
440
- let uploadingFiles = 0;
441
- let pausedFiles = 0;
442
- let failedFiles = 0;
443
- let completedFiles = 0;
444
- let totalBytes = 0;
445
- let uploadedBytes = 0;
446
- let startedAt = Number.POSITIVE_INFINITY;
447
-
448
- for (const uploadItem of uploadItems) {
449
- switch (uploadItem.status) {
450
- case 'queued':
451
- queuedFiles += 1;
452
- break;
453
- case 'uploading':
454
- uploadingFiles += 1;
455
- break;
456
- case 'paused':
457
- pausedFiles += 1;
458
- break;
459
- case 'failed':
460
- failedFiles += 1;
461
- break;
462
- case 'completed':
463
- completedFiles += 1;
464
- break;
465
- }
466
-
467
- totalBytes += uploadItem.totalBytes;
468
-
469
- const normalizedTotalBytes = uploadItem.totalBytes || 0;
470
- const normalizedLoadedBytes =
471
- normalizedTotalBytes > 0 ? Math.min(uploadItem.loadedBytes, normalizedTotalBytes) : uploadItem.loadedBytes;
472
- uploadedBytes += normalizedLoadedBytes;
473
-
474
- if (uploadItem.startedAt) {
475
- startedAt = Math.min(startedAt, uploadItem.startedAt);
476
- }
477
- }
478
-
479
- const totalFiles = uploadItems.length;
480
- const progress = totalBytes > 0 ? uploadedBytes / totalBytes : 0;
481
- const elapsedMs = Number.isFinite(startedAt) ? Math.max(0, Date.now() - startedAt) : 0;
482
- const speedBytesPerSecond = elapsedMs > 0 ? uploadedBytes / (elapsedMs / 1000) : 0;
483
-
484
- return {
485
- totalFiles,
486
- queuedFiles,
487
- uploadingFiles,
488
- pausedFiles,
489
- failedFiles,
490
- completedFiles,
491
- totalBytes,
492
- uploadedBytes,
493
- progress,
494
- elapsedMs,
495
- speedBytesPerSecond,
496
- };
497
- }
498
-
499
- /**
500
- * Internal upload item state shared by Monaco upload helpers.
501
- *
502
- * @private function of BookEditorMonaco
503
- */
504
- function useBookEditorMonacoUploadItemsState() {
505
- const [uploadItems, setUploadItemsState] = useState<UploadItem[]>([]);
506
- const uploadItemsRef = useRef<UploadItem[]>([]);
507
-
508
- const setUploadItems = useCallback<SetUploadItems>((updater) => {
509
- const next = updater(uploadItemsRef.current);
510
- uploadItemsRef.current = next;
511
- setUploadItemsState(next);
512
- }, []);
513
-
514
- const updateUploadItem = useCallback<UpdateUploadItem>(
515
- (uploadId, createNextUploadItem) => {
516
- setUploadItems((currentUploadItems) =>
517
- replaceUploadItemById(currentUploadItems, uploadId, createNextUploadItem),
518
- );
519
- },
520
- [setUploadItems],
521
- );
522
-
523
- const uploadStats = useMemo<UploadStats>(() => createUploadStats(uploadItems), [uploadItems]);
524
- const activeUploadItems = useMemo(
525
- () => uploadItems.filter((uploadItem) => uploadItem.status !== 'completed'),
526
- [uploadItems],
527
- );
528
-
529
- return {
530
- uploadItems,
531
- uploadItemsRef,
532
- setUploadItems,
533
- updateUploadItem,
534
- uploadStats,
535
- activeUploadItems,
536
- };
537
- }
538
-
539
- /**
540
- * Debounces upload progress updates before they hit React state.
541
- *
542
- * @private function of BookEditorMonaco
543
- */
544
- function useBookEditorMonacoUploadProgressQueue({ setUploadItems }: { readonly setUploadItems: SetUploadItems }) {
545
- const progressUpdateTimerRef = useRef<number | null>(null);
546
- const pendingProgressUpdatesRef = useRef<Map<string, UploadProgressUpdate>>(new Map());
547
-
548
- const flushProgressUpdates = useCallback(() => {
549
- progressUpdateTimerRef.current = null;
550
-
551
- const progressUpdates = pendingProgressUpdatesRef.current;
552
- pendingProgressUpdatesRef.current = new Map();
553
-
554
- setUploadItems((currentUploadItems) => applyProgressUpdates(currentUploadItems, progressUpdates));
555
- }, [setUploadItems]);
556
-
557
- const queueProgressUpdate = useCallback(
558
- (uploadId: string, progress: number, loadedBytes: number, totalBytes: number) => {
559
- pendingProgressUpdatesRef.current.set(uploadId, {
560
- progress,
561
- loadedBytes,
562
- totalBytes,
563
- });
564
-
565
- if (progressUpdateTimerRef.current !== null) {
566
- return;
567
- }
568
-
569
- progressUpdateTimerRef.current = window.setTimeout(() => {
570
- flushProgressUpdates();
571
- }, BookEditorMonacoConstants.UPLOAD_PROGRESS_DEBOUNCE_MS);
572
- },
573
- [flushProgressUpdates],
574
- );
575
-
576
- const clearProgressQueue = useCallback(() => {
577
- clearScheduledTimer(progressUpdateTimerRef.current);
578
- progressUpdateTimerRef.current = null;
579
- pendingProgressUpdatesRef.current = new Map();
580
- }, []);
581
-
582
- return {
583
- queueProgressUpdate,
584
- clearProgressQueue,
585
- };
586
- }
587
-
588
- /**
589
- * Props for Monaco placeholder and replacement synchronization.
590
- */
591
- type UseBookEditorMonacoUploadEditorSyncProps = {
592
- readonly editor: editor.IStandaloneCodeEditor | null;
593
- readonly uploadFilesRef: UploadFilesRef;
594
- readonly uploadDecorationIdsRef: UploadDecorationIdsRef;
595
- };
596
-
597
- /**
598
- * Manages Monaco placeholder insertion and later replacement with uploaded URLs.
599
- *
600
- * @private function of BookEditorMonaco
601
- */
602
- function useBookEditorMonacoUploadEditorSync({
603
- editor,
604
- uploadFilesRef,
605
- uploadDecorationIdsRef,
606
- }: UseBookEditorMonacoUploadEditorSyncProps) {
607
- const editorUpdateTimerRef = useRef<number | null>(null);
608
- const pendingReplacementsRef = useRef<UploadReplacement[]>([]);
609
-
610
- const flushEditorReplacements = useCallback(() => {
611
- if (!editor) {
612
- return;
613
- }
614
-
615
- const model = editor.getModel();
616
- if (!model) {
617
- return;
618
- }
619
-
620
- const replacements = pendingReplacementsRef.current;
621
- pendingReplacementsRef.current = [];
622
-
623
- const edits: editor.IIdentifiedSingleEditOperation[] = [];
624
- const decorationsToRemove: string[] = [];
625
-
626
- for (const replacement of replacements) {
627
- const range = model.getDecorationRange(replacement.decorationId);
628
- if (!range) {
629
- uploadDecorationIdsRef.current.delete(replacement.uploadId);
630
- continue;
631
- }
632
-
633
- edits.push({
634
- range,
635
- text: replacement.replacementText,
636
- forceMoveMarkers: true,
637
- });
638
- decorationsToRemove.push(replacement.decorationId);
639
- uploadDecorationIdsRef.current.delete(replacement.uploadId);
640
- }
641
-
642
- if (edits.length > 0) {
643
- editor.executeEdits('upload-replacements', edits);
644
- }
645
-
646
- if (decorationsToRemove.length > 0) {
647
- editor.deltaDecorations(decorationsToRemove, []);
648
- }
649
- }, [editor]);
650
-
651
- const registerUploadPlaceholderResources = useCallback(
652
- (placeholders: ReadonlyArray<UploadPlaceholderEntry>, decorationIds: ReadonlyArray<string>) => {
653
- placeholders.forEach((placeholder, index) => {
654
- uploadFilesRef.current.set(placeholder.id, placeholder.file);
655
-
656
- const decorationId = decorationIds[index];
657
- if (decorationId) {
658
- uploadDecorationIdsRef.current.set(placeholder.id, decorationId);
659
- }
660
- });
661
- },
662
- [],
663
- );
664
-
665
- const queueEditorReplacement = useCallback(
666
- (uploadId: string, replacementText: string) => {
667
- const hasQueuedReplacement = queueEditorReplacementItem(
668
- uploadId,
669
- replacementText,
670
- uploadDecorationIdsRef,
671
- pendingReplacementsRef,
672
- );
673
- if (!hasQueuedReplacement) {
674
- return;
675
- }
676
-
677
- if (editorUpdateTimerRef.current !== null) {
678
- return;
679
- }
680
-
681
- editorUpdateTimerRef.current = window.setTimeout(() => {
682
- editorUpdateTimerRef.current = null;
683
- flushEditorReplacements();
684
- }, BookEditorMonacoConstants.UPLOAD_EDIT_DEBOUNCE_MS);
685
- },
686
- [flushEditorReplacements, uploadDecorationIdsRef],
687
- );
688
-
689
- const clearEditorSync = useCallback(() => {
690
- clearScheduledTimer(editorUpdateTimerRef.current);
691
- editorUpdateTimerRef.current = null;
692
- pendingReplacementsRef.current = [];
693
- }, []);
694
-
695
- return {
696
- registerUploadPlaceholderResources,
697
- queueEditorReplacement,
698
- clearEditorSync,
699
- };
700
- }
701
-
702
- /**
703
- * Enqueues replacement text for one upload placeholder.
704
- *
705
- * @private function of BookEditorMonaco
706
- */
707
- function queueEditorReplacementItem(
708
- uploadId: string,
709
- replacementText: string,
710
- uploadDecorationIdsRef: UploadDecorationIdsRef,
711
- pendingReplacementsRef: MutableRefObject<UploadReplacement[]>,
712
- ): boolean {
713
- const decorationId = uploadDecorationIdsRef.current.get(uploadId);
714
- if (!decorationId) {
715
- return false;
716
- }
717
-
718
- const pendingIndex = pendingReplacementsRef.current.findIndex((item) => item.uploadId === uploadId);
719
- const nextReplacement: UploadReplacement = {
720
- uploadId,
721
- decorationId,
722
- replacementText,
723
- };
724
-
725
- if (pendingIndex >= 0) {
726
- pendingReplacementsRef.current[pendingIndex] = nextReplacement;
727
- } else {
728
- pendingReplacementsRef.current.push(nextReplacement);
729
- }
730
-
731
- return true;
732
- }
733
-
734
- /**
735
- * Props for Monaco placeholder insertion.
736
- */
737
- type EnqueueFilesForUploadProps = {
738
- readonly editor: editor.IStandaloneCodeEditor | null;
739
- readonly monaco: MonacoEditor | null;
740
- readonly registerUploadPlaceholderResources: (
741
- placeholders: ReadonlyArray<UploadPlaceholderEntry>,
742
- decorationIds: ReadonlyArray<string>,
743
- ) => void;
744
- readonly setUploadItems: SetUploadItems;
745
- };
746
-
747
- /**
748
- * Inserts Monaco placeholders and queues matching upload items.
749
- *
750
- * @private function of BookEditorMonaco
751
- */
752
- function enqueueFilesForUpload({
753
- editor,
754
- monaco,
755
- registerUploadPlaceholderResources,
756
- setUploadItems,
757
- }: EnqueueFilesForUploadProps): (files: ReadonlyArray<File>) => boolean {
758
- return (files) => {
759
- if (!editor || !monaco) {
760
- return false;
761
- }
762
-
763
- const model = editor.getModel();
764
- if (!model) {
765
- return false;
766
- }
767
-
768
- const placeholders = createUploadPlaceholderEntries(files);
769
- const insertPlan = createUploadPlaceholderInsertPlan(model, monaco, placeholders);
770
-
771
- editor.executeEdits('upload-placeholders', [
772
- {
773
- range: new monaco.Range(
774
- insertPlan.insertLine,
775
- insertPlan.insertColumn,
776
- insertPlan.insertLine,
777
- insertPlan.insertColumn,
778
- ),
779
- text: insertPlan.textToInsert,
780
- forceMoveMarkers: true,
781
- },
782
- ]);
783
-
784
- const placeholderDecorations = createUploadPlaceholderDecorations(
785
- model,
786
- monaco,
787
- placeholders,
788
- insertPlan.insertStartOffset,
789
- insertPlan.prefixLength,
790
- );
791
- const decorationIds = editor.deltaDecorations([], placeholderDecorations);
792
-
793
- registerUploadPlaceholderResources(placeholders, decorationIds);
794
- setUploadItems((currentUploadItems) => [...currentUploadItems, ...createQueuedUploadItems(placeholders)]);
795
-
796
- return true;
797
- };
798
- }
799
-
800
- /**
801
- * Props for upload queue processing and pause/resume handling.
802
- */
803
- type UseBookEditorMonacoUploadQueueProps = {
804
- readonly onFileUpload?: BookEditorMonacoOnFileUpload;
805
- readonly uploadItemsRef: UploadItemsRef;
806
- readonly uploadFilesRef: UploadFilesRef;
807
- readonly queueProgressUpdate: QueueProgressUpdate;
808
- readonly queueEditorReplacement: (uploadId: string, replacementText: string) => void;
809
- readonly setUploadItems: SetUploadItems;
810
- readonly updateUploadItem: UpdateUploadItem;
811
- };
812
-
813
- /**
814
- * Manages upload concurrency, retries, pausing and completion side effects.
815
- *
816
- * @private function of BookEditorMonaco
817
- */
818
- function useBookEditorMonacoUploadQueue({
819
- onFileUpload,
820
- uploadItemsRef,
821
- uploadFilesRef,
822
- queueProgressUpdate,
823
- queueEditorReplacement,
824
- setUploadItems,
825
- updateUploadItem,
826
- }: UseBookEditorMonacoUploadQueueProps) {
827
- const uploadControllersRef = useRef<Map<string, AbortController>>(new Map());
828
- const uploadQueueTimerRef = useRef<number | null>(null);
829
- const processUploadQueueRef = useRef<() => void>(() => undefined);
830
-
831
- const queueUploadProcessing = useCallback(() => {
832
- if (uploadQueueTimerRef.current !== null) {
833
- return;
834
- }
835
-
836
- uploadQueueTimerRef.current = window.setTimeout(() => {
837
- uploadQueueTimerRef.current = null;
838
- processUploadQueueRef.current();
839
- }, 0);
840
- }, []);
841
-
842
- const markUploadAsUploading = useCallback(
843
- (uploadId: string) => {
844
- updateUploadItem(uploadId, (uploadItem) => ({
845
- ...uploadItem,
846
- status: 'uploading',
847
- startedAt: uploadItem.startedAt ?? Date.now(),
848
- errorMessage: undefined,
849
- }));
850
- },
851
- [updateUploadItem],
852
- );
853
-
854
- const markUploadAsPaused = useCallback(
855
- (uploadId: string) => {
856
- updateUploadItem(uploadId, (uploadItem) => ({
857
- ...uploadItem,
858
- status: 'paused',
859
- errorMessage: undefined,
860
- }));
861
- },
862
- [updateUploadItem],
863
- );
864
-
865
- const markUploadAsFailed = useCallback(
866
- (uploadId: string, errorMessage: string) => {
867
- updateUploadItem(uploadId, (uploadItem) => ({
868
- ...uploadItem,
869
- status: 'failed',
870
- errorMessage,
871
- }));
872
- },
873
- [updateUploadItem],
874
- );
875
-
876
- const markUploadAsCompleted = useCallback(
877
- (uploadId: string, fileSize: number) => {
878
- updateUploadItem(uploadId, (uploadItem) => ({
879
- ...uploadItem,
880
- status: 'completed',
881
- progress: 1,
882
- loadedBytes: uploadItem.totalBytes || fileSize,
883
- completedAt: Date.now(),
884
- }));
885
- },
886
- [updateUploadItem],
887
- );
888
-
889
- const resetUploadForRetry = useCallback(
890
- (uploadId: string) => {
891
- updateUploadItem(uploadId, (uploadItem) => ({
892
- ...uploadItem,
893
- status: 'queued',
894
- progress: 0,
895
- loadedBytes: 0,
896
- startedAt: null,
897
- completedAt: null,
898
- errorMessage: undefined,
899
- }));
900
- },
901
- [updateUploadItem],
902
- );
903
-
904
- const pauseQueuedUpload = useCallback(
905
- (uploadId: string) => {
906
- setUploadItems((currentUploadItems) =>
907
- replaceUploadItemById(currentUploadItems, uploadId, (uploadItem) =>
908
- uploadItem.status === 'queued'
909
- ? {
910
- ...uploadItem,
911
- status: 'paused',
912
- }
913
- : uploadItem,
914
- ),
915
- );
916
- },
917
- [setUploadItems],
918
- );
919
-
920
- const completeUpload = useCallback(
921
- (uploadId: string, file: File, url: string) => {
922
- queueProgressUpdate(uploadId, 1, file.size, file.size);
923
- queueEditorReplacement(uploadId, `KNOWLEDGE ${url}`);
924
- markUploadAsCompleted(uploadId, file.size);
925
- },
926
- [markUploadAsCompleted, queueEditorReplacement, queueProgressUpdate],
927
- );
928
-
929
- const failUpload = useCallback(
930
- (uploadId: string, file: File, error: unknown) => {
931
- console.error(`File upload failed for ${file.name}:`, error);
932
- queueEditorReplacement(uploadId, `KNOWLEDGE ❌ Failed to upload ${file.name}`);
933
- markUploadAsFailed(uploadId, getUploadErrorMessage(error));
934
- },
935
- [markUploadAsFailed, queueEditorReplacement],
936
- );
937
-
938
- const startUpload = useCallback(
939
- async (uploadId: string) => {
940
- if (!onFileUpload) {
941
- return;
942
- }
943
-
944
- const file = uploadFilesRef.current.get(uploadId);
945
- if (!file) {
946
- return;
947
- }
948
-
949
- const uploadItem = uploadItemsRef.current.find((currentUploadItem) => currentUploadItem.id === uploadId);
950
- if (!isUploadStartable(uploadItem)) {
951
- return;
952
- }
953
-
954
- const controller = new AbortController();
955
- uploadControllersRef.current.set(uploadId, controller);
956
- markUploadAsUploading(uploadId);
957
-
958
- try {
959
- const uploadRequestOptions = createUploadRequestOptions(
960
- file,
961
- uploadId,
962
- controller.signal,
963
- queueProgressUpdate,
964
- );
965
- const url = await onFileUpload(file, uploadRequestOptions);
966
-
967
- completeUpload(uploadId, file, url);
968
- } catch (error) {
969
- if (isAbortError(error)) {
970
- markUploadAsPaused(uploadId);
971
- } else {
972
- failUpload(uploadId, file, error);
973
- }
974
- } finally {
975
- uploadControllersRef.current.delete(uploadId);
976
- queueUploadProcessing();
977
- }
978
- },
979
- [
980
- completeUpload,
981
- failUpload,
982
- markUploadAsPaused,
983
- markUploadAsUploading,
984
- onFileUpload,
985
- queueProgressUpdate,
986
- queueUploadProcessing,
987
- uploadFilesRef,
988
- uploadItemsRef,
989
- ],
990
- );
991
-
992
- const processUploadQueue = useCallback(() => {
993
- if (!onFileUpload) {
994
- return;
995
- }
996
-
997
- const currentUploadItems = uploadItemsRef.current;
998
- const activeUploadCount = currentUploadItems.filter((uploadItem) => uploadItem.status === 'uploading').length;
999
- const availableSlots = Math.max(0, DEFAULT_MAX_CONCURRENT_UPLOADS - activeUploadCount);
1000
- const queuedUploadIds = getQueuedUploadIds(currentUploadItems, availableSlots);
1001
-
1002
- queuedUploadIds.forEach((queuedUploadId) => {
1003
- void startUpload(queuedUploadId);
1004
- });
1005
- }, [onFileUpload, startUpload, uploadItemsRef]);
1006
-
1007
- processUploadQueueRef.current = processUploadQueue;
1008
-
1009
- const pauseUpload = useCallback(
1010
- (uploadId: string) => {
1011
- pauseQueuedUpload(uploadId);
1012
- uploadControllersRef.current.get(uploadId)?.abort();
1013
- },
1014
- [pauseQueuedUpload],
1015
- );
1016
-
1017
- const resumeUpload = useCallback(
1018
- (uploadId: string) => {
1019
- resetUploadForRetry(uploadId);
1020
- queueUploadProcessing();
1021
- },
1022
- [queueUploadProcessing, resetUploadForRetry],
1023
- );
1024
-
1025
- const clearUploadQueue = useCallback(() => {
1026
- clearScheduledTimer(uploadQueueTimerRef.current);
1027
- uploadQueueTimerRef.current = null;
1028
-
1029
- for (const controller of uploadControllersRef.current.values()) {
1030
- controller.abort();
1031
- }
1032
-
1033
- uploadControllersRef.current.clear();
1034
- }, []);
1035
-
1036
- useEffect(() => clearUploadQueue, [clearUploadQueue]);
1037
-
1038
- return {
1039
- pauseUpload,
1040
- resumeUpload,
1041
- queueUploadProcessing,
1042
- clearUploadQueue,
1043
- };
1044
- }
1045
-
1046
- /**
1047
- * Clears upload UI state shortly after all uploads finish.
1048
- *
1049
- * @private function of BookEditorMonaco
1050
- */
1051
- function useCompletedUploadsAutoClear({
1052
- uploadItems,
1053
- uploadFilesRef,
1054
- uploadDecorationIdsRef,
1055
- setUploadItems,
1056
- }: {
1057
- readonly uploadItems: ReadonlyArray<UploadItem>;
1058
- readonly uploadFilesRef: UploadFilesRef;
1059
- readonly uploadDecorationIdsRef: UploadDecorationIdsRef;
1060
- readonly setUploadItems: SetUploadItems;
1061
- }) {
1062
- useEffect(() => {
1063
- if (uploadItems.length === 0) {
1064
- return;
1065
- }
1066
-
1067
- const hasActiveUploads = uploadItems.some((item) => item.status !== 'completed');
1068
- if (hasActiveUploads) {
1069
- return;
1070
- }
1071
-
1072
- const timer = window.setTimeout(() => {
1073
- uploadFilesRef.current.clear();
1074
- uploadDecorationIdsRef.current.clear();
1075
- setUploadItems(() => []);
1076
- }, COMPLETED_UPLOADS_CLEAR_DELAY_MS);
1077
-
1078
- return () => {
1079
- clearTimeout(timer);
1080
- };
1081
- }, [setUploadItems, uploadDecorationIdsRef, uploadFilesRef, uploadItems]);
1082
- }
1083
-
1084
27
  /**
1085
28
  * Handles file uploads and placeholder rendering inside `BookEditorMonaco`.
1086
29
  *