@minion-stack/db 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/relations.d.ts +126 -0
- package/dist/relations.d.ts.map +1 -0
- package/dist/relations.js +178 -0
- package/dist/relations.js.map +1 -0
- package/dist/schema/activity-bins.d.ts +118 -0
- package/dist/schema/activity-bins.d.ts.map +1 -0
- package/dist/schema/activity-bins.js +19 -0
- package/dist/schema/activity-bins.js.map +1 -0
- package/dist/schema/agent-groups.d.ts +180 -0
- package/dist/schema/agent-groups.d.ts.map +1 -0
- package/dist/schema/agent-groups.js +22 -0
- package/dist/schema/agent-groups.js.map +1 -0
- package/dist/schema/agents.d.ts +196 -0
- package/dist/schema/agents.d.ts.map +1 -0
- package/dist/schema/agents.js +20 -0
- package/dist/schema/agents.js.map +1 -0
- package/dist/schema/auth/index.d.ts +1713 -0
- package/dist/schema/auth/index.d.ts.map +1 -0
- package/dist/schema/auth/index.js +152 -0
- package/dist/schema/auth/index.js.map +1 -0
- package/dist/schema/backup-configs.d.ts +207 -0
- package/dist/schema/backup-configs.d.ts.map +1 -0
- package/dist/schema/backup-configs.js +18 -0
- package/dist/schema/backup-configs.js.map +1 -0
- package/dist/schema/bugs.d.ts +232 -0
- package/dist/schema/bugs.d.ts.map +1 -0
- package/dist/schema/bugs.js +26 -0
- package/dist/schema/bugs.js.map +1 -0
- package/dist/schema/builder.d.ts +1546 -0
- package/dist/schema/builder.d.ts.map +1 -0
- package/dist/schema/builder.js +143 -0
- package/dist/schema/builder.js.map +1 -0
- package/dist/schema/channel-assignments.d.ts +120 -0
- package/dist/schema/channel-assignments.d.ts.map +1 -0
- package/dist/schema/channel-assignments.js +19 -0
- package/dist/schema/channel-assignments.js.map +1 -0
- package/dist/schema/channel-identities.d.ts +141 -0
- package/dist/schema/channel-identities.d.ts.map +1 -0
- package/dist/schema/channel-identities.js +21 -0
- package/dist/schema/channel-identities.js.map +1 -0
- package/dist/schema/channels.d.ts +213 -0
- package/dist/schema/channels.d.ts.map +1 -0
- package/dist/schema/channels.js +26 -0
- package/dist/schema/channels.js.map +1 -0
- package/dist/schema/chat-messages.d.ts +192 -0
- package/dist/schema/chat-messages.d.ts.map +1 -0
- package/dist/schema/chat-messages.js +23 -0
- package/dist/schema/chat-messages.js.map +1 -0
- package/dist/schema/config-snapshots.d.ts +120 -0
- package/dist/schema/config-snapshots.d.ts.map +1 -0
- package/dist/schema/config-snapshots.js +16 -0
- package/dist/schema/config-snapshots.js.map +1 -0
- package/dist/schema/connection-events.d.ts +173 -0
- package/dist/schema/connection-events.d.ts.map +1 -0
- package/dist/schema/connection-events.js +22 -0
- package/dist/schema/connection-events.js.map +1 -0
- package/dist/schema/credential-health.d.ts +116 -0
- package/dist/schema/credential-health.d.ts.map +1 -0
- package/dist/schema/credential-health.js +19 -0
- package/dist/schema/credential-health.js.map +1 -0
- package/dist/schema/device-identities.d.ts +120 -0
- package/dist/schema/device-identities.d.ts.map +1 -0
- package/dist/schema/device-identities.js +14 -0
- package/dist/schema/device-identities.js.map +1 -0
- package/dist/schema/files.d.ts +175 -0
- package/dist/schema/files.d.ts.map +1 -0
- package/dist/schema/files.js +16 -0
- package/dist/schema/files.js.map +1 -0
- package/dist/schema/flows.d.ts +156 -0
- package/dist/schema/flows.d.ts.map +1 -0
- package/dist/schema/flows.js +12 -0
- package/dist/schema/flows.js.map +1 -0
- package/dist/schema/gateway-heartbeats.d.ts +186 -0
- package/dist/schema/gateway-heartbeats.d.ts.map +1 -0
- package/dist/schema/gateway-heartbeats.js +23 -0
- package/dist/schema/gateway-heartbeats.js.map +1 -0
- package/dist/schema/index.d.ts +37 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +38 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/marketplace-agents.d.ts +397 -0
- package/dist/schema/marketplace-agents.d.ts.map +1 -0
- package/dist/schema/marketplace-agents.js +25 -0
- package/dist/schema/marketplace-agents.js.map +1 -0
- package/dist/schema/marketplace-installs.d.ts +101 -0
- package/dist/schema/marketplace-installs.d.ts.map +1 -0
- package/dist/schema/marketplace-installs.js +21 -0
- package/dist/schema/marketplace-installs.js.map +1 -0
- package/dist/schema/missions.d.ts +194 -0
- package/dist/schema/missions.d.ts.map +1 -0
- package/dist/schema/missions.js +29 -0
- package/dist/schema/missions.js.map +1 -0
- package/dist/schema/personal-agents.d.ts +302 -0
- package/dist/schema/personal-agents.d.ts.map +1 -0
- package/dist/schema/personal-agents.js +37 -0
- package/dist/schema/personal-agents.js.map +1 -0
- package/dist/schema/reliability-events.d.ts +211 -0
- package/dist/schema/reliability-events.d.ts.map +1 -0
- package/dist/schema/reliability-events.js +28 -0
- package/dist/schema/reliability-events.js.map +1 -0
- package/dist/schema/server-backups.d.ts +154 -0
- package/dist/schema/server-backups.d.ts.map +1 -0
- package/dist/schema/server-backups.js +23 -0
- package/dist/schema/server-backups.js.map +1 -0
- package/dist/schema/server-provision-configs.d.ts +410 -0
- package/dist/schema/server-provision-configs.d.ts.map +1 -0
- package/dist/schema/server-provision-configs.js +43 -0
- package/dist/schema/server-provision-configs.js.map +1 -0
- package/dist/schema/servers.d.ts +192 -0
- package/dist/schema/servers.d.ts.map +1 -0
- package/dist/schema/servers.js +22 -0
- package/dist/schema/servers.js.map +1 -0
- package/dist/schema/session-tasks.d.ts +211 -0
- package/dist/schema/session-tasks.d.ts.map +1 -0
- package/dist/schema/session-tasks.js +26 -0
- package/dist/schema/session-tasks.js.map +1 -0
- package/dist/schema/sessions.d.ts +209 -0
- package/dist/schema/sessions.d.ts.map +1 -0
- package/dist/schema/sessions.js +27 -0
- package/dist/schema/sessions.js.map +1 -0
- package/dist/schema/settings.d.ts +118 -0
- package/dist/schema/settings.d.ts.map +1 -0
- package/dist/schema/settings.js +19 -0
- package/dist/schema/settings.js.map +1 -0
- package/dist/schema/skill-execution-stats.d.ts +209 -0
- package/dist/schema/skill-execution-stats.d.ts.map +1 -0
- package/dist/schema/skill-execution-stats.js +24 -0
- package/dist/schema/skill-execution-stats.js.map +1 -0
- package/dist/schema/skills.d.ts +209 -0
- package/dist/schema/skills.d.ts.map +1 -0
- package/dist/schema/skills.js +24 -0
- package/dist/schema/skills.js.map +1 -0
- package/dist/schema/tasks.d.ts +192 -0
- package/dist/schema/tasks.d.ts.map +1 -0
- package/dist/schema/tasks.js +22 -0
- package/dist/schema/tasks.js.map +1 -0
- package/dist/schema/unified-events.d.ts +247 -0
- package/dist/schema/unified-events.d.ts.map +1 -0
- package/dist/schema/unified-events.js +29 -0
- package/dist/schema/unified-events.js.map +1 -0
- package/dist/schema/user-agents.d.ts +82 -0
- package/dist/schema/user-agents.d.ts.map +1 -0
- package/dist/schema/user-agents.js +17 -0
- package/dist/schema/user-agents.js.map +1 -0
- package/dist/schema/user-preferences.d.ts +99 -0
- package/dist/schema/user-preferences.d.ts.map +1 -0
- package/dist/schema/user-preferences.js +15 -0
- package/dist/schema/user-preferences.js.map +1 -0
- package/dist/schema/user-servers.d.ts +63 -0
- package/dist/schema/user-servers.d.ts.map +1 -0
- package/dist/schema/user-servers.js +16 -0
- package/dist/schema/user-servers.js.map +1 -0
- package/dist/schema/workshop-saves.d.ts +156 -0
- package/dist/schema/workshop-saves.d.ts.map +1 -0
- package/dist/schema/workshop-saves.js +12 -0
- package/dist/schema/workshop-saves.js.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +9 -0
- package/dist/utils.js.map +1 -0
- package/package.json +58 -0
- package/src/index.ts +7 -0
- package/src/relations.ts +258 -0
- package/src/schema/activity-bins.ts +23 -0
- package/src/schema/agent-groups.ts +31 -0
- package/src/schema/agents.ts +24 -0
- package/src/schema/auth/index.ts +190 -0
- package/src/schema/backup-configs.ts +22 -0
- package/src/schema/bugs.ts +30 -0
- package/src/schema/builder.ts +151 -0
- package/src/schema/channel-assignments.ts +23 -0
- package/src/schema/channel-identities.ts +25 -0
- package/src/schema/channels.ts +30 -0
- package/src/schema/chat-messages.ts +27 -0
- package/src/schema/config-snapshots.ts +20 -0
- package/src/schema/connection-events.ts +26 -0
- package/src/schema/credential-health.ts +23 -0
- package/src/schema/device-identities.ts +14 -0
- package/src/schema/files.ts +20 -0
- package/src/schema/flows.ts +12 -0
- package/src/schema/gateway-heartbeats.ts +27 -0
- package/src/schema/index.ts +59 -0
- package/src/schema/marketplace-agents.ts +25 -0
- package/src/schema/marketplace-installs.ts +25 -0
- package/src/schema/missions.ts +33 -0
- package/src/schema/personal-agents.ts +41 -0
- package/src/schema/reliability-events.ts +32 -0
- package/src/schema/server-backups.ts +27 -0
- package/src/schema/server-provision-configs.ts +57 -0
- package/src/schema/servers.ts +26 -0
- package/src/schema/session-tasks.ts +30 -0
- package/src/schema/sessions.ts +31 -0
- package/src/schema/settings.ts +23 -0
- package/src/schema/skill-execution-stats.ts +28 -0
- package/src/schema/skills.ts +28 -0
- package/src/schema/tasks.ts +26 -0
- package/src/schema/unified-events.ts +33 -0
- package/src/schema/user-agents.ts +21 -0
- package/src/schema/user-preferences.ts +19 -0
- package/src/schema/user-servers.ts +20 -0
- package/src/schema/workshop-saves.ts +12 -0
- package/src/utils.ts +11 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// Better Auth tables (replaces tenants, users, userTenants, authSessions)
|
|
2
|
+
export {
|
|
3
|
+
user,
|
|
4
|
+
session,
|
|
5
|
+
account,
|
|
6
|
+
verification,
|
|
7
|
+
jwks,
|
|
8
|
+
organization,
|
|
9
|
+
member,
|
|
10
|
+
invitation,
|
|
11
|
+
oauthApplication,
|
|
12
|
+
oauthAccessToken,
|
|
13
|
+
oauthConsent,
|
|
14
|
+
} from './auth/index.js';
|
|
15
|
+
export { servers } from './servers.js';
|
|
16
|
+
export { agents } from './agents.js';
|
|
17
|
+
export { skills } from './skills.js';
|
|
18
|
+
export { sessions } from './sessions.js';
|
|
19
|
+
export { chatMessages } from './chat-messages.js';
|
|
20
|
+
export { bugs } from './bugs.js';
|
|
21
|
+
export { connectionEvents } from './connection-events.js';
|
|
22
|
+
export { settings } from './settings.js';
|
|
23
|
+
export { files } from './files.js';
|
|
24
|
+
export { missions } from './missions.js';
|
|
25
|
+
export { tasks } from './tasks.js';
|
|
26
|
+
export { credentialHealthSnapshots } from './credential-health.js';
|
|
27
|
+
export { skillExecutionStats } from './skill-execution-stats.js';
|
|
28
|
+
export { gatewayHeartbeats } from './gateway-heartbeats.js';
|
|
29
|
+
export { activityBins } from './activity-bins.js';
|
|
30
|
+
export { configSnapshots } from './config-snapshots.js';
|
|
31
|
+
export { sessionTasks } from './session-tasks.js';
|
|
32
|
+
export { marketplaceAgents } from './marketplace-agents.js';
|
|
33
|
+
export { marketplaceInstalls } from './marketplace-installs.js';
|
|
34
|
+
export { workshopSaves } from './workshop-saves.js';
|
|
35
|
+
export { deviceIdentities } from './device-identities.js';
|
|
36
|
+
export { flows } from './flows.js';
|
|
37
|
+
export { userServers } from './user-servers.js';
|
|
38
|
+
export { userAgents } from './user-agents.js';
|
|
39
|
+
export { channels } from './channels.js';
|
|
40
|
+
export { channelAssignments } from './channel-assignments.js';
|
|
41
|
+
export { serverProvisionConfigs } from './server-provision-configs.js';
|
|
42
|
+
export { backupConfigs } from './backup-configs.js';
|
|
43
|
+
export { serverBackups } from './server-backups.js';
|
|
44
|
+
export { agentGroups, agentGroupMembers } from './agent-groups.js';
|
|
45
|
+
export { unifiedEvents } from './unified-events.js';
|
|
46
|
+
export { channelIdentities } from './channel-identities.js';
|
|
47
|
+
export { personalAgents } from './personal-agents.js';
|
|
48
|
+
export {
|
|
49
|
+
builtSkills,
|
|
50
|
+
builtSkillTools,
|
|
51
|
+
builtChapters,
|
|
52
|
+
builtChapterEdges,
|
|
53
|
+
builtChapterTools,
|
|
54
|
+
builtAgents,
|
|
55
|
+
builtAgentSkills,
|
|
56
|
+
builtTools,
|
|
57
|
+
agentBuiltSkills,
|
|
58
|
+
} from './builder.js';
|
|
59
|
+
export { userPreferences } from './user-preferences.js';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
|
|
3
|
+
export const marketplaceAgents = sqliteTable('marketplace_agents', {
|
|
4
|
+
id: text('id').primaryKey(), // slug e.g. "luna-chen"
|
|
5
|
+
name: text('name').notNull(),
|
|
6
|
+
role: text('role').notNull(),
|
|
7
|
+
category: text('category').notNull(), // engineering | product | data | creative | security
|
|
8
|
+
tags: text('tags').notNull(), // JSON array string
|
|
9
|
+
description: text('description').notNull(),
|
|
10
|
+
catchphrase: text('catchphrase'),
|
|
11
|
+
version: text('version').notNull(),
|
|
12
|
+
model: text('model'),
|
|
13
|
+
avatarSeed: text('avatar_seed').notNull(),
|
|
14
|
+
githubPath: text('github_path').notNull(),
|
|
15
|
+
soulMd: text('soul_md'),
|
|
16
|
+
identityMd: text('identity_md'),
|
|
17
|
+
userMd: text('user_md'),
|
|
18
|
+
contextMd: text('context_md'),
|
|
19
|
+
skillsMd: text('skills_md'),
|
|
20
|
+
installCount: integer('install_count').default(0),
|
|
21
|
+
syncedAt: integer('synced_at').notNull(),
|
|
22
|
+
filesLoadedAt: integer('files_loaded_at'),
|
|
23
|
+
createdAt: integer('created_at').notNull(),
|
|
24
|
+
updatedAt: integer('updated_at').notNull(),
|
|
25
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
import { marketplaceAgents } from './marketplace-agents.js';
|
|
5
|
+
|
|
6
|
+
export const marketplaceInstalls = sqliteTable(
|
|
7
|
+
'marketplace_installs',
|
|
8
|
+
{
|
|
9
|
+
id: text('id').primaryKey(),
|
|
10
|
+
tenantId: text('tenant_id')
|
|
11
|
+
.notNull()
|
|
12
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
13
|
+
agentId: text('agent_id')
|
|
14
|
+
.notNull()
|
|
15
|
+
.references(() => marketplaceAgents.id, { onDelete: 'cascade' }),
|
|
16
|
+
serverId: text('server_id')
|
|
17
|
+
.notNull()
|
|
18
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
19
|
+
installedAt: integer('installed_at').notNull(),
|
|
20
|
+
},
|
|
21
|
+
(t) => [
|
|
22
|
+
index('idx_marketplace_installs_tenant').on(t.tenantId),
|
|
23
|
+
index('idx_marketplace_installs_agent').on(t.agentId),
|
|
24
|
+
],
|
|
25
|
+
);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
import { sessions } from './sessions.js';
|
|
5
|
+
|
|
6
|
+
export const missions = sqliteTable(
|
|
7
|
+
'missions',
|
|
8
|
+
{
|
|
9
|
+
id: text('id').primaryKey(),
|
|
10
|
+
tenantId: text('tenant_id')
|
|
11
|
+
.notNull()
|
|
12
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
13
|
+
serverId: text('server_id')
|
|
14
|
+
.notNull()
|
|
15
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
16
|
+
sessionId: text('session_id')
|
|
17
|
+
.notNull()
|
|
18
|
+
.references(() => sessions.id, { onDelete: 'cascade' }),
|
|
19
|
+
title: text('title').notNull(),
|
|
20
|
+
description: text('description'),
|
|
21
|
+
status: text('status', { enum: ['active', 'completed', 'cancelled'] })
|
|
22
|
+
.notNull()
|
|
23
|
+
.default('active'),
|
|
24
|
+
metadata: text('metadata'),
|
|
25
|
+
createdAt: integer('created_at').notNull(),
|
|
26
|
+
updatedAt: integer('updated_at').notNull(),
|
|
27
|
+
},
|
|
28
|
+
(t) => [
|
|
29
|
+
index('idx_missions_tenant').on(t.tenantId),
|
|
30
|
+
index('idx_missions_session').on(t.sessionId),
|
|
31
|
+
index('idx_missions_server').on(t.serverId),
|
|
32
|
+
],
|
|
33
|
+
);
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { user } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
|
|
5
|
+
export const personalAgents = sqliteTable(
|
|
6
|
+
'personal_agents',
|
|
7
|
+
{
|
|
8
|
+
id: text('id').primaryKey(),
|
|
9
|
+
userId: text('user_id')
|
|
10
|
+
.notNull()
|
|
11
|
+
.unique()
|
|
12
|
+
.references(() => user.id, { onDelete: 'cascade' }),
|
|
13
|
+
agentId: text('agent_id').notNull(),
|
|
14
|
+
serverId: text('server_id').references(() => servers.id, { onDelete: 'set null' }),
|
|
15
|
+
displayName: text('display_name').notNull(),
|
|
16
|
+
conversationName: text('conversation_name'),
|
|
17
|
+
avatarUrl: text('avatar_url'),
|
|
18
|
+
personalityPreset: text('personality_preset', {
|
|
19
|
+
enum: ['professional', 'casual', 'creative', 'technical'],
|
|
20
|
+
}),
|
|
21
|
+
personalityText: text('personality_text'),
|
|
22
|
+
personalityConfigured: integer('personality_configured', { mode: 'boolean' })
|
|
23
|
+
.notNull()
|
|
24
|
+
.default(false),
|
|
25
|
+
provisioningStatus: text('provisioning_status', {
|
|
26
|
+
enum: ['pending', 'provisioning', 'active', 'error'],
|
|
27
|
+
})
|
|
28
|
+
.notNull()
|
|
29
|
+
.default('pending'),
|
|
30
|
+
provisioningError: text('provisioning_error'),
|
|
31
|
+
lastRetryAt: integer('last_retry_at'),
|
|
32
|
+
retryCount: integer('retry_count').notNull().default(0),
|
|
33
|
+
createdAt: integer('created_at').notNull(),
|
|
34
|
+
updatedAt: integer('updated_at').notNull(),
|
|
35
|
+
},
|
|
36
|
+
(t) => [
|
|
37
|
+
index('idx_personal_agents_user').on(t.userId),
|
|
38
|
+
index('idx_personal_agents_agent').on(t.agentId),
|
|
39
|
+
index('idx_personal_agents_status').on(t.provisioningStatus),
|
|
40
|
+
],
|
|
41
|
+
);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
|
|
5
|
+
export const reliabilityEvents = sqliteTable(
|
|
6
|
+
'reliability_events',
|
|
7
|
+
{
|
|
8
|
+
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
9
|
+
tenantId: text('tenant_id')
|
|
10
|
+
.notNull()
|
|
11
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
12
|
+
serverId: text('server_id')
|
|
13
|
+
.notNull()
|
|
14
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
15
|
+
agentId: text('agent_id'),
|
|
16
|
+
category: text('category', {
|
|
17
|
+
enum: ['cron', 'browser', 'timezone', 'general', 'auth', 'skill', 'agent', 'gateway'],
|
|
18
|
+
}).notNull(),
|
|
19
|
+
severity: text('severity', { enum: ['critical', 'high', 'medium', 'low', 'ok'] }).notNull(),
|
|
20
|
+
event: text('event').notNull(),
|
|
21
|
+
message: text('message').notNull(),
|
|
22
|
+
metadata: text('metadata'),
|
|
23
|
+
occurredAt: integer('occurred_at').notNull(),
|
|
24
|
+
createdAt: integer('created_at').notNull(),
|
|
25
|
+
},
|
|
26
|
+
(t) => [
|
|
27
|
+
index('idx_rel_events_server_cat_time').on(t.serverId, t.category, t.occurredAt),
|
|
28
|
+
index('idx_rel_events_server_time').on(t.serverId, t.occurredAt),
|
|
29
|
+
index('idx_rel_events_server_sev_time').on(t.serverId, t.severity, t.occurredAt),
|
|
30
|
+
index('idx_rel_events_tenant').on(t.tenantId),
|
|
31
|
+
],
|
|
32
|
+
);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
|
|
5
|
+
export const serverBackups = sqliteTable(
|
|
6
|
+
'server_backups',
|
|
7
|
+
{
|
|
8
|
+
id: text('id').primaryKey(),
|
|
9
|
+
serverId: text('server_id')
|
|
10
|
+
.notNull()
|
|
11
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
12
|
+
tenantId: text('tenant_id')
|
|
13
|
+
.notNull()
|
|
14
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
15
|
+
snapshotPath: text('snapshot_path').notNull(),
|
|
16
|
+
timestamp: integer('timestamp').notNull(),
|
|
17
|
+
sizeBytes: integer('size_bytes'),
|
|
18
|
+
status: text('status', { enum: ['running', 'complete', 'failed'] })
|
|
19
|
+
.notNull()
|
|
20
|
+
.default('running'),
|
|
21
|
+
createdAt: integer('created_at').notNull(),
|
|
22
|
+
},
|
|
23
|
+
(t) => [
|
|
24
|
+
index('idx_server_backups_server').on(t.serverId),
|
|
25
|
+
index('idx_server_backups_tenant').on(t.tenantId),
|
|
26
|
+
],
|
|
27
|
+
);
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index, uniqueIndex } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
|
|
5
|
+
export const serverProvisionConfigs = sqliteTable(
|
|
6
|
+
'server_provision_configs',
|
|
7
|
+
{
|
|
8
|
+
id: text('id').primaryKey(),
|
|
9
|
+
serverId: text('server_id')
|
|
10
|
+
.notNull()
|
|
11
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
12
|
+
tenantId: text('tenant_id')
|
|
13
|
+
.notNull()
|
|
14
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
15
|
+
|
|
16
|
+
// SSH connection
|
|
17
|
+
sshHost: text('ssh_host'),
|
|
18
|
+
sshUser: text('ssh_user').default('root'),
|
|
19
|
+
sshPort: integer('ssh_port').default(22),
|
|
20
|
+
|
|
21
|
+
// Credentials (encrypted)
|
|
22
|
+
apiKey: text('api_key'),
|
|
23
|
+
apiKeyIv: text('api_key_iv'),
|
|
24
|
+
|
|
25
|
+
// Agent config
|
|
26
|
+
agentName: text('agent_name'),
|
|
27
|
+
sandboxMode: text('sandbox_mode', { enum: ['non-main', 'always', 'never'] }).default(
|
|
28
|
+
'non-main',
|
|
29
|
+
),
|
|
30
|
+
dmPolicy: text('dm_policy', { enum: ['pairing', 'solo', 'disabled'] }).default('pairing'),
|
|
31
|
+
|
|
32
|
+
// Install config
|
|
33
|
+
installMethod: text('install_method', { enum: ['package', 'source'] }).default('package'),
|
|
34
|
+
pkgManager: text('pkg_manager', { enum: ['npm', 'bun'] }).default('npm'),
|
|
35
|
+
|
|
36
|
+
// Gateway config
|
|
37
|
+
gatewayPort: integer('gateway_port').default(18789),
|
|
38
|
+
gatewayBind: text('gateway_bind', { enum: ['loopback', 'all'] }).default('loopback'),
|
|
39
|
+
|
|
40
|
+
// Channel toggles
|
|
41
|
+
enableWhatsapp: integer('enable_whatsapp').default(0),
|
|
42
|
+
enableTelegram: integer('enable_telegram').default(0),
|
|
43
|
+
enableDiscord: integer('enable_discord').default(0),
|
|
44
|
+
|
|
45
|
+
// Provision state
|
|
46
|
+
phaseStatuses: text('phase_statuses').default('{}'),
|
|
47
|
+
lastProvisionAt: integer('last_provision_at'),
|
|
48
|
+
|
|
49
|
+
// Timestamps
|
|
50
|
+
createdAt: integer('created_at').notNull(),
|
|
51
|
+
updatedAt: integer('updated_at').notNull(),
|
|
52
|
+
},
|
|
53
|
+
(t) => [
|
|
54
|
+
uniqueIndex('provision_configs_uniq_server').on(t.serverId),
|
|
55
|
+
index('idx_provision_configs_tenant').on(t.tenantId),
|
|
56
|
+
],
|
|
57
|
+
);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index, uniqueIndex } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
|
|
4
|
+
export const servers = sqliteTable(
|
|
5
|
+
'servers',
|
|
6
|
+
{
|
|
7
|
+
id: text('id').primaryKey(),
|
|
8
|
+
tenantId: text('tenant_id')
|
|
9
|
+
.notNull()
|
|
10
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
11
|
+
name: text('name').notNull(),
|
|
12
|
+
url: text('url').notNull(),
|
|
13
|
+
token: text('token').notNull().default(''),
|
|
14
|
+
tokenIv: text('token_iv').notNull().default(''),
|
|
15
|
+
authMode: text('auth_mode', { enum: ['token', 'none'] })
|
|
16
|
+
.notNull()
|
|
17
|
+
.default('token'),
|
|
18
|
+
lastConnectedAt: integer('last_connected_at'),
|
|
19
|
+
createdAt: integer('created_at').notNull(),
|
|
20
|
+
updatedAt: integer('updated_at').notNull(),
|
|
21
|
+
},
|
|
22
|
+
(t) => [
|
|
23
|
+
index('idx_servers_tenant').on(t.tenantId),
|
|
24
|
+
uniqueIndex('servers_uniq_url').on(t.tenantId, t.url),
|
|
25
|
+
],
|
|
26
|
+
);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
|
|
5
|
+
export const sessionTasks = sqliteTable(
|
|
6
|
+
'session_tasks',
|
|
7
|
+
{
|
|
8
|
+
id: text('id').primaryKey(),
|
|
9
|
+
tenantId: text('tenant_id')
|
|
10
|
+
.notNull()
|
|
11
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
12
|
+
serverId: text('server_id')
|
|
13
|
+
.notNull()
|
|
14
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
15
|
+
sessionKey: text('session_key').notNull(),
|
|
16
|
+
title: text('title').notNull(),
|
|
17
|
+
description: text('description'),
|
|
18
|
+
status: text('status', { enum: ['backlog', 'todo', 'in_progress', 'done'] })
|
|
19
|
+
.notNull()
|
|
20
|
+
.default('backlog'),
|
|
21
|
+
sortOrder: integer('sort_order').notNull().default(0),
|
|
22
|
+
metadata: text('metadata'),
|
|
23
|
+
createdAt: integer('created_at').notNull(),
|
|
24
|
+
updatedAt: integer('updated_at').notNull(),
|
|
25
|
+
},
|
|
26
|
+
(t) => [
|
|
27
|
+
index('idx_session_tasks_tenant').on(t.tenantId),
|
|
28
|
+
index('idx_session_tasks_server_session').on(t.serverId, t.sessionKey),
|
|
29
|
+
],
|
|
30
|
+
);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index, uniqueIndex } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
|
|
5
|
+
export const sessions = sqliteTable(
|
|
6
|
+
'sessions',
|
|
7
|
+
{
|
|
8
|
+
id: text('id').primaryKey(),
|
|
9
|
+
tenantId: text('tenant_id')
|
|
10
|
+
.notNull()
|
|
11
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
12
|
+
serverId: text('server_id')
|
|
13
|
+
.notNull()
|
|
14
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
15
|
+
agentId: text('agent_id').notNull(),
|
|
16
|
+
sessionKey: text('session_key').notNull(),
|
|
17
|
+
status: text('status', { enum: ['running', 'thinking', 'idle', 'aborted', 'completed'] })
|
|
18
|
+
.notNull()
|
|
19
|
+
.default('idle'),
|
|
20
|
+
metadata: text('metadata'),
|
|
21
|
+
startedAt: integer('started_at'),
|
|
22
|
+
endedAt: integer('ended_at'),
|
|
23
|
+
createdAt: integer('created_at').notNull(),
|
|
24
|
+
updatedAt: integer('updated_at').notNull(),
|
|
25
|
+
},
|
|
26
|
+
(t) => [
|
|
27
|
+
index('idx_sessions_tenant').on(t.tenantId),
|
|
28
|
+
index('idx_sessions_server').on(t.serverId),
|
|
29
|
+
uniqueIndex('sessions_uniq_key').on(t.tenantId, t.serverId, t.sessionKey),
|
|
30
|
+
],
|
|
31
|
+
);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index, uniqueIndex } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
|
|
5
|
+
export const settings = sqliteTable(
|
|
6
|
+
'settings',
|
|
7
|
+
{
|
|
8
|
+
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
9
|
+
tenantId: text('tenant_id')
|
|
10
|
+
.notNull()
|
|
11
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
12
|
+
serverId: text('server_id')
|
|
13
|
+
.notNull()
|
|
14
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
15
|
+
section: text('section').notNull(),
|
|
16
|
+
value: text('value').notNull(),
|
|
17
|
+
updatedAt: integer('updated_at').notNull(),
|
|
18
|
+
},
|
|
19
|
+
(t) => [
|
|
20
|
+
uniqueIndex('uq_settings_server_section').on(t.serverId, t.section),
|
|
21
|
+
index('idx_settings_tenant').on(t.tenantId),
|
|
22
|
+
],
|
|
23
|
+
);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
|
|
5
|
+
export const skillExecutionStats = sqliteTable(
|
|
6
|
+
'skill_execution_stats',
|
|
7
|
+
{
|
|
8
|
+
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
9
|
+
tenantId: text('tenant_id')
|
|
10
|
+
.notNull()
|
|
11
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
12
|
+
serverId: text('server_id')
|
|
13
|
+
.notNull()
|
|
14
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
15
|
+
agentId: text('agent_id'),
|
|
16
|
+
skillName: text('skill_name').notNull(),
|
|
17
|
+
sessionKey: text('session_key'),
|
|
18
|
+
status: text('status', { enum: ['ok', 'auth_error', 'timeout', 'error'] }).notNull(),
|
|
19
|
+
durationMs: integer('duration_ms'),
|
|
20
|
+
errorMessage: text('error_message'),
|
|
21
|
+
occurredAt: integer('occurred_at').notNull(),
|
|
22
|
+
createdAt: integer('created_at').notNull(),
|
|
23
|
+
},
|
|
24
|
+
(t) => [
|
|
25
|
+
index('idx_skill_stats_server_skill_time').on(t.serverId, t.skillName, t.occurredAt),
|
|
26
|
+
index('idx_skill_stats_tenant').on(t.tenantId),
|
|
27
|
+
],
|
|
28
|
+
);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index, primaryKey } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
|
|
5
|
+
export const skills = sqliteTable(
|
|
6
|
+
'skills',
|
|
7
|
+
{
|
|
8
|
+
skillKey: text('skill_key').notNull(),
|
|
9
|
+
serverId: text('server_id')
|
|
10
|
+
.notNull()
|
|
11
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
12
|
+
tenantId: text('tenant_id')
|
|
13
|
+
.notNull()
|
|
14
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
15
|
+
name: text('name').notNull(),
|
|
16
|
+
description: text('description'),
|
|
17
|
+
emoji: text('emoji'),
|
|
18
|
+
bundled: integer('bundled', { mode: 'boolean' }).notNull().default(false),
|
|
19
|
+
disabled: integer('disabled', { mode: 'boolean' }).notNull().default(false),
|
|
20
|
+
eligible: integer('eligible', { mode: 'boolean' }).notNull().default(false),
|
|
21
|
+
rawJson: text('raw_json').notNull(),
|
|
22
|
+
lastSeenAt: integer('last_seen_at').notNull(),
|
|
23
|
+
},
|
|
24
|
+
(t) => [
|
|
25
|
+
primaryKey({ columns: [t.skillKey, t.serverId] }),
|
|
26
|
+
index('idx_skills_tenant').on(t.tenantId),
|
|
27
|
+
],
|
|
28
|
+
);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
import { missions } from './missions.js';
|
|
4
|
+
|
|
5
|
+
export const tasks = sqliteTable(
|
|
6
|
+
'tasks',
|
|
7
|
+
{
|
|
8
|
+
id: text('id').primaryKey(),
|
|
9
|
+
tenantId: text('tenant_id')
|
|
10
|
+
.notNull()
|
|
11
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
12
|
+
missionId: text('mission_id')
|
|
13
|
+
.notNull()
|
|
14
|
+
.references(() => missions.id, { onDelete: 'cascade' }),
|
|
15
|
+
title: text('title').notNull(),
|
|
16
|
+
description: text('description'),
|
|
17
|
+
status: text('status', { enum: ['backlog', 'todo', 'in_progress', 'done'] })
|
|
18
|
+
.notNull()
|
|
19
|
+
.default('backlog'),
|
|
20
|
+
sortOrder: integer('sort_order').notNull().default(0),
|
|
21
|
+
metadata: text('metadata'),
|
|
22
|
+
createdAt: integer('created_at').notNull(),
|
|
23
|
+
updatedAt: integer('updated_at').notNull(),
|
|
24
|
+
},
|
|
25
|
+
(t) => [index('idx_tasks_tenant').on(t.tenantId), index('idx_tasks_mission').on(t.missionId)],
|
|
26
|
+
);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, index, uniqueIndex } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { organization } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
|
|
5
|
+
export const unifiedEvents = sqliteTable(
|
|
6
|
+
'unified_events',
|
|
7
|
+
{
|
|
8
|
+
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
9
|
+
tenantId: text('tenant_id')
|
|
10
|
+
.notNull()
|
|
11
|
+
.references(() => organization.id, { onDelete: 'cascade' }),
|
|
12
|
+
serverId: text('server_id')
|
|
13
|
+
.notNull()
|
|
14
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
15
|
+
localEventId: integer('local_event_id').notNull(),
|
|
16
|
+
category: text('category').notNull(),
|
|
17
|
+
severity: text('severity', { enum: ['critical', 'high', 'medium', 'low', 'info'] }).notNull(),
|
|
18
|
+
event: text('event').notNull(),
|
|
19
|
+
message: text('message').notNull(),
|
|
20
|
+
agentId: text('agent_id'),
|
|
21
|
+
correlationId: text('correlation_id'),
|
|
22
|
+
metadata: text('metadata'),
|
|
23
|
+
occurredAt: integer('occurred_at').notNull(),
|
|
24
|
+
createdAt: integer('created_at').notNull(),
|
|
25
|
+
},
|
|
26
|
+
(t) => [
|
|
27
|
+
index('idx_unified_events_tenant').on(t.tenantId),
|
|
28
|
+
index('idx_unified_events_server_cat_time').on(t.serverId, t.category, t.occurredAt),
|
|
29
|
+
index('idx_unified_events_server_time').on(t.serverId, t.occurredAt),
|
|
30
|
+
index('idx_unified_events_correlation').on(t.correlationId),
|
|
31
|
+
uniqueIndex('idx_unified_events_dedup').on(t.tenantId, t.serverId, t.localEventId),
|
|
32
|
+
],
|
|
33
|
+
);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, primaryKey, index } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { user } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
|
|
5
|
+
export const userAgents = sqliteTable(
|
|
6
|
+
'user_agents',
|
|
7
|
+
{
|
|
8
|
+
userId: text('user_id')
|
|
9
|
+
.notNull()
|
|
10
|
+
.references(() => user.id, { onDelete: 'cascade' }),
|
|
11
|
+
agentId: text('agent_id').notNull(),
|
|
12
|
+
serverId: text('server_id')
|
|
13
|
+
.notNull()
|
|
14
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
15
|
+
createdAt: integer('created_at').notNull(),
|
|
16
|
+
},
|
|
17
|
+
(t) => [
|
|
18
|
+
primaryKey({ columns: [t.userId, t.agentId, t.serverId] }),
|
|
19
|
+
index('idx_user_agents_server').on(t.serverId),
|
|
20
|
+
],
|
|
21
|
+
);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, uniqueIndex, index } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { user } from './auth/index.js';
|
|
3
|
+
|
|
4
|
+
export const userPreferences = sqliteTable(
|
|
5
|
+
'user_preferences',
|
|
6
|
+
{
|
|
7
|
+
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
8
|
+
userId: text('user_id')
|
|
9
|
+
.notNull()
|
|
10
|
+
.references(() => user.id, { onDelete: 'cascade' }),
|
|
11
|
+
section: text('section').notNull(),
|
|
12
|
+
value: text('value').notNull(),
|
|
13
|
+
updatedAt: integer('updated_at').notNull(),
|
|
14
|
+
},
|
|
15
|
+
(t) => [
|
|
16
|
+
uniqueIndex('uq_user_prefs_user_section').on(t.userId, t.section),
|
|
17
|
+
index('idx_user_prefs_user').on(t.userId),
|
|
18
|
+
],
|
|
19
|
+
);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { sqliteTable, text, integer, primaryKey, index } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { user } from './auth/index.js';
|
|
3
|
+
import { servers } from './servers.js';
|
|
4
|
+
|
|
5
|
+
export const userServers = sqliteTable(
|
|
6
|
+
'user_servers',
|
|
7
|
+
{
|
|
8
|
+
userId: text('user_id')
|
|
9
|
+
.notNull()
|
|
10
|
+
.references(() => user.id, { onDelete: 'cascade' }),
|
|
11
|
+
serverId: text('server_id')
|
|
12
|
+
.notNull()
|
|
13
|
+
.references(() => servers.id, { onDelete: 'cascade' }),
|
|
14
|
+
createdAt: integer('created_at').notNull(),
|
|
15
|
+
},
|
|
16
|
+
(t) => [
|
|
17
|
+
primaryKey({ columns: [t.userId, t.serverId] }),
|
|
18
|
+
index('idx_user_servers_server').on(t.serverId),
|
|
19
|
+
],
|
|
20
|
+
);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
|
|
3
|
+
export const workshopSaves = sqliteTable('workshop_saves', {
|
|
4
|
+
id: text('id').primaryKey(),
|
|
5
|
+
name: text('name').notNull(),
|
|
6
|
+
state: text('state').notNull(), // JSON string of WorkshopState
|
|
7
|
+
thumbnail: text('thumbnail'), // base64 PNG data-URI, nullable
|
|
8
|
+
userId: text('user_id'), // owner — null for pre-migration rows (treated as shared)
|
|
9
|
+
tenantId: text('tenant_id'), // tenant scope — null for pre-migration rows
|
|
10
|
+
createdAt: integer('created_at').notNull(),
|
|
11
|
+
updatedAt: integer('updated_at').notNull(),
|
|
12
|
+
});
|