@commandable/mcp 0.0.6 → 0.1.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/README.md +28 -31
- package/dist/app/nitro.json +15 -0
- package/dist/app/public/_fonts/57NSSoFy1VLVs2gqly8Ls9awBnZMFyXGrefpmqvdqmc-zJfbBtpgM4cDmcXBsqZNW79_kFnlpPd62b48glgdydA.woff2 +0 -0
- package/dist/app/public/_fonts/8VR2wSMN-3U4NbWAVYXlkRV6hA0jFBXP-0RtL3X7fko-x2gYI4qfmkRdxyQQUPaBZdZdgl1TeVrquF_TxHeM4lM.woff2 +0 -0
- package/dist/app/public/_fonts/GsKUclqeNLJ96g5AU593ug6yanivOiwjW_7zESNPChw-jHA4tBeM1bjF7LATGUpfBuSTyomIFrWBTzjF7txVYfg.woff2 +0 -0
- package/dist/app/public/_fonts/Ld1FnTo3yTIwDyGfTQ5-Fws9AWsCbKfMvgxduXr7JcY-W25bL8NF1fjpLRSOgJb7RoZPHqGQNwMTM7S9tHVoxx8.woff2 +0 -0
- package/dist/app/public/_fonts/NdzqRASp2bovDUhQT1IRE_EMqKJ2KYQdTCfFcBvL8yw-KhwZiS86o3fErOe5GGMExHUemmI_dBfaEFxjISZrBd0.woff2 +0 -0
- package/dist/app/public/_fonts/iTkrULNFJJkTvihIg1Vqi5IODRH_9btXCioVF5l98I8-AndUyau2HR2felA_ra8V2mutQgschhasE5FD1dXGJX8.woff2 +0 -0
- package/dist/app/public/_nuxt/-tOYwuj2.js +30 -0
- package/dist/app/public/_nuxt/BdctKXor.js +1 -0
- package/dist/app/public/_nuxt/BlP7Uu-5.js +1 -0
- package/dist/app/public/_nuxt/CsbkV5Bd.js +1 -0
- package/dist/app/public/_nuxt/D-43HurL.js +59 -0
- package/dist/app/public/_nuxt/DU1mG77A.js +1 -0
- package/dist/app/public/_nuxt/_id_.BKAjWkoP.css +1 -0
- package/dist/app/public/_nuxt/builds/latest.json +1 -0
- package/dist/app/public/_nuxt/builds/meta/ceae497c-21d6-4278-8cc9-3c2c80f03dca.json +1 -0
- package/dist/app/public/_nuxt/entry.Y3mA4bzA.css +1 -0
- package/dist/app/public/_nuxt/error-404.C7fg894-.css +1 -0
- package/dist/app/public/_nuxt/error-500.DjUK_N2Y.css +1 -0
- package/dist/app/public/_nuxt/uS7FY2am.js +1 -0
- package/dist/app/public/favicon.ico +0 -0
- package/dist/app/server/chunks/_/error-500.mjs +19 -0
- package/dist/app/server/chunks/_/error-500.mjs.map +1 -0
- package/dist/app/server/chunks/_/icons.mjs +5933 -0
- package/dist/app/server/chunks/_/icons.mjs.map +1 -0
- package/dist/app/server/chunks/_/icons2.mjs +11338 -0
- package/dist/app/server/chunks/_/icons2.mjs.map +1 -0
- package/dist/app/server/chunks/build/IntegrationCredentials-styles.CULcCK6_.mjs +8 -0
- package/dist/app/server/chunks/build/IntegrationCredentials-styles.CULcCK6_.mjs.map +1 -0
- package/dist/app/server/chunks/build/_id_-DBwSV4AY.mjs +1354 -0
- package/dist/app/server/chunks/build/_id_-DBwSV4AY.mjs.map +1 -0
- package/dist/app/server/chunks/build/client.precomputed.mjs +4 -0
- package/dist/app/server/chunks/build/client.precomputed.mjs.map +1 -0
- package/dist/app/server/chunks/build/error-404-D2QibUBT.mjs +121 -0
- package/dist/app/server/chunks/build/error-404-D2QibUBT.mjs.map +1 -0
- package/dist/app/server/chunks/build/error-404-styles.Bvxdxqjk.mjs +8 -0
- package/dist/app/server/chunks/build/error-404-styles.Bvxdxqjk.mjs.map +1 -0
- package/dist/app/server/chunks/build/error-500-DYvawybF.mjs +104 -0
- package/dist/app/server/chunks/build/error-500-DYvawybF.mjs.map +1 -0
- package/dist/app/server/chunks/build/error-500-styles.BnYAAXSg.mjs +8 -0
- package/dist/app/server/chunks/build/error-500-styles.BnYAAXSg.mjs.map +1 -0
- package/dist/app/server/chunks/build/fetch-ZbqIFhDG.mjs +2851 -0
- package/dist/app/server/chunks/build/fetch-ZbqIFhDG.mjs.map +1 -0
- package/dist/app/server/chunks/build/index-5H-nmhph.mjs +68 -0
- package/dist/app/server/chunks/build/index-5H-nmhph.mjs.map +1 -0
- package/dist/app/server/chunks/build/index-C8flTcKI.mjs +720 -0
- package/dist/app/server/chunks/build/index-C8flTcKI.mjs.map +1 -0
- package/dist/app/server/chunks/build/server.mjs +8736 -0
- package/dist/app/server/chunks/build/server.mjs.map +1 -0
- package/dist/app/server/chunks/build/styles.mjs +12 -0
- package/dist/app/server/chunks/build/styles.mjs.map +1 -0
- package/dist/app/server/chunks/nitro/nitro.mjs +9359 -0
- package/dist/app/server/chunks/nitro/nitro.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/_commandable/status.get.mjs +59 -0
- package/dist/app/server/chunks/routes/api/_commandable/status.get.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/catalog/_type/tools.get.mjs +40 -0
- package/dist/app/server/chunks/routes/api/catalog/_type/tools.get.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/catalog/_type/toolsets.get.mjs +41 -0
- package/dist/app/server/chunks/routes/api/catalog/_type/toolsets.get.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/catalog.get.mjs +46 -0
- package/dist/app/server/chunks/routes/api/catalog.get.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/index.get.mjs +39 -0
- package/dist/app/server/chunks/routes/api/index.get.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/index.post.mjs +60 -0
- package/dist/app/server/chunks/routes/api/index.post.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/integrations/_id/credentials-config.get.mjs +63 -0
- package/dist/app/server/chunks/routes/api/integrations/_id/credentials-config.get.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/integrations/_id/credentials-status.get.mjs +70 -0
- package/dist/app/server/chunks/routes/api/integrations/_id/credentials-status.get.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/integrations/_id/credentials.delete.mjs +61 -0
- package/dist/app/server/chunks/routes/api/integrations/_id/credentials.delete.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/integrations/_id/credentials.post.mjs +94 -0
- package/dist/app/server/chunks/routes/api/integrations/_id/credentials.post.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/integrations/_id/permissions.post.mjs +54 -0
- package/dist/app/server/chunks/routes/api/integrations/_id/permissions.post.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/integrations/_id/toolsets.post.mjs +53 -0
- package/dist/app/server/chunks/routes/api/integrations/_id/toolsets.post.mjs.map +1 -0
- package/dist/app/server/chunks/routes/api/integrations/_id_.delete.mjs +44 -0
- package/dist/app/server/chunks/routes/api/integrations/_id_.delete.mjs.map +1 -0
- package/dist/app/server/chunks/routes/health.get.mjs +37 -0
- package/dist/app/server/chunks/routes/health.get.mjs.map +1 -0
- package/dist/app/server/chunks/routes/mcp/create.mjs +56 -0
- package/dist/app/server/chunks/routes/mcp/create.mjs.map +1 -0
- package/dist/app/server/chunks/routes/mcp.mjs +56 -0
- package/dist/app/server/chunks/routes/mcp.mjs.map +1 -0
- package/dist/app/server/chunks/routes/renderer.mjs +492 -0
- package/dist/app/server/chunks/routes/renderer.mjs.map +1 -0
- package/dist/app/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
- package/dist/app/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
- package/dist/app/server/index.mjs +31 -0
- package/dist/app/server/index.mjs.map +1 -0
- package/dist/app/server/migrations/pg/0000_initial.sql +74 -0
- package/dist/app/server/migrations/pg/meta/_journal.json +13 -0
- package/dist/app/server/migrations/sqlite/0000_initial.sql +74 -0
- package/dist/app/server/migrations/sqlite/meta/_journal.json +13 -0
- package/dist/app/server/package.json +108 -0
- package/dist/cli/credentialManager.d.ts.map +1 -1
- package/dist/cli/credentialManager.js +5 -4
- package/dist/cli/credentialManager.js.map +1 -1
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +656 -17
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +172 -36
- package/dist/cli/setup.js.map +1 -1
- package/dist/config/configApply.d.ts.map +1 -1
- package/dist/config/configApply.js +4 -1
- package/dist/config/configApply.js.map +1 -1
- package/dist/config/configSchema.d.ts +18 -2
- package/dist/config/configSchema.d.ts.map +1 -1
- package/dist/config/configSchema.js +7 -1
- package/dist/config/configSchema.js.map +1 -1
- package/dist/db/client.d.ts +3 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js.map +1 -1
- package/dist/db/credentialStore.d.ts +2 -0
- package/dist/db/credentialStore.d.ts.map +1 -1
- package/dist/db/credentialStore.js +15 -16
- package/dist/db/credentialStore.js.map +1 -1
- package/dist/db/integrationStore.d.ts +7 -0
- package/dist/db/integrationStore.d.ts.map +1 -1
- package/dist/db/integrationStore.js +64 -21
- package/dist/db/integrationStore.js.map +1 -1
- package/dist/db/integrationTypeConfigStore.d.ts +6 -0
- package/dist/db/integrationTypeConfigStore.d.ts.map +1 -0
- package/dist/db/integrationTypeConfigStore.js +94 -0
- package/dist/db/integrationTypeConfigStore.js.map +1 -0
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/migrate.js +8 -87
- package/dist/db/migrate.js.map +1 -1
- 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 +1049 -133
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +61 -3
- package/dist/db/schema.js.map +1 -1
- package/dist/db/toolDefinitionStore.d.ts +6 -0
- package/dist/db/toolDefinitionStore.d.ts.map +1 -0
- package/dist/db/toolDefinitionStore.js +95 -0
- package/dist/db/toolDefinitionStore.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/actionsFactory.d.ts +5 -1
- package/dist/integrations/actionsFactory.d.ts.map +1 -1
- package/dist/integrations/actionsFactory.js +46 -16
- package/dist/integrations/actionsFactory.js.map +1 -1
- 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 +2 -2
- package/dist/integrations/dataLoader.d.ts.map +1 -1
- package/dist/integrations/dataLoader.js +1 -1
- package/dist/integrations/dataLoader.js.map +1 -1
- 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 +4 -1
- package/dist/integrations/getIntegration.d.ts.map +1 -1
- package/dist/integrations/getIntegration.js +12 -4
- package/dist/integrations/getIntegration.js.map +1 -1
- 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.map +1 -1
- package/dist/integrations/providerRegistry.js +22 -8
- package/dist/integrations/providerRegistry.js.map +1 -1
- package/dist/integrations/proxy.d.ts +4 -1
- package/dist/integrations/proxy.d.ts.map +1 -1
- package/dist/integrations/proxy.js +109 -94
- package/dist/integrations/proxy.js.map +1 -1
- package/dist/integrations/sandbox.d.ts +2 -1
- package/dist/integrations/sandbox.d.ts.map +1 -1
- package/dist/integrations/sandbox.js +13 -2
- package/dist/integrations/sandbox.js.map +1 -1
- 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/mcp/abilityCatalog.d.ts +46 -0
- package/dist/mcp/abilityCatalog.d.ts.map +1 -0
- package/dist/mcp/abilityCatalog.js +275 -0
- package/dist/mcp/abilityCatalog.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 +10 -1
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/handlers.js +51 -4
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/metaTools.d.ts +77 -0
- package/dist/mcp/metaTools.d.ts.map +1 -0
- package/dist/mcp/metaTools.js +753 -0
- package/dist/mcp/metaTools.js.map +1 -0
- package/dist/mcp/server.d.ts +10 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/sessionState.d.ts +18 -0
- package/dist/mcp/sessionState.d.ts.map +1 -0
- package/dist/mcp/sessionState.js +65 -0
- package/dist/mcp/sessionState.js.map +1 -0
- package/dist/mcp/toolAdapter.d.ts +17 -0
- package/dist/mcp/toolAdapter.d.ts.map +1 -1
- package/dist/mcp/toolAdapter.js +7 -1
- package/dist/mcp/toolAdapter.js.map +1 -1
- package/dist/types.d.ts +66 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +7 -0
- package/dist/version.js.map +1 -0
- package/package.json +13 -9
|
@@ -9,22 +9,15 @@ export class SqlCredentialStore {
|
|
|
9
9
|
this.encryptionSecret = encryptionSecret;
|
|
10
10
|
}
|
|
11
11
|
async hasCredentials(spaceId, credentialId) {
|
|
12
|
-
|
|
13
|
-
return !!row;
|
|
12
|
+
return !!(await this._getRow(spaceId, credentialId));
|
|
14
13
|
}
|
|
15
14
|
async saveCredentials(spaceId, credentialId, credentials) {
|
|
16
15
|
const ciphertext = encrypt(JSON.stringify(credentials ?? {}), this.encryptionSecret);
|
|
17
16
|
const now = new Date();
|
|
18
|
-
const table = this.
|
|
19
|
-
await this.
|
|
17
|
+
const table = this._table();
|
|
18
|
+
await this._db()
|
|
20
19
|
.insert(table)
|
|
21
|
-
.values({
|
|
22
|
-
spaceId,
|
|
23
|
-
id: credentialId,
|
|
24
|
-
ciphertext,
|
|
25
|
-
createdAt: now,
|
|
26
|
-
updatedAt: now,
|
|
27
|
-
})
|
|
20
|
+
.values({ spaceId, id: credentialId, ciphertext, createdAt: now, updatedAt: now })
|
|
28
21
|
.onConflictDoUpdate({
|
|
29
22
|
target: [table.spaceId, table.id],
|
|
30
23
|
set: { ciphertext, updatedAt: now },
|
|
@@ -39,19 +32,25 @@ export class SqlCredentialStore {
|
|
|
39
32
|
return (parsed && typeof parsed === 'object') ? parsed : null;
|
|
40
33
|
}
|
|
41
34
|
async deleteCredentials(spaceId, credentialId) {
|
|
42
|
-
const table = this.
|
|
43
|
-
await this.
|
|
35
|
+
const table = this._table();
|
|
36
|
+
await this._db()
|
|
44
37
|
.delete(table)
|
|
45
38
|
.where(and(eq(table.spaceId, spaceId), eq(table.id, credentialId)));
|
|
46
39
|
}
|
|
40
|
+
_table() {
|
|
41
|
+
return this.client.dialect === 'sqlite' ? sqliteCredentials : pgCredentials;
|
|
42
|
+
}
|
|
43
|
+
_db() {
|
|
44
|
+
return this.client.db;
|
|
45
|
+
}
|
|
47
46
|
async _getRow(spaceId, credentialId) {
|
|
48
|
-
const table = this.
|
|
49
|
-
const rows = await this.
|
|
47
|
+
const table = this._table();
|
|
48
|
+
const rows = await this._db()
|
|
50
49
|
.select()
|
|
51
50
|
.from(table)
|
|
52
51
|
.where(and(eq(table.spaceId, spaceId), eq(table.id, credentialId)))
|
|
53
52
|
.limit(1);
|
|
54
|
-
return rows
|
|
53
|
+
return rows[0] ?? null;
|
|
55
54
|
}
|
|
56
55
|
}
|
|
57
56
|
//# sourceMappingURL=credentialStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentialStore.js","sourceRoot":"","sources":["../../src/db/credentialStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAG1D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE9D,MAAM,OAAO,kBAAkB;IAEV;IACA;IAFnB,YACmB,MAAgB,EAChB,gBAAwB;QADxB,WAAM,GAAN,MAAM,CAAU;QAChB,qBAAgB,GAAhB,gBAAgB,CAAQ;IACxC,CAAC;IAEJ,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,YAAoB;QACxD,
|
|
1
|
+
{"version":3,"file":"credentialStore.js","sourceRoot":"","sources":["../../src/db/credentialStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,11 @@ import type { IntegrationData } from '../types.js';
|
|
|
2
2
|
import type { DbClient } from './client.js';
|
|
3
3
|
export declare function listIntegrations(client: DbClient, spaceId?: string): Promise<IntegrationData[]>;
|
|
4
4
|
export declare function upsertIntegration(client: DbClient, integration: IntegrationData): Promise<void>;
|
|
5
|
+
/** Update only credential linkage fields — does not clobber toolsets/permissions. */
|
|
6
|
+
export declare function updateIntegrationCredentials(client: DbClient, integrationId: string, fields: {
|
|
7
|
+
connectionMethod: 'credentials' | null;
|
|
8
|
+
credentialId: string | null;
|
|
9
|
+
credentialVariant: string | null;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
export declare function updateIntegrationHealth(client: DbClient, integrationId: string, healthStatus: 'disconnected' | 'connected' | 'invalid_credentials', checkedAt?: Date): Promise<void>;
|
|
5
12
|
//# sourceMappingURL=integrationStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrationStore.d.ts","sourceRoot":"","sources":["../../src/db/integrationStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"integrationStore.d.ts","sourceRoot":"","sources":["../../src/db/integrationStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAqB3C,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA8BrG;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCrG;AAED,qFAAqF;AACrF,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,QAAQ,EAChB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE;IACN,gBAAgB,EAAE,aAAa,GAAG,IAAI,CAAA;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC,GACA,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,QAAQ,EAChB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,cAAc,GAAG,WAAW,GAAG,qBAAqB,EAClE,SAAS,CAAC,EAAE,IAAI,GACf,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
|
@@ -1,41 +1,59 @@
|
|
|
1
|
-
import { eq } from 'drizzle-orm';
|
|
1
|
+
import { and, eq } from 'drizzle-orm';
|
|
2
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
|
+
}
|
|
3
23
|
export async function listIntegrations(client, spaceId) {
|
|
4
|
-
const table = client
|
|
5
|
-
let query = client.
|
|
24
|
+
const table = t(client);
|
|
25
|
+
let query = db(client).select().from(table);
|
|
6
26
|
if (spaceId)
|
|
7
27
|
query = query.where(eq(table.spaceId, spaceId));
|
|
8
28
|
const rows = await query;
|
|
9
29
|
return rows.map((r) => {
|
|
10
|
-
const
|
|
11
|
-
? (r.
|
|
12
|
-
:
|
|
13
|
-
|
|
14
|
-
? (r.createdAt ? new Date(r.createdAt) : undefined)
|
|
15
|
-
: (r.createdAt ?? undefined);
|
|
16
|
-
void createdAt;
|
|
17
|
-
const integ = {
|
|
30
|
+
const healthCheckedAt = r.healthCheckedAt
|
|
31
|
+
? (r.healthCheckedAt instanceof Date ? r.healthCheckedAt : new Date(r.healthCheckedAt))
|
|
32
|
+
: null;
|
|
33
|
+
return {
|
|
18
34
|
id: r.id,
|
|
19
35
|
spaceId: r.spaceId ?? undefined,
|
|
20
36
|
type: r.type,
|
|
21
37
|
referenceId: r.referenceId,
|
|
22
38
|
label: r.label,
|
|
39
|
+
enabled: r.enabled === 0 ? false : true,
|
|
23
40
|
connectionMethod: r.connectionMethod ?? undefined,
|
|
24
41
|
connectionId: r.connectionId ?? undefined,
|
|
25
42
|
credentialId: r.credentialId ?? undefined,
|
|
26
43
|
credentialVariant: r.credentialVariant ?? undefined,
|
|
27
|
-
|
|
44
|
+
enabledToolsets: parseJson(r.enabledToolsets),
|
|
45
|
+
maxScope: r.maxScope ?? undefined,
|
|
46
|
+
disabledTools: parseJson(r.disabledTools),
|
|
47
|
+
healthStatus: r.healthStatus ?? null,
|
|
48
|
+
healthCheckedAt,
|
|
28
49
|
};
|
|
29
|
-
return integ;
|
|
30
50
|
});
|
|
31
51
|
}
|
|
32
52
|
export async function upsertIntegration(client, integration) {
|
|
33
|
-
const table = client
|
|
53
|
+
const table = t(client);
|
|
34
54
|
const now = new Date();
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
: (integration.config ?? null);
|
|
38
|
-
await client.db
|
|
55
|
+
const enabled = integration.enabled === false ? 0 : 1;
|
|
56
|
+
await db(client)
|
|
39
57
|
.insert(table)
|
|
40
58
|
.values({
|
|
41
59
|
id: integration.id,
|
|
@@ -43,12 +61,15 @@ export async function upsertIntegration(client, integration) {
|
|
|
43
61
|
type: integration.type,
|
|
44
62
|
referenceId: integration.referenceId,
|
|
45
63
|
label: integration.label,
|
|
64
|
+
enabled,
|
|
46
65
|
connectionMethod: integration.connectionMethod ?? null,
|
|
47
66
|
connectionId: integration.connectionId ?? null,
|
|
48
67
|
credentialId: integration.credentialId ?? null,
|
|
49
68
|
credentialVariant: integration.credentialVariant ?? null,
|
|
50
|
-
|
|
51
|
-
|
|
69
|
+
enabledToolsets: integration.enabledToolsets ? JSON.stringify(integration.enabledToolsets) : null,
|
|
70
|
+
maxScope: integration.maxScope ?? null,
|
|
71
|
+
disabledTools: integration.disabledTools?.length ? JSON.stringify(integration.disabledTools) : null,
|
|
72
|
+
createdAt: now,
|
|
52
73
|
})
|
|
53
74
|
.onConflictDoUpdate({
|
|
54
75
|
target: table.id,
|
|
@@ -57,12 +78,34 @@ export async function upsertIntegration(client, integration) {
|
|
|
57
78
|
type: integration.type,
|
|
58
79
|
referenceId: integration.referenceId,
|
|
59
80
|
label: integration.label,
|
|
81
|
+
enabled,
|
|
60
82
|
connectionMethod: integration.connectionMethod ?? null,
|
|
61
83
|
connectionId: integration.connectionId ?? null,
|
|
62
84
|
credentialId: integration.credentialId ?? null,
|
|
63
85
|
credentialVariant: integration.credentialVariant ?? null,
|
|
64
|
-
|
|
86
|
+
enabledToolsets: integration.enabledToolsets ? JSON.stringify(integration.enabledToolsets) : null,
|
|
87
|
+
maxScope: integration.maxScope ?? null,
|
|
88
|
+
disabledTools: integration.disabledTools?.length ? JSON.stringify(integration.disabledTools) : null,
|
|
65
89
|
},
|
|
66
90
|
});
|
|
67
91
|
}
|
|
92
|
+
/** Update only credential linkage fields — does not clobber toolsets/permissions. */
|
|
93
|
+
export async function updateIntegrationCredentials(client, integrationId, fields) {
|
|
94
|
+
const table = t(client);
|
|
95
|
+
await db(client)
|
|
96
|
+
.update(table)
|
|
97
|
+
.set({
|
|
98
|
+
connectionMethod: fields.connectionMethod ?? null,
|
|
99
|
+
credentialId: fields.credentialId ?? null,
|
|
100
|
+
credentialVariant: fields.credentialVariant ?? null,
|
|
101
|
+
})
|
|
102
|
+
.where(eq(table.id, integrationId));
|
|
103
|
+
}
|
|
104
|
+
export async function updateIntegrationHealth(client, integrationId, healthStatus, checkedAt) {
|
|
105
|
+
const table = t(client);
|
|
106
|
+
await db(client)
|
|
107
|
+
.update(table)
|
|
108
|
+
.set({ healthStatus, healthCheckedAt: checkedAt ?? new Date() })
|
|
109
|
+
.where(and(eq(table.id, integrationId)));
|
|
110
|
+
}
|
|
68
111
|
//# sourceMappingURL=integrationStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrationStore.js","sourceRoot":"","sources":["../../src/db/integrationStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;
|
|
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,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,CAAC,CAAC,EAAE,EAAE;QACpB,MAAM,eAAe,GAAG,CAAC,CAAC,eAAe;YACvC,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;YACvF,CAAC,CAAC,IAAI,CAAA;QAER,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,SAAS;YAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACvC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,SAAS;YACjD,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,SAAS;YACzC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,SAAS;YACzC,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,IAAI,SAAS;YACnD,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;YAC7C,QAAQ,EAAG,CAAC,CAAC,QAAoC,IAAI,SAAS;YAC9D,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;YACzC,YAAY,EAAG,CAAC,CAAC,YAAgD,IAAI,IAAI;YACzE,eAAe;SACU,CAAA;IAC7B,CAAC,CAAC,CAAA;AACJ,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,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,6 @@
|
|
|
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
|
+
//# 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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
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.id,
|
|
85
|
+
set: {
|
|
86
|
+
typeSlug: cfg.typeSlug,
|
|
87
|
+
label: cfg.label,
|
|
88
|
+
defaultVariant: cfg.defaultVariant,
|
|
89
|
+
variantsJson: variantsValue,
|
|
90
|
+
updatedAt: now,
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# 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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"}
|
package/dist/db/migrate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/db/migrate.js
CHANGED
|
@@ -1,90 +1,11 @@
|
|
|
1
|
+
import { migrate as migrateSqlite } from 'drizzle-orm/better-sqlite3/migrator';
|
|
2
|
+
import { migrate as migratePg } from 'drizzle-orm/node-postgres/migrator';
|
|
1
3
|
export async function ensureSchema(client) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
reference_id TEXT NOT NULL,
|
|
9
|
-
label TEXT NOT NULL,
|
|
10
|
-
connection_method TEXT,
|
|
11
|
-
connection_id TEXT,
|
|
12
|
-
credential_id TEXT,
|
|
13
|
-
credential_variant TEXT,
|
|
14
|
-
config_json TEXT,
|
|
15
|
-
created_at INTEGER NOT NULL
|
|
16
|
-
);
|
|
17
|
-
`);
|
|
18
|
-
client.raw.exec(`
|
|
19
|
-
CREATE TABLE IF NOT EXISTS credentials (
|
|
20
|
-
space_id TEXT NOT NULL,
|
|
21
|
-
id TEXT NOT NULL,
|
|
22
|
-
ciphertext TEXT NOT NULL,
|
|
23
|
-
created_at INTEGER NOT NULL,
|
|
24
|
-
updated_at INTEGER NOT NULL,
|
|
25
|
-
PRIMARY KEY (space_id, id)
|
|
26
|
-
);
|
|
27
|
-
`);
|
|
28
|
-
client.raw.exec(`
|
|
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
|
-
`);
|
|
37
|
-
client.raw.exec(`
|
|
38
|
-
CREATE TABLE IF NOT EXISTS users (
|
|
39
|
-
id TEXT PRIMARY KEY NOT NULL,
|
|
40
|
-
email TEXT NOT NULL,
|
|
41
|
-
password_hash TEXT,
|
|
42
|
-
created_at INTEGER NOT NULL
|
|
43
|
-
);
|
|
44
|
-
`);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
await client.raw.query(`
|
|
48
|
-
CREATE TABLE IF NOT EXISTS integrations (
|
|
49
|
-
id TEXT PRIMARY KEY,
|
|
50
|
-
space_id TEXT,
|
|
51
|
-
type TEXT NOT NULL,
|
|
52
|
-
reference_id TEXT NOT NULL,
|
|
53
|
-
label TEXT NOT NULL,
|
|
54
|
-
connection_method TEXT,
|
|
55
|
-
connection_id TEXT,
|
|
56
|
-
credential_id TEXT,
|
|
57
|
-
credential_variant TEXT,
|
|
58
|
-
config_json JSONB,
|
|
59
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
60
|
-
);
|
|
61
|
-
`);
|
|
62
|
-
await client.raw.query(`
|
|
63
|
-
CREATE TABLE IF NOT EXISTS credentials (
|
|
64
|
-
space_id TEXT NOT NULL,
|
|
65
|
-
id TEXT NOT NULL,
|
|
66
|
-
ciphertext TEXT NOT NULL,
|
|
67
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
68
|
-
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
69
|
-
PRIMARY KEY (space_id, id)
|
|
70
|
-
);
|
|
71
|
-
`);
|
|
72
|
-
await client.raw.query(`
|
|
73
|
-
CREATE TABLE IF NOT EXISTS api_keys (
|
|
74
|
-
id TEXT PRIMARY KEY,
|
|
75
|
-
name TEXT NOT NULL,
|
|
76
|
-
key_hash TEXT NOT NULL,
|
|
77
|
-
scopes_json JSONB,
|
|
78
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
79
|
-
);
|
|
80
|
-
`);
|
|
81
|
-
await client.raw.query(`
|
|
82
|
-
CREATE TABLE IF NOT EXISTS users (
|
|
83
|
-
id TEXT PRIMARY KEY,
|
|
84
|
-
email TEXT NOT NULL,
|
|
85
|
-
password_hash TEXT,
|
|
86
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
87
|
-
);
|
|
88
|
-
`);
|
|
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 });
|
|
89
10
|
}
|
|
90
11
|
//# sourceMappingURL=migrate.js.map
|
package/dist/db/migrate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"
|
|
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`);
|