@nexalink/carecompass-sdk 0.1.0-beta.6 → 0.1.0-beta.8
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 +35 -4
- package/dist/cli.js +167 -15
- package/dist/cli.js.map +1 -1
- package/dist/client.js +21 -1
- 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.js +1 -1
- package/dist/snippet.d.ts +3 -0
- package/dist/snippet.js +10 -0
- package/dist/snippet.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -100,8 +100,10 @@ Creates a `carecompass` folder with all generated SDK files in one place:
|
|
|
100
100
|
- `carecompass/carecompass.config.json`
|
|
101
101
|
- `carecompass/system-prompt.md`
|
|
102
102
|
- `carecompass/carecompass-embed.html`
|
|
103
|
+
- `carecompass/carecompass-iframe.html`
|
|
104
|
+
- `carecompass/README.md`
|
|
103
105
|
|
|
104
|
-
The config file contains payer-facing configuration only. It does not contain the secret API key. The embed HTML
|
|
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.
|
|
105
107
|
|
|
106
108
|
By default, generated HTML is bundler-friendly and imports the package as
|
|
107
109
|
`@nexalink/carecompass-sdk`, which works with Parcel, Vite, Next.js, and similar
|
|
@@ -117,9 +119,13 @@ npx @nexalink/carecompass-sdk init --snippet-mode cdn --payer-id acme-health --o
|
|
|
117
119
|
### `validate`
|
|
118
120
|
|
|
119
121
|
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.
|
|
120
125
|
|
|
121
126
|
```bash
|
|
122
127
|
npx @nexalink/carecompass-sdk validate --config carecompass/carecompass.config.json
|
|
128
|
+
npx @nexalink/carecompass-sdk validate --local-only --config carecompass/carecompass.config.json
|
|
123
129
|
```
|
|
124
130
|
|
|
125
131
|
### `snippet`
|
|
@@ -187,6 +193,21 @@ npx @nexalink/carecompass-sdk doctor --config carecompass/carecompass.config.jso
|
|
|
187
193
|
|
|
188
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.
|
|
189
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
|
+
|
|
190
211
|
## React Usage
|
|
191
212
|
|
|
192
213
|
```tsx
|
|
@@ -259,6 +280,7 @@ The browser does not receive:
|
|
|
259
280
|
|
|
260
281
|
- the secret SDK API key
|
|
261
282
|
- SageMaker credentials
|
|
283
|
+
- the AppSync signing role
|
|
262
284
|
- private model endpoint details
|
|
263
285
|
- Nexalink server-side allowlists
|
|
264
286
|
|
|
@@ -268,7 +290,7 @@ Chat requests are sent to Nexalink-hosted CareCompass API routes. The component
|
|
|
268
290
|
|
|
269
291
|
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.
|
|
270
292
|
|
|
271
|
-
CareCompass usage under a key is tracked so Nexalink can support future Stripe metered billing. The backend records
|
|
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. Hosted routes use MedGemma token counts when they are available and fall back to estimates only when needed.
|
|
272
294
|
|
|
273
295
|
## Staging And Production
|
|
274
296
|
|
|
@@ -307,6 +329,15 @@ Regenerate the snippet with the default bundler mode instead of CDN mode:
|
|
|
307
329
|
Parcel does not allow `https:` imports in HTML. CDN mode is only for raw browser
|
|
308
330
|
HTML that is not bundled.
|
|
309
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.
|
|
340
|
+
|
|
310
341
|
`Origin is not authorized`
|
|
311
342
|
|
|
312
343
|
Add the exact website origin to the payer portal SDK configuration.
|
|
@@ -319,9 +350,9 @@ Remove unsafe or unsupported instructions and re-run validation.
|
|
|
319
350
|
|
|
320
351
|
Confirm `payerId`, `embedKey`, `environment`, and allowed origins match the key issued in the payer portal.
|
|
321
352
|
|
|
322
|
-
`CareCompass inference service is not configured`
|
|
353
|
+
`CareCompass AppSync inference service is not configured`
|
|
323
354
|
|
|
324
|
-
Nexalink server operators should confirm the hosted environment has `
|
|
355
|
+
Nexalink server operators should confirm the hosted web environment has `NEXT_PUBLIC_API_URL` or `CARECOMPASS_APPSYNC_URL` configured. The SDK browser embed does not require a payer-provided LLM URL.
|
|
325
356
|
|
|
326
357
|
## License
|
|
327
358
|
|
package/dist/cli.js
CHANGED
|
@@ -4,10 +4,12 @@ import { dirname, join, resolve } from "node:path";
|
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import { createDefaultCareCompassConfig, validateCareCompassConfig, } from "./schema.js";
|
|
6
6
|
import { resolveApiKey, resolveCredentialsPath, writeStoredApiKey, } from "./credentials.js";
|
|
7
|
-
import { generateCareCompassSnippet, } from "./snippet.js";
|
|
7
|
+
import { generateCareCompassIframeSnippet, generateCareCompassSnippet, } from "./snippet.js";
|
|
8
8
|
const DEFAULT_OUTPUT_DIR = "carecompass";
|
|
9
9
|
const DEFAULT_CONFIG_PATH = join(DEFAULT_OUTPUT_DIR, "carecompass.config.json");
|
|
10
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");
|
|
11
13
|
const DEFAULT_PROMPT_PATH = "system-prompt.md";
|
|
12
14
|
const DEFAULT_SIGNUP_URL = "https://nexalink.care/signup?group=payer";
|
|
13
15
|
const DEFAULT_API_BASE_URL = "https://www.nexalink.care";
|
|
@@ -65,7 +67,7 @@ function requireApiKey(flags, io) {
|
|
|
65
67
|
if (!credentials.apiKey) {
|
|
66
68
|
throw new Error("Missing Nexalink API key. Run `npx @nexalink/carecompass-sdk login --api-key <key>` or set CARECOMPASS_API_KEY.");
|
|
67
69
|
}
|
|
68
|
-
return credentials;
|
|
70
|
+
return { ...credentials, apiKey: credentials.apiKey };
|
|
69
71
|
}
|
|
70
72
|
function resolvePromptFile(config, configPath) {
|
|
71
73
|
const promptFile = config.prompt.systemInstructionFile;
|
|
@@ -95,6 +97,104 @@ function runtimeConfig(config) {
|
|
|
95
97
|
prompt,
|
|
96
98
|
};
|
|
97
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}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
98
198
|
function readConfig(path) {
|
|
99
199
|
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
100
200
|
const validation = validateCareCompassConfig(parsed);
|
|
@@ -144,7 +244,7 @@ function printHelp(io) {
|
|
|
144
244
|
Run one-off commands with npx:
|
|
145
245
|
npx @nexalink/carecompass-sdk login --api-key <key>
|
|
146
246
|
npx @nexalink/carecompass-sdk init --payer-id <id> --origin <url>
|
|
147
|
-
npx @nexalink/carecompass-sdk validate --config carecompass.config.json
|
|
247
|
+
npx @nexalink/carecompass-sdk validate --config carecompass/carecompass.config.json
|
|
148
248
|
npx @nexalink/carecompass-sdk snippet --config carecompass.config.json
|
|
149
249
|
npx @nexalink/carecompass-sdk doctor --config carecompass.config.json
|
|
150
250
|
|
|
@@ -155,7 +255,7 @@ If installed globally or run from a package script:
|
|
|
155
255
|
Commands:
|
|
156
256
|
login --api-key <key>
|
|
157
257
|
init [--payer-id <id>] [--origin <url>] [--output-dir carecompass]
|
|
158
|
-
validate --config carecompass.config.json
|
|
258
|
+
validate --config carecompass.config.json [--local-only]
|
|
159
259
|
snippet --config carecompass.config.json [--output embed.html] [--snippet-mode bundler|cdn]
|
|
160
260
|
doctor --config carecompass.config.json
|
|
161
261
|
`);
|
|
@@ -186,18 +286,26 @@ export async function runCareCompassCli(argv = process.argv.slice(2), io = {
|
|
|
186
286
|
if (command === "init") {
|
|
187
287
|
requireApiKey(flags, io);
|
|
188
288
|
const outputDir = flagString(flags, "output-dir") ?? DEFAULT_OUTPUT_DIR;
|
|
189
|
-
const output = flagString(flags, "output") ??
|
|
289
|
+
const output = flagString(flags, "output") ??
|
|
290
|
+
join(outputDir, "carecompass.config.json");
|
|
190
291
|
const snippetOutput = flagString(flags, "snippet-output") ??
|
|
191
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");
|
|
192
296
|
const promptOutput = join(outputDir, DEFAULT_PROMPT_PATH);
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
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
|
+
}
|
|
201
309
|
}
|
|
202
310
|
mkdirSync(outputDir, { recursive: true });
|
|
203
311
|
const config = buildInitConfig(flags);
|
|
@@ -207,12 +315,46 @@ export async function runCareCompassCli(argv = process.argv.slice(2), io = {
|
|
|
207
315
|
writeFileSync(snippetOutput, `${generateCareCompassSnippet(runtimeConfig(resolvedConfig), {
|
|
208
316
|
mode: snippetMode(flags),
|
|
209
317
|
})}\n`);
|
|
210
|
-
|
|
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
|
+
`);
|
|
211
350
|
return 0;
|
|
212
351
|
}
|
|
213
352
|
if (command === "validate") {
|
|
214
353
|
const credentials = requireApiKey(flags, io);
|
|
215
354
|
const config = readConfig(flagString(flags, "config") ?? DEFAULT_CONFIG_PATH);
|
|
355
|
+
if (flags["local-only"] !== true) {
|
|
356
|
+
await assertHostedConfig(config, credentials.apiKey);
|
|
357
|
+
}
|
|
216
358
|
io.stdout.write(`CareCompass config is valid for ${config.payerId}. Credentials loaded from ${credentials.source}.\n`);
|
|
217
359
|
return 0;
|
|
218
360
|
}
|
|
@@ -236,6 +378,14 @@ export async function runCareCompassCli(argv = process.argv.slice(2), io = {
|
|
|
236
378
|
if (command === "doctor") {
|
|
237
379
|
const credentials = requireApiKey(flags, io);
|
|
238
380
|
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
|
+
}
|
|
239
389
|
io.stdout.write(`CareCompass SDK doctor
|
|
240
390
|
Package manager: npm/npx, pnpm, Yarn, and Bun compatible
|
|
241
391
|
Payer: ${config.payerId}
|
|
@@ -243,6 +393,7 @@ Environment: ${config.environment}
|
|
|
243
393
|
API base URL: ${config.apiBaseUrl}
|
|
244
394
|
Allowed origins: ${config.allowedOrigins.join(", ")}
|
|
245
395
|
Credentials: ${credentials.source}
|
|
396
|
+
Hosted API: ${hostedStatus}
|
|
246
397
|
Status: ready for staging verification
|
|
247
398
|
`);
|
|
248
399
|
return 0;
|
|
@@ -255,7 +406,8 @@ Status: ready for staging verification
|
|
|
255
406
|
}
|
|
256
407
|
}
|
|
257
408
|
const isMainModule = () => Boolean(process.argv[1]) &&
|
|
258
|
-
realpathSync(fileURLToPath(import.meta.url)) ===
|
|
409
|
+
realpathSync(fileURLToPath(import.meta.url)) ===
|
|
410
|
+
realpathSync(process.argv[1]);
|
|
259
411
|
if (isMainModule()) {
|
|
260
412
|
void runCareCompassCli().then((code) => {
|
|
261
413
|
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,4 +1,21 @@
|
|
|
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
|
+
};
|
|
2
19
|
export function createCareCompassClient(config, options = {}) {
|
|
3
20
|
const fetcher = options.fetcher ?? fetch;
|
|
4
21
|
const headers = {
|
|
@@ -8,12 +25,15 @@ export function createCareCompassClient(config, options = {}) {
|
|
|
8
25
|
"x-carecompass-environment": config.environment,
|
|
9
26
|
};
|
|
10
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
|
+
}
|
|
11
31
|
try {
|
|
12
32
|
return await fetcher(input, init);
|
|
13
33
|
}
|
|
14
34
|
catch (error) {
|
|
15
35
|
const message = error instanceof Error ? error.message : "Network request failed";
|
|
16
|
-
throw new Error(`CareCompass could not reach ${config.apiBaseUrl}. Confirm apiBaseUrl, CORS, allowedOrigins, and Nexalink
|
|
36
|
+
throw new Error(`CareCompass could not reach ${config.apiBaseUrl}. Confirm apiBaseUrl, CORS, allowedOrigins, and Nexalink hosted API configuration. ${message}`);
|
|
17
37
|
}
|
|
18
38
|
}
|
|
19
39
|
async function parseJson(response) {
|
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,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,IAAI,CAAC,KAAa,EAAE,IAAkB;QACnD,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YACpE,MAAM,IAAI,KAAK,CACb,+BAA+B,MAAM,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
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 { generateCareCompassSnippet } from "./snippet.js";
|
|
5
|
+
export { generateCareCompassIframeSnippet, 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 { generateCareCompassSnippet } from "./snippet.js";
|
|
4
|
+
export { generateCareCompassIframeSnippet, 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,EACL,gCAAgC,EAChC,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
|
package/dist/schema.js
CHANGED
|
@@ -121,7 +121,7 @@ export function createDefaultCareCompassConfig(overrides = {}) {
|
|
|
121
121
|
return careCompassConfigSchema.parse({
|
|
122
122
|
payerId: "payer-demo",
|
|
123
123
|
environment: "staging",
|
|
124
|
-
apiBaseUrl: "https://
|
|
124
|
+
apiBaseUrl: "https://www.nexalink.care",
|
|
125
125
|
embedKey: "embed_demo_1234567890",
|
|
126
126
|
allowedOrigins: ["https://example-payer.com"],
|
|
127
127
|
branding: {
|
package/dist/snippet.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { CareCompassConfig } from "./schema.js";
|
|
2
2
|
export type CareCompassSnippetMode = "bundler" | "cdn";
|
|
3
|
+
export declare function generateCareCompassIframeSnippet(config: CareCompassConfig, options?: {
|
|
4
|
+
src?: string;
|
|
5
|
+
}): string;
|
|
3
6
|
export declare function generateCareCompassSnippet(config: CareCompassConfig, options?: {
|
|
4
7
|
mode?: CareCompassSnippetMode;
|
|
5
8
|
}): string;
|
package/dist/snippet.js
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
export function generateCareCompassIframeSnippet(config, options = {}) {
|
|
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
|
+
}
|
|
1
11
|
export function generateCareCompassSnippet(config, options = {}) {
|
|
2
12
|
const targetId = "carecompass-root";
|
|
3
13
|
const moduleUrl = options.mode === "cdn"
|
package/dist/snippet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snippet.js","sourceRoot":"","sources":["../src/snippet.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,0BAA0B,CACxC,MAAyB,EACzB,UAA6C,EAAE;IAE/C,MAAM,QAAQ,GAAG,kBAAkB,CAAC;IACpC,MAAM,SAAS,GACb,OAAO,CAAC,IAAI,KAAK,KAAK;QACpB,CAAC,CAAC,0CAA0C;QAC5C,CAAC,CAAC,2BAA2B,CAAC;IAClC,OAAO,YAAY,QAAQ;;sCAES,SAAS;;mBAE5B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;8CACJ,QAAQ;UAC5C,CAAC;AACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"snippet.js","sourceRoot":"","sources":["../src/snippet.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,gCAAgC,CAC9C,MAAyB,EACzB,UAA4B,EAAE;IAE9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,qCAAqC,CAAC;IACjE,MAAM,KAAK,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,cAAc,CAAC;IAC3D,OAAO;WACE,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACjC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;qEAC+B,MAAM,CAAC,KAAK,CAAC,YAAY;;WAEnF,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAyB,EACzB,UAA6C,EAAE;IAE/C,MAAM,QAAQ,GAAG,kBAAkB,CAAC;IACpC,MAAM,SAAS,GACb,OAAO,CAAC,IAAI,KAAK,KAAK;QACpB,CAAC,CAAC,0CAA0C;QAC5C,CAAC,CAAC,2BAA2B,CAAC;IAClC,OAAO,YAAY,QAAQ;;sCAES,SAAS;;mBAE5B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;8CACJ,QAAQ;UAC5C,CAAC;AACX,CAAC"}
|
package/package.json
CHANGED