@overlordai/server 1.0.53 → 1.0.55
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/database/migrations/001-init-schema.sql +73 -9
- package/dist/adapters/adapter.interface.d.ts +1 -4
- package/dist/adapters/adapter.interface.d.ts.map +1 -1
- package/dist/adapters/adapter.interface.js.map +1 -1
- package/dist/adapters/adapter.module.d.ts.map +1 -1
- package/dist/adapters/adapter.module.js +8 -7
- package/dist/adapters/adapter.module.js.map +1 -1
- package/dist/adapters/lark/lark-card.builder.d.ts +1 -25
- package/dist/adapters/lark/lark-card.builder.d.ts.map +1 -1
- package/dist/adapters/lark/lark-card.builder.js +6 -110
- package/dist/adapters/lark/lark-card.builder.js.map +1 -1
- package/dist/adapters/lark/lark-message.parser.d.ts +4 -4
- package/dist/adapters/lark/lark-message.parser.d.ts.map +1 -1
- package/dist/adapters/lark/lark-message.parser.js +20 -13
- package/dist/adapters/lark/lark-message.parser.js.map +1 -1
- package/dist/adapters/lark/lark-signature.d.ts.map +1 -1
- package/dist/adapters/lark/lark-signature.js +6 -0
- package/dist/adapters/lark/lark-signature.js.map +1 -1
- package/dist/adapters/lark/lark.adapter.d.ts +14 -9
- package/dist/adapters/lark/lark.adapter.d.ts.map +1 -1
- package/dist/adapters/lark/lark.adapter.js +99 -177
- package/dist/adapters/lark/lark.adapter.js.map +1 -1
- package/dist/adapters/lark/lark.controller.d.ts +10 -1
- package/dist/adapters/lark/lark.controller.d.ts.map +1 -1
- package/dist/adapters/lark/lark.controller.js +48 -14
- package/dist/adapters/lark/lark.controller.js.map +1 -1
- package/dist/adapters/slack/slack-block.builder.d.ts +8 -0
- package/dist/adapters/slack/slack-block.builder.d.ts.map +1 -0
- package/dist/adapters/slack/slack-block.builder.js +117 -0
- package/dist/adapters/slack/slack-block.builder.js.map +1 -0
- package/dist/adapters/slack/slack-message.parser.d.ts +15 -0
- package/dist/adapters/slack/slack-message.parser.d.ts.map +1 -0
- package/dist/adapters/slack/slack-message.parser.js +158 -0
- package/dist/adapters/slack/slack-message.parser.js.map +1 -0
- package/dist/adapters/slack/slack-signature.d.ts +7 -0
- package/dist/adapters/slack/slack-signature.d.ts.map +1 -0
- package/dist/adapters/slack/slack-signature.js +59 -0
- package/dist/adapters/slack/slack-signature.js.map +1 -0
- package/dist/adapters/slack/slack.adapter.d.ts +67 -13
- package/dist/adapters/slack/slack.adapter.d.ts.map +1 -1
- package/dist/adapters/slack/slack.adapter.js +468 -19
- package/dist/adapters/slack/slack.adapter.js.map +1 -1
- package/dist/adapters/slack/slack.controller.d.ts +20 -0
- package/dist/adapters/slack/slack.controller.d.ts.map +1 -0
- package/dist/adapters/slack/slack.controller.js +257 -0
- package/dist/adapters/slack/slack.controller.js.map +1 -0
- package/dist/app.module.d.ts.map +1 -1
- package/dist/app.module.js +4 -0
- package/dist/app.module.js.map +1 -1
- package/dist/auth/auth.controller.d.ts.map +1 -1
- package/dist/auth/auth.controller.js +1 -0
- package/dist/auth/auth.controller.js.map +1 -1
- package/dist/auth/auth.module.d.ts.map +1 -1
- package/dist/auth/auth.module.js +4 -5
- package/dist/auth/auth.module.js.map +1 -1
- package/dist/auth/auth.service.d.ts +9 -2
- package/dist/auth/auth.service.d.ts.map +1 -1
- package/dist/auth/auth.service.js +50 -79
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/auth/authenticated-request.d.ts +10 -0
- package/dist/auth/authenticated-request.d.ts.map +1 -0
- package/dist/auth/authenticated-request.js +3 -0
- package/dist/auth/authenticated-request.js.map +1 -0
- package/dist/auth/extract-user.middleware.d.ts.map +1 -1
- package/dist/auth/extract-user.middleware.js +2 -1
- package/dist/auth/extract-user.middleware.js.map +1 -1
- package/dist/auth/guards/jwt-auth.guard.d.ts.map +1 -1
- package/dist/auth/guards/jwt-auth.guard.js +5 -2
- package/dist/auth/guards/jwt-auth.guard.js.map +1 -1
- package/dist/auth/guards/project-role.guard.d.ts.map +1 -1
- package/dist/auth/guards/project-role.guard.js +6 -8
- package/dist/auth/guards/project-role.guard.js.map +1 -1
- package/dist/auth/jwt.strategy.d.ts +6 -3
- package/dist/auth/jwt.strategy.d.ts.map +1 -1
- package/dist/auth/jwt.strategy.js +15 -5
- package/dist/auth/jwt.strategy.js.map +1 -1
- package/dist/common/command-parser.d.ts +29 -0
- package/dist/common/command-parser.d.ts.map +1 -0
- package/dist/common/command-parser.js +133 -0
- package/dist/common/command-parser.js.map +1 -0
- package/dist/common/config.d.ts +17 -0
- package/dist/common/config.d.ts.map +1 -0
- package/dist/common/config.js +47 -0
- package/dist/common/config.js.map +1 -0
- package/dist/common/crypto.service.d.ts +4 -1
- package/dist/common/crypto.service.d.ts.map +1 -1
- package/dist/common/crypto.service.js +14 -7
- package/dist/common/crypto.service.js.map +1 -1
- package/dist/common/error-filter.d.ts +1 -0
- package/dist/common/error-filter.d.ts.map +1 -1
- package/dist/common/error-filter.js +6 -2
- package/dist/common/error-filter.js.map +1 -1
- package/dist/common/git-utils.d.ts +9 -0
- package/dist/common/git-utils.d.ts.map +1 -0
- package/dist/common/git-utils.js +41 -0
- package/dist/common/git-utils.js.map +1 -0
- package/dist/common/health.controller.d.ts.map +1 -1
- package/dist/common/health.controller.js +3 -5
- package/dist/common/health.controller.js.map +1 -1
- package/dist/common/machine-utils.d.ts +32 -0
- package/dist/common/machine-utils.d.ts.map +1 -0
- package/dist/common/machine-utils.js +12 -0
- package/dist/common/machine-utils.js.map +1 -0
- package/dist/common/pagination.d.ts +12 -5
- package/dist/common/pagination.d.ts.map +1 -1
- package/dist/common/pagination.js +27 -17
- package/dist/common/pagination.js.map +1 -1
- package/dist/common/project-validation.d.ts +7 -0
- package/dist/common/project-validation.d.ts.map +1 -0
- package/dist/common/project-validation.js +86 -0
- package/dist/common/project-validation.js.map +1 -0
- package/dist/common/rate-limit.guard.d.ts +4 -3
- package/dist/common/rate-limit.guard.d.ts.map +1 -1
- package/dist/common/rate-limit.guard.js +14 -5
- package/dist/common/rate-limit.guard.js.map +1 -1
- package/dist/common/sql-utils.d.ts +6 -0
- package/dist/common/sql-utils.d.ts.map +1 -0
- package/dist/common/sql-utils.js +11 -0
- package/dist/common/sql-utils.js.map +1 -0
- package/dist/common/string-utils.d.ts +6 -0
- package/dist/common/string-utils.d.ts.map +1 -0
- package/dist/common/string-utils.js +15 -0
- package/dist/common/string-utils.js.map +1 -0
- package/dist/common/worker-utils.d.ts +31 -0
- package/dist/common/worker-utils.d.ts.map +1 -0
- package/dist/common/worker-utils.js +12 -0
- package/dist/common/worker-utils.js.map +1 -0
- package/dist/database/base.repository.d.ts +56 -0
- package/dist/database/base.repository.d.ts.map +1 -0
- package/dist/database/base.repository.js +82 -0
- package/dist/database/base.repository.js.map +1 -0
- package/dist/database/database.service.d.ts.map +1 -1
- package/dist/database/database.service.js +9 -1
- package/dist/database/database.service.js.map +1 -1
- package/dist/database/migration-runner.d.ts.map +1 -1
- package/dist/database/migration-runner.js +2 -1
- package/dist/database/migration-runner.js.map +1 -1
- package/dist/database/repositories/audit-log.repository.d.ts.map +1 -1
- package/dist/database/repositories/audit-log.repository.js +16 -18
- package/dist/database/repositories/audit-log.repository.js.map +1 -1
- package/dist/database/repositories/bot.repository.d.ts +18 -32
- package/dist/database/repositories/bot.repository.d.ts.map +1 -1
- package/dist/database/repositories/bot.repository.js +42 -21
- package/dist/database/repositories/bot.repository.js.map +1 -1
- package/dist/database/repositories/developer-token.repository.d.ts +7 -17
- package/dist/database/repositories/developer-token.repository.d.ts.map +1 -1
- package/dist/database/repositories/developer-token.repository.js +24 -15
- package/dist/database/repositories/developer-token.repository.js.map +1 -1
- package/dist/database/repositories/developer.repository.d.ts +5 -1
- package/dist/database/repositories/developer.repository.d.ts.map +1 -1
- package/dist/database/repositories/developer.repository.js +60 -49
- package/dist/database/repositories/developer.repository.js.map +1 -1
- package/dist/database/repositories/machine.repository.d.ts.map +1 -1
- package/dist/database/repositories/machine.repository.js +2 -7
- package/dist/database/repositories/machine.repository.js.map +1 -1
- package/dist/database/repositories/notification.repository.d.ts +1 -0
- package/dist/database/repositories/notification.repository.d.ts.map +1 -1
- package/dist/database/repositories/notification.repository.js +25 -20
- package/dist/database/repositories/notification.repository.js.map +1 -1
- package/dist/database/repositories/project-member.repository.d.ts +7 -16
- package/dist/database/repositories/project-member.repository.d.ts.map +1 -1
- package/dist/database/repositories/project-member.repository.js +34 -24
- package/dist/database/repositories/project-member.repository.js.map +1 -1
- package/dist/database/repositories/project.repository.d.ts +2 -1
- package/dist/database/repositories/project.repository.d.ts.map +1 -1
- package/dist/database/repositories/project.repository.js +70 -71
- package/dist/database/repositories/project.repository.js.map +1 -1
- package/dist/database/repositories/session.repository.d.ts.map +1 -1
- package/dist/database/repositories/session.repository.js +22 -25
- package/dist/database/repositories/session.repository.js.map +1 -1
- package/dist/database/repositories/task.repository.d.ts +31 -7
- package/dist/database/repositories/task.repository.d.ts.map +1 -1
- package/dist/database/repositories/task.repository.js +134 -86
- package/dist/database/repositories/task.repository.js.map +1 -1
- package/dist/database/repositories/worker-token.repository.d.ts.map +1 -1
- package/dist/database/repositories/worker-token.repository.js +18 -16
- package/dist/database/repositories/worker-token.repository.js.map +1 -1
- package/dist/database/repositories/worker.repository.d.ts +50 -0
- package/dist/database/repositories/worker.repository.d.ts.map +1 -0
- package/dist/database/repositories/worker.repository.js +215 -0
- package/dist/database/repositories/worker.repository.js.map +1 -0
- package/dist/database/repositories/workspace.repository.d.ts +3 -2
- package/dist/database/repositories/workspace.repository.d.ts.map +1 -1
- package/dist/database/repositories/workspace.repository.js +29 -21
- package/dist/database/repositories/workspace.repository.js.map +1 -1
- package/dist/database/repository.module.d.ts +3 -0
- package/dist/database/repository.module.d.ts.map +1 -0
- package/dist/database/repository.module.js +45 -0
- package/dist/database/repository.module.js.map +1 -0
- package/dist/dispatcher/capability.service.d.ts +19 -14
- package/dist/dispatcher/capability.service.d.ts.map +1 -1
- package/dist/dispatcher/capability.service.js +77 -69
- package/dist/dispatcher/capability.service.js.map +1 -1
- package/dist/dispatcher/cleanup.service.d.ts +1 -1
- package/dist/dispatcher/cleanup.service.d.ts.map +1 -1
- package/dist/dispatcher/cleanup.service.js +13 -13
- package/dist/dispatcher/cleanup.service.js.map +1 -1
- package/dist/dispatcher/dedup.service.d.ts +17 -3
- package/dist/dispatcher/dedup.service.d.ts.map +1 -1
- package/dist/dispatcher/dedup.service.js +76 -82
- package/dist/dispatcher/dedup.service.js.map +1 -1
- package/dist/dispatcher/dispatcher.module.d.ts.map +1 -1
- package/dist/dispatcher/dispatcher.module.js +11 -18
- package/dist/dispatcher/dispatcher.module.js.map +1 -1
- package/dist/dispatcher/dispatcher.service.d.ts +14 -116
- package/dist/dispatcher/dispatcher.service.d.ts.map +1 -1
- package/dist/dispatcher/dispatcher.service.js +62 -940
- package/dist/dispatcher/dispatcher.service.js.map +1 -1
- package/dist/dispatcher/dispatcher.types.d.ts +33 -0
- package/dist/dispatcher/dispatcher.types.d.ts.map +1 -0
- package/dist/dispatcher/dispatcher.types.js +3 -0
- package/dist/dispatcher/dispatcher.types.js.map +1 -0
- package/dist/dispatcher/heartbeat.service.d.ts +17 -10
- package/dist/dispatcher/heartbeat.service.d.ts.map +1 -1
- package/dist/dispatcher/heartbeat.service.js +47 -51
- package/dist/dispatcher/heartbeat.service.js.map +1 -1
- package/dist/dispatcher/pty-relay.service.d.ts.map +1 -1
- package/dist/dispatcher/pty-relay.service.js +7 -15
- package/dist/dispatcher/pty-relay.service.js.map +1 -1
- package/dist/dispatcher/reconciler.d.ts +18 -8
- package/dist/dispatcher/reconciler.d.ts.map +1 -1
- package/dist/dispatcher/reconciler.js +219 -130
- package/dist/dispatcher/reconciler.js.map +1 -1
- package/dist/dispatcher/scheduler.service.d.ts +15 -9
- package/dist/dispatcher/scheduler.service.d.ts.map +1 -1
- package/dist/dispatcher/scheduler.service.js +95 -53
- package/dist/dispatcher/scheduler.service.js.map +1 -1
- package/dist/dispatcher/state-machine.d.ts.map +1 -1
- package/dist/dispatcher/state-machine.js +1 -5
- package/dist/dispatcher/state-machine.js.map +1 -1
- package/dist/dispatcher/task-creation.service.d.ts +30 -0
- package/dist/dispatcher/task-creation.service.d.ts.map +1 -0
- package/dist/dispatcher/task-creation.service.js +242 -0
- package/dist/dispatcher/task-creation.service.js.map +1 -0
- package/dist/dispatcher/task-lifecycle.service.d.ts +63 -0
- package/dist/dispatcher/task-lifecycle.service.d.ts.map +1 -0
- package/dist/dispatcher/task-lifecycle.service.js +584 -0
- package/dist/dispatcher/task-lifecycle.service.js.map +1 -0
- package/dist/dispatcher/task-log-batcher.d.ts.map +1 -1
- package/dist/dispatcher/task-log-batcher.js +4 -11
- package/dist/dispatcher/task-log-batcher.js.map +1 -1
- package/dist/dispatcher/worker-auth.service.d.ts +29 -0
- package/dist/dispatcher/worker-auth.service.d.ts.map +1 -0
- package/dist/dispatcher/worker-auth.service.js +296 -0
- package/dist/dispatcher/worker-auth.service.js.map +1 -0
- package/dist/dispatcher/worker-connection.manager.d.ts +15 -15
- package/dist/dispatcher/worker-connection.manager.d.ts.map +1 -1
- package/dist/dispatcher/worker-connection.manager.js +35 -43
- package/dist/dispatcher/worker-connection.manager.js.map +1 -1
- package/dist/dispatcher/worker-selector.d.ts +18 -0
- package/dist/dispatcher/worker-selector.d.ts.map +1 -0
- package/dist/dispatcher/worker-selector.js +150 -0
- package/dist/dispatcher/worker-selector.js.map +1 -0
- package/dist/events/event-types.d.ts +31 -0
- package/dist/events/event-types.d.ts.map +1 -0
- package/dist/events/event-types.js +16 -0
- package/dist/events/event-types.js.map +1 -0
- package/dist/events/events.module.d.ts +7 -0
- package/dist/events/events.module.d.ts.map +1 -0
- package/dist/events/events.module.js +26 -0
- package/dist/events/events.module.js.map +1 -0
- package/dist/main.js +22 -0
- package/dist/main.js.map +1 -1
- package/dist/notifier/debouncer.d.ts +1 -1
- package/dist/notifier/debouncer.d.ts.map +1 -1
- package/dist/notifier/debouncer.js +2 -1
- package/dist/notifier/debouncer.js.map +1 -1
- package/dist/notifier/notification-consumer.d.ts +1 -1
- package/dist/notifier/notification-consumer.d.ts.map +1 -1
- package/dist/notifier/notification-consumer.js +5 -5
- package/dist/notifier/notification-consumer.js.map +1 -1
- package/dist/notifier/notifier.module.d.ts.map +1 -1
- package/dist/notifier/notifier.module.js +0 -6
- package/dist/notifier/notifier.module.js.map +1 -1
- package/dist/notifier/notifier.service.d.ts +1 -1
- package/dist/notifier/notifier.service.d.ts.map +1 -1
- package/dist/notifier/notifier.service.js +7 -9
- package/dist/notifier/notifier.service.js.map +1 -1
- package/dist/notifier/template.service.d.ts +1 -1
- package/dist/notifier/template.service.d.ts.map +1 -1
- package/dist/notifier/template.service.js +6 -10
- package/dist/notifier/template.service.js.map +1 -1
- package/dist/redis/redis.service.d.ts.map +1 -1
- package/dist/redis/redis.service.js +2 -2
- package/dist/redis/redis.service.js.map +1 -1
- package/dist/web/admin/admin-audit.controller.d.ts.map +1 -1
- package/dist/web/admin/admin-audit.controller.js +2 -1
- package/dist/web/admin/admin-audit.controller.js.map +1 -1
- package/dist/web/admin/admin-bot.controller.d.ts +11 -48
- package/dist/web/admin/admin-bot.controller.d.ts.map +1 -1
- package/dist/web/admin/admin-bot.controller.js +50 -18
- package/dist/web/admin/admin-bot.controller.js.map +1 -1
- package/dist/web/admin/admin-developer.controller.d.ts +14 -27
- package/dist/web/admin/admin-developer.controller.d.ts.map +1 -1
- package/dist/web/admin/admin-developer.controller.js +62 -28
- package/dist/web/admin/admin-developer.controller.js.map +1 -1
- package/dist/web/admin/admin-machine.controller.d.ts +1 -8
- package/dist/web/admin/admin-machine.controller.d.ts.map +1 -1
- package/dist/web/admin/admin-machine.controller.js +3 -6
- package/dist/web/admin/admin-machine.controller.js.map +1 -1
- package/dist/web/admin/admin-project.controller.d.ts +9 -30
- package/dist/web/admin/admin-project.controller.d.ts.map +1 -1
- package/dist/web/admin/admin-project.controller.js +15 -60
- package/dist/web/admin/admin-project.controller.js.map +1 -1
- package/dist/web/admin/admin-settings.controller.d.ts +7 -10
- package/dist/web/admin/admin-settings.controller.d.ts.map +1 -1
- package/dist/web/admin/admin-settings.controller.js +14 -6
- package/dist/web/admin/admin-settings.controller.js.map +1 -1
- package/dist/web/admin/admin-token.controller.d.ts +6 -13
- package/dist/web/admin/admin-token.controller.d.ts.map +1 -1
- package/dist/web/admin/admin-token.controller.js +15 -27
- package/dist/web/admin/admin-token.controller.js.map +1 -1
- package/dist/web/admin/admin-worker.controller.d.ts +26 -0
- package/dist/web/admin/admin-worker.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-worker.controller.js +184 -0
- package/dist/web/admin/admin-worker.controller.js.map +1 -0
- package/dist/web/dashboard.controller.d.ts +6 -12
- package/dist/web/dashboard.controller.d.ts.map +1 -1
- package/dist/web/dashboard.controller.js +30 -18
- package/dist/web/dashboard.controller.js.map +1 -1
- package/dist/web/dashboard.service.d.ts +21 -12
- package/dist/web/dashboard.service.d.ts.map +1 -1
- package/dist/web/dashboard.service.js +169 -119
- package/dist/web/dashboard.service.js.map +1 -1
- package/dist/web/event.gateway.d.ts +32 -0
- package/dist/web/event.gateway.d.ts.map +1 -0
- package/dist/web/event.gateway.js +168 -0
- package/dist/web/event.gateway.js.map +1 -0
- package/dist/web/frame-handlers/frame-handler.interface.d.ts +24 -0
- package/dist/web/frame-handlers/frame-handler.interface.d.ts.map +1 -0
- package/dist/web/frame-handlers/frame-handler.interface.js +3 -0
- package/dist/web/frame-handlers/frame-handler.interface.js.map +1 -0
- package/dist/web/frame-handlers/frame-handler.registry.d.ts +16 -0
- package/dist/web/frame-handlers/frame-handler.registry.d.ts.map +1 -0
- package/dist/web/frame-handlers/frame-handler.registry.js +39 -0
- package/dist/web/frame-handlers/frame-handler.registry.js.map +1 -0
- package/dist/web/frame-handlers/heartbeat.handler.d.ts +13 -0
- package/dist/web/frame-handlers/heartbeat.handler.d.ts.map +1 -0
- package/dist/web/frame-handlers/heartbeat.handler.js +35 -0
- package/dist/web/frame-handlers/heartbeat.handler.js.map +1 -0
- package/dist/web/frame-handlers/index.d.ts +7 -0
- package/dist/web/frame-handlers/index.d.ts.map +1 -0
- package/dist/web/frame-handlers/index.js +14 -0
- package/dist/web/frame-handlers/index.js.map +1 -0
- package/dist/web/frame-handlers/progress.handler.d.ts +25 -0
- package/dist/web/frame-handlers/progress.handler.d.ts.map +1 -0
- package/dist/web/frame-handlers/progress.handler.js +69 -0
- package/dist/web/frame-handlers/progress.handler.js.map +1 -0
- package/dist/web/frame-handlers/stage-confirm.handler.d.ts +15 -0
- package/dist/web/frame-handlers/stage-confirm.handler.d.ts.map +1 -0
- package/dist/web/frame-handlers/stage-confirm.handler.js +39 -0
- package/dist/web/frame-handlers/stage-confirm.handler.js.map +1 -0
- package/dist/web/frame-handlers/tunnel.handler.d.ts +10 -0
- package/dist/web/frame-handlers/tunnel.handler.d.ts.map +1 -0
- package/dist/web/frame-handlers/tunnel.handler.js +31 -0
- package/dist/web/frame-handlers/tunnel.handler.js.map +1 -0
- package/dist/web/interaction.service.d.ts +0 -4
- package/dist/web/interaction.service.d.ts.map +1 -1
- package/dist/web/interaction.service.js +0 -10
- package/dist/web/interaction.service.js.map +1 -1
- package/dist/web/machine.controller.d.ts +1 -8
- package/dist/web/machine.controller.d.ts.map +1 -1
- package/dist/web/machine.controller.js +6 -9
- package/dist/web/machine.controller.js.map +1 -1
- package/dist/web/notification.controller.d.ts +1 -8
- package/dist/web/notification.controller.d.ts.map +1 -1
- package/dist/web/notification.controller.js +3 -2
- package/dist/web/notification.controller.js.map +1 -1
- package/dist/web/profile.controller.d.ts +19 -10
- package/dist/web/profile.controller.d.ts.map +1 -1
- package/dist/web/profile.controller.js +100 -13
- package/dist/web/profile.controller.js.map +1 -1
- package/dist/web/project-member.service.d.ts +16 -0
- package/dist/web/project-member.service.d.ts.map +1 -0
- package/dist/web/project-member.service.js +90 -0
- package/dist/web/project-member.service.js.map +1 -0
- package/dist/web/project.controller.d.ts +43 -26
- package/dist/web/project.controller.d.ts.map +1 -1
- package/dist/web/project.controller.js +73 -46
- package/dist/web/project.controller.js.map +1 -1
- package/dist/web/pty.gateway.d.ts +9 -3
- package/dist/web/pty.gateway.d.ts.map +1 -1
- package/dist/web/pty.gateway.js +46 -18
- package/dist/web/pty.gateway.js.map +1 -1
- package/dist/web/search.service.d.ts +9 -2
- package/dist/web/search.service.d.ts.map +1 -1
- package/dist/web/search.service.js +53 -26
- package/dist/web/search.service.js.map +1 -1
- package/dist/web/task.controller.d.ts +15 -24
- package/dist/web/task.controller.d.ts.map +1 -1
- package/dist/web/task.controller.js +70 -53
- package/dist/web/task.controller.js.map +1 -1
- package/dist/web/tunnel.service.d.ts +74 -0
- package/dist/web/tunnel.service.d.ts.map +1 -0
- package/dist/web/tunnel.service.js +250 -0
- package/dist/web/tunnel.service.js.map +1 -0
- package/dist/web/web-event.service.d.ts +25 -0
- package/dist/web/web-event.service.d.ts.map +1 -0
- package/dist/web/web-event.service.js +116 -0
- package/dist/web/web-event.service.js.map +1 -0
- package/dist/web/web.module.d.ts.map +1 -1
- package/dist/web/web.module.js +13 -28
- package/dist/web/web.module.js.map +1 -1
- package/dist/web/worker-channel.gateway.d.ts +10 -18
- package/dist/web/worker-channel.gateway.d.ts.map +1 -1
- package/dist/web/worker-channel.gateway.js +70 -144
- package/dist/web/worker-channel.gateway.js.map +1 -1
- package/dist/web/worker-web.controller.d.ts +15 -0
- package/dist/web/worker-web.controller.d.ts.map +1 -0
- package/dist/web/worker-web.controller.js +143 -0
- package/dist/web/worker-web.controller.js.map +1 -0
- package/dist/web/worker.controller.d.ts +3 -3
- package/dist/web/worker.controller.d.ts.map +1 -1
- package/dist/web/worker.controller.js +8 -8
- package/dist/web/worker.controller.js.map +1 -1
- package/dist/web/workspace.controller.d.ts +8 -33
- package/dist/web/workspace.controller.d.ts.map +1 -1
- package/dist/web/workspace.controller.js +93 -205
- package/dist/web/workspace.controller.js.map +1 -1
- package/package.json +10 -2
- package/public/apple-touch-icon-120x120.png +0 -0
- package/public/apple-touch-icon-152x152.png +0 -0
- package/public/apple-touch-icon-180x180.png +0 -0
- package/public/assets/AccessTokensPage-DPQB2fbi.js +1 -0
- package/public/assets/AdminPage-BqVelYNu.js +1 -0
- package/public/assets/ApiReferencePage-CiGvbLxL.js +1 -0
- package/public/assets/AuditLogPage-DSo4jVYm.js +6 -0
- package/public/assets/BindPlatformPage-CTqzpOmt.js +1 -0
- package/public/assets/BotManage-CIR0rrK7.js +6 -0
- package/public/assets/CliReferencePage-C8GmlwUz.js +14 -0
- package/public/assets/DeveloperManage-r6y2AoB4.js +16 -0
- package/public/assets/EditProjectPage-7WCsNltj.js +2 -0
- package/public/assets/{EmptyState-CvmhFgWJ.js → EmptyState-D3foEiul.js} +1 -1
- package/public/assets/HomePage-D4yv4orb.js +1 -0
- package/public/assets/InfoRow-DhdTYoY9.js +1 -0
- package/public/assets/LandingPage-CqS0E2eC.js +43 -0
- package/public/assets/LoginPage-DDXkdcz_.js +1 -0
- package/public/assets/MetricBar-DMMHfS0A.js +1 -0
- package/public/assets/{NotFoundPage-BuiAS4g4.js → NotFoundPage-D5x5BrlX.js} +1 -1
- package/public/assets/OnboardingGuide-D8RyPcEd.js +1 -0
- package/public/assets/PipelineEditorPage-y2-Q8ofQ.js +3 -0
- package/public/assets/ProfilePage-DN7usHOi.js +1 -0
- package/public/assets/ProjectDetailPage-DJexg49z.js +7 -0
- package/public/assets/ProjectListPage-Bz7I2D0H.js +6 -0
- package/public/assets/QuickAuth-Dr0Q50ld.js +1 -0
- package/public/assets/{RemoveMemberConfirmDialog-DS9z6jQT.js → RemoveMemberConfirmDialog-BCrue0AP.js} +2 -2
- package/public/assets/Select-BnV8yZlD.js +6 -0
- package/public/assets/SettingsPage-HaUCcsgl.js +6 -0
- package/public/assets/{Skeleton-CcVqz28_.js → Skeleton-DUgWc2LJ.js} +1 -1
- package/public/assets/SkillPage-BInwZTQh.js +1 -0
- package/public/assets/TaskDetailPage-CfwEj1hy.js +31 -0
- package/public/assets/TaskListPage-Dh59ldSZ.js +1 -0
- package/public/assets/TaskStatusBadge-DuOoGIwE.js +1 -0
- package/public/assets/TerminalHomePage-BwXJjr-a.js +16 -0
- package/public/assets/TokenManage-B0Cpv6SO.js +1 -0
- package/public/assets/TotpSetupPage-MSCCURj9.js +9 -0
- package/public/assets/WorkerDetailPage-R2veIzKo.js +1 -0
- package/public/assets/WorkerListPage-CserMjGO.js +6 -0
- package/public/assets/WorkerSetupGuidePage-SqO2lzVa.js +11 -0
- package/public/assets/{arrow-left-CVKez32c.js → arrow-left-DklRsENx.js} +1 -1
- package/public/assets/{arrow-right-g7hTftEi.js → arrow-right-MDrzFe3K.js} +1 -1
- package/public/assets/{bot-DYvBcsZn.js → bot-DPaziJPf.js} +1 -1
- package/public/assets/{chevron-right-COxU2yxz.js → chevron-right-CqyufMDW.js} +1 -1
- package/public/assets/{copy-BGttVgA1.js → copy-BUH7P2Hf.js} +1 -1
- package/public/assets/date-BdNtiQTP.js +1 -0
- package/public/assets/{external-link-DXlCfUjE.js → external-link-ChPgQ7N_.js} +1 -1
- package/public/assets/index-BS0Fbx5V.css +1 -0
- package/public/assets/index-vL7aQJNr.js +225 -0
- package/public/assets/{key-3eDVdGih.js → key-CxvwwHnW.js} +1 -1
- package/public/assets/{loader-circle-DPm92ETj.js → loader-circle-DS5g1-Od.js} +1 -1
- package/public/assets/password-CHk45-jw.js +1 -0
- package/public/assets/{pencil-Bs3PwH2W.js → pencil-B6spIBcw.js} +1 -1
- package/public/assets/{plus-d-PLzbVX.js → plus-Bnd1Vz2Y.js} +1 -1
- package/public/assets/{rotate-ccw-Cus8CABi.js → rotate-ccw-CgcLAXNR.js} +1 -1
- package/public/assets/{scroll-text-CV3wlIy2.js → scroll-text-CecZ0Fk5.js} +1 -1
- package/public/assets/{settings-Ccijf48b.js → settings-C1uOD3PZ.js} +1 -1
- package/public/assets/status-colors-BPEUp90-.js +1 -0
- package/public/assets/string-B39tzdVK.js +1 -0
- package/public/assets/task-constants-BbFyCyKk.js +14 -0
- package/public/assets/task.store-BE6fEPu4.js +1 -0
- package/public/assets/{trash-2-bRJ-xwtq.js → trash-2-A2FsT1yG.js} +1 -1
- package/public/assets/useFetch-vGZMAvGi.js +1 -0
- package/public/assets/{users-LNQqKSEN.js → users-CEdRS_A3.js} +1 -1
- package/public/assets/wifi-D60NkK6F.js +6 -0
- package/public/assets/zap-DXw1NrWz.js +6 -0
- package/public/icon-192x192.png +0 -0
- package/public/icon-512x512.png +0 -0
- package/public/icon-maskable-192x192.png +0 -0
- package/public/icon-maskable-512x512.png +0 -0
- package/public/index.html +21 -4
- package/public/manifest.webmanifest +1 -0
- package/public/og-image.png +0 -0
- package/public/registerSW.js +1 -0
- package/public/sw.js +1 -0
- package/public/workbox-6e9b121d.js +1 -0
- package/database/migrations/002-add-indexes.sql +0 -17
- package/database/migrations/003-add-settings-table.sql +0 -4
- package/database/migrations/004-add-developer-id-index.sql +0 -5
- package/database/migrations/005-add-worker-version.sql +0 -2
- package/database/migrations/006-add-decommission-fields.sql +0 -2
- package/database/migrations/007-add-ssh-url.sql +0 -1
- package/public/assets/AccessTokensPage-Cb5hGBfN.js +0 -1
- package/public/assets/AdminPage-C7Xytkfo.js +0 -1
- package/public/assets/ApiReferencePage-DLGVc4xN.js +0 -1
- package/public/assets/AuditLogPage-BgqsUJ7x.js +0 -6
- package/public/assets/BotManage-Ds9DYQZA.js +0 -6
- package/public/assets/CliReferencePage-WXinn_69.js +0 -8
- package/public/assets/DeveloperManage-saSq3Hfx.js +0 -16
- package/public/assets/EditProjectPage-C4xWYLTo.js +0 -2
- package/public/assets/HomePage-y20pQ52r.js +0 -1
- package/public/assets/LandingPage-CB5BBbdI.js +0 -36
- package/public/assets/LoginPage-DLljhJkQ.js +0 -1
- package/public/assets/MachineDetailPage-CPm9tfdp.js +0 -1
- package/public/assets/MachineListPage-D-nhVz-m.js +0 -6
- package/public/assets/PipelineEditorPage-B9GgqAju.js +0 -3
- package/public/assets/ProfilePage-DASpeJq6.js +0 -1
- package/public/assets/ProjectDetailPage-DWZyNwTV.js +0 -7
- package/public/assets/ProjectListPage-BUMX3Dxa.js +0 -6
- package/public/assets/QuickAuth-B9mvq7ht.js +0 -1
- package/public/assets/Select-A7PXobk_.js +0 -6
- package/public/assets/SettingsPage-WGzxUbGp.js +0 -6
- package/public/assets/SkillPage-BIt2kF3W.js +0 -1
- package/public/assets/TaskDetailPage-CePyNfp6.js +0 -44
- package/public/assets/TaskListPage-MO4_PSve.js +0 -1
- package/public/assets/TaskStatusBadge-QtQUDscM.js +0 -1
- package/public/assets/TokenManage-Sf0RGymw.js +0 -1
- package/public/assets/TotpSetupPage-D-rbEYLf.js +0 -9
- package/public/assets/WorkerSetupGuidePage-D6Fv1MQo.js +0 -16
- package/public/assets/index-CDBuOPx4.js +0 -212
- package/public/assets/index-CQojj7Zu.css +0 -1
- package/public/assets/protocol-C5uQmiiB.js +0 -1
- package/public/assets/task.store-CvjSr507.js +0 -1
- /package/public/assets/{TaskDetailPage-Beg8tuEN.css → task-constants-Beg8tuEN.css} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.service.d.ts","sourceRoot":"","sources":["../../src/notifier/template.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"template.service.d.ts","sourceRoot":"","sources":["../../src/notifier/template.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AA+BjD,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAChD,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAClD,CAAC;CACH;AAED,qBACa,eAAe;IAC1B,OAAO,KAAK,UAAU,GAAkC;IAExD;;OAEG;IACH,qBAAqB,CACnB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,GACA,mBAAmB;IAyDtB;;OAEG;IACH,6BAA6B,CAC3B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,GACZ,mBAAmB;IA0BtB;;OAEG;IACH,eAAe,CACb,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,mBAAmB;IAyBtB,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,WAAW;CAkDpB"}
|
|
@@ -9,6 +9,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.TemplateService = void 0;
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
11
|
const protocol_1 = require("@overlordai/protocol");
|
|
12
|
+
const config_1 = require("../common/config");
|
|
13
|
+
const string_utils_1 = require("../common/string-utils");
|
|
12
14
|
/** Status display configuration: emoji + color label. */
|
|
13
15
|
const STATUS_DISPLAY = {
|
|
14
16
|
[protocol_1.TaskStatus.QUEUED]: { emoji: '🕐', label: 'Queued', color: 'grey' },
|
|
@@ -31,14 +33,8 @@ const STATUS_DISPLAY = {
|
|
|
31
33
|
color: 'grey',
|
|
32
34
|
},
|
|
33
35
|
};
|
|
34
|
-
/** Truncate a string to `maxLen` characters, appending "..." if truncated. */
|
|
35
|
-
function truncate(text, maxLen) {
|
|
36
|
-
if (text.length <= maxLen)
|
|
37
|
-
return text;
|
|
38
|
-
return text.slice(0, maxLen) + '...';
|
|
39
|
-
}
|
|
40
36
|
let TemplateService = class TemplateService {
|
|
41
|
-
webBaseUrl
|
|
37
|
+
get webBaseUrl() { return (0, config_1.getWebUrl)(); }
|
|
42
38
|
/**
|
|
43
39
|
* Build a task notification (created, running, stage changed, completed, etc.).
|
|
44
40
|
*/
|
|
@@ -48,7 +44,7 @@ let TemplateService = class TemplateService {
|
|
|
48
44
|
label: task.status,
|
|
49
45
|
color: 'grey',
|
|
50
46
|
};
|
|
51
|
-
const desc = truncate(task.description, 50);
|
|
47
|
+
const desc = (0, string_utils_1.truncate)(task.description, 50);
|
|
52
48
|
const webLink = `${this.webBaseUrl}/tasks/${task.id}`;
|
|
53
49
|
const title = this.buildTitle(eventType, task, statusInfo);
|
|
54
50
|
const fields = this.buildFields(task, statusInfo, extra);
|
|
@@ -92,7 +88,7 @@ let TemplateService = class TemplateService {
|
|
|
92
88
|
*/
|
|
93
89
|
buildStageConfirmNotification(task, stage) {
|
|
94
90
|
const webLink = `${this.webBaseUrl}/tasks/${task.id}`;
|
|
95
|
-
const desc = truncate(task.description, 50);
|
|
91
|
+
const desc = (0, string_utils_1.truncate)(task.description, 50);
|
|
96
92
|
const title = `⚠️ Stage Confirmation Required — Task #${task.id}`;
|
|
97
93
|
const fields = [
|
|
98
94
|
{ label: 'Task', value: `#${task.id}: ${desc}` },
|
|
@@ -162,7 +158,7 @@ let TemplateService = class TemplateService {
|
|
|
162
158
|
}
|
|
163
159
|
}
|
|
164
160
|
buildFields(task, statusInfo, extra) {
|
|
165
|
-
const desc = truncate(task.description, 50);
|
|
161
|
+
const desc = (0, string_utils_1.truncate)(task.description, 50);
|
|
166
162
|
const fields = [
|
|
167
163
|
{ label: 'Task', value: `#${task.id}: ${desc}` },
|
|
168
164
|
{ label: 'Status', value: `${statusInfo.emoji} ${statusInfo.label}` },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.service.js","sourceRoot":"","sources":["../../src/notifier/template.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAE5C,mDAA4D;
|
|
1
|
+
{"version":3,"file":"template.service.js","sourceRoot":"","sources":["../../src/notifier/template.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAE5C,mDAA4D;AAC5D,6CAA6C;AAC7C,yDAAkD;AAElD,yDAAyD;AACzD,MAAM,cAAc,GAGhB;IACF,CAAC,qBAAU,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;IACpE,CAAC,qBAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;IACxE,CAAC,qBAAU,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;IACtE,CAAC,qBAAU,CAAC,SAAS,CAAC,EAAE;QACtB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,QAAQ;KAChB;IACD,CAAC,qBAAU,CAAC,SAAS,CAAC,EAAE;QACtB,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,OAAO;KACf;IACD,CAAC,qBAAU,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;IAClE,CAAC,qBAAU,CAAC,SAAS,CAAC,EAAE;QACtB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,MAAM;KACd;CACF,CAAC;AAcK,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,IAAY,UAAU,KAAa,OAAO,IAAA,kBAAS,GAAE,CAAC,CAAC,CAAC;IAExD;;OAEG;IACH,qBAAqB,CACnB,IAAU,EACV,SAAiB,EACjB,KAOC;QAED,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;YAChD,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,KAAK,EAAE,MAAM;SACd,CAAC;QACF,MAAM,IAAI,GAAG,IAAA,uBAAQ,EAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,UAAU,UAAU,IAAI,CAAC,EAAE,EAAE,CAAC;QAEtD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,OAAO,GAA2C;YACtD,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE;SACxC,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,SAAS,GAAa;YAC1B,KAAK;YACL,SAAS,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;YAC3B,WAAW,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,EAAE;SAClD,CAAC;QAEF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,KAAK,EAAE,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,SAAS,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,KAAK,EAAE,SAAS,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;YACvC,SAAS,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,SAAS,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,SAAS,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;QAEtC,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;SACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,6BAA6B,CAC3B,IAAU,EACV,KAAa;QAEb,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,UAAU,UAAU,IAAI,CAAC,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,IAAA,uBAAQ,EAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,0CAA0C,IAAI,CAAC,EAAE,EAAE,CAAC;QAElE,MAAM,MAAM,GAA4C;YACtD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;YAChC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,4BAA4B,EAAE;SAClE,CAAC;QAEF,MAAM,OAAO,GAA2C;YACtD,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,OAAO,YAAY,KAAK,EAAE,EAAE;YAC9D,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE;SACxC,CAAC;QAEF,MAAM,IAAI,GAAG;YACX,KAAK;YACL,SAAS,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;YAC3B,UAAU,KAAK,0BAA0B;YACzC,YAAY,OAAO,YAAY,KAAK,EAAE;SACvC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,eAAe,CACb,OAAe,EACf,YAAqB,EACrB,UAAmB;QAEnB,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAE/B,MAAM,MAAM,GAA4C;YACtD,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;SACrC,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,YAAY,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,aAAa,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;SACxB,CAAC;IACJ,CAAC;IAEO,UAAU,CAChB,SAAiB,EACjB,IAAU,EACV,UAA4C;QAE5C,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,UAAU,IAAI,CAAC,EAAE,EAAE,CAAC;QACtD,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,cAAc;gBACjB,OAAO,GAAG,MAAM,YAAY,CAAC;YAC/B,KAAK,eAAe;gBAClB,OAAO,GAAG,MAAM,aAAa,CAAC;YAChC,KAAK,cAAc;gBACjB,OAAO,GAAG,MAAM,YAAY,CAAC;YAC/B,KAAK,eAAe;gBAClB,OAAO,GAAG,MAAM,kBAAkB,CAAC;YACrC,KAAK,gBAAgB;gBACnB,OAAO,GAAG,MAAM,cAAc,CAAC;YACjC,KAAK,aAAa;gBAChB,OAAO,GAAG,MAAM,WAAW,CAAC;YAC9B,KAAK,gBAAgB;gBACnB,OAAO,GAAG,MAAM,cAAc,CAAC;YACjC,KAAK,gBAAgB;gBACnB,OAAO,GAAG,MAAM,cAAc,CAAC;YACjC,KAAK,cAAc;gBACjB,OAAO,GAAG,MAAM,YAAY,CAAC;YAC/B,KAAK,oBAAoB;gBACvB,OAAO,WAAW,IAAI,CAAC,EAAE,uBAAuB,CAAC;YACnD;gBACE,OAAO,GAAG,MAAM,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAEO,WAAW,CACjB,IAAU,EACV,UAA4C,EAC5C,KAOC;QAED,MAAM,IAAI,GAAG,IAAA,uBAAQ,EAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,MAAM,GAA4C;YACtD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE;YAChD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE;SACtE,CAAC;QAEF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,KAAK,EAAE,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,eAAe;gBACtB,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;aACtC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,EAAE,SAAS,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,kBAAkB;gBACzB,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS,MAAM,KAAK,CAAC,OAAO,EAAE;aAC/C,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AA5NY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;GACA,eAAe,CA4N3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.service.d.ts","sourceRoot":"","sources":["../../src/redis/redis.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"redis.service.d.ts","sourceRoot":"","sources":["../../src/redis/redis.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,MAAM,SAAS,CAAC;AAG5B,qBACa,YAAa,YAAW,eAAe;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;;IAS/B,4CAA4C;IAC5C,SAAS,IAAI,KAAK;IAIZ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI3C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrD,MAAM,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvC"}
|
|
@@ -15,11 +15,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.RedisService = void 0;
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
17
17
|
const ioredis_1 = __importDefault(require("ioredis"));
|
|
18
|
+
const config_1 = require("../common/config");
|
|
18
19
|
let RedisService = class RedisService {
|
|
19
20
|
client;
|
|
20
21
|
constructor() {
|
|
21
|
-
|
|
22
|
-
this.client = new ioredis_1.default(url, {
|
|
22
|
+
this.client = new ioredis_1.default((0, config_1.getRedisUrl)(), {
|
|
23
23
|
maxRetriesPerRequest: null, // required for BullMQ compatibility
|
|
24
24
|
enableReadyCheck: true,
|
|
25
25
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../src/redis/redis.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA6D;AAC7D,sDAA4B;
|
|
1
|
+
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../src/redis/redis.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA6D;AAC7D,sDAA4B;AAC5B,6CAA+C;AAGxC,IAAM,YAAY,GAAlB,MAAM,YAAY;IACN,MAAM,CAAQ;IAE/B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAK,CAAC,IAAA,oBAAW,GAAE,EAAE;YACrC,oBAAoB,EAAE,IAAI,EAAE,oCAAoC;YAChE,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;IAED,4CAA4C;IAC5C,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAa;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAG,IAAc;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,OAAe,EAAE,KAAa;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,KAAa;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,OAAe;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAG,IAAc;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YAC1E,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;CACF,CAAA;AAxDY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;;GACA,YAAY,CAwDxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-audit.controller.d.ts","sourceRoot":"","sources":["../../../src/web/admin/admin-audit.controller.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-audit.controller.d.ts","sourceRoot":"","sources":["../../../src/web/admin/admin-audit.controller.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AAGtF,qBAGa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,kBAAkB;IAG7D,aAAa,CACK,KAAK,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM;CASnC"}
|
|
@@ -19,6 +19,7 @@ const jwt_auth_guard_1 = require("../../auth/guards/jwt-auth.guard");
|
|
|
19
19
|
const roles_guard_1 = require("../../auth/guards/roles.guard");
|
|
20
20
|
const roles_decorator_1 = require("../../auth/decorators/roles.decorator");
|
|
21
21
|
const audit_log_repository_1 = require("../../database/repositories/audit-log.repository");
|
|
22
|
+
const pagination_1 = require("../../common/pagination");
|
|
22
23
|
let AdminAuditController = class AdminAuditController {
|
|
23
24
|
auditLogRepo;
|
|
24
25
|
constructor(auditLogRepo) {
|
|
@@ -26,7 +27,7 @@ let AdminAuditController = class AdminAuditController {
|
|
|
26
27
|
}
|
|
27
28
|
listAuditLogs(limit, cursor, userId, action) {
|
|
28
29
|
return this.auditLogRepo.listPaginated({
|
|
29
|
-
limit:
|
|
30
|
+
limit: (0, pagination_1.clampLimit)(limit),
|
|
30
31
|
cursor: cursor || undefined,
|
|
31
32
|
userId: userId ? parseInt(userId, 10) : undefined,
|
|
32
33
|
action: action || undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-audit.controller.js","sourceRoot":"","sources":["../../../src/web/admin/admin-audit.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAKwB;AACxB,mDAAqD;AACrD,qEAAgE;AAChE,+DAA2D;AAC3D,2EAA8D;AAC9D,2FAAsF;
|
|
1
|
+
{"version":3,"file":"admin-audit.controller.js","sourceRoot":"","sources":["../../../src/web/admin/admin-audit.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAKwB;AACxB,mDAAqD;AACrD,qEAAgE;AAChE,+DAA2D;AAC3D,2EAA8D;AAC9D,2FAAsF;AACtF,wDAAqD;AAK9C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACF;IAA7B,YAA6B,YAAgC;QAAhC,iBAAY,GAAZ,YAAY,CAAoB;IAAG,CAAC;IAGjE,aAAa,CACK,KAAc,EACb,MAAe,EACf,MAAe,EACf,MAAe;QAEhC,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YACrC,KAAK,EAAE,IAAA,uBAAU,EAAC,KAAK,CAAC;YACxB,MAAM,EAAE,MAAM,IAAI,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YACjD,MAAM,EAAE,MAAM,IAAI,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAjBY,oDAAoB;AAI/B;IADC,IAAA,YAAG,GAAE;IAEH,WAAA,IAAA,cAAK,EAAC,OAAO,CAAC,CAAA;IACd,WAAA,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAA;IACf,WAAA,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAA;IACf,WAAA,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAA;;;;yDAQjB;+BAhBU,oBAAoB;IAHhC,IAAA,mBAAU,EAAC,sBAAsB,CAAC;IAClC,IAAA,kBAAS,EAAC,6BAAY,EAAE,wBAAU,CAAC;IACnC,IAAA,uBAAK,EAAC,wBAAa,CAAC,KAAK,CAAC;qCAEkB,yCAAkB;GADlD,oBAAoB,CAiBhC"}
|
|
@@ -1,71 +1,35 @@
|
|
|
1
1
|
import { BotRepository } from '../../database/repositories/bot.repository';
|
|
2
2
|
import { AuditLogRepository } from '../../database/repositories/audit-log.repository';
|
|
3
3
|
import { CryptoService } from '../../common/crypto.service';
|
|
4
|
-
|
|
5
|
-
user: {
|
|
6
|
-
sub: number;
|
|
7
|
-
name: string;
|
|
8
|
-
role: string;
|
|
9
|
-
};
|
|
10
|
-
}
|
|
4
|
+
import type { AuthenticatedRequest } from '../../auth/authenticated-request';
|
|
11
5
|
export declare class AdminBotController {
|
|
12
6
|
private readonly botRepo;
|
|
13
7
|
private readonly auditLogRepo;
|
|
14
8
|
private readonly cryptoService;
|
|
15
9
|
constructor(botRepo: BotRepository, auditLogRepo: AuditLogRepository, cryptoService: CryptoService);
|
|
16
|
-
listBots():
|
|
17
|
-
id: number;
|
|
18
|
-
platform: string;
|
|
19
|
-
appId: string;
|
|
20
|
-
name: string;
|
|
21
|
-
status: string;
|
|
22
|
-
createdAt: string;
|
|
23
|
-
}[];
|
|
10
|
+
listBots(): Omit<import("../../database/repositories/bot.repository").BotInstance, "appSecret">[];
|
|
24
11
|
createBot(body: {
|
|
25
12
|
platform: string;
|
|
26
13
|
appId: string;
|
|
27
14
|
appSecret: string;
|
|
28
15
|
webhookToken?: string;
|
|
29
16
|
name: string;
|
|
30
|
-
}, req: AuthenticatedRequest):
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
};
|
|
38
|
-
listAllBindings(): ({
|
|
39
|
-
id: number;
|
|
40
|
-
botInstanceId: number;
|
|
41
|
-
platformChatId: string;
|
|
42
|
-
projectKey: string | null;
|
|
43
|
-
chatName: string | null;
|
|
44
|
-
createdAt: string;
|
|
45
|
-
} & {
|
|
17
|
+
}, req: AuthenticatedRequest): Omit<import("../../database/repositories/bot.repository").BotInstance, "appSecret">;
|
|
18
|
+
updateBot(id: number, body: {
|
|
19
|
+
name?: string;
|
|
20
|
+
appSecret?: string;
|
|
21
|
+
webhookToken?: string;
|
|
22
|
+
}, req: AuthenticatedRequest): Omit<import("../../database/repositories/bot.repository").BotInstance, "appSecret">;
|
|
23
|
+
listAllBindings(): (import("../../database/repositories/bot.repository").ChatBinding & {
|
|
46
24
|
botName: string;
|
|
47
25
|
platform: string;
|
|
48
26
|
})[];
|
|
49
|
-
listBindings(id: number):
|
|
50
|
-
id: number;
|
|
51
|
-
botInstanceId: number;
|
|
52
|
-
platformChatId: string;
|
|
53
|
-
projectKey: string | null;
|
|
54
|
-
chatName: string | null;
|
|
55
|
-
createdAt: string;
|
|
56
|
-
}[];
|
|
27
|
+
listBindings(id: number): import("../../database/repositories/bot.repository").ChatBinding[];
|
|
57
28
|
createBinding(id: number, body: {
|
|
58
29
|
platformChatId: string;
|
|
59
30
|
projectKey?: string;
|
|
60
31
|
chatName?: string;
|
|
61
|
-
}, req: AuthenticatedRequest):
|
|
62
|
-
id: number;
|
|
63
|
-
botInstanceId: number;
|
|
64
|
-
platformChatId: string;
|
|
65
|
-
projectKey: string | null;
|
|
66
|
-
chatName: string | null;
|
|
67
|
-
createdAt: string;
|
|
68
|
-
};
|
|
32
|
+
}, req: AuthenticatedRequest): import("../../database/repositories/bot.repository").ChatBinding;
|
|
69
33
|
deleteBot(id: number, req: AuthenticatedRequest): {
|
|
70
34
|
success: boolean;
|
|
71
35
|
};
|
|
@@ -75,5 +39,4 @@ export declare class AdminBotController {
|
|
|
75
39
|
success: boolean;
|
|
76
40
|
};
|
|
77
41
|
}
|
|
78
|
-
export {};
|
|
79
42
|
//# sourceMappingURL=admin-bot.controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-bot.controller.d.ts","sourceRoot":"","sources":["../../../src/web/admin/admin-bot.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"admin-bot.controller.d.ts","sourceRoot":"","sources":["../../../src/web/admin/admin-bot.controller.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,qBAGa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,kBAAkB,EAChC,aAAa,EAAE,aAAa;IAI/C,QAAQ;IAMR,SAAS,CAEP,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;KACd,EACM,GAAG,EAAE,oBAAoB;IA2ClC,SAAS,CACoB,EAAE,EAAE,MAAM,EAErC,IAAI,EAAE;QACJ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,EACM,GAAG,EAAE,oBAAoB;IA0BlC,eAAe;;;;IAKf,YAAY,CAA4B,EAAE,EAAE,MAAM;IASlD,aAAa,CACgB,EAAE,EAAE,MAAM,EAErC,IAAI,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EACjE,GAAG,EAAE,oBAAoB;IAyBlC,SAAS,CACoB,EAAE,EAAE,MAAM,EAC9B,GAAG,EAAE,oBAAoB;;;IAoBlC,aAAa,CACgB,EAAE,EAAE,MAAM,EAC7B,IAAI,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,EACjC,GAAG,EAAE,oBAAoB;;;CAqBnC"}
|
|
@@ -32,17 +32,25 @@ let AdminBotController = class AdminBotController {
|
|
|
32
32
|
}
|
|
33
33
|
listBots() {
|
|
34
34
|
const bots = this.botRepo.findAll();
|
|
35
|
-
|
|
36
|
-
return bots.map((b) => ({
|
|
37
|
-
id: b.id,
|
|
38
|
-
platform: b.platform,
|
|
39
|
-
appId: b.appId,
|
|
40
|
-
name: b.name,
|
|
41
|
-
status: b.status,
|
|
42
|
-
createdAt: b.createdAt,
|
|
43
|
-
}));
|
|
35
|
+
return bots.map(bot_repository_1.BotRepository.stripSecrets);
|
|
44
36
|
}
|
|
45
37
|
createBot(body, req) {
|
|
38
|
+
// Validate platform
|
|
39
|
+
const validPlatforms = Object.values(protocol_1.Platform);
|
|
40
|
+
if (!validPlatforms.includes(body.platform)) {
|
|
41
|
+
throw new common_1.BadRequestException(`Invalid platform. Must be one of: ${validPlatforms.join(', ')}`);
|
|
42
|
+
}
|
|
43
|
+
// Validate appId
|
|
44
|
+
if (!body.appId || typeof body.appId !== 'string' || body.appId.trim().length === 0) {
|
|
45
|
+
throw new common_1.BadRequestException('appId must be a non-empty string');
|
|
46
|
+
}
|
|
47
|
+
if (body.appId.length > 200) {
|
|
48
|
+
throw new common_1.BadRequestException('appId must be at most 200 characters');
|
|
49
|
+
}
|
|
50
|
+
// Validate appSecret
|
|
51
|
+
if (!body.appSecret || typeof body.appSecret !== 'string' || body.appSecret.trim().length === 0) {
|
|
52
|
+
throw new common_1.BadRequestException('appSecret must be a non-empty string');
|
|
53
|
+
}
|
|
46
54
|
// Encrypt appSecret before storage
|
|
47
55
|
const encryptedSecret = this.cryptoService.encryptAes(body.appSecret);
|
|
48
56
|
const bot = this.botRepo.create({
|
|
@@ -58,14 +66,29 @@ let AdminBotController = class AdminBotController {
|
|
|
58
66
|
resource: `bot:${bot.id}`,
|
|
59
67
|
detail: `Created bot '${bot.name}' for platform '${bot.platform}'`,
|
|
60
68
|
});
|
|
61
|
-
return
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
};
|
|
69
|
+
return bot_repository_1.BotRepository.stripSecrets(bot);
|
|
70
|
+
}
|
|
71
|
+
updateBot(id, body, req) {
|
|
72
|
+
const bot = this.botRepo.findById(id);
|
|
73
|
+
if (!bot) {
|
|
74
|
+
throw new common_1.NotFoundException(`Bot #${id} not found`);
|
|
75
|
+
}
|
|
76
|
+
const updates = {};
|
|
77
|
+
if (body.name !== undefined)
|
|
78
|
+
updates.name = body.name;
|
|
79
|
+
if (body.appSecret)
|
|
80
|
+
updates.appSecret = this.cryptoService.encryptAes(body.appSecret);
|
|
81
|
+
if (body.webhookToken !== undefined)
|
|
82
|
+
updates.webhookToken = body.webhookToken;
|
|
83
|
+
this.botRepo.update(id, updates);
|
|
84
|
+
this.auditLogRepo.create({
|
|
85
|
+
userId: req.user.sub,
|
|
86
|
+
action: 'bot_update',
|
|
87
|
+
resource: `bot:${id}`,
|
|
88
|
+
detail: `Updated bot '${bot.name}'`,
|
|
89
|
+
});
|
|
90
|
+
const updated = this.botRepo.findById(id);
|
|
91
|
+
return bot_repository_1.BotRepository.stripSecrets(updated);
|
|
69
92
|
}
|
|
70
93
|
listAllBindings() {
|
|
71
94
|
return this.botRepo.findAllBindings();
|
|
@@ -115,7 +138,7 @@ let AdminBotController = class AdminBotController {
|
|
|
115
138
|
if (!bot) {
|
|
116
139
|
throw new common_1.NotFoundException(`Bot #${id} not found`);
|
|
117
140
|
}
|
|
118
|
-
const deleted = this.botRepo.deleteBinding(body.platformChatId);
|
|
141
|
+
const deleted = this.botRepo.deleteBinding(id, body.platformChatId);
|
|
119
142
|
if (!deleted) {
|
|
120
143
|
throw new common_1.NotFoundException('Binding not found');
|
|
121
144
|
}
|
|
@@ -143,6 +166,15 @@ __decorate([
|
|
|
143
166
|
__metadata("design:paramtypes", [Object, Object]),
|
|
144
167
|
__metadata("design:returntype", void 0)
|
|
145
168
|
], AdminBotController.prototype, "createBot", null);
|
|
169
|
+
__decorate([
|
|
170
|
+
(0, common_1.Put)(':id'),
|
|
171
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
|
|
172
|
+
__param(1, (0, common_1.Body)()),
|
|
173
|
+
__param(2, (0, common_1.Req)()),
|
|
174
|
+
__metadata("design:type", Function),
|
|
175
|
+
__metadata("design:paramtypes", [Number, Object, Object]),
|
|
176
|
+
__metadata("design:returntype", void 0)
|
|
177
|
+
], AdminBotController.prototype, "updateBot", null);
|
|
146
178
|
__decorate([
|
|
147
179
|
(0, common_1.Get)('all-bindings'),
|
|
148
180
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-bot.controller.js","sourceRoot":"","sources":["../../../src/web/admin/admin-bot.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"admin-bot.controller.js","sourceRoot":"","sources":["../../../src/web/admin/admin-bot.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,52 +1,39 @@
|
|
|
1
|
-
import { DeveloperRole } from '@overlordai/protocol';
|
|
1
|
+
import { DeveloperRole, DeveloperStatus } from '@overlordai/protocol';
|
|
2
2
|
import type { CreateDeveloperRequest } from '@overlordai/protocol';
|
|
3
3
|
import { DeveloperRepository } from '../../database/repositories/developer.repository';
|
|
4
4
|
import { AuditLogRepository } from '../../database/repositories/audit-log.repository';
|
|
5
5
|
import { CryptoService } from '../../common/crypto.service';
|
|
6
|
-
|
|
7
|
-
user: {
|
|
8
|
-
sub: number;
|
|
9
|
-
name: string;
|
|
10
|
-
role: string;
|
|
11
|
-
};
|
|
12
|
-
}
|
|
6
|
+
import type { AuthenticatedRequest } from '../../auth/authenticated-request';
|
|
13
7
|
export declare class AdminDeveloperController {
|
|
14
8
|
private readonly developerRepo;
|
|
15
9
|
private readonly auditLogRepo;
|
|
16
10
|
private readonly cryptoService;
|
|
17
11
|
constructor(developerRepo: DeveloperRepository, auditLogRepo: AuditLogRepository, cryptoService: CryptoService);
|
|
18
|
-
listDevelopers(): {
|
|
19
|
-
id: number;
|
|
20
|
-
name: string;
|
|
21
|
-
gitName: string;
|
|
22
|
-
gitEmail: string;
|
|
23
|
-
role: DeveloperRole;
|
|
24
|
-
status: string;
|
|
12
|
+
listDevelopers(q?: string): {
|
|
25
13
|
totpEnabled: boolean;
|
|
26
|
-
createdAt: string;
|
|
27
|
-
}[];
|
|
28
|
-
createDeveloper(body: CreateDeveloperRequest, req: AuthenticatedRequest): Promise<{
|
|
29
14
|
id: number;
|
|
15
|
+
status: DeveloperStatus;
|
|
16
|
+
createdAt: string;
|
|
30
17
|
name: string;
|
|
18
|
+
role: DeveloperRole;
|
|
31
19
|
gitName: string;
|
|
32
20
|
gitEmail: string;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}>;
|
|
21
|
+
platformUids: Record<string, string>;
|
|
22
|
+
}[];
|
|
23
|
+
createDeveloper(body: CreateDeveloperRequest, req: AuthenticatedRequest): Promise<import("@overlordai/protocol").DeveloperPublic>;
|
|
37
24
|
updateDeveloper(id: number, body: Record<string, unknown>, req: AuthenticatedRequest): {
|
|
25
|
+
totpEnabled: boolean;
|
|
38
26
|
id: number;
|
|
27
|
+
status: DeveloperStatus;
|
|
28
|
+
createdAt: string;
|
|
39
29
|
name: string;
|
|
30
|
+
role: DeveloperRole;
|
|
40
31
|
gitName: string;
|
|
41
32
|
gitEmail: string;
|
|
42
|
-
|
|
43
|
-
status: string;
|
|
44
|
-
totpEnabled: boolean;
|
|
45
|
-
createdAt: string;
|
|
33
|
+
platformUids: Record<string, string>;
|
|
46
34
|
};
|
|
47
35
|
resetTotp(id: number, req: AuthenticatedRequest): {
|
|
48
36
|
success: boolean;
|
|
49
37
|
};
|
|
50
38
|
}
|
|
51
|
-
export {};
|
|
52
39
|
//# sourceMappingURL=admin-developer.controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-developer.controller.d.ts","sourceRoot":"","sources":["../../../src/web/admin/admin-developer.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"admin-developer.controller.d.ts","sourceRoot":"","sources":["../../../src/web/admin/admin-developer.controller.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAInE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,qBAGa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,aAAa,EAAE,mBAAmB,EAClC,YAAY,EAAE,kBAAkB,EAChC,aAAa,EAAE,aAAa;IAI/C,cAAc,CAAa,CAAC,CAAC,EAAE,MAAM;;;;;;;;;;;IAW/B,eAAe,CACX,IAAI,EAAE,sBAAsB,EAC7B,GAAG,EAAE,oBAAoB;IA+BlC,eAAe,CACc,EAAE,EAAE,MAAM,EAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,GAAG,EAAE,oBAAoB;;;;;;;;;;;IAkFlC,SAAS,CACoB,EAAE,EAAE,MAAM,EAC9B,GAAG,EAAE,oBAAoB;;;CAsBnC"}
|
|
@@ -14,6 +14,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.AdminDeveloperController = void 0;
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
17
|
+
const validation_1 = require("@overlordai/validation");
|
|
17
18
|
const protocol_1 = require("@overlordai/protocol");
|
|
18
19
|
const jwt_auth_guard_1 = require("../../auth/guards/jwt-auth.guard");
|
|
19
20
|
const roles_guard_1 = require("../../auth/guards/roles.guard");
|
|
@@ -30,21 +31,23 @@ let AdminDeveloperController = class AdminDeveloperController {
|
|
|
30
31
|
this.auditLogRepo = auditLogRepo;
|
|
31
32
|
this.cryptoService = cryptoService;
|
|
32
33
|
}
|
|
33
|
-
listDevelopers() {
|
|
34
|
-
const developers =
|
|
35
|
-
|
|
34
|
+
listDevelopers(q) {
|
|
35
|
+
const developers = q
|
|
36
|
+
? this.developerRepo.findBySearch(q)
|
|
37
|
+
: this.developerRepo.findAll();
|
|
36
38
|
return developers.map((d) => ({
|
|
37
|
-
|
|
38
|
-
name: d.name,
|
|
39
|
-
gitName: d.gitName,
|
|
40
|
-
gitEmail: d.gitEmail,
|
|
41
|
-
role: d.role,
|
|
42
|
-
status: d.status,
|
|
39
|
+
...developer_repository_1.DeveloperRepository.stripSecrets(d),
|
|
43
40
|
totpEnabled: !!d.totpSecret,
|
|
44
|
-
createdAt: d.createdAt,
|
|
45
41
|
}));
|
|
46
42
|
}
|
|
47
43
|
async createDeveloper(body, req) {
|
|
44
|
+
if (!body.password || (0, validation_1.validatePassword)(body.password) !== null) {
|
|
45
|
+
throw new common_1.BadRequestException('Password must be 10–20 characters with a letter, digit, and special character');
|
|
46
|
+
}
|
|
47
|
+
const validRoles = [protocol_1.DeveloperRole.DEVELOPER, protocol_1.DeveloperRole.LEAD, protocol_1.DeveloperRole.ADMIN];
|
|
48
|
+
if (body.role && !validRoles.includes(body.role)) {
|
|
49
|
+
throw new common_1.BadRequestException(`role must be one of: ${validRoles.join(', ')}`);
|
|
50
|
+
}
|
|
48
51
|
const passwordHash = await this.cryptoService.hashPassword(body.password);
|
|
49
52
|
const developer = this.developerRepo.create({
|
|
50
53
|
name: body.name,
|
|
@@ -59,27 +62,63 @@ let AdminDeveloperController = class AdminDeveloperController {
|
|
|
59
62
|
resource: `developer:${developer.id}`,
|
|
60
63
|
detail: `Created developer '${developer.name}' with role '${developer.role}'`,
|
|
61
64
|
});
|
|
62
|
-
return
|
|
63
|
-
id: developer.id,
|
|
64
|
-
name: developer.name,
|
|
65
|
-
gitName: developer.gitName,
|
|
66
|
-
gitEmail: developer.gitEmail,
|
|
67
|
-
role: developer.role,
|
|
68
|
-
status: developer.status,
|
|
69
|
-
createdAt: developer.createdAt,
|
|
70
|
-
};
|
|
65
|
+
return developer_repository_1.DeveloperRepository.stripSecrets(developer);
|
|
71
66
|
}
|
|
72
67
|
updateDeveloper(id, body, req) {
|
|
73
68
|
const developer = this.developerRepo.findById(id);
|
|
74
69
|
if (!developer) {
|
|
75
70
|
throw new common_1.NotFoundException(`Developer #${id} not found`);
|
|
76
71
|
}
|
|
77
|
-
const allowed = ['name', 'role', 'status', 'gitName', 'gitEmail'];
|
|
72
|
+
const allowed = ['name', 'role', 'status', 'gitName', 'gitEmail', 'platformUids'];
|
|
78
73
|
const sanitized = {};
|
|
79
74
|
for (const key of allowed) {
|
|
80
75
|
if (key in body)
|
|
81
76
|
sanitized[key] = body[key];
|
|
82
77
|
}
|
|
78
|
+
// Validate role and status against allowed values
|
|
79
|
+
if ('role' in sanitized && !Object.values(protocol_1.DeveloperRole).includes(sanitized.role)) {
|
|
80
|
+
throw new common_1.BadRequestException(`Invalid role. Must be one of: ${Object.values(protocol_1.DeveloperRole).join(', ')}`);
|
|
81
|
+
}
|
|
82
|
+
if ('status' in sanitized && !Object.values(protocol_1.DeveloperStatus).includes(sanitized.status)) {
|
|
83
|
+
throw new common_1.BadRequestException(`Invalid status. Must be one of: ${Object.values(protocol_1.DeveloperStatus).join(', ')}`);
|
|
84
|
+
}
|
|
85
|
+
if ('platformUids' in sanitized) {
|
|
86
|
+
const uids = sanitized.platformUids;
|
|
87
|
+
if (typeof uids !== 'object' || uids === null || Array.isArray(uids)) {
|
|
88
|
+
throw new common_1.BadRequestException('platformUids must be an object');
|
|
89
|
+
}
|
|
90
|
+
for (const [key, val] of Object.entries(uids)) {
|
|
91
|
+
if (typeof val !== 'string') {
|
|
92
|
+
throw new common_1.BadRequestException(`platformUids.${key} must be a string`);
|
|
93
|
+
}
|
|
94
|
+
// Skip conflict check for empty values (unset operations)
|
|
95
|
+
if (!val)
|
|
96
|
+
continue;
|
|
97
|
+
// Check for conflicts — same platformUid must not be linked to another developer
|
|
98
|
+
const existing = this.developerRepo.findByPlatformUid(key, val);
|
|
99
|
+
if (existing && existing.id !== id) {
|
|
100
|
+
throw new common_1.ConflictException(`${key} account "${val}" is already linked to developer: ${existing.name}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Prevent the last admin from demoting themselves or deactivating
|
|
105
|
+
if (id === req.user.sub) {
|
|
106
|
+
const needsAdminCheck = ('role' in sanitized && sanitized.role !== protocol_1.DeveloperRole.ADMIN) ||
|
|
107
|
+
('status' in sanitized && sanitized.status !== protocol_1.DeveloperStatus.ACTIVE);
|
|
108
|
+
if (needsAdminCheck) {
|
|
109
|
+
const activeAdminCount = this.developerRepo.countActiveAdmins();
|
|
110
|
+
if (activeAdminCount <= 1) {
|
|
111
|
+
throw new common_1.BadRequestException('Cannot change: you are the last active admin');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Merge platformUids with existing values instead of replacing
|
|
116
|
+
if ('platformUids' in sanitized) {
|
|
117
|
+
const existing = developer.platformUids ?? {};
|
|
118
|
+
const merged = { ...existing, ...sanitized.platformUids };
|
|
119
|
+
// Remove entries with empty string values (allows unsetting)
|
|
120
|
+
sanitized.platformUids = Object.fromEntries(Object.entries(merged).filter(([, v]) => v !== ''));
|
|
121
|
+
}
|
|
83
122
|
this.developerRepo.update(id, sanitized);
|
|
84
123
|
this.auditLogRepo.create({
|
|
85
124
|
userId: req.user.sub,
|
|
@@ -89,14 +128,8 @@ let AdminDeveloperController = class AdminDeveloperController {
|
|
|
89
128
|
});
|
|
90
129
|
const updated = this.developerRepo.findById(id);
|
|
91
130
|
return {
|
|
92
|
-
|
|
93
|
-
name: updated.name,
|
|
94
|
-
gitName: updated.gitName,
|
|
95
|
-
gitEmail: updated.gitEmail,
|
|
96
|
-
role: updated.role,
|
|
97
|
-
status: updated.status,
|
|
131
|
+
...developer_repository_1.DeveloperRepository.stripSecrets(updated),
|
|
98
132
|
totpEnabled: !!updated.totpSecret,
|
|
99
|
-
createdAt: updated.createdAt,
|
|
100
133
|
};
|
|
101
134
|
}
|
|
102
135
|
resetTotp(id, req) {
|
|
@@ -120,8 +153,9 @@ let AdminDeveloperController = class AdminDeveloperController {
|
|
|
120
153
|
exports.AdminDeveloperController = AdminDeveloperController;
|
|
121
154
|
__decorate([
|
|
122
155
|
(0, common_1.Get)(),
|
|
156
|
+
__param(0, (0, common_1.Query)('q')),
|
|
123
157
|
__metadata("design:type", Function),
|
|
124
|
-
__metadata("design:paramtypes", []),
|
|
158
|
+
__metadata("design:paramtypes", [String]),
|
|
125
159
|
__metadata("design:returntype", void 0)
|
|
126
160
|
], AdminDeveloperController.prototype, "listDevelopers", null);
|
|
127
161
|
__decorate([
|