twenty-sdk 2.55.0 → 2.57.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},ee=`
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
+ `,y=async e=>{let{appConnection:t}=await v({query:ee,variables:{id:e},caller:`getConnection`});if(t.authFailedAt!==null)throw new c(t.id);return m(t)},b=({objectNameSingular:e,recordId:t,displayName:n})=>`[[record:${e}:${t}:${n}]]`,x=t=>(0,e.isNonEmptyString)(t)?t.charAt(0).toUpperCase()+t.slice(1):``,S=`
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
+ `,C=async({visibility:e,...t}={})=>{let{appConnections:n}=await v({query:S,variables:{filter:{...t,scope:t.scope??(r(e)?l[e]:void 0)}},caller:`listConnections`});return n.map(m)},w=(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},te=`
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
+ `,ne=async({connectionId:e,reason:t})=>{await v({query:te,variables:{input:{id:e,reason:t}},caller:`reportConnectionAuthFailure`})},T=`
42
42
  id
43
43
  handle
44
44
  displayName
@@ -47,69 +47,150 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
47
47
  isSyncEnabled
48
48
  participantHandleFieldUniversalIdentifier
49
49
  messagingProviderUniversalIdentifier
50
- `,T=`
50
+ `,re=`
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
+ `,ie=async({messagingProvider:e,...t})=>{let{createAppMessageChannel:n}=await v({query:re,variables:{input:{...t,messagingProviderUniversalIdentifier:e?.universalIdentifier}},caller:`createMessageChannel`});return n},ae=`
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
+ `,oe=async(e={})=>{let{appMessageChannels:t}=await v({query:ae,variables:{filter:e},caller:`listMessageChannels`});return t},se=`
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
+ `,ce=async({messagingProvider:e,...t})=>{let{updateAppMessageChannel:n}=await v({query:se,variables:{input:{...t,messagingProviderUniversalIdentifier:e===void 0?void 0:e?.universalIdentifier??null}},caller:`updateMessageChannel`});return n},le=`
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
+ `,E=async e=>{let{deleteAppMessageChannel:t}=await v({query:le,variables:{id:e},caller:`deleteMessageChannel`});return t},D=`
75
75
  mutation IngestAppMessages($input: IngestAppMessagesInput!) {
76
76
  ingestAppMessages(input: $input) {
77
77
  messages {
78
78
  externalId
79
79
  messageId
80
80
  messageThreadId
81
+ hasAttachments
81
82
  }
82
83
  }
83
84
  }
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=`
85
+ `,O=async({messageChannelId:e,messages:t})=>{let{ingestAppMessages:n}=await v({query:D,variables:{input:{messageChannelId:e,messages:t}},caller:`ingestMessages`});return n.messages},k=`20202020-15db-460e-8166-c7b5d87ad4be`,A=255,j=async({filename:n,content:r,signal:i})=>{if(!(0,e.isNonEmptyString)(n)||n.length>A)throw Error(`uploadMessageAttachment() failed: filename must be 1 to ${A} characters long`);let{apiUrl:a,accessToken:o}=_({caller:`uploadMessageAttachment`});return{fileId:(await new t.MetadataApiClient({url:`${a}/metadata`,headers:{Authorization:`Bearer ${o}`},fetch:(e,t)=>fetch(e,{...t,signal:i})}).uploadFile({fileBuffer:r,filename:n,fieldMetadataUniversalIdentifier:k})).id,label:n}},M=`
85
86
  id
86
87
  externalId
87
88
  name
88
89
  isSynced
89
90
  messageChannelId
90
- `,I=`
91
+ `,N=`
91
92
  query ListAppMessageFolders($filter: ListAppMessageFoldersInput) {
92
93
  appMessageFolders(filter: $filter) {
93
- ${F}
94
+ ${M}
94
95
  }
95
96
  }
96
- `,L=async(e={})=>{let{appMessageFolders:t}=await h({query:I,variables:{filter:e},caller:`listMessageFolders`});return t},R=`
97
+ `,P=async(e={})=>{let{appMessageFolders:t}=await v({query:N,variables:{filter:e},caller:`listMessageFolders`});return t},F=`
97
98
  mutation SyncAppMessageFolders($input: SyncAppMessageFoldersInput!) {
98
99
  syncAppMessageFolders(input: $input) {
99
- ${F}
100
+ ${M}
100
101
  }
101
102
  }
102
- `,z=async e=>{let{syncAppMessageFolders:t}=await h({query:R,variables:{input:e},caller:`syncMessageFolders`});return t},B=`
103
+ `,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
104
  mutation RunAgent($input: RunAgentInput!) {
104
105
  runAgent(input: $input) {
105
106
  threadId
107
+ runId
106
108
  status
107
109
  result
108
110
  error
109
111
  success
110
112
  }
111
113
  }
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=`
114
+ `,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=`agentChatAssistant`,V=`(?:[^\\[\\]\\n\\r]|\\[[^\\[\\]\\n\\r]*\\])*`;RegExp(`^${V}$`);var H=e=>e.type===`message-persisted`&&r(e.turnId)||e.type===`stream-ended`||e.type===`run-finished`||e.type===`credits-exhausted`||e.type===`stream-error`,U=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}}}}},W=e=>e.map(e=>({id:e.id,role:e.role,status:e.status,parts:[...e.parts].sort((e,t)=>e.orderIndex-t.orderIndex).map(U).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}));RegExp(`^record:${B}:${B}:(${V})$`);var ue=`
115
+ query ConversationMessages($agentUniversalIdentifier: UUID!, $threadKey: String!) {
116
+ messages: chatMessages(agentUniversalIdentifier: $agentUniversalIdentifier, threadKey: $threadKey) {
117
+ id
118
+ threadId
119
+ turnId
120
+ senderWorkspaceMemberId
121
+ role
122
+ status
123
+ createdAt
124
+ processedAt
125
+ parts {
126
+ orderIndex
127
+ type
128
+ textContent
129
+ reasoningContent
130
+ toolName
131
+ toolCallId
132
+ toolInput
133
+ toolOutput
134
+ state
135
+ providerExecuted
136
+ errorMessage
137
+ sourceUrlSourceId
138
+ sourceUrlUrl
139
+ sourceUrlTitle
140
+ sourceDocumentSourceId
141
+ sourceDocumentMediaType
142
+ sourceDocumentTitle
143
+ sourceDocumentFilename
144
+ fileMediaType
145
+ fileFilename
146
+ fileUrl
147
+ fileId
148
+ providerMetadata
149
+ }
150
+ }
151
+ streamCatchup: chatStreamCatchupChunks(agentUniversalIdentifier: $agentUniversalIdentifier, threadKey: $threadKey) {
152
+ chunks
153
+ maxSeq
154
+ error {
155
+ code
156
+ message
157
+ }
158
+ }
159
+ }
160
+ `,de=async e=>{let{messages:t,streamCatchup:n}=await v({query:ue,variables:e,caller:`listConversationMessages`});return{messages:W(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)),fe=t=>G(t)&&(0,e.isString)(t.type),pe=({block:t,caller:n})=>{let r=t.split(`
161
+ `);if(r.includes(`event: complete`))return{type:`complete`};let i=r.filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(`
162
+ `);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(!fe(o))throw Error(`${n}() failed: unexpected result ${i}`);return{type:`event`,event:o}},me=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 me(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,`
163
+ `);let r=u.indexOf(`
164
+
165
+ `);for(;r!==-1;){let e=pe({block:u.slice(0,r),caller:n});if(u=u.slice(r+2),r=u.indexOf(`
166
+
167
+ `),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 he=`
168
+ subscription OnAgentChatEvent($agentUniversalIdentifier: UUID!, $threadKey: String!) {
169
+ onAgentChatEvent(agentUniversalIdentifier: $agentUniversalIdentifier, threadKey: $threadKey) {
170
+ event
171
+ }
172
+ }
173
+ `,ge=({signal:e,...t})=>q({query:he,variables:t,caller:`streamConversation`,signal:e,closedEarlyAdvice:`; read the history and stream again to resume`}),_e=`
174
+ mutation Generate($input: GenerateInput!) {
175
+ generate(input: $input) {
176
+ success
177
+ text
178
+ object
179
+ error
180
+ runId
181
+ usage {
182
+ inputTokens
183
+ outputTokens
184
+ }
185
+ }
186
+ }
187
+ `,ve=`
188
+ subscription OnAgentRunEvent($runId: UUID!) {
189
+ onAgentChatEvent(runId: $runId) {
190
+ event
191
+ }
192
+ }
193
+ `,ye=5e3,J=async({variables:e,signal:t})=>{let{generate:n}=await v({query:_e,variables:e,caller:`ai.generate`,signal:t,isActingAsCaller:!0});return n},be=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),ye))},()=>void 0)}),stop:()=>{n=!1,clearTimeout(t)}}},xe=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:ve,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||H(n.value))return;n.value.type===`stream-chunk`&&be(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()}},Se={generate:async({input:e,onChunk:t,signal:n,...i})=>{let a={input:{...i,input:L(e)}};return r(t)?xe({variables:a,onChunk:t,signal:n}):J({variables:a,signal:n})}},Ce=async e=>{let{sendInboxMessage:n}=await new t.MetadataApiClient().mutation({sendInboxMessage:{__args:{input:e},threadId:!0}});return n},we=/\[/g,Te=/\]/g,Ee=/\r?\n/g,X=e=>e.replace(we,`(`).replace(Te,`)`).replace(Ee,` `).trim(),De=async({workspaceMemberId:t})=>{let{data:{workspaceMember:r}}=await new n.RestApiClient().get(`/rest/workspaceMembers/${t}`),i=`${r.name.firstName??``} ${r.name.lastName??``}`.trim();return b({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:``},Oe=({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):``},ke=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},Ae=1e3,je=async({metadataClient:e,objectNameSingular:t})=>{let{objects:n}=await e.query({objects:{__args:{filter:{},paging:{first:Ae}},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},Me=async({objectNameSingular:e,recordId:r})=>{let i=new t.MetadataApiClient,a=await je({metadataClient:i,objectNameSingular:e}),[o,s]=await Promise.all([ke({metadataClient:i,objectMetadata:a}),new n.RestApiClient().get(`/rest/${a.namePlural}/${r}`)]);return b({objectNameSingular:e,recordId:r,displayName:X(Oe({record:s.data[e],recordId:r,labelIdentifierField:o}))})},Ne=b({objectNameSingular:B,recordId:B,displayName:`Ada`}),Pe=async e=>{await new t.MetadataApiClient().mutation({attachRecordToInboxThread:{__args:{input:e}}})},Fe=async e=>{await new t.MetadataApiClient().mutation({detachRecordFromInboxThread:{__args:{input:e}}})},Q=async e=>{let{enqueueJob:n}=await new t.MetadataApiClient().mutation({enqueueJob:{__args:{input:e},enqueued:!0,logicFunctionUniversalIdentifier:!0,jobId:!0}});return n},Ie=async e=>{let{enqueueJobs:n}=await new t.MetadataApiClient().mutation({enqueueJobs:{__args:{input:e},enqueued:!0,logicFunctionUniversalIdentifier:!0,enqueuedJobsCount:!0,jobIds:!0,jobs:{jobId:!0,sizeBytes:!0},availableBytes:!0}});return n},Le=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},Re=e=>({__args:{paging:{first:e.length},filter:{universalIdentifier:{in:e}}},edges:{node:{id:!0,universalIdentifier:!0,nameSingular:!0}}}),ze=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:Re(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${x(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},Be=`
113
194
  query GetAppKeyValue($key: String!, $scope: AppKeyValueScope) {
114
195
  appKeyValue(key: $key, scope: $scope) {
115
196
  key
@@ -117,7 +198,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
117
198
  scope
118
199
  }
119
200
  }
120
- `,fe=`
201
+ `,Ve=`
121
202
  mutation SetAppKeyValue($input: SetAppKeyValueInput!) {
122
203
  setAppKeyValue(input: $input) {
123
204
  key
@@ -125,9 +206,9 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
125
206
  scope
126
207
  }
127
208
  }
128
- `,pe=`
209
+ `,He=`
129
210
  mutation DeleteAppKeyValue($key: String!, $scope: AppKeyValueScope) {
130
211
  deleteAppKeyValue(key: $key, scope: $scope)
131
212
  }
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;
213
+ `,$=`WORKSPACE`,Ue={async get(e,t){let{appKeyValue:n}=await v({query:Be,variables:{key:e,scope:t?.scope??$},caller:`kv.get`});return n?.value??null},async set(e,t,n){await v({query:Ve,variables:{input:{key:e,value:t,scope:n?.scope??$}},caller:`kv.set`})},async delete(e,t){let{deleteAppKeyValue:n}=await v({query:He,variables:{key:e,scope:t?.scope??$},caller:`kv.delete`});return n}},We=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=Ne,exports.Response=We,exports.RetryableLogicFunctionError=s,exports.ai=Se,exports.attachRecordToInboxThread=Pe,exports.createMessageChannel=ie,exports.createTimelineActivity=ze,exports.deleteMessageChannel=E,exports.detachRecordFromInboxThread=Fe,exports.enqueueJob=Q,exports.enqueueJobs=Ie,exports.findConnectionForRequest=w,exports.getConnection=y,exports.getJobs=Le,exports.inboxMention=De,exports.inboxReferenceRecord=Me,exports.ingestMessages=O,exports.isAgentChatTurnEndEvent=H,exports.jsonSchemaToInputSchema=a,exports.kv=Ue,exports.listConnections=C,exports.listConversationMessages=de,exports.listMessageChannels=oe,exports.listMessageFolders=P,exports.reportConnectionAuthFailure=ne,exports.runAgent=z,exports.sendInboxMessage=Ce,exports.streamConversation=ge,exports.syncMessageFolders=I,exports.updateMessageChannel=ce,exports.uploadMessageAttachment=j;
133
214
  //# sourceMappingURL=index.cjs.map