@hasura/promptql 0.3.0 → 1.0.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.
package/README.md CHANGED
@@ -16,19 +16,20 @@ npm install @hasura/promptql
16
16
 
17
17
  - If you are new with PromptQL, follow [the quickstart guide of PromptQL](https://hasura.io/docs/promptql/quickstart/) to create a project.
18
18
  - Create a PromptQL API Key in project settings tab on [https://console.hasura.io](https://console.hasura.io).
19
- - Your Project API endpoint and security headers.
19
+ - Security headers and your Project API endpoint (version 1) or build version (version 2).
20
20
 
21
21
  ### Use PromptQL SDK
22
22
 
23
+ #### Create client
24
+
23
25
  Create the PromptQL client with required configurations:
24
26
 
25
27
  ```ts
26
- import { createPromptQLClient } from '@hasura/promptql';
28
+ import { createPromptQLClientV2 } from '@hasura/promptql';
27
29
 
28
- const client = createPromptQLClient({
30
+ const client = createPromptQLClientV2({
29
31
  apiKey: '<your-promptql-api-key>',
30
32
  ddn: {
31
- url: '<your-project-endpoint>',
32
33
  headers: {
33
34
  'Authorization': '<credential>'
34
35
  }
@@ -36,13 +37,16 @@ const client = createPromptQLClient({
36
37
  // You can define a lazy function for the ddn options.
37
38
  //
38
39
  // ddn: () => {{
39
- // url: '<your-project-endpoint>',
40
40
  // headers: {
41
41
  // 'Authorization': '<credential>'
42
42
  // }
43
43
  // }}
44
44
  });
45
+ ```
46
+
47
+ #### Run a Query
45
48
 
49
+ ```ts
46
50
  const runQuery = (text: string) => {
47
51
  return client.query({
48
52
  artifacts: [],
@@ -70,27 +74,83 @@ runQuery('what can you do?').then((response) => {
70
74
 
71
75
  ## Reference
72
76
 
73
- ### Natural Language
77
+ ### Version 2
78
+
79
+ #### Natural Language
80
+
81
+ The API version 2 simplifies request parameters:
82
+ - The DDN URL is replaced by `build_version`.
83
+ - `llm`, `ai_primitives_llm`, and `system_instructions` are removed.
84
+
85
+ To use the API v2, you need to create a PromptQL Client v2:
86
+
87
+ ```ts
88
+ import { createPromptQLClientV2 } from '@hasura/promptql';
89
+
90
+ const client = createPromptQLClientV2({
91
+ apiKey: '<your-promptql-api-key>',
92
+ ddn: {
93
+ // build_version: '<your-build-version>',
94
+ headers: {
95
+ 'Authorization': '<credential>'
96
+ }
97
+ },
98
+ });
99
+ ```
100
+
101
+ ##### Non-Streaming
102
+
103
+ ```ts
104
+ function query(
105
+ body: PromptQLQueryRequestV2,
106
+ queryOptions?: FetchOptions
107
+ ) => Promise<QueryResponse>
108
+ ```
109
+
110
+ ##### Streaming
111
+
112
+ ```ts
113
+ function queryStream(
114
+ body: PromptQLQueryRequestV2,
115
+ callback?: (data: QueryResponseChunk) => void | Promise<void>,
116
+ queryOptions?: FetchOptions
117
+ ) Promise<Response>;
118
+ ```
119
+
120
+ #### Execute Program
121
+
122
+ Execute a PromptQL program with your data.
123
+
124
+ ```ts
125
+ function executeProgram: (
126
+ body: PromptQLExecuteRequestV2,
127
+ executeOptions?: FetchOptions,
128
+ ) => Promise<PromptQlExecutionResult>
129
+ ```
130
+
131
+ ### Version 1
132
+
133
+ #### Natural Language
74
134
 
75
135
  The [Natural Language Query API](https://hasura.io/docs/promptql/promptql-apis/natural-language-api/) allows you to interact with PromptQL directly, sending messages and receiving responses.
76
136
 
77
- #### Non-Streaming
137
+ ##### Non-Streaming
78
138
 
79
139
  ```ts
80
140
  function query(
81
- body: PromptQLQueryRequest,
141
+ body: PromptQLQueryRequestV1,
82
142
  queryOptions?: FetchOptions
83
143
  ) => Promise<QueryResponse>
84
144
  ```
85
145
 
86
- #### Streaming
146
+ ##### Streaming
87
147
 
88
148
  The streaming response sends chunks of data in Server-Sent Events (SSE) format.
89
149
  If the callback isn't set the client returns the raw response and you need to handle the response manually.
90
150
 
91
151
  ```ts
92
152
  function queryStream(
93
- body: PromptQLQueryRequest,
153
+ body: PromptQLQueryRequestV1,
94
154
  callback?: (data: QueryResponseChunk) => void | Promise<void>,
95
155
  queryOptions?: FetchOptions
96
156
  ) Promise<Response>;
@@ -114,13 +174,15 @@ client
114
174
  );
115
175
  ```
116
176
 
117
- ### Execute Program
177
+ #### Execute Program
118
178
 
119
179
  Execute a PromptQL program with your data.
120
180
 
121
181
  ```ts
122
- function executeProgram(
123
- body: PromptQLExecuteRequest, executeOptions?: FetchOptions) Promise<PromptQlExecutionResult>;
182
+ function executeProgram: (
183
+ body: PromptQLExecuteRequestV1,
184
+ executeOptions?: FetchOptions,
185
+ ) => Promise<PromptQlExecutionResult>
124
186
  ```
125
187
 
126
188
  ## Development
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export type * from './promptql';
2
2
  export * from './types';
3
- export * from './client';
4
- export * from './query-chunks';
5
- export { withActiveSpan } from './utils';
3
+ export * from './utils';
4
+ export * from './v1';
5
+ export * from './v2';
@@ -1 +1 @@
1
- var promptql=function(m){"use strict";var ke=Object.defineProperty;var qe=(m,g,R)=>g in m?ke(m,g,{enumerable:!0,configurable:!0,writable:!0,value:R}):m[g]=R;var bt=(m,g,R)=>qe(m,typeof g!="symbol"?g+"":g,R);class g extends Error{constructor(r,n){super(n||r.map(o=>o.msg).join(". "));bt(this,"detail",[]);this.detail=r}}var R=typeof globalThis=="object"?globalThis:typeof self=="object"?self:typeof window=="object"?window:typeof global=="object"?global:{},P="1.9.0",ct=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function wt(t){var e=new Set([t]),r=new Set,n=t.match(ct);if(!n)return function(){return!1};var o={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(o.prerelease!=null)return function(p){return p===t};function a(s){return r.add(s),!1}function i(s){return e.add(s),!0}return function(p){if(e.has(p))return!0;if(r.has(p))return!1;var d=p.match(ct);if(!d)return a(p);var h={major:+d[1],minor:+d[2],patch:+d[3],prerelease:d[4]};return h.prerelease!=null||o.major!==h.major?a(p):o.major===0?o.minor===h.minor&&o.patch<=h.patch?i(p):a(p):o.minor<=h.minor?i(p):a(p)}}var Et=wt(P),At=P.split(".")[0],S=Symbol.for("opentelemetry.js.api."+At),x=R;function j(t,e,r,n){var o;n===void 0&&(n=!1);var a=x[S]=(o=x[S])!==null&&o!==void 0?o:{version:P};if(!n&&a[t]){var i=new Error("@opentelemetry/api: Attempted duplicate registration of API: "+t);return r.error(i.stack||i.message),!1}if(a.version!==P){var i=new Error("@opentelemetry/api: Registration of version v"+a.version+" for "+t+" does not match previously registered API v"+P);return r.error(i.stack||i.message),!1}return a[t]=e,r.debug("@opentelemetry/api: Registered a global for "+t+" v"+P+"."),!0}function C(t){var e,r,n=(e=x[S])===null||e===void 0?void 0:e.version;if(!(!n||!Et(n)))return(r=x[S])===null||r===void 0?void 0:r[t]}function B(t,e){e.debug("@opentelemetry/api: Unregistering a global for "+t+" v"+P+".");var r=x[S];r&&delete r[t]}var Nt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(s){i={error:s}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},Pt=function(t,e,r){if(r||arguments.length===2)for(var n=0,o=e.length,a;n<o;n++)(a||!(n in e))&&(a||(a=Array.prototype.slice.call(e,0,n)),a[n]=e[n]);return t.concat(a||Array.prototype.slice.call(e))},Ct=function(){function t(e){this._namespace=e.namespace||"DiagComponentLogger"}return t.prototype.debug=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return G("debug",this._namespace,e)},t.prototype.error=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return G("error",this._namespace,e)},t.prototype.info=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return G("info",this._namespace,e)},t.prototype.warn=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return G("warn",this._namespace,e)},t.prototype.verbose=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return G("verbose",this._namespace,e)},t}();function G(t,e,r){var n=C("diag");if(n)return r.unshift(e),n[t].apply(n,Pt([],Nt(r),!1))}var y;(function(t){t[t.NONE=0]="NONE",t[t.ERROR=30]="ERROR",t[t.WARN=50]="WARN",t[t.INFO=60]="INFO",t[t.DEBUG=70]="DEBUG",t[t.VERBOSE=80]="VERBOSE",t[t.ALL=9999]="ALL"})(y||(y={}));function Tt(t,e){t<y.NONE?t=y.NONE:t>y.ALL&&(t=y.ALL),e=e||{};function r(n,o){var a=e[n];return typeof a=="function"&&t>=o?a.bind(e):function(){}}return{error:r("error",y.ERROR),warn:r("warn",y.WARN),info:r("info",y.INFO),debug:r("debug",y.DEBUG),verbose:r("verbose",y.VERBOSE)}}var Ot=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(s){i={error:s}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},Rt=function(t,e,r){if(r||arguments.length===2)for(var n=0,o=e.length,a;n<o;n++)(a||!(n in e))&&(a||(a=Array.prototype.slice.call(e,0,n)),a[n]=e[n]);return t.concat(a||Array.prototype.slice.call(e))},It="diag",b=function(){function t(){function e(o){return function(){for(var a=[],i=0;i<arguments.length;i++)a[i]=arguments[i];var s=C("diag");if(s)return s[o].apply(s,Rt([],Ot(a),!1))}}var r=this,n=function(o,a){var i,s,p;if(a===void 0&&(a={logLevel:y.INFO}),o===r){var d=new Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return r.error((i=d.stack)!==null&&i!==void 0?i:d.message),!1}typeof a=="number"&&(a={logLevel:a});var h=C("diag"),z=Tt((s=a.logLevel)!==null&&s!==void 0?s:y.INFO,o);if(h&&!a.suppressOverrideMessage){var u=(p=new Error().stack)!==null&&p!==void 0?p:"<failed to generate stacktrace>";h.warn("Current logger will be overwritten from "+u),z.warn("Current logger will overwrite one already registered from "+u)}return j("diag",z,r,!0)};r.setLogger=n,r.disable=function(){B(It,r)},r.createComponentLogger=function(o){return new Ct(o)},r.verbose=e("verbose"),r.debug=e("debug"),r.info=e("info"),r.warn=e("warn"),r.error=e("error")}return t.instance=function(){return this._instance||(this._instance=new t),this._instance},t}(),Mt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(s){i={error:s}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},St=function(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},xt=function(){function t(e){this._entries=e?new Map(e):new Map}return t.prototype.getEntry=function(e){var r=this._entries.get(e);if(r)return Object.assign({},r)},t.prototype.getAllEntries=function(){return Array.from(this._entries.entries()).map(function(e){var r=Mt(e,2),n=r[0],o=r[1];return[n,o]})},t.prototype.setEntry=function(e,r){var n=new t(this._entries);return n._entries.set(e,r),n},t.prototype.removeEntry=function(e){var r=new t(this._entries);return r._entries.delete(e),r},t.prototype.removeEntries=function(){for(var e,r,n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];var a=new t(this._entries);try{for(var i=St(n),s=i.next();!s.done;s=i.next()){var p=s.value;a._entries.delete(p)}}catch(d){e={error:d}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}return a},t.prototype.clear=function(){return new t},t}();b.instance();function jt(t){return t===void 0&&(t={}),new xt(new Map(Object.entries(t)))}function st(t){return Symbol.for(t)}var Bt=function(){function t(e){var r=this;r._currentContext=e?new Map(e):new Map,r.getValue=function(n){return r._currentContext.get(n)},r.setValue=function(n,o){var a=new t(r._currentContext);return a._currentContext.set(n,o),a},r.deleteValue=function(n){var o=new t(r._currentContext);return o._currentContext.delete(n),o}}return t}(),Gt=new Bt,T=function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(n[a]=o[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Dt=function(){function t(){}return t.prototype.createGauge=function(e,r){return Wt},t.prototype.createHistogram=function(e,r){return Ht},t.prototype.createCounter=function(e,r){return Vt},t.prototype.createUpDownCounter=function(e,r){return Xt},t.prototype.createObservableGauge=function(e,r){return Kt},t.prototype.createObservableCounter=function(e,r){return Jt},t.prototype.createObservableUpDownCounter=function(e,r){return Yt},t.prototype.addBatchObservableCallback=function(e,r){},t.prototype.removeBatchObservableCallback=function(e){},t}(),L=function(){function t(){}return t}(),Ut=function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.add=function(r,n){},e}(L),kt=function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.add=function(r,n){},e}(L),qt=function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.record=function(r,n){},e}(L),$t=function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.record=function(r,n){},e}(L),V=function(){function t(){}return t.prototype.addCallback=function(e){},t.prototype.removeCallback=function(e){},t}(),Lt=function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e}(V),Qt=function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e}(V),Ft=function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e}(V),zt=new Dt,Vt=new Ut,Wt=new qt,Ht=new $t,Xt=new kt,Jt=new Lt,Kt=new Qt,Yt=new Ft,Zt={get:function(t,e){if(t!=null)return t[e]},keys:function(t){return t==null?[]:Object.keys(t)}},te={set:function(t,e,r){t!=null&&(t[e]=r)}},ee=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(s){i={error:s}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},re=function(t,e,r){if(r||arguments.length===2)for(var n=0,o=e.length,a;n<o;n++)(a||!(n in e))&&(a||(a=Array.prototype.slice.call(e,0,n)),a[n]=e[n]);return t.concat(a||Array.prototype.slice.call(e))},ne=function(){function t(){}return t.prototype.active=function(){return Gt},t.prototype.with=function(e,r,n){for(var o=[],a=3;a<arguments.length;a++)o[a-3]=arguments[a];return r.call.apply(r,re([n],ee(o),!1))},t.prototype.bind=function(e,r){return r},t.prototype.enable=function(){return this},t.prototype.disable=function(){return this},t}(),oe=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(s){i={error:s}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},ae=function(t,e,r){if(r||arguments.length===2)for(var n=0,o=e.length,a;n<o;n++)(a||!(n in e))&&(a||(a=Array.prototype.slice.call(e,0,n)),a[n]=e[n]);return t.concat(a||Array.prototype.slice.call(e))},W="context",ie=new ne,Q=function(){function t(){}return t.getInstance=function(){return this._instance||(this._instance=new t),this._instance},t.prototype.setGlobalContextManager=function(e){return j(W,e,b.instance())},t.prototype.active=function(){return this._getContextManager().active()},t.prototype.with=function(e,r,n){for(var o,a=[],i=3;i<arguments.length;i++)a[i-3]=arguments[i];return(o=this._getContextManager()).with.apply(o,ae([e,r,n],oe(a),!1))},t.prototype.bind=function(e,r){return this._getContextManager().bind(e,r)},t.prototype._getContextManager=function(){return C(W)||ie},t.prototype.disable=function(){this._getContextManager().disable(),B(W,b.instance())},t}(),H;(function(t){t[t.NONE=0]="NONE",t[t.SAMPLED=1]="SAMPLED"})(H||(H={}));var ft="0000000000000000",pt="00000000000000000000000000000000",ue={traceId:pt,spanId:ft,traceFlags:H.NONE},D=function(){function t(e){e===void 0&&(e=ue),this._spanContext=e}return t.prototype.spanContext=function(){return this._spanContext},t.prototype.setAttribute=function(e,r){return this},t.prototype.setAttributes=function(e){return this},t.prototype.addEvent=function(e,r){return this},t.prototype.addLink=function(e){return this},t.prototype.addLinks=function(e){return this},t.prototype.setStatus=function(e){return this},t.prototype.updateName=function(e){return this},t.prototype.end=function(e){},t.prototype.isRecording=function(){return!1},t.prototype.recordException=function(e,r){},t}(),X=st("OpenTelemetry Context Key SPAN");function J(t){return t.getValue(X)||void 0}function ce(){return J(Q.getInstance().active())}function K(t,e){return t.setValue(X,e)}function se(t){return t.deleteValue(X)}function fe(t,e){return K(t,new D(e))}function lt(t){var e;return(e=J(t))===null||e===void 0?void 0:e.spanContext()}var pe=/^([0-9a-f]{32})$/i,le=/^[0-9a-f]{16}$/i;function de(t){return pe.test(t)&&t!==pt}function ge(t){return le.test(t)&&t!==ft}function dt(t){return de(t.traceId)&&ge(t.spanId)}function ve(t){return new D(t)}var Y=Q.getInstance(),gt=function(){function t(){}return t.prototype.startSpan=function(e,r,n){n===void 0&&(n=Y.active());var o=!!(r!=null&&r.root);if(o)return new D;var a=n&&lt(n);return he(a)&&dt(a)?new D(a):new D},t.prototype.startActiveSpan=function(e,r,n,o){var a,i,s;if(!(arguments.length<2)){arguments.length===2?s=r:arguments.length===3?(a=r,s=n):(a=r,i=n,s=o);var p=i??Y.active(),d=this.startSpan(e,a,p),h=K(p,d);return Y.with(h,s,void 0,d)}},t}();function he(t){return typeof t=="object"&&typeof t.spanId=="string"&&typeof t.traceId=="string"&&typeof t.traceFlags=="number"}var ye=new gt,_e=function(){function t(e,r,n,o){this._provider=e,this.name=r,this.version=n,this.options=o}return t.prototype.startSpan=function(e,r,n){return this._getTracer().startSpan(e,r,n)},t.prototype.startActiveSpan=function(e,r,n,o){var a=this._getTracer();return Reflect.apply(a.startActiveSpan,a,arguments)},t.prototype._getTracer=function(){if(this._delegate)return this._delegate;var e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):ye},t}(),me=function(){function t(){}return t.prototype.getTracer=function(e,r,n){return new gt},t}(),be=new me,vt=function(){function t(){}return t.prototype.getTracer=function(e,r,n){var o;return(o=this.getDelegateTracer(e,r,n))!==null&&o!==void 0?o:new _e(this,e,r,n)},t.prototype.getDelegate=function(){var e;return(e=this._delegate)!==null&&e!==void 0?e:be},t.prototype.setDelegate=function(e){this._delegate=e},t.prototype.getDelegateTracer=function(e,r,n){var o;return(o=this._delegate)===null||o===void 0?void 0:o.getTracer(e,r,n)},t}(),U;(function(t){t[t.INTERNAL=0]="INTERNAL",t[t.SERVER=1]="SERVER",t[t.CLIENT=2]="CLIENT",t[t.PRODUCER=3]="PRODUCER",t[t.CONSUMER=4]="CONSUMER"})(U||(U={}));var Z;(function(t){t[t.UNSET=0]="UNSET",t[t.OK=1]="OK",t[t.ERROR=2]="ERROR"})(Z||(Z={})),Q.getInstance(),b.instance();var we=function(){function t(){}return t.prototype.getMeter=function(e,r,n){return zt},t}(),Ee=new we,tt="metrics",Ae=function(){function t(){}return t.getInstance=function(){return this._instance||(this._instance=new t),this._instance},t.prototype.setGlobalMeterProvider=function(e){return j(tt,e,b.instance())},t.prototype.getMeterProvider=function(){return C(tt)||Ee},t.prototype.getMeter=function(e,r,n){return this.getMeterProvider().getMeter(e,r,n)},t.prototype.disable=function(){B(tt,b.instance())},t}();Ae.getInstance();var Ne=function(){function t(){}return t.prototype.inject=function(e,r){},t.prototype.extract=function(e,r){return e},t.prototype.fields=function(){return[]},t}(),et=st("OpenTelemetry Baggage Key");function ht(t){return t.getValue(et)||void 0}function Pe(){return ht(Q.getInstance().active())}function Ce(t,e){return t.setValue(et,e)}function Te(t){return t.deleteValue(et)}var rt="propagation",Oe=new Ne,Re=function(){function t(){this.createBaggage=jt,this.getBaggage=ht,this.getActiveBaggage=Pe,this.setBaggage=Ce,this.deleteBaggage=Te}return t.getInstance=function(){return this._instance||(this._instance=new t),this._instance},t.prototype.setGlobalPropagator=function(e){return j(rt,e,b.instance())},t.prototype.inject=function(e,r,n){return n===void 0&&(n=te),this._getGlobalPropagator().inject(e,r,n)},t.prototype.extract=function(e,r,n){return n===void 0&&(n=Zt),this._getGlobalPropagator().extract(e,r,n)},t.prototype.fields=function(){return this._getGlobalPropagator().fields()},t.prototype.disable=function(){B(rt,b.instance())},t.prototype._getGlobalPropagator=function(){return C(rt)||Oe},t}();Re.getInstance();var nt="trace",Ie=function(){function t(){this._proxyTracerProvider=new vt,this.wrapSpanContext=ve,this.isSpanContextValid=dt,this.deleteSpan=se,this.getSpan=J,this.getActiveSpan=ce,this.getSpanContext=lt,this.setSpan=K,this.setSpanContext=fe}return t.getInstance=function(){return this._instance||(this._instance=new t),this._instance},t.prototype.setGlobalTracerProvider=function(e){var r=j(nt,this._proxyTracerProvider,b.instance());return r&&this._proxyTracerProvider.setDelegate(e),r},t.prototype.getTracerProvider=function(){return C(nt)||this._proxyTracerProvider},t.prototype.getTracer=function(e,r){return this.getTracerProvider().getTracer(e,r)},t.prototype.disable=function(){B(nt,b.instance()),this._proxyTracerProvider=new vt},t}(),Me=Ie.getInstance();const ot="data: ",yt=async t=>{var r;if(t.status<400)return t;const e=t.body?await t.text():t.statusText;if(t.status>500||!t.body)throw new g([],e);try{const n=JSON.parse(e),o=(r=n.detail)!=null&&r.length?n.detail.map(a=>a.msg).join(". "):e;throw new g(n.detail??[],o)}catch{throw new g([],e)}},Se=t=>yt(t).then(e=>e.json());function F(t,e,r,n={}){return t.startActiveSpan(e,n,o=>{const a=i=>{(i instanceof Error||typeof i=="string")&&o.recordException(i),o.setStatus({code:Z.ERROR}),o.end()};try{const i=r(o);return typeof i=="object"&&i!==null&&"then"in i&&typeof i.then=="function"?i.then(s=>(o.end(),s),s=>{throw a(s),s}):(o.end(),i)}catch(i){throw a(i),i}})}const _t=t=>t==="http:"||t==="https:",at=(...t)=>`/${t.map(r=>xe(r,"/")).filter(r=>r).join("/")}`,xe=(t,e)=>{const r=je(t,e);return Be(r,e)},je=(t,e)=>{for(let r=0;r<t.length;r++)if(t[r]!==e)return t.substring(r);return""},Be=(t,e)=>{for(let r=t.length-1;r>=0;r--)if(t[r]!==e)return t.substring(0,r+1);return""},Ge=t=>{const e=Me.getTracer("promptql-nodejs-sdk"),r=typeof t.fetch=="function"?t.fetch:fetch,n=new URL(t.baseUrl?t.baseUrl:"https://api.promptql.pro.hasura.io");if(!_t(n.protocol))throw new Error(`invalid promptql url: ${n}`);const o={...t.headers??{},Authorization:`Bearer ${t.apiKey}`},a=t.timezone||Intl.DateTimeFormat().resolvedOptions().timeZone,i=t.aiPrimitivesLlm??{provider:"hasura"},s=async u=>{const f=typeof t.ddn=="function"?await t.ddn():t.ddn;if(!(u!=null&&u.url)&&!f.url)throw new g([],"`ddn.url` is required");const c=new URL((u==null?void 0:u.url)||f.url);if(!_t(c.protocol))throw new Error(`invalid ddn.url protocol: ${c.protocol}`);return c.pathname.endsWith("/sql")||(c.pathname=at(c.pathname,"v1/sql")),{url:c.toString(),headers:{...(f==null?void 0:f.headers)??{},...(u==null?void 0:u.headers)??{}}}},p=async(u,{llm:f,ai_primitives_llm:c,ddn:v,...l},N,E)=>{var w;if(!l.interactions.length||l.interactions.every(O=>!O.user_message.text))throw new g([],"require at least 1 interaction with non-empty user message content");f=f??t.llm,c=c??t.aiPrimitivesLlm;const _="v1",A=l.timezone||a;u.setAttributes({"promptql.request.interactions_length":l.interactions.length,"promptql.request.artifacts_length":((w=l.artifacts)==null?void 0:w.length)??0,"promptql.request.timezone":A,"promptql.request.version":_}),f!=null&&f.provider&&u.setAttribute("promptql.request.llm_provider",f.provider),c!=null&&c.provider&&u.setAttribute("promptql.request.ai_primitives_llm_provider",c.provider);const k=await s(v);u.setAttribute("promptql.request.ddn_url",k.url);const I=new URL(n);return I.pathname=at(I.pathname,"query"),r(I,{...E,method:"POST",headers:{...o,...E==null?void 0:E.headers,"Content-Type":"application/json"},body:JSON.stringify({system_instructions:t.systemInstructions,...l,llm:f,ai_primitives_llm:c,ddn:k,timezone:A,version:_,stream:N})}).then(yt)};return{query:(u,f)=>F(e,"PromptQL Query",c=>p(c,u,!1,f).then(v=>v.json()).then(v=>{const l=v;return c.setAttributes({"promptql.response.assistant_actions_length":l.assistant_actions.length,"promptql.response.modified_artifacts_length":l.modified_artifacts.length}),l}),{kind:U.CLIENT}),queryStream:async(u,f,c)=>F(e,"PromptQL Query Stream",async v=>{var I;const l=await p(v,u,!0,c);if(typeof f!="function"||!l.body)return l;const N=l.body.getReader(),E=new TextDecoder("utf-8");let _="",A=0;const k=async w=>{if(!w&&!_)return;let O=_+w;_="",O.startsWith(ot)&&(O=w.substring(ot.length));const M=O.split(ot);for(let q=0;q<M.length;q++){const it=M[q],$=it.trim();if($[$.length-1]!=="}"){_+=q>0?`data: ${it}`:it;return}let ut;try{ut=JSON.parse($)}catch{_+=q>0?`data: ${$}`:$}ut&&await f(ut)}};for(;;){if((I=c==null?void 0:c.signal)!=null&&I.aborted){await l.body.cancel();break}try{const{value:w,done:O}=await N.read();if(O)break;const M=E.decode(w);if(!M)continue;A+=M.length,await k(M)}catch(w){throw await l.body.cancel(),w}}return v.setAttribute("http.response.body.size",A),_&&await k(""),l},{kind:U.CLIENT}),executeProgram:async({ai_primitives_llm:u,artifacts:f,ddn:c,...v},l)=>F(e,"PromptQL Execute Program",async N=>{if(!v.code)throw new g([],"`code` is required");N.setAttribute("promptql.request.artifacts_length",(f==null?void 0:f.length)??0),u=u??i,u!=null&&u.provider&&N.setAttribute("promptql.request.ai_primitives_llm_provider",u.provider);const E=await s(c);N.setAttribute("promptql.request.ddn_url",E.url);const _=new URL(n);return _.pathname=at(_.pathname,"execute_program"),r(_,{...l,headers:{...o,...l==null?void 0:l.headers,"Content-Type":"application/json"},method:"POST",body:JSON.stringify({...v,ai_primitives_llm:u,ddn:E,artifacts:f??[]})}).then(Se).then(A=>(N.setAttributes({"promptql.response.accessed_artifact_ids":A.accessed_artifact_ids,"promptql.response.modified_artifacts_length":A.modified_artifacts.length}),A))},{kind:U.CLIENT})}},mt=t=>{const e=u=>`${u.artifact_type}:${u.identifier}`;let r=(t==null?void 0:t.thread_id)??null,n;const o=(t==null?void 0:t.assistant_actions)??[],a=(t==null?void 0:t.modified_artifacts.reduce((u,f)=>{const c=e(f);return Object.assign(u,{[c]:f})},{}))??{},i=Object.keys(a).sort(),s=()=>mt({thread_id:r??void 0,assistant_actions:o.map(u=>({...u})),modified_artifacts:i.map(u=>{const f=a[u];switch(f==null?void 0:f.artifact_type){case"table":{const{data:c,...v}=a[u];return Object.assign(v,{data:[...c]})}case"visualization":{const{data:c,...v}=a[u];return Object.assign(v,{data:{...c}})}default:return{...f}}})}),p=u=>{switch(u.type){case"thread_metadata_chunk":r=u.thread_id;break;case"error_chunk":n?n.error+=u.error:n=u;break;case"artifact_update_chunk":{const f=e(u.artifact),c=a[f];if(!c){a[f]=u.artifact,i.push(f),i.sort();return}switch(c.artifact_type){case"text":c.data+=u.artifact.data;break;case"table":c.data.push(...u.artifact.data);break;case"visualization":c.data.html+=u.artifact.data.html;break}break}case"assistant_action_chunk":{for(let c=o.length;c<=u.index;c++)o.push({});const f=o[u.index];for(const c of Ue)f[c]=De(f[c],u[c]);break}}},d=(...u)=>{const f=s();for(const c of u)f.push(c);return f},h=()=>i.map(u=>a[u]);return{getThreadId:()=>r,getAssistantActions:()=>o,getError:()=>n,isError:()=>n!==void 0,getModifiedArtifacts:h,toQueryResponse:()=>({thread_id:r,assistant_actions:o,modified_artifacts:h()}),push:p,append:d}},De=(t,e)=>t?e?t+e:t:e,Ue=["code","code_error","code_output","message","plan"];return m.PromptQLError=g,m.createPromptQLClient=Ge,m.createQueryChunks=mt,m.withActiveSpan=F,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"}),m}({});
1
+ var promptql=(function(A){"use strict";const B="https://api.promptql.pro.hasura.io";class m extends Error{detail=[];constructor(e,r){super(r||e.map(n=>n.msg).join(". ")),this.detail=e}}var vt=typeof globalThis=="object"?globalThis:typeof self=="object"?self:typeof window=="object"?window:typeof global=="object"?global:{},N="1.9.0",et=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function yt(t){var e=new Set([t]),r=new Set,n=t.match(et);if(!n)return function(){return!1};var o={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(o.prerelease!=null)return function(p){return p===t};function a(f){return r.add(f),!1}function i(f){return e.add(f),!0}return function(p){if(e.has(p))return!0;if(r.has(p))return!1;var h=p.match(et);if(!h)return a(p);var d={major:+h[1],minor:+h[2],patch:+h[3],prerelease:h[4]};return d.prerelease!=null||o.major!==d.major?a(p):o.major===0?o.minor===d.minor&&o.patch<=d.patch?i(p):a(p):o.minor<=d.minor?i(p):a(p)}}var _t=yt(N),mt=N.split(".")[0],R=Symbol.for("opentelemetry.js.api."+mt),S=vt;function I(t,e,r,n){var o;n===void 0&&(n=!1);var a=S[R]=(o=S[R])!==null&&o!==void 0?o:{version:N};if(!n&&a[t]){var i=new Error("@opentelemetry/api: Attempted duplicate registration of API: "+t);return r.error(i.stack||i.message),!1}if(a.version!==N){var i=new Error("@opentelemetry/api: Registration of version v"+a.version+" for "+t+" does not match previously registered API v"+N);return r.error(i.stack||i.message),!1}return a[t]=e,r.debug("@opentelemetry/api: Registered a global for "+t+" v"+N+"."),!0}function C(t){var e,r,n=(e=S[R])===null||e===void 0?void 0:e.version;if(!(!n||!_t(n)))return(r=S[R])===null||r===void 0?void 0:r[t]}function M(t,e){e.debug("@opentelemetry/api: Unregistering a global for "+t+" v"+N+".");var r=S[R];r&&delete r[t]}var bt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(f){i={error:f}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},wt=function(t,e,r){if(r||arguments.length===2)for(var n=0,o=e.length,a;n<o;n++)(a||!(n in e))&&(a||(a=Array.prototype.slice.call(e,0,n)),a[n]=e[n]);return t.concat(a||Array.prototype.slice.call(e))},At=(function(){function t(e){this._namespace=e.namespace||"DiagComponentLogger"}return t.prototype.debug=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return x("debug",this._namespace,e)},t.prototype.error=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return x("error",this._namespace,e)},t.prototype.info=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return x("info",this._namespace,e)},t.prototype.warn=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return x("warn",this._namespace,e)},t.prototype.verbose=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return x("verbose",this._namespace,e)},t})();function x(t,e,r){var n=C("diag");if(n)return r.unshift(e),n[t].apply(n,wt([],bt(r),!1))}var y;(function(t){t[t.NONE=0]="NONE",t[t.ERROR=30]="ERROR",t[t.WARN=50]="WARN",t[t.INFO=60]="INFO",t[t.DEBUG=70]="DEBUG",t[t.VERBOSE=80]="VERBOSE",t[t.ALL=9999]="ALL"})(y||(y={}));function Et(t,e){t<y.NONE?t=y.NONE:t>y.ALL&&(t=y.ALL),e=e||{};function r(n,o){var a=e[n];return typeof a=="function"&&t>=o?a.bind(e):function(){}}return{error:r("error",y.ERROR),warn:r("warn",y.WARN),info:r("info",y.INFO),debug:r("debug",y.DEBUG),verbose:r("verbose",y.VERBOSE)}}var Pt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(f){i={error:f}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},Nt=function(t,e,r){if(r||arguments.length===2)for(var n=0,o=e.length,a;n<o;n++)(a||!(n in e))&&(a||(a=Array.prototype.slice.call(e,0,n)),a[n]=e[n]);return t.concat(a||Array.prototype.slice.call(e))},Ct="diag",b=(function(){function t(){function e(o){return function(){for(var a=[],i=0;i<arguments.length;i++)a[i]=arguments[i];var f=C("diag");if(f)return f[o].apply(f,Nt([],Pt(a),!1))}}var r=this,n=function(o,a){var i,f,p;if(a===void 0&&(a={logLevel:y.INFO}),o===r){var h=new Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return r.error((i=h.stack)!==null&&i!==void 0?i:h.message),!1}typeof a=="number"&&(a={logLevel:a});var d=C("diag"),l=Et((f=a.logLevel)!==null&&f!==void 0?f:y.INFO,o);if(d&&!a.suppressOverrideMessage){var u=(p=new Error().stack)!==null&&p!==void 0?p:"<failed to generate stacktrace>";d.warn("Current logger will be overwritten from "+u),l.warn("Current logger will overwrite one already registered from "+u)}return I("diag",l,r,!0)};r.setLogger=n,r.disable=function(){M(Ct,r)},r.createComponentLogger=function(o){return new At(o)},r.verbose=e("verbose"),r.debug=e("debug"),r.info=e("info"),r.warn=e("warn"),r.error=e("error")}return t.instance=function(){return this._instance||(this._instance=new t),this._instance},t})(),Tt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(f){i={error:f}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},Ot=function(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},Rt=(function(){function t(e){this._entries=e?new Map(e):new Map}return t.prototype.getEntry=function(e){var r=this._entries.get(e);if(r)return Object.assign({},r)},t.prototype.getAllEntries=function(){return Array.from(this._entries.entries()).map(function(e){var r=Tt(e,2),n=r[0],o=r[1];return[n,o]})},t.prototype.setEntry=function(e,r){var n=new t(this._entries);return n._entries.set(e,r),n},t.prototype.removeEntry=function(e){var r=new t(this._entries);return r._entries.delete(e),r},t.prototype.removeEntries=function(){for(var e,r,n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];var a=new t(this._entries);try{for(var i=Ot(n),f=i.next();!f.done;f=i.next()){var p=f.value;a._entries.delete(p)}}catch(h){e={error:h}}finally{try{f&&!f.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}return a},t.prototype.clear=function(){return new t},t})();b.instance();function St(t){return t===void 0&&(t={}),new Rt(new Map(Object.entries(t)))}function rt(t){return Symbol.for(t)}var It=(function(){function t(e){var r=this;r._currentContext=e?new Map(e):new Map,r.getValue=function(n){return r._currentContext.get(n)},r.setValue=function(n,o){var a=new t(r._currentContext);return a._currentContext.set(n,o),a},r.deleteValue=function(n){var o=new t(r._currentContext);return o._currentContext.delete(n),o}}return t})(),Mt=new It,T=(function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(n[a]=o[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}})(),xt=(function(){function t(){}return t.prototype.createGauge=function(e,r){return Qt},t.prototype.createHistogram=function(e,r){return $t},t.prototype.createCounter=function(e,r){return Vt},t.prototype.createUpDownCounter=function(e,r){return Ft},t.prototype.createObservableGauge=function(e,r){return Ht},t.prototype.createObservableCounter=function(e,r){return zt},t.prototype.createObservableUpDownCounter=function(e,r){return Wt},t.prototype.addBatchObservableCallback=function(e,r){},t.prototype.removeBatchObservableCallback=function(e){},t})(),j=(function(){function t(){}return t})(),qt=(function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.add=function(r,n){},e})(j),Ut=(function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.add=function(r,n){},e})(j),jt=(function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.record=function(r,n){},e})(j),Lt=(function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.record=function(r,n){},e})(j),D=(function(){function t(){}return t.prototype.addCallback=function(e){},t.prototype.removeCallback=function(e){},t})(),Bt=(function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e})(D),Dt=(function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e})(D),kt=(function(t){T(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e})(D),Gt=new xt,Vt=new qt,Qt=new jt,$t=new Lt,Ft=new Ut,zt=new Bt,Ht=new Dt,Wt=new kt,Xt={get:function(t,e){if(t!=null)return t[e]},keys:function(t){return t==null?[]:Object.keys(t)}},Jt={set:function(t,e,r){t!=null&&(t[e]=r)}},Kt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(f){i={error:f}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},Yt=function(t,e,r){if(r||arguments.length===2)for(var n=0,o=e.length,a;n<o;n++)(a||!(n in e))&&(a||(a=Array.prototype.slice.call(e,0,n)),a[n]=e[n]);return t.concat(a||Array.prototype.slice.call(e))},Zt=(function(){function t(){}return t.prototype.active=function(){return Mt},t.prototype.with=function(e,r,n){for(var o=[],a=3;a<arguments.length;a++)o[a-3]=arguments[a];return r.call.apply(r,Yt([n],Kt(o),!1))},t.prototype.bind=function(e,r){return r},t.prototype.enable=function(){return this},t.prototype.disable=function(){return this},t})(),te=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(f){i={error:f}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},ee=function(t,e,r){if(r||arguments.length===2)for(var n=0,o=e.length,a;n<o;n++)(a||!(n in e))&&(a||(a=Array.prototype.slice.call(e,0,n)),a[n]=e[n]);return t.concat(a||Array.prototype.slice.call(e))},k="context",re=new Zt,L=(function(){function t(){}return t.getInstance=function(){return this._instance||(this._instance=new t),this._instance},t.prototype.setGlobalContextManager=function(e){return I(k,e,b.instance())},t.prototype.active=function(){return this._getContextManager().active()},t.prototype.with=function(e,r,n){for(var o,a=[],i=3;i<arguments.length;i++)a[i-3]=arguments[i];return(o=this._getContextManager()).with.apply(o,ee([e,r,n],te(a),!1))},t.prototype.bind=function(e,r){return this._getContextManager().bind(e,r)},t.prototype._getContextManager=function(){return C(k)||re},t.prototype.disable=function(){this._getContextManager().disable(),M(k,b.instance())},t})(),G;(function(t){t[t.NONE=0]="NONE",t[t.SAMPLED=1]="SAMPLED"})(G||(G={}));var nt="0000000000000000",ot="00000000000000000000000000000000",ne={traceId:ot,spanId:nt,traceFlags:G.NONE},q=(function(){function t(e){e===void 0&&(e=ne),this._spanContext=e}return t.prototype.spanContext=function(){return this._spanContext},t.prototype.setAttribute=function(e,r){return this},t.prototype.setAttributes=function(e){return this},t.prototype.addEvent=function(e,r){return this},t.prototype.addLink=function(e){return this},t.prototype.addLinks=function(e){return this},t.prototype.setStatus=function(e){return this},t.prototype.updateName=function(e){return this},t.prototype.end=function(e){},t.prototype.isRecording=function(){return!1},t.prototype.recordException=function(e,r){},t})(),V=rt("OpenTelemetry Context Key SPAN");function Q(t){return t.getValue(V)||void 0}function oe(){return Q(L.getInstance().active())}function $(t,e){return t.setValue(V,e)}function ae(t){return t.deleteValue(V)}function ie(t,e){return $(t,new q(e))}function at(t){var e;return(e=Q(t))===null||e===void 0?void 0:e.spanContext()}var ue=/^([0-9a-f]{32})$/i,ce=/^[0-9a-f]{16}$/i;function se(t){return ue.test(t)&&t!==ot}function fe(t){return ce.test(t)&&t!==nt}function it(t){return se(t.traceId)&&fe(t.spanId)}function le(t){return new q(t)}var F=L.getInstance(),ut=(function(){function t(){}return t.prototype.startSpan=function(e,r,n){n===void 0&&(n=F.active());var o=!!r?.root;if(o)return new q;var a=n&&at(n);return pe(a)&&it(a)?new q(a):new q},t.prototype.startActiveSpan=function(e,r,n,o){var a,i,f;if(!(arguments.length<2)){arguments.length===2?f=r:arguments.length===3?(a=r,f=n):(a=r,i=n,f=o);var p=i??F.active(),h=this.startSpan(e,a,p),d=$(p,h);return F.with(d,f,void 0,h)}},t})();function pe(t){return typeof t=="object"&&typeof t.spanId=="string"&&typeof t.traceId=="string"&&typeof t.traceFlags=="number"}var de=new ut,ge=(function(){function t(e,r,n,o){this._provider=e,this.name=r,this.version=n,this.options=o}return t.prototype.startSpan=function(e,r,n){return this._getTracer().startSpan(e,r,n)},t.prototype.startActiveSpan=function(e,r,n,o){var a=this._getTracer();return Reflect.apply(a.startActiveSpan,a,arguments)},t.prototype._getTracer=function(){if(this._delegate)return this._delegate;var e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):de},t})(),he=(function(){function t(){}return t.prototype.getTracer=function(e,r,n){return new ut},t})(),ve=new he,ct=(function(){function t(){}return t.prototype.getTracer=function(e,r,n){var o;return(o=this.getDelegateTracer(e,r,n))!==null&&o!==void 0?o:new ge(this,e,r,n)},t.prototype.getDelegate=function(){var e;return(e=this._delegate)!==null&&e!==void 0?e:ve},t.prototype.setDelegate=function(e){this._delegate=e},t.prototype.getDelegateTracer=function(e,r,n){var o;return(o=this._delegate)===null||o===void 0?void 0:o.getTracer(e,r,n)},t})(),E;(function(t){t[t.INTERNAL=0]="INTERNAL",t[t.SERVER=1]="SERVER",t[t.CLIENT=2]="CLIENT",t[t.PRODUCER=3]="PRODUCER",t[t.CONSUMER=4]="CONSUMER"})(E||(E={}));var z;(function(t){t[t.UNSET=0]="UNSET",t[t.OK=1]="OK",t[t.ERROR=2]="ERROR"})(z||(z={})),L.getInstance(),b.instance();var ye=(function(){function t(){}return t.prototype.getMeter=function(e,r,n){return Gt},t})(),_e=new ye,H="metrics",me=(function(){function t(){}return t.getInstance=function(){return this._instance||(this._instance=new t),this._instance},t.prototype.setGlobalMeterProvider=function(e){return I(H,e,b.instance())},t.prototype.getMeterProvider=function(){return C(H)||_e},t.prototype.getMeter=function(e,r,n){return this.getMeterProvider().getMeter(e,r,n)},t.prototype.disable=function(){M(H,b.instance())},t})();me.getInstance();var be=(function(){function t(){}return t.prototype.inject=function(e,r){},t.prototype.extract=function(e,r){return e},t.prototype.fields=function(){return[]},t})(),W=rt("OpenTelemetry Baggage Key");function st(t){return t.getValue(W)||void 0}function we(){return st(L.getInstance().active())}function Ae(t,e){return t.setValue(W,e)}function Ee(t){return t.deleteValue(W)}var X="propagation",Pe=new be,Ne=(function(){function t(){this.createBaggage=St,this.getBaggage=st,this.getActiveBaggage=we,this.setBaggage=Ae,this.deleteBaggage=Ee}return t.getInstance=function(){return this._instance||(this._instance=new t),this._instance},t.prototype.setGlobalPropagator=function(e){return I(X,e,b.instance())},t.prototype.inject=function(e,r,n){return n===void 0&&(n=Jt),this._getGlobalPropagator().inject(e,r,n)},t.prototype.extract=function(e,r,n){return n===void 0&&(n=Xt),this._getGlobalPropagator().extract(e,r,n)},t.prototype.fields=function(){return this._getGlobalPropagator().fields()},t.prototype.disable=function(){M(X,b.instance())},t.prototype._getGlobalPropagator=function(){return C(X)||Pe},t})();Ne.getInstance();var J="trace",Ce=(function(){function t(){this._proxyTracerProvider=new ct,this.wrapSpanContext=le,this.isSpanContextValid=it,this.deleteSpan=ae,this.getSpan=Q,this.getActiveSpan=oe,this.getSpanContext=at,this.setSpan=$,this.setSpanContext=ie}return t.getInstance=function(){return this._instance||(this._instance=new t),this._instance},t.prototype.setGlobalTracerProvider=function(e){var r=I(J,this._proxyTracerProvider,b.instance());return r&&this._proxyTracerProvider.setDelegate(e),r},t.prototype.getTracerProvider=function(){return C(J)||this._proxyTracerProvider},t.prototype.getTracer=function(e,r){return this.getTracerProvider().getTracer(e,r)},t.prototype.disable=function(){M(J,b.instance()),this._proxyTracerProvider=new ct},t})(),ft=Ce.getInstance();const K=async t=>{if(t.status<400)return t;const e=t.body?await t.text():t.statusText;if(t.status>500||!t.body)throw new m([],e);try{const r=JSON.parse(e),n=r.detail?.length?r.detail.map(o=>o.msg).join(". "):e;throw new m(r.detail??[],n)}catch{throw new m([],e)}},lt=t=>K(t).then(e=>e.json());function O(t,e,r,n={}){return t.startActiveSpan(e,n,o=>{const a=i=>{(i instanceof Error||typeof i=="string")&&o.recordException(i),o.setStatus({code:z.ERROR}),o.end()};try{const i=r(o);return typeof i=="object"&&i!==null&&"then"in i&&typeof i.then=="function"?i.then(f=>(o.end(),f),f=>{throw a(f),f}):(o.end(),i)}catch(i){throw a(i),i}})}const Y=t=>t==="http:"||t==="https:",U=(...t)=>`/${t.map(r=>Te(r,"/")).filter(r=>r).join("/")}`,Te=(t,e)=>{const r=Oe(t,e);return Re(r,e)},Oe=(t,e)=>{for(let r=0;r<t.length;r++)if(t[r]!==e)return t.substring(r);return""},Re=(t,e)=>{for(let r=t.length-1;r>=0;r--)if(t[r]!==e)return t.substring(0,r+1);return""},pt=t=>{const e=u=>`${u.artifact_type}:${u.identifier}`;let r=t?.thread_id??null,n;const o=t?.assistant_actions??[],a=t?.modified_artifacts.reduce((u,s)=>{const c=e(s);return Object.assign(u,{[c]:s})},{})??{},i=Object.keys(a).sort(),f=()=>pt({thread_id:r??void 0,assistant_actions:o.map(u=>({...u})),modified_artifacts:i.map(u=>{const s=a[u];switch(s?.artifact_type){case"table":{const{data:c,...g}=a[u];return Object.assign(g,{data:[...c]})}case"visualization":{const{data:c,...g}=a[u];return Object.assign(g,{data:{...c}})}default:return{...s}}})}),p=u=>{switch(u.type){case"thread_metadata_chunk":r=u.thread_id;break;case"error_chunk":n?n.error+=u.error:n=u;break;case"artifact_update_chunk":{const s=e(u.artifact),c=a[s];if(!c){a[s]=u.artifact,i.push(s),i.sort();return}switch(c.artifact_type){case"text":c.data+=u.artifact.data;break;case"table":c.data.push(...u.artifact.data);break;case"visualization":c.data.html+=u.artifact.data.html;break}break}case"assistant_action_chunk":{for(let c=o.length;c<=u.index;c++)o.push({});const s=o[u.index];for(const c of Ie)s[c]=Se(s[c],u[c]);break}}},h=(...u)=>{const s=f();for(const c of u)s.push(c);return s},d=()=>i.map(u=>a[u]);return{getThreadId:()=>r,getAssistantActions:()=>o,getError:()=>n,isError:()=>n!==void 0,getModifiedArtifacts:d,toQueryResponse:()=>({thread_id:r,assistant_actions:o,modified_artifacts:d()}),push:p,append:h}},Se=(t,e)=>t?e?t+e:t:e,Ie=["code","code_error","code_output","message","plan"],Z="data: ",dt=async(t,e,r)=>{if(typeof e!="function"||!t.body)return 0;const n=t.body.getReader(),o=new TextDecoder("utf-8");let a="",i=0;const f=async p=>{if(!p&&!a)return;let h=a+p;a="",h.startsWith(Z)&&(h=p.substring(Z.length));const d=h.split(Z);for(let l=0;l<d.length;l++){const u=d[l],s=u.trim();if(s[s.length-1]!=="}"){a+=l>0?`data: ${u}`:u;return}let c;try{c=JSON.parse(s)}catch{a+=l>0?`data: ${s}`:s}c&&await e(c)}};for(;;){if(r?.aborted){await t.body.cancel();break}try{const{value:p,done:h}=await n.read();if(h)break;const d=o.decode(p);if(!d)continue;i+=d.length,await f(d)}catch(p){throw await t.body.cancel(),p}}return a&&await f(""),i},gt=t=>{const e=ft.getTracer("promptql-nodejs-sdk"),r=typeof t.fetch=="function"?t.fetch:fetch,n=new URL(t.baseUrl?t.baseUrl:B);if(!Y(n.protocol))throw new Error(`invalid promptql url: ${n}`);const o={...t.headers??{},Authorization:`Bearer ${t.apiKey}`},a=t.timezone||Intl.DateTimeFormat().resolvedOptions().timeZone,i=async(d,{llm:l,ai_primitives_llm:u,ddn:s,...c},g,_)=>{if(!c.interactions.length||c.interactions.every(Ue=>!Ue.user_message.text))throw new m([],"require at least 1 interaction with non-empty user message content");l=l??t.llm,u=u??t.aiPrimitivesLlm;const w="v1",v=c.timezone||a;d.setAttributes({"promptql.request.interactions_length":c.interactions.length,"promptql.request.artifacts_length":c.artifacts?.length??0,"promptql.request.timezone":v,"promptql.request.version":w}),l?.provider&&d.setAttribute("promptql.request.llm_provider",l.provider),u?.provider&&d.setAttribute("promptql.request.ai_primitives_llm_provider",u.provider);const P=await ht(s,t.ddn);d.setAttribute("promptql.request.ddn_url",P.url);const tt=new URL(n);return tt.pathname=U(tt.pathname,"query"),r(tt,{..._,method:"POST",headers:{...o,..._?.headers,"Content-Type":"application/json"},body:JSON.stringify({system_instructions:t.systemInstructions,...c,llm:l,ai_primitives_llm:u,ddn:P,timezone:v,version:w,stream:g})}).then(K)};return{query:(d,l)=>O(e,"PromptQL Query",u=>i(u,d,!1,l).then(s=>s.json()).then(s=>{const c=s;return u.setAttributes({"promptql.response.assistant_actions_length":c.assistant_actions.length,"promptql.response.modified_artifacts_length":c.modified_artifacts.length}),c}),{kind:E.CLIENT}),queryStream:async(d,l,u)=>O(e,"PromptQL Query Stream",async s=>{const c=await i(s,d,!0,u),g=await dt(c,l,u?.signal);return g>0&&s.setAttribute("http.response.body.size",g),c},{kind:E.CLIENT}),executeProgram:async({ddn:d,ai_primitives_llm:l,artifacts:u,...s},c)=>O(e,"PromptQL Execute Program",async g=>{if(!s.code)throw new m([],"`code` is required");const _=await ht(d,t.ddn),w=l??t.aiPrimitivesLlm??{provider:"hasura"};g.setAttribute("promptql.request.artifacts_length",u?.length??0),g.setAttribute("promptql.request.ddn_url",_.url),l?.provider&&g.setAttribute("promptql.request.ai_primitives_llm_provider",l.provider);const v=new URL(n.toString());return v.pathname=U(v.pathname,"execute_program"),r(v,{...c,headers:{...o,...c?.headers,"Content-Type":"application/json"},method:"POST",body:JSON.stringify({...s,ddn:_,ai_primitives_llm:w,artifacts:u??[]})}).then(lt).then(P=>(g.setAttributes({"promptql.response.accessed_artifact_ids":P.accessed_artifact_ids,"promptql.response.modified_artifacts_length":P.modified_artifacts.length}),P))},{kind:E.CLIENT})}},ht=async(t,e)=>{const r=typeof e=="function"?await e():e,n=t?.url||r?.url;if(!n)throw new m([],"`ddn.url` is required");const o=new URL(n);if(!Y(o.protocol))throw new Error(`invalid ddn.url protocol: ${o.protocol}`);return o.pathname.endsWith("/sql")||(o.pathname=U(o.pathname,"v1/sql")),{url:o.toString(),headers:{...r?.headers??{},...t?.headers??{}}}},Me=gt,xe=/^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/,qe=t=>{const e=ft.getTracer("promptql-nodejs-sdk"),r=typeof t.fetch=="function"?t.fetch:fetch,n=new URL(t.baseUrl?t.baseUrl:B);if(!Y(n.protocol))throw new Error(`invalid promptql url: ${n}`);const o={...t.headers??{},Authorization:`Bearer ${t.apiKey}`},a=t.timezone||Intl.DateTimeFormat().resolvedOptions().timeZone,i=async(l,u)=>{const s=t.ddn?typeof t.ddn=="function"?await t.ddn():t.ddn:{},c=u?.build_id||s?.build_id,g=u?.build_version||s?.build_version;if(c&&!xe.test(c))throw new m([],"`ddn.build_id` must be null or a valid uuid");return c&&l.setAttribute("promptql.request.ddn_build_id",c),g&&l.setAttribute("promptql.request.ddn_build_version",g),{build_id:c,build_version:g,headers:{...s?.headers??{},...u?.headers??{}}}},f=async(l,{ddn:u,...s},c,g)=>{if(!s.interactions.length||s.interactions.every(P=>!P.user_message.text))throw new m([],"require at least 1 interaction with non-empty user message content");const _=s.timezone||a;l.setAttributes({"promptql.request.interactions_length":s.interactions.length,"promptql.request.artifacts_length":s.artifacts?.length??0,"promptql.request.timezone":_,"promptql.request.version":"v2"});const w=await i(l,u),v=new URL(n);return v.pathname=U(v.pathname,"query"),r(v,{...g,method:"POST",headers:{...o,...g?.headers,"Content-Type":"application/json"},body:JSON.stringify({...s,ddn:w,timezone:_,version:"v2",stream:c})}).then(K)};return{query:(l,u)=>O(e,"PromptQL Query",s=>f(s,l,!1,u).then(c=>c.json()).then(c=>{const g=c;return s.setAttributes({"promptql.response.assistant_actions_length":g.assistant_actions.length,"promptql.response.modified_artifacts_length":g.modified_artifacts.length}),g}),{kind:E.CLIENT}),queryStream:async(l,u,s)=>O(e,"PromptQL Query Stream",async c=>{const g=await f(c,l,!0,s),_=await dt(g,u,s?.signal);return _>0&&c.setAttribute("http.response.body.size",_),g},{kind:E.CLIENT}),executeProgram:async({ddn:l,artifacts:u,...s},c)=>O(e,"PromptQL Execute Program",async g=>{if(!s.code)throw new m([],"`code` is required");const _=await i(g,l),w=new URL(n.toString());return w.pathname=U(w.pathname,"execute_program"),g.setAttribute("promptql.request.artifacts_length",u?.length??0),r(w,{...c,headers:{...o,...c?.headers,"Content-Type":"application/json"},method:"POST",body:JSON.stringify({...s,version:"v2",ddn:_,artifacts:u??[]})}).then(lt).then(v=>(g.setAttributes({"promptql.response.accessed_artifact_ids":v.accessed_artifact_ids,"promptql.response.modified_artifacts_length":v.modified_artifacts.length}),v))},{kind:E.CLIENT})}};return A.DEFAULT_PROMPTQL_BASE_URL=B,A.PromptQLError=m,A.createPromptQLClient=Me,A.createPromptQLClientV1=gt,A.createPromptQLClientV2=qe,A.createQueryChunks=pt,A.withActiveSpan=O,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),A})({});
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var dt=Object.defineProperty;var lt=(t,e,r)=>e in t?dt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Z=(t,e,r)=>lt(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class N extends Error{constructor(r,n){super(n||r.map(o=>o.msg).join(". "));Z(this,"detail",[]);this.detail=r}}var pt=typeof globalThis=="object"?globalThis:typeof self=="object"?self:typeof window=="object"?window:typeof global=="object"?global:{},E="1.9.0",tt=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function ht(t){var e=new Set([t]),r=new Set,n=t.match(tt);if(!n)return function(){return!1};var o={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(o.prerelease!=null)return function(d){return d===t};function a(f){return r.add(f),!1}function i(f){return e.add(f),!0}return function(d){if(e.has(d))return!0;if(r.has(d))return!1;var h=d.match(tt);if(!h)return a(d);var g={major:+h[1],minor:+h[2],patch:+h[3],prerelease:h[4]};return g.prerelease!=null||o.major!==g.major?a(d):o.major===0?o.minor===g.minor&&o.patch<=g.patch?i(d):a(d):o.minor<=g.minor?i(d):a(d)}}var gt=ht(E),vt=E.split(".")[0],j=Symbol.for("opentelemetry.js.api."+vt),q=pt;function J(t,e,r,n){var o;n===void 0&&(n=!1);var a=q[j]=(o=q[j])!==null&&o!==void 0?o:{version:E};if(!n&&a[t]){var i=new Error("@opentelemetry/api: Attempted duplicate registration of API: "+t);return r.error(i.stack||i.message),!1}if(a.version!==E){var i=new Error("@opentelemetry/api: Registration of version v"+a.version+" for "+t+" does not match previously registered API v"+E);return r.error(i.stack||i.message),!1}return a[t]=e,r.debug("@opentelemetry/api: Registered a global for "+t+" v"+E+"."),!0}function k(t){var e,r,n=(e=q[j])===null||e===void 0?void 0:e.version;if(!(!n||!gt(n)))return(r=q[j])===null||r===void 0?void 0:r[t]}function H(t,e){e.debug("@opentelemetry/api: Unregistering a global for "+t+" v"+E+".");var r=q[j];r&&delete r[t]}var yt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(f){i={error:f}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},mt=function(t,e,r){if(r||arguments.length===2)for(var n=0,o=e.length,a;n<o;n++)(a||!(n in e))&&(a||(a=Array.prototype.slice.call(e,0,n)),a[n]=e[n]);return t.concat(a||Array.prototype.slice.call(e))},_t=function(){function t(e){this._namespace=e.namespace||"DiagComponentLogger"}return t.prototype.debug=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return x("debug",this._namespace,e)},t.prototype.error=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return x("error",this._namespace,e)},t.prototype.info=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return x("info",this._namespace,e)},t.prototype.warn=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return x("warn",this._namespace,e)},t.prototype.verbose=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return x("verbose",this._namespace,e)},t}();function x(t,e,r){var n=k("diag");if(n)return r.unshift(e),n[t].apply(n,mt([],yt(r),!1))}var y;(function(t){t[t.NONE=0]="NONE",t[t.ERROR=30]="ERROR",t[t.WARN=50]="WARN",t[t.INFO=60]="INFO",t[t.DEBUG=70]="DEBUG",t[t.VERBOSE=80]="VERBOSE",t[t.ALL=9999]="ALL"})(y||(y={}));function bt(t,e){t<y.NONE?t=y.NONE:t>y.ALL&&(t=y.ALL),e=e||{};function r(n,o){var a=e[n];return typeof a=="function"&&t>=o?a.bind(e):function(){}}return{error:r("error",y.ERROR),warn:r("warn",y.WARN),info:r("info",y.INFO),debug:r("debug",y.DEBUG),verbose:r("verbose",y.VERBOSE)}}var wt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(f){i={error:f}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},At=function(t,e,r){if(r||arguments.length===2)for(var n=0,o=e.length,a;n<o;n++)(a||!(n in e))&&(a||(a=Array.prototype.slice.call(e,0,n)),a[n]=e[n]);return t.concat(a||Array.prototype.slice.call(e))},Et="diag",U=function(){function t(){function e(o){return function(){for(var a=[],i=0;i<arguments.length;i++)a[i]=arguments[i];var f=k("diag");if(f)return f[o].apply(f,At([],wt(a),!1))}}var r=this,n=function(o,a){var i,f,d;if(a===void 0&&(a={logLevel:y.INFO}),o===r){var h=new Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return r.error((i=h.stack)!==null&&i!==void 0?i:h.message),!1}typeof a=="number"&&(a={logLevel:a});var g=k("diag"),D=bt((f=a.logLevel)!==null&&f!==void 0?f:y.INFO,o);if(g&&!a.suppressOverrideMessage){var s=(d=new Error().stack)!==null&&d!==void 0?d:"<failed to generate stacktrace>";g.warn("Current logger will be overwritten from "+s),D.warn("Current logger will overwrite one already registered from "+s)}return J("diag",D,r,!0)};r.setLogger=n,r.disable=function(){H(Et,r)},r.createComponentLogger=function(o){return new _t(o)},r.verbose=e("verbose"),r.debug=e("debug"),r.info=e("info"),r.warn=e("warn"),r.error=e("error")}return t.instance=function(){return this._instance||(this._instance=new t),this._instance},t}();function Nt(t){return Symbol.for(t)}var Tt=function(){function t(e){var r=this;r._currentContext=e?new Map(e):new Map,r.getValue=function(n){return r._currentContext.get(n)},r.setValue=function(n,o){var a=new t(r._currentContext);return a._currentContext.set(n,o),a},r.deleteValue=function(n){var o=new t(r._currentContext);return o._currentContext.delete(n),o}}return t}(),Rt=new Tt,Pt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(f){i={error:f}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},Ct=function(t,e,r){if(r||arguments.length===2)for(var n=0,o=e.length,a;n<o;n++)(a||!(n in e))&&(a||(a=Array.prototype.slice.call(e,0,n)),a[n]=e[n]);return t.concat(a||Array.prototype.slice.call(e))},St=function(){function t(){}return t.prototype.active=function(){return Rt},t.prototype.with=function(e,r,n){for(var o=[],a=3;a<arguments.length;a++)o[a-3]=arguments[a];return r.call.apply(r,Ct([n],Pt(o),!1))},t.prototype.bind=function(e,r){return r},t.prototype.enable=function(){return this},t.prototype.disable=function(){return this},t}(),xt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),o,a=[],i;try{for(;(e===void 0||e-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(f){i={error:f}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a},It=function(t,e,r){if(r||arguments.length===2)for(var n=0,o=e.length,a;n<o;n++)(a||!(n in e))&&(a||(a=Array.prototype.slice.call(e,0,n)),a[n]=e[n]);return t.concat(a||Array.prototype.slice.call(e))},Q="context",Ot=new St,nt=function(){function t(){}return t.getInstance=function(){return this._instance||(this._instance=new t),this._instance},t.prototype.setGlobalContextManager=function(e){return J(Q,e,U.instance())},t.prototype.active=function(){return this._getContextManager().active()},t.prototype.with=function(e,r,n){for(var o,a=[],i=3;i<arguments.length;i++)a[i-3]=arguments[i];return(o=this._getContextManager()).with.apply(o,It([e,r,n],xt(a),!1))},t.prototype.bind=function(e,r){return this._getContextManager().bind(e,r)},t.prototype._getContextManager=function(){return k(Q)||Ot},t.prototype.disable=function(){this._getContextManager().disable(),H(Q,U.instance())},t}(),W;(function(t){t[t.NONE=0]="NONE",t[t.SAMPLED=1]="SAMPLED"})(W||(W={}));var at="0000000000000000",ot="00000000000000000000000000000000",jt={traceId:ot,spanId:at,traceFlags:W.NONE},I=function(){function t(e){e===void 0&&(e=jt),this._spanContext=e}return t.prototype.spanContext=function(){return this._spanContext},t.prototype.setAttribute=function(e,r){return this},t.prototype.setAttributes=function(e){return this},t.prototype.addEvent=function(e,r){return this},t.prototype.addLink=function(e){return this},t.prototype.addLinks=function(e){return this},t.prototype.setStatus=function(e){return this},t.prototype.updateName=function(e){return this},t.prototype.end=function(e){},t.prototype.isRecording=function(){return!1},t.prototype.recordException=function(e,r){},t}(),K=Nt("OpenTelemetry Context Key SPAN");function V(t){return t.getValue(K)||void 0}function qt(){return V(nt.getInstance().active())}function Y(t,e){return t.setValue(K,e)}function kt(t){return t.deleteValue(K)}function Dt(t,e){return Y(t,new I(e))}function it(t){var e;return(e=V(t))===null||e===void 0?void 0:e.spanContext()}var Mt=/^([0-9a-f]{32})$/i,Ut=/^[0-9a-f]{16}$/i;function $t(t){return Mt.test(t)&&t!==ot}function Lt(t){return Ut.test(t)&&t!==at}function st(t){return $t(t.traceId)&&Lt(t.spanId)}function Qt(t){return new I(t)}var G=nt.getInstance(),ct=function(){function t(){}return t.prototype.startSpan=function(e,r,n){n===void 0&&(n=G.active());var o=!!(r!=null&&r.root);if(o)return new I;var a=n&&it(n);return Gt(a)&&st(a)?new I(a):new I},t.prototype.startActiveSpan=function(e,r,n,o){var a,i,f;if(!(arguments.length<2)){arguments.length===2?f=r:arguments.length===3?(a=r,f=n):(a=r,i=n,f=o);var d=i??G.active(),h=this.startSpan(e,a,d),g=Y(d,h);return G.with(g,f,void 0,h)}},t}();function Gt(t){return typeof t=="object"&&typeof t.spanId=="string"&&typeof t.traceId=="string"&&typeof t.traceFlags=="number"}var Bt=new ct,Ft=function(){function t(e,r,n,o){this._provider=e,this.name=r,this.version=n,this.options=o}return t.prototype.startSpan=function(e,r,n){return this._getTracer().startSpan(e,r,n)},t.prototype.startActiveSpan=function(e,r,n,o){var a=this._getTracer();return Reflect.apply(a.startActiveSpan,a,arguments)},t.prototype._getTracer=function(){if(this._delegate)return this._delegate;var e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):Bt},t}(),zt=function(){function t(){}return t.prototype.getTracer=function(e,r,n){return new ct},t}(),Wt=new zt,et=function(){function t(){}return t.prototype.getTracer=function(e,r,n){var o;return(o=this.getDelegateTracer(e,r,n))!==null&&o!==void 0?o:new Ft(this,e,r,n)},t.prototype.getDelegate=function(){var e;return(e=this._delegate)!==null&&e!==void 0?e:Wt},t.prototype.setDelegate=function(e){this._delegate=e},t.prototype.getDelegateTracer=function(e,r,n){var o;return(o=this._delegate)===null||o===void 0?void 0:o.getTracer(e,r,n)},t}(),O;(function(t){t[t.INTERNAL=0]="INTERNAL",t[t.SERVER=1]="SERVER",t[t.CLIENT=2]="CLIENT",t[t.PRODUCER=3]="PRODUCER",t[t.CONSUMER=4]="CONSUMER"})(O||(O={}));var X;(function(t){t[t.UNSET=0]="UNSET",t[t.OK=1]="OK",t[t.ERROR=2]="ERROR"})(X||(X={}));var B="trace",Xt=function(){function t(){this._proxyTracerProvider=new et,this.wrapSpanContext=Qt,this.isSpanContextValid=st,this.deleteSpan=kt,this.getSpan=V,this.getActiveSpan=qt,this.getSpanContext=it,this.setSpan=Y,this.setSpanContext=Dt}return t.getInstance=function(){return this._instance||(this._instance=new t),this._instance},t.prototype.setGlobalTracerProvider=function(e){var r=J(B,this._proxyTracerProvider,U.instance());return r&&this._proxyTracerProvider.setDelegate(e),r},t.prototype.getTracerProvider=function(){return k(B)||this._proxyTracerProvider},t.prototype.getTracer=function(e,r){return this.getTracerProvider().getTracer(e,r)},t.prototype.disable=function(){H(B,U.instance()),this._proxyTracerProvider=new et},t}(),Jt=Xt.getInstance();const F="data: ",ut=async t=>{var r;if(t.status<400)return t;const e=t.body?await t.text():t.statusText;if(t.status>500||!t.body)throw new N([],e);try{const n=JSON.parse(e),o=(r=n.detail)!=null&&r.length?n.detail.map(a=>a.msg).join(". "):e;throw new N(n.detail??[],o)}catch{throw new N([],e)}},Ht=t=>ut(t).then(e=>e.json());function M(t,e,r,n={}){return t.startActiveSpan(e,n,o=>{const a=i=>{(i instanceof Error||typeof i=="string")&&o.recordException(i),o.setStatus({code:X.ERROR}),o.end()};try{const i=r(o);return typeof i=="object"&&i!==null&&"then"in i&&typeof i.then=="function"?i.then(f=>(o.end(),f),f=>{throw a(f),f}):(o.end(),i)}catch(i){throw a(i),i}})}const rt=t=>t==="http:"||t==="https:",z=(...t)=>`/${t.map(r=>Kt(r,"/")).filter(r=>r).join("/")}`,Kt=(t,e)=>{const r=Vt(t,e);return Yt(r,e)},Vt=(t,e)=>{for(let r=0;r<t.length;r++)if(t[r]!==e)return t.substring(r);return""},Yt=(t,e)=>{for(let r=t.length-1;r>=0;r--)if(t[r]!==e)return t.substring(0,r+1);return""},Zt=t=>{const e=Jt.getTracer("promptql-nodejs-sdk"),r=typeof t.fetch=="function"?t.fetch:fetch,n=new URL(t.baseUrl?t.baseUrl:"https://api.promptql.pro.hasura.io");if(!rt(n.protocol))throw new Error(`invalid promptql url: ${n}`);const o={...t.headers??{},Authorization:`Bearer ${t.apiKey}`},a=t.timezone||Intl.DateTimeFormat().resolvedOptions().timeZone,i=t.aiPrimitivesLlm??{provider:"hasura"},f=async s=>{const u=typeof t.ddn=="function"?await t.ddn():t.ddn;if(!(s!=null&&s.url)&&!u.url)throw new N([],"`ddn.url` is required");const c=new URL((s==null?void 0:s.url)||u.url);if(!rt(c.protocol))throw new Error(`invalid ddn.url protocol: ${c.protocol}`);return c.pathname.endsWith("/sql")||(c.pathname=z(c.pathname,"v1/sql")),{url:c.toString(),headers:{...(u==null?void 0:u.headers)??{},...(s==null?void 0:s.headers)??{}}}},d=async(s,{llm:u,ai_primitives_llm:c,ddn:p,...l},w,_)=>{var m;if(!l.interactions.length||l.interactions.every(A=>!A.user_message.text))throw new N([],"require at least 1 interaction with non-empty user message content");u=u??t.llm,c=c??t.aiPrimitivesLlm;const v="v1",b=l.timezone||a;s.setAttributes({"promptql.request.interactions_length":l.interactions.length,"promptql.request.artifacts_length":((m=l.artifacts)==null?void 0:m.length)??0,"promptql.request.timezone":b,"promptql.request.version":v}),u!=null&&u.provider&&s.setAttribute("promptql.request.llm_provider",u.provider),c!=null&&c.provider&&s.setAttribute("promptql.request.ai_primitives_llm_provider",c.provider);const P=await f(p);s.setAttribute("promptql.request.ddn_url",P.url);const T=new URL(n);return T.pathname=z(T.pathname,"query"),r(T,{..._,method:"POST",headers:{...o,..._==null?void 0:_.headers,"Content-Type":"application/json"},body:JSON.stringify({system_instructions:t.systemInstructions,...l,llm:u,ai_primitives_llm:c,ddn:P,timezone:b,version:v,stream:w})}).then(ut)};return{query:(s,u)=>M(e,"PromptQL Query",c=>d(c,s,!1,u).then(p=>p.json()).then(p=>{const l=p;return c.setAttributes({"promptql.response.assistant_actions_length":l.assistant_actions.length,"promptql.response.modified_artifacts_length":l.modified_artifacts.length}),l}),{kind:O.CLIENT}),queryStream:async(s,u,c)=>M(e,"PromptQL Query Stream",async p=>{var T;const l=await d(p,s,!0,c);if(typeof u!="function"||!l.body)return l;const w=l.body.getReader(),_=new TextDecoder("utf-8");let v="",b=0;const P=async m=>{if(!m&&!v)return;let A=v+m;v="",A.startsWith(F)&&(A=m.substring(F.length));const R=A.split(F);for(let C=0;C<R.length;C++){const $=R[C],S=$.trim();if(S[S.length-1]!=="}"){v+=C>0?`data: ${$}`:$;return}let L;try{L=JSON.parse(S)}catch{v+=C>0?`data: ${S}`:S}L&&await u(L)}};for(;;){if((T=c==null?void 0:c.signal)!=null&&T.aborted){await l.body.cancel();break}try{const{value:m,done:A}=await w.read();if(A)break;const R=_.decode(m);if(!R)continue;b+=R.length,await P(R)}catch(m){throw await l.body.cancel(),m}}return p.setAttribute("http.response.body.size",b),v&&await P(""),l},{kind:O.CLIENT}),executeProgram:async({ai_primitives_llm:s,artifacts:u,ddn:c,...p},l)=>M(e,"PromptQL Execute Program",async w=>{if(!p.code)throw new N([],"`code` is required");w.setAttribute("promptql.request.artifacts_length",(u==null?void 0:u.length)??0),s=s??i,s!=null&&s.provider&&w.setAttribute("promptql.request.ai_primitives_llm_provider",s.provider);const _=await f(c);w.setAttribute("promptql.request.ddn_url",_.url);const v=new URL(n);return v.pathname=z(v.pathname,"execute_program"),r(v,{...l,headers:{...o,...l==null?void 0:l.headers,"Content-Type":"application/json"},method:"POST",body:JSON.stringify({...p,ai_primitives_llm:s,ddn:_,artifacts:u??[]})}).then(Ht).then(b=>(w.setAttributes({"promptql.response.accessed_artifact_ids":b.accessed_artifact_ids,"promptql.response.modified_artifacts_length":b.modified_artifacts.length}),b))},{kind:O.CLIENT})}},ft=t=>{const e=s=>`${s.artifact_type}:${s.identifier}`;let r=(t==null?void 0:t.thread_id)??null,n;const o=(t==null?void 0:t.assistant_actions)??[],a=(t==null?void 0:t.modified_artifacts.reduce((s,u)=>{const c=e(u);return Object.assign(s,{[c]:u})},{}))??{},i=Object.keys(a).sort(),f=()=>ft({thread_id:r??void 0,assistant_actions:o.map(s=>({...s})),modified_artifacts:i.map(s=>{const u=a[s];switch(u==null?void 0:u.artifact_type){case"table":{const{data:c,...p}=a[s];return Object.assign(p,{data:[...c]})}case"visualization":{const{data:c,...p}=a[s];return Object.assign(p,{data:{...c}})}default:return{...u}}})}),d=s=>{switch(s.type){case"thread_metadata_chunk":r=s.thread_id;break;case"error_chunk":n?n.error+=s.error:n=s;break;case"artifact_update_chunk":{const u=e(s.artifact),c=a[u];if(!c){a[u]=s.artifact,i.push(u),i.sort();return}switch(c.artifact_type){case"text":c.data+=s.artifact.data;break;case"table":c.data.push(...s.artifact.data);break;case"visualization":c.data.html+=s.artifact.data.html;break}break}case"assistant_action_chunk":{for(let c=o.length;c<=s.index;c++)o.push({});const u=o[s.index];for(const c of ee)u[c]=te(u[c],s[c]);break}}},h=(...s)=>{const u=f();for(const c of s)u.push(c);return u},g=()=>i.map(s=>a[s]);return{getThreadId:()=>r,getAssistantActions:()=>o,getError:()=>n,isError:()=>n!==void 0,getModifiedArtifacts:g,toQueryResponse:()=>({thread_id:r,assistant_actions:o,modified_artifacts:g()}),push:d,append:h}},te=(t,e)=>t?e?t+e:t:e,ee=["code","code_error","code_output","message","plan"];exports.PromptQLError=N;exports.createPromptQLClient=Zt;exports.createQueryChunks=ft;exports.withActiveSpan=M;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const M="https://api.promptql.pro.hasura.io";class b extends Error{detail=[];constructor(e,r){super(r||e.map(n=>n.msg).join(". ")),this.detail=e}}var ct=typeof globalThis=="object"?globalThis:typeof self=="object"?self:typeof window=="object"?window:typeof global=="object"?global:{},E="1.9.0",J=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function ut(t){var e=new Set([t]),r=new Set,n=t.match(J);if(!n)return function(){return!1};var a={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(a.prerelease!=null)return function(h){return h===t};function o(d){return r.add(d),!1}function i(d){return e.add(d),!0}return function(h){if(e.has(h))return!0;if(r.has(h))return!1;var g=h.match(J);if(!g)return o(h);var l={major:+g[1],minor:+g[2],patch:+g[3],prerelease:g[4]};return l.prerelease!=null||a.major!==l.major?o(h):a.major===0?a.minor===l.minor&&a.patch<=l.patch?i(h):o(h):a.minor<=l.minor?i(h):o(h)}}var dt=ut(E),ft=E.split(".")[0],R=Symbol.for("opentelemetry.js.api."+ft),S=ct;function Q(t,e,r,n){var a;n===void 0&&(n=!1);var o=S[R]=(a=S[R])!==null&&a!==void 0?a:{version:E};if(!n&&o[t]){var i=new Error("@opentelemetry/api: Attempted duplicate registration of API: "+t);return r.error(i.stack||i.message),!1}if(o.version!==E){var i=new Error("@opentelemetry/api: Registration of version v"+o.version+" for "+t+" does not match previously registered API v"+E);return r.error(i.stack||i.message),!1}return o[t]=e,r.debug("@opentelemetry/api: Registered a global for "+t+" v"+E+"."),!0}function N(t){var e,r,n=(e=S[R])===null||e===void 0?void 0:e.version;if(!(!n||!dt(n)))return(r=S[R])===null||r===void 0?void 0:r[t]}function $(t,e){e.debug("@opentelemetry/api: Unregistering a global for "+t+" v"+E+".");var r=S[R];r&&delete r[t]}var lt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),a,o=[],i;try{for(;(e===void 0||e-- >0)&&!(a=n.next()).done;)o.push(a.value)}catch(d){i={error:d}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return o},pt=function(t,e,r){if(r||arguments.length===2)for(var n=0,a=e.length,o;n<a;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return t.concat(o||Array.prototype.slice.call(e))},ht=(function(){function t(e){this._namespace=e.namespace||"DiagComponentLogger"}return t.prototype.debug=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return P("debug",this._namespace,e)},t.prototype.error=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return P("error",this._namespace,e)},t.prototype.info=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return P("info",this._namespace,e)},t.prototype.warn=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return P("warn",this._namespace,e)},t.prototype.verbose=function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return P("verbose",this._namespace,e)},t})();function P(t,e,r){var n=N("diag");if(n)return r.unshift(e),n[t].apply(n,pt([],lt(r),!1))}var m;(function(t){t[t.NONE=0]="NONE",t[t.ERROR=30]="ERROR",t[t.WARN=50]="WARN",t[t.INFO=60]="INFO",t[t.DEBUG=70]="DEBUG",t[t.VERBOSE=80]="VERBOSE",t[t.ALL=9999]="ALL"})(m||(m={}));function gt(t,e){t<m.NONE?t=m.NONE:t>m.ALL&&(t=m.ALL),e=e||{};function r(n,a){var o=e[n];return typeof o=="function"&&t>=a?o.bind(e):function(){}}return{error:r("error",m.ERROR),warn:r("warn",m.WARN),info:r("info",m.INFO),debug:r("debug",m.DEBUG),verbose:r("verbose",m.VERBOSE)}}var vt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),a,o=[],i;try{for(;(e===void 0||e-- >0)&&!(a=n.next()).done;)o.push(a.value)}catch(d){i={error:d}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return o},yt=function(t,e,r){if(r||arguments.length===2)for(var n=0,a=e.length,o;n<a;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return t.concat(o||Array.prototype.slice.call(e))},mt="diag",q=(function(){function t(){function e(a){return function(){for(var o=[],i=0;i<arguments.length;i++)o[i]=arguments[i];var d=N("diag");if(d)return d[a].apply(d,yt([],vt(o),!1))}}var r=this,n=function(a,o){var i,d,h;if(o===void 0&&(o={logLevel:m.INFO}),a===r){var g=new Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return r.error((i=g.stack)!==null&&i!==void 0?i:g.message),!1}typeof o=="number"&&(o={logLevel:o});var l=N("diag"),f=gt((d=o.logLevel)!==null&&d!==void 0?d:m.INFO,a);if(l&&!o.suppressOverrideMessage){var s=(h=new Error().stack)!==null&&h!==void 0?h:"<failed to generate stacktrace>";l.warn("Current logger will be overwritten from "+s),f.warn("Current logger will overwrite one already registered from "+s)}return Q("diag",f,r,!0)};r.setLogger=n,r.disable=function(){$(mt,r)},r.createComponentLogger=function(a){return new ht(a)},r.verbose=e("verbose"),r.debug=e("debug"),r.info=e("info"),r.warn=e("warn"),r.error=e("error")}return t.instance=function(){return this._instance||(this._instance=new t),this._instance},t})();function _t(t){return Symbol.for(t)}var bt=(function(){function t(e){var r=this;r._currentContext=e?new Map(e):new Map,r.getValue=function(n){return r._currentContext.get(n)},r.setValue=function(n,a){var o=new t(r._currentContext);return o._currentContext.set(n,a),o},r.deleteValue=function(n){var a=new t(r._currentContext);return a._currentContext.delete(n),a}}return t})(),wt=new bt,At=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),a,o=[],i;try{for(;(e===void 0||e-- >0)&&!(a=n.next()).done;)o.push(a.value)}catch(d){i={error:d}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return o},Et=function(t,e,r){if(r||arguments.length===2)for(var n=0,a=e.length,o;n<a;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return t.concat(o||Array.prototype.slice.call(e))},Tt=(function(){function t(){}return t.prototype.active=function(){return wt},t.prototype.with=function(e,r,n){for(var a=[],o=3;o<arguments.length;o++)a[o-3]=arguments[o];return r.call.apply(r,Et([n],At(a),!1))},t.prototype.bind=function(e,r){return r},t.prototype.enable=function(){return this},t.prototype.disable=function(){return this},t})(),Pt=function(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),a,o=[],i;try{for(;(e===void 0||e-- >0)&&!(a=n.next()).done;)o.push(a.value)}catch(d){i={error:d}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return o},Ct=function(t,e,r){if(r||arguments.length===2)for(var n=0,a=e.length,o;n<a;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return t.concat(o||Array.prototype.slice.call(e))},O="context",Rt=new Tt,H=(function(){function t(){}return t.getInstance=function(){return this._instance||(this._instance=new t),this._instance},t.prototype.setGlobalContextManager=function(e){return Q(O,e,q.instance())},t.prototype.active=function(){return this._getContextManager().active()},t.prototype.with=function(e,r,n){for(var a,o=[],i=3;i<arguments.length;i++)o[i-3]=arguments[i];return(a=this._getContextManager()).with.apply(a,Ct([e,r,n],Pt(o),!1))},t.prototype.bind=function(e,r){return this._getContextManager().bind(e,r)},t.prototype._getContextManager=function(){return N(O)||Rt},t.prototype.disable=function(){this._getContextManager().disable(),$(O,q.instance())},t})(),k;(function(t){t[t.NONE=0]="NONE",t[t.SAMPLED=1]="SAMPLED"})(k||(k={}));var K="0000000000000000",Y="00000000000000000000000000000000",St={traceId:Y,spanId:K,traceFlags:k.NONE},C=(function(){function t(e){e===void 0&&(e=St),this._spanContext=e}return t.prototype.spanContext=function(){return this._spanContext},t.prototype.setAttribute=function(e,r){return this},t.prototype.setAttributes=function(e){return this},t.prototype.addEvent=function(e,r){return this},t.prototype.addLink=function(e){return this},t.prototype.addLinks=function(e){return this},t.prototype.setStatus=function(e){return this},t.prototype.updateName=function(e){return this},t.prototype.end=function(e){},t.prototype.isRecording=function(){return!1},t.prototype.recordException=function(e,r){},t})(),V=_t("OpenTelemetry Context Key SPAN");function F(t){return t.getValue(V)||void 0}function Nt(){return F(H.getInstance().active())}function z(t,e){return t.setValue(V,e)}function xt(t){return t.deleteValue(V)}function qt(t,e){return z(t,new C(e))}function Z(t){var e;return(e=F(t))===null||e===void 0?void 0:e.spanContext()}var It=/^([0-9a-f]{32})$/i,Ot=/^[0-9a-f]{16}$/i;function Lt(t){return It.test(t)&&t!==Y}function jt(t){return Ot.test(t)&&t!==K}function tt(t){return Lt(t.traceId)&&jt(t.spanId)}function Ut(t){return new C(t)}var L=H.getInstance(),et=(function(){function t(){}return t.prototype.startSpan=function(e,r,n){n===void 0&&(n=L.active());var a=!!r?.root;if(a)return new C;var o=n&&Z(n);return kt(o)&&tt(o)?new C(o):new C},t.prototype.startActiveSpan=function(e,r,n,a){var o,i,d;if(!(arguments.length<2)){arguments.length===2?d=r:arguments.length===3?(o=r,d=n):(o=r,i=n,d=a);var h=i??L.active(),g=this.startSpan(e,o,h),l=z(h,g);return L.with(l,d,void 0,g)}},t})();function kt(t){return typeof t=="object"&&typeof t.spanId=="string"&&typeof t.traceId=="string"&&typeof t.traceFlags=="number"}var Dt=new et,Mt=(function(){function t(e,r,n,a){this._provider=e,this.name=r,this.version=n,this.options=a}return t.prototype.startSpan=function(e,r,n){return this._getTracer().startSpan(e,r,n)},t.prototype.startActiveSpan=function(e,r,n,a){var o=this._getTracer();return Reflect.apply(o.startActiveSpan,o,arguments)},t.prototype._getTracer=function(){if(this._delegate)return this._delegate;var e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):Dt},t})(),Qt=(function(){function t(){}return t.prototype.getTracer=function(e,r,n){return new et},t})(),$t=new Qt,X=(function(){function t(){}return t.prototype.getTracer=function(e,r,n){var a;return(a=this.getDelegateTracer(e,r,n))!==null&&a!==void 0?a:new Mt(this,e,r,n)},t.prototype.getDelegate=function(){var e;return(e=this._delegate)!==null&&e!==void 0?e:$t},t.prototype.setDelegate=function(e){this._delegate=e},t.prototype.getDelegateTracer=function(e,r,n){var a;return(a=this._delegate)===null||a===void 0?void 0:a.getTracer(e,r,n)},t})(),A;(function(t){t[t.INTERNAL=0]="INTERNAL",t[t.SERVER=1]="SERVER",t[t.CLIENT=2]="CLIENT",t[t.PRODUCER=3]="PRODUCER",t[t.CONSUMER=4]="CONSUMER"})(A||(A={}));var D;(function(t){t[t.UNSET=0]="UNSET",t[t.OK=1]="OK",t[t.ERROR=2]="ERROR"})(D||(D={}));var j="trace",Vt=(function(){function t(){this._proxyTracerProvider=new X,this.wrapSpanContext=Ut,this.isSpanContextValid=tt,this.deleteSpan=xt,this.getSpan=F,this.getActiveSpan=Nt,this.getSpanContext=Z,this.setSpan=z,this.setSpanContext=qt}return t.getInstance=function(){return this._instance||(this._instance=new t),this._instance},t.prototype.setGlobalTracerProvider=function(e){var r=Q(j,this._proxyTracerProvider,q.instance());return r&&this._proxyTracerProvider.setDelegate(e),r},t.prototype.getTracerProvider=function(){return N(j)||this._proxyTracerProvider},t.prototype.getTracer=function(e,r){return this.getTracerProvider().getTracer(e,r)},t.prototype.disable=function(){$(j,q.instance()),this._proxyTracerProvider=new X},t})(),rt=Vt.getInstance();const B=async t=>{if(t.status<400)return t;const e=t.body?await t.text():t.statusText;if(t.status>500||!t.body)throw new b([],e);try{const r=JSON.parse(e),n=r.detail?.length?r.detail.map(a=>a.msg).join(". "):e;throw new b(r.detail??[],n)}catch{throw new b([],e)}},nt=t=>B(t).then(e=>e.json());function T(t,e,r,n={}){return t.startActiveSpan(e,n,a=>{const o=i=>{(i instanceof Error||typeof i=="string")&&a.recordException(i),a.setStatus({code:D.ERROR}),a.end()};try{const i=r(a);return typeof i=="object"&&i!==null&&"then"in i&&typeof i.then=="function"?i.then(d=>(a.end(),d),d=>{throw o(d),d}):(a.end(),i)}catch(i){throw o(i),i}})}const G=t=>t==="http:"||t==="https:",x=(...t)=>`/${t.map(r=>Ft(r,"/")).filter(r=>r).join("/")}`,Ft=(t,e)=>{const r=zt(t,e);return Bt(r,e)},zt=(t,e)=>{for(let r=0;r<t.length;r++)if(t[r]!==e)return t.substring(r);return""},Bt=(t,e)=>{for(let r=t.length-1;r>=0;r--)if(t[r]!==e)return t.substring(0,r+1);return""},at=t=>{const e=s=>`${s.artifact_type}:${s.identifier}`;let r=t?.thread_id??null,n;const a=t?.assistant_actions??[],o=t?.modified_artifacts.reduce((s,u)=>{const c=e(u);return Object.assign(s,{[c]:u})},{})??{},i=Object.keys(o).sort(),d=()=>at({thread_id:r??void 0,assistant_actions:a.map(s=>({...s})),modified_artifacts:i.map(s=>{const u=o[s];switch(u?.artifact_type){case"table":{const{data:c,...p}=o[s];return Object.assign(p,{data:[...c]})}case"visualization":{const{data:c,...p}=o[s];return Object.assign(p,{data:{...c}})}default:return{...u}}})}),h=s=>{switch(s.type){case"thread_metadata_chunk":r=s.thread_id;break;case"error_chunk":n?n.error+=s.error:n=s;break;case"artifact_update_chunk":{const u=e(s.artifact),c=o[u];if(!c){o[u]=s.artifact,i.push(u),i.sort();return}switch(c.artifact_type){case"text":c.data+=s.artifact.data;break;case"table":c.data.push(...s.artifact.data);break;case"visualization":c.data.html+=s.artifact.data.html;break}break}case"assistant_action_chunk":{for(let c=a.length;c<=s.index;c++)a.push({});const u=a[s.index];for(const c of Jt)u[c]=Gt(u[c],s[c]);break}}},g=(...s)=>{const u=d();for(const c of s)u.push(c);return u},l=()=>i.map(s=>o[s]);return{getThreadId:()=>r,getAssistantActions:()=>a,getError:()=>n,isError:()=>n!==void 0,getModifiedArtifacts:l,toQueryResponse:()=>({thread_id:r,assistant_actions:a,modified_artifacts:l()}),push:h,append:g}},Gt=(t,e)=>t?e?t+e:t:e,Jt=["code","code_error","code_output","message","plan"],U="data: ",ot=async(t,e,r)=>{if(typeof e!="function"||!t.body)return 0;const n=t.body.getReader(),a=new TextDecoder("utf-8");let o="",i=0;const d=async h=>{if(!h&&!o)return;let g=o+h;o="",g.startsWith(U)&&(g=h.substring(U.length));const l=g.split(U);for(let f=0;f<l.length;f++){const s=l[f],u=s.trim();if(u[u.length-1]!=="}"){o+=f>0?`data: ${s}`:s;return}let c;try{c=JSON.parse(u)}catch{o+=f>0?`data: ${u}`:u}c&&await e(c)}};for(;;){if(r?.aborted){await t.body.cancel();break}try{const{value:h,done:g}=await n.read();if(g)break;const l=a.decode(h);if(!l)continue;i+=l.length,await d(l)}catch(h){throw await t.body.cancel(),h}}return o&&await d(""),i},it=t=>{const e=rt.getTracer("promptql-nodejs-sdk"),r=typeof t.fetch=="function"?t.fetch:fetch,n=new URL(t.baseUrl?t.baseUrl:M);if(!G(n.protocol))throw new Error(`invalid promptql url: ${n}`);const a={...t.headers??{},Authorization:`Bearer ${t.apiKey}`},o=t.timezone||Intl.DateTimeFormat().resolvedOptions().timeZone,i=async(l,{llm:f,ai_primitives_llm:s,ddn:u,...c},p,y)=>{if(!c.interactions.length||c.interactions.every(st=>!st.user_message.text))throw new b([],"require at least 1 interaction with non-empty user message content");f=f??t.llm,s=s??t.aiPrimitivesLlm;const _="v1",v=c.timezone||o;l.setAttributes({"promptql.request.interactions_length":c.interactions.length,"promptql.request.artifacts_length":c.artifacts?.length??0,"promptql.request.timezone":v,"promptql.request.version":_}),f?.provider&&l.setAttribute("promptql.request.llm_provider",f.provider),s?.provider&&l.setAttribute("promptql.request.ai_primitives_llm_provider",s.provider);const w=await W(u,t.ddn);l.setAttribute("promptql.request.ddn_url",w.url);const I=new URL(n);return I.pathname=x(I.pathname,"query"),r(I,{...y,method:"POST",headers:{...a,...y?.headers,"Content-Type":"application/json"},body:JSON.stringify({system_instructions:t.systemInstructions,...c,llm:f,ai_primitives_llm:s,ddn:w,timezone:v,version:_,stream:p})}).then(B)};return{query:(l,f)=>T(e,"PromptQL Query",s=>i(s,l,!1,f).then(u=>u.json()).then(u=>{const c=u;return s.setAttributes({"promptql.response.assistant_actions_length":c.assistant_actions.length,"promptql.response.modified_artifacts_length":c.modified_artifacts.length}),c}),{kind:A.CLIENT}),queryStream:async(l,f,s)=>T(e,"PromptQL Query Stream",async u=>{const c=await i(u,l,!0,s),p=await ot(c,f,s?.signal);return p>0&&u.setAttribute("http.response.body.size",p),c},{kind:A.CLIENT}),executeProgram:async({ddn:l,ai_primitives_llm:f,artifacts:s,...u},c)=>T(e,"PromptQL Execute Program",async p=>{if(!u.code)throw new b([],"`code` is required");const y=await W(l,t.ddn),_=f??t.aiPrimitivesLlm??{provider:"hasura"};p.setAttribute("promptql.request.artifacts_length",s?.length??0),p.setAttribute("promptql.request.ddn_url",y.url),f?.provider&&p.setAttribute("promptql.request.ai_primitives_llm_provider",f.provider);const v=new URL(n.toString());return v.pathname=x(v.pathname,"execute_program"),r(v,{...c,headers:{...a,...c?.headers,"Content-Type":"application/json"},method:"POST",body:JSON.stringify({...u,ddn:y,ai_primitives_llm:_,artifacts:s??[]})}).then(nt).then(w=>(p.setAttributes({"promptql.response.accessed_artifact_ids":w.accessed_artifact_ids,"promptql.response.modified_artifacts_length":w.modified_artifacts.length}),w))},{kind:A.CLIENT})}},W=async(t,e)=>{const r=typeof e=="function"?await e():e,n=t?.url||r?.url;if(!n)throw new b([],"`ddn.url` is required");const a=new URL(n);if(!G(a.protocol))throw new Error(`invalid ddn.url protocol: ${a.protocol}`);return a.pathname.endsWith("/sql")||(a.pathname=x(a.pathname,"v1/sql")),{url:a.toString(),headers:{...r?.headers??{},...t?.headers??{}}}},Xt=it,Wt=/^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/,Ht=t=>{const e=rt.getTracer("promptql-nodejs-sdk"),r=typeof t.fetch=="function"?t.fetch:fetch,n=new URL(t.baseUrl?t.baseUrl:M);if(!G(n.protocol))throw new Error(`invalid promptql url: ${n}`);const a={...t.headers??{},Authorization:`Bearer ${t.apiKey}`},o=t.timezone||Intl.DateTimeFormat().resolvedOptions().timeZone,i=async(f,s)=>{const u=t.ddn?typeof t.ddn=="function"?await t.ddn():t.ddn:{},c=s?.build_id||u?.build_id,p=s?.build_version||u?.build_version;if(c&&!Wt.test(c))throw new b([],"`ddn.build_id` must be null or a valid uuid");return c&&f.setAttribute("promptql.request.ddn_build_id",c),p&&f.setAttribute("promptql.request.ddn_build_version",p),{build_id:c,build_version:p,headers:{...u?.headers??{},...s?.headers??{}}}},d=async(f,{ddn:s,...u},c,p)=>{if(!u.interactions.length||u.interactions.every(w=>!w.user_message.text))throw new b([],"require at least 1 interaction with non-empty user message content");const y=u.timezone||o;f.setAttributes({"promptql.request.interactions_length":u.interactions.length,"promptql.request.artifacts_length":u.artifacts?.length??0,"promptql.request.timezone":y,"promptql.request.version":"v2"});const _=await i(f,s),v=new URL(n);return v.pathname=x(v.pathname,"query"),r(v,{...p,method:"POST",headers:{...a,...p?.headers,"Content-Type":"application/json"},body:JSON.stringify({...u,ddn:_,timezone:y,version:"v2",stream:c})}).then(B)};return{query:(f,s)=>T(e,"PromptQL Query",u=>d(u,f,!1,s).then(c=>c.json()).then(c=>{const p=c;return u.setAttributes({"promptql.response.assistant_actions_length":p.assistant_actions.length,"promptql.response.modified_artifacts_length":p.modified_artifacts.length}),p}),{kind:A.CLIENT}),queryStream:async(f,s,u)=>T(e,"PromptQL Query Stream",async c=>{const p=await d(c,f,!0,u),y=await ot(p,s,u?.signal);return y>0&&c.setAttribute("http.response.body.size",y),p},{kind:A.CLIENT}),executeProgram:async({ddn:f,artifacts:s,...u},c)=>T(e,"PromptQL Execute Program",async p=>{if(!u.code)throw new b([],"`code` is required");const y=await i(p,f),_=new URL(n.toString());return _.pathname=x(_.pathname,"execute_program"),p.setAttribute("promptql.request.artifacts_length",s?.length??0),r(_,{...c,headers:{...a,...c?.headers,"Content-Type":"application/json"},method:"POST",body:JSON.stringify({...u,version:"v2",ddn:y,artifacts:s??[]})}).then(nt).then(v=>(p.setAttributes({"promptql.response.accessed_artifact_ids":v.accessed_artifact_ids,"promptql.response.modified_artifacts_length":v.modified_artifacts.length}),v))},{kind:A.CLIENT})}};exports.DEFAULT_PROMPTQL_BASE_URL=M;exports.PromptQLError=b;exports.createPromptQLClient=Xt;exports.createPromptQLClientV1=it;exports.createPromptQLClientV2=Ht;exports.createQueryChunks=at;exports.withActiveSpan=T;