@commandable/mcp-core 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/LICENSE +10 -0
- package/README.md +8 -0
- package/dist/config/configApply.d.ts +16 -0
- package/dist/config/configApply.d.ts.map +1 -0
- package/dist/config/configApply.js +77 -0
- package/dist/config/configApply.js.map +1 -0
- package/dist/config/configLoader.d.ts +9 -0
- package/dist/config/configLoader.d.ts.map +1 -0
- package/dist/config/configLoader.js +75 -0
- package/dist/config/configLoader.js.map +1 -0
- package/dist/config/configSchema.d.ts +45 -0
- package/dist/config/configSchema.d.ts.map +1 -0
- package/dist/config/configSchema.js +23 -0
- package/dist/config/configSchema.js.map +1 -0
- package/dist/crypto/encryption.d.ts +3 -0
- package/dist/crypto/encryption.d.ts.map +1 -0
- package/dist/crypto/encryption.js +29 -0
- package/dist/crypto/encryption.js.map +1 -0
- package/dist/db/client.d.ts +24 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +50 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/credentialStore.d.ts +15 -0
- package/dist/db/credentialStore.d.ts.map +1 -0
- package/dist/db/credentialStore.js +56 -0
- package/dist/db/credentialStore.js.map +1 -0
- package/dist/db/integrationStore.d.ts +14 -0
- package/dist/db/integrationStore.d.ts.map +1 -0
- package/dist/db/integrationStore.js +128 -0
- package/dist/db/integrationStore.js.map +1 -0
- package/dist/db/integrationTypeConfigStore.d.ts +7 -0
- package/dist/db/integrationTypeConfigStore.d.ts.map +1 -0
- package/dist/db/integrationTypeConfigStore.js +101 -0
- package/dist/db/integrationTypeConfigStore.js.map +1 -0
- package/dist/db/migrate.d.ts +3 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +11 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/migrations/pg/0000_initial.sql +74 -0
- package/dist/db/migrations/pg/meta/_journal.json +13 -0
- package/dist/db/migrations/sqlite/0000_initial.sql +74 -0
- package/dist/db/migrations/sqlite/meta/_journal.json +13 -0
- package/dist/db/schema.d.ts +1863 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +133 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/toolDefinitionStore.d.ts +9 -0
- package/dist/db/toolDefinitionStore.d.ts.map +1 -0
- package/dist/db/toolDefinitionStore.js +117 -0
- package/dist/db/toolDefinitionStore.js.map +1 -0
- package/dist/errors/httpError.d.ts +6 -0
- package/dist/errors/httpError.d.ts.map +1 -0
- package/dist/errors/httpError.js +11 -0
- package/dist/errors/httpError.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/actionsFactory.d.ts +16 -0
- package/dist/integrations/actionsFactory.d.ts.map +1 -0
- package/dist/integrations/actionsFactory.js +98 -0
- package/dist/integrations/actionsFactory.js.map +1 -0
- package/dist/integrations/catalog.d.ts +8 -0
- package/dist/integrations/catalog.d.ts.map +1 -0
- package/dist/integrations/catalog.js +45 -0
- package/dist/integrations/catalog.js.map +1 -0
- package/dist/integrations/customToolFactory.d.ts +13 -0
- package/dist/integrations/customToolFactory.d.ts.map +1 -0
- package/dist/integrations/customToolFactory.js +31 -0
- package/dist/integrations/customToolFactory.js.map +1 -0
- package/dist/integrations/dataLoader.d.ts +3 -0
- package/dist/integrations/dataLoader.d.ts.map +1 -0
- package/dist/integrations/dataLoader.js +2 -0
- package/dist/integrations/dataLoader.js.map +1 -0
- package/dist/integrations/fileIntegrationTypeConfigStore.d.ts +7 -0
- package/dist/integrations/fileIntegrationTypeConfigStore.d.ts.map +1 -0
- package/dist/integrations/fileIntegrationTypeConfigStore.js +34 -0
- package/dist/integrations/fileIntegrationTypeConfigStore.js.map +1 -0
- package/dist/integrations/getIntegration.d.ts +14 -0
- package/dist/integrations/getIntegration.d.ts.map +1 -0
- package/dist/integrations/getIntegration.js +30 -0
- package/dist/integrations/getIntegration.js.map +1 -0
- package/dist/integrations/googleServiceAccount.d.ts +6 -0
- package/dist/integrations/googleServiceAccount.d.ts.map +1 -0
- package/dist/integrations/googleServiceAccount.js +54 -0
- package/dist/integrations/googleServiceAccount.js.map +1 -0
- package/dist/integrations/health.d.ts +20 -0
- package/dist/integrations/health.d.ts.map +1 -0
- package/dist/integrations/health.js +43 -0
- package/dist/integrations/health.js.map +1 -0
- package/dist/integrations/integrationTypeConfigLookup.d.ts +12 -0
- package/dist/integrations/integrationTypeConfigLookup.d.ts.map +1 -0
- package/dist/integrations/integrationTypeConfigLookup.js +11 -0
- package/dist/integrations/integrationTypeConfigLookup.js.map +1 -0
- package/dist/integrations/providerRegistry.d.ts +2 -0
- package/dist/integrations/providerRegistry.d.ts.map +1 -0
- package/dist/integrations/providerRegistry.js +72 -0
- package/dist/integrations/providerRegistry.js.map +1 -0
- package/dist/integrations/proxy.d.ts +19 -0
- package/dist/integrations/proxy.d.ts.map +1 -0
- package/dist/integrations/proxy.js +377 -0
- package/dist/integrations/proxy.js.map +1 -0
- package/dist/integrations/sandbox.d.ts +8 -0
- package/dist/integrations/sandbox.d.ts.map +1 -0
- package/dist/integrations/sandbox.js +221 -0
- package/dist/integrations/sandbox.js.map +1 -0
- package/dist/integrations/sandboxUtils.d.ts +15 -0
- package/dist/integrations/sandboxUtils.d.ts.map +1 -0
- package/dist/integrations/sandboxUtils.js +489 -0
- package/dist/integrations/sandboxUtils.js.map +1 -0
- package/dist/integrations/tools.d.ts +3 -0
- package/dist/integrations/tools.d.ts.map +1 -0
- package/dist/integrations/tools.js +70 -0
- package/dist/integrations/tools.js.map +1 -0
- package/dist/mcp/abilityCatalog.d.ts +51 -0
- package/dist/mcp/abilityCatalog.d.ts.map +1 -0
- package/dist/mcp/abilityCatalog.js +300 -0
- package/dist/mcp/abilityCatalog.js.map +1 -0
- package/dist/mcp/auth.d.ts +18 -0
- package/dist/mcp/auth.d.ts.map +1 -0
- package/dist/mcp/auth.js +45 -0
- package/dist/mcp/auth.js.map +1 -0
- package/dist/mcp/builder_guide.md +441 -0
- package/dist/mcp/commandable_readme.md +29 -0
- package/dist/mcp/handlers.d.ts +21 -0
- package/dist/mcp/handlers.d.ts.map +1 -0
- package/dist/mcp/handlers.js +86 -0
- package/dist/mcp/handlers.js.map +1 -0
- package/dist/mcp/metaTools.d.ts +79 -0
- package/dist/mcp/metaTools.d.ts.map +1 -0
- package/dist/mcp/metaTools.js +901 -0
- package/dist/mcp/metaTools.js.map +1 -0
- package/dist/mcp/server.d.ts +25 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +14 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/sessionState.d.ts +19 -0
- package/dist/mcp/sessionState.d.ts.map +1 -0
- package/dist/mcp/sessionState.js +79 -0
- package/dist/mcp/sessionState.js.map +1 -0
- package/dist/mcp/toolAdapter.d.ts +34 -0
- package/dist/mcp/toolAdapter.d.ts.map +1 -0
- package/dist/mcp/toolAdapter.js +24 -0
- package/dist/mcp/toolAdapter.js.map +1 -0
- package/dist/runtime/credentialManager.d.ts +19 -0
- package/dist/runtime/credentialManager.d.ts.map +1 -0
- package/dist/runtime/credentialManager.js +82 -0
- package/dist/runtime/credentialManager.js.map +1 -0
- package/dist/runtime/stdioSession.d.ts +8 -0
- package/dist/runtime/stdioSession.d.ts.map +1 -0
- package/dist/runtime/stdioSession.js +79 -0
- package/dist/runtime/stdioSession.js.map +1 -0
- package/dist/types.d.ts +92 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { and, eq } from 'drizzle-orm';
|
|
2
|
+
import { pgIntegrations, sqliteIntegrations } from './schema.js';
|
|
3
|
+
function t(client) {
|
|
4
|
+
return client.dialect === 'sqlite' ? sqliteIntegrations : pgIntegrations;
|
|
5
|
+
}
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
+
function db(client) {
|
|
8
|
+
return client.db;
|
|
9
|
+
}
|
|
10
|
+
function parseJson(raw) {
|
|
11
|
+
if (!raw)
|
|
12
|
+
return undefined;
|
|
13
|
+
if (typeof raw === 'string') {
|
|
14
|
+
try {
|
|
15
|
+
return JSON.parse(raw);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return raw;
|
|
22
|
+
}
|
|
23
|
+
function rowToIntegrationData(r) {
|
|
24
|
+
const healthCheckedAt = r.healthCheckedAt
|
|
25
|
+
? (r.healthCheckedAt instanceof Date ? r.healthCheckedAt : new Date(r.healthCheckedAt))
|
|
26
|
+
: null;
|
|
27
|
+
return {
|
|
28
|
+
id: r.id,
|
|
29
|
+
spaceId: r.spaceId ?? undefined,
|
|
30
|
+
type: r.type,
|
|
31
|
+
referenceId: r.referenceId,
|
|
32
|
+
label: r.label,
|
|
33
|
+
enabled: r.enabled === 0 ? false : true,
|
|
34
|
+
connectionMethod: r.connectionMethod ?? undefined,
|
|
35
|
+
connectionId: r.connectionId ?? undefined,
|
|
36
|
+
credentialId: r.credentialId ?? undefined,
|
|
37
|
+
credentialVariant: r.credentialVariant ?? undefined,
|
|
38
|
+
enabledToolsets: parseJson(r.enabledToolsets),
|
|
39
|
+
maxScope: r.maxScope ?? undefined,
|
|
40
|
+
disabledTools: parseJson(r.disabledTools),
|
|
41
|
+
healthStatus: r.healthStatus ?? null,
|
|
42
|
+
healthCheckedAt,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export async function listIntegrations(client, spaceId) {
|
|
46
|
+
const table = t(client);
|
|
47
|
+
let query = db(client).select().from(table);
|
|
48
|
+
if (spaceId)
|
|
49
|
+
query = query.where(eq(table.spaceId, spaceId));
|
|
50
|
+
const rows = await query;
|
|
51
|
+
return rows.map(rowToIntegrationData);
|
|
52
|
+
}
|
|
53
|
+
export async function getIntegrationById(client, id) {
|
|
54
|
+
const table = t(client);
|
|
55
|
+
const rows = await db(client)
|
|
56
|
+
.select()
|
|
57
|
+
.from(table)
|
|
58
|
+
.where(eq(table.id, id))
|
|
59
|
+
.limit(1);
|
|
60
|
+
return rows[0] ? rowToIntegrationData(rows[0]) : null;
|
|
61
|
+
}
|
|
62
|
+
export async function upsertIntegration(client, integration) {
|
|
63
|
+
const table = t(client);
|
|
64
|
+
const now = new Date();
|
|
65
|
+
const enabled = integration.enabled === false ? 0 : 1;
|
|
66
|
+
await db(client)
|
|
67
|
+
.insert(table)
|
|
68
|
+
.values({
|
|
69
|
+
id: integration.id,
|
|
70
|
+
spaceId: integration.spaceId ?? null,
|
|
71
|
+
type: integration.type,
|
|
72
|
+
referenceId: integration.referenceId,
|
|
73
|
+
label: integration.label,
|
|
74
|
+
enabled,
|
|
75
|
+
connectionMethod: integration.connectionMethod ?? null,
|
|
76
|
+
connectionId: integration.connectionId ?? null,
|
|
77
|
+
credentialId: integration.credentialId ?? null,
|
|
78
|
+
credentialVariant: integration.credentialVariant ?? null,
|
|
79
|
+
enabledToolsets: integration.enabledToolsets ? JSON.stringify(integration.enabledToolsets) : null,
|
|
80
|
+
maxScope: integration.maxScope ?? null,
|
|
81
|
+
disabledTools: integration.disabledTools?.length ? JSON.stringify(integration.disabledTools) : null,
|
|
82
|
+
createdAt: now,
|
|
83
|
+
})
|
|
84
|
+
.onConflictDoUpdate({
|
|
85
|
+
target: table.id,
|
|
86
|
+
set: {
|
|
87
|
+
spaceId: integration.spaceId ?? null,
|
|
88
|
+
type: integration.type,
|
|
89
|
+
referenceId: integration.referenceId,
|
|
90
|
+
label: integration.label,
|
|
91
|
+
enabled,
|
|
92
|
+
connectionMethod: integration.connectionMethod ?? null,
|
|
93
|
+
connectionId: integration.connectionId ?? null,
|
|
94
|
+
credentialId: integration.credentialId ?? null,
|
|
95
|
+
credentialVariant: integration.credentialVariant ?? null,
|
|
96
|
+
enabledToolsets: integration.enabledToolsets ? JSON.stringify(integration.enabledToolsets) : null,
|
|
97
|
+
maxScope: integration.maxScope ?? null,
|
|
98
|
+
disabledTools: integration.disabledTools?.length ? JSON.stringify(integration.disabledTools) : null,
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
export async function deleteIntegrationById(client, id) {
|
|
103
|
+
const table = t(client);
|
|
104
|
+
const result = await db(client)
|
|
105
|
+
.delete(table)
|
|
106
|
+
.where(eq(table.id, id));
|
|
107
|
+
return Number(result?.rowsAffected ?? result?.rowCount ?? 0);
|
|
108
|
+
}
|
|
109
|
+
/** Update only credential linkage fields — does not clobber toolsets/permissions. */
|
|
110
|
+
export async function updateIntegrationCredentials(client, integrationId, fields) {
|
|
111
|
+
const table = t(client);
|
|
112
|
+
await db(client)
|
|
113
|
+
.update(table)
|
|
114
|
+
.set({
|
|
115
|
+
connectionMethod: fields.connectionMethod ?? null,
|
|
116
|
+
credentialId: fields.credentialId ?? null,
|
|
117
|
+
credentialVariant: fields.credentialVariant ?? null,
|
|
118
|
+
})
|
|
119
|
+
.where(eq(table.id, integrationId));
|
|
120
|
+
}
|
|
121
|
+
export async function updateIntegrationHealth(client, integrationId, healthStatus, checkedAt) {
|
|
122
|
+
const table = t(client);
|
|
123
|
+
await db(client)
|
|
124
|
+
.update(table)
|
|
125
|
+
.set({ healthStatus, healthCheckedAt: checkedAt ?? new Date() })
|
|
126
|
+
.where(and(eq(table.id, integrationId)));
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=integrationStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrationStore.js","sourceRoot":"","sources":["../../src/db/integrationStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAGrC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhE,SAAS,CAAC,CAAC,MAAgB;IACzB,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAA;AAC1E,CAAC;AAED,8DAA8D;AAC9D,SAAS,EAAE,CAAC,MAAgB;IAC1B,OAAO,MAAM,CAAC,EAAE,CAAA;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,GAAQ;IACzB,IAAI,CAAC,GAAG;QACN,OAAO,SAAS,CAAA;IAClB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,SAAS,CAAA;QAAC,CAAC;IAC3D,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAM;IAClC,MAAM,eAAe,GAAG,CAAC,CAAC,eAAe;QACvC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACvF,CAAC,CAAC,IAAI,CAAA;IAER,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,SAAS;QAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QACvC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,SAAS;QACjD,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,SAAS;QACzC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,SAAS;QACzC,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,IAAI,SAAS;QACnD,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;QAC7C,QAAQ,EAAG,CAAC,CAAC,QAAoC,IAAI,SAAS;QAC9D,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;QACzC,YAAY,EAAG,CAAC,CAAC,YAAgD,IAAI,IAAI;QACzE,eAAe;KACU,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAgB,EAAE,OAAgB;IACvE,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IACvB,IAAI,KAAK,GAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAChD,IAAI,OAAO;QACT,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IACjD,MAAM,IAAI,GAAU,MAAM,KAAK,CAAA;IAE/B,OAAO,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAgB,EAChB,EAAU;IAEV,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IACvB,MAAM,IAAI,GAAU,MAAM,EAAE,CAAC,MAAM,CAAC;SACjC,MAAM,EAAE;SACR,IAAI,CAAC,KAAK,CAAC;SACX,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SACvB,KAAK,CAAC,CAAC,CAAC,CAAA;IACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAgB,EAAE,WAA4B;IACpF,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IACvB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAErD,MAAM,EAAE,CAAC,MAAM,CAAC;SACb,MAAM,CAAC,KAAK,CAAC;SACb,MAAM,CAAC;QACN,EAAE,EAAE,WAAW,CAAC,EAAE;QAClB,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,IAAI;QACpC,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,OAAO;QACP,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,IAAI,IAAI;QACtD,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,IAAI;QAC9C,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,IAAI;QAC9C,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,IAAI,IAAI;QACxD,eAAe,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;QACjG,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,IAAI;QACtC,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI;QACnG,SAAS,EAAE,GAAG;KACf,CAAC;SACD,kBAAkB,CAAC;QAClB,MAAM,EAAE,KAAK,CAAC,EAAE;QAChB,GAAG,EAAE;YACH,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,IAAI;YACpC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,OAAO;YACP,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,IAAI,IAAI;YACtD,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,IAAI;YAC9C,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,IAAI;YAC9C,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,IAAI,IAAI;YACxD,eAAe,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;YACjG,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,IAAI;YACtC,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI;SACpG;KACF,CAAC,CAAA;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAgB,EAAE,EAAU;IACtE,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IACvB,MAAM,MAAM,GAAQ,MAAM,EAAE,CAAC,MAAM,CAAC;SACjC,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAC1B,OAAO,MAAM,CAAC,MAAM,EAAE,YAAY,IAAI,MAAM,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAAgB,EAChB,aAAqB,EACrB,MAIC;IAED,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IACvB,MAAM,EAAE,CAAC,MAAM,CAAC;SACb,MAAM,CAAC,KAAK,CAAC;SACb,GAAG,CAAC;QACH,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,IAAI;QACjD,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;QACzC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;KACpD,CAAC;SACD,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAgB,EAChB,aAAqB,EACrB,YAAkE,EAClE,SAAgB;IAEhB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IACvB,MAAM,EAAE,CAAC,MAAM,CAAC;SACb,MAAM,CAAC,KAAK,CAAC;SACb,GAAG,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;SAC/D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;AAC5C,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DbClient } from './client.js';
|
|
2
|
+
import type { IntegrationTypeConfig } from '../types.js';
|
|
3
|
+
export declare function listIntegrationTypeConfigs(client: DbClient, spaceId: string): Promise<IntegrationTypeConfig[]>;
|
|
4
|
+
export declare function getIntegrationTypeConfig(client: DbClient, spaceId: string, typeSlug: string): Promise<IntegrationTypeConfig | null>;
|
|
5
|
+
export declare function upsertIntegrationTypeConfig(client: DbClient, cfg: Required<Pick<IntegrationTypeConfig, 'id' | 'spaceId'>> & Omit<IntegrationTypeConfig, 'createdAt' | 'updatedAt'>): Promise<void>;
|
|
6
|
+
export declare function deleteIntegrationTypeConfig(client: DbClient, spaceId: string, typeSlug: string): Promise<number>;
|
|
7
|
+
//# sourceMappingURL=integrationTypeConfigStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrationTypeConfigStore.d.ts","sourceRoot":"","sources":["../../src/db/integrationTypeConfigStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAgC,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAwDtF,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAGpH;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAQvC;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,QAAQ,EAChB,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,WAAW,GAAG,WAAW,CAAC,GACpH,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAMjB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { and, eq } from 'drizzle-orm';
|
|
2
|
+
import { pgIntegrationTypeConfigs, sqliteIntegrationTypeConfigs } from './schema.js';
|
|
3
|
+
function t(client) {
|
|
4
|
+
return client.dialect === 'sqlite' ? sqliteIntegrationTypeConfigs : pgIntegrationTypeConfigs;
|
|
5
|
+
}
|
|
6
|
+
function db(client) {
|
|
7
|
+
return client.db;
|
|
8
|
+
}
|
|
9
|
+
function parseJson(raw) {
|
|
10
|
+
if (raw == null)
|
|
11
|
+
return null;
|
|
12
|
+
if (typeof raw === 'string') {
|
|
13
|
+
try {
|
|
14
|
+
return JSON.parse(raw);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return raw;
|
|
21
|
+
}
|
|
22
|
+
function normalizeHintMarkdown(value) {
|
|
23
|
+
return value
|
|
24
|
+
.replace(/\r\n/g, '\n')
|
|
25
|
+
.replace(/\\r\\n/g, '\n')
|
|
26
|
+
.replace(/\\n/g, '\n');
|
|
27
|
+
}
|
|
28
|
+
function normalizeVariants(variants) {
|
|
29
|
+
return Object.fromEntries(Object.entries(variants).map(([key, variant]) => [
|
|
30
|
+
key,
|
|
31
|
+
{
|
|
32
|
+
...variant,
|
|
33
|
+
hintMarkdown: typeof variant.hintMarkdown === 'string'
|
|
34
|
+
? normalizeHintMarkdown(variant.hintMarkdown)
|
|
35
|
+
: variant.hintMarkdown,
|
|
36
|
+
},
|
|
37
|
+
]));
|
|
38
|
+
}
|
|
39
|
+
function rowToIntegrationTypeConfig(r) {
|
|
40
|
+
const variants = parseJson(r.variantsJson) || {};
|
|
41
|
+
return {
|
|
42
|
+
id: r.id,
|
|
43
|
+
spaceId: r.spaceId,
|
|
44
|
+
typeSlug: r.typeSlug,
|
|
45
|
+
label: r.label,
|
|
46
|
+
defaultVariant: r.defaultVariant,
|
|
47
|
+
variants: normalizeVariants(variants),
|
|
48
|
+
createdAt: r.createdAt instanceof Date ? r.createdAt : (r.createdAt ? new Date(r.createdAt) : undefined),
|
|
49
|
+
updatedAt: r.updatedAt instanceof Date ? r.updatedAt : (r.updatedAt ? new Date(r.updatedAt) : undefined),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export async function listIntegrationTypeConfigs(client, spaceId) {
|
|
53
|
+
const rows = await db(client).select().from(t(client)).where(eq(t(client).spaceId, spaceId));
|
|
54
|
+
return rows.map(rowToIntegrationTypeConfig);
|
|
55
|
+
}
|
|
56
|
+
export async function getIntegrationTypeConfig(client, spaceId, typeSlug) {
|
|
57
|
+
const table = t(client);
|
|
58
|
+
const rows = await db(client)
|
|
59
|
+
.select()
|
|
60
|
+
.from(table)
|
|
61
|
+
.where(and(eq(table.spaceId, spaceId), eq(table.typeSlug, typeSlug)))
|
|
62
|
+
.limit(1);
|
|
63
|
+
return rows[0] ? rowToIntegrationTypeConfig(rows[0]) : null;
|
|
64
|
+
}
|
|
65
|
+
export async function upsertIntegrationTypeConfig(client, cfg) {
|
|
66
|
+
const table = t(client);
|
|
67
|
+
const now = new Date();
|
|
68
|
+
const variantsValue = client.dialect === 'sqlite'
|
|
69
|
+
? JSON.stringify(cfg.variants ?? {})
|
|
70
|
+
: (cfg.variants ?? {});
|
|
71
|
+
await db(client)
|
|
72
|
+
.insert(table)
|
|
73
|
+
.values({
|
|
74
|
+
id: cfg.id,
|
|
75
|
+
spaceId: cfg.spaceId,
|
|
76
|
+
typeSlug: cfg.typeSlug,
|
|
77
|
+
label: cfg.label,
|
|
78
|
+
defaultVariant: cfg.defaultVariant,
|
|
79
|
+
variantsJson: variantsValue,
|
|
80
|
+
createdAt: now,
|
|
81
|
+
updatedAt: now,
|
|
82
|
+
})
|
|
83
|
+
.onConflictDoUpdate({
|
|
84
|
+
target: [table.spaceId, table.typeSlug],
|
|
85
|
+
set: {
|
|
86
|
+
typeSlug: cfg.typeSlug,
|
|
87
|
+
label: cfg.label,
|
|
88
|
+
defaultVariant: cfg.defaultVariant,
|
|
89
|
+
variantsJson: variantsValue,
|
|
90
|
+
updatedAt: now,
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
export async function deleteIntegrationTypeConfig(client, spaceId, typeSlug) {
|
|
95
|
+
const table = t(client);
|
|
96
|
+
const result = await db(client)
|
|
97
|
+
.delete(table)
|
|
98
|
+
.where(and(eq(table.spaceId, spaceId), eq(table.typeSlug, typeSlug)));
|
|
99
|
+
return Number(result?.rowsAffected ?? result?.rowCount ?? 0);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=integrationTypeConfigStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrationTypeConfigStore.js","sourceRoot":"","sources":["../../src/db/integrationTypeConfigStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,wBAAsB,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { migrate as migrateSqlite } from 'drizzle-orm/better-sqlite3/migrator';
|
|
2
|
+
import { migrate as migratePg } from 'drizzle-orm/node-postgres/migrator';
|
|
3
|
+
export async function ensureSchema(client) {
|
|
4
|
+
const dialect = client.dialect === 'sqlite' ? 'sqlite' : 'pg';
|
|
5
|
+
const migrationsFolder = new URL(`./${dialect}`, new URL('./migrations/', import.meta.url)).pathname;
|
|
6
|
+
if (client.dialect === 'sqlite')
|
|
7
|
+
migrateSqlite(client.db, { migrationsFolder });
|
|
8
|
+
else
|
|
9
|
+
await migratePg(client.db, { migrationsFolder });
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAC9E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAGzE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAgB;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,KAAK,OAAO,EAAE,EAAE,IAAI,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAA;IACpG,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ;QAC7B,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAA;;QAE9C,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAA;AACpD,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS "integrations" (
|
|
2
|
+
"id" TEXT PRIMARY KEY NOT NULL,
|
|
3
|
+
"space_id" TEXT,
|
|
4
|
+
"type" TEXT NOT NULL,
|
|
5
|
+
"reference_id" TEXT NOT NULL,
|
|
6
|
+
"label" TEXT NOT NULL,
|
|
7
|
+
"enabled" INTEGER NOT NULL DEFAULT 1,
|
|
8
|
+
"connection_method" TEXT,
|
|
9
|
+
"connection_id" TEXT,
|
|
10
|
+
"credential_id" TEXT,
|
|
11
|
+
"credential_variant" TEXT,
|
|
12
|
+
"enabled_toolsets" TEXT,
|
|
13
|
+
"max_scope" TEXT,
|
|
14
|
+
"disabled_tools" TEXT,
|
|
15
|
+
"health_status" TEXT,
|
|
16
|
+
"health_checked_at" TIMESTAMPTZ,
|
|
17
|
+
"created_at" TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
CREATE TABLE IF NOT EXISTS "credentials" (
|
|
21
|
+
"space_id" TEXT NOT NULL,
|
|
22
|
+
"id" TEXT NOT NULL,
|
|
23
|
+
"ciphertext" TEXT NOT NULL,
|
|
24
|
+
"created_at" TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
25
|
+
"updated_at" TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
26
|
+
PRIMARY KEY("space_id", "id")
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
CREATE TABLE IF NOT EXISTS "api_keys" (
|
|
30
|
+
"id" TEXT PRIMARY KEY NOT NULL,
|
|
31
|
+
"name" TEXT NOT NULL,
|
|
32
|
+
"key_hash" TEXT NOT NULL,
|
|
33
|
+
"scopes_json" JSONB,
|
|
34
|
+
"created_at" TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
CREATE TABLE IF NOT EXISTS "users" (
|
|
38
|
+
"id" TEXT PRIMARY KEY NOT NULL,
|
|
39
|
+
"email" TEXT NOT NULL,
|
|
40
|
+
"password_hash" TEXT,
|
|
41
|
+
"created_at" TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
CREATE TABLE IF NOT EXISTS "integration_type_configs" (
|
|
45
|
+
"id" TEXT PRIMARY KEY NOT NULL,
|
|
46
|
+
"space_id" TEXT NOT NULL,
|
|
47
|
+
"type_slug" TEXT NOT NULL,
|
|
48
|
+
"label" TEXT NOT NULL,
|
|
49
|
+
"default_variant" TEXT NOT NULL,
|
|
50
|
+
"variants_json" JSONB NOT NULL,
|
|
51
|
+
"created_at" TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
52
|
+
"updated_at" TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "integration_type_configs__space_type_slug"
|
|
56
|
+
ON "integration_type_configs"("space_id", "type_slug");
|
|
57
|
+
|
|
58
|
+
CREATE TABLE IF NOT EXISTS "tool_definitions" (
|
|
59
|
+
"id" TEXT PRIMARY KEY NOT NULL,
|
|
60
|
+
"space_id" TEXT NOT NULL,
|
|
61
|
+
"integration_id" TEXT NOT NULL,
|
|
62
|
+
"name" TEXT NOT NULL,
|
|
63
|
+
"display_name" TEXT,
|
|
64
|
+
"description" TEXT NOT NULL,
|
|
65
|
+
"scope" TEXT NOT NULL,
|
|
66
|
+
"input_schema_json" JSONB NOT NULL,
|
|
67
|
+
"handler_code" TEXT NOT NULL,
|
|
68
|
+
"utils_json" JSONB,
|
|
69
|
+
"created_at" TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
70
|
+
"updated_at" TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "tool_definitions__space_integration_name"
|
|
74
|
+
ON "tool_definitions"("space_id", "integration_id", "name");
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS `integrations` (
|
|
2
|
+
`id` TEXT PRIMARY KEY NOT NULL,
|
|
3
|
+
`space_id` TEXT,
|
|
4
|
+
`type` TEXT NOT NULL,
|
|
5
|
+
`reference_id` TEXT NOT NULL,
|
|
6
|
+
`label` TEXT NOT NULL,
|
|
7
|
+
`enabled` INTEGER NOT NULL DEFAULT 1,
|
|
8
|
+
`connection_method` TEXT,
|
|
9
|
+
`connection_id` TEXT,
|
|
10
|
+
`credential_id` TEXT,
|
|
11
|
+
`credential_variant` TEXT,
|
|
12
|
+
`enabled_toolsets` TEXT,
|
|
13
|
+
`max_scope` TEXT,
|
|
14
|
+
`disabled_tools` TEXT,
|
|
15
|
+
`health_status` TEXT,
|
|
16
|
+
`health_checked_at` INTEGER,
|
|
17
|
+
`created_at` INTEGER NOT NULL
|
|
18
|
+
);
|
|
19
|
+
--> statement-breakpoint
|
|
20
|
+
CREATE TABLE IF NOT EXISTS `credentials` (
|
|
21
|
+
`space_id` TEXT NOT NULL,
|
|
22
|
+
`id` TEXT NOT NULL,
|
|
23
|
+
`ciphertext` TEXT NOT NULL,
|
|
24
|
+
`created_at` INTEGER NOT NULL,
|
|
25
|
+
`updated_at` INTEGER NOT NULL,
|
|
26
|
+
PRIMARY KEY(`space_id`, `id`)
|
|
27
|
+
);
|
|
28
|
+
--> statement-breakpoint
|
|
29
|
+
CREATE TABLE IF NOT EXISTS `api_keys` (
|
|
30
|
+
`id` TEXT PRIMARY KEY NOT NULL,
|
|
31
|
+
`name` TEXT NOT NULL,
|
|
32
|
+
`key_hash` TEXT NOT NULL,
|
|
33
|
+
`scopes_json` TEXT,
|
|
34
|
+
`created_at` INTEGER NOT NULL
|
|
35
|
+
);
|
|
36
|
+
--> statement-breakpoint
|
|
37
|
+
CREATE TABLE IF NOT EXISTS `users` (
|
|
38
|
+
`id` TEXT PRIMARY KEY NOT NULL,
|
|
39
|
+
`email` TEXT NOT NULL,
|
|
40
|
+
`password_hash` TEXT,
|
|
41
|
+
`created_at` INTEGER NOT NULL
|
|
42
|
+
);
|
|
43
|
+
--> statement-breakpoint
|
|
44
|
+
CREATE TABLE IF NOT EXISTS `integration_type_configs` (
|
|
45
|
+
`id` TEXT PRIMARY KEY NOT NULL,
|
|
46
|
+
`space_id` TEXT NOT NULL,
|
|
47
|
+
`type_slug` TEXT NOT NULL,
|
|
48
|
+
`label` TEXT NOT NULL,
|
|
49
|
+
`default_variant` TEXT NOT NULL,
|
|
50
|
+
`variants_json` TEXT NOT NULL,
|
|
51
|
+
`created_at` INTEGER NOT NULL,
|
|
52
|
+
`updated_at` INTEGER NOT NULL
|
|
53
|
+
);
|
|
54
|
+
--> statement-breakpoint
|
|
55
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `integration_type_configs__space_type_slug`
|
|
56
|
+
ON `integration_type_configs`(`space_id`, `type_slug`);
|
|
57
|
+
--> statement-breakpoint
|
|
58
|
+
CREATE TABLE IF NOT EXISTS `tool_definitions` (
|
|
59
|
+
`id` TEXT PRIMARY KEY NOT NULL,
|
|
60
|
+
`space_id` TEXT NOT NULL,
|
|
61
|
+
`integration_id` TEXT NOT NULL,
|
|
62
|
+
`name` TEXT NOT NULL,
|
|
63
|
+
`display_name` TEXT,
|
|
64
|
+
`description` TEXT NOT NULL,
|
|
65
|
+
`scope` TEXT NOT NULL,
|
|
66
|
+
`input_schema_json` TEXT NOT NULL,
|
|
67
|
+
`handler_code` TEXT NOT NULL,
|
|
68
|
+
`utils_json` TEXT,
|
|
69
|
+
`created_at` INTEGER NOT NULL,
|
|
70
|
+
`updated_at` INTEGER NOT NULL
|
|
71
|
+
);
|
|
72
|
+
--> statement-breakpoint
|
|
73
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `tool_definitions__space_integration_name`
|
|
74
|
+
ON `tool_definitions`(`space_id`, `integration_id`, `name`);
|