@commandable/mcp 0.0.7 → 0.1.1

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 (217) hide show
  1. package/README.md +28 -31
  2. package/dist/app/nitro.json +15 -0
  3. package/dist/app/public/_fonts/57NSSoFy1VLVs2gqly8Ls9awBnZMFyXGrefpmqvdqmc-zJfbBtpgM4cDmcXBsqZNW79_kFnlpPd62b48glgdydA.woff2 +0 -0
  4. package/dist/app/public/_fonts/8VR2wSMN-3U4NbWAVYXlkRV6hA0jFBXP-0RtL3X7fko-x2gYI4qfmkRdxyQQUPaBZdZdgl1TeVrquF_TxHeM4lM.woff2 +0 -0
  5. package/dist/app/public/_fonts/GsKUclqeNLJ96g5AU593ug6yanivOiwjW_7zESNPChw-jHA4tBeM1bjF7LATGUpfBuSTyomIFrWBTzjF7txVYfg.woff2 +0 -0
  6. package/dist/app/public/_fonts/Ld1FnTo3yTIwDyGfTQ5-Fws9AWsCbKfMvgxduXr7JcY-W25bL8NF1fjpLRSOgJb7RoZPHqGQNwMTM7S9tHVoxx8.woff2 +0 -0
  7. package/dist/app/public/_fonts/NdzqRASp2bovDUhQT1IRE_EMqKJ2KYQdTCfFcBvL8yw-KhwZiS86o3fErOe5GGMExHUemmI_dBfaEFxjISZrBd0.woff2 +0 -0
  8. package/dist/app/public/_fonts/iTkrULNFJJkTvihIg1Vqi5IODRH_9btXCioVF5l98I8-AndUyau2HR2felA_ra8V2mutQgschhasE5FD1dXGJX8.woff2 +0 -0
  9. package/dist/app/public/_nuxt/-tOYwuj2.js +30 -0
  10. package/dist/app/public/_nuxt/BdctKXor.js +1 -0
  11. package/dist/app/public/_nuxt/BlP7Uu-5.js +1 -0
  12. package/dist/app/public/_nuxt/CsbkV5Bd.js +1 -0
  13. package/dist/app/public/_nuxt/D-43HurL.js +59 -0
  14. package/dist/app/public/_nuxt/DU1mG77A.js +1 -0
  15. package/dist/app/public/_nuxt/_id_.BKAjWkoP.css +1 -0
  16. package/dist/app/public/_nuxt/builds/latest.json +1 -0
  17. package/dist/app/public/_nuxt/builds/meta/7d21a9cf-c8f0-412e-9742-04292ff0d350.json +1 -0
  18. package/dist/app/public/_nuxt/entry.Y3mA4bzA.css +1 -0
  19. package/dist/app/public/_nuxt/error-404.C7fg894-.css +1 -0
  20. package/dist/app/public/_nuxt/error-500.DjUK_N2Y.css +1 -0
  21. package/dist/app/public/_nuxt/uS7FY2am.js +1 -0
  22. package/dist/app/public/favicon.ico +0 -0
  23. package/dist/app/server/chunks/_/error-500.mjs +19 -0
  24. package/dist/app/server/chunks/_/error-500.mjs.map +1 -0
  25. package/dist/app/server/chunks/_/icons.mjs +5933 -0
  26. package/dist/app/server/chunks/_/icons.mjs.map +1 -0
  27. package/dist/app/server/chunks/_/icons2.mjs +11338 -0
  28. package/dist/app/server/chunks/_/icons2.mjs.map +1 -0
  29. package/dist/app/server/chunks/build/IntegrationCredentials-styles.CULcCK6_.mjs +8 -0
  30. package/dist/app/server/chunks/build/IntegrationCredentials-styles.CULcCK6_.mjs.map +1 -0
  31. package/dist/app/server/chunks/build/_id_-DBwSV4AY.mjs +1354 -0
  32. package/dist/app/server/chunks/build/_id_-DBwSV4AY.mjs.map +1 -0
  33. package/dist/app/server/chunks/build/client.precomputed.mjs +4 -0
  34. package/dist/app/server/chunks/build/client.precomputed.mjs.map +1 -0
  35. package/dist/app/server/chunks/build/error-404-D2QibUBT.mjs +121 -0
  36. package/dist/app/server/chunks/build/error-404-D2QibUBT.mjs.map +1 -0
  37. package/dist/app/server/chunks/build/error-404-styles.Bvxdxqjk.mjs +8 -0
  38. package/dist/app/server/chunks/build/error-404-styles.Bvxdxqjk.mjs.map +1 -0
  39. package/dist/app/server/chunks/build/error-500-DYvawybF.mjs +104 -0
  40. package/dist/app/server/chunks/build/error-500-DYvawybF.mjs.map +1 -0
  41. package/dist/app/server/chunks/build/error-500-styles.BnYAAXSg.mjs +8 -0
  42. package/dist/app/server/chunks/build/error-500-styles.BnYAAXSg.mjs.map +1 -0
  43. package/dist/app/server/chunks/build/fetch-ZbqIFhDG.mjs +2851 -0
  44. package/dist/app/server/chunks/build/fetch-ZbqIFhDG.mjs.map +1 -0
  45. package/dist/app/server/chunks/build/index-5H-nmhph.mjs +68 -0
  46. package/dist/app/server/chunks/build/index-5H-nmhph.mjs.map +1 -0
  47. package/dist/app/server/chunks/build/index-C8flTcKI.mjs +720 -0
  48. package/dist/app/server/chunks/build/index-C8flTcKI.mjs.map +1 -0
  49. package/dist/app/server/chunks/build/server.mjs +8736 -0
  50. package/dist/app/server/chunks/build/server.mjs.map +1 -0
  51. package/dist/app/server/chunks/build/styles.mjs +12 -0
  52. package/dist/app/server/chunks/build/styles.mjs.map +1 -0
  53. package/dist/app/server/chunks/nitro/nitro.mjs +9359 -0
  54. package/dist/app/server/chunks/nitro/nitro.mjs.map +1 -0
  55. package/dist/app/server/chunks/routes/api/_commandable/status.get.mjs +59 -0
  56. package/dist/app/server/chunks/routes/api/_commandable/status.get.mjs.map +1 -0
  57. package/dist/app/server/chunks/routes/api/catalog/_type/tools.get.mjs +40 -0
  58. package/dist/app/server/chunks/routes/api/catalog/_type/tools.get.mjs.map +1 -0
  59. package/dist/app/server/chunks/routes/api/catalog/_type/toolsets.get.mjs +41 -0
  60. package/dist/app/server/chunks/routes/api/catalog/_type/toolsets.get.mjs.map +1 -0
  61. package/dist/app/server/chunks/routes/api/catalog.get.mjs +46 -0
  62. package/dist/app/server/chunks/routes/api/catalog.get.mjs.map +1 -0
  63. package/dist/app/server/chunks/routes/api/index.get.mjs +39 -0
  64. package/dist/app/server/chunks/routes/api/index.get.mjs.map +1 -0
  65. package/dist/app/server/chunks/routes/api/index.post.mjs +60 -0
  66. package/dist/app/server/chunks/routes/api/index.post.mjs.map +1 -0
  67. package/dist/app/server/chunks/routes/api/integrations/_id/credentials-config.get.mjs +63 -0
  68. package/dist/app/server/chunks/routes/api/integrations/_id/credentials-config.get.mjs.map +1 -0
  69. package/dist/app/server/chunks/routes/api/integrations/_id/credentials-status.get.mjs +70 -0
  70. package/dist/app/server/chunks/routes/api/integrations/_id/credentials-status.get.mjs.map +1 -0
  71. package/dist/app/server/chunks/routes/api/integrations/_id/credentials.delete.mjs +61 -0
  72. package/dist/app/server/chunks/routes/api/integrations/_id/credentials.delete.mjs.map +1 -0
  73. package/dist/app/server/chunks/routes/api/integrations/_id/credentials.post.mjs +94 -0
  74. package/dist/app/server/chunks/routes/api/integrations/_id/credentials.post.mjs.map +1 -0
  75. package/dist/app/server/chunks/routes/api/integrations/_id/permissions.post.mjs +54 -0
  76. package/dist/app/server/chunks/routes/api/integrations/_id/permissions.post.mjs.map +1 -0
  77. package/dist/app/server/chunks/routes/api/integrations/_id/toolsets.post.mjs +53 -0
  78. package/dist/app/server/chunks/routes/api/integrations/_id/toolsets.post.mjs.map +1 -0
  79. package/dist/app/server/chunks/routes/api/integrations/_id_.delete.mjs +44 -0
  80. package/dist/app/server/chunks/routes/api/integrations/_id_.delete.mjs.map +1 -0
  81. package/dist/app/server/chunks/routes/health.get.mjs +37 -0
  82. package/dist/app/server/chunks/routes/health.get.mjs.map +1 -0
  83. package/dist/app/server/chunks/routes/mcp/create.mjs +56 -0
  84. package/dist/app/server/chunks/routes/mcp/create.mjs.map +1 -0
  85. package/dist/app/server/chunks/routes/mcp.mjs +56 -0
  86. package/dist/app/server/chunks/routes/mcp.mjs.map +1 -0
  87. package/dist/app/server/chunks/routes/renderer.mjs +492 -0
  88. package/dist/app/server/chunks/routes/renderer.mjs.map +1 -0
  89. package/dist/app/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
  90. package/dist/app/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
  91. package/dist/app/server/index.mjs +31 -0
  92. package/dist/app/server/index.mjs.map +1 -0
  93. package/dist/app/server/migrations/pg/0000_initial.sql +74 -0
  94. package/dist/app/server/migrations/pg/meta/_journal.json +13 -0
  95. package/dist/app/server/migrations/sqlite/0000_initial.sql +74 -0
  96. package/dist/app/server/migrations/sqlite/meta/_journal.json +13 -0
  97. package/dist/app/server/package.json +108 -0
  98. package/dist/cli/credentialManager.d.ts.map +1 -1
  99. package/dist/cli/credentialManager.js +5 -4
  100. package/dist/cli/credentialManager.js.map +1 -1
  101. package/dist/cli/index.d.ts +15 -0
  102. package/dist/cli/index.d.ts.map +1 -1
  103. package/dist/cli/index.js +679 -17
  104. package/dist/cli/index.js.map +1 -1
  105. package/dist/cli/setup.d.ts.map +1 -1
  106. package/dist/cli/setup.js +124 -33
  107. package/dist/cli/setup.js.map +1 -1
  108. package/dist/config/configApply.js +1 -1
  109. package/dist/config/configApply.js.map +1 -1
  110. package/dist/config/configSchema.d.ts +6 -2
  111. package/dist/config/configSchema.d.ts.map +1 -1
  112. package/dist/config/configSchema.js +2 -1
  113. package/dist/config/configSchema.js.map +1 -1
  114. package/dist/db/client.d.ts +3 -1
  115. package/dist/db/client.d.ts.map +1 -1
  116. package/dist/db/client.js.map +1 -1
  117. package/dist/db/credentialStore.d.ts +2 -0
  118. package/dist/db/credentialStore.d.ts.map +1 -1
  119. package/dist/db/credentialStore.js +15 -16
  120. package/dist/db/credentialStore.js.map +1 -1
  121. package/dist/db/integrationStore.d.ts +7 -0
  122. package/dist/db/integrationStore.d.ts.map +1 -1
  123. package/dist/db/integrationStore.js +61 -31
  124. package/dist/db/integrationStore.js.map +1 -1
  125. package/dist/db/integrationTypeConfigStore.d.ts +6 -0
  126. package/dist/db/integrationTypeConfigStore.d.ts.map +1 -0
  127. package/dist/db/integrationTypeConfigStore.js +94 -0
  128. package/dist/db/integrationTypeConfigStore.js.map +1 -0
  129. package/dist/db/migrate.d.ts.map +1 -1
  130. package/dist/db/migrate.js +8 -109
  131. package/dist/db/migrate.js.map +1 -1
  132. package/dist/db/migrations/pg/0000_initial.sql +74 -0
  133. package/dist/db/migrations/pg/meta/_journal.json +13 -0
  134. package/dist/db/migrations/sqlite/0000_initial.sql +74 -0
  135. package/dist/db/migrations/sqlite/meta/_journal.json +13 -0
  136. package/dist/db/schema.d.ts +961 -153
  137. package/dist/db/schema.d.ts.map +1 -1
  138. package/dist/db/schema.js +55 -3
  139. package/dist/db/schema.js.map +1 -1
  140. package/dist/db/toolDefinitionStore.d.ts +6 -0
  141. package/dist/db/toolDefinitionStore.d.ts.map +1 -0
  142. package/dist/db/toolDefinitionStore.js +95 -0
  143. package/dist/db/toolDefinitionStore.js.map +1 -0
  144. package/dist/index.d.ts +7 -0
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +7 -0
  147. package/dist/index.js.map +1 -1
  148. package/dist/integrations/actionsFactory.d.ts +5 -1
  149. package/dist/integrations/actionsFactory.d.ts.map +1 -1
  150. package/dist/integrations/actionsFactory.js +37 -14
  151. package/dist/integrations/actionsFactory.js.map +1 -1
  152. package/dist/integrations/customToolFactory.d.ts +13 -0
  153. package/dist/integrations/customToolFactory.d.ts.map +1 -0
  154. package/dist/integrations/customToolFactory.js +31 -0
  155. package/dist/integrations/customToolFactory.js.map +1 -0
  156. package/dist/integrations/dataLoader.d.ts +2 -2
  157. package/dist/integrations/dataLoader.d.ts.map +1 -1
  158. package/dist/integrations/dataLoader.js +1 -1
  159. package/dist/integrations/dataLoader.js.map +1 -1
  160. package/dist/integrations/fileIntegrationTypeConfigStore.d.ts +7 -0
  161. package/dist/integrations/fileIntegrationTypeConfigStore.d.ts.map +1 -0
  162. package/dist/integrations/fileIntegrationTypeConfigStore.js +34 -0
  163. package/dist/integrations/fileIntegrationTypeConfigStore.js.map +1 -0
  164. package/dist/integrations/getIntegration.d.ts +4 -1
  165. package/dist/integrations/getIntegration.d.ts.map +1 -1
  166. package/dist/integrations/getIntegration.js +12 -4
  167. package/dist/integrations/getIntegration.js.map +1 -1
  168. package/dist/integrations/health.d.ts +20 -0
  169. package/dist/integrations/health.d.ts.map +1 -0
  170. package/dist/integrations/health.js +43 -0
  171. package/dist/integrations/health.js.map +1 -0
  172. package/dist/integrations/integrationTypeConfigLookup.d.ts +12 -0
  173. package/dist/integrations/integrationTypeConfigLookup.d.ts.map +1 -0
  174. package/dist/integrations/integrationTypeConfigLookup.js +11 -0
  175. package/dist/integrations/integrationTypeConfigLookup.js.map +1 -0
  176. package/dist/integrations/providerRegistry.d.ts.map +1 -1
  177. package/dist/integrations/providerRegistry.js +0 -4
  178. package/dist/integrations/providerRegistry.js.map +1 -1
  179. package/dist/integrations/proxy.d.ts +4 -1
  180. package/dist/integrations/proxy.d.ts.map +1 -1
  181. package/dist/integrations/proxy.js +94 -106
  182. package/dist/integrations/proxy.js.map +1 -1
  183. package/dist/integrations/sandbox.js +11 -1
  184. package/dist/integrations/sandbox.js.map +1 -1
  185. package/dist/mcp/abilityCatalog.d.ts +46 -0
  186. package/dist/mcp/abilityCatalog.d.ts.map +1 -0
  187. package/dist/mcp/abilityCatalog.js +275 -0
  188. package/dist/mcp/abilityCatalog.js.map +1 -0
  189. package/dist/mcp/builder_guide.md +441 -0
  190. package/dist/mcp/commandable_readme.md +29 -0
  191. package/dist/mcp/handlers.d.ts +10 -1
  192. package/dist/mcp/handlers.d.ts.map +1 -1
  193. package/dist/mcp/handlers.js +51 -4
  194. package/dist/mcp/handlers.js.map +1 -1
  195. package/dist/mcp/metaTools.d.ts +77 -0
  196. package/dist/mcp/metaTools.d.ts.map +1 -0
  197. package/dist/mcp/metaTools.js +753 -0
  198. package/dist/mcp/metaTools.js.map +1 -0
  199. package/dist/mcp/server.d.ts +10 -0
  200. package/dist/mcp/server.d.ts.map +1 -1
  201. package/dist/mcp/server.js +2 -2
  202. package/dist/mcp/server.js.map +1 -1
  203. package/dist/mcp/sessionState.d.ts +18 -0
  204. package/dist/mcp/sessionState.d.ts.map +1 -0
  205. package/dist/mcp/sessionState.js +65 -0
  206. package/dist/mcp/sessionState.js.map +1 -0
  207. package/dist/mcp/toolAdapter.d.ts +17 -0
  208. package/dist/mcp/toolAdapter.d.ts.map +1 -1
  209. package/dist/mcp/toolAdapter.js +7 -1
  210. package/dist/mcp/toolAdapter.js.map +1 -1
  211. package/dist/types.d.ts +61 -2
  212. package/dist/types.d.ts.map +1 -1
  213. package/dist/version.d.ts +2 -0
  214. package/dist/version.d.ts.map +1 -0
  215. package/dist/version.js +7 -0
  216. package/dist/version.js.map +1 -0
  217. package/package.json +8 -6
@@ -1 +1 @@
1
- {"version":3,"file":"credentialStore.js","sourceRoot":"","sources":["../../src/db/credentialStore.ts"],"names":[],"mappings":"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"}
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,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe,EAAE,YAAoB,EAAE,WAAmC;QAC9F,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACpF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;QAE3B,MAAM,IAAI,CAAC,GAAG,EAAE;aACb,MAAM,CAAC,KAAK,CAAC;aACb,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;aACjF,kBAAkB,CAAC;YAClB,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACjC,GAAG,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE;SACpC,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,YAAoB;QACxD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;QACrD,IAAI,CAAC,GAAG,EAAE,UAAU;YAClB,OAAO,IAAI,CAAA;QACb,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACpC,OAAO,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/D,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAe,EAAE,YAAoB;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;QAC3B,MAAM,IAAI,CAAC,GAAG,EAAE;aACb,MAAM,CAAC,KAAK,CAAC;aACb,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;IACvE,CAAC;IAEO,MAAM;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAA;IAC7E,CAAC;IAEO,GAAG;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,YAAoB;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;QAC3B,MAAM,IAAI,GAAU,MAAM,IAAI,CAAC,GAAG,EAAE;aACjC,MAAM,EAAE;aACR,IAAI,CAAC,KAAK,CAAC;aACX,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;aAClE,KAAK,CAAC,CAAC,CAAC,CAAA;QACX,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACxB,CAAC;CACF"}
@@ -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;AAG3C,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAqCrG;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CrG"}
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,48 +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.dialect === 'sqlite' ? sqliteIntegrations : pgIntegrations;
5
- let query = client.db.select().from(table);
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 cfg = client.dialect === 'sqlite'
11
- ? (r.configJson ? JSON.parse(r.configJson) : undefined)
12
- : (r.configJson ?? undefined);
13
- const enabledToolsets = r.enabledToolsets ? JSON.parse(r.enabledToolsets) : undefined;
14
- const disabledTools = r.disabledTools ? JSON.parse(r.disabledTools) : undefined;
15
- const createdAt = client.dialect === 'sqlite'
16
- ? (r.createdAt ? new Date(r.createdAt) : undefined)
17
- : (r.createdAt ?? undefined);
18
- void createdAt;
19
- const integ = {
30
+ const healthCheckedAt = r.healthCheckedAt
31
+ ? (r.healthCheckedAt instanceof Date ? r.healthCheckedAt : new Date(r.healthCheckedAt))
32
+ : null;
33
+ return {
20
34
  id: r.id,
21
35
  spaceId: r.spaceId ?? undefined,
22
36
  type: r.type,
23
37
  referenceId: r.referenceId,
24
38
  label: r.label,
39
+ enabled: r.enabled === 0 ? false : true,
25
40
  connectionMethod: r.connectionMethod ?? undefined,
26
41
  connectionId: r.connectionId ?? undefined,
27
42
  credentialId: r.credentialId ?? undefined,
28
43
  credentialVariant: r.credentialVariant ?? undefined,
29
- config: cfg,
30
- enabledToolsets,
44
+ enabledToolsets: parseJson(r.enabledToolsets),
31
45
  maxScope: r.maxScope ?? undefined,
32
- disabledTools,
46
+ disabledTools: parseJson(r.disabledTools),
47
+ healthStatus: r.healthStatus ?? null,
48
+ healthCheckedAt,
33
49
  };
34
- return integ;
35
50
  });
36
51
  }
37
52
  export async function upsertIntegration(client, integration) {
38
- const table = client.dialect === 'sqlite' ? sqliteIntegrations : pgIntegrations;
53
+ const table = t(client);
39
54
  const now = new Date();
40
- const configValue = client.dialect === 'sqlite'
41
- ? (integration.config ? JSON.stringify(integration.config) : null)
42
- : (integration.config ?? null);
43
- const enabledToolsetsValue = integration.enabledToolsets ? JSON.stringify(integration.enabledToolsets) : null;
44
- const disabledToolsValue = integration.disabledTools?.length ? JSON.stringify(integration.disabledTools) : null;
45
- await client.db
55
+ const enabled = integration.enabled === false ? 0 : 1;
56
+ await db(client)
46
57
  .insert(table)
47
58
  .values({
48
59
  id: integration.id,
@@ -50,15 +61,15 @@ export async function upsertIntegration(client, integration) {
50
61
  type: integration.type,
51
62
  referenceId: integration.referenceId,
52
63
  label: integration.label,
64
+ enabled,
53
65
  connectionMethod: integration.connectionMethod ?? null,
54
66
  connectionId: integration.connectionId ?? null,
55
67
  credentialId: integration.credentialId ?? null,
56
68
  credentialVariant: integration.credentialVariant ?? null,
57
- configJson: configValue,
58
- enabledToolsets: enabledToolsetsValue,
69
+ enabledToolsets: integration.enabledToolsets ? JSON.stringify(integration.enabledToolsets) : null,
59
70
  maxScope: integration.maxScope ?? null,
60
- disabledTools: disabledToolsValue,
61
- createdAt: client.dialect === 'sqlite' ? now : now,
71
+ disabledTools: integration.disabledTools?.length ? JSON.stringify(integration.disabledTools) : null,
72
+ createdAt: now,
62
73
  })
63
74
  .onConflictDoUpdate({
64
75
  target: table.id,
@@ -67,15 +78,34 @@ export async function upsertIntegration(client, integration) {
67
78
  type: integration.type,
68
79
  referenceId: integration.referenceId,
69
80
  label: integration.label,
81
+ enabled,
70
82
  connectionMethod: integration.connectionMethod ?? null,
71
83
  connectionId: integration.connectionId ?? null,
72
84
  credentialId: integration.credentialId ?? null,
73
85
  credentialVariant: integration.credentialVariant ?? null,
74
- configJson: configValue,
75
- enabledToolsets: enabledToolsetsValue,
86
+ enabledToolsets: integration.enabledToolsets ? JSON.stringify(integration.enabledToolsets) : null,
76
87
  maxScope: integration.maxScope ?? null,
77
- disabledTools: disabledToolsValue,
88
+ disabledTools: integration.disabledTools?.length ? JSON.stringify(integration.disabledTools) : null,
78
89
  },
79
90
  });
80
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
+ }
81
111
  //# sourceMappingURL=integrationStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"integrationStore.js","sourceRoot":"","sources":["../../src/db/integrationStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrationStore.js","sourceRoot":"","sources":["../../src/db/integrationStore.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,wBAAsB,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAwHlE"}
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"}
@@ -1,112 +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
- if (client.dialect === 'sqlite') {
3
- client.raw.exec(`
4
- CREATE TABLE IF NOT EXISTS integrations (
5
- id TEXT PRIMARY KEY NOT NULL,
6
- space_id TEXT,
7
- type TEXT NOT NULL,
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
- enabled_toolsets TEXT,
16
- max_scope TEXT,
17
- disabled_tools TEXT,
18
- created_at INTEGER NOT NULL
19
- );
20
- `);
21
- // Migrate existing databases that predate the max_scope / disabled_tools columns.
22
- // SQLite does not support IF NOT EXISTS on ALTER TABLE ADD COLUMN, so we check the
23
- // column list first and only add if missing.
24
- const integrationCols = client.raw.prepare('PRAGMA table_info(integrations)').all();
25
- const colNames = new Set(integrationCols.map((c) => c.name));
26
- if (!colNames.has('max_scope'))
27
- client.raw.exec('ALTER TABLE integrations ADD COLUMN max_scope TEXT;');
28
- if (!colNames.has('disabled_tools'))
29
- client.raw.exec('ALTER TABLE integrations ADD COLUMN disabled_tools TEXT;');
30
- client.raw.exec(`
31
- CREATE TABLE IF NOT EXISTS credentials (
32
- space_id TEXT NOT NULL,
33
- id TEXT NOT NULL,
34
- ciphertext TEXT NOT NULL,
35
- created_at INTEGER NOT NULL,
36
- updated_at INTEGER NOT NULL,
37
- PRIMARY KEY (space_id, id)
38
- );
39
- `);
40
- client.raw.exec(`
41
- CREATE TABLE IF NOT EXISTS api_keys (
42
- id TEXT PRIMARY KEY NOT NULL,
43
- name TEXT NOT NULL,
44
- key_hash TEXT NOT NULL,
45
- scopes_json TEXT,
46
- created_at INTEGER NOT NULL
47
- );
48
- `);
49
- client.raw.exec(`
50
- CREATE TABLE IF NOT EXISTS users (
51
- id TEXT PRIMARY KEY NOT NULL,
52
- email TEXT NOT NULL,
53
- password_hash TEXT,
54
- created_at INTEGER NOT NULL
55
- );
56
- `);
57
- return;
58
- }
59
- await client.raw.query(`
60
- CREATE TABLE IF NOT EXISTS integrations (
61
- id TEXT PRIMARY KEY,
62
- space_id TEXT,
63
- type TEXT NOT NULL,
64
- reference_id TEXT NOT NULL,
65
- label TEXT NOT NULL,
66
- connection_method TEXT,
67
- connection_id TEXT,
68
- credential_id TEXT,
69
- credential_variant TEXT,
70
- config_json JSONB,
71
- enabled_toolsets TEXT,
72
- max_scope TEXT,
73
- disabled_tools TEXT,
74
- created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
75
- );
76
- `);
77
- // Migrate existing Postgres databases that predate the max_scope / disabled_tools columns.
78
- await client.raw.query(`
79
- ALTER TABLE integrations ADD COLUMN IF NOT EXISTS max_scope TEXT;
80
- `);
81
- await client.raw.query(`
82
- ALTER TABLE integrations ADD COLUMN IF NOT EXISTS disabled_tools TEXT;
83
- `);
84
- await client.raw.query(`
85
- CREATE TABLE IF NOT EXISTS credentials (
86
- space_id TEXT NOT NULL,
87
- id TEXT NOT NULL,
88
- ciphertext TEXT NOT NULL,
89
- created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
90
- updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
91
- PRIMARY KEY (space_id, id)
92
- );
93
- `);
94
- await client.raw.query(`
95
- CREATE TABLE IF NOT EXISTS api_keys (
96
- id TEXT PRIMARY KEY,
97
- name TEXT NOT NULL,
98
- key_hash TEXT NOT NULL,
99
- scopes_json JSONB,
100
- created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
101
- );
102
- `);
103
- await client.raw.query(`
104
- CREATE TABLE IF NOT EXISTS users (
105
- id TEXT PRIMARY KEY,
106
- email TEXT NOT NULL,
107
- password_hash TEXT,
108
- created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
109
- );
110
- `);
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 });
111
10
  }
112
11
  //# sourceMappingURL=migrate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAgB;IACjD,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;KAiBf,CAAC,CAAA;QAEF,kFAAkF;QAClF,mFAAmF;QACnF,6CAA6C;QAC7C,MAAM,eAAe,GAA4B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,GAAG,EAAS,CAAA;QACnH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAA;QACxE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;QAE7E,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;;;;;;;;KASf,CAAC,CAAA;QAEF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;;;;;;;KAQf,CAAC,CAAA;QAEF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;;;;;;KAOf,CAAC,CAAA;QAEF,OAAM;IACR,CAAC;IAED,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;GAiBtB,CAAC,CAAA;IAEF,2FAA2F;IAC3F,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;GAEtB,CAAC,CAAA;IACF,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;GAEtB,CAAC,CAAA;IAEF,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;;;;;;;;GAStB,CAAC,CAAA;IAEF,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;;;;;;;GAQtB,CAAC,CAAA;IAEF,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;;;;;;GAOtB,CAAC,CAAA;AACJ,CAAC"}
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,13 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "postgresql",
4
+ "entries": [
5
+ {
6
+ "idx": 0,
7
+ "version": "7",
8
+ "when": 1741000000000,
9
+ "tag": "0000_initial",
10
+ "breakpoints": true
11
+ }
12
+ ]
13
+ }
@@ -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`);
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "sqlite",
4
+ "entries": [
5
+ {
6
+ "idx": 0,
7
+ "version": "7",
8
+ "when": 1741000000000,
9
+ "tag": "0000_initial",
10
+ "breakpoints": true
11
+ }
12
+ ]
13
+ }