@commandable/mcp 0.2.1 → 0.4.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.
Files changed (87) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{S2P9sd4n.js → CBR-0oRi.js} +1 -1
  3. package/.output/public/_nuxt/CYsCQznM.js +59 -0
  4. package/.output/public/_nuxt/{B04gGCnx.js → Ctwv5nxD.js} +3 -3
  5. package/.output/public/_nuxt/{BvFUCPqA.js → DKO0MviJ.js} +1 -1
  6. package/.output/public/_nuxt/{d2XTSFt9.js → DOIzs5t4.js} +1 -1
  7. package/.output/public/_nuxt/KqToXREt.js +1 -0
  8. package/.output/public/_nuxt/{Dm_hd4at.js → Sdkz9rYy.js} +1 -1
  9. package/.output/public/_nuxt/_id_.DhlLK-mY.css +1 -0
  10. package/.output/public/_nuxt/builds/latest.json +1 -1
  11. package/.output/public/_nuxt/builds/meta/dd3dc5d0-c600-485d-b098-2f5b9facdf63.json +1 -0
  12. package/.output/server/chunks/build/IntegrationCredentials-styles.COcCfJmp.mjs +8 -0
  13. package/.output/server/chunks/build/IntegrationCredentials-styles.COcCfJmp.mjs.map +1 -0
  14. package/.output/server/chunks/build/{_id_-Bnxenh08.mjs → _id_-Co8jGxsD.mjs} +160 -38
  15. package/.output/server/chunks/build/{_id_-Bnxenh08.mjs.map → _id_-Co8jGxsD.mjs.map} +1 -1
  16. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  17. package/.output/server/chunks/build/{error-404-D2QibUBT.mjs → error-404-D1k2kWid.mjs} +13 -8
  18. package/.output/server/chunks/build/error-404-D1k2kWid.mjs.map +1 -0
  19. package/.output/server/chunks/build/{error-500-DYvawybF.mjs → error-500-D2K2rAfl.mjs} +13 -8
  20. package/.output/server/chunks/build/error-500-D2K2rAfl.mjs.map +1 -0
  21. package/.output/server/chunks/build/{fetch-BmYZnj75.mjs → fetch-aDh21opM.mjs} +114 -13
  22. package/.output/server/chunks/build/fetch-aDh21opM.mjs.map +1 -0
  23. package/.output/server/chunks/build/{index-CL-Gkd-Y.mjs → index-BxsJPthj.mjs} +24 -15
  24. package/.output/server/chunks/build/index-BxsJPthj.mjs.map +1 -0
  25. package/.output/server/chunks/build/{index-5H-nmhph.mjs → index-ycGPozML.mjs} +13 -8
  26. package/.output/server/chunks/build/index-ycGPozML.mjs.map +1 -0
  27. package/.output/server/chunks/build/server.mjs +17 -12
  28. package/.output/server/chunks/build/styles.mjs +2 -2
  29. package/.output/server/chunks/nitro/nitro.mjs +13082 -766
  30. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  31. package/.output/server/chunks/routes/api/_commandable/status.get.mjs +15 -8
  32. package/.output/server/chunks/routes/api/_commandable/status.get.mjs.map +1 -1
  33. package/.output/server/chunks/routes/api/catalog/_type/tools.get.mjs +13 -8
  34. package/.output/server/chunks/routes/api/catalog/_type/tools.get.mjs.map +1 -1
  35. package/.output/server/chunks/routes/api/catalog/_type/toolsets.get.mjs +13 -8
  36. package/.output/server/chunks/routes/api/catalog/_type/toolsets.get.mjs.map +1 -1
  37. package/.output/server/chunks/routes/api/catalog.get.mjs +12 -7
  38. package/.output/server/chunks/routes/api/catalog.get.mjs.map +1 -1
  39. package/.output/server/chunks/routes/api/index.get.mjs +13 -8
  40. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  41. package/.output/server/chunks/routes/api/index.post.mjs +12 -7
  42. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  43. package/.output/server/chunks/routes/api/integrations/_id/credentials-config.get.mjs +15 -12
  44. package/.output/server/chunks/routes/api/integrations/_id/credentials-config.get.mjs.map +1 -1
  45. package/.output/server/chunks/routes/api/integrations/_id/credentials-status.get.mjs +15 -12
  46. package/.output/server/chunks/routes/api/integrations/_id/credentials-status.get.mjs.map +1 -1
  47. package/.output/server/chunks/routes/api/integrations/_id/credentials.delete.mjs +18 -15
  48. package/.output/server/chunks/routes/api/integrations/_id/credentials.delete.mjs.map +1 -1
  49. package/.output/server/chunks/routes/api/integrations/_id/credentials.post.mjs +28 -24
  50. package/.output/server/chunks/routes/api/integrations/_id/credentials.post.mjs.map +1 -1
  51. package/.output/server/chunks/routes/api/integrations/_id/permissions.post.mjs +13 -8
  52. package/.output/server/chunks/routes/api/integrations/_id/permissions.post.mjs.map +1 -1
  53. package/.output/server/chunks/routes/api/integrations/_id/tools.delete.mjs +13 -8
  54. package/.output/server/chunks/routes/api/integrations/_id/tools.delete.mjs.map +1 -1
  55. package/.output/server/chunks/routes/api/integrations/_id/tools.get.mjs +27 -10
  56. package/.output/server/chunks/routes/api/integrations/_id/tools.get.mjs.map +1 -1
  57. package/.output/server/chunks/routes/api/integrations/_id/toolsets.get.mjs +13 -8
  58. package/.output/server/chunks/routes/api/integrations/_id/toolsets.get.mjs.map +1 -1
  59. package/.output/server/chunks/routes/api/integrations/_id/toolsets.post.mjs +13 -8
  60. package/.output/server/chunks/routes/api/integrations/_id/toolsets.post.mjs.map +1 -1
  61. package/.output/server/chunks/routes/api/integrations/_id_.delete.mjs +13 -8
  62. package/.output/server/chunks/routes/api/integrations/_id_.delete.mjs.map +1 -1
  63. package/.output/server/chunks/routes/health.get.mjs +12 -7
  64. package/.output/server/chunks/routes/health.get.mjs.map +1 -1
  65. package/.output/server/chunks/routes/mcp/create.mjs +13 -8
  66. package/.output/server/chunks/routes/mcp/create.mjs.map +1 -1
  67. package/.output/server/chunks/routes/mcp/static.mjs +61 -0
  68. package/.output/server/chunks/routes/mcp/static.mjs.map +1 -0
  69. package/.output/server/chunks/routes/mcp.mjs +14 -9
  70. package/.output/server/chunks/routes/mcp.mjs.map +1 -1
  71. package/.output/server/index.mjs +12 -7
  72. package/.output/server/index.mjs.map +1 -1
  73. package/.output/server/package.json +1 -1
  74. package/README.md +17 -1
  75. package/bin/cli.mjs +34 -17
  76. package/package.json +15 -14
  77. package/.output/public/_nuxt/B2dAlp_u.js +0 -59
  78. package/.output/public/_nuxt/Ba0BY0O0.js +0 -1
  79. package/.output/public/_nuxt/_id_.BKAjWkoP.css +0 -1
  80. package/.output/public/_nuxt/builds/meta/87720575-dfd4-475f-92c1-554fcd8b22f1.json +0 -1
  81. package/.output/server/chunks/build/IntegrationCredentials-styles.CULcCK6_.mjs +0 -8
  82. package/.output/server/chunks/build/IntegrationCredentials-styles.CULcCK6_.mjs.map +0 -1
  83. package/.output/server/chunks/build/error-404-D2QibUBT.mjs.map +0 -1
  84. package/.output/server/chunks/build/error-500-DYvawybF.mjs.map +0 -1
  85. package/.output/server/chunks/build/fetch-BmYZnj75.mjs.map +0 -1
  86. package/.output/server/chunks/build/index-5H-nmhph.mjs.map +0 -1
  87. package/.output/server/chunks/build/index-CL-Gkd-Y.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
- import { computed, toValue, reactive, useSlots, unref, mergeProps, withCtx, renderSlot, openBlock, createBlock, createCommentVNode, toDisplayString, useModel, useId, useAttrs, Fragment, createVNode, createTextVNode, mergeModels, defineComponent, ref, inject, watch, provide, toRef, useTemplateRef, renderList, useSSRContext } from 'vue';
1
+ import { computed, toValue, reactive, useSlots, unref, mergeProps, withCtx, renderSlot, openBlock, createBlock, createCommentVNode, toDisplayString, useModel, useId, useAttrs, Fragment, createVNode, createTextVNode, mergeModels, defineComponent, ref, isRef, inject, watch, provide, toRef, useTemplateRef, renderList, useSSRContext } from 'vue';
2
2
  import { ssrRenderComponent, ssrRenderSlot, ssrRenderClass, ssrInterpolate, ssrRenderAttrs, ssrRenderList, ssrRenderAttr } from 'vue/server-renderer';
3
3
  import { Primitive, useForwardProps, SwitchRoot, SwitchThumb, Label, useForwardPropsEmits, SelectRoot, SelectTrigger, SelectPortal, SelectContent, SelectGroup, SelectLabel, SelectSeparator, SelectItem, SelectItemText, SelectItemIndicator, SelectArrow } from 'reka-ui';
4
- import { A as fetchDefaults, B as useAsyncData, b as useAppConfig, c as useComponentUI, e as useFieldGroup, f as useComponentIcons, t as tv, g as _sfc_main$m, h as _sfc_main$k, d as useFormField, i as _sfc_main$h, o as useNuxtApp, p as formErrorsInjectionKey, q as formInputsInjectionKey, r as inputIdInjectionKey, s as formFieldInjectionKey, v as usePortal, w as isArrayOfArray, x as get, y as _sfc_main$l, l as looseToNumber, z as getDisplayValue } from './server.mjs';
4
+ import { A as fetchDefaults, B as useAsyncData, b as useAppConfig, c as useComponentUI, e as useFieldGroup, f as useComponentIcons, t as tv, g as _sfc_main$m, h as _sfc_main$k, d as useFormField, i as _sfc_main$h, j as _sfc_main$9, o as useNuxtApp, p as formErrorsInjectionKey, q as formInputsInjectionKey, r as inputIdInjectionKey, s as formFieldInjectionKey, v as usePortal, w as isArrayOfArray, x as get, y as _sfc_main$l, l as looseToNumber, z as getDisplayValue } from './server.mjs';
5
5
  import { a6 as hash, P as defu } from '../nitro/nitro.mjs';
6
6
  import { reactivePick } from '@vueuse/core';
7
7
  import { isPlainObject } from '@vue/shared';
@@ -2599,7 +2599,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2599
2599
  const loading = ref(true);
2600
2600
  const loadError = ref(false);
2601
2601
  const deletingToolName = ref("");
2602
+ const pendingDeleteToolName = ref("");
2602
2603
  const expanded = ref(/* @__PURE__ */ new Set());
2604
+ const deleteModalOpen = computed({
2605
+ get: () => !!pendingDeleteToolName.value,
2606
+ set: (open) => {
2607
+ if (!open)
2608
+ pendingDeleteToolName.value = "";
2609
+ }
2610
+ });
2603
2611
  const effectiveToolsets = computed(() => {
2604
2612
  if (toolsets.value.length)
2605
2613
  return toolsets.value;
@@ -2612,8 +2620,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2612
2620
  return discovered.map((key) => ({ key, label: key, description: "" }));
2613
2621
  });
2614
2622
  function scopeClass(scope) {
2615
- if (scope === "read") return "bg-blue-50 text-blue-600 dark:bg-blue-950 dark:text-blue-400";
2616
- if (scope === "write") return "bg-amber-50 text-amber-600 dark:bg-amber-950 dark:text-amber-400";
2623
+ if (scope === "read")
2624
+ return "bg-blue-50 text-blue-600 dark:bg-blue-950 dark:text-blue-400";
2625
+ if (scope === "write")
2626
+ return "bg-amber-50 text-amber-600 dark:bg-amber-950 dark:text-amber-400";
2617
2627
  return "bg-red-50 text-red-600 dark:bg-red-950 dark:text-red-400";
2618
2628
  }
2619
2629
  function isToolsetEnabled(key) {
@@ -2629,13 +2639,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2629
2639
  return props.maxScope === "read" && tool.scope !== "read";
2630
2640
  }
2631
2641
  function getToolsInSet(key) {
2632
- if (key === "__all__") return tools.value;
2642
+ if (key === "__all__")
2643
+ return tools.value;
2633
2644
  return tools.value.filter((t) => t.toolset === key);
2634
2645
  }
2635
2646
  function getActiveCount(key) {
2636
2647
  return getToolsInSet(key).filter((t) => {
2637
- if (isToolGreyed(t)) return false;
2638
- if (props.disabledTools.includes(t.name)) return false;
2648
+ if (isToolGreyed(t))
2649
+ return false;
2650
+ if (props.disabledTools.includes(t.name))
2651
+ return false;
2639
2652
  return true;
2640
2653
  }).length;
2641
2654
  }
@@ -2648,11 +2661,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2648
2661
  }
2649
2662
  const current = [...props.enabledToolsets];
2650
2663
  if (enabled) {
2651
- if (!current.includes(key)) current.push(key);
2664
+ if (!current.includes(key))
2665
+ current.push(key);
2652
2666
  } else {
2653
2667
  if (current.length > 1) {
2654
2668
  const idx = current.indexOf(key);
2655
- if (idx >= 0) current.splice(idx, 1);
2669
+ if (idx >= 0)
2670
+ current.splice(idx, 1);
2656
2671
  }
2657
2672
  }
2658
2673
  emit("update:enabledToolsets", current);
@@ -2661,9 +2676,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2661
2676
  const current = [...props.disabledTools];
2662
2677
  if (enabled) {
2663
2678
  const idx = current.indexOf(name);
2664
- if (idx >= 0) current.splice(idx, 1);
2679
+ if (idx >= 0)
2680
+ current.splice(idx, 1);
2665
2681
  } else {
2666
- if (!current.includes(name)) current.push(name);
2682
+ if (!current.includes(name))
2683
+ current.push(name);
2667
2684
  }
2668
2685
  emit("update:disabledTools", current);
2669
2686
  }
@@ -2696,8 +2713,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2696
2713
  async function deleteCustomTool(name) {
2697
2714
  if (!props.integrationId || !name || deletingToolName.value)
2698
2715
  return;
2699
- if (!(void 0).confirm(`Delete custom tool "${name}"? This cannot be undone.`))
2716
+ pendingDeleteToolName.value = name;
2717
+ }
2718
+ async function confirmDeleteCustomTool() {
2719
+ if (!props.integrationId || !pendingDeleteToolName.value || deletingToolName.value)
2700
2720
  return;
2721
+ const name = pendingDeleteToolName.value;
2722
+ pendingDeleteToolName.value = "";
2701
2723
  deletingToolName.value = name;
2702
2724
  try {
2703
2725
  await $fetch(`/api/integrations/${props.integrationId}/tools`, {
@@ -2710,12 +2732,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2710
2732
  deletingToolName.value = "";
2711
2733
  }
2712
2734
  }
2735
+ function cancelDeleteCustomTool() {
2736
+ pendingDeleteToolName.value = "";
2737
+ }
2713
2738
  __expose({ toolsets: effectiveToolsets });
2714
2739
  load();
2715
2740
  return (_ctx, _push, _parent, _attrs) => {
2716
2741
  const _component_USwitch = _sfc_main$3;
2717
2742
  const _component_UIcon = _sfc_main$m;
2718
2743
  const _component_UButton = _sfc_main$h;
2744
+ const _component_UModal = _sfc_main$9;
2719
2745
  _push(`<div${ssrRenderAttrs(mergeProps({ class: "space-y-2" }, _attrs))}>`);
2720
2746
  if (unref(loading)) {
2721
2747
  _push(`<div class="text-sm text-muted py-2"> Loading tools… </div>`);
@@ -2795,6 +2821,81 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2795
2821
  });
2796
2822
  _push(`<!--]-->`);
2797
2823
  }
2824
+ _push(ssrRenderComponent(_component_UModal, {
2825
+ open: unref(deleteModalOpen),
2826
+ "onUpdate:open": ($event) => isRef(deleteModalOpen) ? deleteModalOpen.value = $event : null,
2827
+ title: "Delete custom tool",
2828
+ description: unref(pendingDeleteToolName) ? `Delete custom tool '${unref(pendingDeleteToolName)}'? This cannot be undone.` : void 0
2829
+ }, {
2830
+ footer: withCtx((_, _push2, _parent2, _scopeId) => {
2831
+ if (_push2) {
2832
+ _push2(`<div class="flex items-center justify-end gap-2 w-full"${_scopeId}>`);
2833
+ _push2(ssrRenderComponent(_component_UButton, {
2834
+ variant: "ghost",
2835
+ color: "neutral",
2836
+ disabled: !!unref(deletingToolName),
2837
+ onClick: cancelDeleteCustomTool
2838
+ }, {
2839
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
2840
+ if (_push3) {
2841
+ _push3(` Cancel `);
2842
+ } else {
2843
+ return [
2844
+ createTextVNode(" Cancel ")
2845
+ ];
2846
+ }
2847
+ }),
2848
+ _: 1
2849
+ }, _parent2, _scopeId));
2850
+ _push2(ssrRenderComponent(_component_UButton, {
2851
+ color: "error",
2852
+ icon: "i-lucide-trash-2",
2853
+ loading: !!unref(deletingToolName),
2854
+ onClick: confirmDeleteCustomTool
2855
+ }, {
2856
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
2857
+ if (_push3) {
2858
+ _push3(` Delete `);
2859
+ } else {
2860
+ return [
2861
+ createTextVNode(" Delete ")
2862
+ ];
2863
+ }
2864
+ }),
2865
+ _: 1
2866
+ }, _parent2, _scopeId));
2867
+ _push2(`</div>`);
2868
+ } else {
2869
+ return [
2870
+ createVNode("div", { class: "flex items-center justify-end gap-2 w-full" }, [
2871
+ createVNode(_component_UButton, {
2872
+ variant: "ghost",
2873
+ color: "neutral",
2874
+ disabled: !!unref(deletingToolName),
2875
+ onClick: cancelDeleteCustomTool
2876
+ }, {
2877
+ default: withCtx(() => [
2878
+ createTextVNode(" Cancel ")
2879
+ ]),
2880
+ _: 1
2881
+ }, 8, ["disabled"]),
2882
+ createVNode(_component_UButton, {
2883
+ color: "error",
2884
+ icon: "i-lucide-trash-2",
2885
+ loading: !!unref(deletingToolName),
2886
+ onClick: confirmDeleteCustomTool
2887
+ }, {
2888
+ default: withCtx(() => [
2889
+ createTextVNode(" Delete ")
2890
+ ]),
2891
+ _: 1
2892
+ }, 8, ["loading"])
2893
+ ])
2894
+ ];
2895
+ }
2896
+ }),
2897
+ _: 1
2898
+ }, _parent));
2798
2899
  _push(`</div>`);
2799
2900
  };
2800
2901
  }
@@ -2900,4 +3001,4 @@ function generateOptionSegments(opts) {
2900
3001
  }
2901
3002
 
2902
3003
  export { _sfc_main$4 as _, _sfc_main$3 as a, __nuxt_component_3 as b, _sfc_main$2 as c, _sfc_main$1 as d, useFetch as u };
2903
- //# sourceMappingURL=fetch-BmYZnj75.mjs.map
3004
+ //# sourceMappingURL=fetch-aDh21opM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-aDh21opM.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/fetch-aDh21opM.js"],"names":["_sfc_main$5","_sfc_main$6","_sfc_main$7","_sfc_main$8"],"mappings":"","x_google_ignoreList":[0]}
@@ -1,35 +1,40 @@
1
1
  import { m as _sfc_main$b, i as _sfc_main$h, a as __nuxt_component_0$1, g as _sfc_main$m, n as navigateTo, j as _sfc_main$9 } from './server.mjs';
2
- import { u as useFetch, _ as _sfc_main$4, a as _sfc_main$3, c as _sfc_main$2, d as _sfc_main$1$1, b as __nuxt_component_3 } from './fetch-BmYZnj75.mjs';
2
+ import { u as useFetch, _ as _sfc_main$4, a as _sfc_main$3, c as _sfc_main$2, d as _sfc_main$1$1, b as __nuxt_component_3 } from './fetch-aDh21opM.mjs';
3
3
  import { defineComponent, withAsyncContext, reactive, ref, watchEffect, mergeProps, withCtx, createTextVNode, unref, toDisplayString, createVNode, openBlock, createBlock, createCommentVNode, Fragment, withModifiers, isRef, renderList, computed, watch, useSSRContext } from 'vue';
4
4
  import { ssrRenderComponent, ssrRenderList, ssrInterpolate, ssrRenderClass } from 'vue/server-renderer';
5
5
  import '../nitro/nitro.mjs';
6
- import '@modelcontextprotocol/sdk/types.js';
6
+ import 'node:crypto';
7
7
  import '@modelcontextprotocol/sdk/server/index.js';
8
8
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
9
- import 'node:crypto';
9
+ import '@modelcontextprotocol/sdk/types.js';
10
10
  import 'fastest-levenshtein';
11
- import 'node:fs';
12
- import 'node:path';
13
11
  import 'node:url';
14
12
  import 'node:vm';
15
13
  import 'turndown';
16
14
  import 'marked';
15
+ import 'node:util';
16
+ import 'node:child_process';
17
+ import 'node:fs/promises';
18
+ import 'node:path';
19
+ import 'node:os';
20
+ import 'node:fs';
17
21
  import 'drizzle-orm';
18
22
  import 'node:buffer';
19
23
  import 'google-auth-library';
20
24
  import 'node:http';
21
25
  import 'node:https';
22
26
  import 'node:events';
23
- import 'node:os';
24
27
  import 'better-sqlite3';
25
28
  import 'drizzle-orm/better-sqlite3';
26
29
  import 'drizzle-orm/node-postgres';
27
30
  import 'pg';
31
+ import 'drizzle-orm/better-sqlite3/migrator';
32
+ import 'drizzle-orm/node-postgres/migrator';
33
+ import 'drizzle-orm/sqlite-core';
34
+ import 'drizzle-orm/pg-core';
28
35
  import 'node:process';
29
36
  import 'js-yaml';
30
37
  import 'zod';
31
- import 'drizzle-orm/sqlite-core';
32
- import 'drizzle-orm/pg-core';
33
38
  import '@iconify/utils';
34
39
  import 'consola';
35
40
  import 'vue-router';
@@ -66,7 +71,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
66
71
  });
67
72
  const { data: catalog } = ([__temp, __restore] = withAsyncContext(() => useFetch(
68
73
  "/api/catalog",
69
- "$vYIVj-kaX8"
74
+ "$GyrOA-Bee5"
70
75
  /* nuxt-injected */
71
76
  )), __temp = await __temp, __restore(), __temp);
72
77
  const catalogTypes = computed(() => (catalog.value || []).map((i) => ({ label: i.type, value: i.type })));
@@ -77,7 +82,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
77
82
  const toolsTreeRef = ref(null);
78
83
  const creating = ref(false);
79
84
  watch(isOpen, (open) => {
80
- if (!open) return;
85
+ if (!open)
86
+ return;
81
87
  selectedType.value = void 0;
82
88
  selectedTypeMaxScope.value = null;
83
89
  selectedTypeEnabledToolsets.value = [];
@@ -95,7 +101,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
95
101
  selectedTypeEnabledToolsets.value = toolsets.map((t) => t.key).filter((k) => k !== "custom");
96
102
  }, { deep: true });
97
103
  async function create() {
98
- if (!selectedType.value) return;
104
+ if (!selectedType.value)
105
+ return;
99
106
  creating.value = true;
100
107
  try {
101
108
  const toolsetKeys = (toolsTreeRef.value?.toolsets || []).map((t) => t.key);
@@ -324,15 +331,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
324
331
  let __temp, __restore;
325
332
  const { data: integrations, pending, error, refresh } = ([__temp, __restore] = withAsyncContext(() => useFetch(
326
333
  "/api/integrations",
327
- "$3JxGA1emOo"
334
+ "$EPVFpeor9X"
328
335
  /* nuxt-injected */
329
336
  )), __temp = await __temp, __restore(), __temp);
330
337
  const healthStatus = reactive({});
331
338
  const showAddModal = ref(false);
332
339
  watchEffect(async () => {
333
- if (!integrations.value) return;
340
+ if (!integrations.value)
341
+ return;
334
342
  for (const i of integrations.value) {
335
- if (healthStatus[i.id] !== void 0) continue;
343
+ if (healthStatus[i.id] !== void 0)
344
+ continue;
336
345
  const res = await $fetch(`/api/integrations/${i.id}/credentials-status`).catch(() => null);
337
346
  healthStatus[i.id] = res?.health_status ?? "disconnected";
338
347
  }
@@ -717,4 +726,4 @@ _sfc_main.setup = (props, ctx) => {
717
726
  };
718
727
 
719
728
  export { _sfc_main as default };
720
- //# sourceMappingURL=index-CL-Gkd-Y.mjs.map
729
+ //# sourceMappingURL=index-BxsJPthj.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BxsJPthj.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/index-BxsJPthj.js"],"names":["_sfc_main$2","_sfc_main$4","_sfc_main$5","_sfc_main$3","_sfc_main$6","__nuxt_component_0","_sfc_main$7","_sfc_main$8","_sfc_main$9"],"mappings":"","x_google_ignoreList":[0]}
@@ -2,33 +2,38 @@ import { defineComponent, useSSRContext } from 'vue';
2
2
  import { ssrRenderAttrs } from 'vue/server-renderer';
3
3
  import { n as navigateTo } from './server.mjs';
4
4
  import '../nitro/nitro.mjs';
5
- import '@modelcontextprotocol/sdk/types.js';
5
+ import 'node:crypto';
6
6
  import '@modelcontextprotocol/sdk/server/index.js';
7
7
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
8
- import 'node:crypto';
8
+ import '@modelcontextprotocol/sdk/types.js';
9
9
  import 'fastest-levenshtein';
10
- import 'node:fs';
11
- import 'node:path';
12
10
  import 'node:url';
13
11
  import 'node:vm';
14
12
  import 'turndown';
15
13
  import 'marked';
14
+ import 'node:util';
15
+ import 'node:child_process';
16
+ import 'node:fs/promises';
17
+ import 'node:path';
18
+ import 'node:os';
19
+ import 'node:fs';
16
20
  import 'drizzle-orm';
17
21
  import 'node:buffer';
18
22
  import 'google-auth-library';
19
23
  import 'node:http';
20
24
  import 'node:https';
21
25
  import 'node:events';
22
- import 'node:os';
23
26
  import 'better-sqlite3';
24
27
  import 'drizzle-orm/better-sqlite3';
25
28
  import 'drizzle-orm/node-postgres';
26
29
  import 'pg';
30
+ import 'drizzle-orm/better-sqlite3/migrator';
31
+ import 'drizzle-orm/node-postgres/migrator';
32
+ import 'drizzle-orm/sqlite-core';
33
+ import 'drizzle-orm/pg-core';
27
34
  import 'node:process';
28
35
  import 'js-yaml';
29
36
  import 'zod';
30
- import 'drizzle-orm/sqlite-core';
31
- import 'drizzle-orm/pg-core';
32
37
  import '@iconify/utils';
33
38
  import 'consola';
34
39
  import 'vue-router';
@@ -65,4 +70,4 @@ _sfc_main.setup = (props, ctx) => {
65
70
  };
66
71
 
67
72
  export { _sfc_main as default };
68
- //# sourceMappingURL=index-5H-nmhph.mjs.map
73
+ //# sourceMappingURL=index-ycGPozML.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-ycGPozML.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/index-ycGPozML.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
@@ -11,33 +11,38 @@ import { getIconCSS } from '@iconify/utils/lib/css/icon';
11
11
  import { debounce } from 'perfect-debounce';
12
12
  import { DrawerRootNested, DrawerRoot, DrawerTrigger, DrawerPortal, DrawerOverlay, DrawerContent, DrawerHandle, DrawerTitle, DrawerDescription } from 'vaul-vue';
13
13
  import { u as useHead$1, h as headSymbol, a as useSeoMeta$1 } from '../routes/renderer.mjs';
14
- import '@modelcontextprotocol/sdk/types.js';
14
+ import 'node:crypto';
15
15
  import '@modelcontextprotocol/sdk/server/index.js';
16
16
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
17
- import 'node:crypto';
17
+ import '@modelcontextprotocol/sdk/types.js';
18
18
  import 'fastest-levenshtein';
19
- import 'node:fs';
20
- import 'node:path';
21
19
  import 'node:url';
22
20
  import 'node:vm';
23
21
  import 'turndown';
24
22
  import 'marked';
23
+ import 'node:util';
24
+ import 'node:child_process';
25
+ import 'node:fs/promises';
26
+ import 'node:path';
27
+ import 'node:os';
28
+ import 'node:fs';
25
29
  import 'drizzle-orm';
26
30
  import 'node:buffer';
27
31
  import 'google-auth-library';
28
32
  import 'node:http';
29
33
  import 'node:https';
30
34
  import 'node:events';
31
- import 'node:os';
32
35
  import 'better-sqlite3';
33
36
  import 'drizzle-orm/better-sqlite3';
34
37
  import 'drizzle-orm/node-postgres';
35
38
  import 'pg';
39
+ import 'drizzle-orm/better-sqlite3/migrator';
40
+ import 'drizzle-orm/node-postgres/migrator';
41
+ import 'drizzle-orm/sqlite-core';
42
+ import 'drizzle-orm/pg-core';
36
43
  import 'node:process';
37
44
  import 'js-yaml';
38
45
  import 'zod';
39
- import 'drizzle-orm/sqlite-core';
40
- import 'drizzle-orm/pg-core';
41
46
  import '@iconify/utils';
42
47
  import 'consola';
43
48
  import 'vue-bundle-renderer/runtime';
@@ -529,17 +534,17 @@ const _routes = [
529
534
  {
530
535
  name: "index",
531
536
  path: "/",
532
- component: () => import('./index-5H-nmhph.mjs')
537
+ component: () => import('./index-ycGPozML.mjs')
533
538
  },
534
539
  {
535
540
  name: "integrations-id",
536
541
  path: "/integrations/:id()",
537
- component: () => import('./_id_-Bnxenh08.mjs')
542
+ component: () => import('./_id_-Co8jGxsD.mjs')
538
543
  },
539
544
  {
540
545
  name: "integrations",
541
546
  path: "/integrations",
542
- component: () => import('./index-CL-Gkd-Y.mjs')
547
+ component: () => import('./index-BxsJPthj.mjs')
543
548
  }
544
549
  ];
545
550
  const ROUTE_KEY_PARENTHESES_RE = /(:\w+)\([^)]+\)/g;
@@ -8650,8 +8655,8 @@ const _sfc_main$1 = {
8650
8655
  const statusText = _error.statusMessage ?? (is404 ? "Page Not Found" : "Internal Server Error");
8651
8656
  const description2 = _error.message || _error.toString();
8652
8657
  const stack = void 0;
8653
- const _Error404 = defineAsyncComponent(() => import('./error-404-D2QibUBT.mjs'));
8654
- const _Error = defineAsyncComponent(() => import('./error-500-DYvawybF.mjs'));
8658
+ const _Error404 = defineAsyncComponent(() => import('./error-404-D1k2kWid.mjs'));
8659
+ const _Error = defineAsyncComponent(() => import('./error-500-D2K2rAfl.mjs'));
8655
8660
  const ErrorTemplate = is404 ? _Error404 : _Error;
8656
8661
  return (_ctx, _push, _parent, _attrs) => {
8657
8662
  _push(ssrRenderComponent(unref(ErrorTemplate), mergeProps({ status: unref(status), statusText: unref(statusText), statusCode: unref(status), statusMessage: unref(statusText), description: unref(description2), stack: unref(stack) }, _attrs), null, _parent));
@@ -4,8 +4,8 @@ const styles = {
4
4
  "../../node_modules/nuxt/dist/app/components/error-500.vue": () => import('./error-500-styles.BnYAAXSg.mjs').then(interopDefault),
5
5
  "../../node_modules/nuxt/dist/app/components/error-404.vue?vue&type=style&index=0&scoped=eed6b592&lang.css": () => import('./error-404-styles.Bvxdxqjk.mjs').then(interopDefault),
6
6
  "../../node_modules/nuxt/dist/app/components/error-500.vue?vue&type=style&index=0&scoped=4b5190e7&lang.css": () => import('./error-500-styles.BnYAAXSg.mjs').then(interopDefault),
7
- "components/IntegrationCredentials.vue": () => import('./IntegrationCredentials-styles.CULcCK6_.mjs').then(interopDefault),
8
- "components/IntegrationCredentials.vue?vue&type=style&index=0&scoped=f235dc98&lang.css": () => import('./IntegrationCredentials-styles.CULcCK6_.mjs').then(interopDefault)
7
+ "components/IntegrationCredentials.vue": () => import('./IntegrationCredentials-styles.COcCfJmp.mjs').then(interopDefault),
8
+ "components/IntegrationCredentials.vue?vue&type=style&index=0&scoped=7de84f63&lang.css": () => import('./IntegrationCredentials-styles.COcCfJmp.mjs').then(interopDefault)
9
9
  };
10
10
 
11
11
  export { styles as default };