@lssm/integration.providers-impls 0.0.0-canary-20251213172311
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/dist/_virtual/rolldown_runtime.js +1 -0
- package/dist/calendar.js +1 -0
- package/dist/email.js +1 -0
- package/dist/embedding.js +1 -0
- package/dist/impls/elevenlabs-voice.js +1 -0
- package/dist/impls/gcs-storage.js +1 -0
- package/dist/impls/gmail-inbound.js +1 -0
- package/dist/impls/gmail-outbound.js +6 -0
- package/dist/impls/google-calendar.js +1 -0
- package/dist/impls/index.js +1 -0
- package/dist/impls/mistral-embedding.js +1 -0
- package/dist/impls/mistral-llm.js +1 -0
- package/dist/impls/postmark-email.js +1 -0
- package/dist/impls/powens-client.js +1 -0
- package/dist/impls/powens-openbanking.js +1 -0
- package/dist/impls/provider-factory.js +1 -0
- package/dist/impls/qdrant-vector.js +1 -0
- package/dist/impls/stripe-payments.js +1 -0
- package/dist/impls/twilio-sms.js +1 -0
- package/dist/index.js +1 -0
- package/dist/llm.js +1 -0
- package/dist/openbanking.js +1 -0
- package/dist/payments.js +1 -0
- package/dist/runtime.js +0 -0
- package/dist/secrets/provider.js +1 -0
- package/dist/sms.js +1 -0
- package/dist/storage.js +1 -0
- package/dist/vector-store.js +1 -0
- package/dist/voice.js +1 -0
- package/package.json +108 -0
package/README.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `@lssm/integration.providers-impls`
|
|
2
|
+
|
|
3
|
+
SDK-backed implementations of ContractSpec integration provider interfaces.
|
|
4
|
+
|
|
5
|
+
Depends on:
|
|
6
|
+
- `@lssm/lib.contracts` for provider interface types and IntegrationSpec declarations
|
|
7
|
+
- `@lssm/integration.runtime` for secret/guard helpers (when needed)
|
|
8
|
+
|
|
9
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,i=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n&&e(r,Symbol.toStringTag,{value:`Module`}),r},a=(i,a,o,s)=>{if(a&&typeof a==`object`||typeof a==`function`)for(var c=n(a),l=0,u=c.length,d;l<u;l++)d=c[l],!r.call(i,d)&&d!==o&&e(i,d,{get:(e=>a[e]).bind(null,d),enumerable:!(s=t(a,d))||s.enumerable});return i},o=(t,n,r,i)=>{i&&(e(t,Symbol.toStringTag,{value:`Module`}),r&&e(r,Symbol.toStringTag,{value:`Module`})),a(t,n,`default`),r&&a(r,n,`default`)};export{i as __export,o as __reExport};
|
package/dist/calendar.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__reExport as e}from"./_virtual/rolldown_runtime.js";export*from"@lssm/lib.contracts/integrations/providers/calendar";
|
package/dist/email.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__reExport as e}from"./_virtual/rolldown_runtime.js";export*from"@lssm/lib.contracts/integrations/providers/email";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__reExport as e}from"./_virtual/rolldown_runtime.js";export*from"@lssm/lib.contracts/integrations/providers/embedding";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ElevenLabsClient as e}from"@elevenlabs/elevenlabs-js";const t={mp3:`mp3_44100_128`,wav:`pcm_44100`,ogg:`mp3_44100_128`,pcm:`pcm_16000`},n={mp3_22050_32:22050,mp3_44100_32:44100,mp3_44100_64:44100,mp3_44100_96:44100,mp3_44100_128:44100,mp3_44100_192:44100,pcm_16000:16e3,pcm_22050:22050,pcm_24000:24e3,pcm_44100:44100,ulaw_8000:8e3};var r=class{client;defaultVoiceId;modelId;constructor(t){this.client=t.client??new e({apiKey:t.apiKey}),this.defaultVoiceId=t.defaultVoiceId,this.modelId=t.modelId}async listVoices(){return((await this.client.voices.getAll()).voices??[]).map(e=>({id:e.voiceId??``,name:e.name??e.voiceId??``,description:e.description??void 0,language:e.labels?.language??void 0,gender:i(e.labels?.gender),previewUrl:e.previewUrl??void 0,metadata:{category:e.category??``,...e.labels}}))}async synthesize(e){let r=e.voiceId??this.defaultVoiceId;if(!r)throw Error(`Voice ID is required for ElevenLabs synthesis.`);let i=e.format??`mp3`,o=t[i]??t.mp3,s=e.sampleRateHz??n[o]??n.mp3_44100_128??44100,c=e.stability!=null||e.similarityBoost!=null||e.style!=null?{...e.stability==null?{}:{stability:e.stability},...e.similarityBoost==null?{}:{similarityBoost:e.similarityBoost},...e.style==null?{}:{style:e.style}}:void 0;return{audio:await a(await this.client.textToSpeech.convert(r,{text:e.text,modelId:this.modelId,outputFormat:o,voiceSettings:c})),format:i,sampleRateHz:s,durationSeconds:void 0,url:void 0}}};function i(e){if(!e)return;let t=e.toLowerCase();if(t===`male`||t===`female`||t===`neutral`)return t}async function a(e){let t=e.getReader(),n=[];for(;;){let{done:e,value:r}=await t.read();if(e)break;r&&n.push(r)}let r=n.reduce((e,t)=>e+t.length,0),i=new Uint8Array(r),a=0;for(let e of n)i.set(e,a),a+=e.length;return i}export{r as ElevenLabsVoiceProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Storage as e}from"@google-cloud/storage";var t=class{storage;bucketName;constructor(t){this.storage=t.storage??new e(t.clientOptions??void 0),this.bucketName=t.bucket}async putObject(e){let t=e.bucket??this.bucketName,i=this.storage.bucket(t).file(e.key),a=n(e.data);await i.save(a,{resumable:!1,contentType:e.contentType,metadata:e.metadata}),e.makePublic&&await i.makePublic();let[o]=await i.getMetadata();return r(o)}async getObject(e){let t=e.bucket??this.bucketName,n=this.storage.bucket(t).file(e.key),[i]=await n.exists();if(!i)return null;let[a]=await n.download(),[o]=await n.getMetadata();return{...r(o),data:new Uint8Array(a)}}async deleteObject(e){let t=e.bucket??this.bucketName;await this.storage.bucket(t).file(e.key).delete({ignoreNotFound:!0})}async generateSignedUrl(e){let t=e.bucket??this.bucketName,n=this.storage.bucket(t).file(e.key),r=e.method===`PUT`?`write`:`read`,i=Date.now()+e.expiresInSeconds*1e3,[a]=await n.getSignedUrl({action:r,expires:i,contentType:e.contentType});return{url:a,expiresAt:new Date(i)}}async listObjects(e){let t=e.bucket??this.bucketName,[n,i,a]=await this.storage.bucket(t).getFiles({prefix:e.prefix,maxResults:e.maxResults,pageToken:e.pageToken}),o=typeof i==`object`&&i&&`pageToken`in i?i.pageToken:void 0,s=a&&typeof a==`object`&&`nextPageToken`in a?a.nextPageToken:void 0;return{objects:n.map(e=>r(e.metadata)),nextPageToken:o??s??void 0}}};function n(e){return e instanceof Uint8Array,Buffer.from(e)}function r(e){return{bucket:e.bucket??``,key:e.name??``,sizeBytes:e.size?Number(e.size):void 0,contentType:e.contentType??void 0,etag:e.etag??void 0,checksum:e.md5Hash??void 0,lastModified:e.updated?new Date(e.updated):void 0,metadata:e.metadata}}export{t as GoogleCloudStorageProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{google as e}from"googleapis";var t=class{gmail;userId;includeSpamTrash;auth;constructor(t){this.auth=t.auth,this.gmail=t.gmail??e.gmail({version:`v1`,auth:t.auth}),this.userId=t.userId??`me`,this.includeSpamTrash=t.includeSpamTrash??!1}async listThreads(e){let t=await this.gmail.users.threads.list({userId:this.userId,maxResults:e?.pageSize,pageToken:e?.pageToken,q:e?.query,labelIds:e?.label?[e.label]:void 0,includeSpamTrash:this.includeSpamTrash,auth:this.auth});return(await Promise.all((t.data.threads??[]).map(async e=>e.id?this.getThread(e.id):null))).filter(e=>e!==null)}async getThread(e){let t=(await this.gmail.users.threads.get({id:e,userId:this.userId,format:`full`,auth:this.auth})).data;if(!t)return null;let n=t.messages?.map(e=>this.transformMessage(e))??[],r=o(n.flatMap(e=>[e.from,...e.to,...e.cc??[]])),i=n[0],a=n[n.length-1],s=a?.receivedAt??a?.sentAt??i?.receivedAt??i?.sentAt??new Date,c=Array.from(new Set(n.flatMap(e=>{let t=e.metadata?.labelIds;return t?t.split(`,`).map(e=>e.trim()):[]}).filter(e=>!!e)));return{id:t.id??e,subject:n[0]?.subject,snippet:t.snippet??``,participants:r,messages:n,updatedAt:s,labels:c,metadata:t.historyId?{historyId:t.historyId}:void 0}}async listMessagesSince(e){let t=e.since?Math.floor(e.since.getTime()/1e3):void 0,n=[];t&&n.push(`after:${t}`);let r=await this.gmail.users.messages.list({userId:this.userId,maxResults:e.pageSize,pageToken:e.pageToken,labelIds:e.label?[e.label]:void 0,q:n.join(` `),includeSpamTrash:this.includeSpamTrash,auth:this.auth});return{messages:(await Promise.all((r.data.messages??[]).map(async e=>{if(!e.id)return null;let t=await this.gmail.users.messages.get({userId:this.userId,id:e.id,format:`full`,auth:this.auth});return t.data?this.transformMessage(t.data):null}))).filter(e=>e!==null),nextPageToken:r.data.nextPageToken??void 0}}transformMessage(e){let t=e.payload?.headers??[],o=n(t,`Subject`)??``,c=r(n(t,`From`))??i(`from`,e.id),l=a(n(t,`To`)),u=a(n(t,`Cc`)),d=a(n(t,`Bcc`)),f=r(n(t,`Reply-To`)),{text:p,html:m,attachments:h}=s(e.payload),g=e.internalDate?new Date(Number(e.internalDate)):new Date,_={...e.labelIds?.length?{labelIds:e.labelIds.join(`,`)}:{},...e.historyId?{historyId:e.historyId}:{}};return{id:e.id??``,threadId:e.threadId??``,subject:o,from:c,to:l,cc:u,bcc:d,replyTo:f??void 0,sentAt:g,receivedAt:g,textBody:p??void 0,htmlBody:m??void 0,attachments:h,headers:Object.fromEntries(t.map(e=>[e.name??``,e.value??``])),metadata:Object.keys(_).length>0?_:void 0}}};function n(e,t){let n=e.find(e=>e.name?.toLowerCase()===t.toLowerCase())?.value;return typeof n==`string`?n:void 0}function r(e){let t=a(e);return t.length===0?null:t[0]}function i(e,t){return{email:`${e}-${t&&t.replace(/[^\w]/g,``).slice(-8)||`unknown`}@mail.local`}}function a(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean).map(e=>{let t=e.match(/^(?:"?([^"]*)"?\s)?<?([^<>]+)>?$/);if(!t)return{email:e};let n=t[1]?.trim(),r=t[2]?.trim();return r?n?{email:r,name:n}:{email:r}:{email:e}}):[]}function o(e){let t=new Map;for(let n of e)n&&t.set(n.email.toLowerCase(),n);return Array.from(t.values())}function s(e){if(!e)return{attachments:[]};let t=[],n=e=>{if(!e)return{};e.filename&&e.body?.attachmentId&&t.push({id:e.body.attachmentId,filename:e.filename,contentType:e.mimeType??`application/octet-stream`,sizeBytes:e.body.size??void 0});let r=e.mimeType??``,i=e.body?.data;return r===`text/plain`&&i?{text:c(i)}:r===`text/html`&&i?{html:c(i)}:e.parts?.length?e.parts.reduce((e,t)=>{let r=n(t);return{text:r.text??e.text,html:r.html??e.html}},{}):{}},{text:r,html:i}=n(e);return{text:r,html:i,attachments:t}}function c(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=t.length%4,r=n===0?t:t+`=`.repeat(4-n);return Buffer.from(r,`base64`).toString(`utf-8`)}export{t as GmailInboundProvider};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{google as e}from"googleapis";var t=class{gmail;userId;auth;constructor(t){this.auth=t.auth,this.gmail=t.gmail??e.gmail({version:`v1`,auth:t.auth}),this.userId=t.userId??`me`}async sendEmail(e){let t=n(e),r=await this.gmail.users.messages.send({userId:this.userId,requestBody:{raw:t},auth:this.auth});return{id:r.data.id??``,providerMessageId:r.data.id??void 0,queuedAt:new Date}}};function n(e){let t=[`From: ${o(e.from)}`,`To: ${e.to.map(o).join(`, `)}`,`Subject: ${e.subject}`,`MIME-Version: 1.0`];e.cc?.length&&t.push(`Cc: ${e.cc.map(o).join(`, `)}`),e.replyTo&&t.push(`Reply-To: ${o(e.replyTo)}`),Object.entries(e.headers??{}).forEach(([e,n])=>{t.push(`${e}: ${n}`)});let n=e.attachments??[],s=!!e.htmlBody,c=!!e.textBody,l=`mixed_${Date.now()}`,u=`alt_${Date.now()}`,d=``;n.length>0?(t.push(`Content-Type: multipart/mixed; boundary="${l}"`),d+=`\r\n--${l}\r\n`,d+=r(c,s,u,e),n.forEach(e=>{d+=a(l,e)}),d+=`\r\n--${l}--`):c&&s?(t.push(`Content-Type: multipart/alternative; boundary="${u}"`),d+=`\r\n--${u}\r\n`,d+=i(`text/plain; charset="utf-8"`,e.textBody),d+=`\r\n--${u}\r\n`,d+=i(`text/html; charset="utf-8"`,e.htmlBody),d+=`\r\n--${u}--`):s?(t.push(`Content-Type: text/html; charset="utf-8"`),d+=`\r\n\r\n${e.htmlBody}`):(t.push(`Content-Type: text/plain; charset="utf-8"`),d+=`\r\n\r\n${e.textBody??``}`);let f=`${t.join(`\r
|
|
2
|
+
`)}${d}`;return Buffer.from(f).toString(`base64`).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function r(e,t,n,r){let a=``;return a+=`Content-Type: multipart/alternative; boundary="${n}"\r\n`,a+=`\r
|
|
3
|
+
`,e&&(a+=`--${n}\r\n`,a+=i(`text/plain; charset="utf-8"`,r.textBody)),t&&(a+=`\r\n--${n}\r\n`,a+=i(`text/html; charset="utf-8"`,r.htmlBody)),a+=`\r\n--${n}--`,a}function i(e,t){return`Content-Type: ${e}\r\nContent-Transfer-Encoding: 7bit\r
|
|
4
|
+
\r
|
|
5
|
+
`+t}function a(e,t){let n=t.data??new Uint8Array,r=n.byteLength>0?Buffer.from(n).toString(`base64`):``;return`\r\n--${e}\r\nContent-Type: ${t.contentType}; name="${t.filename}"\r\nContent-Transfer-Encoding: base64\r
|
|
6
|
+
Content-Disposition: attachment; filename="${t.filename}"\r\n\r\n`+r}function o(e){return e.name?`"${e.name}" <${e.email}>`:e.email}export{t as GmailOutboundProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{google as e}from"googleapis";var t=class{calendar;defaultCalendarId;auth;constructor(t){this.auth=t.auth,this.calendar=t.calendar??e.calendar({version:`v3`,auth:t.auth}),this.defaultCalendarId=t.calendarId??`primary`}async listEvents(e){let t=await this.calendar.events.list({calendarId:e.calendarId??this.defaultCalendarId,timeMin:e.timeMin?.toISOString(),timeMax:e.timeMax?.toISOString(),maxResults:e.maxResults,pageToken:e.pageToken,singleEvents:!0,orderBy:`startTime`,auth:this.auth});return{events:t.data.items?.map(t=>this.fromGoogleEvent(e.calendarId??this.defaultCalendarId,t))??[],nextPageToken:t.data.nextPageToken??void 0}}async createEvent(e){let t=e.calendarId??this.defaultCalendarId,n=await this.calendar.events.insert({calendarId:t,requestBody:this.toGoogleEvent(e),conferenceDataVersion:e.conference?.create?1:void 0,auth:this.auth});return this.fromGoogleEvent(t,n.data)}async updateEvent(e,t,n){let r=await this.calendar.events.patch({calendarId:e??this.defaultCalendarId,eventId:t,requestBody:this.toGoogleEvent(n),conferenceDataVersion:n.conference?.create?1:void 0,auth:this.auth});return this.fromGoogleEvent(e,r.data)}async deleteEvent(e,t){await this.calendar.events.delete({calendarId:e??this.defaultCalendarId,eventId:t,auth:this.auth})}fromGoogleEvent(e,t){let r=n(t.start),o=n(t.end),s=t.attendees?.map(e=>({email:e.email??``,name:e.displayName??void 0,optional:e.optional??void 0,responseStatus:i(e.responseStatus)}))??[],c=t.reminders?.overrides?.map(e=>({method:e.method??`popup`,minutesBeforeStart:e.minutes??0}))??[],l=a(t);return{id:t.id??``,calendarId:e,title:t.summary??``,description:t.description??void 0,location:t.location??void 0,start:r,end:o,allDay:t.start?.date?!0:void 0,attendees:s,reminders:c,conferenceLink:t.hangoutLink??t.conferenceData?.entryPoints?.find(e=>e.uri)?.uri??void 0,metadata:l,createdAt:t.created?new Date(t.created):void 0,updatedAt:t.updated?new Date(t.updated):void 0}}toGoogleEvent(e){let t={};return`title`in e&&e.title&&(t.summary=e.title),e.description!==void 0&&(t.description=e.description),e.location!==void 0&&(t.location=e.location),e.start&&(t.start=r(e.start,e.allDay)),e.end&&(t.end=r(e.end,e.allDay)),e.attendees&&(t.attendees=e.attendees.map(e=>({email:e.email,displayName:e.name,optional:e.optional,responseStatus:e.responseStatus}))),e.reminders&&(t.reminders={useDefault:!1,overrides:e.reminders.map(e=>({method:e.method,minutes:e.minutesBeforeStart}))}),e.conference?.create&&(t.conferenceData={createRequest:{requestId:`conf-${Date.now()}`}}),e.metadata&&(t.extendedProperties={...t.extendedProperties??{},private:{...t.extendedProperties?.private??{},...e.metadata}}),t}};function n(e){return e?e.dateTime?new Date(e.dateTime):e.date?new Date(`${e.date}T00:00:00`):new Date:new Date}function r(e,t){return t?{date:e.toISOString().slice(0,10)}:{dateTime:e.toISOString()}}function i(e){if(e)return[`needsAction`,`declined`,`tentative`,`accepted`].includes(e)?e:void 0}function a(e){let t={};return e.status&&(t.status=e.status),e.htmlLink&&(t.htmlLink=e.htmlLink),e.iCalUID&&(t.iCalUID=e.iCalUID),e.etag&&(t.etag=e.etag),e.conferenceData?.conferenceSolution?.name&&(t.conferenceSolution=e.conferenceData.conferenceSolution.name),e.extendedProperties?.private&&Object.entries(e.extendedProperties.private).forEach(([e,n])=>{typeof n==`string`&&(t[`extended.${e}`]=n)}),Object.keys(t).length>0?t:void 0}export{t as GoogleCalendarProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{MistralLLMProvider as e}from"./mistral-llm.js";import{MistralEmbeddingProvider as t}from"./mistral-embedding.js";import{QdrantVectorProvider as n}from"./qdrant-vector.js";import{GoogleCloudStorageProvider as r}from"./gcs-storage.js";import{StripePaymentsProvider as i}from"./stripe-payments.js";import{PostmarkEmailProvider as a}from"./postmark-email.js";import{TwilioSmsProvider as o}from"./twilio-sms.js";import{ElevenLabsVoiceProvider as s}from"./elevenlabs-voice.js";import{PowensClient as c,PowensClientError as l}from"./powens-client.js";import{PowensOpenBankingProvider as u}from"./powens-openbanking.js";import{IntegrationProviderFactory as d}from"./provider-factory.js";import{GmailInboundProvider as f}from"./gmail-inbound.js";import{GmailOutboundProvider as p}from"./gmail-outbound.js";import{GoogleCalendarProvider as m}from"./google-calendar.js";export{s as ElevenLabsVoiceProvider,f as GmailInboundProvider,p as GmailOutboundProvider,m as GoogleCalendarProvider,r as GoogleCloudStorageProvider,d as IntegrationProviderFactory,t as MistralEmbeddingProvider,e as MistralLLMProvider,a as PostmarkEmailProvider,c as PowensClient,l as PowensClientError,u as PowensOpenBankingProvider,n as QdrantVectorProvider,i as StripePaymentsProvider,o as TwilioSmsProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Mistral as e}from"@mistralai/mistralai";var t=class{client;defaultModel;constructor(t){if(!t.apiKey)throw Error(`MistralEmbeddingProvider requires an apiKey`);this.client=t.client??new e({apiKey:t.apiKey,serverURL:t.serverURL}),this.defaultModel=t.defaultModel??`mistral-embed`}async embedDocuments(e,t){if(e.length===0)return[];let n=t?.model??this.defaultModel,r=await this.client.embeddings.create({model:n,inputs:e.map(e=>e.text)});return r.data.map((t,n)=>({id:e[n]?.id??(t.index==null?`embedding-${n}`:`embedding-${t.index}`),vector:t.embedding??[],dimensions:t.embedding?.length??0,model:r.model,metadata:e[n]?.metadata?Object.fromEntries(Object.entries(e[n]?.metadata??{}).map(([e,t])=>[e,String(t)])):void 0}))}async embedQuery(e,t){let[n]=await this.embedDocuments([{id:`query`,text:e}],t);if(!n)throw Error(`Failed to compute embedding for query`);return n}};export{t as MistralEmbeddingProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Mistral as e}from"@mistralai/mistralai";var t=class{client;defaultModel;constructor(t){if(!t.apiKey)throw Error(`MistralLLMProvider requires an apiKey`);this.client=t.client??new e({apiKey:t.apiKey,serverURL:t.serverURL,userAgent:t.userAgentSuffix?`${t.userAgentSuffix}`:void 0}),this.defaultModel=t.defaultModel??`mistral-large-latest`}async chat(e,t={}){let n=this.buildChatRequest(e,t),r=await this.client.chat.complete(n);return this.buildLLMResponse(r)}async*stream(e,t={}){let r=this.buildChatRequest(e,t);r.stream=!0;let i=await this.client.chat.stream(r),a=[],o=[],s,c;for await(let e of i){for(let t of e.data.choices){let e=t.delta;if(typeof e.content==`string`)e.content.length>0&&(a.push({type:`text`,text:e.content}),yield{type:`message_delta`,delta:{type:`text`,text:e.content},index:t.index});else if(Array.isArray(e.content))for(let n of e.content)n.type===`text`&&`text`in n&&(a.push({type:`text`,text:n.text}),yield{type:`message_delta`,delta:{type:`text`,text:n.text},index:t.index});if(e.toolCalls){let n=0;for(let r of e.toolCalls){let e=this.fromMistralToolCall(r,n);o.push(e),yield{type:`tool_call`,call:e,index:t.index},n+=1}}t.finishReason&&t.finishReason!==`null`&&(c=t.finishReason)}if(e.data.usage){let t=this.fromUsage(e.data.usage);t&&(s=t,yield{type:`usage`,usage:t})}}let l={role:`assistant`,content:a.length?a:[{type:`text`,text:``}]};o.length>0&&(l.content=[...o,...a.length?a:[]]),yield{type:`end`,response:{message:l,usage:s,finishReason:n(c)}}}async countTokens(e){throw Error(`Mistral API does not currently support token counting`)}buildChatRequest(e,t){let n={model:t.model??this.defaultModel,messages:e.map(e=>this.toMistralMessage(e))};return t.temperature!=null&&(n.temperature=t.temperature),t.topP!=null&&(n.topP=t.topP),t.maxOutputTokens!=null&&(n.maxTokens=t.maxOutputTokens),t.stopSequences?.length&&(n.stop=t.stopSequences.length===1?t.stopSequences[0]:t.stopSequences),t.tools?.length&&(n.tools=t.tools.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:typeof e.inputSchema==`object`&&e.inputSchema!==null?e.inputSchema:{}}}))),t.responseFormat===`json`&&(n.responseFormat={type:`json_object`}),n}buildLLMResponse(e){let t=e.choices[0];return t?{message:this.fromAssistantMessage(t.message),usage:this.fromUsage(e.usage),finishReason:n(t.finishReason),raw:e}:{message:{role:`assistant`,content:[{type:`text`,text:``}]},usage:this.fromUsage(e.usage),raw:e}}fromUsage(e){if(e)return{promptTokens:e.promptTokens??0,completionTokens:e.completionTokens??0,totalTokens:e.totalTokens??0}}fromAssistantMessage(e){let t=[];typeof e.content==`string`?t.push({type:`text`,text:e.content}):Array.isArray(e.content)&&e.content.forEach(e=>{e.type===`text`&&`text`in e&&t.push({type:`text`,text:e.text})});let n=e.toolCalls?.map((e,t)=>this.fromMistralToolCall(e,t))??[];return n.length>0&&t.splice(0,0,...n),t.length===0&&t.push({type:`text`,text:``}),{role:`assistant`,content:t}}fromMistralToolCall(e,t){let n=typeof e.function.arguments==`string`?e.function.arguments:JSON.stringify(e.function.arguments);return{type:`tool-call`,id:e.id??`tool-call-${t}`,name:e.function.name,arguments:n}}toMistralMessage(e){let t=this.extractText(e.content),n=this.extractToolCalls(e);switch(e.role){case`system`:return{role:`system`,content:t??``};case`user`:return{role:`user`,content:t??``};case`assistant`:return{role:`assistant`,content:n.length>0?null:t??``,toolCalls:n.length>0?n:void 0};case`tool`:return{role:`tool`,content:t??``,toolCallId:e.toolCallId??n[0]?.id};default:return{role:`user`,content:t??``}}}extractText(e){let t=e.filter(e=>e.type===`text`).map(e=>e.text);return t.length===0?null:t.join(``)}extractToolCalls(e){return e.content.filter(e=>e.type===`tool-call`).map((e,t)=>({id:e.id??`call_${t}`,type:`function`,index:t,function:{name:e.name,arguments:e.arguments}}))}};function n(e){if(e)switch(e.toLowerCase()){case`stop`:return`stop`;case`length`:return`length`;case`tool_call`:case`tool_calls`:return`tool_call`;case`content_filter`:return`content_filter`;default:return}}export{t as MistralLLMProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ServerClient as e}from"postmark";var t=class{client;defaultFromEmail;messageStream;constructor(t){this.client=t.client??new e(t.serverToken,{useHttps:!0}),this.defaultFromEmail=t.defaultFromEmail,this.messageStream=t.messageStream}async sendEmail(e){let t={From:n(e.from)??this.defaultFromEmail,To:e.to.map(e=>n(e)).join(`, `),Cc:e.cc?.map(e=>n(e)).join(`, `)||void 0,Bcc:e.bcc?.map(e=>n(e)).join(`, `)||void 0,ReplyTo:e.replyTo?n(e.replyTo):void 0,Subject:e.subject,TextBody:e.textBody,HtmlBody:e.htmlBody,Headers:e.headers?Object.entries(e.headers).map(([e,t])=>({Name:e,Value:t})):void 0,MessageStream:this.messageStream,Attachments:r(e)},i=await this.client.sendEmail(t);return{id:i.MessageID,providerMessageId:i.MessageID,queuedAt:new Date(i.SubmittedAt??new Date().toISOString())}}};function n(e){return e.name?`"${e.name}" <${e.email}>`:e.email}function r(e){if(e.attachments?.length)return e.attachments.filter(e=>e.data).map(e=>({Name:e.filename,Content:Buffer.from(e.data??new Uint8Array).toString(`base64`),ContentType:e.contentType,ContentID:null,ContentLength:e.sizeBytes,Disposition:`attachment`}))}export{t as PostmarkEmailProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{URL as e}from"node:url";const t={sandbox:`https://api-sandbox.powens.com/v2`,production:`https://api.powens.com/v2`};var n=class extends Error{status;code;requestId;response;constructor(e,t,n,r,i){super(e),this.name=`PowensClientError`,this.status=t,this.code=n,this.requestId=r,this.response=i}},r=class{clientId;clientSecret;apiKey;fetchImpl;logger;defaultTimeoutMs;token;baseUrl;constructor(e){this.clientId=e.clientId,this.clientSecret=e.clientSecret,this.apiKey=e.apiKey,this.fetchImpl=e.fetchImpl??fetch,this.logger=e.logger,this.defaultTimeoutMs=e.defaultTimeoutMs??15e3,this.baseUrl=e.baseUrl??t[e.environment]??t.production}async listAccounts(e){let t={cursor:e.cursor,limit:e.limit,include_balances:e.includeBalances,institution_uuid:e.institutionUuid};return await this.request({method:`GET`,path:`/users/${encodeURIComponent(e.userUuid)}/accounts`,searchParams:t})}async getAccount(e){return this.request({method:`GET`,path:`/accounts/${encodeURIComponent(e)}`})}async listTransactions(e){let t={cursor:e.cursor,limit:e.limit,from:e.from,to:e.to,include_pending:e.includePending};return this.request({method:`GET`,path:`/accounts/${encodeURIComponent(e.accountUuid)}/transactions`,searchParams:t})}async getBalances(e){return this.request({method:`GET`,path:`/accounts/${encodeURIComponent(e)}/balances`})}async getConnectionStatus(e){return this.request({method:`GET`,path:`/connections/${encodeURIComponent(e)}`})}async request(t){let r=new e(t.path,this.baseUrl);if(t.searchParams)for(let[e,n]of Object.entries(t.searchParams))n!=null&&r.searchParams.set(e,String(n));let i={Accept:`application/json`,"Content-Type":`application/json`,...t.headers};this.apiKey&&(i[`x-api-key`]=this.apiKey),t.skipAuth||(i.Authorization=`Bearer ${await this.ensureAccessToken()}`);let a=new AbortController,o=setTimeout(()=>a.abort(),t.timeoutMs??this.defaultTimeoutMs);try{let e=await this.fetchImpl(r,{method:t.method,headers:i,body:t.body?JSON.stringify(t.body):void 0,signal:a.signal}),o=e.headers.get(`x-request-id`)??void 0;if(!e.ok){let t;try{t=await e.json()}catch{}let r=typeof t==`object`&&t?t:void 0,i=typeof r?.message==`string`?r.message:`Powens API request failed with status ${e.status}`,a=typeof r?.code==`string`?r.code:void 0;throw new n(i,e.status,a,o,t)}if(e.status===204)return;try{return await e.json()}catch(t){throw this.logger?.error?.(`[PowensClient] Failed to parse JSON response`,t),new n(`Failed to parse Powens response payload as JSON`,e.status,void 0,o)}}catch(e){throw e instanceof n?e:e.name===`AbortError`?new n(`Powens API request timed out after ${t.timeoutMs??this.defaultTimeoutMs}ms`,408):(this.logger?.error?.(`[PowensClient] Request failed`,e),new n(e.message??`Powens API request failed`,500))}finally{clearTimeout(o)}}async ensureAccessToken(){return this.token&&Date.now()<this.token.expiresAt-5e3||(this.token=await this.fetchAccessToken()),this.token.accessToken}async fetchAccessToken(){let t=new e(`/oauth/token`,this.baseUrl),r=Buffer.from(`${this.clientId}:${this.clientSecret}`,`utf-8`).toString(`base64`),i=await this.fetchImpl(t,{method:`POST`,headers:{Authorization:`Basic ${r}`,"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:new URLSearchParams({grant_type:`client_credentials`}).toString()});if(!i.ok){let e;try{e=await i.json()}catch{}let t=typeof e==`object`&&e?e:void 0;throw new n(typeof t?.error_description==`string`?t.error_description:`Failed to obtain Powens access token`,i.status,void 0,void 0,e)}let a=await i.json(),o=Date.now()+a.expires_in*1e3;return this.logger?.debug?.(`[PowensClient] Received access token`,{expiresIn:a.expires_in}),{accessToken:a.access_token,expiresAt:o,scope:a.scope}}};export{r as PowensClient,n as PowensClientError};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{PowensClient as e,PowensClientError as t}from"./powens-client.js";var n=class{client;logger;constructor(t){this.client=new e(t),this.logger=t.logger}async listAccounts(e){if(!e.userId)throw new t(`Powens account listing requires the upstream userId mapped to Powens user UUID.`,400);let n=this.toContext(e.tenantId,e.connectionId);try{let t=await this.client.listAccounts({userUuid:e.userId,cursor:e.cursor,limit:e.pageSize,includeBalances:e.includeBalances,institutionUuid:e.institutionId});return{accounts:t.accounts.map(e=>this.mapAccount(e,n)),nextCursor:t.pagination?.nextCursor,hasMore:t.pagination?.hasMore}}catch(e){this.handleError(`listAccounts`,e)}}async getAccountDetails(e){let t=this.toContext(e.tenantId,e.connectionId);try{let n=await this.client.getAccount(e.accountId);return this.mapAccountDetails(n,t)}catch(e){this.handleError(`getAccountDetails`,e)}}async listTransactions(e){let t=this.toContext(e.tenantId,e.connectionId);try{let n=await this.client.listTransactions({accountUuid:e.accountId,cursor:e.cursor,limit:e.pageSize,from:e.from,to:e.to,includePending:e.includePending});return{transactions:n.transactions.map(e=>this.mapTransaction(e,t)),nextCursor:n.pagination?.nextCursor,hasMore:n.pagination?.hasMore}}catch(e){this.handleError(`listTransactions`,e)}}async getBalances(e){let t=this.toContext(e.tenantId,e.connectionId);try{return(await this.client.getBalances(e.accountId)).filter(t=>e.balanceTypes?.length?e.balanceTypes.includes(t.type):!0).map(e=>this.mapBalance(e,t))}catch(e){this.handleError(`getBalances`,e)}}async getConnectionStatus(e){try{let t=await this.client.getConnectionStatus(e.connectionId);return{connectionId:e.connectionId,tenantId:e.tenantId,status:this.mapConnectionStatus(t.status),lastCheckedAt:t.lastAttemptAt,errorCode:t.errorCode,errorMessage:t.errorMessage,details:t.metadata}}catch(e){this.handleError(`getConnectionStatus`,e)}}mapAccount(e,t){return{id:e.uuid,externalId:e.reference??e.uuid,tenantId:t.tenantId,connectionId:t.connectionId,userId:e.userUuid,displayName:e.name,institutionId:e.institution.id,institutionName:e.institution.name,institutionLogoUrl:e.institution.logoUrl,accountType:e.type??`unknown`,iban:e.iban,bic:e.bic,currency:e.currency??`EUR`,accountNumberMasked:e.metadata?.account_number_masked,ownership:this.mapOwnership(e.metadata?.ownership),status:this.mapAccountStatus(e.status),lastSyncedAt:e.metadata?.last_sync_at,metadata:e.metadata}}mapAccountDetails(e,t){return{...this.mapAccount(e,t),productCode:e.metadata?.product_code,openedAt:e.metadata?.opened_at,closedAt:e.metadata?.closed_at,availableBalance:e.availableBalance??void 0,currentBalance:e.balance??void 0,creditLimit:e.metadata?.credit_limit,customFields:e.metadata}}mapTransaction(e,t){return{id:e.uuid,externalId:e.uuid,tenantId:t.tenantId,accountId:e.accountUuid,connectionId:t.connectionId,amount:e.amount,currency:e.currency,direction:e.direction===`credit`?`credit`:`debit`,description:e.description??e.rawLabel,bookingDate:e.bookingDate,valueDate:e.valueDate,postedAt:e.bookingDate,category:e.category,rawCategory:e.rawLabel,merchantName:e.merchantName,merchantCategoryCode:e.merchantCategoryCode,counterpartyName:e.counterpartyName,counterpartyAccount:e.counterpartyAccount,reference:e.metadata?.reference,status:this.mapTransactionStatus(e.status),metadata:e.metadata}}mapBalance(e,t){return{accountId:e.accountUuid,connectionId:t.connectionId,tenantId:t.tenantId,type:e.type??`current`,currency:e.currency??`EUR`,amount:e.amount,lastUpdatedAt:e.updatedAt,metadata:e.metadata}}toContext(e,t){return{tenantId:e,connectionId:t}}mapOwnership(e){switch(e?.toLowerCase()){case`individual`:case`personal`:return`individual`;case`joint`:return`joint`;case`business`:case`corporate`:return`business`;default:return`unknown`}}mapAccountStatus(e){switch(e?.toLowerCase()){case`active`:case`enabled`:return`active`;case`disabled`:case`inactive`:return`inactive`;case`closed`:return`closed`;case`suspended`:return`suspended`;default:return`active`}}mapTransactionStatus(e){switch(e?.toLowerCase()){case`pending`:case`authorised`:return`pending`;case`booked`:case`posted`:return`booked`;case`cancelled`:case`rejected`:return`cancelled`;default:return`booked`}}mapConnectionStatus(e){switch(e){case`healthy`:return`healthy`;case`pending`:return`degraded`;case`error`:return`error`;case`revoked`:return`disconnected`;default:return`degraded`}}handleError(e,n){throw n instanceof t?(this.logger?.error?.(`[PowensOpenBankingProvider] ${e} failed`,{status:n.status,code:n.code,requestId:n.requestId,message:n.message}),n):(this.logger?.error?.(`[PowensOpenBankingProvider] ${e} failed with unexpected error`,n),n instanceof Error?n:Error(`Powens operation "${e}" failed`))}};export{n as PowensOpenBankingProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{MistralLLMProvider as e}from"./mistral-llm.js";import{MistralEmbeddingProvider as t}from"./mistral-embedding.js";import{QdrantVectorProvider as n}from"./qdrant-vector.js";import{GoogleCloudStorageProvider as r}from"./gcs-storage.js";import{StripePaymentsProvider as i}from"./stripe-payments.js";import{PostmarkEmailProvider as a}from"./postmark-email.js";import{TwilioSmsProvider as o}from"./twilio-sms.js";import{ElevenLabsVoiceProvider as s}from"./elevenlabs-voice.js";import{PowensOpenBankingProvider as c}from"./powens-openbanking.js";import{Buffer as l}from"node:buffer";const u=new Map;var d=class{async createPaymentsProvider(e){let t=await this.loadSecrets(e);switch(e.spec.meta.key){case`payments.stripe`:return new i({apiKey:p(t,`apiKey`,`Stripe API key is required`)});default:throw Error(`Unsupported payments integration: ${e.spec.meta.key}`)}}async createEmailOutboundProvider(e){let t=await this.loadSecrets(e);switch(e.spec.meta.key){case`email.postmark`:return new a({serverToken:p(t,`serverToken`,`Postmark server token is required`),defaultFromEmail:e.config.fromEmail,messageStream:e.config.messageStream});default:throw Error(`Unsupported email integration: ${e.spec.meta.key}`)}}async createSmsProvider(e){let t=await this.loadSecrets(e);switch(e.spec.meta.key){case`sms.twilio`:return new o({accountSid:p(t,`accountSid`,`Twilio account SID is required`),authToken:p(t,`authToken`,`Twilio auth token is required`),fromNumber:e.config.fromNumber});default:throw Error(`Unsupported SMS integration: ${e.spec.meta.key}`)}}async createVectorStoreProvider(e){let t=await this.loadSecrets(e);switch(e.spec.meta.key){case`vectordb.qdrant`:return new n({url:m(e,`apiUrl`,`Qdrant apiUrl config is required`),apiKey:t.apiKey});default:throw Error(`Unsupported vector store integration: ${e.spec.meta.key}`)}}async createObjectStorageProvider(e){let t=await this.loadSecrets(e);switch(e.spec.meta.key){case`storage.s3`:case`storage.gcs`:return new r({bucket:m(e,`bucket`,`Storage bucket is required`),clientOptions:t.type===`service_account`?{credentials:t}:void 0});default:throw Error(`Unsupported storage integration: ${e.spec.meta.key}`)}}async createVoiceProvider(e){let t=await this.loadSecrets(e);switch(e.spec.meta.key){case`ai-voice.elevenlabs`:return new s({apiKey:p(t,`apiKey`,`ElevenLabs API key is required`),defaultVoiceId:e.config.defaultVoiceId});default:throw Error(`Unsupported voice integration: ${e.spec.meta.key}`)}}async createLlmProvider(t){let n=await this.loadSecrets(t);switch(t.spec.meta.key){case`ai-llm.mistral`:return new e({apiKey:p(n,`apiKey`,`Mistral API key is required`),defaultModel:t.config.model});default:throw Error(`Unsupported LLM integration: ${t.spec.meta.key}`)}}async createEmbeddingProvider(e){let n=await this.loadSecrets(e);switch(e.spec.meta.key){case`ai-llm.mistral`:return new t({apiKey:p(n,`apiKey`,`Mistral API key is required`),defaultModel:e.config.embeddingModel});default:throw Error(`Unsupported embeddings integration: ${e.spec.meta.key}`)}}async createOpenBankingProvider(e){let t=await this.loadSecrets(e),n=e.config;switch(e.spec.meta.key){case`openbanking.powens`:{let r=m(e,`environment`,`Powens environment (sandbox | production) must be specified in integration config.`);if(r!==`sandbox`&&r!==`production`)throw Error(`Powens environment "${r}" is invalid. Expected "sandbox" or "production".`);return new c({clientId:p(t,`clientId`,`Powens clientId is required`),clientSecret:p(t,`clientSecret`,`Powens clientSecret is required`),apiKey:t.apiKey,environment:r,baseUrl:n?.baseUrl})}default:throw Error(`Unsupported open banking integration: ${e.spec.meta.key}`)}}async loadSecrets(e){let t=e.connection.meta.id;if(u.has(t))return u.get(t);let n=f(await e.secretProvider.getSecret(e.secretReference));return u.set(t,n),n}};function f(e){let t=l.from(e.data).toString(`utf-8`).trim();if(!t)return{};try{return JSON.parse(t)}catch{return{apiKey:t}}}function p(e,t,n){let r=e[t];if(r==null||r===``)throw Error(n);return r}function m(e,t,n){let r=e.config?.[t];if(r==null)throw Error(n);return r}export{d as IntegrationProviderFactory};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{QdrantClient as e}from"@qdrant/js-client-rest";var t=class{client;createCollectionIfMissing;distance;constructor(t){this.client=t.client??new e({url:t.url,apiKey:t.apiKey,...t.clientParams}),this.createCollectionIfMissing=t.createCollectionIfMissing??!0,this.distance=t.distance??`Cosine`}async upsert(e){if(e.documents.length===0)return;let t=e.documents[0].vector.length;this.createCollectionIfMissing&&await this.ensureCollection(e.collection,t);let n=e.documents.map(e=>({id:e.id,vector:e.vector,payload:{...e.payload,...e.namespace?{namespace:e.namespace}:{},...e.expiresAt?{expiresAt:e.expiresAt.toISOString()}:{}}}));await this.client.upsert(e.collection,{wait:!0,points:n})}async search(e){return(await this.client.search(e.collection,{vector:e.vector,limit:e.topK,filter:e.filter,score_threshold:e.scoreThreshold,with_payload:!0,with_vector:!1})).map(e=>({id:String(e.id),score:e.score,payload:e.payload??void 0,namespace:typeof e.payload==`object`&&e.payload!==null?e.payload.namespace:void 0}))}async delete(e){await this.client.delete(e.collection,{wait:!0,points:e.ids})}async ensureCollection(e,t){try{await this.client.getCollection(e)}catch{await this.client.createCollection(e,{vectors:{size:t,distance:this.distance}})}}};export{t as QdrantVectorProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import e from"stripe";var t=class{stripe;constructor(t){this.stripe=t.stripe??new e(t.apiKey,{apiVersion:`2025-10-29.clover`})}async createCustomer(e){let t=await this.stripe.customers.create({email:e.email,name:e.name,description:e.description,metadata:e.metadata});return this.toCustomer(t)}async getCustomer(e){let t=await this.stripe.customers.retrieve(e);return t.deleted?null:this.toCustomer(t)}async createPaymentIntent(e){let t=await this.stripe.paymentIntents.create({amount:e.amount.amount,currency:e.amount.currency,customer:e.customerId,description:e.description,capture_method:e.captureMethod??`automatic`,confirmation_method:e.confirmationMethod??`automatic`,automatic_payment_methods:{enabled:!0},metadata:e.metadata,return_url:e.returnUrl,statement_descriptor:e.statementDescriptor});return this.toPaymentIntent(t)}async capturePayment(e,t){let n=await this.stripe.paymentIntents.capture(e,t?.amount?{amount_to_capture:t.amount.amount}:void 0);return this.toPaymentIntent(n)}async cancelPaymentIntent(e){let t=await this.stripe.paymentIntents.cancel(e);return this.toPaymentIntent(t)}async refundPayment(e){let t=await this.stripe.refunds.create({payment_intent:e.paymentIntentId,amount:e.amount?.amount,reason:n(e.reason),metadata:e.metadata}),r=typeof t.payment_intent==`string`?t.payment_intent:t.payment_intent?.id??``;return{id:t.id,paymentIntentId:r,amount:{amount:t.amount??0,currency:t.currency?.toUpperCase()??`USD`},status:i(t.status),reason:t.reason??void 0,metadata:this.toMetadata(t.metadata),createdAt:t.created?new Date(t.created*1e3):void 0}}async listInvoices(e){let t=e?.status?.[0],n=t&&t!==`deleted`?t:void 0;return(await this.stripe.invoices.list({customer:e?.customerId,status:n,limit:e?.limit,starting_after:e?.startingAfter})).data.map(e=>this.toInvoice(e))}async listTransactions(e){return(await this.stripe.charges.list({customer:e?.customerId,payment_intent:e?.paymentIntentId,limit:e?.limit,starting_after:e?.startingAfter})).data.map(e=>({id:e.id,paymentIntentId:typeof e.payment_intent==`string`?e.payment_intent:e.payment_intent?.id,amount:{amount:e.amount,currency:e.currency?.toUpperCase()??`USD`},type:`capture`,status:a(e.status),description:e.description??void 0,createdAt:new Date(e.created*1e3),metadata:this.mergeMetadata(this.toMetadata(e.metadata),{balanceTransaction:typeof e.balance_transaction==`string`?e.balance_transaction:void 0})}))}toCustomer(e){let t=this.toMetadata(e.metadata),n=t?.updatedAt;return{id:e.id,email:e.email??void 0,name:e.name??void 0,metadata:t,createdAt:e.created?new Date(e.created*1e3):void 0,updatedAt:n?new Date(n):void 0}}toPaymentIntent(e){let t=this.toMetadata(e.metadata);return{id:e.id,amount:this.toMoney(e.amount_received??e.amount??0,e.currency),status:r(e.status),customerId:typeof e.customer==`string`?e.customer:e.customer?.id,description:e.description??void 0,clientSecret:e.client_secret??void 0,metadata:t,createdAt:new Date(e.created*1e3),updatedAt:e.canceled_at==null?new Date(e.created*1e3):new Date(e.canceled_at*1e3)}}toInvoice(e){let t=this.toMetadata(e.metadata);return{id:e.id,number:e.number??void 0,status:e.status??`draft`,amountDue:this.toMoney(e.amount_due??0,e.currency),amountPaid:this.toMoney(e.amount_paid??0,e.currency),customerId:typeof e.customer==`string`?e.customer:e.customer?.id,dueDate:e.due_date?new Date(e.due_date*1e3):void 0,hostedInvoiceUrl:e.hosted_invoice_url??void 0,metadata:t,createdAt:e.created?new Date(e.created*1e3):void 0,updatedAt:e.status_transitions?.finalized_at?new Date(e.status_transitions.finalized_at*1e3):void 0}}toMoney(e,t){return{amount:e,currency:t?.toUpperCase()??`USD`}}toMetadata(e){if(!e)return;let t=Object.entries(e).filter(e=>typeof e[1]==`string`);if(t.length!==0)return Object.fromEntries(t)}mergeMetadata(e,t){let n=Object.entries(t).filter(e=>typeof e[1]==`string`);if(!(!e&&n.length===0))return{...e??{},...Object.fromEntries(n)}}};function n(e){if(e)return[`duplicate`,`fraudulent`,`requested_by_customer`].includes(e)?e:void 0}function r(e){switch(e){case`requires_payment_method`:return`requires_payment_method`;case`requires_confirmation`:return`requires_confirmation`;case`requires_action`:case`requires_capture`:return`requires_action`;case`processing`:return`processing`;case`succeeded`:return`succeeded`;case`canceled`:return`canceled`;default:return`requires_payment_method`}}function i(e){switch(e){case`pending`:case`succeeded`:case`failed`:case`canceled`:return e;default:return`pending`}}function a(e){switch(e){case`pending`:case`processing`:return`pending`;case`succeeded`:return`succeeded`;case`failed`:case`canceled`:return`failed`;default:return`pending`}}export{t as StripePaymentsProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import e from"twilio";var t=class{client;fromNumber;constructor(t){this.client=t.client??e(t.accountSid,t.authToken),this.fromNumber=t.fromNumber}async sendSms(e){let t=await this.client.messages.create({to:e.to,from:e.from??this.fromNumber,body:e.body});return{id:t.sid,to:t.to??e.to,from:t.from??e.from??this.fromNumber??``,body:t.body??e.body,status:n(t.status),sentAt:t.dateCreated?new Date(t.dateCreated):void 0,deliveredAt:t.status===`delivered`&&t.dateUpdated?new Date(t.dateUpdated):void 0,price:t.price?Number(t.price):void 0,priceCurrency:t.priceUnit??void 0,errorCode:t.errorCode?String(t.errorCode):void 0,errorMessage:t.errorMessage??void 0}}async getDeliveryStatus(e){let t=await this.client.messages(e).fetch();return{status:n(t.status),errorCode:t.errorCode?String(t.errorCode):void 0,errorMessage:t.errorMessage??void 0,updatedAt:t.dateUpdated?new Date(t.dateUpdated):new Date}}};function n(e){switch(e){case`queued`:case`accepted`:case`scheduled`:return`queued`;case`sending`:case`processing`:return`sending`;case`sent`:return`sent`;case`delivered`:return`delivered`;case`undelivered`:return`undelivered`;case`failed`:case`canceled`:return`failed`;default:return`queued`}}export{t as TwilioSmsProvider};
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__export as e,__reExport as t}from"./_virtual/rolldown_runtime.js";import"./calendar.js";import"./email.js";import"./embedding.js";import{MistralLLMProvider as n}from"./impls/mistral-llm.js";import{MistralEmbeddingProvider as r}from"./impls/mistral-embedding.js";import{QdrantVectorProvider as i}from"./impls/qdrant-vector.js";import{GoogleCloudStorageProvider as a}from"./impls/gcs-storage.js";import{StripePaymentsProvider as o}from"./impls/stripe-payments.js";import{PostmarkEmailProvider as s}from"./impls/postmark-email.js";import{TwilioSmsProvider as c}from"./impls/twilio-sms.js";import{ElevenLabsVoiceProvider as l}from"./impls/elevenlabs-voice.js";import{PowensClient as u,PowensClientError as d}from"./impls/powens-client.js";import{PowensOpenBankingProvider as f}from"./impls/powens-openbanking.js";import{IntegrationProviderFactory as p}from"./impls/provider-factory.js";import{GmailInboundProvider as m}from"./impls/gmail-inbound.js";import{GmailOutboundProvider as h}from"./impls/gmail-outbound.js";import{GoogleCalendarProvider as g}from"./impls/google-calendar.js";import"./impls/index.js";import"./openbanking.js";import"./llm.js";import"./vector-store.js";import"./storage.js";import"./sms.js";import"./payments.js";import"./voice.js";export*from"@lssm/lib.contracts/integrations/providers/calendar";export*from"@lssm/lib.contracts/integrations/providers/email";export*from"@lssm/lib.contracts/integrations/providers/embedding";export*from"@lssm/lib.contracts/integrations/providers/openbanking";export*from"@lssm/lib.contracts/integrations/providers/llm";export*from"@lssm/lib.contracts/integrations/providers/vector-store";export*from"@lssm/lib.contracts/integrations/providers/storage";export*from"@lssm/lib.contracts/integrations/providers/sms";export*from"@lssm/lib.contracts/integrations/providers/payments";export*from"@lssm/lib.contracts/integrations/providers/voice";export{l as ElevenLabsVoiceProvider,m as GmailInboundProvider,h as GmailOutboundProvider,g as GoogleCalendarProvider,a as GoogleCloudStorageProvider,p as IntegrationProviderFactory,r as MistralEmbeddingProvider,n as MistralLLMProvider,s as PostmarkEmailProvider,u as PowensClient,d as PowensClientError,f as PowensOpenBankingProvider,i as QdrantVectorProvider,o as StripePaymentsProvider,c as TwilioSmsProvider};
|
package/dist/llm.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__reExport as e}from"./_virtual/rolldown_runtime.js";export*from"@lssm/lib.contracts/integrations/providers/llm";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__reExport as e}from"./_virtual/rolldown_runtime.js";export*from"@lssm/lib.contracts/integrations/providers/openbanking";
|
package/dist/payments.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__reExport as e}from"./_virtual/rolldown_runtime.js";export*from"@lssm/lib.contracts/integrations/providers/payments";
|
package/dist/runtime.js
ADDED
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{SecretProviderError as e,normalizeSecretPayload as t,parseSecretUri as n}from"@lssm/integration.runtime/secrets/provider";export{e as SecretProviderError,t as normalizeSecretPayload,n as parseSecretUri};
|
package/dist/sms.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__reExport as e}from"./_virtual/rolldown_runtime.js";export*from"@lssm/lib.contracts/integrations/providers/sms";
|
package/dist/storage.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__reExport as e}from"./_virtual/rolldown_runtime.js";export*from"@lssm/lib.contracts/integrations/providers/storage";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__reExport as e}from"./_virtual/rolldown_runtime.js";export*from"@lssm/lib.contracts/integrations/providers/vector-store";
|
package/dist/voice.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__reExport as e}from"./_virtual/rolldown_runtime.js";export*from"@lssm/lib.contracts/integrations/providers/voice";
|
package/package.json
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lssm/integration.providers-impls",
|
|
3
|
+
"version": "0.0.0-canary-20251213172311",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"README.md"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
|
|
14
|
+
"build": "bun build:bundle && bun build:types",
|
|
15
|
+
"build:bundle": "tsdown",
|
|
16
|
+
"build:types": "tsc --noEmit",
|
|
17
|
+
"dev": "bun build:bundle --watch",
|
|
18
|
+
"clean": "rimraf dist .turbo",
|
|
19
|
+
"lint": "bun lint:fix",
|
|
20
|
+
"lint:fix": "eslint src --fix",
|
|
21
|
+
"lint:check": "eslint src",
|
|
22
|
+
"test": "bun test"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@lssm/lib.contracts": "workspace:*",
|
|
26
|
+
"@lssm/integration.runtime": "workspace:*",
|
|
27
|
+
"@elevenlabs/elevenlabs-js": "^2.26.0",
|
|
28
|
+
"@google-cloud/storage": "^7.18.0",
|
|
29
|
+
"@mistralai/mistralai": "^1.2.3",
|
|
30
|
+
"@qdrant/js-client-rest": "^1.16.2",
|
|
31
|
+
"googleapis": "^167.0.0",
|
|
32
|
+
"postmark": "^4.0.4",
|
|
33
|
+
"stripe": "^19.1.0",
|
|
34
|
+
"twilio": "^5.10.7",
|
|
35
|
+
"zod": "^4.1.13"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@lssm/tool.tsdown": "workspace:*",
|
|
39
|
+
"@lssm/tool.typescript": "workspace:*",
|
|
40
|
+
"tsdown": "^0.17.0",
|
|
41
|
+
"typescript": "^5.9.3"
|
|
42
|
+
},
|
|
43
|
+
"exports": {
|
|
44
|
+
".": "./src/index.ts",
|
|
45
|
+
"./calendar": "./src/calendar.ts",
|
|
46
|
+
"./email": "./src/email.ts",
|
|
47
|
+
"./embedding": "./src/embedding.ts",
|
|
48
|
+
"./impls": "./src/impls/index.ts",
|
|
49
|
+
"./impls/elevenlabs-voice": "./src/impls/elevenlabs-voice.ts",
|
|
50
|
+
"./impls/gcs-storage": "./src/impls/gcs-storage.ts",
|
|
51
|
+
"./impls/gmail-inbound": "./src/impls/gmail-inbound.ts",
|
|
52
|
+
"./impls/gmail-outbound": "./src/impls/gmail-outbound.ts",
|
|
53
|
+
"./impls/google-calendar": "./src/impls/google-calendar.ts",
|
|
54
|
+
"./impls/mistral-embedding": "./src/impls/mistral-embedding.ts",
|
|
55
|
+
"./impls/mistral-llm": "./src/impls/mistral-llm.ts",
|
|
56
|
+
"./impls/postmark-email": "./src/impls/postmark-email.ts",
|
|
57
|
+
"./impls/powens-client": "./src/impls/powens-client.ts",
|
|
58
|
+
"./impls/powens-openbanking": "./src/impls/powens-openbanking.ts",
|
|
59
|
+
"./impls/provider-factory": "./src/impls/provider-factory.ts",
|
|
60
|
+
"./impls/qdrant-vector": "./src/impls/qdrant-vector.ts",
|
|
61
|
+
"./impls/stripe-payments": "./src/impls/stripe-payments.ts",
|
|
62
|
+
"./impls/twilio-sms": "./src/impls/twilio-sms.ts",
|
|
63
|
+
"./llm": "./src/llm.ts",
|
|
64
|
+
"./openbanking": "./src/openbanking.ts",
|
|
65
|
+
"./payments": "./src/payments.ts",
|
|
66
|
+
"./runtime": "./src/runtime.ts",
|
|
67
|
+
"./secrets/provider": "./src/secrets/provider.ts",
|
|
68
|
+
"./sms": "./src/sms.ts",
|
|
69
|
+
"./storage": "./src/storage.ts",
|
|
70
|
+
"./vector-store": "./src/vector-store.ts",
|
|
71
|
+
"./voice": "./src/voice.ts",
|
|
72
|
+
"./*": "./*"
|
|
73
|
+
},
|
|
74
|
+
"publishConfig": {
|
|
75
|
+
"access": "public",
|
|
76
|
+
"exports": {
|
|
77
|
+
".": "./dist/index.js",
|
|
78
|
+
"./calendar": "./dist/calendar.js",
|
|
79
|
+
"./email": "./dist/email.js",
|
|
80
|
+
"./embedding": "./dist/embedding.js",
|
|
81
|
+
"./impls": "./dist/impls/index.js",
|
|
82
|
+
"./impls/elevenlabs-voice": "./dist/impls/elevenlabs-voice.js",
|
|
83
|
+
"./impls/gcs-storage": "./dist/impls/gcs-storage.js",
|
|
84
|
+
"./impls/gmail-inbound": "./dist/impls/gmail-inbound.js",
|
|
85
|
+
"./impls/gmail-outbound": "./dist/impls/gmail-outbound.js",
|
|
86
|
+
"./impls/google-calendar": "./dist/impls/google-calendar.js",
|
|
87
|
+
"./impls/mistral-embedding": "./dist/impls/mistral-embedding.js",
|
|
88
|
+
"./impls/mistral-llm": "./dist/impls/mistral-llm.js",
|
|
89
|
+
"./impls/postmark-email": "./dist/impls/postmark-email.js",
|
|
90
|
+
"./impls/powens-client": "./dist/impls/powens-client.js",
|
|
91
|
+
"./impls/powens-openbanking": "./dist/impls/powens-openbanking.js",
|
|
92
|
+
"./impls/provider-factory": "./dist/impls/provider-factory.js",
|
|
93
|
+
"./impls/qdrant-vector": "./dist/impls/qdrant-vector.js",
|
|
94
|
+
"./impls/stripe-payments": "./dist/impls/stripe-payments.js",
|
|
95
|
+
"./impls/twilio-sms": "./dist/impls/twilio-sms.js",
|
|
96
|
+
"./llm": "./dist/llm.js",
|
|
97
|
+
"./openbanking": "./dist/openbanking.js",
|
|
98
|
+
"./payments": "./dist/payments.js",
|
|
99
|
+
"./runtime": "./dist/runtime.js",
|
|
100
|
+
"./secrets/provider": "./dist/secrets/provider.js",
|
|
101
|
+
"./sms": "./dist/sms.js",
|
|
102
|
+
"./storage": "./dist/storage.js",
|
|
103
|
+
"./vector-store": "./dist/vector-store.js",
|
|
104
|
+
"./voice": "./dist/voice.js",
|
|
105
|
+
"./*": "./*"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|