integrate-sdk 0.8.39 → 0.8.42-dev.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 (57) hide show
  1. package/dist/adapters/auto-routes.js +1471 -60
  2. package/dist/adapters/index.js +1471 -60
  3. package/dist/adapters/nextjs.js +1471 -60
  4. package/dist/adapters/node.js +1471 -60
  5. package/dist/adapters/svelte-kit.js +1471 -60
  6. package/dist/adapters/tanstack-start.js +1471 -60
  7. package/dist/ai/anthropic.d.ts.map +1 -1
  8. package/dist/ai/anthropic.js +5 -21
  9. package/dist/ai/google.d.ts.map +1 -1
  10. package/dist/ai/google.js +57 -18
  11. package/dist/ai/index.js +67 -60
  12. package/dist/ai/openai.d.ts.map +1 -1
  13. package/dist/ai/openai.js +5 -21
  14. package/dist/index.js +1471 -60
  15. package/dist/oauth.js +1471 -60
  16. package/dist/server.js +1471 -60
  17. package/dist/src/ai/anthropic.d.ts.map +1 -1
  18. package/dist/src/ai/google.d.ts.map +1 -1
  19. package/dist/src/ai/openai.d.ts.map +1 -1
  20. package/package.json +6 -5
  21. package/dist/adapters/base-handler.js +0 -561
  22. package/dist/ai/cloudflare.d.ts +0 -158
  23. package/dist/ai/cloudflare.d.ts.map +0 -1
  24. package/dist/ai/cloudflare.js +0 -4249
  25. package/dist/ai/langchain.d.ts +0 -139
  26. package/dist/ai/langchain.d.ts.map +0 -1
  27. package/dist/ai/langchain.js +0 -4237
  28. package/dist/ai/llamaindex.d.ts +0 -125
  29. package/dist/ai/llamaindex.d.ts.map +0 -1
  30. package/dist/ai/llamaindex.js +0 -4236
  31. package/dist/ai/mastra.d.ts +0 -138
  32. package/dist/ai/mastra.d.ts.map +0 -1
  33. package/dist/ai/mastra.js +0 -4240
  34. package/dist/src/ai/cloudflare.d.ts +0 -158
  35. package/dist/src/ai/cloudflare.d.ts.map +0 -1
  36. package/dist/src/ai/langchain.d.ts +0 -139
  37. package/dist/src/ai/langchain.d.ts.map +0 -1
  38. package/dist/src/ai/llamaindex.d.ts +0 -125
  39. package/dist/src/ai/llamaindex.d.ts.map +0 -1
  40. package/dist/src/ai/mastra.d.ts +0 -138
  41. package/dist/src/ai/mastra.d.ts.map +0 -1
  42. package/dist/src/integrations/vercel-ai.d.ts +0 -127
  43. package/dist/src/integrations/vercel-ai.d.ts.map +0 -1
  44. package/dist/src/plugins/generic.d.ts +0 -99
  45. package/dist/src/plugins/generic.d.ts.map +0 -1
  46. package/dist/src/plugins/github-client.d.ts +0 -320
  47. package/dist/src/plugins/github-client.d.ts.map +0 -1
  48. package/dist/src/plugins/github.d.ts +0 -89
  49. package/dist/src/plugins/github.d.ts.map +0 -1
  50. package/dist/src/plugins/gmail-client.d.ts +0 -106
  51. package/dist/src/plugins/gmail-client.d.ts.map +0 -1
  52. package/dist/src/plugins/gmail.d.ts +0 -87
  53. package/dist/src/plugins/gmail.d.ts.map +0 -1
  54. package/dist/src/plugins/server-client.d.ts +0 -18
  55. package/dist/src/plugins/server-client.d.ts.map +0 -1
  56. package/dist/src/plugins/types.d.ts +0 -70
  57. package/dist/src/plugins/types.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/ai/anthropic.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAkE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjH,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAE/C;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,kDAAkD;IAClD,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2HD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,aAAa,EAAE,CAAC,CAqC1B;AAgCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACpG,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAkC5I"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/ai/anthropic.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAkE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjH,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAE/C;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,kDAAkD;IAClD,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2HD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,aAAa,EAAE,CAAC,CAwC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACpG,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAkC5I"}
@@ -1 +1 @@
1
- {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/ai/google.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAkE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjH,OAAO,KAAK,EACV,MAAM,EACN,mBAAmB,EACnB,YAAY,EACZ,IAAI,EACL,MAAM,eAAe,CAAC;AAGvB,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAC7C,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAC9C,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAuB7B;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,kDAAkD;IAClD,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAsGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,aAAa,EAAE,kBAAkB,EAAE,GAAG,SAAS,GAAG,IAAI,EACtD,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CA2CnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,UAAU,EAAE,CAAC,CAwCvB"}
1
+ {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/ai/google.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAkE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjH,OAAO,KAAK,EACV,MAAM,EACN,mBAAmB,EACnB,YAAY,EACZ,IAAI,EACL,MAAM,eAAe,CAAC;AAGvB,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAC7C,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAC9C,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAuB7B;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,kDAAkD;IAClD,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAsGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,aAAa,EAAE,kBAAkB,EAAE,GAAG,SAAS,GAAG,IAAI,EACtD,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CA2CnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,UAAU,EAAE,CAAC,CA8CvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/ai/openai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAkE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE;QACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,GAAG,IAAI,CAAC;IACT,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAiCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,UAAU,EAAE,CAAC,CAuCvB;AAsHD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE;IAAE,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAA;CAAE,EAChE,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAyB3H"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/ai/openai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAkE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE;QACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,GAAG,IAAI,CAAC;IACT,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAiCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,UAAU,EAAE,CAAC,CA0CvB;AAwFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE;IAAE,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAA;CAAE,EAChE,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAyB3H"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "integrate-sdk",
3
- "version": "0.8.39",
3
+ "version": "0.8.42-dev.0",
4
4
  "description": "Type-safe 3rd party integration SDK for the Integrate MCP server",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -61,8 +61,8 @@
61
61
  "build": "bun run build:client && bun run build:server && bun run build:adapters && bun run build:ai && bun run build:types && bun run build:copy-types",
62
62
  "build:client": "bun build index.ts react.ts --outdir dist --target browser --format esm --external react",
63
63
  "build:server": "bun build server.ts oauth.ts --outdir dist --target node --format esm --external @google/genai --external @anthropic-ai/sdk --external openai --external ai --external @openai/agents",
64
- "build:adapters": "cd src/adapters && bun build *.ts --outdir ../../dist/adapters --target node --format esm && cd ../..",
65
- "build:ai": "cd src/ai && bun build *.ts --outdir ../../dist/ai --target node --format esm --external @google/genai --external @anthropic-ai/sdk --external openai --external ai --external @openai/agents && cd ../..",
64
+ "build:adapters": "cd src/adapters && bun build auto-routes.ts base-handler.ts context-cookie.ts index.ts nextjs-oauth-redirect.ts nextjs.ts node.ts session-detector.ts solid-start.ts svelte-kit.ts tanstack-start.ts --outdir ../../dist/adapters --target node --format esm && cd ../..",
65
+ "build:ai": "cd src/ai && bun build anthropic.ts google.ts index.ts openai.ts trigger-tools.ts utils.ts vercel-ai.ts --outdir ../../dist/ai --target node --format esm --external @google/genai --external @anthropic-ai/sdk --external openai --external ai --external @openai/agents --external zod-to-json-schema && cd ../..",
66
66
  "build:types": "tsc --emitDeclarationOnly --declaration --declarationMap",
67
67
  "build:copy-types": "cp dist/src/ai/*.d.ts dist/ai/ && cp dist/src/ai/*.d.ts.map dist/ai/ && cp dist/src/adapters/*.d.ts dist/adapters/ && cp dist/src/adapters/*.d.ts.map dist/adapters/",
68
68
  "dev": "bun --watch src/index.ts",
@@ -85,7 +85,8 @@
85
85
  "license": "MIT",
86
86
  "dependencies": {
87
87
  "nanoid": "^3.3.7",
88
- "zod": "^3.23.8"
88
+ "zod": "^3.23.8",
89
+ "zod-to-json-schema": "^3.25.1"
89
90
  },
90
91
  "devDependencies": {
91
92
  "@types/bun": "latest",
@@ -125,4 +126,4 @@
125
126
  "simple-git-hooks": {
126
127
  "pre-commit": "./scripts/check-version.sh"
127
128
  }
128
- }
129
+ }
@@ -1,561 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, {
5
- get: all[name],
6
- enumerable: true,
7
- configurable: true,
8
- set: (newValue) => all[name] = () => newValue
9
- });
10
- };
11
- var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
12
-
13
- // session-detector.ts
14
- var exports_session_detector = {};
15
- __export(exports_session_detector, {
16
- tryDecodeJWT: () => tryDecodeJWT,
17
- detectSessionContext: () => detectSessionContext
18
- });
19
- function tryDecodeJWT(token) {
20
- try {
21
- const parts = token.split(".");
22
- if (parts.length !== 3) {
23
- return;
24
- }
25
- const payloadPart = parts[1];
26
- if (!payloadPart) {
27
- return;
28
- }
29
- const base64 = payloadPart.replace(/-/g, "+").replace(/_/g, "/");
30
- const jsonPayload = decodeURIComponent(atob(base64).split("").map((c) => "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2)).join(""));
31
- return JSON.parse(jsonPayload);
32
- } catch (error) {
33
- return;
34
- }
35
- }
36
- function getCookies(request) {
37
- const cookies = new Map;
38
- const cookieHeader = request.headers.get("cookie");
39
- if (!cookieHeader) {
40
- return cookies;
41
- }
42
- const pairs = cookieHeader.split(";");
43
- for (const pair of pairs) {
44
- const [name, ...valueParts] = pair.split("=");
45
- if (name && valueParts.length > 0) {
46
- const trimmedName = name.trim();
47
- const value = valueParts.join("=").trim();
48
- cookies.set(trimmedName, value);
49
- }
50
- }
51
- return cookies;
52
- }
53
- function tryBetterAuth(cookies) {
54
- const sessionToken = cookies.get("better-auth.session_token");
55
- if (!sessionToken) {
56
- return;
57
- }
58
- const payload = tryDecodeJWT(sessionToken);
59
- if (!payload) {
60
- return;
61
- }
62
- const userId = payload.sub || payload.userId || payload.user_id || payload.id;
63
- if (!userId) {
64
- return;
65
- }
66
- return {
67
- userId,
68
- sessionId: payload.jti || payload.sessionId
69
- };
70
- }
71
- function tryNextAuth(cookies) {
72
- const sessionToken = cookies.get("__Secure-next-auth.session-token") || cookies.get("next-auth.session-token");
73
- if (!sessionToken) {
74
- return;
75
- }
76
- if (sessionToken.includes(".")) {
77
- const payload = tryDecodeJWT(sessionToken);
78
- if (payload) {
79
- return {
80
- userId: payload.sub || payload.userId || payload.user_id || payload.id,
81
- sessionId: payload.jti
82
- };
83
- }
84
- }
85
- return;
86
- }
87
- function tryClerk(cookies) {
88
- const sessionToken = cookies.get("__session");
89
- if (!sessionToken) {
90
- return;
91
- }
92
- const payload = tryDecodeJWT(sessionToken);
93
- if (!payload) {
94
- return;
95
- }
96
- return {
97
- userId: payload.sub || payload.userId,
98
- organizationId: payload.org_id || payload.organizationId,
99
- sessionId: payload.sid || payload.sessionId
100
- };
101
- }
102
- function tryLucia(cookies) {
103
- const sessionToken = cookies.get("lucia_session");
104
- if (!sessionToken) {
105
- return;
106
- }
107
- return {
108
- sessionId: sessionToken
109
- };
110
- }
111
- function tryGenericSession(cookies) {
112
- const sessionToken = cookies.get("auth_session") || cookies.get("session");
113
- if (!sessionToken) {
114
- return;
115
- }
116
- if (sessionToken.includes(".")) {
117
- const payload = tryDecodeJWT(sessionToken);
118
- if (payload) {
119
- return {
120
- userId: payload.sub || payload.userId || payload.user_id || payload.id,
121
- sessionId: payload.jti || payload.sessionId || payload.sid
122
- };
123
- }
124
- }
125
- return {
126
- sessionId: sessionToken
127
- };
128
- }
129
- async function detectSessionContext(request) {
130
- const cookies = getCookies(request);
131
- let context;
132
- context = tryBetterAuth(cookies);
133
- if (context?.userId) {
134
- return context;
135
- }
136
- context = tryNextAuth(cookies);
137
- if (context?.userId) {
138
- return context;
139
- }
140
- context = tryClerk(cookies);
141
- if (context?.userId) {
142
- return context;
143
- }
144
- context = tryLucia(cookies);
145
- if (context?.userId) {
146
- return context;
147
- }
148
- context = tryGenericSession(cookies);
149
- if (context?.userId) {
150
- return context;
151
- }
152
- return;
153
- }
154
-
155
- // context-cookie.ts
156
- var exports_context_cookie = {};
157
- __export(exports_context_cookie, {
158
- readContextCookie: () => readContextCookie,
159
- getSetCookieHeader: () => getSetCookieHeader,
160
- getContextCookieFromRequest: () => getContextCookieFromRequest,
161
- getClearCookieHeader: () => getClearCookieHeader,
162
- createContextCookie: () => createContextCookie,
163
- CONTEXT_COOKIE_NAME: () => CONTEXT_COOKIE_NAME,
164
- CONTEXT_COOKIE_MAX_AGE: () => CONTEXT_COOKIE_MAX_AGE
165
- });
166
- async function deriveKey(secret) {
167
- const encoder = new TextEncoder;
168
- const secretData = encoder.encode(secret);
169
- const keyMaterial = await crypto.subtle.importKey("raw", secretData, { name: "PBKDF2" }, false, ["deriveBits", "deriveKey"]);
170
- const salt = encoder.encode("integrate-oauth-context-v1");
171
- return await crypto.subtle.deriveKey({
172
- name: "PBKDF2",
173
- salt,
174
- iterations: 1e5,
175
- hash: "SHA-256"
176
- }, keyMaterial, { name: "AES-GCM", length: 256 }, false, ["encrypt", "decrypt"]);
177
- }
178
- async function encryptPayload(payload, secret) {
179
- const key = await deriveKey(secret);
180
- const iv = crypto.getRandomValues(new Uint8Array(12));
181
- const encoder = new TextEncoder;
182
- const data = encoder.encode(JSON.stringify(payload));
183
- const encrypted = await crypto.subtle.encrypt({
184
- name: "AES-GCM",
185
- iv
186
- }, key, data);
187
- const combined = new Uint8Array(iv.length + encrypted.byteLength);
188
- combined.set(iv, 0);
189
- combined.set(new Uint8Array(encrypted), iv.length);
190
- return base64UrlEncode(combined);
191
- }
192
- async function decryptPayload(cookieValue, secret) {
193
- try {
194
- const combined = base64UrlDecode(cookieValue);
195
- const iv = combined.slice(0, 12);
196
- const encrypted = combined.slice(12);
197
- const key = await deriveKey(secret);
198
- const decrypted = await crypto.subtle.decrypt({
199
- name: "AES-GCM",
200
- iv
201
- }, key, encrypted);
202
- const decoder = new TextDecoder;
203
- const json = decoder.decode(decrypted);
204
- const payload = JSON.parse(json);
205
- const age = Date.now() - payload.timestamp;
206
- if (age > CONTEXT_COOKIE_MAX_AGE * 1000) {
207
- return;
208
- }
209
- return payload;
210
- } catch (error) {
211
- return;
212
- }
213
- }
214
- function base64UrlEncode(data) {
215
- const base64 = btoa(String.fromCharCode(...data));
216
- return base64.replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
217
- }
218
- function base64UrlDecode(str) {
219
- let base64 = str.replace(/-/g, "+").replace(/_/g, "/");
220
- const padding = base64.length % 4;
221
- if (padding) {
222
- base64 += "=".repeat(4 - padding);
223
- }
224
- const binary = atob(base64);
225
- const bytes = new Uint8Array(binary.length);
226
- for (let i = 0;i < binary.length; i++) {
227
- bytes[i] = binary.charCodeAt(i);
228
- }
229
- return bytes;
230
- }
231
- async function createContextCookie(context, provider, secret) {
232
- const payload = {
233
- context,
234
- provider,
235
- timestamp: Date.now()
236
- };
237
- return await encryptPayload(payload, secret);
238
- }
239
- async function readContextCookie(cookieValue, secret) {
240
- const payload = await decryptPayload(cookieValue, secret);
241
- if (!payload) {
242
- return;
243
- }
244
- return {
245
- context: payload.context,
246
- provider: payload.provider
247
- };
248
- }
249
- function getSetCookieHeader(cookieValue, maxAge = CONTEXT_COOKIE_MAX_AGE) {
250
- const attributes = [
251
- `${CONTEXT_COOKIE_NAME}=${cookieValue}`,
252
- `Max-Age=${maxAge}`,
253
- "HttpOnly",
254
- "Secure",
255
- "SameSite=Lax",
256
- "Path=/"
257
- ];
258
- return attributes.join("; ");
259
- }
260
- function getClearCookieHeader() {
261
- const attributes = [
262
- `${CONTEXT_COOKIE_NAME}=`,
263
- "Max-Age=0",
264
- "HttpOnly",
265
- "Secure",
266
- "SameSite=Lax",
267
- "Path=/"
268
- ];
269
- return attributes.join("; ");
270
- }
271
- function getContextCookieFromRequest(request) {
272
- const cookieHeader = request.headers.get("cookie");
273
- if (!cookieHeader) {
274
- return;
275
- }
276
- const cookies = cookieHeader.split(";");
277
- for (const cookie of cookies) {
278
- const [name, ...valueParts] = cookie.split("=");
279
- if (name && name.trim() === CONTEXT_COOKIE_NAME) {
280
- return valueParts.join("=").trim();
281
- }
282
- }
283
- return;
284
- }
285
- var CONTEXT_COOKIE_NAME = "__integrate_oauth_ctx", CONTEXT_COOKIE_MAX_AGE = 300;
286
-
287
- // base-handler.ts
288
- class OAuthHandler {
289
- config;
290
- serverUrl;
291
- apiKey;
292
- constructor(config) {
293
- this.config = config;
294
- if (!config || !config.providers) {
295
- throw new Error("OAuthHandler requires a valid config with providers");
296
- }
297
- this.serverUrl = config.serverUrl || MCP_SERVER_URL;
298
- this.apiKey = config.apiKey;
299
- }
300
- getHeaders(additionalHeaders) {
301
- const headers = {
302
- ...additionalHeaders
303
- };
304
- if (this.apiKey) {
305
- headers["X-API-KEY"] = this.apiKey;
306
- }
307
- return headers;
308
- }
309
- async handleAuthorize(request) {
310
- let webRequest;
311
- let authorizeRequest;
312
- if (request instanceof Request) {
313
- webRequest = request;
314
- authorizeRequest = await request.json();
315
- } else if (typeof request === "object" && "json" in request && typeof request.json === "function") {
316
- authorizeRequest = await request.json();
317
- } else {
318
- authorizeRequest = request;
319
- }
320
- const providerConfig = this.config.providers[authorizeRequest.provider];
321
- if (!providerConfig) {
322
- throw new Error(`Provider ${authorizeRequest.provider} not configured. Add OAuth credentials to your API route configuration.`);
323
- }
324
- if (!providerConfig.clientId || !providerConfig.clientSecret) {
325
- throw new Error(`Missing OAuth credentials for ${authorizeRequest.provider}. Check your environment variables.`);
326
- }
327
- const url = new URL("/oauth/authorize", this.serverUrl);
328
- url.searchParams.set("provider", authorizeRequest.provider);
329
- url.searchParams.set("client_id", providerConfig.clientId);
330
- url.searchParams.set("client_secret", providerConfig.clientSecret);
331
- const scopes = authorizeRequest.scopes || providerConfig.scopes || [];
332
- if (scopes.length > 0) {
333
- url.searchParams.set("scope", scopes.join(","));
334
- }
335
- url.searchParams.set("state", authorizeRequest.state);
336
- url.searchParams.set("code_challenge", authorizeRequest.codeChallenge);
337
- url.searchParams.set("code_challenge_method", authorizeRequest.codeChallengeMethod);
338
- const redirectUri = authorizeRequest.redirectUri || providerConfig.redirectUri;
339
- if (redirectUri) {
340
- url.searchParams.set("redirect_uri", redirectUri);
341
- }
342
- if (providerConfig.config) {
343
- for (const [key, value] of Object.entries(providerConfig.config)) {
344
- if (value !== undefined && value !== null) {
345
- url.searchParams.set(key, String(value));
346
- }
347
- }
348
- }
349
- const response = await fetch(url.toString(), {
350
- method: "GET",
351
- headers: this.getHeaders()
352
- });
353
- if (!response.ok) {
354
- const error = await response.text();
355
- throw new Error(`MCP server failed to generate authorization URL: ${error}`);
356
- }
357
- const data = await response.json();
358
- const result = data;
359
- if (webRequest) {
360
- try {
361
- const { detectSessionContext: detectSessionContext2 } = await Promise.resolve().then(() => exports_session_detector);
362
- const { createContextCookie: createContextCookie2, getSetCookieHeader: getSetCookieHeader2 } = await Promise.resolve().then(() => exports_context_cookie);
363
- let context;
364
- if (this.config.getSessionContext) {
365
- context = await this.config.getSessionContext(webRequest);
366
- }
367
- if (!context || !context.userId) {
368
- context = await detectSessionContext2(webRequest);
369
- }
370
- if (context && context.userId) {
371
- const secret = this.apiKey || providerConfig.clientSecret;
372
- const cookieValue = await createContextCookie2(context, authorizeRequest.provider, secret);
373
- result.setCookie = getSetCookieHeader2(cookieValue);
374
- }
375
- } catch (error) {
376
- console.warn("[OAuth] Failed to capture user context:", error);
377
- }
378
- }
379
- return result;
380
- }
381
- async handleCallback(request) {
382
- let webRequest;
383
- let callbackRequest;
384
- if (request instanceof Request) {
385
- webRequest = request;
386
- callbackRequest = await request.json();
387
- } else if (typeof request === "object" && "json" in request && typeof request.json === "function") {
388
- callbackRequest = await request.json();
389
- } else {
390
- callbackRequest = request;
391
- }
392
- const providerConfig = this.config.providers[callbackRequest.provider];
393
- if (!providerConfig) {
394
- throw new Error(`Provider ${callbackRequest.provider} not configured. Add OAuth credentials to your API route configuration.`);
395
- }
396
- if (!providerConfig.clientId || !providerConfig.clientSecret) {
397
- throw new Error(`Missing OAuth credentials for ${callbackRequest.provider}. Check your environment variables.`);
398
- }
399
- let context;
400
- if (webRequest) {
401
- try {
402
- const { getContextCookieFromRequest: getContextCookieFromRequest2, readContextCookie: readContextCookie2 } = await Promise.resolve().then(() => exports_context_cookie);
403
- const cookieValue = getContextCookieFromRequest2(webRequest);
404
- if (cookieValue) {
405
- const secret = this.apiKey || providerConfig.clientSecret;
406
- const contextData = await readContextCookie2(cookieValue, secret);
407
- if (contextData && contextData.provider === callbackRequest.provider) {
408
- context = contextData.context;
409
- }
410
- }
411
- } catch (error) {
412
- console.warn("[OAuth] Failed to restore user context:", error);
413
- }
414
- }
415
- const url = new URL("/oauth/callback", this.serverUrl);
416
- const response = await fetch(url.toString(), {
417
- method: "POST",
418
- headers: this.getHeaders({
419
- "Content-Type": "application/json"
420
- }),
421
- body: JSON.stringify({
422
- provider: callbackRequest.provider,
423
- code: callbackRequest.code,
424
- code_verifier: callbackRequest.codeVerifier,
425
- state: callbackRequest.state,
426
- client_id: providerConfig.clientId,
427
- client_secret: providerConfig.clientSecret,
428
- redirect_uri: providerConfig.redirectUri
429
- })
430
- });
431
- if (!response.ok) {
432
- const error = await response.text();
433
- throw new Error(`MCP server failed to exchange authorization code: ${error}`);
434
- }
435
- const data = await response.json();
436
- const result = data;
437
- if (this.config.setProviderToken) {
438
- try {
439
- const tokenData = {
440
- accessToken: result.accessToken,
441
- refreshToken: result.refreshToken,
442
- tokenType: result.tokenType,
443
- expiresIn: result.expiresIn,
444
- expiresAt: result.expiresAt,
445
- scopes: result.scopes
446
- };
447
- await this.config.setProviderToken(callbackRequest.provider, tokenData, context);
448
- } catch (error) {
449
- console.error("[OAuth] Failed to save provider token:", error);
450
- }
451
- }
452
- if (webRequest) {
453
- const { getClearCookieHeader: getClearCookieHeader2 } = await Promise.resolve().then(() => exports_context_cookie);
454
- result.clearCookie = getClearCookieHeader2();
455
- }
456
- return result;
457
- }
458
- async handleStatus(provider, accessToken) {
459
- const url = new URL("/oauth/status", this.serverUrl);
460
- url.searchParams.set("provider", provider);
461
- const response = await fetch(url.toString(), {
462
- method: "GET",
463
- headers: this.getHeaders({
464
- Authorization: `Bearer ${accessToken}`
465
- })
466
- });
467
- if (!response.ok) {
468
- if (response.status === 401) {
469
- return {
470
- authorized: false
471
- };
472
- }
473
- const error = await response.text();
474
- throw new Error(`MCP server failed to check authorization status: ${error}`);
475
- }
476
- const data = await response.json();
477
- return data;
478
- }
479
- async handleDisconnect(request, accessToken, webRequest) {
480
- if (!accessToken) {
481
- throw new Error("No access token provided. Cannot disconnect provider.");
482
- }
483
- if (webRequest && this.config.removeProviderToken) {
484
- try {
485
- let context;
486
- if (this.config.getSessionContext) {
487
- context = await this.config.getSessionContext(webRequest);
488
- }
489
- if (!context || !context.userId) {
490
- const { detectSessionContext: detectSessionContext2 } = await Promise.resolve().then(() => exports_session_detector);
491
- context = await detectSessionContext2(webRequest);
492
- }
493
- if (context) {
494
- try {
495
- await this.config.removeProviderToken(request.provider, context);
496
- } catch (error) {
497
- console.error(`Failed to delete token for ${request.provider} from database via removeProviderToken:`, error);
498
- }
499
- }
500
- } catch (error) {
501
- console.error(`Failed to extract context for disconnect:`, error);
502
- }
503
- }
504
- const url = new URL("/oauth/disconnect", this.serverUrl);
505
- const response = await fetch(url.toString(), {
506
- method: "POST",
507
- headers: this.getHeaders({
508
- "Content-Type": "application/json",
509
- Authorization: `Bearer ${accessToken}`
510
- }),
511
- body: JSON.stringify({
512
- provider: request.provider
513
- })
514
- });
515
- if (!response.ok) {
516
- const error = await response.text();
517
- throw new Error(`MCP server failed to disconnect provider: ${error}`);
518
- }
519
- const data = await response.json();
520
- return data;
521
- }
522
- async handleToolCall(request, authHeader) {
523
- const url = this.serverUrl;
524
- const headers = this.getHeaders({
525
- "Content-Type": "application/json"
526
- });
527
- if (authHeader && authHeader.startsWith("Bearer ")) {
528
- headers["Authorization"] = authHeader;
529
- }
530
- const jsonRpcRequest = {
531
- jsonrpc: "2.0",
532
- id: Date.now() + Math.random(),
533
- method: "tools/call",
534
- params: {
535
- name: request.name,
536
- arguments: request.arguments || {}
537
- }
538
- };
539
- const response = await fetch(url, {
540
- method: "POST",
541
- headers,
542
- body: JSON.stringify(jsonRpcRequest)
543
- });
544
- if (!response.ok) {
545
- const error = await response.text();
546
- throw new Error(`MCP server failed to execute tool call: ${error}`);
547
- }
548
- const jsonRpcResponse = await response.json();
549
- if (jsonRpcResponse.error) {
550
- const error = new Error(jsonRpcResponse.error.message || "Tool call failed");
551
- error.code = jsonRpcResponse.error.code;
552
- error.data = jsonRpcResponse.error.data;
553
- throw error;
554
- }
555
- return jsonRpcResponse.result;
556
- }
557
- }
558
- var MCP_SERVER_URL = "https://mcp.integrate.dev/api/v1/mcp";
559
- export {
560
- OAuthHandler
561
- };