@nexalink/carecompass-sdk 0.1.0-beta.10 → 0.1.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -113
- package/dist/cli.js +22 -262
- package/dist/cli.js.map +1 -1
- package/dist/client.js +3 -32
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/schema.d.ts +0 -2
- package/dist/schema.js +1 -2
- package/dist/schema.js.map +1 -1
- package/dist/snippet.d.ts +1 -7
- package/dist/snippet.js +2 -15
- package/dist/snippet.js.map +1 -1
- package/package.json +9 -1
package/README.md
CHANGED
|
@@ -43,117 +43,78 @@ The CLI will direct you to the payer signup path.
|
|
|
43
43
|
|
|
44
44
|
## Install And Run
|
|
45
45
|
|
|
46
|
-
Use any common JavaScript package manager.
|
|
47
|
-
path is to run each command with `npx`.
|
|
46
|
+
Use any common JavaScript package manager.
|
|
48
47
|
|
|
49
48
|
```bash
|
|
50
49
|
npx @nexalink/carecompass-sdk login --api-key <nexalink-api-key>
|
|
51
|
-
|
|
52
|
-
npx @nexalink/carecompass-sdk validate --config carecompass/carecompass.config.json
|
|
53
|
-
npx @nexalink/carecompass-sdk doctor --config carecompass/carecompass.config.json
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
`npx` does not permanently install a `carecompass` shell command. If you use
|
|
57
|
-
`npx` for login, keep using `npx @nexalink/carecompass-sdk <command>` for init,
|
|
58
|
-
validate, snippet, and doctor.
|
|
59
|
-
|
|
60
|
-
Package-manager equivalents:
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
npm exec --package @nexalink/carecompass-sdk -- carecompass init
|
|
50
|
+
npm exec @nexalink/carecompass-sdk -- init
|
|
64
51
|
pnpm dlx @nexalink/carecompass-sdk init
|
|
65
52
|
yarn dlx @nexalink/carecompass-sdk init
|
|
66
53
|
bunx @nexalink/carecompass-sdk init
|
|
67
54
|
```
|
|
68
55
|
|
|
69
|
-
You can also install it in a project
|
|
70
|
-
manager:
|
|
56
|
+
You can also install it in a project:
|
|
71
57
|
|
|
72
58
|
```bash
|
|
73
59
|
npm install @nexalink/carecompass-sdk
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
Or install it globally if your organization permits global npm tools:
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
npm install -g @nexalink/carecompass-sdk
|
|
81
|
-
carecompass init --payer-id acme-health --origin https://members.acme-health.com
|
|
60
|
+
pnpm add @nexalink/carecompass-sdk
|
|
61
|
+
yarn add @nexalink/carecompass-sdk
|
|
62
|
+
bun add @nexalink/carecompass-sdk
|
|
82
63
|
```
|
|
83
64
|
|
|
84
65
|
## CLI Commands
|
|
85
66
|
|
|
86
|
-
### `login`
|
|
67
|
+
### `carecompass login`
|
|
87
68
|
|
|
88
69
|
Stores your secret Nexalink API key locally so the other SDK commands can validate your payer configuration.
|
|
89
70
|
|
|
90
71
|
```bash
|
|
91
|
-
|
|
72
|
+
carecompass login --api-key <nexalink-api-key>
|
|
92
73
|
```
|
|
93
74
|
|
|
94
75
|
Credentials are stored at `~/.nexalink/carecompass/credentials.json` by default. You can also set `CARECOMPASS_API_KEY` in your shell or CI environment.
|
|
95
76
|
|
|
96
|
-
### `init`
|
|
97
|
-
|
|
98
|
-
Creates a `carecompass` folder with all generated SDK files in one place:
|
|
77
|
+
### `carecompass init`
|
|
99
78
|
|
|
100
|
-
|
|
101
|
-
- `carecompass/system-prompt.md`
|
|
102
|
-
- `carecompass/carecompass-embed.html`
|
|
103
|
-
- `carecompass/carecompass-iframe.html`
|
|
104
|
-
- `carecompass/README.md`
|
|
105
|
-
|
|
106
|
-
The CLI prints the setup steps in order: review config, edit the system prompt, serve the generated embed page, place the iframe, then validate. The config file contains payer-facing configuration only. It does not contain the secret API key. The embed HTML and iframe are generated automatically during `init`; you do not need to run a separate snippet command for the first setup.
|
|
107
|
-
|
|
108
|
-
By default, generated HTML is bundler-friendly and imports the package as
|
|
109
|
-
`@nexalink/carecompass-sdk`, which works with Parcel, Vite, Next.js, and similar
|
|
110
|
-
tooling when the package is installed as a dependency. For a raw browser HTML
|
|
111
|
-
demo that is not processed by Parcel or another bundler, add
|
|
112
|
-
`--snippet-mode cdn`.
|
|
79
|
+
Creates a starter `carecompass.config.json` file. This file contains payer-facing configuration only. It does not contain the secret API key.
|
|
113
80
|
|
|
114
81
|
```bash
|
|
115
|
-
|
|
116
|
-
npx @nexalink/carecompass-sdk init --snippet-mode cdn --payer-id acme-health --origin https://members.acme-health.com
|
|
82
|
+
carecompass init --payer-id acme-health --origin https://members.acme-health.com
|
|
117
83
|
```
|
|
118
84
|
|
|
119
|
-
### `validate`
|
|
85
|
+
### `carecompass validate`
|
|
120
86
|
|
|
121
87
|
Checks that the config shape is valid and that credentials are available.
|
|
122
|
-
By default this also calls the hosted Nexalink config-validation endpoint, which
|
|
123
|
-
confirms the API base URL, API key, embed key, environment, and first allowed
|
|
124
|
-
origin are accepted by the server. Use `--local-only` for schema-only checks.
|
|
125
88
|
|
|
126
89
|
```bash
|
|
127
|
-
|
|
128
|
-
npx @nexalink/carecompass-sdk validate --local-only --config carecompass/carecompass.config.json
|
|
90
|
+
carecompass validate --config carecompass.config.json
|
|
129
91
|
```
|
|
130
92
|
|
|
131
|
-
### `snippet`
|
|
93
|
+
### `carecompass snippet`
|
|
132
94
|
|
|
133
|
-
|
|
95
|
+
Generates an HTML embed snippet that can be pasted into a payer-owned page or reviewed by non-technical stakeholders.
|
|
134
96
|
|
|
135
97
|
```bash
|
|
136
|
-
|
|
137
|
-
npx @nexalink/carecompass-sdk snippet --snippet-mode cdn --config carecompass/carecompass.config.json
|
|
98
|
+
carecompass snippet --config carecompass.config.json --output carecompass-embed.html
|
|
138
99
|
```
|
|
139
100
|
|
|
140
|
-
### `doctor`
|
|
101
|
+
### `carecompass doctor`
|
|
141
102
|
|
|
142
103
|
Prints a deployment readiness summary for the selected config.
|
|
143
104
|
|
|
144
105
|
```bash
|
|
145
|
-
|
|
106
|
+
carecompass doctor --config carecompass.config.json
|
|
146
107
|
```
|
|
147
108
|
|
|
148
109
|
## Configuration
|
|
149
110
|
|
|
150
|
-
`carecompass
|
|
111
|
+
`carecompass.config.json` is safe to commit when it only contains public embed configuration. Do not add the secret API key to this file.
|
|
151
112
|
|
|
152
113
|
```json
|
|
153
114
|
{
|
|
154
115
|
"payerId": "acme-health",
|
|
155
116
|
"environment": "staging",
|
|
156
|
-
"apiBaseUrl": "https://
|
|
117
|
+
"apiBaseUrl": "https://api.nexalink.care",
|
|
157
118
|
"embedKey": "embed_public_key_from_nexalink",
|
|
158
119
|
"allowedOrigins": ["https://members.acme-health.com"],
|
|
159
120
|
"branding": {
|
|
@@ -176,7 +137,7 @@ npx @nexalink/carecompass-sdk doctor --config carecompass/carecompass.config.jso
|
|
|
176
137
|
"errorMessage": "CareCompass is unavailable right now."
|
|
177
138
|
},
|
|
178
139
|
"prompt": {
|
|
179
|
-
"
|
|
140
|
+
"systemInstruction": "Help members navigate benefits and care options within approved Acme Health support policies.",
|
|
180
141
|
"welcomeMessage": "How can I help you navigate your care today?",
|
|
181
142
|
"allowUserContext": false
|
|
182
143
|
},
|
|
@@ -187,32 +148,11 @@ npx @nexalink/carecompass-sdk doctor --config carecompass/carecompass.config.jso
|
|
|
187
148
|
}
|
|
188
149
|
```
|
|
189
150
|
|
|
190
|
-
## System Prompt File
|
|
191
|
-
|
|
192
|
-
`carecompass/system-prompt.md` lets the payer define approved context before a member message reaches the LLM. Use it to steer CareCompass toward plan-specific terminology, support boundaries, escalation rules, and benefit-navigation context.
|
|
193
|
-
|
|
194
|
-
The prompt file is resolved by the CLI when it generates `carecompass/carecompass-embed.html`. The browser receives the resolved prompt text, not a local file path. Prompt content is still validated against Nexalink guardrails.
|
|
195
|
-
|
|
196
|
-
## Iframe Placement
|
|
197
|
-
|
|
198
|
-
`carecompass/carecompass-iframe.html` contains the iframe to place on the payer page where the CareCompass LLM should appear.
|
|
199
|
-
|
|
200
|
-
```html
|
|
201
|
-
<iframe
|
|
202
|
-
title="Acme Health CareCompass"
|
|
203
|
-
src="/carecompass/carecompass-embed.html"
|
|
204
|
-
style="width: 100%; min-height: 640px; border: 0; border-radius: 8px;"
|
|
205
|
-
loading="lazy"
|
|
206
|
-
></iframe>
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
Serve `carecompass/carecompass-embed.html` from the payer site at the iframe `src`. For many apps, that means copying the generated `carecompass` folder into the app's public/static assets folder before deployment.
|
|
210
|
-
|
|
211
151
|
## React Usage
|
|
212
152
|
|
|
213
153
|
```tsx
|
|
214
154
|
import { CareCompassEmbed } from "@nexalink/carecompass-sdk";
|
|
215
|
-
import config from "./carecompass
|
|
155
|
+
import config from "./carecompass.config.json";
|
|
216
156
|
|
|
217
157
|
export function MemberSupport() {
|
|
218
158
|
return <CareCompassEmbed config={config} />;
|
|
@@ -223,7 +163,7 @@ export function MemberSupport() {
|
|
|
223
163
|
|
|
224
164
|
```ts
|
|
225
165
|
import { mountCareCompass } from "@nexalink/carecompass-sdk";
|
|
226
|
-
import config from "./carecompass
|
|
166
|
+
import config from "./carecompass.config.json";
|
|
227
167
|
|
|
228
168
|
mountCareCompass(document.getElementById("carecompass-root"), config);
|
|
229
169
|
```
|
|
@@ -280,7 +220,6 @@ The browser does not receive:
|
|
|
280
220
|
|
|
281
221
|
- the secret SDK API key
|
|
282
222
|
- SageMaker credentials
|
|
283
|
-
- the AppSync signing role
|
|
284
223
|
- private model endpoint details
|
|
285
224
|
- Nexalink server-side allowlists
|
|
286
225
|
|
|
@@ -290,16 +229,16 @@ Chat requests are sent to Nexalink-hosted CareCompass API routes. The component
|
|
|
290
229
|
|
|
291
230
|
SDK API keys are issued in the payer portal and stored server-side as hashes. Each key is associated with a payer, environment, public embed key, and allowed origins.
|
|
292
231
|
|
|
293
|
-
CareCompass usage under a key is tracked so Nexalink can support future Stripe metered billing. The backend records prompt tokens, completion tokens, total tokens, and last-used timestamps per payer/API key.
|
|
232
|
+
CareCompass usage under a key is tracked so Nexalink can support future Stripe metered billing. The backend records estimated prompt tokens, completion tokens, total tokens, and last-used timestamps per payer/API key.
|
|
294
233
|
|
|
295
234
|
## Staging And Production
|
|
296
235
|
|
|
297
236
|
Use separate keys and config files for staging and production.
|
|
298
237
|
|
|
299
238
|
```bash
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
239
|
+
carecompass validate --config carecompass.staging.json
|
|
240
|
+
carecompass snippet --config carecompass.staging.json --output staging-embed.html
|
|
241
|
+
carecompass doctor --config carecompass.staging.json
|
|
303
242
|
```
|
|
304
243
|
|
|
305
244
|
Before production, confirm:
|
|
@@ -314,29 +253,7 @@ Before production, confirm:
|
|
|
314
253
|
|
|
315
254
|
`Missing Nexalink API key`
|
|
316
255
|
|
|
317
|
-
Run `
|
|
318
|
-
|
|
319
|
-
`zsh: command not found: carecompass`
|
|
320
|
-
|
|
321
|
-
You ran the SDK with `npx`, which does not install a permanent global command.
|
|
322
|
-
Run the next command with `npx @nexalink/carecompass-sdk <command>`, install the
|
|
323
|
-
package in your project, or install it globally.
|
|
324
|
-
|
|
325
|
-
`@parcel/core: Failed to resolve 'https://esm.sh/...'`
|
|
326
|
-
|
|
327
|
-
Regenerate the snippet with the default bundler mode instead of CDN mode:
|
|
328
|
-
`npx @nexalink/carecompass-sdk snippet --config carecompass/carecompass.config.json`.
|
|
329
|
-
Parcel does not allow `https:` imports in HTML. CDN mode is only for raw browser
|
|
330
|
-
HTML that is not bundled.
|
|
331
|
-
|
|
332
|
-
`CareCompass could not reach http://localhost:3000`
|
|
333
|
-
|
|
334
|
-
The browser cannot reach the configured API base URL. If the embed is running in
|
|
335
|
-
a hosted sandbox, `localhost` points at the sandbox/browser environment, not the
|
|
336
|
-
Nexalink server on your machine. Run the Nexalink web app locally and test from
|
|
337
|
-
a local page, or point `apiBaseUrl` at a deployed Nexalink environment that has
|
|
338
|
-
the CareCompass embed API routes deployed. Run `validate` to check this before
|
|
339
|
-
typing into the embed.
|
|
256
|
+
Run `carecompass login --api-key <key>` or set `CARECOMPASS_API_KEY`.
|
|
340
257
|
|
|
341
258
|
`Origin is not authorized`
|
|
342
259
|
|
|
@@ -350,9 +267,9 @@ Remove unsafe or unsupported instructions and re-run validation.
|
|
|
350
267
|
|
|
351
268
|
Confirm `payerId`, `embedKey`, `environment`, and allowed origins match the key issued in the payer portal.
|
|
352
269
|
|
|
353
|
-
`CareCompass
|
|
270
|
+
`CareCompass inference service is not configured`
|
|
354
271
|
|
|
355
|
-
Nexalink server operators should confirm the hosted
|
|
272
|
+
Nexalink server operators should confirm the hosted environment has `CARECOMPASS_LLM_URL` configured.
|
|
356
273
|
|
|
357
274
|
## License
|
|
358
275
|
|
package/dist/cli.js
CHANGED
|
@@ -1,36 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { existsSync,
|
|
3
|
-
import { dirname, join, resolve } from "node:path";
|
|
2
|
+
import { existsSync, readFileSync, realpathSync, writeFileSync, } from "node:fs";
|
|
4
3
|
import { fileURLToPath } from "node:url";
|
|
5
4
|
import { createDefaultCareCompassConfig, validateCareCompassConfig, } from "./schema.js";
|
|
6
5
|
import { resolveApiKey, resolveCredentialsPath, writeStoredApiKey, } from "./credentials.js";
|
|
7
|
-
import {
|
|
8
|
-
const
|
|
9
|
-
const DEFAULT_CONFIG_PATH = join(DEFAULT_OUTPUT_DIR, "carecompass.config.json");
|
|
10
|
-
const DEFAULT_SNIPPET_PATH = join(DEFAULT_OUTPUT_DIR, "carecompass-embed.html");
|
|
11
|
-
const DEFAULT_IFRAME_PATH = join(DEFAULT_OUTPUT_DIR, "carecompass-iframe.html");
|
|
12
|
-
const DEFAULT_SETUP_GUIDE_PATH = join(DEFAULT_OUTPUT_DIR, "README.md");
|
|
13
|
-
const DEFAULT_PROMPT_PATH = "system-prompt.md";
|
|
6
|
+
import { generateCareCompassSnippet } from "./snippet.js";
|
|
7
|
+
const DEFAULT_CONFIG_PATH = "carecompass.config.json";
|
|
14
8
|
const DEFAULT_SIGNUP_URL = "https://nexalink.care/signup?group=payer";
|
|
15
|
-
const DEFAULT_API_BASE_URL = "https://www.nexalink.care";
|
|
16
|
-
const DEFAULT_SNIPPET_MODE = "bundler";
|
|
17
|
-
const DEFAULT_SYSTEM_PROMPT = `You are CareCompass, a payer-approved care navigation assistant.
|
|
18
|
-
|
|
19
|
-
Help members understand benefits, coverage navigation, in-network care options,
|
|
20
|
-
support resources, and appropriate next steps. Stay out of diagnosis, treatment
|
|
21
|
-
planning, emergency triage, legal advice, and coverage guarantees. When a member
|
|
22
|
-
needs clinical, emergency, or plan-specific help that requires a human, route
|
|
23
|
-
them to the payer's approved support resources.`;
|
|
24
9
|
function parseArgs(argv) {
|
|
25
10
|
const [command = "help", ...rest] = argv;
|
|
26
11
|
const flags = {};
|
|
27
|
-
const positionals = [];
|
|
28
12
|
for (let index = 0; index < rest.length; index += 1) {
|
|
29
13
|
const token = rest[index];
|
|
30
|
-
if (!token.startsWith("--"))
|
|
31
|
-
positionals.push(token);
|
|
14
|
+
if (!token.startsWith("--"))
|
|
32
15
|
continue;
|
|
33
|
-
}
|
|
34
16
|
const key = token.slice(2);
|
|
35
17
|
const next = rest[index + 1];
|
|
36
18
|
const value = !next || next.startsWith("--") ? true : next;
|
|
@@ -47,153 +29,19 @@ function parseArgs(argv) {
|
|
|
47
29
|
}
|
|
48
30
|
flags[key] = value;
|
|
49
31
|
}
|
|
50
|
-
return { command, flags
|
|
32
|
+
return { command, flags };
|
|
51
33
|
}
|
|
52
34
|
const flagString = (flags, key) => {
|
|
53
35
|
const value = flags[key];
|
|
54
36
|
return typeof value === "string" ? value : undefined;
|
|
55
37
|
};
|
|
56
|
-
const snippetMode = (flags) => {
|
|
57
|
-
const mode = flagString(flags, "snippet-mode");
|
|
58
|
-
if (!mode)
|
|
59
|
-
return DEFAULT_SNIPPET_MODE;
|
|
60
|
-
if (mode === "bundler" || mode === "cdn")
|
|
61
|
-
return mode;
|
|
62
|
-
throw new Error("--snippet-mode must be either bundler or cdn.");
|
|
63
|
-
};
|
|
64
38
|
function requireApiKey(flags, io) {
|
|
65
39
|
const credentialsPath = resolveCredentialsPath(io.env);
|
|
66
40
|
const credentials = resolveApiKey(flagString(flags, "api-key"), io.env, credentialsPath);
|
|
67
41
|
if (!credentials.apiKey) {
|
|
68
|
-
throw new Error("Missing Nexalink API key. Run `
|
|
69
|
-
}
|
|
70
|
-
return { ...credentials, apiKey: credentials.apiKey };
|
|
71
|
-
}
|
|
72
|
-
function resolvePromptFile(config, configPath) {
|
|
73
|
-
const promptFile = config.prompt.systemInstructionFile;
|
|
74
|
-
if (!promptFile)
|
|
75
|
-
return config;
|
|
76
|
-
const resolvedPath = resolve(dirname(configPath), promptFile);
|
|
77
|
-
const systemInstruction = readFileSync(resolvedPath, "utf8").trim();
|
|
78
|
-
const validation = validateCareCompassConfig({
|
|
79
|
-
...config,
|
|
80
|
-
prompt: {
|
|
81
|
-
...config.prompt,
|
|
82
|
-
systemInstruction,
|
|
83
|
-
},
|
|
84
|
-
});
|
|
85
|
-
if (!validation.ok) {
|
|
86
|
-
throw new Error(`Invalid CareCompass prompt file:\n${validation.errors.join("\n")}`);
|
|
87
|
-
}
|
|
88
|
-
return validation.config;
|
|
89
|
-
}
|
|
90
|
-
function runtimeConfig(config) {
|
|
91
|
-
if (!config.prompt.systemInstructionFile)
|
|
92
|
-
return config;
|
|
93
|
-
const prompt = { ...config.prompt };
|
|
94
|
-
delete prompt.systemInstructionFile;
|
|
95
|
-
return {
|
|
96
|
-
...config,
|
|
97
|
-
prompt,
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
const configHeaders = (config, apiKey, origin) => ({
|
|
101
|
-
authorization: `Bearer ${apiKey}`,
|
|
102
|
-
"content-type": "application/json",
|
|
103
|
-
"x-carecompass-payer-id": config.payerId,
|
|
104
|
-
"x-carecompass-embed-key": config.embedKey,
|
|
105
|
-
"x-carecompass-environment": config.environment,
|
|
106
|
-
...(origin ? { origin } : {}),
|
|
107
|
-
});
|
|
108
|
-
const endpointUrl = (baseUrl, path) => `${baseUrl.replace(/\/+$/, "")}${path}`;
|
|
109
|
-
const setupGuide = (params) => `# CareCompass SDK Setup
|
|
110
|
-
|
|
111
|
-
This folder contains the payer-owned CareCompass embed setup. The generated iframe is the easiest way to place the CareCompass LLM experience on a payer website.
|
|
112
|
-
|
|
113
|
-
## Step 1: Confirm Credentials
|
|
114
|
-
|
|
115
|
-
You need a Nexalink payer account and SDK API key before validation or runtime use. If you do not have a key, create or request payer SDK access at https://nexalink.care/signup?group=payer.
|
|
116
|
-
|
|
117
|
-
\`\`\`bash
|
|
118
|
-
npx @nexalink/carecompass-sdk login --api-key <key>
|
|
119
|
-
\`\`\`
|
|
120
|
-
|
|
121
|
-
## Step 2: Review Config
|
|
122
|
-
|
|
123
|
-
Open \`${params.configPath}\` and confirm:
|
|
124
|
-
|
|
125
|
-
- \`payerId\`: ${params.config.payerId}
|
|
126
|
-
- \`environment\`: ${params.config.environment}
|
|
127
|
-
- \`apiBaseUrl\`: ${params.config.apiBaseUrl}
|
|
128
|
-
- \`allowedOrigins\`: ${params.config.allowedOrigins.join(", ")}
|
|
129
|
-
- \`embedKey\`: public embed key issued in the payer portal
|
|
130
|
-
|
|
131
|
-
The config file is safe to commit because it does not contain the secret API key.
|
|
132
|
-
|
|
133
|
-
## Step 3: Edit System Prompt
|
|
134
|
-
|
|
135
|
-
Open \`${params.promptPath}\` and replace the starter text with payer-approved instructions. Use it for plan context, support boundaries, escalation rules, and member-navigation tone.
|
|
136
|
-
|
|
137
|
-
Do not put secrets, raw PHI, diagnosis instructions, treatment instructions, or attempts to bypass Nexalink safety rules in this file.
|
|
138
|
-
|
|
139
|
-
## Step 4: Validate
|
|
140
|
-
|
|
141
|
-
\`\`\`bash
|
|
142
|
-
npx @nexalink/carecompass-sdk validate --config ${params.configPath}
|
|
143
|
-
\`\`\`
|
|
144
|
-
|
|
145
|
-
This checks local schema rules and verifies the config against Nexalink-hosted API routes.
|
|
146
|
-
|
|
147
|
-
## Step 5: Place The Iframe
|
|
148
|
-
|
|
149
|
-
Copy the iframe from \`${params.iframePath}\` into the payer page where the CareCompass LLM should appear.
|
|
150
|
-
|
|
151
|
-
The iframe points at:
|
|
152
|
-
|
|
153
|
-
\`\`\`text
|
|
154
|
-
${params.iframeSrc}
|
|
155
|
-
\`\`\`
|
|
156
|
-
|
|
157
|
-
Make sure \`${params.embedPath}\` is served by the payer site at that URL. For many apps, that means copying the \`${params.outputDir}\` folder into the app's public/static assets folder before deployment.
|
|
158
|
-
|
|
159
|
-
## Step 6: Test
|
|
160
|
-
|
|
161
|
-
Load the payer page from an allowed origin and send a non-PHI test message. If the embed cannot connect, run:
|
|
162
|
-
|
|
163
|
-
\`\`\`bash
|
|
164
|
-
npx @nexalink/carecompass-sdk doctor --config ${params.configPath}
|
|
165
|
-
\`\`\`
|
|
166
|
-
`;
|
|
167
|
-
async function assertHostedConfig(config, apiKey) {
|
|
168
|
-
const origin = config.allowedOrigins[0];
|
|
169
|
-
const url = endpointUrl(config.apiBaseUrl, "/api/carecompass/embed/config/validate");
|
|
170
|
-
let response;
|
|
171
|
-
try {
|
|
172
|
-
response = await globalThis.fetch(url, {
|
|
173
|
-
method: "POST",
|
|
174
|
-
headers: configHeaders(config, apiKey, origin),
|
|
175
|
-
body: JSON.stringify({ config: runtimeConfig(config) }),
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
catch (error) {
|
|
179
|
-
const message = error instanceof Error ? error.message : "Network request failed";
|
|
180
|
-
throw new Error(`Could not reach CareCompass API at ${url}. If apiBaseUrl is localhost, make sure the Nexalink Next.js app is running locally and the payer page is also local. Hosted sandboxes cannot reach your machine's localhost. ${message}`);
|
|
181
|
-
}
|
|
182
|
-
const text = await response.text();
|
|
183
|
-
let payload = {};
|
|
184
|
-
try {
|
|
185
|
-
payload = text ? JSON.parse(text) : {};
|
|
186
|
-
}
|
|
187
|
-
catch {
|
|
188
|
-
payload = {};
|
|
189
|
-
}
|
|
190
|
-
if (!response.ok || payload.ok === false) {
|
|
191
|
-
const detail = payload.error ??
|
|
192
|
-
(response.status === 404
|
|
193
|
-
? "The CareCompass embed API route was not found at this apiBaseUrl. Deploy the web app routes or point apiBaseUrl at an environment that includes them."
|
|
194
|
-
: text.slice(0, 240) || "CareCompass API validation failed.");
|
|
195
|
-
throw new Error(`Hosted CareCompass API validation failed (${response.status}) for ${url}: ${detail}`);
|
|
42
|
+
throw new Error("Missing Nexalink API key. Run `carecompass login --api-key <key>` or set CARECOMPASS_API_KEY.");
|
|
196
43
|
}
|
|
44
|
+
return credentials;
|
|
197
45
|
}
|
|
198
46
|
function readConfig(path) {
|
|
199
47
|
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
@@ -201,7 +49,7 @@ function readConfig(path) {
|
|
|
201
49
|
if (!validation.ok) {
|
|
202
50
|
throw new Error(`Invalid CareCompass config:\n${validation.errors.join("\n")}`);
|
|
203
51
|
}
|
|
204
|
-
return
|
|
52
|
+
return validation.config;
|
|
205
53
|
}
|
|
206
54
|
function buildInitConfig(flags) {
|
|
207
55
|
const origins = flags.origin;
|
|
@@ -214,7 +62,7 @@ function buildInitConfig(flags) {
|
|
|
214
62
|
payerId: flagString(flags, "payer-id") ?? "payer-demo",
|
|
215
63
|
environment: flagString(flags, "environment") ??
|
|
216
64
|
"staging",
|
|
217
|
-
apiBaseUrl: flagString(flags, "api-base-url") ??
|
|
65
|
+
apiBaseUrl: flagString(flags, "api-base-url") ?? "https://api.nexalink.care",
|
|
218
66
|
embedKey: flagString(flags, "embed-key") ?? "embed_demo_1234567890",
|
|
219
67
|
allowedOrigins,
|
|
220
68
|
branding: {
|
|
@@ -222,12 +70,6 @@ function buildInitConfig(flags) {
|
|
|
222
70
|
logoUrl: flagString(flags, "logo-url"),
|
|
223
71
|
supportUrl: flagString(flags, "support-url") ?? "https://example-payer.com/support",
|
|
224
72
|
},
|
|
225
|
-
prompt: {
|
|
226
|
-
systemInstructionFile: flagString(flags, "system-prompt-file") ?? `./${DEFAULT_PROMPT_PATH}`,
|
|
227
|
-
welcomeMessage: flagString(flags, "welcome-message") ??
|
|
228
|
-
"How can I help you navigate your care today?",
|
|
229
|
-
allowUserContext: flags["allow-user-context"] === true,
|
|
230
|
-
},
|
|
231
73
|
theme: {
|
|
232
74
|
primaryColor: flagString(flags, "primary-color") ?? "#2563eb",
|
|
233
75
|
backgroundColor: flagString(flags, "background-color") ?? "#ffffff",
|
|
@@ -241,23 +83,12 @@ function buildInitConfig(flags) {
|
|
|
241
83
|
function printHelp(io) {
|
|
242
84
|
io.stdout.write(`CareCompass SDK CLI
|
|
243
85
|
|
|
244
|
-
|
|
245
|
-
npx @nexalink/carecompass-sdk login --api-key <key>
|
|
246
|
-
npx @nexalink/carecompass-sdk init --payer-id <id> --origin <url>
|
|
247
|
-
npx @nexalink/carecompass-sdk validate --config carecompass/carecompass.config.json
|
|
248
|
-
npx @nexalink/carecompass-sdk snippet --config carecompass.config.json
|
|
249
|
-
npx @nexalink/carecompass-sdk doctor --config carecompass.config.json
|
|
250
|
-
|
|
251
|
-
If installed globally or run from a package script:
|
|
86
|
+
Commands:
|
|
252
87
|
carecompass login --api-key <key>
|
|
253
88
|
carecompass init [--payer-id <id>] [--origin <url>]
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
init [--payer-id <id>] [--origin <url>] [--output-dir carecompass]
|
|
258
|
-
validate --config carecompass.config.json [--local-only]
|
|
259
|
-
snippet --config carecompass.config.json [--output embed.html] [--snippet-mode bundler|cdn]
|
|
260
|
-
doctor --config carecompass.config.json
|
|
89
|
+
carecompass validate --config carecompass.config.json
|
|
90
|
+
carecompass snippet --config carecompass.config.json [--output embed.html]
|
|
91
|
+
carecompass doctor --config carecompass.config.json
|
|
261
92
|
`);
|
|
262
93
|
}
|
|
263
94
|
export async function runCareCompassCli(argv = process.argv.slice(2), io = {
|
|
@@ -266,13 +97,13 @@ export async function runCareCompassCli(argv = process.argv.slice(2), io = {
|
|
|
266
97
|
env: process.env,
|
|
267
98
|
}) {
|
|
268
99
|
try {
|
|
269
|
-
const { command, flags
|
|
100
|
+
const { command, flags } = parseArgs(argv);
|
|
270
101
|
if (command === "help" || command === "--help" || command === "-h") {
|
|
271
102
|
printHelp(io);
|
|
272
103
|
return 0;
|
|
273
104
|
}
|
|
274
105
|
if (command === "login") {
|
|
275
|
-
const apiKey = flagString(flags, "api-key")
|
|
106
|
+
const apiKey = flagString(flags, "api-key");
|
|
276
107
|
if (!apiKey) {
|
|
277
108
|
const signupUrl = flagString(flags, "signup-url") ?? DEFAULT_SIGNUP_URL;
|
|
278
109
|
io.stderr.write(`Missing --api-key. Create a Nexalink payer account or request SDK access at ${signupUrl}\n`);
|
|
@@ -285,88 +116,27 @@ export async function runCareCompassCli(argv = process.argv.slice(2), io = {
|
|
|
285
116
|
}
|
|
286
117
|
if (command === "init") {
|
|
287
118
|
requireApiKey(flags, io);
|
|
288
|
-
const
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
const snippetOutput = flagString(flags, "snippet-output") ??
|
|
292
|
-
join(outputDir, "carecompass-embed.html");
|
|
293
|
-
const iframeOutput = flagString(flags, "iframe-output") ??
|
|
294
|
-
join(outputDir, "carecompass-iframe.html");
|
|
295
|
-
const setupGuideOutput = flagString(flags, "setup-guide-output") ?? join(outputDir, "README.md");
|
|
296
|
-
const promptOutput = join(outputDir, DEFAULT_PROMPT_PATH);
|
|
297
|
-
const iframeSrc = flagString(flags, "iframe-src") ??
|
|
298
|
-
`/${outputDir.replace(/^\/+|\/+$/g, "")}/carecompass-embed.html`;
|
|
299
|
-
for (const path of [
|
|
300
|
-
output,
|
|
301
|
-
snippetOutput,
|
|
302
|
-
iframeOutput,
|
|
303
|
-
setupGuideOutput,
|
|
304
|
-
promptOutput,
|
|
305
|
-
]) {
|
|
306
|
-
if (existsSync(path) && flags.force !== true) {
|
|
307
|
-
throw new Error(`${path} already exists. Re-run with --force to overwrite.`);
|
|
308
|
-
}
|
|
119
|
+
const output = flagString(flags, "output") ?? DEFAULT_CONFIG_PATH;
|
|
120
|
+
if (existsSync(output) && flags.force !== true) {
|
|
121
|
+
throw new Error(`${output} already exists. Re-run with --force to overwrite.`);
|
|
309
122
|
}
|
|
310
|
-
mkdirSync(outputDir, { recursive: true });
|
|
311
123
|
const config = buildInitConfig(flags);
|
|
312
124
|
writeFileSync(output, `${JSON.stringify(config, null, 2)}\n`);
|
|
313
|
-
|
|
314
|
-
const resolvedConfig = readConfig(output);
|
|
315
|
-
writeFileSync(snippetOutput, `${generateCareCompassSnippet(runtimeConfig(resolvedConfig), {
|
|
316
|
-
mode: snippetMode(flags),
|
|
317
|
-
})}\n`);
|
|
318
|
-
writeFileSync(iframeOutput, `${generateCareCompassIframeSnippet(runtimeConfig(resolvedConfig), {
|
|
319
|
-
src: iframeSrc,
|
|
320
|
-
})}\n`);
|
|
321
|
-
writeFileSync(setupGuideOutput, setupGuide({
|
|
322
|
-
config,
|
|
323
|
-
outputDir,
|
|
324
|
-
configPath: output,
|
|
325
|
-
promptPath: promptOutput,
|
|
326
|
-
embedPath: snippetOutput,
|
|
327
|
-
iframePath: iframeOutput,
|
|
328
|
-
iframeSrc,
|
|
329
|
-
}));
|
|
330
|
-
io.stdout.write(`CareCompass setup kit created in ${outputDir}/
|
|
331
|
-
|
|
332
|
-
Step 1: Review config
|
|
333
|
-
${output}
|
|
334
|
-
|
|
335
|
-
Step 2: Edit the payer-approved system prompt
|
|
336
|
-
${promptOutput}
|
|
337
|
-
|
|
338
|
-
Step 3: Serve the generated embed page from your site
|
|
339
|
-
${snippetOutput}
|
|
340
|
-
|
|
341
|
-
Step 4: Place this iframe where the CareCompass LLM should appear
|
|
342
|
-
${iframeOutput}
|
|
343
|
-
|
|
344
|
-
Step 5: Follow the generated setup guide
|
|
345
|
-
${setupGuideOutput}
|
|
346
|
-
|
|
347
|
-
Next command:
|
|
348
|
-
npx @nexalink/carecompass-sdk validate --config ${output}
|
|
349
|
-
`);
|
|
125
|
+
io.stdout.write(`Wrote ${output}\n`);
|
|
350
126
|
return 0;
|
|
351
127
|
}
|
|
352
128
|
if (command === "validate") {
|
|
353
129
|
const credentials = requireApiKey(flags, io);
|
|
354
130
|
const config = readConfig(flagString(flags, "config") ?? DEFAULT_CONFIG_PATH);
|
|
355
|
-
if (flags["local-only"] !== true) {
|
|
356
|
-
await assertHostedConfig(config, credentials.apiKey);
|
|
357
|
-
}
|
|
358
131
|
io.stdout.write(`CareCompass config is valid for ${config.payerId}. Credentials loaded from ${credentials.source}.\n`);
|
|
359
132
|
return 0;
|
|
360
133
|
}
|
|
361
134
|
if (command === "snippet") {
|
|
362
135
|
requireApiKey(flags, io);
|
|
363
136
|
const config = readConfig(flagString(flags, "config") ?? DEFAULT_CONFIG_PATH);
|
|
364
|
-
const snippet = generateCareCompassSnippet(
|
|
365
|
-
|
|
366
|
-
});
|
|
367
|
-
const output = flagString(flags, "output") ?? DEFAULT_SNIPPET_PATH;
|
|
137
|
+
const snippet = generateCareCompassSnippet(config);
|
|
138
|
+
const output = flagString(flags, "output");
|
|
368
139
|
if (output) {
|
|
369
|
-
mkdirSync(dirname(output), { recursive: true });
|
|
370
140
|
writeFileSync(output, `${snippet}\n`);
|
|
371
141
|
io.stdout.write(`Wrote ${output}\n`);
|
|
372
142
|
}
|
|
@@ -378,14 +148,6 @@ Next command:
|
|
|
378
148
|
if (command === "doctor") {
|
|
379
149
|
const credentials = requireApiKey(flags, io);
|
|
380
150
|
const config = readConfig(flagString(flags, "config") ?? DEFAULT_CONFIG_PATH);
|
|
381
|
-
let hostedStatus = "not checked";
|
|
382
|
-
try {
|
|
383
|
-
await assertHostedConfig(config, credentials.apiKey);
|
|
384
|
-
hostedStatus = "reachable and authorized";
|
|
385
|
-
}
|
|
386
|
-
catch (error) {
|
|
387
|
-
hostedStatus = error.message;
|
|
388
|
-
}
|
|
389
151
|
io.stdout.write(`CareCompass SDK doctor
|
|
390
152
|
Package manager: npm/npx, pnpm, Yarn, and Bun compatible
|
|
391
153
|
Payer: ${config.payerId}
|
|
@@ -393,7 +155,6 @@ Environment: ${config.environment}
|
|
|
393
155
|
API base URL: ${config.apiBaseUrl}
|
|
394
156
|
Allowed origins: ${config.allowedOrigins.join(", ")}
|
|
395
157
|
Credentials: ${credentials.source}
|
|
396
|
-
Hosted API: ${hostedStatus}
|
|
397
158
|
Status: ready for staging verification
|
|
398
159
|
`);
|
|
399
160
|
return 0;
|
|
@@ -406,8 +167,7 @@ Status: ready for staging verification
|
|
|
406
167
|
}
|
|
407
168
|
}
|
|
408
169
|
const isMainModule = () => Boolean(process.argv[1]) &&
|
|
409
|
-
realpathSync(fileURLToPath(import.meta.url)) ===
|
|
410
|
-
realpathSync(process.argv[1]);
|
|
170
|
+
realpathSync(fileURLToPath(import.meta.url)) === realpathSync(process.argv[1]);
|
|
411
171
|
if (isMainModule()) {
|
|
412
172
|
void runCareCompassCli().then((code) => {
|
|
413
173
|
process.exitCode = code;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1,21 +1,4 @@
|
|
|
1
1
|
const joinUrl = (baseUrl, path) => `${baseUrl.replace(/\/+$/, "")}${path}`;
|
|
2
|
-
const isLocalhostUrl = (value) => {
|
|
3
|
-
try {
|
|
4
|
-
const url = new URL(value);
|
|
5
|
-
return url.hostname === "localhost" || url.hostname === "127.0.0.1";
|
|
6
|
-
}
|
|
7
|
-
catch {
|
|
8
|
-
return false;
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
const isBrowserHostedAwayFromLocalhost = (apiBaseUrl) => {
|
|
12
|
-
if (typeof window === "undefined")
|
|
13
|
-
return false;
|
|
14
|
-
if (!isLocalhostUrl(apiBaseUrl))
|
|
15
|
-
return false;
|
|
16
|
-
return (window.location.hostname !== "localhost" &&
|
|
17
|
-
window.location.hostname !== "127.0.0.1");
|
|
18
|
-
};
|
|
19
2
|
export function createCareCompassClient(config, options = {}) {
|
|
20
3
|
const fetcher = options.fetcher ?? fetch;
|
|
21
4
|
const headers = {
|
|
@@ -24,18 +7,6 @@ export function createCareCompassClient(config, options = {}) {
|
|
|
24
7
|
"x-carecompass-embed-key": config.embedKey,
|
|
25
8
|
"x-carecompass-environment": config.environment,
|
|
26
9
|
};
|
|
27
|
-
async function send(input, init) {
|
|
28
|
-
if (isBrowserHostedAwayFromLocalhost(config.apiBaseUrl)) {
|
|
29
|
-
throw new Error(`CareCompass apiBaseUrl is ${config.apiBaseUrl}, but this page is running at ${window.location.origin}. A hosted sandbox or payer site cannot reach your local Next.js server. Use a deployed Nexalink API base URL, or run both the payer page and Nexalink web app locally on the same machine.`);
|
|
30
|
-
}
|
|
31
|
-
try {
|
|
32
|
-
return await fetcher(input, init);
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
const message = error instanceof Error ? error.message : "Network request failed";
|
|
36
|
-
throw new Error(`CareCompass could not reach ${config.apiBaseUrl}. Confirm apiBaseUrl, CORS, allowedOrigins, and Nexalink hosted API configuration. ${message}`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
10
|
async function parseJson(response) {
|
|
40
11
|
const body = (await response.json().catch(() => ({})));
|
|
41
12
|
if (!response.ok) {
|
|
@@ -45,7 +16,7 @@ export function createCareCompassClient(config, options = {}) {
|
|
|
45
16
|
}
|
|
46
17
|
return {
|
|
47
18
|
validateConfig: async () => {
|
|
48
|
-
const response = await
|
|
19
|
+
const response = await fetcher(joinUrl(config.apiBaseUrl, "/api/carecompass/embed/config/validate"), {
|
|
49
20
|
method: "POST",
|
|
50
21
|
headers,
|
|
51
22
|
body: JSON.stringify({ config }),
|
|
@@ -53,7 +24,7 @@ export function createCareCompassClient(config, options = {}) {
|
|
|
53
24
|
return parseJson(response);
|
|
54
25
|
},
|
|
55
26
|
ask: async (request) => {
|
|
56
|
-
const response = await
|
|
27
|
+
const response = await fetcher(joinUrl(config.apiBaseUrl, "/api/carecompass/embed/ask"), {
|
|
57
28
|
method: "POST",
|
|
58
29
|
headers,
|
|
59
30
|
body: JSON.stringify({
|
|
@@ -66,7 +37,7 @@ export function createCareCompassClient(config, options = {}) {
|
|
|
66
37
|
return parseJson(response);
|
|
67
38
|
},
|
|
68
39
|
status: async (jobId) => {
|
|
69
|
-
const response = await
|
|
40
|
+
const response = await fetcher(joinUrl(config.apiBaseUrl, `/api/carecompass/embed/status/${encodeURIComponent(jobId)}`), { headers });
|
|
70
41
|
return parseJson(response);
|
|
71
42
|
},
|
|
72
43
|
};
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,IAAY,EAAE,EAAE,CAChD,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;AAE1C,MAAM,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,IAAY,EAAE,EAAE,CAChD,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;AAE1C,MAAM,UAAU,uBAAuB,CACrC,MAAyB,EACzB,UAAiC,EAAE;IAEnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IACzC,MAAM,OAAO,GAAG;QACd,cAAc,EAAE,kBAAkB;QAClC,wBAAwB,EAAE,MAAM,CAAC,OAAO;QACxC,yBAAyB,EAAE,MAAM,CAAC,QAAQ;QAC1C,2BAA2B,EAAE,MAAM,CAAC,WAAW;KAChD,CAAC;IAEF,KAAK,UAAU,SAAS,CAAI,QAAkB;QAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAEpD,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,6BAA6B,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,cAAc,EAAE,KAAK,IAAI,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,wCAAwC,CAAC,EACpE;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;aACjC,CACF,CAAC;YACF,OAAO,SAAS,CAAe,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,GAAG,EAAE,KAAK,EAAE,OAA8B,EAAE,EAAE;YAC5C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,4BAA4B,CAAC,EACxD;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,YAAY,EAAE,MAAM,CAAC,MAAM;iBAC5B,CAAC;aACH,CACF,CAAC;YACF,OAAO,SAAS,CAAyB,QAAQ,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE;YAC9B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,OAAO,CACL,MAAM,CAAC,UAAU,EACjB,iCAAiC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAC7D,EACD,EAAE,OAAO,EAAE,CACZ,CAAC;YACF,OAAO,SAAS,CAA4B,QAAQ,CAAC,CAAC;QACxD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ export { createCareCompassClient } from "./client.js";
|
|
|
2
2
|
export type { CareCompassAskRequest, CareCompassAskResponse, CareCompassStatusResponse, } from "./client.js";
|
|
3
3
|
export { CareCompassEmbed } from "./component.js";
|
|
4
4
|
export { mountCareCompass } from "./mount.js";
|
|
5
|
-
export {
|
|
5
|
+
export { generateCareCompassSnippet } from "./snippet.js";
|
|
6
6
|
export { careCompassConfigSchema, createDefaultCareCompassConfig, validateCareCompassConfig, } from "./schema.js";
|
|
7
7
|
export type { CareCompassConfig, CareCompassLabels, CareCompassPromptConfig, CareCompassTheme, CareCompassValidationResult, } from "./schema.js";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { createCareCompassClient } from "./client.js";
|
|
2
2
|
export { CareCompassEmbed } from "./component.js";
|
|
3
3
|
export { mountCareCompass } from "./mount.js";
|
|
4
|
-
export {
|
|
4
|
+
export { generateCareCompassSnippet } from "./snippet.js";
|
|
5
5
|
export { careCompassConfigSchema, createDefaultCareCompassConfig, validateCareCompassConfig, } from "./schema.js";
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAMtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAMtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
|
package/dist/schema.d.ts
CHANGED
|
@@ -16,7 +16,6 @@ export declare const careCompassLabelsSchema: z.ZodObject<{
|
|
|
16
16
|
}, z.core.$strip>;
|
|
17
17
|
export declare const careCompassPromptConfigSchema: z.ZodObject<{
|
|
18
18
|
systemInstruction: z.ZodOptional<z.ZodString>;
|
|
19
|
-
systemInstructionFile: z.ZodOptional<z.ZodString>;
|
|
20
19
|
welcomeMessage: z.ZodDefault<z.ZodString>;
|
|
21
20
|
allowUserContext: z.ZodDefault<z.ZodBoolean>;
|
|
22
21
|
}, z.core.$strip>;
|
|
@@ -64,7 +63,6 @@ export declare const careCompassConfigSchema: z.ZodObject<{
|
|
|
64
63
|
}, z.core.$strip>>;
|
|
65
64
|
prompt: z.ZodDefault<z.ZodObject<{
|
|
66
65
|
systemInstruction: z.ZodOptional<z.ZodString>;
|
|
67
|
-
systemInstructionFile: z.ZodOptional<z.ZodString>;
|
|
68
66
|
welcomeMessage: z.ZodDefault<z.ZodString>;
|
|
69
67
|
allowUserContext: z.ZodDefault<z.ZodBoolean>;
|
|
70
68
|
}, z.core.$strip>>;
|
package/dist/schema.js
CHANGED
|
@@ -51,7 +51,6 @@ export const careCompassLabelsSchema = z.object({
|
|
|
51
51
|
export const careCompassPromptConfigSchema = z
|
|
52
52
|
.object({
|
|
53
53
|
systemInstruction: z.string().min(20).max(4000).optional(),
|
|
54
|
-
systemInstructionFile: z.string().min(1).max(240).optional(),
|
|
55
54
|
welcomeMessage: z
|
|
56
55
|
.string()
|
|
57
56
|
.min(1)
|
|
@@ -121,7 +120,7 @@ export function createDefaultCareCompassConfig(overrides = {}) {
|
|
|
121
120
|
return careCompassConfigSchema.parse({
|
|
122
121
|
payerId: "payer-demo",
|
|
123
122
|
environment: "staging",
|
|
124
|
-
apiBaseUrl: "https://
|
|
123
|
+
apiBaseUrl: "https://api.nexalink.care",
|
|
125
124
|
embedKey: "embed_demo_1234567890",
|
|
126
125
|
allowedOrigins: ["https://example-payer.com"],
|
|
127
126
|
branding: {
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAC5D,MAAM,WAAW,GAAG,kCAAkC,CAAC;AACvD,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEhD,MAAM,oBAAoB,GAAG;IAC3B,sDAAsD;IACtD,wCAAwC;IACxC,yCAAyC;IACzC,0CAA0C;IAC1C,8CAA8C;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,EAAE;KACR,GAAG,CAAC,qCAAqC,CAAC;KAC1C,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;KAC3C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;IAChB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AACzE,CAAC,EAAE,mEAAmE,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,+BAA+B,CAAC;IAC7E,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,KAAK,CAAC,YAAY,EAAE,+BAA+B,CAAC;SACpD,OAAO,CAAC,SAAS,CAAC;IACrB,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,KAAK,CAAC,YAAY,EAAE,+BAA+B,CAAC;SACpD,OAAO,CAAC,SAAS,CAAC;IACrB,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,KAAK,CACJ,2BAA2B,EAC3B,0CAA0C,CAC3C;SACA,OAAO,CAAC,KAAK,CAAC;IACjB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;CACxE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACvD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC;IACzE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACrD,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,8DAA8D,CAAC;IAC1E,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,uCAAuC,CAAC;CACpD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC;KAC3C,MAAM,CAAC;IACN,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC1D,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/snippet.d.ts
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
1
|
import type { CareCompassConfig } from "./schema.js";
|
|
2
|
-
export
|
|
3
|
-
export declare function generateCareCompassIframeSnippet(config: CareCompassConfig, options?: {
|
|
4
|
-
src?: string;
|
|
5
|
-
}): string;
|
|
6
|
-
export declare function generateCareCompassSnippet(config: CareCompassConfig, options?: {
|
|
7
|
-
mode?: CareCompassSnippetMode;
|
|
8
|
-
}): string;
|
|
2
|
+
export declare function generateCareCompassSnippet(config: CareCompassConfig): string;
|
package/dist/snippet.js
CHANGED
|
@@ -1,21 +1,8 @@
|
|
|
1
|
-
export function
|
|
2
|
-
const src = options.src ?? "/carecompass/carecompass-embed.html";
|
|
3
|
-
const title = `${config.branding.displayName} CareCompass`;
|
|
4
|
-
return `<iframe
|
|
5
|
-
title="${title.replaceAll('"', """)}"
|
|
6
|
-
src="${src.replaceAll('"', """)}"
|
|
7
|
-
style="width: 100%; min-height: 640px; border: 0; border-radius: ${config.theme.borderRadius};"
|
|
8
|
-
loading="lazy"
|
|
9
|
-
></iframe>`;
|
|
10
|
-
}
|
|
11
|
-
export function generateCareCompassSnippet(config, options = {}) {
|
|
1
|
+
export function generateCareCompassSnippet(config) {
|
|
12
2
|
const targetId = "carecompass-root";
|
|
13
|
-
const moduleUrl = options.mode === "cdn"
|
|
14
|
-
? "https://esm.sh/@nexalink/carecompass-sdk"
|
|
15
|
-
: "@nexalink/carecompass-sdk";
|
|
16
3
|
return `<div id="${targetId}"></div>
|
|
17
4
|
<script type="module">
|
|
18
|
-
import { mountCareCompass } from "
|
|
5
|
+
import { mountCareCompass } from "@nexalink/carecompass-sdk";
|
|
19
6
|
|
|
20
7
|
const config = ${JSON.stringify(config, null, 2)};
|
|
21
8
|
mountCareCompass(document.getElementById("${targetId}"), config);
|
package/dist/snippet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snippet.js","sourceRoot":"","sources":["../src/snippet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"snippet.js","sourceRoot":"","sources":["../src/snippet.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CAAC,MAAyB;IAClE,MAAM,QAAQ,GAAG,kBAAkB,CAAC;IACpC,OAAO,YAAY,QAAQ;;;;mBAIV,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;8CACJ,QAAQ;UAC5C,CAAC;AACX,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nexalink/carecompass-sdk",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.3",
|
|
4
4
|
"description": "Embeddable CareCompass SDK and CLI for payer-whitelabeled deployments.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://nexalink.care",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/nexalink-care/nexalink-webapp.git",
|
|
10
|
+
"directory": "packages/carecompass-sdk"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/nexalink-care/nexalink-webapp/issues"
|
|
14
|
+
},
|
|
7
15
|
"keywords": [
|
|
8
16
|
"carecompass",
|
|
9
17
|
"nexalink",
|