libre-webui 0.21.3 → 0.22.1
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.
- package/README.md +308 -328
- package/backend/dist/cli/migrateSqliteToPostgres.d.ts +2 -0
- package/backend/dist/cli/migrateSqliteToPostgres.d.ts.map +1 -0
- package/backend/dist/cli/migrateSqliteToPostgres.js +113 -0
- package/backend/dist/cli/migrateSqliteToPostgres.js.map +1 -0
- package/backend/dist/cli/recoveryBackup.d.ts +3 -0
- package/backend/dist/cli/recoveryBackup.d.ts.map +1 -0
- package/backend/dist/cli/recoveryBackup.js +251 -0
- package/backend/dist/cli/recoveryBackup.js.map +1 -0
- package/backend/dist/cli/recoveryInventory.d.ts +2 -0
- package/backend/dist/cli/recoveryInventory.d.ts.map +1 -0
- package/backend/dist/cli/recoveryInventory.js +109 -0
- package/backend/dist/cli/recoveryInventory.js.map +1 -0
- package/backend/dist/db.d.ts +27 -0
- package/backend/dist/db.d.ts.map +1 -1
- package/backend/dist/db.js +333 -16
- package/backend/dist/db.js.map +1 -1
- package/backend/dist/env.d.ts.map +1 -1
- package/backend/dist/env.js +12 -2
- package/backend/dist/env.js.map +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +235 -47
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/main.d.ts +2 -0
- package/backend/dist/main.d.ts.map +1 -0
- package/backend/dist/main.js +137 -0
- package/backend/dist/main.js.map +1 -0
- package/backend/dist/middleware/auth.d.ts.map +1 -1
- package/backend/dist/middleware/auth.js +7 -3
- package/backend/dist/middleware/auth.js.map +1 -1
- package/backend/dist/middleware/chatCancellationAdmission.d.ts +7 -0
- package/backend/dist/middleware/chatCancellationAdmission.d.ts.map +1 -0
- package/backend/dist/middleware/chatCancellationAdmission.js +17 -0
- package/backend/dist/middleware/chatCancellationAdmission.js.map +1 -0
- package/backend/dist/middleware/coordinatedRateLimit.d.ts +18 -0
- package/backend/dist/middleware/coordinatedRateLimit.d.ts.map +1 -0
- package/backend/dist/middleware/coordinatedRateLimit.js +52 -0
- package/backend/dist/middleware/coordinatedRateLimit.js.map +1 -0
- package/backend/dist/middleware/sharedRateLimit.d.ts +26 -0
- package/backend/dist/middleware/sharedRateLimit.d.ts.map +1 -0
- package/backend/dist/middleware/sharedRateLimit.js +99 -0
- package/backend/dist/middleware/sharedRateLimit.js.map +1 -0
- package/backend/dist/models/personaModel.d.ts +1 -26
- package/backend/dist/models/personaModel.d.ts.map +1 -1
- package/backend/dist/models/personaModel.js +54 -247
- package/backend/dist/models/personaModel.js.map +1 -1
- package/backend/dist/models/userModel.d.ts +23 -66
- package/backend/dist/models/userModel.d.ts.map +1 -1
- package/backend/dist/models/userModel.js +110 -187
- package/backend/dist/models/userModel.js.map +1 -1
- package/backend/dist/persistence/chatGenerationTypes.d.ts +24 -0
- package/backend/dist/persistence/chatGenerationTypes.d.ts.map +1 -0
- package/backend/dist/persistence/chatGenerationTypes.js +7 -0
- package/backend/dist/persistence/chatGenerationTypes.js.map +1 -0
- package/backend/dist/persistence/extensionTypes.d.ts +185 -0
- package/backend/dist/persistence/extensionTypes.d.ts.map +1 -0
- package/backend/dist/persistence/extensionTypes.js +13 -0
- package/backend/dist/persistence/extensionTypes.js.map +1 -0
- package/backend/dist/persistence/identityDeletionTypes.d.ts +16 -0
- package/backend/dist/persistence/identityDeletionTypes.d.ts.map +1 -0
- package/backend/dist/persistence/identityDeletionTypes.js +7 -0
- package/backend/dist/persistence/identityDeletionTypes.js.map +1 -0
- package/backend/dist/persistence/index.d.ts +48 -0
- package/backend/dist/persistence/index.d.ts.map +1 -0
- package/backend/dist/persistence/index.js +159 -0
- package/backend/dist/persistence/index.js.map +1 -0
- package/backend/dist/persistence/postgresConfig.d.ts +32 -0
- package/backend/dist/persistence/postgresConfig.d.ts.map +1 -0
- package/backend/dist/persistence/postgresConfig.js +91 -0
- package/backend/dist/persistence/postgresConfig.js.map +1 -0
- package/backend/dist/persistence/postgresCoreMigration.d.ts +8 -0
- package/backend/dist/persistence/postgresCoreMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresCoreMigration.js +179 -0
- package/backend/dist/persistence/postgresCoreMigration.js.map +1 -0
- package/backend/dist/persistence/postgresDatabase.d.ts +40 -0
- package/backend/dist/persistence/postgresDatabase.d.ts.map +1 -0
- package/backend/dist/persistence/postgresDatabase.js +148 -0
- package/backend/dist/persistence/postgresDatabase.js.map +1 -0
- package/backend/dist/persistence/postgresExtensionMigration.d.ts +4 -0
- package/backend/dist/persistence/postgresExtensionMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresExtensionMigration.js +143 -0
- package/backend/dist/persistence/postgresExtensionMigration.js.map +1 -0
- package/backend/dist/persistence/postgresExtensionRepositories.d.ts +6 -0
- package/backend/dist/persistence/postgresExtensionRepositories.d.ts.map +1 -0
- package/backend/dist/persistence/postgresExtensionRepositories.js +550 -0
- package/backend/dist/persistence/postgresExtensionRepositories.js.map +1 -0
- package/backend/dist/persistence/postgresImportState.d.ts +9 -0
- package/backend/dist/persistence/postgresImportState.d.ts.map +1 -0
- package/backend/dist/persistence/postgresImportState.js +64 -0
- package/backend/dist/persistence/postgresImportState.js.map +1 -0
- package/backend/dist/persistence/postgresMigrationRegistry.d.ts +4 -0
- package/backend/dist/persistence/postgresMigrationRegistry.d.ts.map +1 -0
- package/backend/dist/persistence/postgresMigrationRegistry.js +33 -0
- package/backend/dist/persistence/postgresMigrationRegistry.js.map +1 -0
- package/backend/dist/persistence/postgresMigrationTypes.d.ts +24 -0
- package/backend/dist/persistence/postgresMigrationTypes.d.ts.map +1 -0
- package/backend/dist/persistence/postgresMigrationTypes.js +7 -0
- package/backend/dist/persistence/postgresMigrationTypes.js.map +1 -0
- package/backend/dist/persistence/postgresMigrations.d.ts +15 -0
- package/backend/dist/persistence/postgresMigrations.d.ts.map +1 -0
- package/backend/dist/persistence/postgresMigrations.js +333 -0
- package/backend/dist/persistence/postgresMigrations.js.map +1 -0
- package/backend/dist/persistence/postgresPersistence.d.ts +17 -0
- package/backend/dist/persistence/postgresPersistence.d.ts.map +1 -0
- package/backend/dist/persistence/postgresPersistence.js +332 -0
- package/backend/dist/persistence/postgresPersistence.js.map +1 -0
- package/backend/dist/persistence/postgresPluginDefinitionMigration.d.ts +4 -0
- package/backend/dist/persistence/postgresPluginDefinitionMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresPluginDefinitionMigration.js +40 -0
- package/backend/dist/persistence/postgresPluginDefinitionMigration.js.map +1 -0
- package/backend/dist/persistence/postgresResourceRepositories.d.ts +7 -0
- package/backend/dist/persistence/postgresResourceRepositories.d.ts.map +1 -0
- package/backend/dist/persistence/postgresResourceRepositories.js +776 -0
- package/backend/dist/persistence/postgresResourceRepositories.js.map +1 -0
- package/backend/dist/persistence/postgresSchemaInspector.d.ts +14 -0
- package/backend/dist/persistence/postgresSchemaInspector.d.ts.map +1 -0
- package/backend/dist/persistence/postgresSchemaInspector.js +817 -0
- package/backend/dist/persistence/postgresSchemaInspector.js.map +1 -0
- package/backend/dist/persistence/resourceTypes.d.ts +207 -0
- package/backend/dist/persistence/resourceTypes.d.ts.map +1 -0
- package/backend/dist/persistence/resourceTypes.js +38 -0
- package/backend/dist/persistence/resourceTypes.js.map +1 -0
- package/backend/dist/persistence/sqliteExtensionRepositories.d.ts +4 -0
- package/backend/dist/persistence/sqliteExtensionRepositories.d.ts.map +1 -0
- package/backend/dist/persistence/sqliteExtensionRepositories.js +494 -0
- package/backend/dist/persistence/sqliteExtensionRepositories.js.map +1 -0
- package/backend/dist/persistence/sqliteMigrations.d.ts +93 -0
- package/backend/dist/persistence/sqliteMigrations.d.ts.map +1 -0
- package/backend/dist/persistence/sqliteMigrations.js +2232 -0
- package/backend/dist/persistence/sqliteMigrations.js.map +1 -0
- package/backend/dist/persistence/sqlitePersistence.d.ts +23 -0
- package/backend/dist/persistence/sqlitePersistence.d.ts.map +1 -0
- package/backend/dist/persistence/sqlitePersistence.js +596 -0
- package/backend/dist/persistence/sqlitePersistence.js.map +1 -0
- package/backend/dist/persistence/sqliteResourceRepositories.d.ts +4 -0
- package/backend/dist/persistence/sqliteResourceRepositories.d.ts.map +1 -0
- package/backend/dist/persistence/sqliteResourceRepositories.js +663 -0
- package/backend/dist/persistence/sqliteResourceRepositories.js.map +1 -0
- package/backend/dist/persistence/sqliteSyncExecutor.d.ts +5 -0
- package/backend/dist/persistence/sqliteSyncExecutor.d.ts.map +1 -0
- package/backend/dist/persistence/sqliteSyncExecutor.js +19 -0
- package/backend/dist/persistence/sqliteSyncExecutor.js.map +1 -0
- package/backend/dist/persistence/sqliteToPostgresMigration.d.ts +80 -0
- package/backend/dist/persistence/sqliteToPostgresMigration.d.ts.map +1 -0
- package/backend/dist/persistence/sqliteToPostgresMigration.js +1543 -0
- package/backend/dist/persistence/sqliteToPostgresMigration.js.map +1 -0
- package/backend/dist/persistence/types.d.ts +131 -0
- package/backend/dist/persistence/types.d.ts.map +1 -0
- package/backend/dist/persistence/types.js +18 -0
- package/backend/dist/persistence/types.js.map +1 -0
- package/backend/dist/persistence/voiceProfileNameLookup.d.ts +9 -0
- package/backend/dist/persistence/voiceProfileNameLookup.d.ts.map +1 -0
- package/backend/dist/persistence/voiceProfileNameLookup.js +15 -0
- package/backend/dist/persistence/voiceProfileNameLookup.js.map +1 -0
- package/backend/dist/platform/coordination/index.d.ts +7 -0
- package/backend/dist/platform/coordination/index.d.ts.map +1 -0
- package/backend/dist/platform/coordination/index.js +24 -0
- package/backend/dist/platform/coordination/index.js.map +1 -0
- package/backend/dist/platform/coordination/localCoordinator.d.ts +49 -0
- package/backend/dist/platform/coordination/localCoordinator.d.ts.map +1 -0
- package/backend/dist/platform/coordination/localCoordinator.js +380 -0
- package/backend/dist/platform/coordination/localCoordinator.js.map +1 -0
- package/backend/dist/platform/coordination/redisCoordinator.d.ts +83 -0
- package/backend/dist/platform/coordination/redisCoordinator.d.ts.map +1 -0
- package/backend/dist/platform/coordination/redisCoordinator.js +726 -0
- package/backend/dist/platform/coordination/redisCoordinator.js.map +1 -0
- package/backend/dist/platform/coordination/service.d.ts +11 -0
- package/backend/dist/platform/coordination/service.d.ts.map +1 -0
- package/backend/dist/platform/coordination/service.js +55 -0
- package/backend/dist/platform/coordination/service.js.map +1 -0
- package/backend/dist/platform/coordination/sharedAdmission.d.ts +53 -0
- package/backend/dist/platform/coordination/sharedAdmission.d.ts.map +1 -0
- package/backend/dist/platform/coordination/sharedAdmission.js +194 -0
- package/backend/dist/platform/coordination/sharedAdmission.js.map +1 -0
- package/backend/dist/platform/coordination/types.d.ts +76 -0
- package/backend/dist/platform/coordination/types.d.ts.map +1 -0
- package/backend/dist/platform/coordination/types.js +32 -0
- package/backend/dist/platform/coordination/types.js.map +1 -0
- package/backend/dist/platform/events/durableEventGateway.d.ts +54 -0
- package/backend/dist/platform/events/durableEventGateway.d.ts.map +1 -0
- package/backend/dist/platform/events/durableEventGateway.js +262 -0
- package/backend/dist/platform/events/durableEventGateway.js.map +1 -0
- package/backend/dist/platform/events/index.d.ts +3 -0
- package/backend/dist/platform/events/index.d.ts.map +1 -0
- package/backend/dist/platform/events/index.js +8 -0
- package/backend/dist/platform/events/index.js.map +1 -0
- package/backend/dist/platform/events/service.d.ts +8 -0
- package/backend/dist/platform/events/service.d.ts.map +1 -0
- package/backend/dist/platform/events/service.js +25 -0
- package/backend/dist/platform/events/service.js.map +1 -0
- package/backend/dist/platform/jobs/chatGenerationEnqueuer.d.ts +3 -0
- package/backend/dist/platform/jobs/chatGenerationEnqueuer.d.ts.map +1 -0
- package/backend/dist/platform/jobs/chatGenerationEnqueuer.js +55 -0
- package/backend/dist/platform/jobs/chatGenerationEnqueuer.js.map +1 -0
- package/backend/dist/platform/jobs/documentIngestionEnqueuer.d.ts +3 -0
- package/backend/dist/platform/jobs/documentIngestionEnqueuer.d.ts.map +1 -0
- package/backend/dist/platform/jobs/documentIngestionEnqueuer.js +38 -0
- package/backend/dist/platform/jobs/documentIngestionEnqueuer.js.map +1 -0
- package/backend/dist/platform/jobs/domainJobContracts.d.ts +30 -0
- package/backend/dist/platform/jobs/domainJobContracts.d.ts.map +1 -0
- package/backend/dist/platform/jobs/domainJobContracts.js +53 -0
- package/backend/dist/platform/jobs/domainJobContracts.js.map +1 -0
- package/backend/dist/platform/jobs/domainJobHandlers.d.ts +11 -0
- package/backend/dist/platform/jobs/domainJobHandlers.d.ts.map +1 -0
- package/backend/dist/platform/jobs/domainJobHandlers.js +617 -0
- package/backend/dist/platform/jobs/domainJobHandlers.js.map +1 -0
- package/backend/dist/platform/jobs/durableEventIdentity.d.ts +8 -0
- package/backend/dist/platform/jobs/durableEventIdentity.d.ts.map +1 -0
- package/backend/dist/platform/jobs/durableEventIdentity.js +33 -0
- package/backend/dist/platform/jobs/durableEventIdentity.js.map +1 -0
- package/backend/dist/platform/jobs/durableJobRuntime.d.ts +57 -0
- package/backend/dist/platform/jobs/durableJobRuntime.d.ts.map +1 -0
- package/backend/dist/platform/jobs/durableJobRuntime.js +131 -0
- package/backend/dist/platform/jobs/durableJobRuntime.js.map +1 -0
- package/backend/dist/platform/jobs/durableJobRuntimeBackend.d.ts +28 -0
- package/backend/dist/platform/jobs/durableJobRuntimeBackend.d.ts.map +1 -0
- package/backend/dist/platform/jobs/durableJobRuntimeBackend.js +62 -0
- package/backend/dist/platform/jobs/durableJobRuntimeBackend.js.map +1 -0
- package/backend/dist/platform/jobs/durableJobService.d.ts +85 -0
- package/backend/dist/platform/jobs/durableJobService.d.ts.map +1 -0
- package/backend/dist/platform/jobs/durableJobService.js +726 -0
- package/backend/dist/platform/jobs/durableJobService.js.map +1 -0
- package/backend/dist/platform/jobs/durableJobTypes.d.ts +195 -0
- package/backend/dist/platform/jobs/durableJobTypes.d.ts.map +1 -0
- package/backend/dist/platform/jobs/durableJobTypes.js +72 -0
- package/backend/dist/platform/jobs/durableJobTypes.js.map +1 -0
- package/backend/dist/platform/jobs/embeddedDurableJobWorker.d.ts +87 -0
- package/backend/dist/platform/jobs/embeddedDurableJobWorker.d.ts.map +1 -0
- package/backend/dist/platform/jobs/embeddedDurableJobWorker.js +429 -0
- package/backend/dist/platform/jobs/embeddedDurableJobWorker.js.map +1 -0
- package/backend/dist/platform/jobs/identityDeletionEnqueuer.d.ts +3 -0
- package/backend/dist/platform/jobs/identityDeletionEnqueuer.d.ts.map +1 -0
- package/backend/dist/platform/jobs/identityDeletionEnqueuer.js +36 -0
- package/backend/dist/platform/jobs/identityDeletionEnqueuer.js.map +1 -0
- package/backend/dist/platform/jobs/index.d.ts +18 -0
- package/backend/dist/platform/jobs/index.d.ts.map +1 -0
- package/backend/dist/platform/jobs/index.js +34 -0
- package/backend/dist/platform/jobs/index.js.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableEventIdempotencyMigration.d.ts +4 -0
- package/backend/dist/platform/jobs/postgresDurableEventIdempotencyMigration.d.ts.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableEventIdempotencyMigration.js +25 -0
- package/backend/dist/platform/jobs/postgresDurableEventIdempotencyMigration.js.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableEventReplayIndexMigration.d.ts +4 -0
- package/backend/dist/platform/jobs/postgresDurableEventReplayIndexMigration.d.ts.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableEventReplayIndexMigration.js +23 -0
- package/backend/dist/platform/jobs/postgresDurableEventReplayIndexMigration.js.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobMigration.d.ts +11 -0
- package/backend/dist/platform/jobs/postgresDurableJobMigration.d.ts.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobMigration.js +106 -0
- package/backend/dist/platform/jobs/postgresDurableJobMigration.js.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobRepository.d.ts +88 -0
- package/backend/dist/platform/jobs/postgresDurableJobRepository.d.ts.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobRepository.js +1185 -0
- package/backend/dist/platform/jobs/postgresDurableJobRepository.js.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobService.d.ts +86 -0
- package/backend/dist/platform/jobs/postgresDurableJobService.d.ts.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobService.js +696 -0
- package/backend/dist/platform/jobs/postgresDurableJobService.js.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobWorker.d.ts +53 -0
- package/backend/dist/platform/jobs/postgresDurableJobWorker.d.ts.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobWorker.js +393 -0
- package/backend/dist/platform/jobs/postgresDurableJobWorker.js.map +1 -0
- package/backend/dist/platform/jobs/resourceDeletionEnqueuer.d.ts +3 -0
- package/backend/dist/platform/jobs/resourceDeletionEnqueuer.d.ts.map +1 -0
- package/backend/dist/platform/jobs/resourceDeletionEnqueuer.js +43 -0
- package/backend/dist/platform/jobs/resourceDeletionEnqueuer.js.map +1 -0
- package/backend/dist/platform/jobs/sqliteDurableJobRepository.d.ts +166 -0
- package/backend/dist/platform/jobs/sqliteDurableJobRepository.d.ts.map +1 -0
- package/backend/dist/platform/jobs/sqliteDurableJobRepository.js +1008 -0
- package/backend/dist/platform/jobs/sqliteDurableJobRepository.js.map +1 -0
- package/backend/dist/platform/jobs/videoGenerationEnqueuer.d.ts +4 -0
- package/backend/dist/platform/jobs/videoGenerationEnqueuer.d.ts.map +1 -0
- package/backend/dist/platform/jobs/videoGenerationEnqueuer.js +46 -0
- package/backend/dist/platform/jobs/videoGenerationEnqueuer.js.map +1 -0
- package/backend/dist/platform/jobs/workExecutionEnqueuer.d.ts +3 -0
- package/backend/dist/platform/jobs/workExecutionEnqueuer.d.ts.map +1 -0
- package/backend/dist/platform/jobs/workExecutionEnqueuer.js +38 -0
- package/backend/dist/platform/jobs/workExecutionEnqueuer.js.map +1 -0
- package/backend/dist/platform/ollamaRuntimeConfig.d.ts +40 -0
- package/backend/dist/platform/ollamaRuntimeConfig.d.ts.map +1 -0
- package/backend/dist/platform/ollamaRuntimeConfig.js +72 -0
- package/backend/dist/platform/ollamaRuntimeConfig.js.map +1 -0
- package/backend/dist/platform/recovery/backupArchive.d.ts +120 -0
- package/backend/dist/platform/recovery/backupArchive.d.ts.map +1 -0
- package/backend/dist/platform/recovery/backupArchive.js +842 -0
- package/backend/dist/platform/recovery/backupArchive.js.map +1 -0
- package/backend/dist/platform/recovery/index.d.ts +3 -0
- package/backend/dist/platform/recovery/index.d.ts.map +1 -0
- package/backend/dist/platform/recovery/index.js +8 -0
- package/backend/dist/platform/recovery/index.js.map +1 -0
- package/backend/dist/platform/recovery/teamBackupArchive.d.ts +98 -0
- package/backend/dist/platform/recovery/teamBackupArchive.d.ts.map +1 -0
- package/backend/dist/platform/recovery/teamBackupArchive.js +1203 -0
- package/backend/dist/platform/recovery/teamBackupArchive.js.map +1 -0
- package/backend/dist/platform/runtimeConfig.d.ts +70 -0
- package/backend/dist/platform/runtimeConfig.d.ts.map +1 -0
- package/backend/dist/platform/runtimeConfig.js +205 -0
- package/backend/dist/platform/runtimeConfig.js.map +1 -0
- package/backend/dist/platform/storage/aesGcmKeyring.d.ts +26 -0
- package/backend/dist/platform/storage/aesGcmKeyring.d.ts.map +1 -0
- package/backend/dist/platform/storage/aesGcmKeyring.js +135 -0
- package/backend/dist/platform/storage/aesGcmKeyring.js.map +1 -0
- package/backend/dist/platform/storage/blobReferenceRepository.d.ts +36 -0
- package/backend/dist/platform/storage/blobReferenceRepository.d.ts.map +1 -0
- package/backend/dist/platform/storage/blobReferenceRepository.js +117 -0
- package/backend/dist/platform/storage/blobReferenceRepository.js.map +1 -0
- package/backend/dist/platform/storage/blobStore.d.ts +111 -0
- package/backend/dist/platform/storage/blobStore.d.ts.map +1 -0
- package/backend/dist/platform/storage/blobStore.js +46 -0
- package/backend/dist/platform/storage/blobStore.js.map +1 -0
- package/backend/dist/platform/storage/documentVectorIndex.d.ts +44 -0
- package/backend/dist/platform/storage/documentVectorIndex.d.ts.map +1 -0
- package/backend/dist/platform/storage/documentVectorIndex.js +110 -0
- package/backend/dist/platform/storage/documentVectorIndex.js.map +1 -0
- package/backend/dist/platform/storage/durableBlobQuotaPolicy.d.ts +82 -0
- package/backend/dist/platform/storage/durableBlobQuotaPolicy.d.ts.map +1 -0
- package/backend/dist/platform/storage/durableBlobQuotaPolicy.js +583 -0
- package/backend/dist/platform/storage/durableBlobQuotaPolicy.js.map +1 -0
- package/backend/dist/platform/storage/index.d.ts +19 -0
- package/backend/dist/platform/storage/index.d.ts.map +1 -0
- package/backend/dist/platform/storage/index.js +35 -0
- package/backend/dist/platform/storage/index.js.map +1 -0
- package/backend/dist/platform/storage/localEncryptedBlobStore.d.ts +120 -0
- package/backend/dist/platform/storage/localEncryptedBlobStore.d.ts.map +1 -0
- package/backend/dist/platform/storage/localEncryptedBlobStore.js +1205 -0
- package/backend/dist/platform/storage/localEncryptedBlobStore.js.map +1 -0
- package/backend/dist/platform/storage/personaMemoryIndexing.d.ts +12 -0
- package/backend/dist/platform/storage/personaMemoryIndexing.d.ts.map +1 -0
- package/backend/dist/platform/storage/personaMemoryIndexing.js +25 -0
- package/backend/dist/platform/storage/personaMemoryIndexing.js.map +1 -0
- package/backend/dist/platform/storage/pgVectorStore.d.ts +37 -0
- package/backend/dist/platform/storage/pgVectorStore.d.ts.map +1 -0
- package/backend/dist/platform/storage/pgVectorStore.js +493 -0
- package/backend/dist/platform/storage/pgVectorStore.js.map +1 -0
- package/backend/dist/platform/storage/platformDomainRepositories.d.ts +244 -0
- package/backend/dist/platform/storage/platformDomainRepositories.d.ts.map +1 -0
- package/backend/dist/platform/storage/platformDomainRepositories.js +7 -0
- package/backend/dist/platform/storage/platformDomainRepositories.js.map +1 -0
- package/backend/dist/platform/storage/platformStorageRuntime.d.ts +35 -0
- package/backend/dist/platform/storage/platformStorageRuntime.d.ts.map +1 -0
- package/backend/dist/platform/storage/platformStorageRuntime.js +299 -0
- package/backend/dist/platform/storage/platformStorageRuntime.js.map +1 -0
- package/backend/dist/platform/storage/postgresPlatformDomainRepositories.d.ts +4 -0
- package/backend/dist/platform/storage/postgresPlatformDomainRepositories.d.ts.map +1 -0
- package/backend/dist/platform/storage/postgresPlatformDomainRepositories.js +1017 -0
- package/backend/dist/platform/storage/postgresPlatformDomainRepositories.js.map +1 -0
- package/backend/dist/platform/storage/postgresResourceDeletionLifecycleMigration.d.ts +4 -0
- package/backend/dist/platform/storage/postgresResourceDeletionLifecycleMigration.d.ts.map +1 -0
- package/backend/dist/platform/storage/postgresResourceDeletionLifecycleMigration.js +40 -0
- package/backend/dist/platform/storage/postgresResourceDeletionLifecycleMigration.js.map +1 -0
- package/backend/dist/platform/storage/resourceContentCleanup.d.ts +29 -0
- package/backend/dist/platform/storage/resourceContentCleanup.d.ts.map +1 -0
- package/backend/dist/platform/storage/resourceContentCleanup.js +100 -0
- package/backend/dist/platform/storage/resourceContentCleanup.js.map +1 -0
- package/backend/dist/platform/storage/resourceDeletionLifecycle.d.ts +14 -0
- package/backend/dist/platform/storage/resourceDeletionLifecycle.d.ts.map +1 -0
- package/backend/dist/platform/storage/resourceDeletionLifecycle.js +31 -0
- package/backend/dist/platform/storage/resourceDeletionLifecycle.js.map +1 -0
- package/backend/dist/platform/storage/s3EncryptedBlobStore.d.ts +140 -0
- package/backend/dist/platform/storage/s3EncryptedBlobStore.d.ts.map +1 -0
- package/backend/dist/platform/storage/s3EncryptedBlobStore.js +1309 -0
- package/backend/dist/platform/storage/s3EncryptedBlobStore.js.map +1 -0
- package/backend/dist/platform/storage/sqliteEncryptedVectorStore.d.ts +71 -0
- package/backend/dist/platform/storage/sqliteEncryptedVectorStore.d.ts.map +1 -0
- package/backend/dist/platform/storage/sqliteEncryptedVectorStore.js +766 -0
- package/backend/dist/platform/storage/sqliteEncryptedVectorStore.js.map +1 -0
- package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.d.ts +4 -0
- package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.d.ts.map +1 -0
- package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.js +1037 -0
- package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.js.map +1 -0
- package/backend/dist/platform/storage/sqliteToTeamStorageMigration.d.ts +25 -0
- package/backend/dist/platform/storage/sqliteToTeamStorageMigration.d.ts.map +1 -0
- package/backend/dist/platform/storage/sqliteToTeamStorageMigration.js +1292 -0
- package/backend/dist/platform/storage/sqliteToTeamStorageMigration.js.map +1 -0
- package/backend/dist/platform/storage/storageFactory.d.ts +83 -0
- package/backend/dist/platform/storage/storageFactory.d.ts.map +1 -0
- package/backend/dist/platform/storage/storageFactory.js +530 -0
- package/backend/dist/platform/storage/storageFactory.js.map +1 -0
- package/backend/dist/platform/storage/storageSchemaContracts.d.ts +22 -0
- package/backend/dist/platform/storage/storageSchemaContracts.d.ts.map +1 -0
- package/backend/dist/platform/storage/storageSchemaContracts.js +299 -0
- package/backend/dist/platform/storage/storageSchemaContracts.js.map +1 -0
- package/backend/dist/platform/storage/vectorStore.d.ts +117 -0
- package/backend/dist/platform/storage/vectorStore.d.ts.map +1 -0
- package/backend/dist/platform/storage/vectorStore.js +40 -0
- package/backend/dist/platform/storage/vectorStore.js.map +1 -0
- package/backend/dist/platform/workPersistence/index.d.ts +9 -0
- package/backend/dist/platform/workPersistence/index.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/index.js +14 -0
- package/backend/dist/platform/workPersistence/index.js.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkLifecycleMigration.d.ts +9 -0
- package/backend/dist/platform/workPersistence/postgresWorkLifecycleMigration.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkLifecycleMigration.js +47 -0
- package/backend/dist/platform/workPersistence/postgresWorkLifecycleMigration.js.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkMessageContentMigration.d.ts +3 -0
- package/backend/dist/platform/workPersistence/postgresWorkMessageContentMigration.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkMessageContentMigration.js +28 -0
- package/backend/dist/platform/workPersistence/postgresWorkMessageContentMigration.js.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkMigration.d.ts +3 -0
- package/backend/dist/platform/workPersistence/postgresWorkMigration.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkMigration.js +101 -0
- package/backend/dist/platform/workPersistence/postgresWorkMigration.js.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkPersistence.d.ts +79 -0
- package/backend/dist/platform/workPersistence/postgresWorkPersistence.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkPersistence.js +521 -0
- package/backend/dist/platform/workPersistence/postgresWorkPersistence.js.map +1 -0
- package/backend/dist/platform/workPersistence/service.d.ts +6 -0
- package/backend/dist/platform/workPersistence/service.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/service.js +27 -0
- package/backend/dist/platform/workPersistence/service.js.map +1 -0
- package/backend/dist/platform/workPersistence/sqliteWorkPersistence.d.ts +77 -0
- package/backend/dist/platform/workPersistence/sqliteWorkPersistence.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js +463 -0
- package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js.map +1 -0
- package/backend/dist/platform/workPersistence/types.d.ts +159 -0
- package/backend/dist/platform/workPersistence/types.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/types.js +13 -0
- package/backend/dist/platform/workPersistence/types.js.map +1 -0
- package/backend/dist/platform/workPersistence/workExecutionTypes.d.ts +13 -0
- package/backend/dist/platform/workPersistence/workExecutionTypes.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/workExecutionTypes.js +7 -0
- package/backend/dist/platform/workPersistence/workExecutionTypes.js.map +1 -0
- package/backend/dist/platform/workPersistence/workMessageContentCodec.d.ts +8 -0
- package/backend/dist/platform/workPersistence/workMessageContentCodec.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/workMessageContentCodec.js +25 -0
- package/backend/dist/platform/workPersistence/workMessageContentCodec.js.map +1 -0
- package/backend/dist/platform/workPersistence/workTextSafety.d.ts +3 -0
- package/backend/dist/platform/workPersistence/workTextSafety.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/workTextSafety.js +8 -0
- package/backend/dist/platform/workPersistence/workTextSafety.js.map +1 -0
- package/backend/dist/routes/agentCli.js +1 -1
- package/backend/dist/routes/agentCli.js.map +1 -1
- package/backend/dist/routes/artifacts.d.ts.map +1 -1
- package/backend/dist/routes/artifacts.js +2 -1
- package/backend/dist/routes/artifacts.js.map +1 -1
- package/backend/dist/routes/auth.d.ts.map +1 -1
- package/backend/dist/routes/auth.js +64 -18
- package/backend/dist/routes/auth.js.map +1 -1
- package/backend/dist/routes/chat.d.ts.map +1 -1
- package/backend/dist/routes/chat.js +519 -85
- package/backend/dist/routes/chat.js.map +1 -1
- package/backend/dist/routes/documents.d.ts.map +1 -1
- package/backend/dist/routes/documents.js +134 -28
- package/backend/dist/routes/documents.js.map +1 -1
- package/backend/dist/routes/embeddings.d.ts.map +1 -1
- package/backend/dist/routes/embeddings.js +2 -1
- package/backend/dist/routes/embeddings.js.map +1 -1
- package/backend/dist/routes/health.d.ts +3 -0
- package/backend/dist/routes/health.d.ts.map +1 -0
- package/backend/dist/routes/health.js +52 -0
- package/backend/dist/routes/health.js.map +1 -0
- package/backend/dist/routes/huggingfaceHub.d.ts.map +1 -1
- package/backend/dist/routes/huggingfaceHub.js +2 -1
- package/backend/dist/routes/huggingfaceHub.js.map +1 -1
- package/backend/dist/routes/imageGen.d.ts.map +1 -1
- package/backend/dist/routes/imageGen.js +42 -10
- package/backend/dist/routes/imageGen.js.map +1 -1
- package/backend/dist/routes/jobs.d.ts +3 -0
- package/backend/dist/routes/jobs.d.ts.map +1 -0
- package/backend/dist/routes/jobs.js +126 -0
- package/backend/dist/routes/jobs.js.map +1 -0
- package/backend/dist/routes/libreClaw.d.ts.map +1 -1
- package/backend/dist/routes/libreClaw.js +10 -7
- package/backend/dist/routes/libreClaw.js.map +1 -1
- package/backend/dist/routes/media.d.ts.map +1 -1
- package/backend/dist/routes/media.js +523 -77
- package/backend/dist/routes/media.js.map +1 -1
- package/backend/dist/routes/notes.d.ts.map +1 -1
- package/backend/dist/routes/notes.js +21 -21
- package/backend/dist/routes/notes.js.map +1 -1
- package/backend/dist/routes/ollama.d.ts.map +1 -1
- package/backend/dist/routes/ollama.js +40 -12
- package/backend/dist/routes/ollama.js.map +1 -1
- package/backend/dist/routes/personas.d.ts.map +1 -1
- package/backend/dist/routes/personas.js +4 -2
- package/backend/dist/routes/personas.js.map +1 -1
- package/backend/dist/routes/plugins.d.ts.map +1 -1
- package/backend/dist/routes/plugins.js +79 -51
- package/backend/dist/routes/plugins.js.map +1 -1
- package/backend/dist/routes/preferences.d.ts.map +1 -1
- package/backend/dist/routes/preferences.js +290 -25
- package/backend/dist/routes/preferences.js.map +1 -1
- package/backend/dist/routes/search.d.ts.map +1 -1
- package/backend/dist/routes/search.js +23 -14
- package/backend/dist/routes/search.js.map +1 -1
- package/backend/dist/routes/stt.d.ts +9 -0
- package/backend/dist/routes/stt.d.ts.map +1 -0
- package/backend/dist/routes/stt.js +217 -0
- package/backend/dist/routes/stt.js.map +1 -0
- package/backend/dist/routes/systemDiagnostics.d.ts.map +1 -1
- package/backend/dist/routes/systemDiagnostics.js +2 -1
- package/backend/dist/routes/systemDiagnostics.js.map +1 -1
- package/backend/dist/routes/tts.d.ts.map +1 -1
- package/backend/dist/routes/tts.js +577 -28
- package/backend/dist/routes/tts.js.map +1 -1
- package/backend/dist/routes/users.d.ts.map +1 -1
- package/backend/dist/routes/users.js +16 -25
- package/backend/dist/routes/users.js.map +1 -1
- package/backend/dist/routes/work.d.ts.map +1 -1
- package/backend/dist/routes/work.js +167 -113
- package/backend/dist/routes/work.js.map +1 -1
- package/backend/dist/services/agentAccessService.d.ts +2 -2
- package/backend/dist/services/agentAccessService.d.ts.map +1 -1
- package/backend/dist/services/agentAccessService.js +5 -14
- package/backend/dist/services/agentAccessService.js.map +1 -1
- package/backend/dist/services/agentCliService.d.ts +3 -2
- package/backend/dist/services/agentCliService.d.ts.map +1 -1
- package/backend/dist/services/agentCliService.js +44 -16
- package/backend/dist/services/agentCliService.js.map +1 -1
- package/backend/dist/services/assistantCompletionService.d.ts +2 -1
- package/backend/dist/services/assistantCompletionService.d.ts.map +1 -1
- package/backend/dist/services/assistantCompletionService.js +7 -3
- package/backend/dist/services/assistantCompletionService.js.map +1 -1
- package/backend/dist/services/authService.d.ts +7 -2
- package/backend/dist/services/authService.d.ts.map +1 -1
- package/backend/dist/services/authService.js +23 -10
- package/backend/dist/services/authService.js.map +1 -1
- package/backend/dist/services/chatGenerationService.d.ts +5 -4
- package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
- package/backend/dist/services/chatGenerationService.js +23 -17
- package/backend/dist/services/chatGenerationService.js.map +1 -1
- package/backend/dist/services/chatRequestService.d.ts +4 -3
- package/backend/dist/services/chatRequestService.d.ts.map +1 -1
- package/backend/dist/services/chatRequestService.js +3 -3
- package/backend/dist/services/chatRequestService.js.map +1 -1
- package/backend/dist/services/chatService.d.ts +66 -16
- package/backend/dist/services/chatService.d.ts.map +1 -1
- package/backend/dist/services/chatService.js +402 -111
- package/backend/dist/services/chatService.js.map +1 -1
- package/backend/dist/services/codexOAuthService.d.ts +2 -2
- package/backend/dist/services/codexOAuthService.d.ts.map +1 -1
- package/backend/dist/services/codexOAuthService.js +63 -7
- package/backend/dist/services/codexOAuthService.js.map +1 -1
- package/backend/dist/services/dataArchiveService.d.ts +88 -0
- package/backend/dist/services/dataArchiveService.d.ts.map +1 -0
- package/backend/dist/services/dataArchiveService.js +1027 -0
- package/backend/dist/services/dataArchiveService.js.map +1 -0
- package/backend/dist/services/documentService.d.ts +67 -14
- package/backend/dist/services/documentService.d.ts.map +1 -1
- package/backend/dist/services/documentService.js +938 -193
- package/backend/dist/services/documentService.js.map +1 -1
- package/backend/dist/services/durableChatCompletion.d.ts +16 -0
- package/backend/dist/services/durableChatCompletion.d.ts.map +1 -0
- package/backend/dist/services/durableChatCompletion.js +34 -0
- package/backend/dist/services/durableChatCompletion.js.map +1 -0
- package/backend/dist/services/durableChatGenerationService.d.ts +19 -0
- package/backend/dist/services/durableChatGenerationService.d.ts.map +1 -0
- package/backend/dist/services/durableChatGenerationService.js +341 -0
- package/backend/dist/services/durableChatGenerationService.js.map +1 -0
- package/backend/dist/services/embeddingService.d.ts +1 -1
- package/backend/dist/services/embeddingService.d.ts.map +1 -1
- package/backend/dist/services/embeddingService.js +16 -13
- package/backend/dist/services/embeddingService.js.map +1 -1
- package/backend/dist/services/encryptionService.d.ts +28 -1
- package/backend/dist/services/encryptionService.d.ts.map +1 -1
- package/backend/dist/services/encryptionService.js +131 -51
- package/backend/dist/services/encryptionService.js.map +1 -1
- package/backend/dist/services/followUpService.d.ts +1 -1
- package/backend/dist/services/followUpService.d.ts.map +1 -1
- package/backend/dist/services/followUpService.js +1 -1
- package/backend/dist/services/followUpService.js.map +1 -1
- package/backend/dist/services/galleryService.d.ts +38 -37
- package/backend/dist/services/galleryService.d.ts.map +1 -1
- package/backend/dist/services/galleryService.js +356 -251
- package/backend/dist/services/galleryService.js.map +1 -1
- package/backend/dist/services/healthService.d.ts +65 -0
- package/backend/dist/services/healthService.d.ts.map +1 -0
- package/backend/dist/services/healthService.js +379 -0
- package/backend/dist/services/healthService.js.map +1 -0
- package/backend/dist/services/legacyCiphertextIntegrity.d.ts +40 -0
- package/backend/dist/services/legacyCiphertextIntegrity.d.ts.map +1 -0
- package/backend/dist/services/legacyCiphertextIntegrity.js +406 -0
- package/backend/dist/services/legacyCiphertextIntegrity.js.map +1 -0
- package/backend/dist/services/mediaGenerationJobService.d.ts +27 -5
- package/backend/dist/services/mediaGenerationJobService.d.ts.map +1 -1
- package/backend/dist/services/mediaGenerationJobService.js +185 -55
- package/backend/dist/services/mediaGenerationJobService.js.map +1 -1
- package/backend/dist/services/memoryService.d.ts +7 -83
- package/backend/dist/services/memoryService.d.ts.map +1 -1
- package/backend/dist/services/memoryService.js +428 -573
- package/backend/dist/services/memoryService.js.map +1 -1
- package/backend/dist/services/memoryUtils.d.ts.map +1 -1
- package/backend/dist/services/memoryUtils.js +8 -1
- package/backend/dist/services/memoryUtils.js.map +1 -1
- package/backend/dist/services/modelAccessService.d.ts +3 -3
- package/backend/dist/services/modelAccessService.d.ts.map +1 -1
- package/backend/dist/services/modelAccessService.js +8 -16
- package/backend/dist/services/modelAccessService.js.map +1 -1
- package/backend/dist/services/mutationEngineService.d.ts +0 -7
- package/backend/dist/services/mutationEngineService.d.ts.map +1 -1
- package/backend/dist/services/mutationEngineService.js +7 -78
- package/backend/dist/services/mutationEngineService.js.map +1 -1
- package/backend/dist/services/ollamaService.d.ts +4 -4
- package/backend/dist/services/ollamaService.d.ts.map +1 -1
- package/backend/dist/services/ollamaService.js +62 -31
- package/backend/dist/services/ollamaService.js.map +1 -1
- package/backend/dist/services/personaService.d.ts.map +1 -1
- package/backend/dist/services/personaService.js +19 -54
- package/backend/dist/services/personaService.js.map +1 -1
- package/backend/dist/services/pluginActivationService.d.ts +6 -5
- package/backend/dist/services/pluginActivationService.d.ts.map +1 -1
- package/backend/dist/services/pluginActivationService.js +36 -76
- package/backend/dist/services/pluginActivationService.js.map +1 -1
- package/backend/dist/services/pluginAudioGenerationService.d.ts +11 -6
- package/backend/dist/services/pluginAudioGenerationService.d.ts.map +1 -1
- package/backend/dist/services/pluginAudioGenerationService.js +74 -16
- package/backend/dist/services/pluginAudioGenerationService.js.map +1 -1
- package/backend/dist/services/pluginCacheInvalidation.d.ts +38 -0
- package/backend/dist/services/pluginCacheInvalidation.d.ts.map +1 -0
- package/backend/dist/services/pluginCacheInvalidation.js +198 -0
- package/backend/dist/services/pluginCacheInvalidation.js.map +1 -0
- package/backend/dist/services/pluginCapabilityRegistryService.d.ts +3 -3
- package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -1
- package/backend/dist/services/pluginCapabilityRegistryService.js +11 -7
- package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -1
- package/backend/dist/services/pluginCredentialsService.d.ts +9 -8
- package/backend/dist/services/pluginCredentialsService.d.ts.map +1 -1
- package/backend/dist/services/pluginCredentialsService.js +48 -89
- package/backend/dist/services/pluginCredentialsService.js.map +1 -1
- package/backend/dist/services/pluginEmbeddingService.d.ts +8 -7
- package/backend/dist/services/pluginEmbeddingService.d.ts.map +1 -1
- package/backend/dist/services/pluginEmbeddingService.js +13 -11
- package/backend/dist/services/pluginEmbeddingService.js.map +1 -1
- package/backend/dist/services/pluginImageGenerationService.d.ts +10 -8
- package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
- package/backend/dist/services/pluginImageGenerationService.js +119 -14
- package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
- package/backend/dist/services/pluginSTTService.d.ts +47 -0
- package/backend/dist/services/pluginSTTService.d.ts.map +1 -0
- package/backend/dist/services/pluginSTTService.js +199 -0
- package/backend/dist/services/pluginSTTService.js.map +1 -0
- package/backend/dist/services/pluginService.d.ts +94 -40
- package/backend/dist/services/pluginService.d.ts.map +1 -1
- package/backend/dist/services/pluginService.js +833 -275
- package/backend/dist/services/pluginService.js.map +1 -1
- package/backend/dist/services/pluginTTSService.d.ts +26 -8
- package/backend/dist/services/pluginTTSService.d.ts.map +1 -1
- package/backend/dist/services/pluginTTSService.js +277 -25
- package/backend/dist/services/pluginTTSService.js.map +1 -1
- package/backend/dist/services/pluginUsageService.d.ts +4 -4
- package/backend/dist/services/pluginUsageService.d.ts.map +1 -1
- package/backend/dist/services/pluginUsageService.js +44 -93
- package/backend/dist/services/pluginUsageService.js.map +1 -1
- package/backend/dist/services/pluginVariablesService.d.ts +14 -7
- package/backend/dist/services/pluginVariablesService.d.ts.map +1 -1
- package/backend/dist/services/pluginVariablesService.js +116 -81
- package/backend/dist/services/pluginVariablesService.js.map +1 -1
- package/backend/dist/services/pluginVideoGenerationService.d.ts +19 -8
- package/backend/dist/services/pluginVideoGenerationService.d.ts.map +1 -1
- package/backend/dist/services/pluginVideoGenerationService.js +116 -20
- package/backend/dist/services/pluginVideoGenerationService.js.map +1 -1
- package/backend/dist/services/preferencesService.d.ts +31 -21
- package/backend/dist/services/preferencesService.d.ts.map +1 -1
- package/backend/dist/services/preferencesService.js +104 -102
- package/backend/dist/services/preferencesService.js.map +1 -1
- package/backend/dist/services/recoveryInventoryService.d.ts +244 -0
- package/backend/dist/services/recoveryInventoryService.d.ts.map +1 -0
- package/backend/dist/services/recoveryInventoryService.js +1436 -0
- package/backend/dist/services/recoveryInventoryService.js.map +1 -0
- package/backend/dist/services/simpleGitHubOAuth.js +3 -3
- package/backend/dist/services/simpleGitHubOAuth.js.map +1 -1
- package/backend/dist/services/simpleHuggingFaceOAuth.d.ts.map +1 -1
- package/backend/dist/services/simpleHuggingFaceOAuth.js +3 -3
- package/backend/dist/services/simpleHuggingFaceOAuth.js.map +1 -1
- package/backend/dist/services/systemDiagnosticsService.d.ts.map +1 -1
- package/backend/dist/services/systemDiagnosticsService.js +2 -2
- package/backend/dist/services/systemDiagnosticsService.js.map +1 -1
- package/backend/dist/services/systemSettingsService.d.ts +5 -0
- package/backend/dist/services/systemSettingsService.d.ts.map +1 -0
- package/backend/dist/services/systemSettingsService.js +24 -0
- package/backend/dist/services/systemSettingsService.js.map +1 -0
- package/backend/dist/services/titleGenerationService.d.ts +1 -1
- package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
- package/backend/dist/services/titleGenerationService.js +1 -1
- package/backend/dist/services/titleGenerationService.js.map +1 -1
- package/backend/dist/services/voiceProfileService.d.ts +44 -0
- package/backend/dist/services/voiceProfileService.d.ts.map +1 -0
- package/backend/dist/services/voiceProfileService.js +195 -0
- package/backend/dist/services/voiceProfileService.js.map +1 -0
- package/backend/dist/services/webSearchService.d.ts +7 -7
- package/backend/dist/services/webSearchService.d.ts.map +1 -1
- package/backend/dist/services/webSearchService.js +40 -35
- package/backend/dist/services/webSearchService.js.map +1 -1
- package/backend/dist/services/websocketTicketService.d.ts +39 -0
- package/backend/dist/services/websocketTicketService.d.ts.map +1 -0
- package/backend/dist/services/websocketTicketService.js +183 -0
- package/backend/dist/services/websocketTicketService.js.map +1 -0
- package/backend/dist/services/workAccessService.d.ts +3 -3
- package/backend/dist/services/workAccessService.d.ts.map +1 -1
- package/backend/dist/services/workAccessService.js +8 -16
- package/backend/dist/services/workAccessService.js.map +1 -1
- package/backend/dist/services/workAdminService.d.ts +3 -3
- package/backend/dist/services/workAdminService.d.ts.map +1 -1
- package/backend/dist/services/workAdminService.js +4 -4
- package/backend/dist/services/workAdminService.js.map +1 -1
- package/backend/dist/services/workAgentService.d.ts +25 -1
- package/backend/dist/services/workAgentService.d.ts.map +1 -1
- package/backend/dist/services/workAgentService.js +294 -126
- package/backend/dist/services/workAgentService.js.map +1 -1
- package/backend/dist/services/workEventService.d.ts +15 -2
- package/backend/dist/services/workEventService.d.ts.map +1 -1
- package/backend/dist/services/workEventService.js +201 -3
- package/backend/dist/services/workEventService.js.map +1 -1
- package/backend/dist/services/workKubernetesDriver.d.ts +8 -7
- package/backend/dist/services/workKubernetesDriver.d.ts.map +1 -1
- package/backend/dist/services/workKubernetesDriver.js +65 -21
- package/backend/dist/services/workKubernetesDriver.js.map +1 -1
- package/backend/dist/services/workModelProviderService.d.ts +2 -2
- package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
- package/backend/dist/services/workModelProviderService.js +38 -34
- package/backend/dist/services/workModelProviderService.js.map +1 -1
- package/backend/dist/services/workPolicyService.d.ts +7 -7
- package/backend/dist/services/workPolicyService.d.ts.map +1 -1
- package/backend/dist/services/workPolicyService.js +50 -51
- package/backend/dist/services/workPolicyService.js.map +1 -1
- package/backend/dist/services/workPreviewProxyService.d.ts +8 -8
- package/backend/dist/services/workPreviewProxyService.d.ts.map +1 -1
- package/backend/dist/services/workPreviewProxyService.js +47 -44
- package/backend/dist/services/workPreviewProxyService.js.map +1 -1
- package/backend/dist/services/workRuntimeDriver.d.ts +21 -18
- package/backend/dist/services/workRuntimeDriver.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeDriver.js +69 -20
- package/backend/dist/services/workRuntimeDriver.js.map +1 -1
- package/backend/dist/services/workRuntimeService.d.ts +18 -13
- package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeService.js +438 -194
- package/backend/dist/services/workRuntimeService.js.map +1 -1
- package/backend/dist/services/workRuntimeShared.d.ts +2 -0
- package/backend/dist/services/workRuntimeShared.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeShared.js.map +1 -1
- package/backend/dist/services/workTaskService.d.ts +42 -36
- package/backend/dist/services/workTaskService.d.ts.map +1 -1
- package/backend/dist/services/workTaskService.js +445 -350
- package/backend/dist/services/workTaskService.js.map +1 -1
- package/backend/dist/services/workTerminalService.d.ts +1 -1
- package/backend/dist/services/workTerminalService.d.ts.map +1 -1
- package/backend/dist/services/workTerminalService.js +33 -6
- package/backend/dist/services/workTerminalService.js.map +1 -1
- package/backend/dist/storage.d.ts +72 -40
- package/backend/dist/storage.d.ts.map +1 -1
- package/backend/dist/storage.js +312 -660
- package/backend/dist/storage.js.map +1 -1
- package/backend/dist/types/index.d.ts +28 -0
- package/backend/dist/types/index.d.ts.map +1 -1
- package/backend/dist/types/index.js.map +1 -1
- package/backend/dist/types/work.d.ts +7 -2
- package/backend/dist/types/work.d.ts.map +1 -1
- package/backend/dist/utils/chatCancellation.d.ts +48 -0
- package/backend/dist/utils/chatCancellation.d.ts.map +1 -0
- package/backend/dist/utils/chatCancellation.js +152 -0
- package/backend/dist/utils/chatCancellation.js.map +1 -0
- package/backend/dist/utils/chatDocumentContext.d.ts +1 -1
- package/backend/dist/utils/chatDocumentContext.d.ts.map +1 -1
- package/backend/dist/utils/chatDocumentContext.js +11 -5
- package/backend/dist/utils/chatDocumentContext.js.map +1 -1
- package/backend/dist/utils/chatStreamCoalescer.d.ts +15 -0
- package/backend/dist/utils/chatStreamCoalescer.d.ts.map +1 -0
- package/backend/dist/utils/chatStreamCoalescer.js +59 -0
- package/backend/dist/utils/chatStreamCoalescer.js.map +1 -0
- package/backend/dist/utils/dataDirectory.d.ts +49 -0
- package/backend/dist/utils/dataDirectory.d.ts.map +1 -0
- package/backend/dist/utils/dataDirectory.js +291 -0
- package/backend/dist/utils/dataDirectory.js.map +1 -0
- package/backend/dist/utils/generationUtils.d.ts.map +1 -1
- package/backend/dist/utils/generationUtils.js +18 -6
- package/backend/dist/utils/generationUtils.js.map +1 -1
- package/backend/dist/utils/jwt.d.ts.map +1 -1
- package/backend/dist/utils/jwt.js +2 -3
- package/backend/dist/utils/jwt.js.map +1 -1
- package/backend/dist/utils/ollamaModelDefaults.d.ts.map +1 -1
- package/backend/dist/utils/ollamaModelDefaults.js +2 -7
- package/backend/dist/utils/ollamaModelDefaults.js.map +1 -1
- package/backend/dist/utils/ollamaStreaming.d.ts +2 -1
- package/backend/dist/utils/ollamaStreaming.d.ts.map +1 -1
- package/backend/dist/utils/ollamaStreaming.js +49 -11
- package/backend/dist/utils/ollamaStreaming.js.map +1 -1
- package/backend/dist/utils/pluginConnectionVariables.d.ts.map +1 -1
- package/backend/dist/utils/pluginConnectionVariables.js +11 -3
- package/backend/dist/utils/pluginConnectionVariables.js.map +1 -1
- package/backend/dist/utils/pluginDefinitionTrust.d.ts.map +1 -1
- package/backend/dist/utils/pluginDefinitionTrust.js +4 -3
- package/backend/dist/utils/pluginDefinitionTrust.js.map +1 -1
- package/backend/dist/utils/pluginStreaming.d.ts +2 -1
- package/backend/dist/utils/pluginStreaming.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreaming.js +5 -1
- package/backend/dist/utils/pluginStreaming.js.map +1 -1
- package/backend/dist/utils/pluginUpload.d.ts +1 -0
- package/backend/dist/utils/pluginUpload.d.ts.map +1 -1
- package/backend/dist/utils/pluginUpload.js +14 -4
- package/backend/dist/utils/pluginUpload.js.map +1 -1
- package/backend/dist/utils/pluginValidation.d.ts.map +1 -1
- package/backend/dist/utils/pluginValidation.js +29 -1
- package/backend/dist/utils/pluginValidation.js.map +1 -1
- package/backend/dist/utils/sttAudioUpload.d.ts +24 -0
- package/backend/dist/utils/sttAudioUpload.d.ts.map +1 -0
- package/backend/dist/utils/sttAudioUpload.js +500 -0
- package/backend/dist/utils/sttAudioUpload.js.map +1 -0
- package/backend/dist/utils/ttsVoiceCloneUpload.d.ts +34 -0
- package/backend/dist/utils/ttsVoiceCloneUpload.d.ts.map +1 -0
- package/backend/dist/utils/ttsVoiceCloneUpload.js +224 -0
- package/backend/dist/utils/ttsVoiceCloneUpload.js.map +1 -0
- package/backend/dist/utils/websocketMessages.d.ts +2 -1
- package/backend/dist/utils/websocketMessages.d.ts.map +1 -1
- package/backend/dist/utils/websocketMessages.js +16 -2
- package/backend/dist/utils/websocketMessages.js.map +1 -1
- package/backend/dist/websocketServer.d.ts +4 -1
- package/backend/dist/websocketServer.d.ts.map +1 -1
- package/backend/dist/websocketServer.js +290 -44
- package/backend/dist/websocketServer.js.map +1 -1
- package/backend/dist/workTerminalServer.d.ts +9 -0
- package/backend/dist/workTerminalServer.d.ts.map +1 -1
- package/backend/dist/workTerminalServer.js +221 -52
- package/backend/dist/workTerminalServer.js.map +1 -1
- package/backend/dist/worker.d.ts +2 -0
- package/backend/dist/worker.d.ts.map +1 -0
- package/backend/dist/worker.js +250 -0
- package/backend/dist/worker.js.map +1 -0
- package/backend/package.json +19 -9
- package/bin/cli.js +126 -99
- package/bin/runtime-paths.js +108 -0
- package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
- package/frontend/dist/artifact-runtime/framer-motion.js +5 -5
- package/frontend/dist/artifact-runtime/lucide-react.js +1 -1
- package/frontend/dist/assets/index-Jtx9Amhz.js +16 -0
- package/frontend/dist/assets/index-kxtZQLV6.css +1 -0
- package/frontend/dist/assets/{markdown-math-ClQbWekD.css → markdown-math-ClTedVi7.css} +1 -1
- package/frontend/dist/index.html +18 -18
- package/frontend/dist/js/{ArtifactContainer-Dy2Q0iIL.js → ArtifactContainer-fZegtmva.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-K79dWshB.js → ArtifactDemoPage-BDBXYv9l.js} +1 -1
- package/frontend/dist/js/{ArtifactSandboxFrame-DhqLNUtY.js → ArtifactSandboxFrame-BN16NtKe.js} +3 -3
- package/frontend/dist/js/{ArtifactSlideOutPanel-Cl8JG7bz.js → ArtifactSlideOutPanel-x1fS85Ww.js} +1 -1
- package/frontend/dist/js/{Button-CTXHujOd.js → Button-BV44cTnj.js} +1 -1
- package/frontend/dist/js/ChatPage-C_pXh7WN.js +23 -0
- package/frontend/dist/js/{FirstTimeSetup-kHhRzGJ8.js → FirstTimeSetup-oRrlZnBm.js} +1 -1
- package/frontend/dist/js/GalleryPage-CV_vbE7X.js +1 -0
- package/frontend/dist/js/{HomePage-C1L8WAXL.js → HomePage-P-e7Huco.js} +1 -1
- package/frontend/dist/js/{LibreClawPage-Dyua8IUu.js → LibreClawPage-Cee06SUM.js} +1 -1
- package/frontend/dist/js/{ModelManagerModals-CuMRGUd-.js → ModelManagerModals-D7jIT3v1.js} +1 -1
- package/frontend/dist/js/{ModelSelector-CqHc-Ln4.js → ModelSelector-DXucbvrz.js} +1 -1
- package/frontend/dist/js/ModelsPage-C3_fZpMM.js +2 -0
- package/frontend/dist/js/NotesPage-rEIPWGIb.js +1 -0
- package/frontend/dist/js/{OptimizedSyntaxHighlighter-CWYUn9Oe.js → OptimizedSyntaxHighlighter-XwqZEoTf.js} +1 -1
- package/frontend/dist/js/{PersonasPage-D_6WBCH5.js → PersonasPage-BXtepFuD.js} +2 -2
- package/frontend/dist/js/PluginUsagePage-hhu8cxsu.js +1 -0
- package/frontend/dist/js/RichMessageContent-DkiEvdSg.js +3 -0
- package/frontend/dist/js/SettingsModal-BNxCtJ51.js +1 -0
- package/frontend/dist/js/{SettingsToggle-DLHlCDBl.js → SettingsToggle-WTa0rgvY.js} +1 -1
- package/frontend/dist/js/{SystemPage-BMWEet9e.js → SystemPage-BvvKFuoG.js} +1 -1
- package/frontend/dist/js/UserManagementPage-BccyR7si.js +1 -0
- package/frontend/dist/js/WorkPage-BgxrvY3I.js +6 -0
- package/frontend/dist/js/api-BvPDxsUQ.js +14 -0
- package/frontend/dist/js/appStore-DRSSjaHn.js +2 -0
- package/frontend/dist/js/ar-xTSvTq05.js +2 -0
- package/frontend/dist/js/authStore-BVykIRec.js +4 -0
- package/frontend/dist/js/{babel-CmENXdZw.js → babel-D24oDI9y.js} +1 -1
- package/frontend/dist/js/bn-iYAsohEA.js +2 -0
- package/frontend/dist/js/chatStore-UPp5TV_t.js +3 -0
- package/frontend/dist/js/{config-DkV1ka7I.js → config-BTlPm-cZ.js} +1 -1
- package/frontend/dist/js/cs-YBHN88Hb.js +2 -0
- package/frontend/dist/js/da-D7qlLy_k.js +2 -0
- package/frontend/dist/js/de-DV671k2c.js +2 -0
- package/frontend/dist/js/es-kyBgzNq-.js +2 -0
- package/frontend/dist/js/{estree-D5KP-qbw.js → estree-CfYahF_d.js} +1 -1
- package/frontend/dist/js/fr-Cw1vut7I.js +2 -0
- package/frontend/dist/js/hi-DWEFC024.js +2 -0
- package/frontend/dist/js/{html-Cm9c2akd.js → html-BJsDX1UZ.js} +1 -1
- package/frontend/dist/js/id-DlMHjjy0.js +2 -0
- package/frontend/dist/js/is-B9E_a7dG.js +2 -0
- package/frontend/dist/js/it-DawmVbLC.js +2 -0
- package/frontend/dist/js/ja-DmVvwY3W.js +2 -0
- package/frontend/dist/js/ko-DzOPpkVs.js +2 -0
- package/frontend/dist/js/{markdown-B2u7CnKN.js → markdown-GLyuUNig.js} +1 -1
- package/frontend/dist/js/markdown-core-BmPPZiuD.js +31 -0
- package/frontend/dist/js/{markdown-math-B7FlYsmr.js → markdown-math-mH7AZ_mb.js} +6 -6
- package/frontend/dist/js/{messageCodeStyles-DalG2j6U.js → messageCodeStyles-BHddEFP1.js} +1 -1
- package/frontend/dist/js/ms-DpsaOPht.js +2 -0
- package/frontend/dist/js/nl-B1d8W22n.js +2 -0
- package/frontend/dist/js/pl-nCncRVgt.js +2 -0
- package/frontend/dist/js/{postcss-B5WIGhAY.js → postcss-Bx9CTcIc.js} +1 -1
- package/frontend/dist/js/pt-DHw8fGuu.js +2 -0
- package/frontend/dist/js/{react-vendor-DPNXrO-8.js → react-vendor-C5yShNlM.js} +1 -1
- package/frontend/dist/js/{router-vendor-Ca9zqOqT.js → router-vendor-CbPDks39.js} +1 -1
- package/frontend/dist/js/ru-Derl_YP_.js +2 -0
- package/frontend/dist/js/{standalone-Dwm1daef.js → standalone-Dh56V0YW.js} +1 -1
- package/frontend/dist/js/sv-pJAfBVo0.js +2 -0
- package/frontend/dist/js/{syntax-highlight-Ca9bHsaz.js → syntax-highlight-3EEX6CGL.js} +3 -3
- package/frontend/dist/js/th-C_7fIGnk.js +2 -0
- package/frontend/dist/js/tr-CPqsJvaP.js +2 -0
- package/frontend/dist/js/{typescript-CwieSptM.js → typescript-DRy7A9w4.js} +1 -1
- package/frontend/dist/js/{ui-BnDZpjfc.js → ui-CuY4IifA.js} +2 -2
- package/frontend/dist/js/ui-vendor-D3Ahl1x5.js +177 -0
- package/frontend/dist/js/uk-3o8P_kFi.js +2 -0
- package/frontend/dist/js/{useTranslation-CXY69qNk.js → useTranslation-C3ei3mJq.js} +1 -1
- package/frontend/dist/js/{utils-BM0_0iFj.js → utils-CuC1beTY.js} +1 -1
- package/frontend/dist/js/{utils-vendor-1zob7nK9.js → utils-vendor-BBa8OxtB.js} +1 -1
- package/frontend/dist/js/vi-Dv6N7OVD.js +2 -0
- package/frontend/dist/js/{workApi-BOS7crs9.js → workApi-DHuYNHLf.js} +2 -2
- package/frontend/dist/js/{yaml-QD4znPfZ.js → yaml-DioTxVLA.js} +1 -1
- package/frontend/dist/js/zh-qg5iqtPi.js +2 -0
- package/package.json +16 -5
- package/plugins/huggingface.json +12 -3
- package/plugins/llama-cpp.json +18 -6
- package/plugins/longcat-audiodit.json +114 -0
- package/plugins/openai.json +18 -0
- package/frontend/dist/assets/index-BBpNbfKW.js +0 -16
- package/frontend/dist/assets/index-BLATyFmD.css +0 -1
- package/frontend/dist/js/ChatPage-BBayfMLS.js +0 -16
- package/frontend/dist/js/GalleryPage-By8VI39Q.js +0 -1
- package/frontend/dist/js/ModelsPage-ODeXhDDk.js +0 -2
- package/frontend/dist/js/NotesPage-CApzDjOq.js +0 -1
- package/frontend/dist/js/PluginUsagePage-kutS6SOd.js +0 -1
- package/frontend/dist/js/RichMessageContent-g6WT75Te.js +0 -3
- package/frontend/dist/js/SettingsModal-B7z51BCx.js +0 -1
- package/frontend/dist/js/UserManagementPage-D08lM51c.js +0 -1
- package/frontend/dist/js/WorkPage-DdVLefsK.js +0 -6
- package/frontend/dist/js/api-CLEmGcEh.js +0 -14
- package/frontend/dist/js/appStore-CGdhvp9P.js +0 -2
- package/frontend/dist/js/ar-BTmB2WVm.js +0 -2
- package/frontend/dist/js/authStore-Dh3beEOq.js +0 -4
- package/frontend/dist/js/bn-CQnH7YVT.js +0 -2
- package/frontend/dist/js/chatStore-CDeYWL_q.js +0 -3
- package/frontend/dist/js/cs-oTTZkQXr.js +0 -2
- package/frontend/dist/js/da-Br0gB6J6.js +0 -2
- package/frontend/dist/js/de-DE2iztTF.js +0 -2
- package/frontend/dist/js/es-DgthfVtl.js +0 -2
- package/frontend/dist/js/fr-BjxjFwPh.js +0 -2
- package/frontend/dist/js/hi-D1q7E-9N.js +0 -2
- package/frontend/dist/js/id-CDJZqLTF.js +0 -2
- package/frontend/dist/js/is-BU7Um_Tq.js +0 -2
- package/frontend/dist/js/it-CdAxr8P_.js +0 -2
- package/frontend/dist/js/ja-BLbQwz9u.js +0 -2
- package/frontend/dist/js/ko-CY5lpkAe.js +0 -2
- package/frontend/dist/js/markdown-core-DHnR5Hw8.js +0 -16
- package/frontend/dist/js/ms-tQ8AYXEQ.js +0 -2
- package/frontend/dist/js/nl-CRNi2oWT.js +0 -2
- package/frontend/dist/js/pl-CWtFRS_W.js +0 -2
- package/frontend/dist/js/pt-C7SPoLF8.js +0 -2
- package/frontend/dist/js/ru-Dz4AX8xc.js +0 -2
- package/frontend/dist/js/sv-ETy5-boa.js +0 -2
- package/frontend/dist/js/th-DpuMqvxU.js +0 -2
- package/frontend/dist/js/tr-C-1AYAqg.js +0 -2
- package/frontend/dist/js/ui-vendor-xUzKqAXI.js +0 -177
- package/frontend/dist/js/uk-CyS680gr.js +0 -2
- package/frontend/dist/js/vi-BG8HuiTz.js +0 -2
- package/frontend/dist/js/zh-NCs2mkHj.js +0 -2
|
@@ -22,7 +22,9 @@ import { isWebSearchAvailable, userCanUseWebSearch, webSearch, } from './webSear
|
|
|
22
22
|
import { userModel } from '../models/userModel.js';
|
|
23
23
|
import workTaskService, { WORK_MESSAGE_METADATA_MAX_BYTES, WorkConflictError, WorkNotFoundError, } from './workTaskService.js';
|
|
24
24
|
import { createLogger } from '../utils/logger.js';
|
|
25
|
+
import { getDurableJobRuntime } from '../platform/jobs/durableJobRuntime.js';
|
|
25
26
|
import { boundedOpenAIResponsesOutputItems, OPENAI_RESPONSES_OUTPUT_ITEMS_METADATA_KEY, OPENAI_RESPONSES_STATE_DROPPED_METADATA_KEY, OPENAI_RESPONSES_STATE_SCOPE_METADATA_KEY, } from '../utils/openAIResponsesAdapter.js';
|
|
27
|
+
import { OWNER_DELETE_CONTENT_JOB_TYPE, WORK_EXECUTE_IDEMPOTENCY_SCOPE, } from '../platform/jobs/domainJobContracts.js';
|
|
26
28
|
const logger = createLogger('services:work-agent');
|
|
27
29
|
export const WORK_PROVIDER_STATE_METADATA_KEY = 'workProviderState';
|
|
28
30
|
export const WORK_EMPTY_MODEL_RESPONSE_METADATA_KEY = 'emptyModelResponse';
|
|
@@ -33,6 +35,7 @@ const WORK_EMPTY_ROUND_NUDGE_LIMIT = 2;
|
|
|
33
35
|
// Cross-run replay only needs the shape of past tool calls, not full
|
|
34
36
|
// write_file payloads; bound each persisted argument set.
|
|
35
37
|
const WORK_CHAT_TOOL_CALL_ARGUMENTS_MAX_BYTES = 4096;
|
|
38
|
+
const INTERRUPTED_TOOL_RESULT = 'Tool execution was interrupted; outcome unknown. Inspect the workspace before retrying.';
|
|
36
39
|
export const WORK_TOOL_SCHEMAS = [
|
|
37
40
|
functionTool('list_files', 'List direct children of a workspace directory.', {
|
|
38
41
|
path: stringProperty('Relative directory path. Defaults to workspace root.'),
|
|
@@ -79,10 +82,10 @@ export const WORK_WEB_SEARCH_TOOL_SCHEMA = functionTool('web_search', 'Search th
|
|
|
79
82
|
description: "Optional result count. Defaults to 5, capped by the server's configured limit.",
|
|
80
83
|
},
|
|
81
84
|
}, ['query']);
|
|
82
|
-
export function workToolSchemasForTask(task) {
|
|
85
|
+
export async function workToolSchemasForTask(task) {
|
|
83
86
|
return task.networkEnabled &&
|
|
84
|
-
isWebSearchAvailable() &&
|
|
85
|
-
userCanUseWebSearch(userModel.getUserById(task.userId))
|
|
87
|
+
(await isWebSearchAvailable()) &&
|
|
88
|
+
(await userCanUseWebSearch(await userModel.getUserById(task.userId)))
|
|
86
89
|
? [...WORK_TOOL_SCHEMAS, WORK_WEB_SEARCH_TOOL_SCHEMA]
|
|
87
90
|
: WORK_TOOL_SCHEMAS;
|
|
88
91
|
}
|
|
@@ -105,8 +108,99 @@ export class WorkAgentService {
|
|
|
105
108
|
this.executions.set(runId, execution);
|
|
106
109
|
});
|
|
107
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Durable worker entrypoint. An interrupted active run is moved back to the
|
|
113
|
+
* queue while its persisted provider/tool transcript is retained. Missing
|
|
114
|
+
* tool results are restored as "outcome unknown", so the exact external
|
|
115
|
+
* call is not blindly replayed after a worker crash.
|
|
116
|
+
*/
|
|
117
|
+
async executeDurable(taskId, runId, userId) {
|
|
118
|
+
const task = await workTaskService.requireTaskRecord(taskId, userId);
|
|
119
|
+
const run = await workTaskService.getRun(runId);
|
|
120
|
+
if (!run || run.taskId !== taskId) {
|
|
121
|
+
throw new WorkNotFoundError('Work run not found.');
|
|
122
|
+
}
|
|
123
|
+
if (!isActiveRunStatus(run.status))
|
|
124
|
+
return;
|
|
125
|
+
if (run.status !== 'queued') {
|
|
126
|
+
// A worker can disappear while its sandbox continues running. Fence all
|
|
127
|
+
// other lifecycle operations, stop that unknown execution, and only then
|
|
128
|
+
// reconcile the durable transcript. Replaying against the old container
|
|
129
|
+
// would allow both workers to mutate one workspace concurrently.
|
|
130
|
+
workRuntimeService.beginTaskSuspension(taskId);
|
|
131
|
+
try {
|
|
132
|
+
await workRuntimeService.interruptContainer(task);
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
workRuntimeService.releaseTaskSuspension(taskId);
|
|
136
|
+
}
|
|
137
|
+
await this.reconcileInterruptedToolCalls(taskId, runId);
|
|
138
|
+
await workTaskService.updateRun(runId, 'queued');
|
|
139
|
+
// Tasks deliberately have no queued state: idle means durable work is
|
|
140
|
+
// admitted but no container/provider side effect has started yet.
|
|
141
|
+
await workTaskService.updateTaskStatus(taskId, 'idle');
|
|
142
|
+
}
|
|
143
|
+
await this.execute(taskId, runId, userId);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Materialize every tool intent whose worker disappeared before its result
|
|
147
|
+
* commit. This must run while the caller owns the durable job lease. The
|
|
148
|
+
* persisted result is both user-visible and part of the next model request;
|
|
149
|
+
* checking the transcript first makes a crash after the insert safe to
|
|
150
|
+
* reclaim without duplicating the result.
|
|
151
|
+
*/
|
|
152
|
+
async reconcileInterruptedToolCalls(taskId, runId) {
|
|
153
|
+
const messages = await workTaskService.getMessages(taskId);
|
|
154
|
+
const settled = new Set(messages
|
|
155
|
+
.filter(message => message.runId === runId &&
|
|
156
|
+
message.role === 'tool' &&
|
|
157
|
+
message.kind === 'tool_result')
|
|
158
|
+
.map(message => message.metadata?.toolCallId)
|
|
159
|
+
.filter((value) => Boolean(typeof value === 'string' && value)));
|
|
160
|
+
const pending = new Map();
|
|
161
|
+
for (const message of messages) {
|
|
162
|
+
if (message.runId !== runId || message.kind !== 'tool_call')
|
|
163
|
+
continue;
|
|
164
|
+
const toolCallId = message.metadata?.toolCallId;
|
|
165
|
+
const name = message.metadata?.name;
|
|
166
|
+
if (typeof toolCallId !== 'string' ||
|
|
167
|
+
!toolCallId ||
|
|
168
|
+
typeof name !== 'string' ||
|
|
169
|
+
!name ||
|
|
170
|
+
settled.has(toolCallId)) {
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
pending.set(toolCallId, { name, message });
|
|
174
|
+
}
|
|
175
|
+
let reconciled = 0;
|
|
176
|
+
for (const [toolCallId, { name }] of pending) {
|
|
177
|
+
if (settled.has(toolCallId))
|
|
178
|
+
continue;
|
|
179
|
+
const metadata = {
|
|
180
|
+
name,
|
|
181
|
+
toolName: name,
|
|
182
|
+
toolCallId,
|
|
183
|
+
error: true,
|
|
184
|
+
outcomeUnknown: true,
|
|
185
|
+
interrupted: true,
|
|
186
|
+
};
|
|
187
|
+
const result = await workTaskService.addMessage(taskId, runId, 'tool', 'tool_result', INTERRUPTED_TOOL_RESULT, metadata);
|
|
188
|
+
settled.add(toolCallId);
|
|
189
|
+
reconciled += 1;
|
|
190
|
+
await workEventService.publish(taskId, runId, 'tool_result', {
|
|
191
|
+
toolCallId,
|
|
192
|
+
name,
|
|
193
|
+
phase: 'failed',
|
|
194
|
+
content: INTERRUPTED_TOOL_RESULT,
|
|
195
|
+
error: true,
|
|
196
|
+
outcomeUnknown: true,
|
|
197
|
+
message: result,
|
|
198
|
+
}, `message:${result.id}`);
|
|
199
|
+
}
|
|
200
|
+
return reconciled;
|
|
201
|
+
}
|
|
108
202
|
async cancel(taskId, userId) {
|
|
109
|
-
const task = workTaskService.requireMutableTaskRecord(taskId, userId);
|
|
203
|
+
const task = await workTaskService.requireMutableTaskRecord(taskId, userId);
|
|
110
204
|
return this.cancelTask(task, userId);
|
|
111
205
|
}
|
|
112
206
|
async removeTask(taskId, userId) {
|
|
@@ -114,43 +208,112 @@ export class WorkAgentService {
|
|
|
114
208
|
}
|
|
115
209
|
async cancelTask(task, userId) {
|
|
116
210
|
const taskId = task.id;
|
|
117
|
-
const run = workTaskService.getActiveRun(taskId);
|
|
211
|
+
const run = await workTaskService.getActiveRun(taskId);
|
|
118
212
|
if (!run) {
|
|
119
213
|
throw new WorkConflictError('This Work task has no active run.');
|
|
120
214
|
}
|
|
121
215
|
this.controllers.get(run.id)?.abort();
|
|
122
216
|
await workRuntimeService.stopContainer(task);
|
|
123
217
|
await this.executions.get(run.id);
|
|
124
|
-
if (isActiveRunStatus(workTaskService.getRun(run.id)?.status)) {
|
|
125
|
-
workTaskService.updateRun(run.id, 'cancelled', {
|
|
218
|
+
if (isActiveRunStatus((await workTaskService.getRun(run.id))?.status)) {
|
|
219
|
+
await workTaskService.updateRun(run.id, 'cancelled', {
|
|
126
220
|
error: 'Cancelled by user.',
|
|
127
221
|
finished: true,
|
|
128
222
|
});
|
|
129
|
-
workTaskService.updateTaskStatus(taskId, 'cancelled');
|
|
130
|
-
workTaskService.updatePreview(taskId, 'stopped');
|
|
131
|
-
workEventService.publish(taskId, run.id, 'done', {
|
|
223
|
+
await workTaskService.updateTaskStatus(taskId, 'cancelled');
|
|
224
|
+
await workTaskService.updatePreview(taskId, 'stopped');
|
|
225
|
+
await workEventService.publish(taskId, run.id, 'done', {
|
|
132
226
|
status: 'cancelled',
|
|
133
227
|
error: 'Cancelled by user.',
|
|
134
|
-
});
|
|
228
|
+
}, 'terminal:cancelled');
|
|
135
229
|
}
|
|
136
230
|
return workTaskService.requireTaskDetail(taskId, userId);
|
|
137
231
|
}
|
|
138
232
|
async removeTasksForUser(userId) {
|
|
139
|
-
workTaskService.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
233
|
+
await workTaskService.withUserLifecycleLease(userId, async (assertHeld) => {
|
|
234
|
+
workTaskService.beginUserRetirement(userId);
|
|
235
|
+
try {
|
|
236
|
+
await this.removeTasksWithRetirementHeld(userId, assertHeld);
|
|
237
|
+
}
|
|
238
|
+
finally {
|
|
239
|
+
workTaskService.releaseUserRetirement(userId);
|
|
144
240
|
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Persist a cross-replica account fence before deleting external state.
|
|
245
|
+
* A failed drain deliberately leaves the account `retiring`, so a retry can
|
|
246
|
+
* continue while authentication and all new Work admission stay denied.
|
|
247
|
+
*/
|
|
248
|
+
async retireAndDeleteUser(userId, actorUserId) {
|
|
249
|
+
return workTaskService.withUserLifecycleLease(userId, async (assertHeld) => {
|
|
250
|
+
workTaskService.beginUserRetirement(userId);
|
|
251
|
+
try {
|
|
252
|
+
await assertHeld();
|
|
253
|
+
if (!(await userModel.beginUserRetirement(userId)))
|
|
254
|
+
return false;
|
|
255
|
+
await this.drainDurableJobsForUser(userId);
|
|
256
|
+
await this.removeTasksWithRetirementHeld(userId, assertHeld);
|
|
257
|
+
// Catch a request admitted before retirement that committed its job
|
|
258
|
+
// after the first zero observation. Retiring actors cannot be claimed,
|
|
259
|
+
// and this pass terminalizes any such late queue entry.
|
|
260
|
+
await this.drainDurableJobsForUser(userId);
|
|
261
|
+
await assertHeld();
|
|
262
|
+
return userModel.deleteUserAndEnqueueCleanup(userId, actorUserId);
|
|
263
|
+
}
|
|
264
|
+
finally {
|
|
265
|
+
workTaskService.releaseUserRetirement(userId);
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
async removeTasksWithRetirementHeld(userId, assertHeld = async () => undefined) {
|
|
270
|
+
const tasks = await workTaskService.listTaskRecords(userId);
|
|
271
|
+
for (const task of tasks) {
|
|
272
|
+
await assertHeld();
|
|
273
|
+
await this.removeTaskInternal(task.id, userId, true);
|
|
145
274
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
275
|
+
}
|
|
276
|
+
async drainDurableJobsForUser(userId) {
|
|
277
|
+
const service = getDurableJobRuntime().service;
|
|
278
|
+
const deadline = Date.now() + 60000;
|
|
279
|
+
while (true) {
|
|
280
|
+
// Cleanup jobs initiated by this actor protect other already-deleted
|
|
281
|
+
// owners. They retain audit attribution to the actor and must reach
|
|
282
|
+
// success before this identity can disappear; cancelling them strands
|
|
283
|
+
// the other owner's vectors/blobs forever.
|
|
284
|
+
await service.cancelAllForActor(userId, 'actor-revoked', {
|
|
285
|
+
excludeJobTypes: [OWNER_DELETE_CONTENT_JOB_TYPE],
|
|
286
|
+
});
|
|
287
|
+
const ordinaryActive = await service.countActiveForActor(userId, {
|
|
288
|
+
excludeJobTypes: [OWNER_DELETE_CONTENT_JOB_TYPE],
|
|
289
|
+
});
|
|
290
|
+
const cleanupActive = await service.countActiveForActor(userId, {
|
|
291
|
+
jobTypes: [OWNER_DELETE_CONTENT_JOB_TYPE],
|
|
292
|
+
});
|
|
293
|
+
const cleanupNotSucceeded = await service.countNonSucceededForActor(userId, {
|
|
294
|
+
jobTypes: [OWNER_DELETE_CONTENT_JOB_TYPE],
|
|
295
|
+
excludeHandledLifecycleJobs: true,
|
|
296
|
+
});
|
|
297
|
+
if (ordinaryActive === 0 &&
|
|
298
|
+
cleanupActive === 0 &&
|
|
299
|
+
cleanupNotSucceeded === 0) {
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
if (cleanupActive === 0 && cleanupNotSucceeded > 0) {
|
|
303
|
+
throw new WorkConflictError('This account remains retired because an initiated owner cleanup did not succeed.');
|
|
304
|
+
}
|
|
305
|
+
if (Date.now() >= deadline) {
|
|
306
|
+
throw new WorkConflictError('This account remains retired while its jobs and initiated owner cleanups finish draining.');
|
|
307
|
+
}
|
|
308
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
149
309
|
}
|
|
150
310
|
}
|
|
151
311
|
async revokeWorkAccessForUser(userId, revoke) {
|
|
312
|
+
return workTaskService.withUserLifecycleLease(userId, assertHeld => this.revokeWorkAccessWithLeaseHeld(userId, revoke, assertHeld));
|
|
313
|
+
}
|
|
314
|
+
async revokeWorkAccessWithLeaseHeld(userId, revoke, assertHeld) {
|
|
152
315
|
workTaskService.beginUserRetirement(userId);
|
|
153
|
-
const tasks = workTaskService.listTaskRecords(userId);
|
|
316
|
+
const tasks = await workTaskService.listTaskRecords(userId);
|
|
154
317
|
const suspendedTaskIds = [];
|
|
155
318
|
try {
|
|
156
319
|
for (const task of tasks) {
|
|
@@ -160,8 +323,9 @@ export class WorkAgentService {
|
|
|
160
323
|
// Persist revocation before depending on Docker cleanup. Even when a
|
|
161
324
|
// daemon outage prevents teardown, current-role authorization denies
|
|
162
325
|
// every subsequent Work request and a retry/restart can finish cleanup.
|
|
326
|
+
await assertHeld();
|
|
163
327
|
const result = await revoke();
|
|
164
|
-
const activeRuns = new Map(tasks.map(task => [task.id, workTaskService.getActiveRun(task.id)]));
|
|
328
|
+
const activeRuns = new Map(await Promise.all(tasks.map(async (task) => [task.id, await workTaskService.getActiveRun(task.id)])));
|
|
165
329
|
for (const run of activeRuns.values()) {
|
|
166
330
|
if (run)
|
|
167
331
|
this.controllers.get(run.id)?.abort();
|
|
@@ -179,18 +343,18 @@ export class WorkAgentService {
|
|
|
179
343
|
}
|
|
180
344
|
await workRuntimeService.stopContainer(task);
|
|
181
345
|
if (run &&
|
|
182
|
-
isActiveRunStatus(workTaskService.getRun(run.id)?.status)) {
|
|
183
|
-
workTaskService.updateRun(run.id, 'cancelled', {
|
|
346
|
+
isActiveRunStatus((await workTaskService.getRun(run.id))?.status)) {
|
|
347
|
+
await workTaskService.updateRun(run.id, 'cancelled', {
|
|
184
348
|
error: 'Administrator access was revoked.',
|
|
185
349
|
finished: true,
|
|
186
350
|
});
|
|
187
|
-
workTaskService.updateTaskStatus(task.id, 'cancelled');
|
|
188
|
-
workEventService.publish(task.id, run.id, 'done', {
|
|
351
|
+
await workTaskService.updateTaskStatus(task.id, 'cancelled');
|
|
352
|
+
await workEventService.publish(task.id, run.id, 'done', {
|
|
189
353
|
status: 'cancelled',
|
|
190
354
|
error: 'Administrator access was revoked.',
|
|
191
|
-
});
|
|
355
|
+
}, 'terminal:cancelled');
|
|
192
356
|
}
|
|
193
|
-
workTaskService.updatePreview(task.id, 'stopped');
|
|
357
|
+
await workTaskService.updatePreview(task.id, 'stopped');
|
|
194
358
|
if (run)
|
|
195
359
|
await this.executions.get(run.id);
|
|
196
360
|
}));
|
|
@@ -211,14 +375,14 @@ export class WorkAgentService {
|
|
|
211
375
|
workTaskService.releaseUserRetirement(userId);
|
|
212
376
|
}
|
|
213
377
|
async removeTaskInternal(taskId, userId, allowRetiringUser) {
|
|
214
|
-
const task = workTaskService.beginTaskRetirement(taskId, userId, allowRetiringUser);
|
|
378
|
+
const task = await workTaskService.beginTaskRetirement(taskId, userId, allowRetiringUser);
|
|
215
379
|
try {
|
|
216
|
-
if (workTaskService.getActiveRun(taskId)) {
|
|
380
|
+
if (await workTaskService.getActiveRun(taskId)) {
|
|
217
381
|
await this.cancelTask(task, userId);
|
|
218
382
|
}
|
|
219
383
|
await workRuntimeService.removeTask(task, allowRetiringUser);
|
|
220
384
|
try {
|
|
221
|
-
workTaskService.deleteTask(taskId, userId);
|
|
385
|
+
await workTaskService.deleteTask(taskId, userId);
|
|
222
386
|
}
|
|
223
387
|
finally {
|
|
224
388
|
workRuntimeService.finalizeTaskRemoval(taskId);
|
|
@@ -235,7 +399,7 @@ export class WorkAgentService {
|
|
|
235
399
|
for (const controller of this.controllers.values()) {
|
|
236
400
|
controller.abort();
|
|
237
401
|
}
|
|
238
|
-
const tasks = workTaskService.listAllTaskRecords();
|
|
402
|
+
const tasks = await workTaskService.listAllTaskRecords();
|
|
239
403
|
const results = await Promise.allSettled(tasks.map(task => workRuntimeService.stopContainer(task)));
|
|
240
404
|
await Promise.allSettled(this.executions.values());
|
|
241
405
|
return {
|
|
@@ -245,6 +409,7 @@ export class WorkAgentService {
|
|
|
245
409
|
}
|
|
246
410
|
async execute(taskId, runId, userId) {
|
|
247
411
|
const controller = new AbortController();
|
|
412
|
+
const durableAttemptIdentity = String((await getDurableJobRuntime().service.getByIdempotency(userId, WORK_EXECUTE_IDEMPOTENCY_SCOPE, runId))?.attemptCount ?? 0);
|
|
248
413
|
this.controllers.set(runId, controller);
|
|
249
414
|
let task;
|
|
250
415
|
let releaseExecutionLease;
|
|
@@ -256,8 +421,8 @@ export class WorkAgentService {
|
|
|
256
421
|
executionContainerSettled = true;
|
|
257
422
|
};
|
|
258
423
|
try {
|
|
259
|
-
task = workTaskService.requireTaskRecord(taskId, userId);
|
|
260
|
-
const run = workTaskService.getRun(runId);
|
|
424
|
+
task = await workTaskService.requireTaskRecord(taskId, userId);
|
|
425
|
+
const run = await workTaskService.getRun(runId);
|
|
261
426
|
if (!run || run.taskId !== taskId) {
|
|
262
427
|
throw new WorkNotFoundError('Work run not found.');
|
|
263
428
|
}
|
|
@@ -266,32 +431,32 @@ export class WorkAgentService {
|
|
|
266
431
|
if (run.status !== 'queued') {
|
|
267
432
|
return;
|
|
268
433
|
}
|
|
269
|
-
workTaskService.updateRun(runId, 'preparing', { started: true });
|
|
270
|
-
workTaskService.updateTaskStatus(taskId, 'preparing');
|
|
271
|
-
workEventService.publish(taskId, runId, 'run_state', {
|
|
434
|
+
await workTaskService.updateRun(runId, 'preparing', { started: true });
|
|
435
|
+
await workTaskService.updateTaskStatus(taskId, 'preparing');
|
|
436
|
+
await workEventService.publish(taskId, runId, 'run_state', {
|
|
272
437
|
status: 'preparing',
|
|
273
438
|
phase: 'preparing',
|
|
274
|
-
});
|
|
439
|
+
}, 'transition:preparing', durableAttemptIdentity);
|
|
275
440
|
for (const skill of WORK_AGENT_SKILLS) {
|
|
276
|
-
workEventService.publish(taskId, runId, 'skill_loaded', {
|
|
441
|
+
await workEventService.publish(taskId, runId, 'skill_loaded', {
|
|
277
442
|
id: skill.id,
|
|
278
443
|
name: skill.title,
|
|
279
444
|
description: skill.instructions[0],
|
|
280
|
-
});
|
|
445
|
+
}, `skill:${skill.id}`, durableAttemptIdentity);
|
|
281
446
|
}
|
|
282
447
|
releaseExecutionLease = await workRuntimeService.prepare(task, controller.signal);
|
|
283
|
-
this.throwIfCancelled(runId, controller);
|
|
284
|
-
workTaskService.updateRun(runId, 'running', { started: true });
|
|
285
|
-
workTaskService.updateTaskStatus(taskId, 'running');
|
|
448
|
+
await this.throwIfCancelled(runId, controller);
|
|
449
|
+
await workTaskService.updateRun(runId, 'running', { started: true });
|
|
450
|
+
await workTaskService.updateTaskStatus(taskId, 'running');
|
|
286
451
|
const roundLimit = workRuntimeService.limits.maxRounds;
|
|
287
452
|
const toolCallLimit = workToolCallBudget(roundLimit);
|
|
288
453
|
const providerSelection = {
|
|
289
454
|
providerType: run.providerType,
|
|
290
455
|
providerId: run.providerId,
|
|
291
456
|
};
|
|
292
|
-
const providerRoutingFingerprint = workModelProviderService.getRoutingFingerprint(run.model, providerSelection, userId);
|
|
293
|
-
const providerStateScope = workModelProviderService.getResponsesStateScope(run.model, providerSelection, userId);
|
|
294
|
-
const messages = this.contextMessages(task, roundLimit, providerStateScope, run);
|
|
457
|
+
const providerRoutingFingerprint = await workModelProviderService.getRoutingFingerprint(run.model, providerSelection, userId);
|
|
458
|
+
const providerStateScope = await workModelProviderService.getResponsesStateScope(run.model, providerSelection, userId);
|
|
459
|
+
const messages = await this.contextMessages(task, roundLimit, providerStateScope, run);
|
|
295
460
|
let totalToolCalls = 0;
|
|
296
461
|
let accumulatedInputTokens = 0;
|
|
297
462
|
let accumulatedOutputTokens = 0;
|
|
@@ -300,25 +465,25 @@ export class WorkAgentService {
|
|
|
300
465
|
let budgetReason = 'round';
|
|
301
466
|
let emptyRoundNudges = 0;
|
|
302
467
|
roundLoop: for (let round = 0; round < roundLimit; round++) {
|
|
303
|
-
this.throwIfCancelled(runId, controller);
|
|
304
|
-
workEventService.publish(taskId, runId, 'run_state', {
|
|
468
|
+
await this.throwIfCancelled(runId, controller);
|
|
469
|
+
await workEventService.publish(taskId, runId, 'run_state', {
|
|
305
470
|
status: 'running',
|
|
306
471
|
phase: 'thinking',
|
|
307
472
|
round: round + 1,
|
|
308
473
|
roundLimit,
|
|
309
|
-
});
|
|
310
|
-
const contentStream = new WorkDeltaPublisher(taskId, runId, 'assistant_delta', streamedAssistantTotal);
|
|
311
|
-
const reasoningStream = new WorkDeltaPublisher(taskId, runId, 'reasoning_delta', streamedReasoningTotal);
|
|
474
|
+
}, `round:${round + 1}:thinking`, durableAttemptIdentity);
|
|
475
|
+
const contentStream = new WorkDeltaPublisher(taskId, runId, 'assistant_delta', streamedAssistantTotal, `round:${round + 1}`, durableAttemptIdentity);
|
|
476
|
+
const reasoningStream = new WorkDeltaPublisher(taskId, runId, 'reasoning_delta', streamedReasoningTotal, `round:${round + 1}`, durableAttemptIdentity);
|
|
312
477
|
let roundInputTokens = 0;
|
|
313
478
|
let roundOutputTokens = 0;
|
|
314
479
|
const roundStartedAt = Date.now();
|
|
315
480
|
let response;
|
|
316
481
|
try {
|
|
317
|
-
this.assertStableProviderRouting(run, userId, providerRoutingFingerprint);
|
|
482
|
+
await this.assertStableProviderRouting(run, userId, providerRoutingFingerprint);
|
|
318
483
|
response = await workModelProviderService.generateChatStreamResponse({
|
|
319
484
|
model: run.model,
|
|
320
485
|
messages,
|
|
321
|
-
tools: workToolSchemasForTask(task),
|
|
486
|
+
tools: await workToolSchemasForTask(task),
|
|
322
487
|
stream: true,
|
|
323
488
|
}, providerSelection, userId, {
|
|
324
489
|
onContent: delta => contentStream.push(delta),
|
|
@@ -326,7 +491,7 @@ export class WorkAgentService {
|
|
|
326
491
|
onUsage: usage => {
|
|
327
492
|
roundInputTokens = usage.promptTokens ?? roundInputTokens;
|
|
328
493
|
roundOutputTokens = usage.completionTokens ?? roundOutputTokens;
|
|
329
|
-
workEventService.publish(taskId, runId, 'usage', {
|
|
494
|
+
void workEventService.publish(taskId, runId, 'usage', {
|
|
330
495
|
inputTokens: accumulatedInputTokens + roundInputTokens,
|
|
331
496
|
outputTokens: accumulatedOutputTokens + roundOutputTokens,
|
|
332
497
|
totalTokens: accumulatedInputTokens +
|
|
@@ -344,7 +509,7 @@ export class WorkAgentService {
|
|
|
344
509
|
streamedAssistantTotal = contentStream.currentTotal;
|
|
345
510
|
streamedReasoningTotal = reasoningStream.currentTotal;
|
|
346
511
|
}
|
|
347
|
-
this.throwIfCancelled(runId, controller);
|
|
512
|
+
await this.throwIfCancelled(runId, controller);
|
|
348
513
|
assertCompleteProviderResponse(response);
|
|
349
514
|
accumulatedInputTokens += roundInputTokens;
|
|
350
515
|
accumulatedOutputTokens += roundOutputTokens;
|
|
@@ -377,7 +542,7 @@ export class WorkAgentService {
|
|
|
377
542
|
const assistantContent = boundUtf8(response.message?.content?.trim() || '', 100000);
|
|
378
543
|
const reasoningContent = boundUtf8(response.message?.thinking?.trim() || '', 100000);
|
|
379
544
|
if (reasoningContent) {
|
|
380
|
-
workTaskService.addMessage(taskId, runId, 'assistant', 'reasoning', reasoningContent, { providerExposed: true, round: round + 1 });
|
|
545
|
+
await workTaskService.addMessage(taskId, runId, 'assistant', 'reasoning', reasoningContent, { providerExposed: true, round: round + 1 });
|
|
381
546
|
}
|
|
382
547
|
if (toolCalls.length === 0) {
|
|
383
548
|
if (!assistantContent &&
|
|
@@ -394,7 +559,7 @@ export class WorkAgentService {
|
|
|
394
559
|
});
|
|
395
560
|
}
|
|
396
561
|
if (providerStateMetadata) {
|
|
397
|
-
workTaskService.addMessage(taskId, runId, 'assistant', 'provider_state', '', providerStateMetadata);
|
|
562
|
+
await workTaskService.addMessage(taskId, runId, 'assistant', 'provider_state', '', providerStateMetadata);
|
|
398
563
|
}
|
|
399
564
|
messages.push({
|
|
400
565
|
role: 'user',
|
|
@@ -404,7 +569,7 @@ export class WorkAgentService {
|
|
|
404
569
|
}
|
|
405
570
|
const finalContent = assistantContent ||
|
|
406
571
|
'The model completed without returning a text response.';
|
|
407
|
-
workTaskService.addMessage(taskId, runId, 'assistant', 'message', finalContent, assistantContent
|
|
572
|
+
await workTaskService.addMessage(taskId, runId, 'assistant', 'message', finalContent, assistantContent
|
|
408
573
|
? providerStateMetadata
|
|
409
574
|
: {
|
|
410
575
|
// The placeholder tells the user what happened, but it is
|
|
@@ -417,15 +582,17 @@ export class WorkAgentService {
|
|
|
417
582
|
// stopped or been retained for a verified live preview. Consumers
|
|
418
583
|
// can then refresh files immediately without racing teardown.
|
|
419
584
|
await settleExecutionContainer();
|
|
420
|
-
this.throwIfCancelled(runId, controller);
|
|
421
|
-
if (!isActiveRunStatus(workTaskService.getRun(runId)?.status)) {
|
|
585
|
+
await this.throwIfCancelled(runId, controller);
|
|
586
|
+
if (!isActiveRunStatus((await workTaskService.getRun(runId))?.status)) {
|
|
422
587
|
return;
|
|
423
588
|
}
|
|
424
|
-
workTaskService.updateRun(runId, 'completed', {
|
|
425
|
-
|
|
426
|
-
workEventService.publish(taskId, runId, 'done', {
|
|
427
|
-
status: 'completed',
|
|
589
|
+
await workTaskService.updateRun(runId, 'completed', {
|
|
590
|
+
finished: true,
|
|
428
591
|
});
|
|
592
|
+
await workTaskService.updateTaskStatus(taskId, 'completed');
|
|
593
|
+
await workEventService.publish(taskId, runId, 'done', {
|
|
594
|
+
status: 'completed',
|
|
595
|
+
}, 'terminal:completed');
|
|
429
596
|
return;
|
|
430
597
|
}
|
|
431
598
|
const toolValidationErrors = new Map();
|
|
@@ -448,29 +615,29 @@ export class WorkAgentService {
|
|
|
448
615
|
// restored context keeps the tool history instead of dropping it.
|
|
449
616
|
const persistedAssistantMetadata = providerStateMetadata ?? toPersistedWorkChatToolCalls(run, toolCalls);
|
|
450
617
|
if (assistantContent) {
|
|
451
|
-
workTaskService.addMessage(taskId, runId, 'assistant', 'message', assistantContent, persistedAssistantMetadata);
|
|
618
|
+
await workTaskService.addMessage(taskId, runId, 'assistant', 'message', assistantContent, persistedAssistantMetadata);
|
|
452
619
|
}
|
|
453
620
|
else if (persistedAssistantMetadata) {
|
|
454
|
-
workTaskService.addMessage(taskId, runId, 'assistant', 'provider_state', '', persistedAssistantMetadata);
|
|
621
|
+
await workTaskService.addMessage(taskId, runId, 'assistant', 'provider_state', '', persistedAssistantMetadata);
|
|
455
622
|
}
|
|
456
623
|
for (const call of toolCalls) {
|
|
457
|
-
this.throwIfCancelled(runId, controller);
|
|
624
|
+
await this.throwIfCancelled(runId, controller);
|
|
458
625
|
const toolCallMetadata = summarizeToolCall(call);
|
|
459
|
-
const toolCallMessage = workTaskService.addMessage(taskId, runId, 'assistant', 'tool_call', `Calling ${call.function.name}`, toolCallMetadata);
|
|
460
|
-
workEventService.publish(taskId, runId, 'run_state', {
|
|
626
|
+
const toolCallMessage = await workTaskService.addMessage(taskId, runId, 'assistant', 'tool_call', `Calling ${call.function.name}`, toolCallMetadata);
|
|
627
|
+
await workEventService.publish(taskId, runId, 'run_state', {
|
|
461
628
|
status: 'running',
|
|
462
629
|
phase: 'using_tool',
|
|
463
630
|
round: round + 1,
|
|
464
631
|
roundLimit,
|
|
465
|
-
});
|
|
466
|
-
workEventService.publish(taskId, runId, 'tool_call', {
|
|
632
|
+
}, `tool:${call.id}:state`, durableAttemptIdentity);
|
|
633
|
+
await workEventService.publish(taskId, runId, 'tool_call', {
|
|
467
634
|
toolCallId: call.id,
|
|
468
635
|
name: call.function.name,
|
|
469
636
|
arguments: toolCallMetadata,
|
|
470
637
|
metadata: toolCallMetadata,
|
|
471
638
|
phase: 'running',
|
|
472
639
|
message: toolCallMessage,
|
|
473
|
-
});
|
|
640
|
+
}, `message:${toolCallMessage.id}`);
|
|
474
641
|
let toolOutput;
|
|
475
642
|
let toolMetadata = {
|
|
476
643
|
name: call.function.name,
|
|
@@ -501,15 +668,15 @@ export class WorkAgentService {
|
|
|
501
668
|
toolMetadata.outputTruncated = true;
|
|
502
669
|
toolOutput = boundedOutput;
|
|
503
670
|
}
|
|
504
|
-
const toolResultMessage = workTaskService.addMessage(taskId, runId, 'tool', 'tool_result', toolOutput, toolMetadata);
|
|
505
|
-
workEventService.publish(taskId, runId, 'tool_result', {
|
|
671
|
+
const toolResultMessage = await workTaskService.addMessage(taskId, runId, 'tool', 'tool_result', toolOutput, toolMetadata);
|
|
672
|
+
await workEventService.publish(taskId, runId, 'tool_result', {
|
|
506
673
|
toolCallId: call.id,
|
|
507
674
|
name: call.function.name,
|
|
508
675
|
phase: toolMetadata.error ? 'failed' : 'completed',
|
|
509
676
|
content: toolOutput,
|
|
510
677
|
error: toolMetadata.error === true,
|
|
511
678
|
message: toolResultMessage,
|
|
512
|
-
});
|
|
679
|
+
}, `message:${toolResultMessage.id}`);
|
|
513
680
|
messages.push({
|
|
514
681
|
role: 'tool',
|
|
515
682
|
content: toolOutput,
|
|
@@ -518,22 +685,22 @@ export class WorkAgentService {
|
|
|
518
685
|
});
|
|
519
686
|
}
|
|
520
687
|
}
|
|
521
|
-
this.throwIfCancelled(runId, controller);
|
|
522
|
-
workEventService.publish(taskId, runId, 'run_state', {
|
|
688
|
+
await this.throwIfCancelled(runId, controller);
|
|
689
|
+
await workEventService.publish(taskId, runId, 'run_state', {
|
|
523
690
|
status: 'running',
|
|
524
691
|
phase: 'responding',
|
|
525
692
|
round: roundLimit,
|
|
526
693
|
roundLimit,
|
|
527
|
-
});
|
|
528
|
-
const handoffContentStream = new WorkDeltaPublisher(taskId, runId, 'assistant_delta', streamedAssistantTotal);
|
|
529
|
-
const handoffReasoningStream = new WorkDeltaPublisher(taskId, runId, 'reasoning_delta', streamedReasoningTotal);
|
|
694
|
+
}, 'handoff:responding', durableAttemptIdentity);
|
|
695
|
+
const handoffContentStream = new WorkDeltaPublisher(taskId, runId, 'assistant_delta', streamedAssistantTotal, 'handoff', durableAttemptIdentity);
|
|
696
|
+
const handoffReasoningStream = new WorkDeltaPublisher(taskId, runId, 'reasoning_delta', streamedReasoningTotal, 'handoff', durableAttemptIdentity);
|
|
530
697
|
let handoffInputTokens = 0;
|
|
531
698
|
let handoffOutputTokens = 0;
|
|
532
699
|
const handoffStartedAt = Date.now();
|
|
533
700
|
let handoffResponse;
|
|
534
701
|
try {
|
|
535
702
|
try {
|
|
536
|
-
this.assertStableProviderRouting(run, userId, providerRoutingFingerprint);
|
|
703
|
+
await this.assertStableProviderRouting(run, userId, providerRoutingFingerprint);
|
|
537
704
|
handoffResponse =
|
|
538
705
|
await workModelProviderService.generateChatStreamResponse({
|
|
539
706
|
model: run.model,
|
|
@@ -556,7 +723,7 @@ export class WorkAgentService {
|
|
|
556
723
|
handoffInputTokens = usage.promptTokens ?? handoffInputTokens;
|
|
557
724
|
handoffOutputTokens =
|
|
558
725
|
usage.completionTokens ?? handoffOutputTokens;
|
|
559
|
-
workEventService.publish(taskId, runId, 'usage', {
|
|
726
|
+
void workEventService.publish(taskId, runId, 'usage', {
|
|
560
727
|
inputTokens: accumulatedInputTokens + handoffInputTokens,
|
|
561
728
|
outputTokens: accumulatedOutputTokens + handoffOutputTokens,
|
|
562
729
|
totalTokens: accumulatedInputTokens +
|
|
@@ -589,48 +756,48 @@ export class WorkAgentService {
|
|
|
589
756
|
handoffContentStream.flush();
|
|
590
757
|
handoffReasoningStream.flush();
|
|
591
758
|
}
|
|
592
|
-
this.throwIfCancelled(runId, controller);
|
|
759
|
+
await this.throwIfCancelled(runId, controller);
|
|
593
760
|
const handoffReasoning = boundUtf8(handoffResponse.message?.thinking?.trim() || '', 100000);
|
|
594
761
|
if (handoffReasoning) {
|
|
595
|
-
workTaskService.addMessage(taskId, runId, 'assistant', 'reasoning', handoffReasoning, { providerExposed: true, budgetHandoff: true });
|
|
762
|
+
await workTaskService.addMessage(taskId, runId, 'assistant', 'reasoning', handoffReasoning, { providerExposed: true, budgetHandoff: true });
|
|
596
763
|
}
|
|
597
764
|
const handoffContent = boundUtf8(handoffResponse.message?.content?.trim() ||
|
|
598
765
|
`The run reached its ${budgetReason} budget. Start a follow-up run to continue in the same workspace.`, 100000);
|
|
599
766
|
const handoffProviderStateMetadata = toPersistedWorkProviderState(run, handoffResponse.message.providerMetadata);
|
|
600
|
-
workTaskService.addMessage(taskId, runId, 'assistant', 'message', handoffContent, {
|
|
767
|
+
await workTaskService.addMessage(taskId, runId, 'assistant', 'message', handoffContent, {
|
|
601
768
|
budgetHandoff: true,
|
|
602
769
|
budgetReason,
|
|
603
770
|
...handoffProviderStateMetadata,
|
|
604
771
|
});
|
|
605
772
|
await settleExecutionContainer();
|
|
606
|
-
this.throwIfCancelled(runId, controller);
|
|
607
|
-
if (!isActiveRunStatus(workTaskService.getRun(runId)?.status))
|
|
773
|
+
await this.throwIfCancelled(runId, controller);
|
|
774
|
+
if (!isActiveRunStatus((await workTaskService.getRun(runId))?.status))
|
|
608
775
|
return;
|
|
609
|
-
workTaskService.updateRun(runId, 'needs_input', { finished: true });
|
|
610
|
-
workTaskService.updateTaskStatus(taskId, 'needs_input');
|
|
611
|
-
workEventService.publish(taskId, runId, 'done', {
|
|
776
|
+
await workTaskService.updateRun(runId, 'needs_input', { finished: true });
|
|
777
|
+
await workTaskService.updateTaskStatus(taskId, 'needs_input');
|
|
778
|
+
await workEventService.publish(taskId, runId, 'done', {
|
|
612
779
|
status: 'needs_input',
|
|
613
780
|
budgetReason,
|
|
614
|
-
});
|
|
781
|
+
}, 'terminal:needs_input');
|
|
615
782
|
}
|
|
616
783
|
catch (error) {
|
|
617
|
-
const currentRun = workTaskService.getRun(runId);
|
|
784
|
+
const currentRun = await workTaskService.getRun(runId);
|
|
618
785
|
if (currentRun?.status === 'cancelled' || controller.signal.aborted) {
|
|
619
786
|
if (task) {
|
|
620
787
|
try {
|
|
621
788
|
await workRuntimeService.stopContainer(task);
|
|
622
789
|
executionContainerSettled = true;
|
|
623
|
-
if (isActiveRunStatus(workTaskService.getRun(runId)?.status)) {
|
|
624
|
-
workTaskService.updateRun(runId, 'cancelled', {
|
|
790
|
+
if (isActiveRunStatus((await workTaskService.getRun(runId))?.status)) {
|
|
791
|
+
await workTaskService.updateRun(runId, 'cancelled', {
|
|
625
792
|
error: 'Cancelled by user.',
|
|
626
793
|
finished: true,
|
|
627
794
|
});
|
|
628
|
-
workTaskService.updateTaskStatus(taskId, 'cancelled');
|
|
629
|
-
workTaskService.updatePreview(taskId, 'stopped');
|
|
630
|
-
workEventService.publish(taskId, runId, 'done', {
|
|
795
|
+
await workTaskService.updateTaskStatus(taskId, 'cancelled');
|
|
796
|
+
await workTaskService.updatePreview(taskId, 'stopped');
|
|
797
|
+
await workEventService.publish(taskId, runId, 'done', {
|
|
631
798
|
status: 'cancelled',
|
|
632
799
|
error: 'Cancelled by user.',
|
|
633
|
-
});
|
|
800
|
+
}, 'terminal:cancelled');
|
|
634
801
|
}
|
|
635
802
|
}
|
|
636
803
|
catch (cleanupError) {
|
|
@@ -643,39 +810,39 @@ export class WorkAgentService {
|
|
|
643
810
|
? error.message
|
|
644
811
|
: 'Work run failed unexpectedly.';
|
|
645
812
|
await settleExecutionContainer();
|
|
646
|
-
const settledRun = workTaskService.getRun(runId);
|
|
813
|
+
const settledRun = await workTaskService.getRun(runId);
|
|
647
814
|
if (controller.signal.aborted || settledRun?.status === 'cancelled') {
|
|
648
815
|
if (isActiveRunStatus(settledRun?.status)) {
|
|
649
|
-
workTaskService.updateRun(runId, 'cancelled', {
|
|
816
|
+
await workTaskService.updateRun(runId, 'cancelled', {
|
|
650
817
|
error: 'Cancelled by user.',
|
|
651
818
|
finished: true,
|
|
652
819
|
});
|
|
653
|
-
workTaskService.updateTaskStatus(taskId, 'cancelled');
|
|
654
|
-
workTaskService.updatePreview(taskId, 'stopped');
|
|
655
|
-
workEventService.publish(taskId, runId, 'done', {
|
|
820
|
+
await workTaskService.updateTaskStatus(taskId, 'cancelled');
|
|
821
|
+
await workTaskService.updatePreview(taskId, 'stopped');
|
|
822
|
+
await workEventService.publish(taskId, runId, 'done', {
|
|
656
823
|
status: 'cancelled',
|
|
657
824
|
error: 'Cancelled by user.',
|
|
658
|
-
});
|
|
825
|
+
}, 'terminal:cancelled');
|
|
659
826
|
}
|
|
660
827
|
return;
|
|
661
828
|
}
|
|
662
829
|
if (!isActiveRunStatus(settledRun?.status)) {
|
|
663
830
|
return;
|
|
664
831
|
}
|
|
665
|
-
workTaskService.addMessage(taskId, runId, 'assistant', 'error', message);
|
|
666
|
-
workTaskService.updateRun(runId, 'failed', {
|
|
832
|
+
await workTaskService.addMessage(taskId, runId, 'assistant', 'error', message);
|
|
833
|
+
await workTaskService.updateRun(runId, 'failed', {
|
|
667
834
|
error: message,
|
|
668
835
|
finished: true,
|
|
669
836
|
});
|
|
670
|
-
workTaskService.updateTaskStatus(taskId, 'failed');
|
|
671
|
-
workEventService.publish(taskId, runId, 'error', {
|
|
837
|
+
await workTaskService.updateTaskStatus(taskId, 'failed');
|
|
838
|
+
await workEventService.publish(taskId, runId, 'error', {
|
|
672
839
|
message,
|
|
673
840
|
code: error instanceof WorkAgentHttpError ? error.code : undefined,
|
|
674
|
-
});
|
|
675
|
-
workEventService.publish(taskId, runId, 'done', {
|
|
841
|
+
}, 'terminal:error');
|
|
842
|
+
await workEventService.publish(taskId, runId, 'done', {
|
|
676
843
|
status: 'failed',
|
|
677
844
|
error: message,
|
|
678
|
-
});
|
|
845
|
+
}, 'terminal:failed');
|
|
679
846
|
}
|
|
680
847
|
finally {
|
|
681
848
|
this.controllers.delete(runId);
|
|
@@ -701,8 +868,8 @@ export class WorkAgentService {
|
|
|
701
868
|
}
|
|
702
869
|
try {
|
|
703
870
|
await workRuntimeService.stopContainer(task);
|
|
704
|
-
if (workTaskService.getTaskRecord(task.id, task.userId)) {
|
|
705
|
-
workTaskService.updatePreview(task.id, 'stopped');
|
|
871
|
+
if (await workTaskService.getTaskRecord(task.id, task.userId)) {
|
|
872
|
+
await workTaskService.updatePreview(task.id, 'stopped');
|
|
706
873
|
}
|
|
707
874
|
}
|
|
708
875
|
catch (error) {
|
|
@@ -711,8 +878,8 @@ export class WorkAgentService {
|
|
|
711
878
|
logger.error(`Could not stop idle Work container ${task.containerName}:`, error);
|
|
712
879
|
}
|
|
713
880
|
}
|
|
714
|
-
assertStableProviderRouting(run, userId, expectedFingerprint) {
|
|
715
|
-
const currentFingerprint = workModelProviderService.getRoutingFingerprint(run.model, {
|
|
881
|
+
async assertStableProviderRouting(run, userId, expectedFingerprint) {
|
|
882
|
+
const currentFingerprint = await workModelProviderService.getRoutingFingerprint(run.model, {
|
|
716
883
|
providerType: run.providerType,
|
|
717
884
|
providerId: run.providerId,
|
|
718
885
|
}, userId);
|
|
@@ -720,8 +887,8 @@ export class WorkAgentService {
|
|
|
720
887
|
throw new WorkAgentHttpError('The provider routing changed while this Work run was active. Start a new run with the updated provider configuration.', 409, 'WORK_PROVIDER_ROUTING_CHANGED');
|
|
721
888
|
}
|
|
722
889
|
}
|
|
723
|
-
contextMessages(task, roundLimit, providerStateScope, provider = task) {
|
|
724
|
-
const persisted = restorePersistedWorkContext(workTaskService.getRecentModelContextMessages(task.id, 30), provider, providerStateScope);
|
|
890
|
+
async contextMessages(task, roundLimit, providerStateScope, provider = task) {
|
|
891
|
+
const persisted = restorePersistedWorkContext(await workTaskService.getRecentModelContextMessages(task.id, 30), provider, providerStateScope);
|
|
725
892
|
return [
|
|
726
893
|
{
|
|
727
894
|
role: 'system',
|
|
@@ -779,8 +946,8 @@ export class WorkAgentService {
|
|
|
779
946
|
}
|
|
780
947
|
case 'web_search': {
|
|
781
948
|
if (!task.networkEnabled ||
|
|
782
|
-
!isWebSearchAvailable() ||
|
|
783
|
-
!userCanUseWebSearch(userModel.getUserById(task.userId))) {
|
|
949
|
+
!(await isWebSearchAvailable()) ||
|
|
950
|
+
!(await userCanUseWebSearch(await userModel.getUserById(task.userId)))) {
|
|
784
951
|
throw new WorkAgentHttpError('Web search is not available for this task.', 403, 'WORK_WEB_SEARCH_UNAVAILABLE');
|
|
785
952
|
}
|
|
786
953
|
const query = requiredString(args.query, 'query');
|
|
@@ -803,7 +970,7 @@ export class WorkAgentService {
|
|
|
803
970
|
case 'start_preview': {
|
|
804
971
|
const url = await workRuntimeService.startPreview(task, optionalString(args.command), {
|
|
805
972
|
onStarting: () => workTaskService.beginPreview(task.id, task.userId, true),
|
|
806
|
-
onRunning: previewUrl => workTaskService.updatePreview(task.id, 'running', previewUrl),
|
|
973
|
+
onRunning: (previewUrl, endpoint) => workTaskService.updatePreview(task.id, 'running', previewUrl, endpoint),
|
|
807
974
|
onFailed: () => workTaskService.updatePreview(task.id, 'failed'),
|
|
808
975
|
});
|
|
809
976
|
return {
|
|
@@ -820,21 +987,24 @@ export class WorkAgentService {
|
|
|
820
987
|
throw new WorkAgentHttpError(`Unknown tool: ${call.function.name}`, 400, 'WORK_UNKNOWN_TOOL');
|
|
821
988
|
}
|
|
822
989
|
}
|
|
823
|
-
throwIfCancelled(runId, controller) {
|
|
990
|
+
async throwIfCancelled(runId, controller) {
|
|
824
991
|
if (controller.signal.aborted ||
|
|
825
|
-
workTaskService.getRun(runId)?.status === 'cancelled') {
|
|
992
|
+
(await workTaskService.getRun(runId))?.status === 'cancelled') {
|
|
826
993
|
throw new WorkAgentHttpError('Work run was cancelled.', 409, 'WORK_RUN_CANCELLED');
|
|
827
994
|
}
|
|
828
995
|
}
|
|
829
996
|
}
|
|
830
997
|
class WorkDeltaPublisher {
|
|
831
|
-
constructor(taskId, runId, type, initialTotal = '') {
|
|
998
|
+
constructor(taskId, runId, type, initialTotal = '', occurrenceScope = 'stream', attemptIdentity = '0') {
|
|
832
999
|
this.taskId = taskId;
|
|
833
1000
|
this.runId = runId;
|
|
834
1001
|
this.type = type;
|
|
1002
|
+
this.occurrenceScope = occurrenceScope;
|
|
1003
|
+
this.attemptIdentity = attemptIdentity;
|
|
835
1004
|
this.pending = '';
|
|
836
1005
|
this.total = '';
|
|
837
1006
|
this.separatorPending = '';
|
|
1007
|
+
this.sequence = 0;
|
|
838
1008
|
this.total = initialTotal;
|
|
839
1009
|
this.separatorPending = initialTotal ? '\n\n' : '';
|
|
840
1010
|
}
|
|
@@ -862,9 +1032,7 @@ class WorkDeltaPublisher {
|
|
|
862
1032
|
return;
|
|
863
1033
|
const delta = this.pending;
|
|
864
1034
|
this.pending = '';
|
|
865
|
-
workEventService.publish(this.taskId, this.runId, this.type, {
|
|
866
|
-
delta,
|
|
867
|
-
});
|
|
1035
|
+
workEventService.publish(this.taskId, this.runId, this.type, { delta, total: this.total }, `${this.occurrenceScope}:${++this.sequence}`, this.attemptIdentity);
|
|
868
1036
|
}
|
|
869
1037
|
}
|
|
870
1038
|
export class WorkAgentHttpError extends Error {
|
|
@@ -1009,7 +1177,7 @@ export function restorePersistedWorkContext(messages, provider, expectedStateSco
|
|
|
1009
1177
|
continue;
|
|
1010
1178
|
restored.push({
|
|
1011
1179
|
role: 'tool',
|
|
1012
|
-
content:
|
|
1180
|
+
content: INTERRUPTED_TOOL_RESULT,
|
|
1013
1181
|
tool_name: call.name,
|
|
1014
1182
|
tool_call_id: call.id,
|
|
1015
1183
|
});
|