@cimulate/copilot-sdk 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/.babelrc ADDED
@@ -0,0 +1,3 @@
1
+ {
2
+ "presets": ["@babel/preset-env", "@babel/preset-react"]
3
+ }
package/README.md ADDED
@@ -0,0 +1,104 @@
1
+ # Copilot Client SDK
2
+
3
+ ## Install
4
+ * To install from NPM registry
5
+ ```sh
6
+ npm install @cimulate/copilot-sdk
7
+ ```
8
+
9
+ ## Configuration Options
10
+
11
+ | Option | Type | Default Value | Description |
12
+ |--------------------|-----------|----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
13
+ | `apiKey` | `string` | **Required** | The API key used for authentication. |
14
+ | `baseUrl` | `string` | **Required** | The base URL of the Copilot API server. |
15
+ | `namespace` | `string` | `'/copilot'` | The Socket.IO namespace for the connection. |
16
+ | `socketioPath` | `string` | `'/api/v1/socket.io'` | The path for the Socket.IO server. |
17
+ | `transports` | `array` | `['polling', 'websocket']` | The transport methods used by Socket.IO. By default, <br/>it will establish connection using HTTP Long Polling <br/>and upgrade the connection to use Web Sockets. |
18
+ | `upgradeTransport` | `boolean` | `true` | Whether to upgrade transport methods dynamically. |
19
+ | `timeout` | `number` | `10000` (10 seconds) | Connection timeout in milliseconds. |
20
+
21
+ ## Connection Modes
22
+ ### Default Mode
23
+ ```javascript
24
+ const client = new CimulateCopilot({
25
+ apiKey: "your-api-key",
26
+ baseUrl: "https://your.copilot.url",
27
+ namespace: "/copilot",
28
+ socketioPath: "/api/v1/socket.io",
29
+ transports: ["polling", "websocket"],
30
+ upgradeTransport: true,
31
+ timeout: 10000
32
+ });
33
+ ```
34
+
35
+ ### HTTP Long Polling Only Mode (No Websockets)
36
+ ```javascript
37
+ const client = new CimulateCopilot({
38
+ apiKey: "your-api-key",
39
+ baseUrl: "https://your.copilot.url",
40
+ namespace: "/copilot",
41
+ socketioPath: "/api/v1/socket.io",
42
+ transports: ["polling"],
43
+ upgradeTransport: false,
44
+ timeout: 10000
45
+ });
46
+ ```
47
+
48
+
49
+ ## Example Usage
50
+
51
+ ```javascript
52
+ import { CimulateCopilot } from 'cimulate-copilot';
53
+
54
+ // Establish Connection
55
+ const client = new CimulateCopilot({
56
+ apiKey: "your-api-key",
57
+ baseUrl: "https://your.copilot.url",
58
+ namespace: "/copilot",
59
+ socketioPath: "/api/v1/socket.io",
60
+ transports: ["polling", "websocket"],
61
+ upgradeTransport: true,
62
+ timeout: 10000
63
+ });
64
+
65
+ // Handle connection acknowledgment
66
+ client.onConnectAck((data) => {
67
+ console.log("Connected:", data);
68
+ });
69
+
70
+ // Handle errors
71
+ client.onError((err) => {
72
+ console.error("Error:", err);
73
+ });
74
+
75
+ // Perform a search request and print search acknowledgment
76
+ client.search(
77
+ { userPrompt: "What specifications should I consider for a budget gaming laptop?", searchParams: {"query": "gaming laptops"} },
78
+ (response) => {
79
+ console.log("Search response:", response);
80
+ }
81
+ );
82
+
83
+ // Handler for listening to an event
84
+ const handleEvent = ({ eventReceived }) => {
85
+ console.log("Event Received:", eventReceived);
86
+ };
87
+
88
+ // Follow-up Example for listening to an event response
89
+ client.onFollowUp(handleEvent)
90
+
91
+ // Client side disconnect
92
+ client.disconnect();
93
+
94
+ // Handle disconnect event
95
+ client.onDisconnect((reason) => {
96
+ console.log("Disconnected:", reason);
97
+ });
98
+ ```
99
+
100
+ ## Notes
101
+ - The `apiKey` is required to authenticate and establish the connection.
102
+ - Ensure the `baseUrl` matches the appropriate Copilot API environment.
103
+ - Set `upgradeTransport: false` if you want to restrict transport to the defined methods.
104
+ - Adjust the `timeout` based on your network conditions.
@@ -0,0 +1,2 @@
1
+ import t from"socket.io-client";class e{constructor({apiKey:e,baseUrl:o,namespace:s="/copilot",socketioPath:i="/api/v1/socket.io",transports:c=["polling","websocket"],upgradeTransport:n=!0,timeout:a=1e4}){this.apiKey=e,this.baseUrl=o,this.timeout=a;const r=`${o}${s}`;this.socket=t(r,{path:i,withCredentials:!0,transports:c,transportOptions:{polling:{extraHeaders:{"x-cimulate-api-key":e}}},upgrade:n})}search({userPrompt:t,searchParams:e},o=null){const s={user_prompt:t,search_params:e};o?this.socket.emit("copilot_search",s,o):this.socket.emit("copilot_search",s)}facetedNavigation({searchParams:t},e=null){const o={search_params:t};e?this.socket.emit("faceted_navigation",o,e):this.socket.emit("faceted_navigation",o)}cancelRequest({eventId:t,reason:e},o=null){const s={event_id:t,reason:e};o?this.socket.emit("cancel",s,o):this.socket.emit("cancel",s)}requestSessionData(t){this.socket.emit("session_info",t)}onConnectAck(t){this.socket.on("connect_ack",t)}onSearchAck(t){this.socket.on("search_ack",t)}onRefinedSearch(t){this.socket.on("refined_search",t)}onFollowUp(t){this.socket.on("follow_up",t)}onInquiry(t){this.socket.on("inquiry",t)}onPartialInquiry(t){this.socket.on("partial_inquiry",t)}onDisplayProducts(t){this.socket.on("display_products",t)}onDone(t){this.socket.on("done",t)}onError(t){this.socket.on("error",t)}disconnect(){this.socket.disconnect()}onDisconnect(t){this.socket.on("disconnect",t)}}export{e as CimulateCopilot};
2
+ //# sourceMappingURL=bundle.cimulate.copilot-sdk.0bb38412.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.cimulate.copilot-sdk.0bb38412.esm.js","sources":["../src/copilot.js"],"sourcesContent":["import io from 'socket.io-client';\n\nclass CimulateCopilot {\n constructor({\n apiKey,\n baseUrl,\n namespace = '/copilot',\n socketioPath = '/api/v1/socket.io',\n transports = ['polling', 'websocket'],\n upgradeTransport = true,\n timeout = 10000\n }){\n this.apiKey = apiKey;\n this.baseUrl = baseUrl;\n this.timeout = timeout;\n const socketioEndpoint = `${baseUrl}${namespace}`;\n this.socket = io(socketioEndpoint, { \n path: socketioPath,\n withCredentials: true, // enables cookies\n transports: transports,\n transportOptions: {\n polling: {\n extraHeaders: {\n 'x-cimulate-api-key': apiKey,\n },\n },\n },\n upgrade: upgradeTransport\n });\n }\n\n search({ userPrompt, searchParams }, callback = null){\n const payload = {\n user_prompt: userPrompt,\n search_params: searchParams,\n }\n if (callback){\n this.socket.emit('copilot_search', payload, callback);\n return;\n }\n this.socket.emit('copilot_search', payload);\n }\n\n facetedNavigation({ searchParams }, callback = null){\n const payload = {\n search_params: searchParams,\n }\n if (callback){\n this.socket.emit('faceted_navigation', payload, callback);\n return;\n }\n this.socket.emit('faceted_navigation', payload);\n }\n\n cancelRequest({ eventId, reason }, callback = null){\n const payload = {\n event_id: eventId,\n reason,\n }\n if (callback){\n this.socket.emit('cancel', payload, callback);\n return;\n }\n this.socket.emit('cancel', payload);\n }\n\n requestSessionData(callback){\n this.socket.emit('session_info', callback);\n }\n\n onConnectAck(callback){\n this.socket.on('connect_ack', callback);\n }\n\n onSearchAck(callback){\n this.socket.on('search_ack', callback);\n }\n\n onRefinedSearch(callback){\n this.socket.on('refined_search', callback);\n }\n\n onFollowUp(callback){\n this.socket.on('follow_up', callback);\n }\n\n onInquiry(callback){\n this.socket.on('inquiry', callback);\n }\n\n onPartialInquiry(callback){\n this.socket.on('partial_inquiry', callback);\n }\n\n onDisplayProducts(callback){\n this.socket.on('display_products', callback);\n }\n\n onDone(callback){\n this.socket.on('done', callback);\n }\n\n onError(callback){\n this.socket.on('error', callback);\n }\n\n disconnect(){\n this.socket.disconnect();\n }\n\n onDisconnect(callback){\n this.socket.on('disconnect', callback);\n }\n}\n\nexport default CimulateCopilot;\n"],"names":["CimulateCopilot","constructor","apiKey","baseUrl","namespace","socketioPath","transports","upgradeTransport","timeout","this","socketioEndpoint","socket","io","path","withCredentials","transportOptions","polling","extraHeaders","upgrade","search","userPrompt","searchParams","callback","payload","user_prompt","search_params","emit","facetedNavigation","cancelRequest","eventId","reason","event_id","requestSessionData","onConnectAck","on","onSearchAck","onRefinedSearch","onFollowUp","onInquiry","onPartialInquiry","onDisplayProducts","onDone","onError","disconnect","onDisconnect"],"mappings":"gCAEA,MAAMA,EACF,WAAAC,EAAYC,OACRA,EAAMC,QACNA,EAAOC,UACPA,EAAY,WAAUC,aACtBA,EAAe,oBAAmBC,WAClCA,EAAa,CAAC,UAAW,aAAYC,iBACrCA,GAAmB,EAAIC,QACvBA,EAAU,MAEVC,KAAKP,OAASA,EACdO,KAAKN,QAAUA,EACfM,KAAKD,QAAUA,EACf,MAAME,EAAmB,GAAGP,IAAUC,IACtCK,KAAKE,OAASC,EAAGF,EAAkB,CAC/BG,KAAMR,EACNS,iBAAiB,EACjBR,WAAYA,EACZS,iBAAkB,CACdC,QAAS,CACLC,aAAc,CACV,qBAAsBf,KAIlCgB,QAASX,GAEhB,CAED,MAAAY,EAAOC,WAAEA,EAAUC,aAAEA,GAAgBC,EAAW,MAC5C,MAAMC,EAAU,CACZC,YAAaJ,EACbK,cAAeJ,GAEfC,EACAb,KAAKE,OAAOe,KAAK,iBAAkBH,EAASD,GAGhDb,KAAKE,OAAOe,KAAK,iBAAkBH,EACtC,CAED,iBAAAI,EAAkBN,aAAEA,GAAgBC,EAAW,MAC3C,MAAMC,EAAU,CACZE,cAAeJ,GAEfC,EACAb,KAAKE,OAAOe,KAAK,qBAAsBH,EAASD,GAGpDb,KAAKE,OAAOe,KAAK,qBAAsBH,EAC1C,CAED,aAAAK,EAAcC,QAAEA,EAAOC,OAAEA,GAAUR,EAAW,MAC1C,MAAMC,EAAU,CACZQ,SAAUF,EACVC,UAEAR,EACAb,KAAKE,OAAOe,KAAK,SAAUH,EAASD,GAGxCb,KAAKE,OAAOe,KAAK,SAAUH,EAC9B,CAED,kBAAAS,CAAmBV,GACfb,KAAKE,OAAOe,KAAK,eAAgBJ,EACpC,CAED,YAAAW,CAAaX,GACTb,KAAKE,OAAOuB,GAAG,cAAeZ,EACjC,CAED,WAAAa,CAAYb,GACRb,KAAKE,OAAOuB,GAAG,aAAcZ,EAChC,CAED,eAAAc,CAAgBd,GACZb,KAAKE,OAAOuB,GAAG,iBAAkBZ,EACpC,CAED,UAAAe,CAAWf,GACPb,KAAKE,OAAOuB,GAAG,YAAaZ,EAC/B,CAED,SAAAgB,CAAUhB,GACNb,KAAKE,OAAOuB,GAAG,UAAWZ,EAC7B,CAED,gBAAAiB,CAAiBjB,GACbb,KAAKE,OAAOuB,GAAG,kBAAmBZ,EACrC,CAED,iBAAAkB,CAAkBlB,GACdb,KAAKE,OAAOuB,GAAG,mBAAoBZ,EACtC,CAED,MAAAmB,CAAOnB,GACHb,KAAKE,OAAOuB,GAAG,OAAQZ,EAC1B,CAED,OAAAoB,CAAQpB,GACJb,KAAKE,OAAOuB,GAAG,QAASZ,EAC3B,CAED,UAAAqB,GACIlC,KAAKE,OAAOgC,YACf,CAED,YAAAC,CAAatB,GACTb,KAAKE,OAAOuB,GAAG,aAAcZ,EAChC"}
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("socket.io-client")):"function"==typeof define&&define.amd?define(["exports","socket.io-client"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).CimulateCopilot={},e.io)}(this,(function(e,t){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(t);e.CimulateCopilot=class{constructor({apiKey:e,baseUrl:t,namespace:o="/copilot",socketioPath:i="/api/v1/socket.io",transports:n=["polling","websocket"],upgradeTransport:c=!0,timeout:a=1e4}){this.apiKey=e,this.baseUrl=t,this.timeout=a;const r=`${t}${o}`;this.socket=s.default(r,{path:i,withCredentials:!0,transports:n,transportOptions:{polling:{extraHeaders:{"x-cimulate-api-key":e}}},upgrade:c})}search({userPrompt:e,searchParams:t},o=null){const s={user_prompt:e,search_params:t};o?this.socket.emit("copilot_search",s,o):this.socket.emit("copilot_search",s)}facetedNavigation({searchParams:e},t=null){const o={search_params:e};t?this.socket.emit("faceted_navigation",o,t):this.socket.emit("faceted_navigation",o)}cancelRequest({eventId:e,reason:t},o=null){const s={event_id:e,reason:t};o?this.socket.emit("cancel",s,o):this.socket.emit("cancel",s)}requestSessionData(e){this.socket.emit("session_info",e)}onConnectAck(e){this.socket.on("connect_ack",e)}onSearchAck(e){this.socket.on("search_ack",e)}onRefinedSearch(e){this.socket.on("refined_search",e)}onFollowUp(e){this.socket.on("follow_up",e)}onInquiry(e){this.socket.on("inquiry",e)}onPartialInquiry(e){this.socket.on("partial_inquiry",e)}onDisplayProducts(e){this.socket.on("display_products",e)}onDone(e){this.socket.on("done",e)}onError(e){this.socket.on("error",e)}disconnect(){this.socket.disconnect()}onDisconnect(e){this.socket.on("disconnect",e)}},Object.defineProperty(e,"__esModule",{value:!0})}));
2
+ //# sourceMappingURL=bundle.cimulate.copilot-sdk.a100b7fd.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.cimulate.copilot-sdk.a100b7fd.umd.js","sources":["../src/copilot.js"],"sourcesContent":["import io from 'socket.io-client';\n\nclass CimulateCopilot {\n constructor({\n apiKey,\n baseUrl,\n namespace = '/copilot',\n socketioPath = '/api/v1/socket.io',\n transports = ['polling', 'websocket'],\n upgradeTransport = true,\n timeout = 10000\n }){\n this.apiKey = apiKey;\n this.baseUrl = baseUrl;\n this.timeout = timeout;\n const socketioEndpoint = `${baseUrl}${namespace}`;\n this.socket = io(socketioEndpoint, { \n path: socketioPath,\n withCredentials: true, // enables cookies\n transports: transports,\n transportOptions: {\n polling: {\n extraHeaders: {\n 'x-cimulate-api-key': apiKey,\n },\n },\n },\n upgrade: upgradeTransport\n });\n }\n\n search({ userPrompt, searchParams }, callback = null){\n const payload = {\n user_prompt: userPrompt,\n search_params: searchParams,\n }\n if (callback){\n this.socket.emit('copilot_search', payload, callback);\n return;\n }\n this.socket.emit('copilot_search', payload);\n }\n\n facetedNavigation({ searchParams }, callback = null){\n const payload = {\n search_params: searchParams,\n }\n if (callback){\n this.socket.emit('faceted_navigation', payload, callback);\n return;\n }\n this.socket.emit('faceted_navigation', payload);\n }\n\n cancelRequest({ eventId, reason }, callback = null){\n const payload = {\n event_id: eventId,\n reason,\n }\n if (callback){\n this.socket.emit('cancel', payload, callback);\n return;\n }\n this.socket.emit('cancel', payload);\n }\n\n requestSessionData(callback){\n this.socket.emit('session_info', callback);\n }\n\n onConnectAck(callback){\n this.socket.on('connect_ack', callback);\n }\n\n onSearchAck(callback){\n this.socket.on('search_ack', callback);\n }\n\n onRefinedSearch(callback){\n this.socket.on('refined_search', callback);\n }\n\n onFollowUp(callback){\n this.socket.on('follow_up', callback);\n }\n\n onInquiry(callback){\n this.socket.on('inquiry', callback);\n }\n\n onPartialInquiry(callback){\n this.socket.on('partial_inquiry', callback);\n }\n\n onDisplayProducts(callback){\n this.socket.on('display_products', callback);\n }\n\n onDone(callback){\n this.socket.on('done', callback);\n }\n\n onError(callback){\n this.socket.on('error', callback);\n }\n\n disconnect(){\n this.socket.disconnect();\n }\n\n onDisconnect(callback){\n this.socket.on('disconnect', callback);\n }\n}\n\nexport default CimulateCopilot;\n"],"names":["constructor","apiKey","baseUrl","namespace","socketioPath","transports","upgradeTransport","timeout","this","socketioEndpoint","socket","io","path","withCredentials","transportOptions","polling","extraHeaders","upgrade","search","userPrompt","searchParams","callback","payload","user_prompt","search_params","emit","facetedNavigation","cancelRequest","eventId","reason","event_id","requestSessionData","onConnectAck","on","onSearchAck","onRefinedSearch","onFollowUp","onInquiry","onPartialInquiry","onDisplayProducts","onDone","onError","disconnect","onDisconnect"],"mappings":"kZAEA,MACI,WAAAA,EAAYC,OACRA,EAAMC,QACNA,EAAOC,UACPA,EAAY,WAAUC,aACtBA,EAAe,oBAAmBC,WAClCA,EAAa,CAAC,UAAW,aAAYC,iBACrCA,GAAmB,EAAIC,QACvBA,EAAU,MAEVC,KAAKP,OAASA,EACdO,KAAKN,QAAUA,EACfM,KAAKD,QAAUA,EACf,MAAME,EAAmB,GAAGP,IAAUC,IACtCK,KAAKE,OAASC,EAAE,QAACF,EAAkB,CAC/BG,KAAMR,EACNS,iBAAiB,EACjBR,WAAYA,EACZS,iBAAkB,CACdC,QAAS,CACLC,aAAc,CACV,qBAAsBf,KAIlCgB,QAASX,GAEhB,CAED,MAAAY,EAAOC,WAAEA,EAAUC,aAAEA,GAAgBC,EAAW,MAC5C,MAAMC,EAAU,CACZC,YAAaJ,EACbK,cAAeJ,GAEfC,EACAb,KAAKE,OAAOe,KAAK,iBAAkBH,EAASD,GAGhDb,KAAKE,OAAOe,KAAK,iBAAkBH,EACtC,CAED,iBAAAI,EAAkBN,aAAEA,GAAgBC,EAAW,MAC3C,MAAMC,EAAU,CACZE,cAAeJ,GAEfC,EACAb,KAAKE,OAAOe,KAAK,qBAAsBH,EAASD,GAGpDb,KAAKE,OAAOe,KAAK,qBAAsBH,EAC1C,CAED,aAAAK,EAAcC,QAAEA,EAAOC,OAAEA,GAAUR,EAAW,MAC1C,MAAMC,EAAU,CACZQ,SAAUF,EACVC,UAEAR,EACAb,KAAKE,OAAOe,KAAK,SAAUH,EAASD,GAGxCb,KAAKE,OAAOe,KAAK,SAAUH,EAC9B,CAED,kBAAAS,CAAmBV,GACfb,KAAKE,OAAOe,KAAK,eAAgBJ,EACpC,CAED,YAAAW,CAAaX,GACTb,KAAKE,OAAOuB,GAAG,cAAeZ,EACjC,CAED,WAAAa,CAAYb,GACRb,KAAKE,OAAOuB,GAAG,aAAcZ,EAChC,CAED,eAAAc,CAAgBd,GACZb,KAAKE,OAAOuB,GAAG,iBAAkBZ,EACpC,CAED,UAAAe,CAAWf,GACPb,KAAKE,OAAOuB,GAAG,YAAaZ,EAC/B,CAED,SAAAgB,CAAUhB,GACNb,KAAKE,OAAOuB,GAAG,UAAWZ,EAC7B,CAED,gBAAAiB,CAAiBjB,GACbb,KAAKE,OAAOuB,GAAG,kBAAmBZ,EACrC,CAED,iBAAAkB,CAAkBlB,GACdb,KAAKE,OAAOuB,GAAG,mBAAoBZ,EACtC,CAED,MAAAmB,CAAOnB,GACHb,KAAKE,OAAOuB,GAAG,OAAQZ,EAC1B,CAED,OAAAoB,CAAQpB,GACJb,KAAKE,OAAOuB,GAAG,QAASZ,EAC3B,CAED,UAAAqB,GACIlC,KAAKE,OAAOgC,YACf,CAED,YAAAC,CAAatB,GACTb,KAAKE,OAAOuB,GAAG,aAAcZ,EAChC"}
@@ -0,0 +1,2 @@
1
+ "use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("socket.io-client"));exports.CimulateCopilot=class{constructor({apiKey:t,baseUrl:o,namespace:s="/copilot",socketioPath:i="/api/v1/socket.io",transports:n=["polling","websocket"],upgradeTransport:c=!0,timeout:a=1e4}){this.apiKey=t,this.baseUrl=o,this.timeout=a;const r=`${o}${s}`;this.socket=e.default(r,{path:i,withCredentials:!0,transports:n,transportOptions:{polling:{extraHeaders:{"x-cimulate-api-key":t}}},upgrade:c})}search({userPrompt:t,searchParams:e},o=null){const s={user_prompt:t,search_params:e};o?this.socket.emit("copilot_search",s,o):this.socket.emit("copilot_search",s)}facetedNavigation({searchParams:t},e=null){const o={search_params:t};e?this.socket.emit("faceted_navigation",o,e):this.socket.emit("faceted_navigation",o)}cancelRequest({eventId:t,reason:e},o=null){const s={event_id:t,reason:e};o?this.socket.emit("cancel",s,o):this.socket.emit("cancel",s)}requestSessionData(t){this.socket.emit("session_info",t)}onConnectAck(t){this.socket.on("connect_ack",t)}onSearchAck(t){this.socket.on("search_ack",t)}onRefinedSearch(t){this.socket.on("refined_search",t)}onFollowUp(t){this.socket.on("follow_up",t)}onInquiry(t){this.socket.on("inquiry",t)}onPartialInquiry(t){this.socket.on("partial_inquiry",t)}onDisplayProducts(t){this.socket.on("display_products",t)}onDone(t){this.socket.on("done",t)}onError(t){this.socket.on("error",t)}disconnect(){this.socket.disconnect()}onDisconnect(t){this.socket.on("disconnect",t)}};
2
+ //# sourceMappingURL=bundle.cimulate.copilot-sdk.f5a7df44.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.cimulate.copilot-sdk.f5a7df44.cjs.js","sources":["../src/copilot.js"],"sourcesContent":["import io from 'socket.io-client';\n\nclass CimulateCopilot {\n constructor({\n apiKey,\n baseUrl,\n namespace = '/copilot',\n socketioPath = '/api/v1/socket.io',\n transports = ['polling', 'websocket'],\n upgradeTransport = true,\n timeout = 10000\n }){\n this.apiKey = apiKey;\n this.baseUrl = baseUrl;\n this.timeout = timeout;\n const socketioEndpoint = `${baseUrl}${namespace}`;\n this.socket = io(socketioEndpoint, { \n path: socketioPath,\n withCredentials: true, // enables cookies\n transports: transports,\n transportOptions: {\n polling: {\n extraHeaders: {\n 'x-cimulate-api-key': apiKey,\n },\n },\n },\n upgrade: upgradeTransport\n });\n }\n\n search({ userPrompt, searchParams }, callback = null){\n const payload = {\n user_prompt: userPrompt,\n search_params: searchParams,\n }\n if (callback){\n this.socket.emit('copilot_search', payload, callback);\n return;\n }\n this.socket.emit('copilot_search', payload);\n }\n\n facetedNavigation({ searchParams }, callback = null){\n const payload = {\n search_params: searchParams,\n }\n if (callback){\n this.socket.emit('faceted_navigation', payload, callback);\n return;\n }\n this.socket.emit('faceted_navigation', payload);\n }\n\n cancelRequest({ eventId, reason }, callback = null){\n const payload = {\n event_id: eventId,\n reason,\n }\n if (callback){\n this.socket.emit('cancel', payload, callback);\n return;\n }\n this.socket.emit('cancel', payload);\n }\n\n requestSessionData(callback){\n this.socket.emit('session_info', callback);\n }\n\n onConnectAck(callback){\n this.socket.on('connect_ack', callback);\n }\n\n onSearchAck(callback){\n this.socket.on('search_ack', callback);\n }\n\n onRefinedSearch(callback){\n this.socket.on('refined_search', callback);\n }\n\n onFollowUp(callback){\n this.socket.on('follow_up', callback);\n }\n\n onInquiry(callback){\n this.socket.on('inquiry', callback);\n }\n\n onPartialInquiry(callback){\n this.socket.on('partial_inquiry', callback);\n }\n\n onDisplayProducts(callback){\n this.socket.on('display_products', callback);\n }\n\n onDone(callback){\n this.socket.on('done', callback);\n }\n\n onError(callback){\n this.socket.on('error', callback);\n }\n\n disconnect(){\n this.socket.disconnect();\n }\n\n onDisconnect(callback){\n this.socket.on('disconnect', callback);\n }\n}\n\nexport default CimulateCopilot;\n"],"names":["constructor","apiKey","baseUrl","namespace","socketioPath","transports","upgradeTransport","timeout","this","socketioEndpoint","socket","io","path","withCredentials","transportOptions","polling","extraHeaders","upgrade","search","userPrompt","searchParams","callback","payload","user_prompt","search_params","emit","facetedNavigation","cancelRequest","eventId","reason","event_id","requestSessionData","onConnectAck","on","onSearchAck","onRefinedSearch","onFollowUp","onInquiry","onPartialInquiry","onDisplayProducts","onDone","onError","disconnect","onDisconnect"],"mappings":"yMAEA,MACI,WAAAA,EAAYC,OACRA,EAAMC,QACNA,EAAOC,UACPA,EAAY,WAAUC,aACtBA,EAAe,oBAAmBC,WAClCA,EAAa,CAAC,UAAW,aAAYC,iBACrCA,GAAmB,EAAIC,QACvBA,EAAU,MAEVC,KAAKP,OAASA,EACdO,KAAKN,QAAUA,EACfM,KAAKD,QAAUA,EACf,MAAME,EAAmB,GAAGP,IAAUC,IACtCK,KAAKE,OAASC,EAAE,QAACF,EAAkB,CAC/BG,KAAMR,EACNS,iBAAiB,EACjBR,WAAYA,EACZS,iBAAkB,CACdC,QAAS,CACLC,aAAc,CACV,qBAAsBf,KAIlCgB,QAASX,GAEhB,CAED,MAAAY,EAAOC,WAAEA,EAAUC,aAAEA,GAAgBC,EAAW,MAC5C,MAAMC,EAAU,CACZC,YAAaJ,EACbK,cAAeJ,GAEfC,EACAb,KAAKE,OAAOe,KAAK,iBAAkBH,EAASD,GAGhDb,KAAKE,OAAOe,KAAK,iBAAkBH,EACtC,CAED,iBAAAI,EAAkBN,aAAEA,GAAgBC,EAAW,MAC3C,MAAMC,EAAU,CACZE,cAAeJ,GAEfC,EACAb,KAAKE,OAAOe,KAAK,qBAAsBH,EAASD,GAGpDb,KAAKE,OAAOe,KAAK,qBAAsBH,EAC1C,CAED,aAAAK,EAAcC,QAAEA,EAAOC,OAAEA,GAAUR,EAAW,MAC1C,MAAMC,EAAU,CACZQ,SAAUF,EACVC,UAEAR,EACAb,KAAKE,OAAOe,KAAK,SAAUH,EAASD,GAGxCb,KAAKE,OAAOe,KAAK,SAAUH,EAC9B,CAED,kBAAAS,CAAmBV,GACfb,KAAKE,OAAOe,KAAK,eAAgBJ,EACpC,CAED,YAAAW,CAAaX,GACTb,KAAKE,OAAOuB,GAAG,cAAeZ,EACjC,CAED,WAAAa,CAAYb,GACRb,KAAKE,OAAOuB,GAAG,aAAcZ,EAChC,CAED,eAAAc,CAAgBd,GACZb,KAAKE,OAAOuB,GAAG,iBAAkBZ,EACpC,CAED,UAAAe,CAAWf,GACPb,KAAKE,OAAOuB,GAAG,YAAaZ,EAC/B,CAED,SAAAgB,CAAUhB,GACNb,KAAKE,OAAOuB,GAAG,UAAWZ,EAC7B,CAED,gBAAAiB,CAAiBjB,GACbb,KAAKE,OAAOuB,GAAG,kBAAmBZ,EACrC,CAED,iBAAAkB,CAAkBlB,GACdb,KAAKE,OAAOuB,GAAG,mBAAoBZ,EACtC,CAED,MAAAmB,CAAOnB,GACHb,KAAKE,OAAOuB,GAAG,OAAQZ,EAC1B,CAED,OAAAoB,CAAQpB,GACJb,KAAKE,OAAOuB,GAAG,QAASZ,EAC3B,CAED,UAAAqB,GACIlC,KAAKE,OAAOgC,YACf,CAED,YAAAC,CAAatB,GACTb,KAAKE,OAAOuB,GAAG,aAAcZ,EAChC"}
@@ -0,0 +1 @@
1
+ "use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("socket.io-client"));exports.CimulateCopilot=class{constructor({apiKey:t,baseUrl:o,namespace:s="/copilot",socketioPath:i="/api/v1/socket.io",transports:n=["polling","websocket"],upgradeTransport:c=!0,timeout:a=1e4}){this.apiKey=t,this.baseUrl=o,this.timeout=a;const r=`${o}${s}`;this.socket=e.default(r,{path:i,withCredentials:!0,transports:n,transportOptions:{polling:{extraHeaders:{"x-cimulate-api-key":t}}},upgrade:c})}search({userPrompt:t,searchParams:e},o=null){const s={user_prompt:t,search_params:e};o?this.socket.emit("copilot_search",s,o):this.socket.emit("copilot_search",s)}facetedNavigation({searchParams:t},e=null){const o={search_params:t};e?this.socket.emit("faceted_navigation",o,e):this.socket.emit("faceted_navigation",o)}cancelRequest({eventId:t,reason:e},o=null){const s={event_id:t,reason:e};o?this.socket.emit("cancel",s,o):this.socket.emit("cancel",s)}requestSessionData(t){this.socket.emit("session_info",t)}onConnectAck(t){this.socket.on("connect_ack",t)}onSearchAck(t){this.socket.on("search_ack",t)}onRefinedSearch(t){this.socket.on("refined_search",t)}onFollowUp(t){this.socket.on("follow_up",t)}onInquiry(t){this.socket.on("inquiry",t)}onPartialInquiry(t){this.socket.on("partial_inquiry",t)}onDisplayProducts(t){this.socket.on("display_products",t)}onDone(t){this.socket.on("done",t)}onError(t){this.socket.on("error",t)}disconnect(){this.socket.disconnect()}onDisconnect(t){this.socket.on("disconnect",t)}};
@@ -0,0 +1 @@
1
+ import t from"socket.io-client";class e{constructor({apiKey:e,baseUrl:o,namespace:s="/copilot",socketioPath:i="/api/v1/socket.io",transports:c=["polling","websocket"],upgradeTransport:n=!0,timeout:a=1e4}){this.apiKey=e,this.baseUrl=o,this.timeout=a;const r=`${o}${s}`;this.socket=t(r,{path:i,withCredentials:!0,transports:c,transportOptions:{polling:{extraHeaders:{"x-cimulate-api-key":e}}},upgrade:n})}search({userPrompt:t,searchParams:e},o=null){const s={user_prompt:t,search_params:e};o?this.socket.emit("copilot_search",s,o):this.socket.emit("copilot_search",s)}facetedNavigation({searchParams:t},e=null){const o={search_params:t};e?this.socket.emit("faceted_navigation",o,e):this.socket.emit("faceted_navigation",o)}cancelRequest({eventId:t,reason:e},o=null){const s={event_id:t,reason:e};o?this.socket.emit("cancel",s,o):this.socket.emit("cancel",s)}requestSessionData(t){this.socket.emit("session_info",t)}onConnectAck(t){this.socket.on("connect_ack",t)}onSearchAck(t){this.socket.on("search_ack",t)}onRefinedSearch(t){this.socket.on("refined_search",t)}onFollowUp(t){this.socket.on("follow_up",t)}onInquiry(t){this.socket.on("inquiry",t)}onPartialInquiry(t){this.socket.on("partial_inquiry",t)}onDisplayProducts(t){this.socket.on("display_products",t)}onDone(t){this.socket.on("done",t)}onError(t){this.socket.on("error",t)}disconnect(){this.socket.disconnect()}onDisconnect(t){this.socket.on("disconnect",t)}}export{e as CimulateCopilot};
@@ -0,0 +1 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("socket.io-client")):"function"==typeof define&&define.amd?define(["exports","socket.io-client"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).CimulateCopilot={},e.io)}(this,(function(e,t){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(t);e.CimulateCopilot=class{constructor({apiKey:e,baseUrl:t,namespace:o="/copilot",socketioPath:i="/api/v1/socket.io",transports:n=["polling","websocket"],upgradeTransport:c=!0,timeout:a=1e4}){this.apiKey=e,this.baseUrl=t,this.timeout=a;const r=`${t}${o}`;this.socket=s.default(r,{path:i,withCredentials:!0,transports:n,transportOptions:{polling:{extraHeaders:{"x-cimulate-api-key":e}}},upgrade:c})}search({userPrompt:e,searchParams:t},o=null){const s={user_prompt:e,search_params:t};o?this.socket.emit("copilot_search",s,o):this.socket.emit("copilot_search",s)}facetedNavigation({searchParams:e},t=null){const o={search_params:e};t?this.socket.emit("faceted_navigation",o,t):this.socket.emit("faceted_navigation",o)}cancelRequest({eventId:e,reason:t},o=null){const s={event_id:e,reason:t};o?this.socket.emit("cancel",s,o):this.socket.emit("cancel",s)}requestSessionData(e){this.socket.emit("session_info",e)}onConnectAck(e){this.socket.on("connect_ack",e)}onSearchAck(e){this.socket.on("search_ack",e)}onRefinedSearch(e){this.socket.on("refined_search",e)}onFollowUp(e){this.socket.on("follow_up",e)}onInquiry(e){this.socket.on("inquiry",e)}onPartialInquiry(e){this.socket.on("partial_inquiry",e)}onDisplayProducts(e){this.socket.on("display_products",e)}onDone(e){this.socket.on("done",e)}onError(e){this.socket.on("error",e)}disconnect(){this.socket.disconnect()}onDisconnect(e){this.socket.on("disconnect",e)}},Object.defineProperty(e,"__esModule",{value:!0})}));
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@cimulate/copilot-sdk",
3
+ "version": "1.0.0",
4
+ "description": "A lightweight API client SDK for Cimulate Copilot",
5
+ "main": "dist/index.cjs.js",
6
+ "module": "dist/index.esm.js",
7
+ "browser": "dist/index.umd.js",
8
+ "scripts": {
9
+ "build": "rollup -c"
10
+ },
11
+ "keywords": [],
12
+ "author": "support@cimulate.ai",
13
+ "license": "MIT",
14
+ "dependencies": {
15
+ "socket.io-client": "^4.7.5"
16
+ },
17
+ "peerDependencies": {
18
+ "react": "^18.2.0",
19
+ "react-dom": "^18.2.0"
20
+ },
21
+ "devDependencies": {
22
+ "@babel/cli": "^7.26.4",
23
+ "@babel/core": "^7.26.7",
24
+ "@babel/preset-env": "^7.26.7",
25
+ "@babel/preset-react": "^7.26.3",
26
+ "@rollup/plugin-commonjs": "^21.0.0",
27
+ "@rollup/plugin-json": "^6.1.0",
28
+ "@rollup/plugin-node-resolve": "^13.0.0",
29
+ "babel-loader": "^9.2.1",
30
+ "rollup": "^2.42.0",
31
+ "rollup-plugin-hash": "^1.3.0",
32
+ "rollup-plugin-output": "^1.0.1",
33
+ "rollup-plugin-terser": "^7.0.2",
34
+ "source-map-explorer": "^2.5.3",
35
+ "webpack": "^5.97.1",
36
+ "webpack-cli": "^6.0.1",
37
+ "webpack-node-externals": "^3.0.0"
38
+ }
39
+ }
@@ -0,0 +1,68 @@
1
+ import { defineConfig } from 'rollup';
2
+ import resolve from '@rollup/plugin-node-resolve';
3
+ import commonjs from '@rollup/plugin-commonjs';
4
+ import json from '@rollup/plugin-json';
5
+ import outputHash from 'rollup-plugin-output';
6
+ import { terser } from 'rollup-plugin-terser';
7
+ // import polyfillNode from 'rollup-plugin-polyfill-node';
8
+
9
+ export default defineConfig({
10
+ input: 'src/index.js',
11
+ output: [
12
+ {
13
+ dir: 'dist',
14
+ entryFileNames: `bundle.cimulate.copilot-sdk.[hash].esm.js`,
15
+ format: 'esm',
16
+ sourcemap: true,
17
+ },
18
+ {
19
+ dir: 'dist',
20
+ entryFileNames: `bundle.cimulate.copilot-sdk.[hash].cjs.js`,
21
+ format: 'cjs',
22
+ sourcemap: true,
23
+ },
24
+ {
25
+ dir: 'dist',
26
+ entryFileNames: `bundle.cimulate.copilot-sdk.[hash].umd.js`,
27
+ format: 'umd',
28
+ name: 'CimulateCopilot',
29
+ sourcemap: true,
30
+ globals: {
31
+ 'socket.io-client': 'io',
32
+ },
33
+ },
34
+ {
35
+ dir: 'dist',
36
+ entryFileNames: `index.esm.js`,
37
+ format: 'esm',
38
+ sourcemap: false,
39
+ },
40
+ {
41
+ dir: 'dist',
42
+ entryFileNames: `index.cjs.js`,
43
+ format: 'cjs',
44
+ sourcemap: false,
45
+ },
46
+ {
47
+ dir: 'dist',
48
+ entryFileNames: `index.umd.js`,
49
+ format: 'umd',
50
+ name: 'CimulateCopilot',
51
+ sourcemap: false,
52
+ globals: {
53
+ 'socket.io-client': 'io',
54
+ },
55
+ },
56
+ ],
57
+ plugins: [
58
+ resolve(),
59
+ commonjs(),
60
+ json(),
61
+ terser(),
62
+ outputHash({
63
+ hashLength: 8,
64
+ include: ['**/*.js'],
65
+ }),
66
+ ],
67
+ external: ['socket.io-client'],
68
+ });
package/src/copilot.js ADDED
@@ -0,0 +1,116 @@
1
+ import io from 'socket.io-client';
2
+
3
+ class CimulateCopilot {
4
+ constructor({
5
+ apiKey,
6
+ baseUrl,
7
+ namespace = '/copilot',
8
+ socketioPath = '/api/v1/socket.io',
9
+ transports = ['polling', 'websocket'],
10
+ upgradeTransport = true,
11
+ timeout = 10000
12
+ }){
13
+ this.apiKey = apiKey;
14
+ this.baseUrl = baseUrl;
15
+ this.timeout = timeout;
16
+ const socketioEndpoint = `${baseUrl}${namespace}`;
17
+ this.socket = io(socketioEndpoint, {
18
+ path: socketioPath,
19
+ withCredentials: true, // enables cookies
20
+ transports: transports,
21
+ transportOptions: {
22
+ polling: {
23
+ extraHeaders: {
24
+ 'x-cimulate-api-key': apiKey,
25
+ },
26
+ },
27
+ },
28
+ upgrade: upgradeTransport
29
+ });
30
+ }
31
+
32
+ search({ userPrompt, searchParams }, callback = null){
33
+ const payload = {
34
+ user_prompt: userPrompt,
35
+ search_params: searchParams,
36
+ }
37
+ if (callback){
38
+ this.socket.emit('copilot_search', payload, callback);
39
+ return;
40
+ }
41
+ this.socket.emit('copilot_search', payload);
42
+ }
43
+
44
+ facetedNavigation({ searchParams }, callback = null){
45
+ const payload = {
46
+ search_params: searchParams,
47
+ }
48
+ if (callback){
49
+ this.socket.emit('faceted_navigation', payload, callback);
50
+ return;
51
+ }
52
+ this.socket.emit('faceted_navigation', payload);
53
+ }
54
+
55
+ cancelRequest({ eventId, reason }, callback = null){
56
+ const payload = {
57
+ event_id: eventId,
58
+ reason,
59
+ }
60
+ if (callback){
61
+ this.socket.emit('cancel', payload, callback);
62
+ return;
63
+ }
64
+ this.socket.emit('cancel', payload);
65
+ }
66
+
67
+ requestSessionData(callback){
68
+ this.socket.emit('session_info', callback);
69
+ }
70
+
71
+ onConnectAck(callback){
72
+ this.socket.on('connect_ack', callback);
73
+ }
74
+
75
+ onSearchAck(callback){
76
+ this.socket.on('search_ack', callback);
77
+ }
78
+
79
+ onRefinedSearch(callback){
80
+ this.socket.on('refined_search', callback);
81
+ }
82
+
83
+ onFollowUp(callback){
84
+ this.socket.on('follow_up', callback);
85
+ }
86
+
87
+ onInquiry(callback){
88
+ this.socket.on('inquiry', callback);
89
+ }
90
+
91
+ onPartialInquiry(callback){
92
+ this.socket.on('partial_inquiry', callback);
93
+ }
94
+
95
+ onDisplayProducts(callback){
96
+ this.socket.on('display_products', callback);
97
+ }
98
+
99
+ onDone(callback){
100
+ this.socket.on('done', callback);
101
+ }
102
+
103
+ onError(callback){
104
+ this.socket.on('error', callback);
105
+ }
106
+
107
+ disconnect(){
108
+ this.socket.disconnect();
109
+ }
110
+
111
+ onDisconnect(callback){
112
+ this.socket.on('disconnect', callback);
113
+ }
114
+ }
115
+
116
+ export default CimulateCopilot;
package/src/index.js ADDED
@@ -0,0 +1,2 @@
1
+ import CimulateCopilot from './copilot.js';
2
+ export { CimulateCopilot };