twenty-sdk 2.55.0 → 2.56.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.
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@sniptt/guards"),t=require("twenty-client-sdk/metadata"),n=require("twenty-client-sdk/rest");var r=t=>!(0,e.isUndefined)(t)&&!(0,e.isNull)(t),i=t=>{let n={type:`unknown`};switch(t.type){case`string`:n.type=`string`;break;case`number`:case`integer`:n.type=`number`;break;case`boolean`:n.type=`boolean`;break;case`array`:n.type=`array`,t.items&&(n.items=i(t.items));break;case`object`:n.type=`object`,t.properties&&(n.properties=Object.fromEntries(Object.entries(t.properties).map(([e,t])=>[e,i(t)])));break;case`record`:n.type=`record`;break;case`records`:n.type=`records`;break;default:n.type=`unknown`}return Array.isArray(t.enum)&&(n.enum=t.enum.filter(e=>typeof e==`string`)),t.multiline===!0&&(n.multiline=!0),(0,e.isNonEmptyString)(t.label)&&(n.label=t.label),(0,e.isNonEmptyString)(t.objectUniversalIdentifier)&&(n.objectUniversalIdentifier=t.objectUniversalIdentifier),n},a=e=>[i(e)];a({type:`object`,properties:{a:{type:`string`},b:{type:`number`}}});var o=`RetryableLogicFunctionError`,s=class extends Error{constructor(e){super(e),this.name=o}},c=class extends Error{constructor(e){super(`App connection ${e} requires the user to reconnect (authFailedAt is set). Surface a "Reconnect" prompt in your UI.`),this.name=`AppConnectionAuthFailedError`,this.connectionId=e}},l={user:`USER`,workspace:`WORKSPACE`},u=`TWENTY_API_URL`,d=`TWENTY_APP_APPLICATION_ACCESS_TOKEN`,f={USER:`user`,WORKSPACE:`workspace`},p=e=>({...e,visibility:f[e.scope]}),m=()=>process.env.TWENTY_APP_APPLICATION_ACCESS_TOKEN??process.env.TWENTY_APP_ACCESS_TOKEN,h=async({query:e,variables:t,caller:n})=>{let r=process.env[u],i=m();if(!r||!i)throw Error(`${n}() requires the app runtime env vars ${u} and ${d}.`);let a=await fetch(`${r}/metadata`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${i}`},body:JSON.stringify({query:e,variables:t})});if(!a.ok)throw Error(`${n}() failed: HTTP ${a.status} ${a.statusText}`);let o=await a.json();if(o.errors&&o.errors.length>0)throw Error(`${n}() failed: ${o.errors.map(e=>e.message).join(`, `)}`);if(!o.data)throw Error(`${n}() failed: response contained no data.`);return o.data},g=`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@sniptt/guards"),t=require("twenty-client-sdk/metadata"),n=require("twenty-client-sdk/rest");var r=t=>!(0,e.isUndefined)(t)&&!(0,e.isNull)(t),i=t=>{let n={type:`unknown`};switch(t.type){case`string`:n.type=`string`;break;case`number`:case`integer`:n.type=`number`;break;case`boolean`:n.type=`boolean`;break;case`array`:n.type=`array`,t.items&&(n.items=i(t.items));break;case`object`:n.type=`object`,t.properties&&(n.properties=Object.fromEntries(Object.entries(t.properties).map(([e,t])=>[e,i(t)])));break;case`record`:n.type=`record`;break;case`records`:n.type=`records`;break;default:n.type=`unknown`}return Array.isArray(t.enum)&&(n.enum=t.enum.filter(e=>typeof e==`string`)),t.multiline===!0&&(n.multiline=!0),(0,e.isNonEmptyString)(t.label)&&(n.label=t.label),(0,e.isNonEmptyString)(t.objectUniversalIdentifier)&&(n.objectUniversalIdentifier=t.objectUniversalIdentifier),n},a=e=>[i(e)];a({type:`object`,properties:{a:{type:`string`},b:{type:`number`}}});var o=`RetryableLogicFunctionError`,s=class extends Error{constructor(e){super(e),this.name=o}},c=class extends Error{constructor(e){super(`App connection ${e} requires the user to reconnect (authFailedAt is set). Surface a "Reconnect" prompt in your UI.`),this.name=`AppConnectionAuthFailedError`,this.connectionId=e}},l={user:`USER`,workspace:`WORKSPACE`},u=`TWENTY_API_URL`,d=`TWENTY_APP_ACCESS_TOKEN`,f=`TWENTY_APP_APPLICATION_ACCESS_TOKEN`,p={USER:`user`,WORKSPACE:`workspace`},m=e=>({...e,visibility:p[e.scope]}),h=()=>process.env.TWENTY_APP_APPLICATION_ACCESS_TOKEN??process.env.TWENTY_APP_ACCESS_TOKEN,g=()=>process.env.TWENTY_APP_ACCESS_TOKEN??process.env.TWENTY_APP_APPLICATION_ACCESS_TOKEN,_=({caller:t,isActingAsCaller:n=!1})=>{let r=process.env[u],i=n?g():h();if(!(0,e.isNonEmptyString)(r)||!(0,e.isNonEmptyString)(i))throw Error(`${t}() requires the app runtime env vars ${u} and ${f} (or ${d}).`);return{apiUrl:r,accessToken:i}},v=async({query:e,variables:t,caller:n,signal:r,isActingAsCaller:i=!1})=>{let{apiUrl:a,accessToken:o}=_({caller:n,isActingAsCaller:i}),s=await fetch(`${a}/metadata`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${o}`},body:JSON.stringify({query:e,variables:t}),signal:r});if(!s.ok)throw Error(`${n}() failed: HTTP ${s.status} ${s.statusText}`);let c=await s.json();if(c.errors&&c.errors.length>0)throw Error(`${n}() failed: ${c.errors.map(e=>e.message).join(`, `)}`);if(!c.data)throw Error(`${n}() failed: response contained no data.`);return c.data},y=`
2
2
  query GetAppConnection($id: ID!) {
3
3
  appConnection(id: $id) {
4
4
  id
@@ -16,7 +16,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
16
16
  authFailedReason
17
17
  }
18
18
  }
19
- `,_=async e=>{let{appConnection:t}=await h({query:g,variables:{id:e},caller:`getConnection`});if(t.authFailedAt!==null)throw new c(t.id);return p(t)},v=`agentChatAssistant`,y=({objectNameSingular:e,recordId:t,displayName:n})=>e===`agentChatAssistant`?`@${n}`:`[[record:${e}:${t}:${n}]]`,b=t=>(0,e.isNonEmptyString)(t)?t.charAt(0).toUpperCase()+t.slice(1):``,x=`
19
+ `,ee=async e=>{let{appConnection:t}=await v({query:y,variables:{id:e},caller:`getConnection`});if(t.authFailedAt!==null)throw new c(t.id);return m(t)},b=`agentChatAssistant`,x=({objectNameSingular:e,recordId:t,displayName:n})=>e===`agentChatAssistant`?`@${n}`:`[[record:${e}:${t}:${n}]]`,S=t=>(0,e.isNonEmptyString)(t)?t.charAt(0).toUpperCase()+t.slice(1):``,C=`
20
20
  query ListAppConnections($filter: ListAppConnectionsInput) {
21
21
  appConnections(filter: $filter) {
22
22
  id
@@ -34,11 +34,11 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
34
34
  authFailedReason
35
35
  }
36
36
  }
37
- `,ee=async({visibility:e,...t}={})=>{let{appConnections:n}=await h({query:x,variables:{filter:{...t,scope:t.scope??(r(e)?l[e]:void 0)}},caller:`listConnections`});return n.map(p)},te=(e,t)=>{if(t.userWorkspaceId!==null){let n=e.find(e=>e.scope===`USER`&&e.userWorkspaceId===t.userWorkspaceId);if(n)return n}return e.find(e=>e.scope===`WORKSPACE`)??null},S=`
37
+ `,w=async({visibility:e,...t}={})=>{let{appConnections:n}=await v({query:C,variables:{filter:{...t,scope:t.scope??(r(e)?l[e]:void 0)}},caller:`listConnections`});return n.map(m)},te=(e,t)=>{if(t.userWorkspaceId!==null){let n=e.find(e=>e.scope===`USER`&&e.userWorkspaceId===t.userWorkspaceId);if(n)return n}return e.find(e=>e.scope===`WORKSPACE`)??null},ne=`
38
38
  mutation ReportAppConnectionAuthFailure($input: ReportAppConnectionAuthFailureInput!) {
39
39
  reportAppConnectionAuthFailure(input: $input)
40
40
  }
41
- `,C=async({connectionId:e,reason:t})=>{await h({query:S,variables:{input:{id:e,reason:t}},caller:`reportConnectionAuthFailure`})},w=`
41
+ `,re=async({connectionId:e,reason:t})=>{await v({query:ne,variables:{input:{id:e,reason:t}},caller:`reportConnectionAuthFailure`})},T=`
42
42
  id
43
43
  handle
44
44
  displayName
@@ -47,31 +47,31 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
47
47
  isSyncEnabled
48
48
  participantHandleFieldUniversalIdentifier
49
49
  messagingProviderUniversalIdentifier
50
- `,T=`
50
+ `,ie=`
51
51
  mutation CreateAppMessageChannel($input: CreateAppMessageChannelInput!) {
52
52
  createAppMessageChannel(input: $input) {
53
- ${w}
53
+ ${T}
54
54
  }
55
55
  }
56
- `,E=async({messagingProvider:e,...t})=>{let{createAppMessageChannel:n}=await h({query:T,variables:{input:{...t,messagingProviderUniversalIdentifier:e?.universalIdentifier}},caller:`createMessageChannel`});return n},D=`
56
+ `,ae=async({messagingProvider:e,...t})=>{let{createAppMessageChannel:n}=await v({query:ie,variables:{input:{...t,messagingProviderUniversalIdentifier:e?.universalIdentifier}},caller:`createMessageChannel`});return n},oe=`
57
57
  query ListAppMessageChannels($filter: ListAppMessageChannelsInput) {
58
58
  appMessageChannels(filter: $filter) {
59
- ${w}
59
+ ${T}
60
60
  }
61
61
  }
62
- `,O=async(e={})=>{let{appMessageChannels:t}=await h({query:D,variables:{filter:e},caller:`listMessageChannels`});return t},k=`
62
+ `,se=async(e={})=>{let{appMessageChannels:t}=await v({query:oe,variables:{filter:e},caller:`listMessageChannels`});return t},E=`
63
63
  mutation UpdateAppMessageChannel($input: UpdateAppMessageChannelInput!) {
64
64
  updateAppMessageChannel(input: $input) {
65
- ${w}
65
+ ${T}
66
66
  }
67
67
  }
68
- `,A=async({messagingProvider:e,...t})=>{let{updateAppMessageChannel:n}=await h({query:k,variables:{input:{...t,messagingProviderUniversalIdentifier:e===void 0?void 0:e?.universalIdentifier??null}},caller:`updateMessageChannel`});return n},j=`
68
+ `,D=async({messagingProvider:e,...t})=>{let{updateAppMessageChannel:n}=await v({query:E,variables:{input:{...t,messagingProviderUniversalIdentifier:e===void 0?void 0:e?.universalIdentifier??null}},caller:`updateMessageChannel`});return n},O=`
69
69
  mutation DeleteAppMessageChannel($id: UUID!) {
70
70
  deleteAppMessageChannel(id: $id) {
71
- ${w}
71
+ ${T}
72
72
  }
73
73
  }
74
- `,M=async e=>{let{deleteAppMessageChannel:t}=await h({query:j,variables:{id:e},caller:`deleteMessageChannel`});return t},N=`
74
+ `,k=async e=>{let{deleteAppMessageChannel:t}=await v({query:O,variables:{id:e},caller:`deleteMessageChannel`});return t},A=`
75
75
  mutation IngestAppMessages($input: IngestAppMessagesInput!) {
76
76
  ingestAppMessages(input: $input) {
77
77
  messages {
@@ -81,35 +81,115 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
81
81
  }
82
82
  }
83
83
  }
84
- `,P=async({messageChannelId:e,messages:t})=>{let{ingestAppMessages:n}=await h({query:N,variables:{input:{messageChannelId:e,messages:t}},caller:`ingestMessages`});return n.messages},F=`
84
+ `,j=async({messageChannelId:e,messages:t})=>{let{ingestAppMessages:n}=await v({query:A,variables:{input:{messageChannelId:e,messages:t}},caller:`ingestMessages`});return n.messages},M=`
85
85
  id
86
86
  externalId
87
87
  name
88
88
  isSynced
89
89
  messageChannelId
90
- `,I=`
90
+ `,N=`
91
91
  query ListAppMessageFolders($filter: ListAppMessageFoldersInput) {
92
92
  appMessageFolders(filter: $filter) {
93
- ${F}
93
+ ${M}
94
94
  }
95
95
  }
96
- `,L=async(e={})=>{let{appMessageFolders:t}=await h({query:I,variables:{filter:e},caller:`listMessageFolders`});return t},R=`
96
+ `,P=async(e={})=>{let{appMessageFolders:t}=await v({query:N,variables:{filter:e},caller:`listMessageFolders`});return t},F=`
97
97
  mutation SyncAppMessageFolders($input: SyncAppMessageFoldersInput!) {
98
98
  syncAppMessageFolders(input: $input) {
99
- ${F}
99
+ ${M}
100
100
  }
101
101
  }
102
- `,z=async e=>{let{syncAppMessageFolders:t}=await h({query:R,variables:{input:e},caller:`syncMessageFolders`});return t},B=`
102
+ `,I=async e=>{let{syncAppMessageFolders:t}=await v({query:F,variables:{input:e},caller:`syncMessageFolders`});return t},L=t=>(0,e.isString)(t)?[{role:`user`,content:t}]:t,R=`
103
103
  mutation RunAgent($input: RunAgentInput!) {
104
104
  runAgent(input: $input) {
105
105
  threadId
106
+ runId
106
107
  status
107
108
  result
108
109
  error
109
110
  success
110
111
  }
111
112
  }
112
- `,V=async({input:e,...t})=>{let{runAgent:n}=await h({query:B,variables:{input:r(e)?{...t,input:typeof e==`string`?[{role:`user`,content:e}]:e}:t},caller:`runAgent`});return n},ne=async e=>{let{sendInboxMessage:n}=await new t.MetadataApiClient().mutation({sendInboxMessage:{__args:{input:e},threadId:!0}});return n},H=/\[/g,U=/\]/g,W=/\r?\n/g,G=e=>e.replace(H,`(`).replace(U,`)`).replace(W,` `).trim(),K=async({workspaceMemberId:t})=>{let{data:{workspaceMember:r}}=await new n.RestApiClient().get(`/rest/workspaceMembers/${t}`),i=`${r.name.firstName??``} ${r.name.lastName??``}`.trim();return y({objectNameSingular:`workspaceMember`,recordId:t,displayName:G((0,e.isNonEmptyString)(i)?i:r.userEmail)})},q=({fullName:t,partName:n})=>{let r=(0,e.isObject)(t)?Reflect.get(t,n):void 0;return(0,e.isString)(r)?r:``},J=({record:e,recordId:t,labelIdentifierField:n})=>{if(!r(n))return t;let i=e[n.name];return n.type===`FULL_NAME`?`${q({fullName:i,partName:`firstName`})} ${q({fullName:i,partName:`lastName`})}`.trim():r(i)?String(i):``},Y=async({metadataClient:e,objectMetadata:t})=>{if(!r(t.labelIdentifierFieldMetadataId))return;let{object:n}=await e.query({object:{__args:{id:t.id},fields:{__args:{filter:{id:{eq:t.labelIdentifierFieldMetadataId}},paging:{first:1}},edges:{node:{name:!0,type:!0}}}}});return n.fields.edges[0]?.node},X=1e3,Z=async({metadataClient:e,objectNameSingular:t})=>{let{objects:n}=await e.query({objects:{__args:{filter:{},paging:{first:X}},edges:{node:{id:!0,nameSingular:!0,namePlural:!0,labelIdentifierFieldMetadataId:!0}}}}),i=n.edges.find(({node:e})=>e.nameSingular===t)?.node;if(!r(i))throw Error(`This workspace has no ${t} object.`);return i},re=async({objectNameSingular:e,recordId:r})=>{let i=new t.MetadataApiClient,a=await Z({metadataClient:i,objectNameSingular:e}),[o,s]=await Promise.all([Y({metadataClient:i,objectMetadata:a}),new n.RestApiClient().get(`/rest/${a.namePlural}/${r}`)]);return y({objectNameSingular:e,recordId:r,displayName:G(J({record:s.data[e],recordId:r,labelIdentifierField:o}))})},ie=y({objectNameSingular:v,recordId:v,displayName:`Ada`}),ae=async e=>{await new t.MetadataApiClient().mutation({attachRecordToInboxThread:{__args:{input:e}}})},oe=async e=>{await new t.MetadataApiClient().mutation({detachRecordFromInboxThread:{__args:{input:e}}})},se=async e=>{let{enqueueJob:n}=await new t.MetadataApiClient().mutation({enqueueJob:{__args:{input:e},enqueued:!0,logicFunctionUniversalIdentifier:!0,jobId:!0}});return n},Q=async e=>{let{enqueueJobs:n}=await new t.MetadataApiClient().mutation({enqueueJobs:{__args:{input:e},enqueued:!0,logicFunctionUniversalIdentifier:!0,enqueuedJobsCount:!0,jobIds:!0}});return n},ce=async e=>{let{getJobs:n}=await new t.MetadataApiClient().query({getJobs:{__args:{jobIds:e},jobId:!0,state:!0,attemptsMade:!0,failedReason:!0,enqueuedAt:!0,startedAt:!0,finishedAt:!0}});return n},le=e=>({__args:{paging:{first:e.length},filter:{universalIdentifier:{in:e}}},edges:{node:{id:!0,universalIdentifier:!0,nameSingular:!0}}}),ue=async({timelineActivityTypeUniversalIdentifier:e,targetObjectUniversalIdentifier:i,linkedObjectMetadataUniversalIdentifier:a,targetRecordId:o,...s})=>{let c=[...new Set([i,a].filter(r))],{timelineActivityTypes:l,objects:u}=await new t.MetadataApiClient().query({timelineActivityTypes:{id:!0,universalIdentifier:!0,isActive:!0},objects:le(c)}),d=l.find(({universalIdentifier:t})=>t===e);if(!r(d))throw Error(`Timeline activity type ${e} is not installed`);if(!d.isActive)throw Error(`Timeline activity type ${e} is inactive`);let f=new Map(u.edges.map(({node:e})=>[e.universalIdentifier,e])),p=f.get(i);if(!r(p))throw Error(`Timeline activity target object ${i} is not installed`);let m=`target${b(p.nameSingular)}Id`,h=r(a)?f.get(a):void 0;if(r(a)&&!r(h))throw Error(`Timeline activity linked object ${a} is not installed`);return(await new n.RestApiClient().post(`/rest/timelineActivities`,{...s,timelineActivityTypeId:d.id,linkedObjectMetadataId:h?.id,[m]:o})).data.createTimelineActivity},de=`
113
+ `,z=async({input:e,...t})=>{let{runAgent:n}=await v({query:R,variables:{input:r(e)?{...t,input:L(e)}:t},caller:`runAgent`});return n},B=e=>e.type===`message-persisted`&&r(e.turnId)||e.type===`stream-ended`||e.type===`run-finished`||e.type===`credits-exhausted`||e.type===`stream-error`,V=e=>{let t=e.providerMetadata??void 0;switch(e.type){case`text`:return{type:`text`,text:e.textContent??``};case`reasoning`:return{type:`reasoning`,text:e.reasoningContent??``,state:e.state??`done`,providerMetadata:t};case`file`:return{type:`file`,mediaType:e.fileMediaType??`application/octet-stream`,filename:e.fileFilename??``,url:e.fileUrl??``,fileId:e.fileId??``};case`source-url`:return{type:`source-url`,sourceId:e.sourceUrlSourceId??``,url:e.sourceUrlUrl??``,title:e.sourceUrlTitle??``,providerMetadata:t};case`source-document`:return{type:`source-document`,sourceId:e.sourceDocumentSourceId??``,mediaType:e.sourceDocumentMediaType??``,title:e.sourceDocumentTitle??``,filename:e.sourceDocumentFilename??``,providerMetadata:t};case`step-start`:return{type:`step-start`};default:{let t=e.type.startsWith(`tool-`),n=e.type===`dynamic-tool`;return!t&&!n||!r(e.toolCallId)?null:{type:e.type,...n&&{toolName:e.toolName??``},toolCallId:e.toolCallId,input:e.toolInput??{},output:e.toolOutput,errorText:e.errorMessage??``,state:e.state,...r(e.providerExecuted)&&{providerExecuted:e.providerExecuted},...r(e.providerMetadata)&&{callProviderMetadata:e.providerMetadata}}}}},H=e=>e.map(e=>({id:e.id,role:e.role,status:e.status,parts:[...e.parts].sort((e,t)=>e.orderIndex-t.orderIndex).map(V).filter(r),metadata:{createdAt:e.createdAt,senderWorkspaceMemberId:e.senderWorkspaceMemberId,turnId:e.turnId,...e.role===`assistant`?{startedAt:e.createdAt,finishedAt:e.processedAt??void 0}:{}},threadId:e.threadId})),U=`
114
+ query ConversationMessages($agentUniversalIdentifier: UUID!, $threadKey: String!) {
115
+ messages: chatMessages(agentUniversalIdentifier: $agentUniversalIdentifier, threadKey: $threadKey) {
116
+ id
117
+ threadId
118
+ turnId
119
+ senderWorkspaceMemberId
120
+ role
121
+ status
122
+ createdAt
123
+ processedAt
124
+ parts {
125
+ orderIndex
126
+ type
127
+ textContent
128
+ reasoningContent
129
+ toolName
130
+ toolCallId
131
+ toolInput
132
+ toolOutput
133
+ state
134
+ providerExecuted
135
+ errorMessage
136
+ sourceUrlSourceId
137
+ sourceUrlUrl
138
+ sourceUrlTitle
139
+ sourceDocumentSourceId
140
+ sourceDocumentMediaType
141
+ sourceDocumentTitle
142
+ sourceDocumentFilename
143
+ fileMediaType
144
+ fileFilename
145
+ fileUrl
146
+ fileId
147
+ providerMetadata
148
+ }
149
+ }
150
+ streamCatchup: chatStreamCatchupChunks(agentUniversalIdentifier: $agentUniversalIdentifier, threadKey: $threadKey) {
151
+ chunks
152
+ maxSeq
153
+ error {
154
+ code
155
+ message
156
+ }
157
+ }
158
+ }
159
+ `,W=async e=>{let{messages:t,streamCatchup:n}=await v({query:U,variables:e,caller:`listConversationMessages`});return{messages:H(t),streamCatchup:n}},G=t=>(0,e.isObject)(t)&&!(0,e.isArray)(t),K=t=>t.map(t=>G(t)&&(0,e.isString)(t.message)?t.message:JSON.stringify(t)),ce=t=>G(t)&&(0,e.isString)(t.type),le=({block:t,caller:n})=>{let r=t.split(`
160
+ `);if(r.includes(`event: complete`))return{type:`complete`};let i=r.filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(`
161
+ `);if(!(0,e.isNonEmptyString)(i))return null;let a=JSON.parse(i);if(!G(a))throw Error(`${n}() failed: unexpected result ${i}`);if((0,e.isArray)(a.errors))return{type:`errors`,messages:K(a.errors)};let o=G(a.data)&&G(a.data.onAgentChatEvent)?a.data.onAgentChatEvent.event:void 0;if(!ce(o))throw Error(`${n}() failed: unexpected result ${i}`);return{type:`event`,event:o}},ue=async t=>{let n=await t.json().catch(()=>void 0);return G(n)&&(0,e.isArray)(n.errors)?K(n.errors).join(`, `):`HTTP ${t.status} ${t.statusText}`};async function*q({query:e,variables:t,caller:n,signal:i,closedEarlyAdvice:a=``,isActingAsCaller:o=!1}){let{apiUrl:s,accessToken:c}=_({caller:n,isActingAsCaller:o}),l;if(!i?.aborted)try{let o=await fetch(`${s}/metadata`,{method:`POST`,headers:{Accept:`text/event-stream`,"Content-Type":`application/json`,Authorization:`Bearer ${c}`},body:JSON.stringify({query:e,variables:t}),signal:i});if(!o.ok||!r(o.body))throw Error(`${n}() failed: ${await ue(o)}`);l=o.body.pipeThrough(new TextDecoderStream).getReader();let u=``;for(;;){let{done:e,value:t}=await l.read();if(e)throw Error(`${n}() failed: the stream closed early${a}`);u=(u+t).replace(/\r\n/g,`
162
+ `);let r=u.indexOf(`
163
+
164
+ `);for(;r!==-1;){let e=le({block:u.slice(0,r),caller:n});if(u=u.slice(r+2),r=u.indexOf(`
165
+
166
+ `),e?.type===`complete`)return;if(e?.type===`errors`)throw Error(`${n}() failed: ${e.messages.join(`, `)}`);e?.type===`event`&&(yield e.event)}}}catch(e){if(i?.aborted)return;throw e}finally{await l?.cancel().catch(()=>{})}}var de=`
167
+ subscription OnAgentChatEvent($agentUniversalIdentifier: UUID!, $threadKey: String!) {
168
+ onAgentChatEvent(agentUniversalIdentifier: $agentUniversalIdentifier, threadKey: $threadKey) {
169
+ event
170
+ }
171
+ }
172
+ `,fe=({signal:e,...t})=>q({query:de,variables:t,caller:`streamConversation`,signal:e,closedEarlyAdvice:`; read the history and stream again to resume`}),pe=`
173
+ mutation Generate($input: GenerateInput!) {
174
+ generate(input: $input) {
175
+ success
176
+ text
177
+ object
178
+ error
179
+ runId
180
+ usage {
181
+ inputTokens
182
+ outputTokens
183
+ }
184
+ }
185
+ }
186
+ `,me=`
187
+ subscription OnAgentRunEvent($runId: UUID!) {
188
+ onAgentChatEvent(runId: $runId) {
189
+ event
190
+ }
191
+ }
192
+ `,he=5e3,J=async({variables:e,signal:t})=>{let{generate:n}=await v({query:pe,variables:e,caller:`ai.generate`,signal:t,isActingAsCaller:!0});return n},ge=t=>(0,e.isString)(t.type),Y=e=>{let t,n=!0;return{quiet:new Promise(r=>{e.then(()=>{n&&(t=setTimeout(()=>r(void 0),he))},()=>void 0)}),stop:()=>{n=!1,clearTimeout(t)}}},_e=async({variables:e,onChunk:t,signal:n})=>{let i=crypto.randomUUID(),a=new AbortController,o=r(n)?AbortSignal.any([n,a.signal]):a.signal,s=new Promise((e,t)=>n?.addEventListener(`abort`,()=>t(n.reason),{once:!0,signal:a.signal}));s.catch(()=>void 0);try{let a=q({query:me,variables:{runId:i},caller:`ai.generate`,signal:o,isActingAsCaller:!0});if((await a.next()).done)throw n?.throwIfAborted(),Error(`ai.generate() failed: the stream ended before the run`);let c=J({variables:{input:{...e.input,runId:i}},signal:o}),[l]=await Promise.race([Promise.all([c,(async()=>{let e=Y(c);try{for(;;){let n=await Promise.race([a.next(),e.quiet]).catch(()=>void 0);if(!r(n)||n.done||o.aborted||B(n.value))return;n.value.type===`stream-chunk`&&ge(n.value.chunk)&&(e.stop(),await t(n.value.chunk),e=Y(c))}}finally{e.stop(),a.return(void 0).catch(()=>void 0)}})()]),s]);return n?.throwIfAborted(),l}finally{a.abort()}},ve={generate:async({input:e,onChunk:t,signal:n,...i})=>{let a={input:{...i,input:L(e)}};return r(t)?_e({variables:a,onChunk:t,signal:n}):J({variables:a,signal:n})}},ye=async e=>{let{sendInboxMessage:n}=await new t.MetadataApiClient().mutation({sendInboxMessage:{__args:{input:e},threadId:!0}});return n},be=/\[/g,xe=/\]/g,Se=/\r?\n/g,X=e=>e.replace(be,`(`).replace(xe,`)`).replace(Se,` `).trim(),Ce=async({workspaceMemberId:t})=>{let{data:{workspaceMember:r}}=await new n.RestApiClient().get(`/rest/workspaceMembers/${t}`),i=`${r.name.firstName??``} ${r.name.lastName??``}`.trim();return x({objectNameSingular:`workspaceMember`,recordId:t,displayName:X((0,e.isNonEmptyString)(i)?i:r.userEmail)})},Z=({fullName:t,partName:n})=>{let r=(0,e.isObject)(t)?Reflect.get(t,n):void 0;return(0,e.isString)(r)?r:``},we=({record:e,recordId:t,labelIdentifierField:n})=>{if(!r(n))return t;let i=e[n.name];return n.type===`FULL_NAME`?`${Z({fullName:i,partName:`firstName`})} ${Z({fullName:i,partName:`lastName`})}`.trim():r(i)?String(i):``},Te=async({metadataClient:e,objectMetadata:t})=>{if(!r(t.labelIdentifierFieldMetadataId))return;let{object:n}=await e.query({object:{__args:{id:t.id},fields:{__args:{filter:{id:{eq:t.labelIdentifierFieldMetadataId}},paging:{first:1}},edges:{node:{name:!0,type:!0}}}}});return n.fields.edges[0]?.node},Ee=1e3,De=async({metadataClient:e,objectNameSingular:t})=>{let{objects:n}=await e.query({objects:{__args:{filter:{},paging:{first:Ee}},edges:{node:{id:!0,nameSingular:!0,namePlural:!0,labelIdentifierFieldMetadataId:!0}}}}),i=n.edges.find(({node:e})=>e.nameSingular===t)?.node;if(!r(i))throw Error(`This workspace has no ${t} object.`);return i},Oe=async({objectNameSingular:e,recordId:r})=>{let i=new t.MetadataApiClient,a=await De({metadataClient:i,objectNameSingular:e}),[o,s]=await Promise.all([Te({metadataClient:i,objectMetadata:a}),new n.RestApiClient().get(`/rest/${a.namePlural}/${r}`)]);return x({objectNameSingular:e,recordId:r,displayName:X(we({record:s.data[e],recordId:r,labelIdentifierField:o}))})},Q=x({objectNameSingular:b,recordId:b,displayName:`Ada`}),ke=async e=>{await new t.MetadataApiClient().mutation({attachRecordToInboxThread:{__args:{input:e}}})},Ae=async e=>{await new t.MetadataApiClient().mutation({detachRecordFromInboxThread:{__args:{input:e}}})},je=async e=>{let{enqueueJob:n}=await new t.MetadataApiClient().mutation({enqueueJob:{__args:{input:e},enqueued:!0,logicFunctionUniversalIdentifier:!0,jobId:!0}});return n},Me=async e=>{let{enqueueJobs:n}=await new t.MetadataApiClient().mutation({enqueueJobs:{__args:{input:e},enqueued:!0,logicFunctionUniversalIdentifier:!0,enqueuedJobsCount:!0,jobIds:!0}});return n},Ne=async e=>{let{getJobs:n}=await new t.MetadataApiClient().query({getJobs:{__args:{jobIds:e},jobId:!0,state:!0,attemptsMade:!0,failedReason:!0,enqueuedAt:!0,startedAt:!0,finishedAt:!0}});return n},Pe=e=>({__args:{paging:{first:e.length},filter:{universalIdentifier:{in:e}}},edges:{node:{id:!0,universalIdentifier:!0,nameSingular:!0}}}),Fe=async({timelineActivityTypeUniversalIdentifier:e,targetObjectUniversalIdentifier:i,linkedObjectMetadataUniversalIdentifier:a,targetRecordId:o,...s})=>{let c=[...new Set([i,a].filter(r))],{timelineActivityTypes:l,objects:u}=await new t.MetadataApiClient().query({timelineActivityTypes:{id:!0,universalIdentifier:!0,isActive:!0},objects:Pe(c)}),d=l.find(({universalIdentifier:t})=>t===e);if(!r(d))throw Error(`Timeline activity type ${e} is not installed`);if(!d.isActive)throw Error(`Timeline activity type ${e} is inactive`);let f=new Map(u.edges.map(({node:e})=>[e.universalIdentifier,e])),p=f.get(i);if(!r(p))throw Error(`Timeline activity target object ${i} is not installed`);let m=`target${S(p.nameSingular)}Id`,h=r(a)?f.get(a):void 0;if(r(a)&&!r(h))throw Error(`Timeline activity linked object ${a} is not installed`);return(await new n.RestApiClient().post(`/rest/timelineActivities`,{...s,timelineActivityTypeId:d.id,linkedObjectMetadataId:h?.id,[m]:o})).data.createTimelineActivity},Ie=`
113
193
  query GetAppKeyValue($key: String!, $scope: AppKeyValueScope) {
114
194
  appKeyValue(key: $key, scope: $scope) {
115
195
  key
@@ -117,7 +197,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
117
197
  scope
118
198
  }
119
199
  }
120
- `,fe=`
200
+ `,Le=`
121
201
  mutation SetAppKeyValue($input: SetAppKeyValueInput!) {
122
202
  setAppKeyValue(input: $input) {
123
203
  key
@@ -125,9 +205,9 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
125
205
  scope
126
206
  }
127
207
  }
128
- `,pe=`
208
+ `,Re=`
129
209
  mutation DeleteAppKeyValue($key: String!, $scope: AppKeyValueScope) {
130
210
  deleteAppKeyValue(key: $key, scope: $scope)
131
211
  }
132
- `,$=`WORKSPACE`,me={async get(e,t){let{appKeyValue:n}=await h({query:de,variables:{key:e,scope:t?.scope??$},caller:`kv.get`});return n?.value??null},async set(e,t,n){await h({query:fe,variables:{input:{key:e,value:t,scope:n?.scope??$}},caller:`kv.set`})},async delete(e,t){let{deleteAppKeyValue:n}=await h({query:pe,variables:{key:e,scope:t?.scope??$},caller:`kv.delete`});return n}},he=class{constructor(e,t){this.__twentyHttpResponse=!0,this.body=e,this.status=t?.status,this.headers=t?.headers}};exports.AppConnectionAuthFailedError=c,exports.INBOX_ASSISTANT_MENTION=ie,exports.Response=he,exports.RetryableLogicFunctionError=s,exports.attachRecordToInboxThread=ae,exports.createMessageChannel=E,exports.createTimelineActivity=ue,exports.deleteMessageChannel=M,exports.detachRecordFromInboxThread=oe,exports.enqueueJob=se,exports.enqueueJobs=Q,exports.findConnectionForRequest=te,exports.getConnection=_,exports.getJobs=ce,exports.inboxMention=K,exports.inboxReferenceRecord=re,exports.ingestMessages=P,exports.jsonSchemaToInputSchema=a,exports.kv=me,exports.listConnections=ee,exports.listMessageChannels=O,exports.listMessageFolders=L,exports.reportConnectionAuthFailure=C,exports.runAgent=V,exports.sendInboxMessage=ne,exports.syncMessageFolders=z,exports.updateMessageChannel=A;
212
+ `,$=`WORKSPACE`,ze={async get(e,t){let{appKeyValue:n}=await v({query:Ie,variables:{key:e,scope:t?.scope??$},caller:`kv.get`});return n?.value??null},async set(e,t,n){await v({query:Le,variables:{input:{key:e,value:t,scope:n?.scope??$}},caller:`kv.set`})},async delete(e,t){let{deleteAppKeyValue:n}=await v({query:Re,variables:{key:e,scope:t?.scope??$},caller:`kv.delete`});return n}},Be=class{constructor(e,t){this.__twentyHttpResponse=!0,this.body=e,this.status=t?.status,this.headers=t?.headers}};exports.AppConnectionAuthFailedError=c,exports.INBOX_ASSISTANT_MENTION=Q,exports.Response=Be,exports.RetryableLogicFunctionError=s,exports.ai=ve,exports.attachRecordToInboxThread=ke,exports.createMessageChannel=ae,exports.createTimelineActivity=Fe,exports.deleteMessageChannel=k,exports.detachRecordFromInboxThread=Ae,exports.enqueueJob=je,exports.enqueueJobs=Me,exports.findConnectionForRequest=te,exports.getConnection=ee,exports.getJobs=Ne,exports.inboxMention=Ce,exports.inboxReferenceRecord=Oe,exports.ingestMessages=j,exports.isAgentChatTurnEndEvent=B,exports.jsonSchemaToInputSchema=a,exports.kv=ze,exports.listConnections=w,exports.listConversationMessages=W,exports.listMessageChannels=se,exports.listMessageFolders=P,exports.reportConnectionAuthFailure=re,exports.runAgent=z,exports.sendInboxMessage=ye,exports.streamConversation=fe,exports.syncMessageFolders=I,exports.updateMessageChannel=D;
133
213
  //# sourceMappingURL=index.cjs.map