@adaptive-ai/sdk 0.1.0 → 0.1.3

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.
@@ -1,2 +1,2 @@
1
- import {createTRPCProxyClient,httpLink}from'@trpc/client';import {AsyncLocalStorage}from'async_hooks';import {nanoid}from'nanoid';import _ from'superjson';import*as S from'zod';function O(e){let t=Object.create(null);for(let r in e){let n=e[r];t[n]=r;}return t}var y={PARSE_ERROR:-32700,BAD_REQUEST:-32600,INTERNAL_SERVER_ERROR:-32603,NOT_IMPLEMENTED:-32603,UNAUTHORIZED:-32001,FORBIDDEN:-32003,NOT_FOUND:-32004,METHOD_NOT_SUPPORTED:-32005,TIMEOUT:-32008,CONFLICT:-32009,PRECONDITION_FAILED:-32012,PAYLOAD_TOO_LARGE:-32013,UNPROCESSABLE_CONTENT:-32022,TOO_MANY_REQUESTS:-32029,CLIENT_CLOSED_REQUEST:-32099};O(y);O(y);typeof window>"u"||"Deno"in window||globalThis.process?.env?.NODE_ENV==="test"||!!globalThis.process?.env?.JEST_WORKER_ID||!!globalThis.process?.env?.VITEST_WORKER_ID;var h=class e extends Error{static prefix="__MISSING AUTH FOR SCOPE";static jsonRpcCode=-32001;constructor({provider:t,scope:r,accountId:n,popup:o=false}){let s=btoa(JSON.stringify({provider:t,scope:r,accountId:n}));super(`${e.prefix}: ${s}${o?" --popup":" end"}`);}jsonRpcError(){return {code:e.jsonRpcCode,message:this.message}}static check(t){return t?.message?.startsWith(e.prefix)}};function Ge({baseUrl:e,realtimeDomain:t,guestServicesUrl:r}){globalThis.env||(globalThis.env={},globalThis.env.BASE_URL=e,globalThis.env.REALTIME_DOMAIN=t,globalThis.env.GUEST_SERVICES_URL=r,console.log("Adaptive SDK server environment initialized"));}var Q=new AsyncLocalStorage,k=null,K=new Set,P=null;function u(){return k||(k=createTRPCProxyClient({transformer:_,links:[httpLink({url:env.GUEST_SERVICES_URL,transformer:_,headers:()=>{let e=M();if(!e)throw new Error("Missing request context");return {"x-request-id":e.requestId}}})]})),k}function M(){return Q.getStore()}function he(e){let t=M();t&&Object.assign(t,e);}async function We(e,t){return Q.run(e,t)}function J(e){throw new h({provider:e?.provider??"AC1",popup:true})}async function Ke(e){let r=await u().getCurrentUser.mutate(e);if(r?.error==="SEED")throw new Error('Call to "getUserId" in seed function is not allowed. Seed functions should not depend on user data.');if(!r?.userId){if(e?.throwIfNotLoggedIn??true)throw new h({provider:"AC1"});return null}return r.userId}async function Je(e){let r=await u().getCurrentUser.mutate({throwIfNotLoggedIn:e?.required});if(r?.error==="SEED")throw new Error('Call to "getAuth" in seed function is not allowed. Seed functions should not depend on user data.');if(r.userId)return {userId:r.userId,status:"authenticated",signIn:J,providers:r.providers};if(e?.required)throw new h({provider:"AC1"});return {userId:null,status:"unauthenticated",signIn:J,providers:[]}}async function He(e){let t=u(),r=await t.upsertTaskStatus.mutate({status:"RUNNING"});return K.add(r.id),he({hasTasks:true}),(async()=>{let n=r.id;try{await e(),await t.upsertTaskStatus.mutate({id:n,status:"COMPLETED"});}catch(o){console.error(`Task ${n} failed:`,o.message),await t.upsertTaskStatus.mutate({id:n,status:"FAILED",error:o});}finally{K.delete(r.id);}})(),r}async function Qe(e){return await u().getTaskStatus.mutate({id:e})}async function Ze(e){let t=u(),r={...e,schema:S.toJSONSchema(e.schema)};return await t.extractStructuredDataFromContent.mutate(r)}async function Xe(e){return await u().extractTextFromContent.mutate(e)}async function et(e){let t=u(),{stream:r,onProgress:n,...o}=e,s={...o,returnType:S.toJSONSchema(e.returnType),customTools:e.customTools?.map(d=>({...d,inputSchema:S.toJSONSchema(d.inputSchema)}))};if(r??n){let d=nanoid(32),a=new WebSocket(`wss://${env.REALTIME_DOMAIN}/${d}`),l=-1,c=p=>{P=Date.now();try{let g=JSON.parse(p.data.toString());if(g?.id&&g.id>l){let Z=_.parse(g.payload);g.requestAgentToolCalls instanceof Array?n?.(g.requestAgentToolCalls):r?.(Z),l=g.id;}}catch{}};a.addEventListener("message",c);let m=await t.requestMultimodalModel.mutate({...s,realtimeChannelId:d});return r&&r(m),a.close(),a.removeEventListener("message",c),m}return await t.requestMultimodalModel.mutate(s)}async function tt(e){return await u().textToImage.mutate(e)}async function rt(e){return await u().textToSpeech.mutate(e)}async function nt(e){return await u().generateSoundEffect.mutate(e)}async function ot(e){return await u().generateDialogue.mutate(e)}async function st(e){return await u().generateMusic.mutate(e)}async function it(e){let t=u(),r;return typeof e.bufferOrBase64=="string"?r=e.bufferOrBase64:r=e.bufferOrBase64.toString("base64"),await t.uploadToBucket.mutate({base64:r,fileName:e.fileName})}async function at(e){return await u().getOAuthToken.mutate({connectionId:e.connectionId})}async function ut(e){let r=await u().getOAuthConnectionForCurrentUser.mutate({...e,scope:e.scope??[]});if(!r&&e.required)throw new h({provider:e.provider,scope:e.scope,popup:true});return r}async function ct(e){return await u().getOAuthConnection.mutate(e)}async function dt(e){return await u().queryOAuthConnections.mutate(e)}async function lt(e){return await u().deleteOAuthConnection.mutate(e)}async function ft(e){await u().sendEmail.mutate(e);}async function pt(e){let t=u();if(!e.email)throw new Error("Email is required");if(!e.markdown)throw new Error("`markdown` content is required when inviting by email");return await t.inviteUser.mutate(e)}async function mt(e){return await u().searchWithGoogle.mutate(e)}async function gt(){return await u().isAppOwner.mutate()}async function wt(e){return await u().generateCrossAppToken.mutate(e)}async function ht(e){return await u().createProduct.mutate(e)}async function yt(){return await u().listProducts.mutate()}async function Et(e){return await u().listUserPurchases.mutate(e)}async function Tt(e){await u().discontinueProduct.mutate(e);}function _t({channelId:e,onUpdate:t}){let r=new WebSocket(`wss://${env.REALTIME_DOMAIN}/${e}`),n=-1;function o(s){t&&(P=Date.now());try{let i=JSON.parse(s.data.toString());if(i?.id&&i.id>n){let d=_.parse(i.payload);t?.(d),n=i.id;}}catch{}}return r.addEventListener("message",o),{destroy(){r.close(),r.removeEventListener("message",o);}}}async function H({channelId:e,data:t}){P=Date.now(),await fetch(`https://${env.REALTIME_DOMAIN}/${e}`,{method:"POST",body:_.stringify(t)}).catch(console.error);}async function Rt(){let e,t=M()?.channelId;if(!t)throw new Error("API's using `startRealtimeResponse` must be called via `useRealtimeMutation`.");return {next(r){e=r,H({channelId:t,data:r});},end(){return H({channelId:t,data:e}),e}}}async function St(e){return await u().getTTSVoicesCatalog.mutate(e)}async function Pt(e){return await u().getDialogueVoicesCatalog.mutate(e)}async function vt(e){return await u().getImageModelsCatalog.mutate(e)}function xt(){return env.BASE_URL}function Ot(){return P}
2
- export{ht as createProduct,lt as deleteOAuthConnection,Tt as discontinueProduct,Xe as extractTextFromContent,wt as generateCrossAppToken,ot as generateDialogue,st as generateMusic,nt as generateSoundEffect,Je as getAuth,xt as getBaseUrl,Pt as getDialogueVoicesCatalog,vt as getImageModelsCatalog,Ot as getLastStreamTime,ct as getOAuthConnection,ut as getOAuthConnectionForCurrentUser,at as getOAuthToken,_t as getRealtimeStore,M as getRequestContext,Ze as getStructuredDataFromContent,St as getTTSVoicesCatalog,Qe as getTaskStatus,Ke as getUserId,Ge as initializeServerEnvironment,pt as inviteUser,gt as isAppOwner,yt as listProducts,Et as listUserPurchases,dt as queryOAuthConnections,He as queueTask,et as requestMultimodalModel,We as runWithContext,mt as searchWithGoogle,ft as sendEmail,H as setRealtimeStore,he as setRequestContext,Rt as startRealtimeResponse,tt as textToImage,rt as textToSpeech,it as upload};
1
+ import {createTRPCProxyClient,httpLink}from'@trpc/client';import {AsyncLocalStorage}from'async_hooks';import y from'superjson';function v(e){let r=Object.create(null);for(let t in e){let n=e[t];r[n]=t;}return r}var w={PARSE_ERROR:-32700,BAD_REQUEST:-32600,INTERNAL_SERVER_ERROR:-32603,NOT_IMPLEMENTED:-32603,UNAUTHORIZED:-32001,FORBIDDEN:-32003,NOT_FOUND:-32004,METHOD_NOT_SUPPORTED:-32005,TIMEOUT:-32008,CONFLICT:-32009,PRECONDITION_FAILED:-32012,PAYLOAD_TOO_LARGE:-32013,UNPROCESSABLE_CONTENT:-32022,TOO_MANY_REQUESTS:-32029,CLIENT_CLOSED_REQUEST:-32099};v(w);v(w);typeof window>"u"||"Deno"in window||globalThis.process?.env?.NODE_ENV==="test"||!!globalThis.process?.env?.JEST_WORKER_ID||!!globalThis.process?.env?.VITEST_WORKER_ID;var _=class e extends Error{static prefix="__MISSING AUTH FOR SCOPE";static jsonRpcCode=-32001;constructor({provider:r,scope:t,accountId:n,popup:o=false}){let s=btoa(JSON.stringify({provider:r,scope:t,accountId:n}));super(`${e.prefix}: ${s}${o?" --popup":" end"}`);}jsonRpcError(){return {code:e.jsonRpcCode,message:this.message}}static check(r){return r?.message?.startsWith(e.prefix)}};var z=createTRPCProxyClient({transformer:y,links:[]});function je({baseUrl:e,realtimeDomain:r,guestServicesUrl:t}){globalThis.env||(globalThis.env={},globalThis.env.BASE_URL=e,globalThis.env.REALTIME_DOMAIN=r,globalThis.env.GUEST_SERVICES_URL=t,z=createTRPCProxyClient({transformer:y,links:[httpLink({url:t,transformer:y,headers:()=>{let n=C();if(!n)throw new Error("Missing request context");return {"x-request-id":n.requestId}}})]}),console.log("Adaptive SDK server environment initialized"));}var G=new AsyncLocalStorage,fe=new Proxy({},{get(e,r){return async t=>{if(globalThis.env===void 0)throw new Error("Adaptive SDK server environment is not initialized. Please call initializeServerEnvironment first.");let o=z[r];if(!o||typeof o.mutate!="function")throw new Error(`Property "${String(r)}" is not a mutation procedure`);return o.mutate(t)}}});function C(){return G.getStore()}function Le(e){let r=C();r&&Object.assign(r,e);}async function $e(e,r){return G.run(e,r)}function Be(){return globalThis.env.BASE_URL}var A=null;function Ve(){return A}function Ye({channelId:e,onUpdate:r}){let t=new WebSocket(`wss://${globalThis.env.REALTIME_DOMAIN}/${e}`),n=-1;function o(s){r&&(A=Date.now());try{let i=JSON.parse(s.data.toString());if(i?.id&&i.id>n){let d=y.parse(i.payload);r?.(d),n=i.id;}}catch{}}return t.addEventListener("message",o),{destroy(){t.close(),t.removeEventListener("message",o);}}}async function Y({channelId:e,data:r}){A=Date.now(),await fetch(`https://${globalThis.env.REALTIME_DOMAIN}/${e}`,{method:"POST",body:y.stringify(r)}).catch(console.error);}async function Ke(){let e,r=C()?.channelId;if(!r)throw new Error("API's using `startRealtimeResponse` must be called via `useRealtimeMutation`.");return {next(t){e=t,Y({channelId:r,data:t});},end(){return Y({channelId:r,data:e}),e}}}function K(e){throw new _({provider:e?.provider??"AC1",popup:true})}async function He(e){let r=await fe.getCurrentUser();if(r?.error==="SEED")throw new Error('Call to "getAuth" in seed function is not allowed. Seed functions should not depend on user data.');if(r.userId)return {userId:r.userId,status:"authenticated",signIn:K,providers:r.providers};if(e?.required)throw new _({provider:"AC1"});return {userId:null,status:"unauthenticated",signIn:K,providers:[]}}
2
+ export{He as getAuth,Be as getBaseUrl,Ve as getLastStreamTime,Ye as getRealtimeStore,C as getRequestContext,je as initializeServerEnvironment,fe as mcp,$e as runWithContext,Y as setRealtimeStore,Le as setRequestContext,Ke as startRealtimeResponse};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptive-ai/sdk",
3
- "version": "0.1.0",
3
+ "version": "0.1.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "exports": {
@@ -19,14 +19,16 @@
19
19
  "LICENSE"
20
20
  ],
21
21
  "peerDependencies": {
22
- "@tanstack/react-query": ">=4",
22
+ "@tanstack/react-query": ">=5",
23
23
  "@trpc/client": ">=10",
24
+ "@trpc/server": ">=10",
25
+ "typed-rpc": ">=5",
24
26
  "lodash": ">=4",
25
27
  "nanoid": ">=4",
26
28
  "openai": ">=4",
27
29
  "react": ">=18",
28
30
  "superjson": ">=1",
29
- "zod": ">=4"
31
+ "zod": ">=3"
30
32
  },
31
33
  "peerDependenciesMeta": {
32
34
  "@tanstack/react-query": {
@@ -54,7 +56,7 @@
54
56
  "browser-image-compression": "^2.0.2",
55
57
  "dom-to-image-more": "^3.7.2",
56
58
  "eslint": "^8.47.0",
57
- "eslint-config-next": "15.2.1",
59
+ "eslint-config-next": "15.5.6",
58
60
  "eslint-config-prettier": "^9.0.0",
59
61
  "eslint-formatter-codeframe": "^7.32.1",
60
62
  "eslint-plugin-prettier": "^5.0.1",
@@ -79,6 +81,7 @@
79
81
  "lint": "NODE_OPTIONS='--max-old-space-size=8192' eslint --cache .",
80
82
  "lint:fix": "eslint --cache --fix .",
81
83
  "check": "NODE_OPTIONS='--max-old-space-size=8192' tsc --noEmit",
84
+ "bundle": "./bundle.sh",
82
85
  "build": "tsup",
83
86
  "clean": "rimraf dist"
84
87
  }