@commandable/mcp 0.0.7 → 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 +124 -33
- package/dist/cli/setup.js.map +1 -1
- package/dist/config/configApply.js +1 -1
- package/dist/config/configApply.js.map +1 -1
- package/dist/config/configSchema.d.ts +6 -2
- package/dist/config/configSchema.d.ts.map +1 -1
- package/dist/config/configSchema.js +2 -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 +61 -31
- 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 -109
- 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 +961 -153
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +55 -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 +37 -14
- 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 +0 -4
- 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 +94 -106
- package/dist/integrations/proxy.js.map +1 -1
- package/dist/integrations/sandbox.js +11 -1
- package/dist/integrations/sandbox.js.map +1 -1
- 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 +61 -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 +7 -5
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
import { createRenderer, getRequestDependencies, getPreloadLinks, getPrefetchLinks } from 'vue-bundle-renderer/runtime';
|
|
2
|
+
import { v as buildAssetsURL, w as useRuntimeConfig, x as getResponseStatusText, y as getResponseStatus, z as defineRenderHandler, A as publicAssetsURL, B as getQuery, c as createError, C as destr, D as getRouteRules, E as joinURL, F as useNitroApp } from '../nitro/nitro.mjs';
|
|
3
|
+
import { renderToString } from 'vue/server-renderer';
|
|
4
|
+
import { createHead as createHead$1, propsToString, renderSSRHead } from 'unhead/server';
|
|
5
|
+
import { stringify, uneval } from 'devalue';
|
|
6
|
+
import { FlatMetaPlugin } from 'unhead/plugins';
|
|
7
|
+
import { walkResolver } from 'unhead/utils';
|
|
8
|
+
import { isRef, toValue, hasInjectionContext, inject, ref, watchEffect, getCurrentInstance, onBeforeUnmount, onDeactivated, onActivated } from 'vue';
|
|
9
|
+
|
|
10
|
+
const VueResolver = (_, value) => {
|
|
11
|
+
return isRef(value) ? toValue(value) : value;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const headSymbol = "usehead";
|
|
15
|
+
// @__NO_SIDE_EFFECTS__
|
|
16
|
+
function vueInstall(head) {
|
|
17
|
+
const plugin = {
|
|
18
|
+
install(app) {
|
|
19
|
+
app.config.globalProperties.$unhead = head;
|
|
20
|
+
app.config.globalProperties.$head = head;
|
|
21
|
+
app.provide(headSymbol, head);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
return plugin.install;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// @__NO_SIDE_EFFECTS__
|
|
28
|
+
function injectHead() {
|
|
29
|
+
if (hasInjectionContext()) {
|
|
30
|
+
const instance = inject(headSymbol);
|
|
31
|
+
if (instance) {
|
|
32
|
+
return instance;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
throw new Error("useHead() was called without provide context, ensure you call it through the setup() function.");
|
|
36
|
+
}
|
|
37
|
+
function useHead(input, options = {}) {
|
|
38
|
+
const head = options.head || /* @__PURE__ */ injectHead();
|
|
39
|
+
return head.ssr ? head.push(input || {}, options) : clientUseHead(head, input, options);
|
|
40
|
+
}
|
|
41
|
+
function clientUseHead(head, input, options = {}) {
|
|
42
|
+
const deactivated = ref(false);
|
|
43
|
+
let entry;
|
|
44
|
+
watchEffect(() => {
|
|
45
|
+
const i = deactivated.value ? {} : walkResolver(input, VueResolver);
|
|
46
|
+
if (entry) {
|
|
47
|
+
entry.patch(i);
|
|
48
|
+
} else {
|
|
49
|
+
entry = head.push(i, options);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
const vm = getCurrentInstance();
|
|
53
|
+
if (vm) {
|
|
54
|
+
onBeforeUnmount(() => {
|
|
55
|
+
entry.dispose();
|
|
56
|
+
});
|
|
57
|
+
onDeactivated(() => {
|
|
58
|
+
deactivated.value = true;
|
|
59
|
+
});
|
|
60
|
+
onActivated(() => {
|
|
61
|
+
deactivated.value = false;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return entry;
|
|
65
|
+
}
|
|
66
|
+
function useSeoMeta(input = {}, options = {}) {
|
|
67
|
+
const head = options.head || /* @__PURE__ */ injectHead();
|
|
68
|
+
head.use(FlatMetaPlugin);
|
|
69
|
+
const { title, titleTemplate, ...meta } = input;
|
|
70
|
+
return useHead({
|
|
71
|
+
title,
|
|
72
|
+
titleTemplate,
|
|
73
|
+
_flatMeta: meta
|
|
74
|
+
}, options);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// @__NO_SIDE_EFFECTS__
|
|
78
|
+
function createHead(options = {}) {
|
|
79
|
+
const head = createHead$1({
|
|
80
|
+
...options,
|
|
81
|
+
propResolvers: [VueResolver]
|
|
82
|
+
});
|
|
83
|
+
head.install = vueInstall(head);
|
|
84
|
+
return head;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const NUXT_RUNTIME_PAYLOAD_EXTRACTION = false;
|
|
88
|
+
|
|
89
|
+
const appHead = {"meta":[{"name":"viewport","content":"width=device-width, initial-scale=1"},{"charset":"utf-8"}],"link":[],"style":[],"script":[],"noscript":[]};
|
|
90
|
+
|
|
91
|
+
const appRootTag = "div";
|
|
92
|
+
|
|
93
|
+
const appRootAttrs = {"id":"__nuxt","class":"isolate"};
|
|
94
|
+
|
|
95
|
+
const appTeleportTag = "div";
|
|
96
|
+
|
|
97
|
+
const appTeleportAttrs = {"id":"teleports"};
|
|
98
|
+
|
|
99
|
+
const appSpaLoaderTag = "div";
|
|
100
|
+
|
|
101
|
+
const appSpaLoaderAttrs = {"id":"__nuxt-loader"};
|
|
102
|
+
|
|
103
|
+
const appId = "nuxt-app";
|
|
104
|
+
|
|
105
|
+
const APP_ROOT_OPEN_TAG = `<${appRootTag}${propsToString(appRootAttrs)}>`;
|
|
106
|
+
const APP_ROOT_CLOSE_TAG = `</${appRootTag}>`;
|
|
107
|
+
// @ts-expect-error file will be produced after app build
|
|
108
|
+
const getServerEntry = () => import('../build/server.mjs').then((r) => r.default || r);
|
|
109
|
+
// @ts-expect-error file will be produced after app build
|
|
110
|
+
const getPrecomputedDependencies = () => import('../build/client.precomputed.mjs').then((r) => r.default || r).then((r) => typeof r === "function" ? r() : r);
|
|
111
|
+
// -- SSR Renderer --
|
|
112
|
+
const getSSRRenderer = lazyCachedFunction(async () => {
|
|
113
|
+
// Load server bundle
|
|
114
|
+
const createSSRApp = await getServerEntry();
|
|
115
|
+
if (!createSSRApp) {
|
|
116
|
+
throw new Error("Server bundle is not available");
|
|
117
|
+
}
|
|
118
|
+
// Load precomputed dependencies
|
|
119
|
+
const precomputed = await getPrecomputedDependencies();
|
|
120
|
+
// Create renderer
|
|
121
|
+
const renderer = createRenderer(createSSRApp, {
|
|
122
|
+
precomputed,
|
|
123
|
+
manifest: undefined,
|
|
124
|
+
renderToString: renderToString$1,
|
|
125
|
+
buildAssetsURL
|
|
126
|
+
});
|
|
127
|
+
async function renderToString$1(input, context) {
|
|
128
|
+
const html = await renderToString(input, context);
|
|
129
|
+
return APP_ROOT_OPEN_TAG + html + APP_ROOT_CLOSE_TAG;
|
|
130
|
+
}
|
|
131
|
+
return renderer;
|
|
132
|
+
});
|
|
133
|
+
// -- SPA Renderer --
|
|
134
|
+
const getSPARenderer = lazyCachedFunction(async () => {
|
|
135
|
+
const precomputed = await getPrecomputedDependencies();
|
|
136
|
+
// @ts-expect-error virtual file
|
|
137
|
+
const spaTemplate = await import('../virtual/_virtual_spa-template.mjs').then((r) => r.template).catch(() => "").then((r) => {
|
|
138
|
+
{
|
|
139
|
+
const APP_SPA_LOADER_OPEN_TAG = `<${appSpaLoaderTag}${propsToString(appSpaLoaderAttrs)}>`;
|
|
140
|
+
const APP_SPA_LOADER_CLOSE_TAG = `</${appSpaLoaderTag}>`;
|
|
141
|
+
const appTemplate = APP_ROOT_OPEN_TAG + APP_ROOT_CLOSE_TAG;
|
|
142
|
+
const loaderTemplate = r ? APP_SPA_LOADER_OPEN_TAG + r + APP_SPA_LOADER_CLOSE_TAG : "";
|
|
143
|
+
return appTemplate + loaderTemplate;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
// Create SPA renderer and cache the result for all requests
|
|
147
|
+
const renderer = createRenderer(() => () => {}, {
|
|
148
|
+
precomputed,
|
|
149
|
+
manifest: undefined,
|
|
150
|
+
renderToString: () => spaTemplate,
|
|
151
|
+
buildAssetsURL
|
|
152
|
+
});
|
|
153
|
+
const result = await renderer.renderToString({});
|
|
154
|
+
const renderToString = (ssrContext) => {
|
|
155
|
+
const config = useRuntimeConfig(ssrContext.event);
|
|
156
|
+
ssrContext.modules ||= new Set();
|
|
157
|
+
ssrContext.payload.serverRendered = false;
|
|
158
|
+
ssrContext.config = {
|
|
159
|
+
public: config.public,
|
|
160
|
+
app: config.app
|
|
161
|
+
};
|
|
162
|
+
return Promise.resolve(result);
|
|
163
|
+
};
|
|
164
|
+
return {
|
|
165
|
+
rendererContext: renderer.rendererContext,
|
|
166
|
+
renderToString
|
|
167
|
+
};
|
|
168
|
+
});
|
|
169
|
+
function lazyCachedFunction(fn) {
|
|
170
|
+
let res = null;
|
|
171
|
+
return () => {
|
|
172
|
+
if (res === null) {
|
|
173
|
+
res = fn().catch((err) => {
|
|
174
|
+
res = null;
|
|
175
|
+
throw err;
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
return res;
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
function getRenderer(ssrContext) {
|
|
182
|
+
return ssrContext.noSSR ? getSPARenderer() : getSSRRenderer();
|
|
183
|
+
}
|
|
184
|
+
// @ts-expect-error file will be produced after app build
|
|
185
|
+
const getSSRStyles = lazyCachedFunction(() => import('../build/styles.mjs').then((r) => r.default || r));
|
|
186
|
+
|
|
187
|
+
function renderPayloadResponse(ssrContext) {
|
|
188
|
+
return {
|
|
189
|
+
body: stringify(splitPayload(ssrContext).payload, ssrContext["~payloadReducers"]) ,
|
|
190
|
+
statusCode: getResponseStatus(ssrContext.event),
|
|
191
|
+
statusMessage: getResponseStatusText(ssrContext.event),
|
|
192
|
+
headers: {
|
|
193
|
+
"content-type": "application/json;charset=utf-8" ,
|
|
194
|
+
"x-powered-by": "Nuxt"
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
function renderPayloadJsonScript(opts) {
|
|
199
|
+
const contents = opts.data ? stringify(opts.data, opts.ssrContext["~payloadReducers"]) : "";
|
|
200
|
+
const payload = {
|
|
201
|
+
"type": "application/json",
|
|
202
|
+
"innerHTML": contents,
|
|
203
|
+
"data-nuxt-data": appId,
|
|
204
|
+
"data-ssr": !(opts.ssrContext.noSSR)
|
|
205
|
+
};
|
|
206
|
+
{
|
|
207
|
+
payload.id = "__NUXT_DATA__";
|
|
208
|
+
}
|
|
209
|
+
if (opts.src) {
|
|
210
|
+
payload["data-src"] = opts.src;
|
|
211
|
+
}
|
|
212
|
+
const config = uneval(opts.ssrContext.config);
|
|
213
|
+
return [payload, { innerHTML: `window.__NUXT__={};window.__NUXT__.config=${config}` }];
|
|
214
|
+
}
|
|
215
|
+
function splitPayload(ssrContext) {
|
|
216
|
+
const { data, prerenderedAt, ...initial } = ssrContext.payload;
|
|
217
|
+
return {
|
|
218
|
+
initial: {
|
|
219
|
+
...initial,
|
|
220
|
+
prerenderedAt
|
|
221
|
+
},
|
|
222
|
+
payload: {
|
|
223
|
+
data,
|
|
224
|
+
prerenderedAt
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const unheadOptions = {
|
|
230
|
+
disableDefaults: true,
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
function createSSRContext(event) {
|
|
234
|
+
const ssrContext = {
|
|
235
|
+
url: event.path,
|
|
236
|
+
event,
|
|
237
|
+
runtimeConfig: useRuntimeConfig(event),
|
|
238
|
+
noSSR: event.context.nuxt?.noSSR || (false),
|
|
239
|
+
head: createHead(unheadOptions),
|
|
240
|
+
error: false,
|
|
241
|
+
nuxt: undefined,
|
|
242
|
+
payload: {},
|
|
243
|
+
["~payloadReducers"]: Object.create(null),
|
|
244
|
+
modules: new Set()
|
|
245
|
+
};
|
|
246
|
+
return ssrContext;
|
|
247
|
+
}
|
|
248
|
+
function setSSRError(ssrContext, error) {
|
|
249
|
+
ssrContext.error = true;
|
|
250
|
+
ssrContext.payload = { error };
|
|
251
|
+
ssrContext.url = error.url;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
async function renderInlineStyles(usedModules) {
|
|
255
|
+
const styleMap = await getSSRStyles();
|
|
256
|
+
const inlinedStyles = new Set();
|
|
257
|
+
for (const mod of usedModules) {
|
|
258
|
+
if (mod in styleMap && styleMap[mod]) {
|
|
259
|
+
for (const style of await styleMap[mod]()) {
|
|
260
|
+
inlinedStyles.add(style);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return Array.from(inlinedStyles).map((style) => ({ innerHTML: style }));
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
const renderSSRHeadOptions = {"omitLineBreaks":true};
|
|
268
|
+
|
|
269
|
+
const entryIds = [];
|
|
270
|
+
|
|
271
|
+
// @ts-expect-error private property consumed by vite-generated url helpers
|
|
272
|
+
globalThis.__buildAssetsURL = buildAssetsURL;
|
|
273
|
+
// @ts-expect-error private property consumed by vite-generated url helpers
|
|
274
|
+
globalThis.__publicAssetsURL = publicAssetsURL;
|
|
275
|
+
const HAS_APP_TELEPORTS = !!(appTeleportAttrs.id);
|
|
276
|
+
const APP_TELEPORT_OPEN_TAG = HAS_APP_TELEPORTS ? `<${appTeleportTag}${propsToString(appTeleportAttrs)}>` : "";
|
|
277
|
+
const APP_TELEPORT_CLOSE_TAG = HAS_APP_TELEPORTS ? `</${appTeleportTag}>` : "";
|
|
278
|
+
const PAYLOAD_URL_RE = /^[^?]*\/_payload.json(?:\?.*)?$/ ;
|
|
279
|
+
const PAYLOAD_FILENAME = "_payload.json" ;
|
|
280
|
+
const renderer = defineRenderHandler(async (event) => {
|
|
281
|
+
const nitroApp = useNitroApp();
|
|
282
|
+
// Whether we're rendering an error page
|
|
283
|
+
const ssrError = event.path.startsWith("/__nuxt_error") ? getQuery(event) : null;
|
|
284
|
+
if (ssrError && !("__unenv__" in event.node.req)) {
|
|
285
|
+
throw createError({
|
|
286
|
+
status: 404,
|
|
287
|
+
statusText: "Page Not Found: /__nuxt_error",
|
|
288
|
+
message: "Page Not Found: /__nuxt_error"
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
// Initialize ssr context
|
|
292
|
+
const ssrContext = createSSRContext(event);
|
|
293
|
+
// needed for hash hydration plugin to work
|
|
294
|
+
const headEntryOptions = { mode: "server" };
|
|
295
|
+
ssrContext.head.push(appHead, headEntryOptions);
|
|
296
|
+
if (ssrError) {
|
|
297
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
298
|
+
const status = ssrError.status || ssrError.statusCode;
|
|
299
|
+
if (status) {
|
|
300
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
301
|
+
ssrError.status = ssrError.statusCode = Number.parseInt(status);
|
|
302
|
+
}
|
|
303
|
+
if (typeof ssrError.data === "string") {
|
|
304
|
+
try {
|
|
305
|
+
ssrError.data = destr(ssrError.data);
|
|
306
|
+
} catch {}
|
|
307
|
+
}
|
|
308
|
+
setSSRError(ssrContext, ssrError);
|
|
309
|
+
}
|
|
310
|
+
// Get route options (for `ssr: false`, `isr`, `cache` and `noScripts`)
|
|
311
|
+
const routeOptions = getRouteRules(event);
|
|
312
|
+
// Whether we are prerendering route or using ISR/SWR caching
|
|
313
|
+
const _PAYLOAD_EXTRACTION = !ssrContext.noSSR && (NUXT_RUNTIME_PAYLOAD_EXTRACTION);
|
|
314
|
+
const isRenderingPayload = (_PAYLOAD_EXTRACTION || false) && PAYLOAD_URL_RE.test(ssrContext.url);
|
|
315
|
+
if (isRenderingPayload) {
|
|
316
|
+
const url = ssrContext.url.substring(0, ssrContext.url.lastIndexOf("/")) || "/";
|
|
317
|
+
ssrContext.url = url;
|
|
318
|
+
event._path = event.node.req.url = url;
|
|
319
|
+
}
|
|
320
|
+
if (routeOptions.ssr === false) {
|
|
321
|
+
ssrContext.noSSR = true;
|
|
322
|
+
}
|
|
323
|
+
const payloadURL = _PAYLOAD_EXTRACTION ? joinURL(ssrContext.runtimeConfig.app.cdnURL || ssrContext.runtimeConfig.app.baseURL, ssrContext.url.replace(/\?.*$/, ""), PAYLOAD_FILENAME) + "?" + ssrContext.runtimeConfig.app.buildId : undefined;
|
|
324
|
+
// Render app
|
|
325
|
+
const renderer = await getRenderer(ssrContext);
|
|
326
|
+
{
|
|
327
|
+
for (const id of entryIds) {
|
|
328
|
+
ssrContext.modules.add(id);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
const _rendered = await renderer.renderToString(ssrContext).catch(async (error) => {
|
|
332
|
+
// We use error to bypass full render if we have an early response we can make
|
|
333
|
+
// TODO: remove _renderResponse in nuxt v5
|
|
334
|
+
if ((ssrContext["~renderResponse"] || ssrContext._renderResponse) && error.message === "skipping render") {
|
|
335
|
+
return {};
|
|
336
|
+
}
|
|
337
|
+
// Use explicitly thrown error in preference to subsequent rendering errors
|
|
338
|
+
const _err = !ssrError && ssrContext.payload?.error || error;
|
|
339
|
+
await ssrContext.nuxt?.hooks.callHook("app:error", _err);
|
|
340
|
+
throw _err;
|
|
341
|
+
});
|
|
342
|
+
// Render inline styles
|
|
343
|
+
// TODO: remove _renderResponse in nuxt v5
|
|
344
|
+
const inlinedStyles = !ssrContext["~renderResponse"] && !ssrContext._renderResponse && !isRenderingPayload ? await renderInlineStyles(ssrContext.modules ?? []) : [];
|
|
345
|
+
await ssrContext.nuxt?.hooks.callHook("app:rendered", {
|
|
346
|
+
ssrContext,
|
|
347
|
+
renderResult: _rendered
|
|
348
|
+
});
|
|
349
|
+
if (ssrContext["~renderResponse"] || ssrContext._renderResponse) {
|
|
350
|
+
// TODO: remove _renderResponse in nuxt v5
|
|
351
|
+
return ssrContext["~renderResponse"] || ssrContext._renderResponse;
|
|
352
|
+
}
|
|
353
|
+
// Handle errors
|
|
354
|
+
if (ssrContext.payload?.error && !ssrError) {
|
|
355
|
+
throw ssrContext.payload.error;
|
|
356
|
+
}
|
|
357
|
+
// Directly render payload routes
|
|
358
|
+
if (isRenderingPayload) {
|
|
359
|
+
const response = renderPayloadResponse(ssrContext);
|
|
360
|
+
return response;
|
|
361
|
+
}
|
|
362
|
+
const NO_SCRIPTS = routeOptions.noScripts;
|
|
363
|
+
// Setup head
|
|
364
|
+
const { styles, scripts } = getRequestDependencies(ssrContext, renderer.rendererContext);
|
|
365
|
+
// 1. Preload payloads and app manifest
|
|
366
|
+
if (_PAYLOAD_EXTRACTION && !NO_SCRIPTS) {
|
|
367
|
+
ssrContext.head.push({ link: [{
|
|
368
|
+
rel: "preload",
|
|
369
|
+
as: "fetch",
|
|
370
|
+
crossorigin: "anonymous",
|
|
371
|
+
href: payloadURL
|
|
372
|
+
} ] }, headEntryOptions);
|
|
373
|
+
}
|
|
374
|
+
if (ssrContext["~preloadManifest"] && !NO_SCRIPTS) {
|
|
375
|
+
ssrContext.head.push({ link: [{
|
|
376
|
+
rel: "preload",
|
|
377
|
+
as: "fetch",
|
|
378
|
+
fetchpriority: "low",
|
|
379
|
+
crossorigin: "anonymous",
|
|
380
|
+
href: buildAssetsURL(`builds/meta/${ssrContext.runtimeConfig.app.buildId}.json`)
|
|
381
|
+
}] }, {
|
|
382
|
+
...headEntryOptions,
|
|
383
|
+
tagPriority: "low"
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
// 2. Styles
|
|
387
|
+
if (inlinedStyles.length) {
|
|
388
|
+
ssrContext.head.push({ style: inlinedStyles });
|
|
389
|
+
}
|
|
390
|
+
const link = [];
|
|
391
|
+
for (const resource of Object.values(styles)) {
|
|
392
|
+
// Add CSS links in <head> for CSS files
|
|
393
|
+
// - in production
|
|
394
|
+
// - in dev mode when not rendering an island
|
|
395
|
+
link.push({
|
|
396
|
+
rel: "stylesheet",
|
|
397
|
+
href: renderer.rendererContext.buildAssetsURL(resource.file),
|
|
398
|
+
crossorigin: ""
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
if (link.length) {
|
|
402
|
+
ssrContext.head.push({ link }, headEntryOptions);
|
|
403
|
+
}
|
|
404
|
+
if (!NO_SCRIPTS) {
|
|
405
|
+
// 4. Resource Hints
|
|
406
|
+
// Remove lazy hydrated modules from ssrContext.modules so they don't get preloaded
|
|
407
|
+
// (CSS links are already added above, this only affects JS preloads)
|
|
408
|
+
if (ssrContext["~lazyHydratedModules"]) {
|
|
409
|
+
for (const id of ssrContext["~lazyHydratedModules"]) {
|
|
410
|
+
ssrContext.modules?.delete(id);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
ssrContext.head.push({ link: getPreloadLinks(ssrContext, renderer.rendererContext) }, headEntryOptions);
|
|
414
|
+
ssrContext.head.push({ link: getPrefetchLinks(ssrContext, renderer.rendererContext) }, headEntryOptions);
|
|
415
|
+
// 5. Payloads
|
|
416
|
+
ssrContext.head.push({ script: _PAYLOAD_EXTRACTION ? renderPayloadJsonScript({
|
|
417
|
+
ssrContext,
|
|
418
|
+
data: splitPayload(ssrContext).initial,
|
|
419
|
+
src: payloadURL
|
|
420
|
+
}) : renderPayloadJsonScript({
|
|
421
|
+
ssrContext,
|
|
422
|
+
data: ssrContext.payload
|
|
423
|
+
}) }, {
|
|
424
|
+
...headEntryOptions,
|
|
425
|
+
tagPosition: "bodyClose",
|
|
426
|
+
tagPriority: "high"
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
// 6. Scripts
|
|
430
|
+
if (!routeOptions.noScripts) {
|
|
431
|
+
const tagPosition = "head";
|
|
432
|
+
ssrContext.head.push({ script: Object.values(scripts).map((resource) => ({
|
|
433
|
+
type: resource.module ? "module" : null,
|
|
434
|
+
src: renderer.rendererContext.buildAssetsURL(resource.file),
|
|
435
|
+
defer: resource.module ? null : true,
|
|
436
|
+
tagPosition,
|
|
437
|
+
crossorigin: ""
|
|
438
|
+
})) }, headEntryOptions);
|
|
439
|
+
}
|
|
440
|
+
const { headTags, bodyTags, bodyTagsOpen, htmlAttrs, bodyAttrs } = await renderSSRHead(ssrContext.head, renderSSRHeadOptions);
|
|
441
|
+
// Create render context
|
|
442
|
+
const htmlContext = {
|
|
443
|
+
htmlAttrs: htmlAttrs ? [htmlAttrs] : [],
|
|
444
|
+
head: normalizeChunks([headTags]),
|
|
445
|
+
bodyAttrs: bodyAttrs ? [bodyAttrs] : [],
|
|
446
|
+
bodyPrepend: normalizeChunks([bodyTagsOpen, ssrContext.teleports?.body]),
|
|
447
|
+
body: [_rendered.html, APP_TELEPORT_OPEN_TAG + (HAS_APP_TELEPORTS ? joinTags([ssrContext.teleports?.[`#${appTeleportAttrs.id}`]]) : "") + APP_TELEPORT_CLOSE_TAG],
|
|
448
|
+
bodyAppend: [bodyTags]
|
|
449
|
+
};
|
|
450
|
+
// Allow hooking into the rendered result
|
|
451
|
+
await nitroApp.hooks.callHook("render:html", htmlContext, { event });
|
|
452
|
+
// Construct HTML response
|
|
453
|
+
return {
|
|
454
|
+
body: renderHTMLDocument(htmlContext),
|
|
455
|
+
statusCode: getResponseStatus(event),
|
|
456
|
+
statusMessage: getResponseStatusText(event),
|
|
457
|
+
headers: {
|
|
458
|
+
"content-type": "text/html;charset=utf-8",
|
|
459
|
+
"x-powered-by": "Nuxt"
|
|
460
|
+
}
|
|
461
|
+
};
|
|
462
|
+
});
|
|
463
|
+
function normalizeChunks(chunks) {
|
|
464
|
+
const result = [];
|
|
465
|
+
for (const _chunk of chunks) {
|
|
466
|
+
const chunk = _chunk?.trim();
|
|
467
|
+
if (chunk) {
|
|
468
|
+
result.push(chunk);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return result;
|
|
472
|
+
}
|
|
473
|
+
function joinTags(tags) {
|
|
474
|
+
return tags.join("");
|
|
475
|
+
}
|
|
476
|
+
function joinAttrs(chunks) {
|
|
477
|
+
if (chunks.length === 0) {
|
|
478
|
+
return "";
|
|
479
|
+
}
|
|
480
|
+
return " " + chunks.join(" ");
|
|
481
|
+
}
|
|
482
|
+
function renderHTMLDocument(html) {
|
|
483
|
+
return "<!DOCTYPE html>" + `<html${joinAttrs(html.htmlAttrs)}>` + `<head>${joinTags(html.head)}</head>` + `<body${joinAttrs(html.bodyAttrs)}>${joinTags(html.bodyPrepend)}${joinTags(html.body)}${joinTags(html.bodyAppend)}</body>` + "</html>";
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
const renderer$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
|
|
487
|
+
__proto__: null,
|
|
488
|
+
default: renderer
|
|
489
|
+
}, Symbol.toStringTag, { value: 'Module' }));
|
|
490
|
+
|
|
491
|
+
export { useSeoMeta as a, headSymbol as h, renderer$1 as r, useHead as u };
|
|
492
|
+
//# sourceMappingURL=renderer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.mjs","sources":["../../../../../node_modules/@unhead/vue/dist/shared/vue.N9zWjxoK.mjs","../../../../../node_modules/@unhead/vue/dist/shared/vue.Cr7xSEtD.mjs","../../../../../node_modules/@unhead/vue/dist/server.mjs","../../../../../node_modules/@nuxt/nitro-server/dist/runtime/utils/renderer/build-files.mjs","../../../../../node_modules/@nuxt/nitro-server/dist/runtime/utils/renderer/payload.mjs","../../../../../node_modules/@nuxt/nitro-server/dist/runtime/utils/renderer/app.mjs","../../../../../node_modules/@nuxt/nitro-server/dist/runtime/utils/renderer/inline-styles.mjs","../../../../../node_modules/@nuxt/nitro-server/dist/runtime/handlers/renderer.mjs"],"names":["renderToString","_renderToString"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_virtual_spa-template.mjs","sources":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import process from 'node:process';globalThis._importMeta_={url:import.meta.url,env:process.env};import 'node:http';
|
|
2
|
+
import 'node:https';
|
|
3
|
+
export { a1 as default } from './chunks/nitro/nitro.mjs';
|
|
4
|
+
import '@modelcontextprotocol/sdk/types.js';
|
|
5
|
+
import '@modelcontextprotocol/sdk/server/index.js';
|
|
6
|
+
import '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
7
|
+
import 'node:crypto';
|
|
8
|
+
import 'fastest-levenshtein';
|
|
9
|
+
import 'node:fs';
|
|
10
|
+
import 'node:path';
|
|
11
|
+
import 'node:url';
|
|
12
|
+
import 'node:vm';
|
|
13
|
+
import 'turndown';
|
|
14
|
+
import 'marked';
|
|
15
|
+
import 'drizzle-orm';
|
|
16
|
+
import 'node:buffer';
|
|
17
|
+
import 'google-auth-library';
|
|
18
|
+
import 'node:events';
|
|
19
|
+
import 'node:os';
|
|
20
|
+
import 'better-sqlite3';
|
|
21
|
+
import 'drizzle-orm/better-sqlite3';
|
|
22
|
+
import 'drizzle-orm/node-postgres';
|
|
23
|
+
import 'pg';
|
|
24
|
+
import 'node:process';
|
|
25
|
+
import 'js-yaml';
|
|
26
|
+
import 'zod';
|
|
27
|
+
import 'drizzle-orm/sqlite-core';
|
|
28
|
+
import 'drizzle-orm/pg-core';
|
|
29
|
+
import '@iconify/utils';
|
|
30
|
+
import 'consola';
|
|
31
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -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");
|