@overlordai/server 1.0.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/database/migrations/001-init-schema.sql +226 -0
- package/database/migrations/002-add-indexes.sql +17 -0
- package/database/migrations/003-add-settings-table.sql +4 -0
- package/database/migrations/004-add-developer-id-index.sql +5 -0
- package/dist/adapters/adapter.interface.d.ts +41 -0
- package/dist/adapters/adapter.interface.d.ts.map +1 -0
- package/dist/adapters/adapter.interface.js +6 -0
- package/dist/adapters/adapter.interface.js.map +1 -0
- package/dist/adapters/adapter.module.d.ts +3 -0
- package/dist/adapters/adapter.module.d.ts.map +1 -0
- package/dist/adapters/adapter.module.js +54 -0
- package/dist/adapters/adapter.module.js.map +1 -0
- package/dist/adapters/adapter.registry.d.ts +19 -0
- package/dist/adapters/adapter.registry.d.ts.map +1 -0
- package/dist/adapters/adapter.registry.js +51 -0
- package/dist/adapters/adapter.registry.js.map +1 -0
- package/dist/adapters/lark/lark-card.builder.d.ts +48 -0
- package/dist/adapters/lark/lark-card.builder.d.ts.map +1 -0
- package/dist/adapters/lark/lark-card.builder.js +259 -0
- package/dist/adapters/lark/lark-card.builder.js.map +1 -0
- package/dist/adapters/lark/lark-message.parser.d.ts +51 -0
- package/dist/adapters/lark/lark-message.parser.d.ts.map +1 -0
- package/dist/adapters/lark/lark-message.parser.js +189 -0
- package/dist/adapters/lark/lark-message.parser.js.map +1 -0
- package/dist/adapters/lark/lark-signature.d.ts +13 -0
- package/dist/adapters/lark/lark-signature.d.ts.map +1 -0
- package/dist/adapters/lark/lark-signature.js +58 -0
- package/dist/adapters/lark/lark-signature.js.map +1 -0
- package/dist/adapters/lark/lark.adapter.d.ts +65 -0
- package/dist/adapters/lark/lark.adapter.d.ts.map +1 -0
- package/dist/adapters/lark/lark.adapter.js +565 -0
- package/dist/adapters/lark/lark.adapter.js.map +1 -0
- package/dist/adapters/lark/lark.controller.d.ts +21 -0
- package/dist/adapters/lark/lark.controller.d.ts.map +1 -0
- package/dist/adapters/lark/lark.controller.js +120 -0
- package/dist/adapters/lark/lark.controller.js.map +1 -0
- package/dist/adapters/slack/slack.adapter.d.ts +19 -0
- package/dist/adapters/slack/slack.adapter.d.ts.map +1 -0
- package/dist/adapters/slack/slack.adapter.js +42 -0
- package/dist/adapters/slack/slack.adapter.js.map +1 -0
- package/dist/app.module.d.ts +5 -0
- package/dist/app.module.d.ts.map +1 -0
- package/dist/app.module.js +48 -0
- package/dist/app.module.js.map +1 -0
- package/dist/auth/auth.controller.d.ts +15 -0
- package/dist/auth/auth.controller.d.ts.map +1 -0
- package/dist/auth/auth.controller.js +67 -0
- package/dist/auth/auth.controller.js.map +1 -0
- package/dist/auth/auth.module.d.ts +3 -0
- package/dist/auth/auth.module.d.ts.map +1 -0
- package/dist/auth/auth.module.js +46 -0
- package/dist/auth/auth.module.js.map +1 -0
- package/dist/auth/auth.service.d.ts +62 -0
- package/dist/auth/auth.service.d.ts.map +1 -0
- package/dist/auth/auth.service.js +307 -0
- package/dist/auth/auth.service.js.map +1 -0
- package/dist/auth/decorators/allow-totp-setup.decorator.d.ts +3 -0
- package/dist/auth/decorators/allow-totp-setup.decorator.d.ts.map +1 -0
- package/dist/auth/decorators/allow-totp-setup.decorator.js +8 -0
- package/dist/auth/decorators/allow-totp-setup.decorator.js.map +1 -0
- package/dist/auth/decorators/project-roles.decorator.d.ts +4 -0
- package/dist/auth/decorators/project-roles.decorator.d.ts.map +1 -0
- package/dist/auth/decorators/project-roles.decorator.js +8 -0
- package/dist/auth/decorators/project-roles.decorator.js.map +1 -0
- package/dist/auth/decorators/roles.decorator.d.ts +4 -0
- package/dist/auth/decorators/roles.decorator.d.ts.map +1 -0
- package/dist/auth/decorators/roles.decorator.js +8 -0
- package/dist/auth/decorators/roles.decorator.js.map +1 -0
- package/dist/auth/extract-user.middleware.d.ts +21 -0
- package/dist/auth/extract-user.middleware.d.ts.map +1 -0
- package/dist/auth/extract-user.middleware.js +57 -0
- package/dist/auth/extract-user.middleware.js.map +1 -0
- package/dist/auth/guards/jwt-auth.guard.d.ts +14 -0
- package/dist/auth/guards/jwt-auth.guard.d.ts.map +1 -0
- package/dist/auth/guards/jwt-auth.guard.js +139 -0
- package/dist/auth/guards/jwt-auth.guard.js.map +1 -0
- package/dist/auth/guards/project-role.guard.d.ts +10 -0
- package/dist/auth/guards/project-role.guard.d.ts.map +1 -0
- package/dist/auth/guards/project-role.guard.js +72 -0
- package/dist/auth/guards/project-role.guard.js.map +1 -0
- package/dist/auth/guards/roles.guard.d.ts +8 -0
- package/dist/auth/guards/roles.guard.d.ts.map +1 -0
- package/dist/auth/guards/roles.guard.js +56 -0
- package/dist/auth/guards/roles.guard.js.map +1 -0
- package/dist/auth/jwt.strategy.d.ts +23 -0
- package/dist/auth/jwt.strategy.d.ts.map +1 -0
- package/dist/auth/jwt.strategy.js +49 -0
- package/dist/auth/jwt.strategy.js.map +1 -0
- package/dist/common/crypto.service.d.ts +31 -0
- package/dist/common/crypto.service.d.ts.map +1 -0
- package/dist/common/crypto.service.js +120 -0
- package/dist/common/crypto.service.js.map +1 -0
- package/dist/common/error-filter.d.ts +6 -0
- package/dist/common/error-filter.d.ts.map +1 -0
- package/dist/common/error-filter.js +78 -0
- package/dist/common/error-filter.js.map +1 -0
- package/dist/common/health.controller.d.ts +13 -0
- package/dist/common/health.controller.d.ts.map +1 -0
- package/dist/common/health.controller.js +75 -0
- package/dist/common/health.controller.js.map +1 -0
- package/dist/common/logger.service.d.ts +11 -0
- package/dist/common/logger.service.d.ts.map +1 -0
- package/dist/common/logger.service.js +48 -0
- package/dist/common/logger.service.js.map +1 -0
- package/dist/common/pagination.d.ts +18 -0
- package/dist/common/pagination.d.ts.map +1 -0
- package/dist/common/pagination.js +39 -0
- package/dist/common/pagination.js.map +1 -0
- package/dist/common/rate-limit.guard.d.ts +48 -0
- package/dist/common/rate-limit.guard.d.ts.map +1 -0
- package/dist/common/rate-limit.guard.js +129 -0
- package/dist/common/rate-limit.guard.js.map +1 -0
- package/dist/common/sensitive-filter.d.ts +7 -0
- package/dist/common/sensitive-filter.d.ts.map +1 -0
- package/dist/common/sensitive-filter.js +20 -0
- package/dist/common/sensitive-filter.js.map +1 -0
- package/dist/database/database.module.d.ts +3 -0
- package/dist/database/database.module.d.ts.map +1 -0
- package/dist/database/database.module.js +22 -0
- package/dist/database/database.module.js.map +1 -0
- package/dist/database/database.service.d.ts +13 -0
- package/dist/database/database.service.d.ts.map +1 -0
- package/dist/database/database.service.js +107 -0
- package/dist/database/database.service.js.map +1 -0
- package/dist/database/migration-runner.d.ts +5 -0
- package/dist/database/migration-runner.d.ts.map +1 -0
- package/dist/database/migration-runner.js +86 -0
- package/dist/database/migration-runner.js.map +1 -0
- package/dist/database/repositories/audit-log.repository.d.ts +29 -0
- package/dist/database/repositories/audit-log.repository.d.ts.map +1 -0
- package/dist/database/repositories/audit-log.repository.js +80 -0
- package/dist/database/repositories/audit-log.repository.js.map +1 -0
- package/dist/database/repositories/bot.repository.d.ts +67 -0
- package/dist/database/repositories/bot.repository.d.ts.map +1 -0
- package/dist/database/repositories/bot.repository.js +133 -0
- package/dist/database/repositories/bot.repository.js.map +1 -0
- package/dist/database/repositories/developer-token.repository.d.ts +40 -0
- package/dist/database/repositories/developer-token.repository.d.ts.map +1 -0
- package/dist/database/repositories/developer-token.repository.js +84 -0
- package/dist/database/repositories/developer-token.repository.js.map +1 -0
- package/dist/database/repositories/developer.repository.d.ts +25 -0
- package/dist/database/repositories/developer.repository.d.ts.map +1 -0
- package/dist/database/repositories/developer.repository.js +139 -0
- package/dist/database/repositories/developer.repository.js.map +1 -0
- package/dist/database/repositories/machine.repository.d.ts +39 -0
- package/dist/database/repositories/machine.repository.d.ts.map +1 -0
- package/dist/database/repositories/machine.repository.js +176 -0
- package/dist/database/repositories/machine.repository.js.map +1 -0
- package/dist/database/repositories/notification.repository.d.ts +19 -0
- package/dist/database/repositories/notification.repository.d.ts.map +1 -0
- package/dist/database/repositories/notification.repository.js +94 -0
- package/dist/database/repositories/notification.repository.js.map +1 -0
- package/dist/database/repositories/project-member.repository.d.ts +30 -0
- package/dist/database/repositories/project-member.repository.d.ts.map +1 -0
- package/dist/database/repositories/project-member.repository.js +75 -0
- package/dist/database/repositories/project-member.repository.js.map +1 -0
- package/dist/database/repositories/project.repository.d.ts +24 -0
- package/dist/database/repositories/project.repository.d.ts.map +1 -0
- package/dist/database/repositories/project.repository.js +154 -0
- package/dist/database/repositories/project.repository.js.map +1 -0
- package/dist/database/repositories/session.repository.d.ts +19 -0
- package/dist/database/repositories/session.repository.d.ts.map +1 -0
- package/dist/database/repositories/session.repository.js +117 -0
- package/dist/database/repositories/session.repository.js.map +1 -0
- package/dist/database/repositories/task.repository.d.ts +37 -0
- package/dist/database/repositories/task.repository.d.ts.map +1 -0
- package/dist/database/repositories/task.repository.js +229 -0
- package/dist/database/repositories/task.repository.js.map +1 -0
- package/dist/database/repositories/worker-token.repository.d.ts +20 -0
- package/dist/database/repositories/worker-token.repository.d.ts.map +1 -0
- package/dist/database/repositories/worker-token.repository.js +94 -0
- package/dist/database/repositories/worker-token.repository.js.map +1 -0
- package/dist/database/repositories/workspace.repository.d.ts +19 -0
- package/dist/database/repositories/workspace.repository.d.ts.map +1 -0
- package/dist/database/repositories/workspace.repository.js +82 -0
- package/dist/database/repositories/workspace.repository.js.map +1 -0
- package/dist/dispatcher/capability.service.d.ts +50 -0
- package/dist/dispatcher/capability.service.d.ts.map +1 -0
- package/dist/dispatcher/capability.service.js +159 -0
- package/dist/dispatcher/capability.service.js.map +1 -0
- package/dist/dispatcher/cleanup.service.d.ts +23 -0
- package/dist/dispatcher/cleanup.service.d.ts.map +1 -0
- package/dist/dispatcher/cleanup.service.js +107 -0
- package/dist/dispatcher/cleanup.service.js.map +1 -0
- package/dist/dispatcher/dedup.service.d.ts +48 -0
- package/dist/dispatcher/dedup.service.d.ts.map +1 -0
- package/dist/dispatcher/dedup.service.js +189 -0
- package/dist/dispatcher/dedup.service.js.map +1 -0
- package/dist/dispatcher/dispatcher.module.d.ts +3 -0
- package/dist/dispatcher/dispatcher.module.d.ts.map +1 -0
- package/dist/dispatcher/dispatcher.module.js +76 -0
- package/dist/dispatcher/dispatcher.module.js.map +1 -0
- package/dist/dispatcher/dispatcher.service.d.ts +134 -0
- package/dist/dispatcher/dispatcher.service.d.ts.map +1 -0
- package/dist/dispatcher/dispatcher.service.js +1034 -0
- package/dist/dispatcher/dispatcher.service.js.map +1 -0
- package/dist/dispatcher/heartbeat.service.d.ts +50 -0
- package/dist/dispatcher/heartbeat.service.d.ts.map +1 -0
- package/dist/dispatcher/heartbeat.service.js +154 -0
- package/dist/dispatcher/heartbeat.service.js.map +1 -0
- package/dist/dispatcher/machine-selector.d.ts +18 -0
- package/dist/dispatcher/machine-selector.d.ts.map +1 -0
- package/dist/dispatcher/machine-selector.js +144 -0
- package/dist/dispatcher/machine-selector.js.map +1 -0
- package/dist/dispatcher/pty-relay.service.d.ts +75 -0
- package/dist/dispatcher/pty-relay.service.d.ts.map +1 -0
- package/dist/dispatcher/pty-relay.service.js +404 -0
- package/dist/dispatcher/pty-relay.service.js.map +1 -0
- package/dist/dispatcher/reconciler.d.ts +39 -0
- package/dist/dispatcher/reconciler.d.ts.map +1 -0
- package/dist/dispatcher/reconciler.js +556 -0
- package/dist/dispatcher/reconciler.js.map +1 -0
- package/dist/dispatcher/scheduler.service.d.ts +50 -0
- package/dist/dispatcher/scheduler.service.d.ts.map +1 -0
- package/dist/dispatcher/scheduler.service.js +287 -0
- package/dist/dispatcher/scheduler.service.js.map +1 -0
- package/dist/dispatcher/state-machine.d.ts +16 -0
- package/dist/dispatcher/state-machine.d.ts.map +1 -0
- package/dist/dispatcher/state-machine.js +77 -0
- package/dist/dispatcher/state-machine.js.map +1 -0
- package/dist/dispatcher/task-log-batcher.d.ts +50 -0
- package/dist/dispatcher/task-log-batcher.d.ts.map +1 -0
- package/dist/dispatcher/task-log-batcher.js +184 -0
- package/dist/dispatcher/task-log-batcher.js.map +1 -0
- package/dist/dispatcher/worker-connection.manager.d.ts +49 -0
- package/dist/dispatcher/worker-connection.manager.d.ts.map +1 -0
- package/dist/dispatcher/worker-connection.manager.js +128 -0
- package/dist/dispatcher/worker-connection.manager.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +85 -0
- package/dist/main.js.map +1 -0
- package/dist/notifier/debouncer.d.ts +39 -0
- package/dist/notifier/debouncer.d.ts.map +1 -0
- package/dist/notifier/debouncer.js +123 -0
- package/dist/notifier/debouncer.js.map +1 -0
- package/dist/notifier/notification-consumer.d.ts +88 -0
- package/dist/notifier/notification-consumer.d.ts.map +1 -0
- package/dist/notifier/notification-consumer.js +186 -0
- package/dist/notifier/notification-consumer.js.map +1 -0
- package/dist/notifier/notifier.module.d.ts +9 -0
- package/dist/notifier/notifier.module.d.ts.map +1 -0
- package/dist/notifier/notifier.module.js +58 -0
- package/dist/notifier/notifier.module.js.map +1 -0
- package/dist/notifier/notifier.service.d.ts +40 -0
- package/dist/notifier/notifier.service.d.ts.map +1 -0
- package/dist/notifier/notifier.service.js +191 -0
- package/dist/notifier/notifier.service.js.map +1 -0
- package/dist/notifier/template.service.d.ts +42 -0
- package/dist/notifier/template.service.d.ts.map +1 -0
- package/dist/notifier/template.service.js +201 -0
- package/dist/notifier/template.service.js.map +1 -0
- package/dist/redis/redis.module.d.ts +3 -0
- package/dist/redis/redis.module.d.ts.map +1 -0
- package/dist/redis/redis.module.js +22 -0
- package/dist/redis/redis.module.js.map +1 -0
- package/dist/redis/redis.service.d.ts +19 -0
- package/dist/redis/redis.service.d.ts.map +1 -0
- package/dist/redis/redis.service.js +69 -0
- package/dist/redis/redis.service.js.map +1 -0
- package/dist/web/admin/admin-audit.controller.d.ts +7 -0
- package/dist/web/admin/admin-audit.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-audit.controller.js +53 -0
- package/dist/web/admin/admin-audit.controller.js.map +1 -0
- package/dist/web/admin/admin-bot.controller.d.ts +79 -0
- package/dist/web/admin/admin-bot.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-bot.controller.js +193 -0
- package/dist/web/admin/admin-bot.controller.js.map +1 -0
- package/dist/web/admin/admin-developer.controller.d.ts +52 -0
- package/dist/web/admin/admin-developer.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-developer.controller.js +160 -0
- package/dist/web/admin/admin-developer.controller.js.map +1 -0
- package/dist/web/admin/admin-machine.controller.d.ts +64 -0
- package/dist/web/admin/admin-machine.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-machine.controller.js +111 -0
- package/dist/web/admin/admin-machine.controller.js.map +1 -0
- package/dist/web/admin/admin-project.controller.d.ts +45 -0
- package/dist/web/admin/admin-project.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-project.controller.js +207 -0
- package/dist/web/admin/admin-project.controller.js.map +1 -0
- package/dist/web/admin/admin-settings.controller.d.ts +18 -0
- package/dist/web/admin/admin-settings.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-settings.controller.js +93 -0
- package/dist/web/admin/admin-settings.controller.js.map +1 -0
- package/dist/web/admin/admin-token.controller.d.ts +45 -0
- package/dist/web/admin/admin-token.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-token.controller.js +182 -0
- package/dist/web/admin/admin-token.controller.js.map +1 -0
- package/dist/web/dashboard.controller.d.ts +16 -0
- package/dist/web/dashboard.controller.d.ts.map +1 -0
- package/dist/web/dashboard.controller.js +78 -0
- package/dist/web/dashboard.controller.js.map +1 -0
- package/dist/web/dashboard.service.d.ts +39 -0
- package/dist/web/dashboard.service.d.ts.map +1 -0
- package/dist/web/dashboard.service.js +234 -0
- package/dist/web/dashboard.service.js.map +1 -0
- package/dist/web/interaction.service.d.ts +42 -0
- package/dist/web/interaction.service.d.ts.map +1 -0
- package/dist/web/interaction.service.js +102 -0
- package/dist/web/interaction.service.js.map +1 -0
- package/dist/web/machine.controller.d.ts +102 -0
- package/dist/web/machine.controller.d.ts.map +1 -0
- package/dist/web/machine.controller.js +121 -0
- package/dist/web/machine.controller.js.map +1 -0
- package/dist/web/notification.controller.d.ts +22 -0
- package/dist/web/notification.controller.d.ts.map +1 -0
- package/dist/web/notification.controller.js +70 -0
- package/dist/web/notification.controller.js.map +1 -0
- package/dist/web/profile.controller.d.ts +70 -0
- package/dist/web/profile.controller.d.ts.map +1 -0
- package/dist/web/profile.controller.js +262 -0
- package/dist/web/profile.controller.js.map +1 -0
- package/dist/web/project.controller.d.ts +8 -0
- package/dist/web/project.controller.d.ts.map +1 -0
- package/dist/web/project.controller.js +54 -0
- package/dist/web/project.controller.js.map +1 -0
- package/dist/web/pty.gateway.d.ts +32 -0
- package/dist/web/pty.gateway.d.ts.map +1 -0
- package/dist/web/pty.gateway.js +358 -0
- package/dist/web/pty.gateway.js.map +1 -0
- package/dist/web/search.service.d.ts +34 -0
- package/dist/web/search.service.d.ts.map +1 -0
- package/dist/web/search.service.js +106 -0
- package/dist/web/search.service.js.map +1 -0
- package/dist/web/task.controller.d.ts +54 -0
- package/dist/web/task.controller.d.ts.map +1 -0
- package/dist/web/task.controller.js +266 -0
- package/dist/web/task.controller.js.map +1 -0
- package/dist/web/web.module.d.ts +3 -0
- package/dist/web/web.module.d.ts.map +1 -0
- package/dist/web/web.module.js +97 -0
- package/dist/web/web.module.js.map +1 -0
- package/dist/web/worker-channel.gateway.d.ts +45 -0
- package/dist/web/worker-channel.gateway.d.ts.map +1 -0
- package/dist/web/worker-channel.gateway.js +283 -0
- package/dist/web/worker-channel.gateway.js.map +1 -0
- package/dist/web/worker.controller.d.ts +14 -0
- package/dist/web/worker.controller.d.ts.map +1 -0
- package/dist/web/worker.controller.js +73 -0
- package/dist/web/worker.controller.js.map +1 -0
- package/dist/web/workspace.controller.d.ts +109 -0
- package/dist/web/workspace.controller.d.ts.map +1 -0
- package/dist/web/workspace.controller.js +386 -0
- package/dist/web/workspace.controller.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
-- 001-init-schema.sql
|
|
2
|
+
-- Full DDL for all 14 tables + trigger
|
|
3
|
+
|
|
4
|
+
-- Tasks
|
|
5
|
+
CREATE TABLE tasks (
|
|
6
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
7
|
+
description TEXT NOT NULL,
|
|
8
|
+
fingerprint TEXT,
|
|
9
|
+
status TEXT NOT NULL DEFAULT 'QUEUED',
|
|
10
|
+
project_key TEXT NOT NULL REFERENCES projects(key),
|
|
11
|
+
machine_id TEXT REFERENCES machines(id),
|
|
12
|
+
developer_id INTEGER REFERENCES developers(id),
|
|
13
|
+
app TEXT,
|
|
14
|
+
branch TEXT,
|
|
15
|
+
mr_url TEXT,
|
|
16
|
+
mr_number INTEGER,
|
|
17
|
+
current_stage TEXT,
|
|
18
|
+
current_session_id TEXT,
|
|
19
|
+
error_message TEXT,
|
|
20
|
+
retry_count INTEGER NOT NULL DEFAULT 0,
|
|
21
|
+
revision INTEGER NOT NULL DEFAULT 0,
|
|
22
|
+
config_snapshot TEXT,
|
|
23
|
+
source_platform TEXT,
|
|
24
|
+
source_msg_id TEXT,
|
|
25
|
+
notification_msg_id TEXT,
|
|
26
|
+
source_chat_id TEXT,
|
|
27
|
+
source_app_id TEXT,
|
|
28
|
+
created_by INTEGER REFERENCES developers(id),
|
|
29
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
|
30
|
+
assigned_at TEXT,
|
|
31
|
+
started_at TEXT,
|
|
32
|
+
completed_at TEXT,
|
|
33
|
+
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
-- Task logs
|
|
37
|
+
CREATE TABLE task_logs (
|
|
38
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
39
|
+
task_id INTEGER NOT NULL REFERENCES tasks(id),
|
|
40
|
+
type TEXT NOT NULL DEFAULT 'info',
|
|
41
|
+
message TEXT NOT NULL,
|
|
42
|
+
timestamp TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
-- Worker tokens
|
|
46
|
+
CREATE TABLE worker_tokens (
|
|
47
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
48
|
+
token_hash TEXT NOT NULL,
|
|
49
|
+
label TEXT NOT NULL,
|
|
50
|
+
created_by INTEGER NOT NULL REFERENCES developers(id),
|
|
51
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
52
|
+
purpose TEXT NOT NULL DEFAULT 'enrollment',
|
|
53
|
+
used_at TEXT,
|
|
54
|
+
expires_at TEXT,
|
|
55
|
+
revoked_at TEXT,
|
|
56
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
-- Machines
|
|
60
|
+
CREATE TABLE machines (
|
|
61
|
+
id TEXT PRIMARY KEY,
|
|
62
|
+
name TEXT NOT NULL UNIQUE,
|
|
63
|
+
host TEXT NOT NULL,
|
|
64
|
+
port INTEGER NOT NULL,
|
|
65
|
+
token_id INTEGER NOT NULL REFERENCES worker_tokens(id),
|
|
66
|
+
os TEXT,
|
|
67
|
+
cpu_cores INTEGER,
|
|
68
|
+
memory_gb REAL,
|
|
69
|
+
max_slots INTEGER NOT NULL DEFAULT 2,
|
|
70
|
+
active_slots INTEGER NOT NULL DEFAULT 0,
|
|
71
|
+
cpu_usage REAL NOT NULL DEFAULT 0,
|
|
72
|
+
memory_usage REAL NOT NULL DEFAULT 0,
|
|
73
|
+
disk_usage REAL NOT NULL DEFAULT 0,
|
|
74
|
+
load_threshold REAL NOT NULL DEFAULT 0.85,
|
|
75
|
+
tags TEXT NOT NULL DEFAULT '[]',
|
|
76
|
+
capabilities TEXT NOT NULL DEFAULT '[]',
|
|
77
|
+
recovery_secret_hash TEXT,
|
|
78
|
+
protocol_version TEXT NOT NULL,
|
|
79
|
+
last_heartbeat TEXT,
|
|
80
|
+
status TEXT NOT NULL DEFAULT 'online',
|
|
81
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
-- Developers
|
|
85
|
+
CREATE TABLE developers (
|
|
86
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
87
|
+
name TEXT NOT NULL UNIQUE,
|
|
88
|
+
git_name TEXT NOT NULL,
|
|
89
|
+
git_email TEXT NOT NULL,
|
|
90
|
+
platform_uids TEXT NOT NULL DEFAULT '{}',
|
|
91
|
+
password_hash TEXT,
|
|
92
|
+
totp_secret TEXT,
|
|
93
|
+
role TEXT NOT NULL DEFAULT 'developer',
|
|
94
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
95
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
-- Agent sessions
|
|
99
|
+
CREATE TABLE agent_sessions (
|
|
100
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
101
|
+
task_id INTEGER NOT NULL REFERENCES tasks(id),
|
|
102
|
+
session_id TEXT NOT NULL UNIQUE,
|
|
103
|
+
agent_type TEXT NOT NULL,
|
|
104
|
+
stage TEXT NOT NULL,
|
|
105
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
106
|
+
pty_pid INTEGER,
|
|
107
|
+
pty_owner TEXT NOT NULL DEFAULT 'pipeline',
|
|
108
|
+
owner_revision INTEGER NOT NULL DEFAULT 0,
|
|
109
|
+
exit_code INTEGER,
|
|
110
|
+
output_lines INTEGER NOT NULL DEFAULT 0,
|
|
111
|
+
revision INTEGER NOT NULL DEFAULT 0,
|
|
112
|
+
started_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
|
113
|
+
finished_at TEXT
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
-- Workspaces
|
|
117
|
+
CREATE TABLE workspaces (
|
|
118
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
119
|
+
task_id INTEGER NOT NULL UNIQUE REFERENCES tasks(id),
|
|
120
|
+
machine_id TEXT NOT NULL REFERENCES machines(id),
|
|
121
|
+
project_key TEXT NOT NULL REFERENCES projects(key),
|
|
122
|
+
developer_id INTEGER NOT NULL REFERENCES developers(id),
|
|
123
|
+
path TEXT NOT NULL,
|
|
124
|
+
branch TEXT,
|
|
125
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
126
|
+
expires_at TEXT
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
-- Projects
|
|
130
|
+
CREATE TABLE projects (
|
|
131
|
+
key TEXT PRIMARY KEY,
|
|
132
|
+
name TEXT NOT NULL,
|
|
133
|
+
aliases TEXT NOT NULL DEFAULT '[]',
|
|
134
|
+
repo_url TEXT NOT NULL,
|
|
135
|
+
git_platform TEXT NOT NULL DEFAULT 'gitlab',
|
|
136
|
+
default_branch TEXT NOT NULL DEFAULT 'main',
|
|
137
|
+
workspace_root TEXT,
|
|
138
|
+
setup_commands TEXT,
|
|
139
|
+
test_command TEXT,
|
|
140
|
+
agent_type TEXT NOT NULL DEFAULT 'claude',
|
|
141
|
+
agent_command TEXT,
|
|
142
|
+
agent_env TEXT,
|
|
143
|
+
skills_path TEXT,
|
|
144
|
+
allowed_tools TEXT,
|
|
145
|
+
max_turns INTEGER NOT NULL DEFAULT 50,
|
|
146
|
+
pipeline TEXT,
|
|
147
|
+
pty_output_filter INTEGER NOT NULL DEFAULT 0,
|
|
148
|
+
is_default INTEGER NOT NULL DEFAULT 0,
|
|
149
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
|
150
|
+
);
|
|
151
|
+
|
|
152
|
+
-- Project members
|
|
153
|
+
CREATE TABLE project_members (
|
|
154
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
155
|
+
project_key TEXT NOT NULL REFERENCES projects(key),
|
|
156
|
+
developer_id INTEGER NOT NULL REFERENCES developers(id),
|
|
157
|
+
role TEXT NOT NULL DEFAULT 'member',
|
|
158
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
|
159
|
+
UNIQUE(project_key, developer_id)
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
-- Bot instances
|
|
163
|
+
CREATE TABLE bot_instances (
|
|
164
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
165
|
+
platform TEXT NOT NULL,
|
|
166
|
+
app_id TEXT NOT NULL UNIQUE,
|
|
167
|
+
app_secret TEXT NOT NULL,
|
|
168
|
+
webhook_token TEXT,
|
|
169
|
+
name TEXT NOT NULL,
|
|
170
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
171
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
-- Chat bindings
|
|
175
|
+
CREATE TABLE chat_bindings (
|
|
176
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
177
|
+
bot_instance_id INTEGER NOT NULL REFERENCES bot_instances(id),
|
|
178
|
+
platform_chat_id TEXT NOT NULL,
|
|
179
|
+
project_key TEXT REFERENCES projects(key),
|
|
180
|
+
chat_name TEXT,
|
|
181
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
|
182
|
+
UNIQUE(bot_instance_id, platform_chat_id)
|
|
183
|
+
);
|
|
184
|
+
|
|
185
|
+
-- Audit logs
|
|
186
|
+
CREATE TABLE audit_logs (
|
|
187
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
188
|
+
user_id INTEGER REFERENCES developers(id),
|
|
189
|
+
action TEXT NOT NULL,
|
|
190
|
+
resource TEXT NOT NULL,
|
|
191
|
+
detail TEXT,
|
|
192
|
+
ip TEXT,
|
|
193
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
-- Notifications
|
|
197
|
+
CREATE TABLE notifications (
|
|
198
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
199
|
+
developer_id INTEGER NOT NULL REFERENCES developers(id),
|
|
200
|
+
type TEXT NOT NULL,
|
|
201
|
+
title TEXT NOT NULL,
|
|
202
|
+
body TEXT,
|
|
203
|
+
resource_type TEXT,
|
|
204
|
+
resource_id TEXT,
|
|
205
|
+
is_read INTEGER NOT NULL DEFAULT 0,
|
|
206
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
|
207
|
+
);
|
|
208
|
+
|
|
209
|
+
-- Developer tokens (PAT for Developer CLI)
|
|
210
|
+
CREATE TABLE developer_tokens (
|
|
211
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
212
|
+
developer_id INTEGER NOT NULL REFERENCES developers(id),
|
|
213
|
+
token_hash TEXT NOT NULL,
|
|
214
|
+
label TEXT NOT NULL,
|
|
215
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
216
|
+
last_used_at TEXT,
|
|
217
|
+
expires_at TEXT,
|
|
218
|
+
revoked_at TEXT,
|
|
219
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
|
220
|
+
);
|
|
221
|
+
|
|
222
|
+
-- Trigger: auto-update tasks.updated_at
|
|
223
|
+
CREATE TRIGGER trg_tasks_updated_at AFTER UPDATE ON tasks
|
|
224
|
+
BEGIN
|
|
225
|
+
UPDATE tasks SET updated_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now') WHERE id = NEW.id;
|
|
226
|
+
END;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
-- 002-add-indexes.sql
|
|
2
|
+
-- All 13 indexes
|
|
3
|
+
|
|
4
|
+
CREATE INDEX idx_notifications_dev_unread ON notifications(developer_id, is_read, created_at DESC);
|
|
5
|
+
CREATE INDEX idx_tasks_status_created ON tasks(status, created_at DESC);
|
|
6
|
+
CREATE INDEX idx_tasks_machine_developer ON tasks(machine_id, developer_id);
|
|
7
|
+
CREATE INDEX idx_tasks_project ON tasks(project_key);
|
|
8
|
+
CREATE UNIQUE INDEX idx_tasks_active_fingerprint ON tasks(fingerprint)
|
|
9
|
+
WHERE fingerprint IS NOT NULL AND status IN ('QUEUED', 'ASSIGNED', 'RUNNING', 'SUSPENDED');
|
|
10
|
+
CREATE INDEX idx_task_logs_task_id ON task_logs(task_id, timestamp DESC);
|
|
11
|
+
CREATE INDEX idx_agent_sessions_task ON agent_sessions(task_id, status);
|
|
12
|
+
CREATE INDEX idx_workspaces_project ON workspaces(project_key);
|
|
13
|
+
CREATE INDEX idx_project_members_dev ON project_members(developer_id);
|
|
14
|
+
CREATE INDEX idx_project_members_project ON project_members(project_key);
|
|
15
|
+
CREATE INDEX idx_audit_logs_user_time ON audit_logs(user_id, created_at DESC);
|
|
16
|
+
CREATE INDEX idx_audit_logs_action ON audit_logs(action, created_at DESC);
|
|
17
|
+
CREATE INDEX idx_developer_tokens_dev ON developer_tokens(developer_id);
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Request } from 'express';
|
|
2
|
+
import type { Command, DeveloperPublic, Platform, StageConfirmMode, StageChoiceOption } from '@overlordai/protocol';
|
|
3
|
+
/**
|
|
4
|
+
* Unified message content — adapters convert this into platform-specific format.
|
|
5
|
+
*/
|
|
6
|
+
export interface AdapterMessage {
|
|
7
|
+
type: 'text' | 'card';
|
|
8
|
+
text?: string;
|
|
9
|
+
card?: {
|
|
10
|
+
title: string;
|
|
11
|
+
fields: Array<{
|
|
12
|
+
label: string;
|
|
13
|
+
value: string;
|
|
14
|
+
}>;
|
|
15
|
+
actions?: Array<{
|
|
16
|
+
label: string;
|
|
17
|
+
url?: string;
|
|
18
|
+
value?: string;
|
|
19
|
+
}>;
|
|
20
|
+
confirmMode?: StageConfirmMode;
|
|
21
|
+
choices?: StageChoiceOption[];
|
|
22
|
+
prompt?: string;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* All platform adapters implement this interface.
|
|
27
|
+
*/
|
|
28
|
+
export interface IMessageAdapter {
|
|
29
|
+
readonly platform: Platform;
|
|
30
|
+
/** Parse an incoming webhook request into a Command (or null if irrelevant). */
|
|
31
|
+
handleWebhook(req: Request): Promise<Command | null>;
|
|
32
|
+
/** Send a message to a chat. Returns the platform message ID. */
|
|
33
|
+
sendMessage(chatId: string, content: AdapterMessage): Promise<string>;
|
|
34
|
+
/** Update an existing message (e.g. progress card). */
|
|
35
|
+
updateMessage(msgId: string, content: AdapterMessage): Promise<void>;
|
|
36
|
+
/** Resolve a platform-specific user ID to an Overlord Developer (secrets stripped). */
|
|
37
|
+
resolveUser(platformUid: string): Promise<DeveloperPublic | null>;
|
|
38
|
+
}
|
|
39
|
+
/** Token used to inject adapters via NestJS DI. */
|
|
40
|
+
export declare const MESSAGE_ADAPTERS: unique symbol;
|
|
41
|
+
//# sourceMappingURL=adapter.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.interface.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EACV,OAAO,EACP,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QACL,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,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjE,WAAW,CAAC,EAAE,gBAAgB,CAAC;QAC/B,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B,gFAAgF;IAChF,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAErD,iEAAiE;IACjE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtE,uDAAuD;IACvD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErE,uFAAuF;IACvF,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACnE;AAED,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,eAA6B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MESSAGE_ADAPTERS = void 0;
|
|
4
|
+
/** Token used to inject adapters via NestJS DI. */
|
|
5
|
+
exports.MESSAGE_ADAPTERS = Symbol('MESSAGE_ADAPTERS');
|
|
6
|
+
//# sourceMappingURL=adapter.interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.interface.js","sourceRoot":"","sources":["../../src/adapters/adapter.interface.ts"],"names":[],"mappings":";;;AA4CA,mDAAmD;AACtC,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.module.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter.module.ts"],"names":[],"mappings":"AAiBA,qBA8Ba,aAAa;CAAG"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AdapterModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const dispatcher_module_1 = require("../dispatcher/dispatcher.module");
|
|
12
|
+
const bot_repository_1 = require("../database/repositories/bot.repository");
|
|
13
|
+
const developer_repository_1 = require("../database/repositories/developer.repository");
|
|
14
|
+
const redis_service_1 = require("../redis/redis.service");
|
|
15
|
+
const crypto_service_1 = require("../common/crypto.service");
|
|
16
|
+
const adapter_interface_1 = require("./adapter.interface");
|
|
17
|
+
const adapter_registry_1 = require("./adapter.registry");
|
|
18
|
+
const lark_adapter_1 = require("./lark/lark.adapter");
|
|
19
|
+
const lark_controller_1 = require("./lark/lark.controller");
|
|
20
|
+
const lark_message_parser_1 = require("./lark/lark-message.parser");
|
|
21
|
+
const lark_card_builder_1 = require("./lark/lark-card.builder");
|
|
22
|
+
const slack_adapter_1 = require("./slack/slack.adapter");
|
|
23
|
+
let AdapterModule = class AdapterModule {
|
|
24
|
+
};
|
|
25
|
+
exports.AdapterModule = AdapterModule;
|
|
26
|
+
exports.AdapterModule = AdapterModule = __decorate([
|
|
27
|
+
(0, common_1.Module)({
|
|
28
|
+
imports: [dispatcher_module_1.DispatcherModule],
|
|
29
|
+
controllers: [lark_controller_1.LarkController],
|
|
30
|
+
providers: [
|
|
31
|
+
// Shared dependencies
|
|
32
|
+
bot_repository_1.BotRepository,
|
|
33
|
+
developer_repository_1.DeveloperRepository,
|
|
34
|
+
redis_service_1.RedisService,
|
|
35
|
+
crypto_service_1.CryptoService,
|
|
36
|
+
// Parser & Card Builder
|
|
37
|
+
lark_message_parser_1.LarkMessageParser,
|
|
38
|
+
lark_card_builder_1.LarkCardBuilder,
|
|
39
|
+
// Adapters
|
|
40
|
+
lark_adapter_1.LarkAdapter,
|
|
41
|
+
slack_adapter_1.SlackAdapter,
|
|
42
|
+
// Provide adapter array for registry injection
|
|
43
|
+
{
|
|
44
|
+
provide: adapter_interface_1.MESSAGE_ADAPTERS,
|
|
45
|
+
useFactory: (lark, slack) => [lark, slack],
|
|
46
|
+
inject: [lark_adapter_1.LarkAdapter, slack_adapter_1.SlackAdapter],
|
|
47
|
+
},
|
|
48
|
+
// Registry
|
|
49
|
+
adapter_registry_1.AdapterRegistry,
|
|
50
|
+
],
|
|
51
|
+
exports: [adapter_registry_1.AdapterRegistry, lark_adapter_1.LarkAdapter, lark_card_builder_1.LarkCardBuilder],
|
|
52
|
+
})
|
|
53
|
+
], AdapterModule);
|
|
54
|
+
//# sourceMappingURL=adapter.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.module.js","sourceRoot":"","sources":["../../src/adapters/adapter.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uEAAmE;AACnE,4EAAwE;AACxE,wFAAoF;AACpF,0DAAsD;AACtD,6DAAyD;AAEzD,2DAAuD;AACvD,yDAAqD;AAErD,sDAAkD;AAClD,4DAAwD;AACxD,oEAA+D;AAC/D,gEAA2D;AAE3D,yDAAqD;AAgC9C,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IA9BzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,oCAAgB,CAAC;QAC3B,WAAW,EAAE,CAAC,gCAAc,CAAC;QAC7B,SAAS,EAAE;YACT,sBAAsB;YACtB,8BAAa;YACb,0CAAmB;YACnB,4BAAY;YACZ,8BAAa;YAEb,wBAAwB;YACxB,uCAAiB;YACjB,mCAAe;YAEf,WAAW;YACX,0BAAW;YACX,4BAAY;YAEZ,+CAA+C;YAC/C;gBACE,OAAO,EAAE,oCAAgB;gBACzB,UAAU,EAAE,CAAC,IAAiB,EAAE,KAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;gBACrE,MAAM,EAAE,CAAC,0BAAW,EAAE,4BAAY,CAAC;aACpC;YAED,WAAW;YACX,kCAAe;SAChB;QACD,OAAO,EAAE,CAAC,kCAAe,EAAE,0BAAW,EAAE,mCAAe,CAAC;KACzD,CAAC;GACW,aAAa,CAAG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Platform } from '@overlordai/protocol';
|
|
2
|
+
import type { IMessageAdapter } from './adapter.interface';
|
|
3
|
+
export declare class AdapterRegistry {
|
|
4
|
+
private readonly adapters;
|
|
5
|
+
private readonly byPlatform;
|
|
6
|
+
private readonly byAppId;
|
|
7
|
+
constructor(adapters: IMessageAdapter[]);
|
|
8
|
+
/** Get the adapter for a given platform. */
|
|
9
|
+
getAdapter(platform: Platform): IMessageAdapter | null;
|
|
10
|
+
/**
|
|
11
|
+
* Find an adapter by app ID.
|
|
12
|
+
* The Lark adapter supports multiple bots; each bot's app_id is registered
|
|
13
|
+
* at runtime when the first webhook for that app_id arrives.
|
|
14
|
+
*/
|
|
15
|
+
getAdapterByAppId(appId: string): IMessageAdapter | null;
|
|
16
|
+
/** Register a mapping from app_id -> adapter (called by adapters at runtime). */
|
|
17
|
+
registerAppId(appId: string, adapter: IMessageAdapter): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=adapter.registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.registry.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter.registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,qBACa,eAAe;IAMxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;IACnE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;gBAI3C,QAAQ,EAAE,eAAe,EAAE;IAO9C,4CAA4C;IAC5C,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,GAAG,IAAI;IAItD;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAIxD,iFAAiF;IACjF,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;CAG7D"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AdapterRegistry = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const adapter_interface_1 = require("./adapter.interface");
|
|
18
|
+
let AdapterRegistry = class AdapterRegistry {
|
|
19
|
+
adapters;
|
|
20
|
+
byPlatform = new Map();
|
|
21
|
+
byAppId = new Map();
|
|
22
|
+
constructor(adapters) {
|
|
23
|
+
this.adapters = adapters;
|
|
24
|
+
for (const adapter of adapters) {
|
|
25
|
+
this.byPlatform.set(adapter.platform, adapter);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** Get the adapter for a given platform. */
|
|
29
|
+
getAdapter(platform) {
|
|
30
|
+
return this.byPlatform.get(platform) ?? null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Find an adapter by app ID.
|
|
34
|
+
* The Lark adapter supports multiple bots; each bot's app_id is registered
|
|
35
|
+
* at runtime when the first webhook for that app_id arrives.
|
|
36
|
+
*/
|
|
37
|
+
getAdapterByAppId(appId) {
|
|
38
|
+
return this.byAppId.get(appId) ?? null;
|
|
39
|
+
}
|
|
40
|
+
/** Register a mapping from app_id -> adapter (called by adapters at runtime). */
|
|
41
|
+
registerAppId(appId, adapter) {
|
|
42
|
+
this.byAppId.set(appId, adapter);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
exports.AdapterRegistry = AdapterRegistry;
|
|
46
|
+
exports.AdapterRegistry = AdapterRegistry = __decorate([
|
|
47
|
+
(0, common_1.Injectable)(),
|
|
48
|
+
__param(0, (0, common_1.Inject)(adapter_interface_1.MESSAGE_ADAPTERS)),
|
|
49
|
+
__metadata("design:paramtypes", [Array])
|
|
50
|
+
], AdapterRegistry);
|
|
51
|
+
//# sourceMappingURL=adapter.registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.registry.js","sourceRoot":"","sources":["../../src/adapters/adapter.registry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAGpD,2DAAuD;AAGhD,IAAM,eAAe,GAArB,MAAM,eAAe;IAMP;IALF,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;IAClD,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE9D,YAEmB,QAA2B;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;QAE5C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,UAAU,CAAC,QAAkB;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,iFAAiF;IACjF,aAAa,CAAC,KAAa,EAAE,OAAwB;QACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;CACF,CAAA;AA/BY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,oCAAgB,CAAC,CAAA;;GALhB,eAAe,CA+B3B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Task, StageChoiceOption } from '@overlordai/protocol';
|
|
2
|
+
import type { AdapterMessage } from '../adapter.interface';
|
|
3
|
+
/**
|
|
4
|
+
* Builds Lark Interactive Message Cards for task notifications.
|
|
5
|
+
*
|
|
6
|
+
* V1 uses hardcoded templates. Card content is returned as AdapterMessage
|
|
7
|
+
* which LarkAdapter converts into Lark-native card JSON.
|
|
8
|
+
*/
|
|
9
|
+
export declare class LarkCardBuilder {
|
|
10
|
+
/**
|
|
11
|
+
* Truncate a description to a maximum length.
|
|
12
|
+
*/
|
|
13
|
+
private truncate;
|
|
14
|
+
/**
|
|
15
|
+
* Build a task status notification card.
|
|
16
|
+
*/
|
|
17
|
+
buildTaskCard(task: Task): AdapterMessage;
|
|
18
|
+
/**
|
|
19
|
+
* Build a dedup confirmation card — shown when a similar task already exists.
|
|
20
|
+
*/
|
|
21
|
+
buildDedupConfirmCard(existingTaskId: number, description: string, confirmKey: string): AdapterMessage;
|
|
22
|
+
/**
|
|
23
|
+
* Build an interactive stage card — confirm mode.
|
|
24
|
+
* Displays prompt + "Continue" / "Cancel" buttons.
|
|
25
|
+
*/
|
|
26
|
+
buildConfirmStageCard(taskId: number, stageIndex: number, prompt: string): AdapterMessage;
|
|
27
|
+
/**
|
|
28
|
+
* Build an interactive stage card — choice mode.
|
|
29
|
+
* Displays prompt + one button per choice option.
|
|
30
|
+
*/
|
|
31
|
+
buildChoiceStageCard(taskId: number, stageIndex: number, prompt: string, choices: StageChoiceOption[]): AdapterMessage;
|
|
32
|
+
/**
|
|
33
|
+
* Build an interactive stage card — input mode.
|
|
34
|
+
* Displays prompt + instruction to reply to the message.
|
|
35
|
+
*/
|
|
36
|
+
buildInputStageCard(taskId: number, stageIndex: number, prompt: string): AdapterMessage;
|
|
37
|
+
/**
|
|
38
|
+
* Build an "already selected" card to replace an interactive card after a
|
|
39
|
+
* button has been clicked (card action callback response).
|
|
40
|
+
*/
|
|
41
|
+
buildSelectedCard(taskId: number, selectedLabel: string): AdapterMessage;
|
|
42
|
+
/**
|
|
43
|
+
* Convert an AdapterMessage into a Lark Interactive Message Card JSON
|
|
44
|
+
* (the `content` field for Lark's send message API).
|
|
45
|
+
*/
|
|
46
|
+
toLarkCardJson(msg: AdapterMessage): string;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=lark-card.builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lark-card.builder.d.ts","sourceRoot":"","sources":["../../../src/adapters/lark/lark-card.builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAoB,MAAM,sBAAsB,CAAC;AAEtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAkB3D;;;;;GAKG;AACH,qBACa,eAAe;IAC1B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAKhB;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc;IAqCzC;;OAEG;IACH,qBAAqB,CACnB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,cAAc;IAuBjB;;;OAGG;IACH,qBAAqB,CACnB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,cAAc;IAyBjB;;;OAGG;IACH,oBAAoB,CAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,EAAE,GAC3B,cAAc;IAsBjB;;;OAGG;IACH,mBAAmB,CACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,cAAc;IAwBjB;;;OAGG;IACH,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,cAAc;IAiBjB;;;OAGG;IACH,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CA8D5C"}
|