@everfur/cli 0.2.0 → 0.2.1
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 -14
- package/dist/{chunk-S6UN7D2O.js → chunk-4UB26D67.js} +1 -1
- package/dist/{chunk-TBFOL2D3.js → chunk-FC23PLWG.js} +1 -1
- package/dist/{chunk-CEWWBPPT.js → chunk-KQICUK54.js} +138 -12
- package/dist/{chunk-VHZWTB6J.js → chunk-SJUEHHU6.js} +3 -3
- package/dist/{chunk-WCH6AI6K.js → chunk-XMIERMOW.js} +1 -1
- package/dist/everfur-mcp-container.js +4 -4
- package/dist/everfur-mcp-hosted.js +4 -4
- package/dist/everfur-mcp-http.js +3 -3
- package/dist/everfur-mcp.js +2 -2
- package/dist/everfur.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -95,21 +95,36 @@ document with no credential value in it.
|
|
|
95
95
|
|
|
96
96
|
## The fastest path: let your agent do it
|
|
97
97
|
|
|
98
|
-
### Hosted MCP: nothing to
|
|
98
|
+
### Hosted MCP: nothing to install
|
|
99
99
|
|
|
100
|
-
Everfur runs the MCP server for you
|
|
101
|
-
|
|
102
|
-
(Streamable HTTP) MCP server. When the editor connects, it sends you to the Everfur partner console to sign
|
|
103
|
-
in; from then on every tool runs as your tenant. There is no key, token, variable or file to set.
|
|
100
|
+
Everfur runs the MCP server for you, so there is no key, token, variable or file to set. Today it is
|
|
101
|
+
reachable at one endpoint:
|
|
104
102
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
103
|
+
```
|
|
104
|
+
https://mcp-staging.everfur.com/mcp
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
That is the staging deployment, and it is where your sandbox tenant lives while you build. **The production
|
|
108
|
+
endpoint `https://mcp.everfur.com/mcp` is not available yet:** the hostname does not resolve, so a client
|
|
109
|
+
pointed at it fails to connect rather than falling back to anything. Use the staging URL until Everfur tells
|
|
110
|
+
you production is live.
|
|
111
|
+
|
|
112
|
+
Add the URL to your editor as a remote (Streamable HTTP) MCP server. You paste the URL yourself; there is
|
|
113
|
+
nothing to search for in a connector directory. Adding it is the whole configuration step:
|
|
114
|
+
|
|
115
|
+
- **Claude Code:** `claude mcp add --transport http everfur https://mcp-staging.everfur.com/mcp`
|
|
116
|
+
- **Cursor:** `.cursor/mcp.json` with `{"mcpServers":{"everfur":{"url":"https://mcp-staging.everfur.com/mcp"}}}`
|
|
117
|
+
- **VS Code:** `.vscode/mcp.json` with `{"servers":{"everfur":{"type":"http","url":"https://mcp-staging.everfur.com/mcp"}}}`
|
|
108
118
|
- **Codex:** a streamable HTTP server entry with that URL in `~/.codex/config.toml` (`[mcp_servers.everfur]`, `url`)
|
|
109
|
-
- **claude.ai:** a custom connector
|
|
110
|
-
tell it worked:
|
|
119
|
+
- **claude.ai:** add it as a **custom connector** and paste the URL into the dialog. Click by click,
|
|
120
|
+
including what the sign-in asks and how to tell it worked:
|
|
111
121
|
[docs/ADD_THE_EVERFUR_CONNECTOR_IN_CLAUDE.md](docs/ADD_THE_EVERFUR_CONNECTOR_IN_CLAUDE.md)
|
|
112
122
|
|
|
123
|
+
There is no key to type because the server authenticates you instead. On first connect it answers with a
|
|
124
|
+
`401` naming its OAuth resource metadata, your client registers itself automatically (dynamic client
|
|
125
|
+
registration, RFC 7591), and you are sent to the Everfur partner console to sign in and approve. From then
|
|
126
|
+
on every tool runs as the tenant of that console session.
|
|
127
|
+
|
|
113
128
|
The tools are the same five as below, plus eight that read your own tenant, with these differences that follow
|
|
114
129
|
from where the server runs:
|
|
115
130
|
|
|
@@ -275,7 +290,7 @@ npx -y -p @everfur/cli everfur plan
|
|
|
275
290
|
|
|
276
291
|
Plain `npx @everfur/cli` does not work, and the error it gives ("could not determine executable to
|
|
277
292
|
run") does not explain why: this package ships four binaries, `everfur`, `everfur-mcp`,
|
|
278
|
-
`everfur-mcp-http` and `everfur-mcp-hosted` (the entry Everfur runs
|
|
293
|
+
`everfur-mcp-http` and `everfur-mcp-hosted` (the entry Everfur runs itself), and npx only
|
|
279
294
|
picks a binary on its own when there is exactly one, or when one is named after the package. `-p` names
|
|
280
295
|
the package and the word after it names the binary.
|
|
281
296
|
|
|
@@ -350,7 +365,7 @@ with no network call and no credential.
|
|
|
350
365
|
| `EVERFUR_MCP_HTTP_HOST` / `PORT` / `PATH` | Optional HTTP listener configuration; defaults to `127.0.0.1:3100/mcp`. `EVERFUR_MCP_HTTP_PORT` is also the hosted service's port. |
|
|
351
366
|
| `EVERFUR_MCP_HTTP_ALLOWED_HOSTS` | Required for any non-loopback bind; comma-separated public hostnames only. |
|
|
352
367
|
| `EVERFUR_MCP_HTTP_ALLOWED_ORIGINS` | Optional browser-origin allowlist. Origins are rejected unless explicitly listed. |
|
|
353
|
-
| `MCP_PUBLIC_URL` | Everfur-internal: the FULL endpoint URL of the hosted service (`everfur-mcp-hosted`), path included (`https://mcp.everfur.com/mcp`), exactly as a partner pastes it into Claude. It is the OAuth resource every token names and the base of every 401's metadata pointer; a bare origin is refused at start. With `EVERFUR_API_BASE_URL`, `EVERFUR_MCP_HTTP_PORT` and `MCP_TRUSTED_PROXY_HOPS` it is the hosted task's whole environment. Partners do not set this. |
|
|
368
|
+
| `MCP_PUBLIC_URL` | Everfur-internal: the FULL endpoint URL of the hosted service (`everfur-mcp-hosted`), path included (`https://mcp-staging.everfur.com/mcp` on the staging deployment), exactly as a partner pastes it into Claude. It is the OAuth resource every token names and the base of every 401's metadata pointer; a bare origin is refused at start. With `EVERFUR_API_BASE_URL`, `EVERFUR_MCP_HTTP_PORT` and `MCP_TRUSTED_PROXY_HOPS` it is the hosted task's whole environment. Partners do not set this. |
|
|
354
369
|
| `MCP_ALLOWED_HOSTS` | Everfur-internal, optional: extra `Host` values the hosted service accepts beside its own. `MCP_PORT` is read only when `EVERFUR_MCP_HTTP_PORT` is unset. Partners do not set these. |
|
|
355
370
|
| `MCP_ALLOWED_ORIGINS` | Everfur-internal, optional: extra `Origin` values the hosted service's MCP endpoint accepts beside `https://claude.ai` and `https://claude.com`; any other `Origin` is refused with `403`. A browser page at an accepted origin gets its CORS preflight answered and can read the `401` challenge. Partners do not set this. |
|
|
356
371
|
| `MCP_TRUSTED_PROXY_HOPS` | Everfur-internal, optional: how many proxies appended to `X-Forwarded-For` (`1` behind the load balancer). Keys the hosted service's per-client budget of unauthenticated failures; `0` (default) uses the socket address. Partners do not set this. |
|
|
@@ -361,8 +376,14 @@ up. The publishable key is designed to ship inside your app; the secret key is n
|
|
|
361
376
|
|
|
362
377
|
## Documentation
|
|
363
378
|
|
|
364
|
-
The
|
|
365
|
-
[
|
|
379
|
+
The integration guide, API reference, error catalog and testing guide are at
|
|
380
|
+
[everfur.com/docs](https://everfur.com/docs): adoption paths, the HTTP contract, API keys, the launch
|
|
381
|
+
checklist and troubleshooting.
|
|
382
|
+
|
|
383
|
+
This page used to link to `github.com/Everfur-Health/everfur-sdk-rn`, which is a PRIVATE repository: the
|
|
384
|
+
link returned 404 for every partner who clicked it, since a partner is outside Everfur by definition. If
|
|
385
|
+
a doc you need is not on the site yet, ask [support@everfur.com](mailto:support@everfur.com) rather than
|
|
386
|
+
looking for a repository you cannot open.
|
|
366
387
|
|
|
367
388
|
## License
|
|
368
389
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { VERIFY_IDENTITY_MODES, SURFACES, ENVIRONMENTS, BASE_URL_ENV_VAR, MIN_TIMEOUT_MS, MAX_TIMEOUT_MS, DEFAULT_TIMEOUT_MS, ALL_CAPABILITIES, expandCapabilities, errorOutcome, describeFailure, failureDetails, countsAsNotOn, diagnoseVerdict, isJsonObject, succeed, CAPABILITY_QUESTION, CAPABILITIES_TREE, WEB_EMBEDDING_QUESTION, PLATFORM_TREE, loadDecisionSpace, fetchContract, contractUnavailableOutcome, loadDecisionSpaceFromContract, parseEnvironment, detectProject, planIntegration, fail, ExitCode, DOCS_KEY, resolveContractPath, validateContractFile, buildSupportBundle, renderSupportBundle, chooseWidgetAuth, DIAGNOSTICS_PATH, diagnoseFailure, parseDiagnostics, buildDiagnosisDocument, PARTNER_KEY, SESSION_TOKEN, resolveCredential, ADMIN_TOKEN, withPrefix, parseOrigin, parseLoaderUrl, parseSurfaces, parseIdentityMode, runVerification, PARTNER_SECRET_KEY, resolveOffline, offlineSuggestions, loadErrorRegistryFromContract, loadErrorRegistry, resolveAfterRegistryMiss, knownCodes, buildExplanationDocument, renderExplanation, resolveEndpoint, isCorrelatableRequestId, EMPTY_REGISTRY, createApiClient, buildSdkExplanationDocument, renderSdkExplanation, buildContractTableExplanationDocument, renderContractTableExplanation, IDENTITY_QUESTION, IDENTITY_TREE, BACKEND_LANGUAGE_QUESTION, SESSION_MINT_TREE, CREDENTIAL_SPECS } from './chunk-
|
|
2
|
+
import { VERIFY_IDENTITY_MODES, SURFACES, ENVIRONMENTS, BASE_URL_ENV_VAR, MIN_TIMEOUT_MS, MAX_TIMEOUT_MS, DEFAULT_TIMEOUT_MS, ALL_CAPABILITIES, expandCapabilities, errorOutcome, describeFailure, failureDetails, countsAsNotOn, diagnoseVerdict, isJsonObject, succeed, CAPABILITY_QUESTION, CAPABILITIES_TREE, WEB_EMBEDDING_QUESTION, PLATFORM_TREE, loadDecisionSpace, fetchContract, contractUnavailableOutcome, loadDecisionSpaceFromContract, parseEnvironment, detectProject, planIntegration, fail, ExitCode, DOCS_KEY, resolveContractPath, validateContractFile, buildSupportBundle, renderSupportBundle, chooseWidgetAuth, DIAGNOSTICS_PATH, diagnoseFailure, parseDiagnostics, buildDiagnosisDocument, PARTNER_KEY, SESSION_TOKEN, resolveCredential, ADMIN_TOKEN, withPrefix, parseOrigin, parseLoaderUrl, parseSurfaces, parseIdentityMode, runVerification, PARTNER_SECRET_KEY, resolveOffline, offlineSuggestions, loadErrorRegistryFromContract, loadErrorRegistry, resolveAfterRegistryMiss, knownCodes, buildExplanationDocument, renderExplanation, resolveEndpoint, isCorrelatableRequestId, EMPTY_REGISTRY, createApiClient, buildSdkExplanationDocument, renderSdkExplanation, buildContractTableExplanationDocument, renderContractTableExplanation, IDENTITY_QUESTION, IDENTITY_TREE, BACKEND_LANGUAGE_QUESTION, SESSION_MINT_TREE, CREDENTIAL_SPECS } from './chunk-KQICUK54.js';
|
|
3
3
|
import { isAbsolute, resolve } from 'path';
|
|
4
4
|
|
|
5
5
|
// src/cli/format.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { buildServer } from './chunk-
|
|
2
|
+
import { buildServer } from './chunk-XMIERMOW.js';
|
|
3
3
|
import { createServer } from 'http';
|
|
4
4
|
import { timingSafeEqual } from 'crypto';
|
|
5
5
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
@@ -3777,12 +3777,13 @@ function loadErrorRegistryFromContract(contract) {
|
|
|
3777
3777
|
|
|
3778
3778
|
// src/commands/plan/sdk-package.ts
|
|
3779
3779
|
var SDK_PACKAGE = "@everfur/sdk";
|
|
3780
|
-
var SDK_GIT_SPEC = "git+ssh://git@github.com/Everfur-Health/everfur-sdk-rn.git";
|
|
3781
3780
|
function sdkInstallSpec() {
|
|
3782
|
-
return
|
|
3781
|
+
return `'${SDK_PACKAGE}@${SDK_INSTALL_RANGE}'` ;
|
|
3783
3782
|
}
|
|
3784
3783
|
var SDK_PACKAGE_PLATFORMS = /* @__PURE__ */ new Set(["expo-managed", "bare-react-native", "web"]);
|
|
3785
3784
|
var SDK_MIN_VERSION = "0.3.0";
|
|
3785
|
+
var SDK_MAX_VERSION_EXCLUSIVE = "0.5.0";
|
|
3786
|
+
var SDK_INSTALL_RANGE = `>=${SDK_MIN_VERSION} <${SDK_MAX_VERSION_EXCLUSIVE}`;
|
|
3786
3787
|
var SDK_WEB_MIN_VERSION = SDK_MIN_VERSION;
|
|
3787
3788
|
var SDK_RN_PROVIDER_PEERS = Object.freeze(["react-native-safe-area-context"]);
|
|
3788
3789
|
var SDK_RN_SHAPES = /* @__PURE__ */ new Set(["expo-managed", "bare-react-native"]);
|
|
@@ -4769,6 +4770,11 @@ var WEB_SUBPATH_ATTRIBUTE = "web_subpath";
|
|
|
4769
4770
|
var FRAME_SURFACE_ATTRIBUTE = "frame_surface";
|
|
4770
4771
|
var NATIVE_PEERS_ATTRIBUTE = "native_peers";
|
|
4771
4772
|
var SUMMARY_ATTRIBUTE = "summary";
|
|
4773
|
+
var NODE_EXTRA_SUBPATHS_ATTRIBUTE = "node_extra_subpaths";
|
|
4774
|
+
var WEB_EXTRA_SUBPATHS_ATTRIBUTE = "web_extra_subpaths";
|
|
4775
|
+
var VENDOR_REGISTER_ATTRIBUTE = "vendor_module_register";
|
|
4776
|
+
var VENDOR_PACKAGE_NODE_ATTRIBUTE = "vendor_module_package_node";
|
|
4777
|
+
var VENDOR_PACKAGE_WEB_ATTRIBUTE = "vendor_module_package_web";
|
|
4772
4778
|
function resolveCapabilities(space, capabilities) {
|
|
4773
4779
|
const tree = space.tree(CAPABILITIES_TREE);
|
|
4774
4780
|
if (tree === null) {
|
|
@@ -4843,6 +4849,22 @@ function frameRenders(entry) {
|
|
|
4843
4849
|
function summaryFor(entry) {
|
|
4844
4850
|
return stringAttribute(entry.outcome, SUMMARY_ATTRIBUTE) ?? "";
|
|
4845
4851
|
}
|
|
4852
|
+
function extraSubpathsFor(entry, surface) {
|
|
4853
|
+
const kind = surface === true ? "dart" : surface === false ? "node" : surface;
|
|
4854
|
+
if (kind === "dart" || kind === "frame") return Object.freeze([]);
|
|
4855
|
+
return listAttribute(entry.outcome, kind === "web" ? WEB_EXTRA_SUBPATHS_ATTRIBUTE : NODE_EXTRA_SUBPATHS_ATTRIBUTE);
|
|
4856
|
+
}
|
|
4857
|
+
function vendorModuleFor(entry, surface) {
|
|
4858
|
+
const kind = surface === true ? "dart" : surface === false ? "node" : surface;
|
|
4859
|
+
if (kind === "dart" || kind === "frame") return null;
|
|
4860
|
+
const register = stringAttribute(entry.outcome, VENDOR_REGISTER_ATTRIBUTE);
|
|
4861
|
+
const packageName = stringAttribute(
|
|
4862
|
+
entry.outcome,
|
|
4863
|
+
kind === "web" ? VENDOR_PACKAGE_WEB_ATTRIBUTE : VENDOR_PACKAGE_NODE_ATTRIBUTE
|
|
4864
|
+
);
|
|
4865
|
+
if (register === null || packageName === null) return null;
|
|
4866
|
+
return Object.freeze({ register, packageName });
|
|
4867
|
+
}
|
|
4846
4868
|
|
|
4847
4869
|
// src/registry/sdk/client/theme/color.ts
|
|
4848
4870
|
function parseColor(value) {
|
|
@@ -6697,6 +6719,46 @@ function chatElement(platform, base, indent = MOUNT_INDENT) {
|
|
|
6697
6719
|
const seams = chatSeams(platform === "expo");
|
|
6698
6720
|
return element("EverfurChat", [...base, ...seams.passed, FIND_VET_PROP], [...seamGroup(seams.commented), vetPrepGroup()]);
|
|
6699
6721
|
}
|
|
6722
|
+
var RECORDS_NAMED_SCREENS = Object.freeze([
|
|
6723
|
+
Object.freeze({
|
|
6724
|
+
name: "EverfurRecordsDashboard",
|
|
6725
|
+
purpose: "the pet's records home: its requests, its documents and the entry to everything below",
|
|
6726
|
+
extraProps: Object.freeze([])
|
|
6727
|
+
}),
|
|
6728
|
+
Object.freeze({
|
|
6729
|
+
name: "EverfurRecordsUpload",
|
|
6730
|
+
purpose: "the owner uploading their own PDFs onto a request",
|
|
6731
|
+
extraProps: Object.freeze([])
|
|
6732
|
+
}),
|
|
6733
|
+
Object.freeze({
|
|
6734
|
+
name: "EverfurClinicPicker",
|
|
6735
|
+
purpose: "choosing the clinic a records request is addressed to",
|
|
6736
|
+
extraProps: Object.freeze([])
|
|
6737
|
+
}),
|
|
6738
|
+
Object.freeze({
|
|
6739
|
+
name: "EverfurRecordsRequest",
|
|
6740
|
+
purpose: "one request and where it has got to, which is the screen a record_request notification opens",
|
|
6741
|
+
extraProps: Object.freeze([])
|
|
6742
|
+
}),
|
|
6743
|
+
Object.freeze({
|
|
6744
|
+
name: "EverfurRecordDetail",
|
|
6745
|
+
purpose: "one record in full: its facts, its series and its documents",
|
|
6746
|
+
extraProps: Object.freeze([])
|
|
6747
|
+
}),
|
|
6748
|
+
Object.freeze({
|
|
6749
|
+
name: "EverfurRecordDocument",
|
|
6750
|
+
purpose: "one source document of a record",
|
|
6751
|
+
extraProps: Object.freeze([])
|
|
6752
|
+
}),
|
|
6753
|
+
Object.freeze({
|
|
6754
|
+
name: "EverfurRecordsConsent",
|
|
6755
|
+
purpose: "the owner granting consent for this pet's records, which every read is gated on",
|
|
6756
|
+
extraProps: Object.freeze([])
|
|
6757
|
+
})
|
|
6758
|
+
]);
|
|
6759
|
+
function recordsNamedScreens() {
|
|
6760
|
+
return RECORDS_NAMED_SCREENS;
|
|
6761
|
+
}
|
|
6700
6762
|
function recordsNativeSeams(isExpo) {
|
|
6701
6763
|
const seams = ["onPickDocument={pickRecordsDocument}", "onCopy={copyText}"];
|
|
6702
6764
|
return isExpo ? { passed: seams, commented: [] } : { passed: [], commented: seams };
|
|
@@ -9298,12 +9360,6 @@ function warningsFor(input, mounted, blocked, platformBlock = null, installsNoth
|
|
|
9298
9360
|
message: "The Everfur SDK is not declared in this project yet, so this integration starts from installing it."
|
|
9299
9361
|
});
|
|
9300
9362
|
}
|
|
9301
|
-
{
|
|
9302
|
-
warnings.push({
|
|
9303
|
-
code: "sdk_not_published",
|
|
9304
|
-
message: `${SDK_PACKAGE} is not published to a registry yet: installing it by name returns 404. The plan installs it from the git URL instead, which builds on install and needs access to the Everfur-Health GitHub organisation.`
|
|
9305
|
-
});
|
|
9306
|
-
}
|
|
9307
9363
|
return Object.freeze(warnings);
|
|
9308
9364
|
}
|
|
9309
9365
|
function installSteps(detection, platform, mounted, identityMode, environment, theme2) {
|
|
@@ -9566,6 +9622,23 @@ var CHAT_SURFACE_NOTE = Object.freeze({
|
|
|
9566
9622
|
var CHAT_VET_NOTE = " On an emergency or schedule-soon reply the banner's Find a vet pill opens the Everfur vet visit entry when Everfur has it on for your client, else calls onFindVet, else does not render: the mount passes onFindVet={findVet}, which opens a maps search until you replace it with your own vet finder (REPLACE in the file). The vet-visit prep starter chip opens the Everfur vet visit entry while Everfur has it on; the onVetPrep line beside the mount is commented, for an app with its own vet-visit preparation screen, because passing it replaces that entry.";
|
|
9567
9623
|
var FRAME_CHAT_VET_NOTE = " A frame takes no onFindVet or onVetPrep: functions do not reach the frame, so on an emergency or schedule-soon reply the banner's Find a vet pill, and the vet-visit prep starter chip, appear only while Everfur has its vet visit entry on for your client.";
|
|
9568
9624
|
var RECORDS_SURFACE_NOTE = ` EverfurRecords is the app's records flow: it opens on the pet's dashboard and owns its own stack (the hardware back key pops it on React Native), every screen is also exported by name for your own navigator, and initialScreen={{ name: 'request', requestId }} opens a request directly. The mount passes petName={selectedPet.name} for headings such as "{petName}'s lab trends". Lab markers, share links, the record PDF link, fact edits and the signature gallery need the platform flag partner.records_full_depth_enabled; while it is off for your tenant the SDK hides them, so their absence is not a defect in your integration.`;
|
|
9625
|
+
function recordsScreensStep(surface) {
|
|
9626
|
+
const subpath = surface === "web" ? `${SDK_PACKAGE}/web/records` : `${SDK_PACKAGE}/records`;
|
|
9627
|
+
const screens = recordsNamedScreens();
|
|
9628
|
+
return {
|
|
9629
|
+
id: "mount-records-screens",
|
|
9630
|
+
phase: "code",
|
|
9631
|
+
title: "Mount a single records screen on your own route, rather than the whole flow",
|
|
9632
|
+
detail: [
|
|
9633
|
+
`EverfurRecords is the flow: it opens on the dashboard and owns its own stack, which is what the generated mount uses and what a partner giving records one tab wants. If your app already has a navigator, ${subpath} also exports every screen by name, so you can put one on a route of your own:`,
|
|
9634
|
+
...screens.map((screen) => `${screen.name}: ${screen.purpose}.`),
|
|
9635
|
+
"Every one of them takes the same base props: petRef (required), petName, onNavigate and onBack, plus the optional host seams onOpenUrl, onCopy, onAsk and location. onNavigate receives the exact screen an edge leads to, so your navigator decides where that goes; without it a control that only navigates is hidden rather than left inert, and without onBack no back control renders. The navigation model itself (recordsNavReducer, pushRecordsNav, currentRecordsScreen and the RecordsScreen type) is exported from the same subpath for a host driving the screens itself.",
|
|
9636
|
+
"Consent gates the reads whichever screen you mount, and the depth flag hides the deeper views the same way it does inside the flow: mounting a screen directly bypasses neither."
|
|
9637
|
+
].join(" "),
|
|
9638
|
+
commands: [],
|
|
9639
|
+
files: []
|
|
9640
|
+
};
|
|
9641
|
+
}
|
|
9569
9642
|
var WEBHOOK_SIGNATURE_HEADER_ATTRIBUTE = "webhook_signature_header";
|
|
9570
9643
|
var WEBHOOK_VERIFY_SUBPATH_ATTRIBUTE = "webhook_verify_subpath";
|
|
9571
9644
|
var WEBHOOK_ENDPOINT_ROUTE_ATTRIBUTE = "webhook_endpoint_route";
|
|
@@ -9760,6 +9833,35 @@ function configureVisitReturnStep(detection, native) {
|
|
|
9760
9833
|
files: []
|
|
9761
9834
|
};
|
|
9762
9835
|
}
|
|
9836
|
+
function televetNativeCallStep(input) {
|
|
9837
|
+
if (input.surface !== "node" && input.surface !== "web") return null;
|
|
9838
|
+
if (input.vendor === null) return null;
|
|
9839
|
+
const native = input.surface === "node";
|
|
9840
|
+
const expo = input.projectType === "expo-managed";
|
|
9841
|
+
const loader = native ? `registerEverfurDaily(() => require('${input.vendor.packageName}'))` : `registerEverfurDaily(() => import('${input.vendor.packageName}'))`;
|
|
9842
|
+
const sentences = [
|
|
9843
|
+
`The vet consult renders inside your own ${native ? "app" : "page"} from ${input.callSubpath}, on ${input.vendor.packageName}. ${input.callSubpath} is a separate subpath from the visit button on purpose: a partner that mounts only the button never downloads a call surface and is never asked to take a WebRTC dependency for a surface it does not use.`,
|
|
9844
|
+
`THE SDK NEVER IMPORTS ${input.vendor.packageName}. It is an optional peer, and nothing in the package names it in an import: a literal specifier there would become one every partner's bundler has to resolve, including the partners who never mount a call. You hand the module in once, at your entry, with ${input.vendor.register}: \`${loader}\`. Import ${input.vendor.register} from ${input.callSubpath}. Until you call it the call surface renders its deliberate unavailable state and reports the setup message to your code, which is a surface that explains itself rather than a black rectangle.`,
|
|
9845
|
+
...native ? [
|
|
9846
|
+
`${input.vendor.packageName} ships native code, so Expo Go cannot load it${expo ? "" : " and autolinking has to see it"}: ` + (expo ? "a managed app needs a development build (npx expo prebuild, then npx expo run:ios and npx expo run:android). Add the Daily config plugin to the plugins array in app.json in the same change, because a prebuild that runs without it produces native projects the call cannot use." : "run `cd ios && pod install` after adding it."),
|
|
9847
|
+
"The call needs the camera and the microphone, so declare both before you ship: NSCameraUsageDescription and NSMicrophoneUsageDescription on iOS, and the CAMERA and RECORD_AUDIO permissions on Android. REPLACE the purpose strings with your own: a permission prompt is copy shown to your customer in your app's voice, and this plan will not write it for you."
|
|
9848
|
+
] : [
|
|
9849
|
+
"On the web there is nothing to build: the module is loaded by the dynamic import above, so the WebRTC stack reaches the bundle only on the pages that mount the call. The browser asks for the camera and the microphone itself, over https, on a user gesture."
|
|
9850
|
+
],
|
|
9851
|
+
`THE CALL DOES NOT OBTAIN ITS OWN CREDENTIALS. roomUrl and token are minted server side and come in from you as props; the surface refuses a room credential that does not pass its own guard rather than joining a room it cannot verify.`,
|
|
9852
|
+
...input.bookingSubpath === null ? [] : [
|
|
9853
|
+
`BOOKING IN APP IS NOT READY, AND MOUNTING IT TODAY IS STILL SAFE. ${input.bookingSubpath} carries the booking screens, and the partner booking routes are not served yet: every read answers 404, which the flow settles as unavailable and falls back to the hosted visit rather than dead-ending an owner inside a scheduler that cannot schedule. Its ported copy is gated shut as well, so the screens refuse to render a ported string until Everfur approves the deck. Two things have to land before this books anything: the partner booking routes, and that copy approval. Ask Everfur where both stand before you plan a launch around in-app booking.`
|
|
9854
|
+
]
|
|
9855
|
+
];
|
|
9856
|
+
return {
|
|
9857
|
+
id: "mount-televet-call",
|
|
9858
|
+
phase: "code",
|
|
9859
|
+
title: native ? "Render the vet consult in your app, and hand the SDK the native video module" : "Render the vet consult in your page, and hand the SDK the video module",
|
|
9860
|
+
detail: sentences.join(" "),
|
|
9861
|
+
commands: [],
|
|
9862
|
+
files: []
|
|
9863
|
+
};
|
|
9864
|
+
}
|
|
9763
9865
|
function televetTestModeStep() {
|
|
9764
9866
|
return {
|
|
9765
9867
|
id: "televet-test-mode",
|
|
@@ -9825,7 +9927,17 @@ function verifySurfacesStep(candidates, anonymous) {
|
|
|
9825
9927
|
detail: [
|
|
9826
9928
|
`Run everfur_verify_integration with surfaces ${JSON.stringify(accepted)}${anonymous ? " and identity anonymous" : ""}, or the command below.`,
|
|
9827
9929
|
"It exercises each surface on the real wire and reports GATED, naming the switch, for anything Everfur has not turned on for your client: a plan with status ready means the code can be built, never that the tenant is armed.",
|
|
9828
|
-
"There is no environment argument. Verify reads the host from EVERFUR_API_BASE_URL in its own environment
|
|
9930
|
+
"There is no environment argument. Verify reads the host from EVERFUR_API_BASE_URL in its own environment, with EVERFUR_PARTNER_KEY, so point that at the environment you mean rather than passing one.",
|
|
9931
|
+
/**
|
|
9932
|
+
* WHERE THE SESSION COMES FROM, per front door. This sentence used to name EVERFUR_PARTNER_SECRET_KEY as
|
|
9933
|
+
* something the verifying process reads "in its own environment", in the same step that tells the reader
|
|
9934
|
+
* to run everfur_verify_integration. Over MCP that environment is the server's `env` block in .mcp.json,
|
|
9935
|
+
* which is committed and which the agent reads into its own transcript, so the step taught exactly what
|
|
9936
|
+
* docs/partner/12-CLI-AND-MCP.md promises never happens and what the MCP server does not do: it verifies
|
|
9937
|
+
* with a session and never reads the secret key (mcp/tools.ts `mintWithSecretKey: false`). The local mint
|
|
9938
|
+
* is the terminal command's alone.
|
|
9939
|
+
*/
|
|
9940
|
+
anonymous ? "An anonymous identity mints nothing: verify reads with the publishable key and a derived session id, so no session token and no secret key are involved." : "A signed identity needs a session, and the secret key is not how the tool gets one. everfur_verify_integration reads EVERFUR_SESSION_TOKEN, a short-lived session your backend minted for a test user, and the Everfur-hosted connector mints its own; neither reads the secret key, which never belongs in an MCP configuration. The terminal command below is the only one that mints locally, from EVERFUR_PARTNER_SECRET_KEY and EVERFUR_PARTNER_KEY, from a local shell only.",
|
|
9829
9941
|
missing.length === 0 ? "" : `This plan also builds ${missing.join(", ")}, which this CLI does not check yet: exercise those by hand and do not read a pass here as covering them.`
|
|
9830
9942
|
].filter((sentence) => sentence.length > 0).join(" "),
|
|
9831
9943
|
commands: [`everfur verify${identity} --surfaces ${accepted.join(",")} --project-root .`],
|
|
@@ -10266,16 +10378,30 @@ function planIntegration(input) {
|
|
|
10266
10378
|
}
|
|
10267
10379
|
const lifecycle = lifecycleStep(file, frameSnippetWritten && personalized ? snippetPaths : []);
|
|
10268
10380
|
if (lifecycle !== null) steps.push(lifecycle);
|
|
10269
|
-
const
|
|
10270
|
-
if (
|
|
10381
|
+
const televetEntry = renderable.find((entry) => entry.capability === "televet") ?? null;
|
|
10382
|
+
if (televetEntry !== null) {
|
|
10271
10383
|
const nativeSurface = surface === "node" && SDK_PACKAGE_PLATFORMS.has(input.detection.projectType);
|
|
10272
10384
|
steps.push(openVisitStep(file?.path ?? null));
|
|
10273
10385
|
steps.push(configureVisitReturnStep(input.detection, nativeSurface));
|
|
10386
|
+
const extras = extraSubpathsFor(televetEntry, surface);
|
|
10387
|
+
const callSubpath = extras.find((subpath) => subpath.endsWith("/call")) ?? null;
|
|
10388
|
+
const bookingSubpath = extras.find((subpath) => subpath.endsWith("/booking")) ?? null;
|
|
10389
|
+
if (callSubpath !== null) {
|
|
10390
|
+
const callStep = televetNativeCallStep({
|
|
10391
|
+
surface,
|
|
10392
|
+
projectType: input.detection.projectType,
|
|
10393
|
+
callSubpath,
|
|
10394
|
+
bookingSubpath,
|
|
10395
|
+
vendor: vendorModuleFor(televetEntry, surface)
|
|
10396
|
+
});
|
|
10397
|
+
if (callStep !== null) steps.push(callStep);
|
|
10398
|
+
}
|
|
10274
10399
|
if (input.environment === "staging" || input.environment === "test") {
|
|
10275
10400
|
const testMode = televetTestModeFile(!nativeSurface);
|
|
10276
10401
|
steps.push({ ...televetTestModeStep(), files: [testMode.path], code: [testMode] });
|
|
10277
10402
|
}
|
|
10278
10403
|
}
|
|
10404
|
+
if (records && (surface === "node" || surface === "web")) steps.push(recordsScreensStep(surface));
|
|
10279
10405
|
if (records && (input.environment === "staging" || input.environment === "test")) {
|
|
10280
10406
|
const testMode = file === null ? null : recordsTestModeFile(
|
|
10281
10407
|
surface === "web",
|
|
@@ -12329,7 +12455,7 @@ async function runVerification(options) {
|
|
|
12329
12455
|
}
|
|
12330
12456
|
|
|
12331
12457
|
// src/version.ts
|
|
12332
|
-
var CLI_VERSION = "0.2.
|
|
12458
|
+
var CLI_VERSION = "0.2.1";
|
|
12333
12459
|
|
|
12334
12460
|
// src/cli/outcome.ts
|
|
12335
12461
|
function succeed(json, text) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { hostnameOf, listen, close, writeJson, serveStatelessMcp } from './chunk-
|
|
3
|
-
import { createHostedTokenVerifier, tokenBucketOf, isAccessTokenShaped, buildServer, MCP_SCOPE, tenantContextOf, sendTestUserRef, hostedVerifyUserRef, REVOKED_AUTHORIZATION_REMEDY, SYNTHETIC_USER_REF_PREFIX } from './chunk-
|
|
4
|
-
import { BASE_URL_ENV_VAR, resolveEndpoint, fetchTransport, systemClock, createApiClient, withPrefix, ephemeralCredential, validateContractText, isJsonObject, describeFailure } from './chunk-
|
|
2
|
+
import { hostnameOf, listen, close, writeJson, serveStatelessMcp } from './chunk-FC23PLWG.js';
|
|
3
|
+
import { createHostedTokenVerifier, tokenBucketOf, isAccessTokenShaped, buildServer, MCP_SCOPE, tenantContextOf, sendTestUserRef, hostedVerifyUserRef, REVOKED_AUTHORIZATION_REMEDY, SYNTHETIC_USER_REF_PREFIX } from './chunk-XMIERMOW.js';
|
|
4
|
+
import { BASE_URL_ENV_VAR, resolveEndpoint, fetchTransport, systemClock, createApiClient, withPrefix, ephemeralCredential, validateContractText, isJsonObject, describeFailure } from './chunk-KQICUK54.js';
|
|
5
5
|
import { createServer } from 'http';
|
|
6
6
|
import { InvalidTokenError, TooManyRequestsError, TemporarilyUnavailableError } from '@modelcontextprotocol/sdk/server/auth/errors.js';
|
|
7
7
|
import { isIP } from 'net';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { ENVIRONMENTS, SURFACES, VERIFY_IDENTITY_MODES, fetchContract, NO_CONTRACT_CACHE, systemClock, fetchTransport, describeFailure, loadDecisionSpaceFromContract, uuidFromKey, resolveEndpoint, createApiClient, createContractProvider, nodeContractCache, CLI_VERSION, withPrefix, ephemeralCredential, isJsonObject, error_explanation_v1_schema_default, verification_v1_schema_default, diagnosis_v1_schema_default, plan_v1_schema_default, IDENTITY_QUESTION, IDENTITY_TREE, CAPABILITY_QUESTION, CAPABILITIES_TREE, WEB_EMBEDDING_QUESTION, PLATFORM_TREE, loadDecisionSpace, nodeFileSystem, expandCapabilities, detectThemeFromText, planIntegration, parseOrigin, parseLoaderUrl, isEverfurLoaderHost, EVERFUR_LOADER_HOSTS, resolveCredential, PARTNER_KEY, runVerification, themePropFor, normalizeSurfaces, buildSupportBundle, chooseWidgetAuth, DIAGNOSTICS_PATH, diagnoseFailure, parseDiagnostics, buildDiagnosisDocument, resolveOffline, knownCodes, offlineSuggestions, loadErrorRegistryFromContract, loadErrorRegistry, resolveAfterRegistryMiss, buildExplanationDocument, nextActionFor, detectProject, BASE_URL_ENV_VAR, API_BASE_URL_BY_ENVIRONMENT, plannableCapabilities, blockedCapabilities, buildSdkExplanationDocument, buildContractTableExplanationDocument, SESSION_TOKEN, ALL_CAPABILITIES, BACKEND_LANGUAGE_QUESTION, SESSION_MINT_TREE } from './chunk-
|
|
2
|
+
import { ENVIRONMENTS, SURFACES, VERIFY_IDENTITY_MODES, fetchContract, NO_CONTRACT_CACHE, systemClock, fetchTransport, describeFailure, loadDecisionSpaceFromContract, uuidFromKey, resolveEndpoint, createApiClient, createContractProvider, nodeContractCache, CLI_VERSION, withPrefix, ephemeralCredential, isJsonObject, error_explanation_v1_schema_default, verification_v1_schema_default, diagnosis_v1_schema_default, plan_v1_schema_default, IDENTITY_QUESTION, IDENTITY_TREE, CAPABILITY_QUESTION, CAPABILITIES_TREE, WEB_EMBEDDING_QUESTION, PLATFORM_TREE, loadDecisionSpace, nodeFileSystem, expandCapabilities, detectThemeFromText, planIntegration, parseOrigin, parseLoaderUrl, isEverfurLoaderHost, EVERFUR_LOADER_HOSTS, resolveCredential, PARTNER_KEY, runVerification, themePropFor, normalizeSurfaces, buildSupportBundle, chooseWidgetAuth, DIAGNOSTICS_PATH, diagnoseFailure, parseDiagnostics, buildDiagnosisDocument, resolveOffline, knownCodes, offlineSuggestions, loadErrorRegistryFromContract, loadErrorRegistry, resolveAfterRegistryMiss, buildExplanationDocument, nextActionFor, detectProject, BASE_URL_ENV_VAR, API_BASE_URL_BY_ENVIRONMENT, plannableCapabilities, blockedCapabilities, buildSdkExplanationDocument, buildContractTableExplanationDocument, SESSION_TOKEN, ALL_CAPABILITIES, BACKEND_LANGUAGE_QUESTION, SESSION_MINT_TREE } from './chunk-KQICUK54.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
5
5
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { loadHostedMcpConfig, startHostedMcpServer } from './chunk-
|
|
3
|
-
import { startRemoteMcpServer, loadRemoteMcpConfig } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import { CLI_VERSION } from './chunk-
|
|
2
|
+
import { loadHostedMcpConfig, startHostedMcpServer } from './chunk-SJUEHHU6.js';
|
|
3
|
+
import { startRemoteMcpServer, loadRemoteMcpConfig } from './chunk-FC23PLWG.js';
|
|
4
|
+
import './chunk-XMIERMOW.js';
|
|
5
|
+
import { CLI_VERSION } from './chunk-KQICUK54.js';
|
|
6
6
|
|
|
7
7
|
// src/mcp/container-entry.ts
|
|
8
8
|
var HOSTED_MARKER = "MCP_PUBLIC_URL";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { loadHostedMcpConfig, startHostedMcpServer } from './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import { CLI_VERSION } from './chunk-
|
|
2
|
+
import { loadHostedMcpConfig, startHostedMcpServer } from './chunk-SJUEHHU6.js';
|
|
3
|
+
import './chunk-FC23PLWG.js';
|
|
4
|
+
import './chunk-XMIERMOW.js';
|
|
5
|
+
import { CLI_VERSION } from './chunk-KQICUK54.js';
|
|
6
6
|
|
|
7
7
|
// src/bin/everfur-mcp-hosted.ts
|
|
8
8
|
async function main() {
|
package/dist/everfur-mcp-http.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { startRemoteMcpServer, loadRemoteMcpConfig } from './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import { CLI_VERSION } from './chunk-
|
|
2
|
+
import { startRemoteMcpServer, loadRemoteMcpConfig } from './chunk-FC23PLWG.js';
|
|
3
|
+
import './chunk-XMIERMOW.js';
|
|
4
|
+
import { CLI_VERSION } from './chunk-KQICUK54.js';
|
|
5
5
|
|
|
6
6
|
// src/bin/everfur-mcp-http.ts
|
|
7
7
|
async function main() {
|
package/dist/everfur-mcp.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { runStdioServer } from './chunk-
|
|
3
|
-
import { CLI_VERSION } from './chunk-
|
|
2
|
+
import { runStdioServer } from './chunk-XMIERMOW.js';
|
|
3
|
+
import { CLI_VERSION } from './chunk-KQICUK54.js';
|
|
4
4
|
|
|
5
5
|
// src/bin/everfur-mcp.ts
|
|
6
6
|
if (process.argv.slice(2).includes("--version")) {
|
package/dist/everfur.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { runCli } from './chunk-
|
|
3
|
-
import { ExitCode, systemClock, fetchTransport, CLI_VERSION, nodeFileSystem, nodeContractCache } from './chunk-
|
|
2
|
+
import { runCli } from './chunk-4UB26D67.js';
|
|
3
|
+
import { ExitCode, systemClock, fetchTransport, CLI_VERSION, nodeFileSystem, nodeContractCache } from './chunk-KQICUK54.js';
|
|
4
4
|
|
|
5
5
|
// src/bin/everfur.ts
|
|
6
6
|
async function main() {
|
package/dist/index.d.ts
CHANGED
|
@@ -3340,6 +3340,6 @@ declare function parseSuppliedFacts(capabilitiesRaw: string | null, identityRaw:
|
|
|
3340
3340
|
* install, and a bundled artifact. `tests/unit/version.test.ts` asserts this constant equals
|
|
3341
3341
|
* the package.json version, so the two cannot drift.
|
|
3342
3342
|
*/
|
|
3343
|
-
declare const CLI_VERSION = "0.2.
|
|
3343
|
+
declare const CLI_VERSION = "0.2.1";
|
|
3344
3344
|
|
|
3345
3345
|
export { ADMIN_TOKEN, API_PREFIX, type ApiClient, type ApiFailure, type ApiResult, type ApiSuccess, BASE_URL_ENV_VAR, type BlockedCapability, type BlockedOutcome, CLI_VERSION, COMMANDS, CREDENTIAL_SPECS, type Capability, type CapabilityDiagnosis, type ClockPort, type Command, type CommandContext, type CommandOutcome, type ContractValidationOutcome, type Credential, type CredentialSpec, DEFAULT_TIMEOUT_MS, type DecisionSpace, type DecisionSpaceProvenance, type DecisionTree, type DetectedDependency, type DetectedTheme, type Diagnosis, EMPTY_REGISTRY, ERRORS_DOCUMENT_KEY, type ErrorRegistry, type ErrorRegistryEntry, ExitCode, type FileSystemPort, type FormatOptions, type FormattedOutput, type HttpMethod, type HttpRequest, type HttpResponse, IDEMPOTENT_METHODS, type IdentityMode, MISSING_FACT_NAMES, type MissingFact, type MissingFactName, type Outcome, PARTNER_KEY, PARTNER_SECRET_KEY, PLAN_DOCUMENT_KIND, PLAN_SCHEMA_VERSION, type PackageManager, type PlanDocument, type PlanInput, type PlanPrinciple, type PlanStep, type PlanWarning, type PositionalSpec, type ProjectDetection, type ProjectType, REASON_CODES, REDACTED, type ReasonCode, type RegistryLoad, type RequestSpec, type ResolvedCredential, type ResolvedEndpoint, type RunOptions, SCHEMAS, SESSION_TOKEN, type SandboxCreateStatus, type SandboxCreation, type SchemaValidation, type SchemaViolation, type SessionMintLanguage, type StepResult, THEME_TOKEN_ORDER, type TerminalOutcome, type ThemeConfidence, type ThemeDetection, type ThemeEvidence, type ThemeSource, type ThemeToken, TransportError, type TransportPort, type TreeOption, type TreeQuestion, type Verification, type VerifyStep, type WalkResult, apiUrl, buildDecisionSpace, buildDiagnosisDocument, buildExplanationDocument, buildSandboxDocument, buildVerificationDocument, clampTimeout, createApiClient, createMemoryFileSystem, createRecordingClock, describeFailure, detectProject, detectTheme, detectThemeFromText, digestOfProjection, digestsEqual, editDistance, entryFromRow, ephemeralCredential, errorCodeOf, failureDetails, failureOutcome, fetchTransport, formatOutcome, isCorrelatableRequestId, isIdempotent, isKnownReasonCode, loadDecisionSpace, loadErrorRegistry, matchCommand, missingFactsFor, nextActionFor as nextActionForErrorCode, nextActionFor$1 as nextActionForReason, nextActionsFor, nodeFileSystem, parseCapabilities, parseDiagnostics, parseIdentityMode, parseSessionMintLanguage, parseSuppliedFacts, planIntegration, projectSandboxCreate, renderDiagnosis, renderExplanation, renderPlan, renderSandboxCreate, renderVerification, resolveContractPath, resolveCredential, resolveEndpoint, runCli, runVerification, suggestCodes, systemClock, validateContractFile, validateContractPublicEnvelope, validateDiagnosisDocument, validateErrorExplanationDocument, validatePlanDocument, validateSandboxCreateDocument, validateVerificationDocument, verifyDigest, walkSingle, walkTree, withPrefix };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export { COMMANDS, buildSandboxDocument, buildVerificationDocument, failureOutcome, formatOutcome, matchCommand, nextActionsFor, parseCapabilities, parseIdentityMode, parseSessionMintLanguage, parseSuppliedFacts, projectSandboxCreate, renderDiagnosis, renderPlan, renderSandboxCreate, renderVerification, runCli } from './chunk-
|
|
3
|
-
export { ADMIN_TOKEN, API_PREFIX, BASE_URL_ENV_VAR, CLI_VERSION, CREDENTIAL_SPECS, DEFAULT_TIMEOUT_MS, EMPTY_REGISTRY, ERRORS_DOCUMENT_KEY, ExitCode, IDEMPOTENT_METHODS, MISSING_FACT_NAMES, PARTNER_KEY, PARTNER_SECRET_KEY, PLAN_DOCUMENT_KIND, PLAN_SCHEMA_VERSION, REASON_CODES, REDACTED, SCHEMAS, SESSION_TOKEN, THEME_TOKEN_ORDER, TransportError, apiUrl, buildDecisionSpace, buildDiagnosisDocument, buildExplanationDocument, clampTimeout, createApiClient, createMemoryFileSystem, createRecordingClock, describeFailure, detectProject, detectTheme, detectThemeFromText, digestOfProjection, digestsEqual, editDistance, entryFromRow, ephemeralCredential, errorCodeOf, failureDetails, fetchTransport, isCorrelatableRequestId, isIdempotent, isKnownReasonCode, loadDecisionSpace, loadErrorRegistry, missingFactsFor, nextActionFor2 as nextActionForErrorCode, nextActionFor as nextActionForReason, nodeFileSystem, parseDiagnostics, planIntegration, renderExplanation, resolveContractPath, resolveCredential, resolveEndpoint, runVerification, suggestCodes, systemClock, validateContractFile, validateContractPublicEnvelope, validateDiagnosisDocument, validateErrorExplanationDocument, validatePlanDocument, validateSandboxCreateDocument, validateVerificationDocument, verifyDigest, walkSingle, walkTree, withPrefix } from './chunk-
|
|
2
|
+
export { COMMANDS, buildSandboxDocument, buildVerificationDocument, failureOutcome, formatOutcome, matchCommand, nextActionsFor, parseCapabilities, parseIdentityMode, parseSessionMintLanguage, parseSuppliedFacts, projectSandboxCreate, renderDiagnosis, renderPlan, renderSandboxCreate, renderVerification, runCli } from './chunk-4UB26D67.js';
|
|
3
|
+
export { ADMIN_TOKEN, API_PREFIX, BASE_URL_ENV_VAR, CLI_VERSION, CREDENTIAL_SPECS, DEFAULT_TIMEOUT_MS, EMPTY_REGISTRY, ERRORS_DOCUMENT_KEY, ExitCode, IDEMPOTENT_METHODS, MISSING_FACT_NAMES, PARTNER_KEY, PARTNER_SECRET_KEY, PLAN_DOCUMENT_KIND, PLAN_SCHEMA_VERSION, REASON_CODES, REDACTED, SCHEMAS, SESSION_TOKEN, THEME_TOKEN_ORDER, TransportError, apiUrl, buildDecisionSpace, buildDiagnosisDocument, buildExplanationDocument, clampTimeout, createApiClient, createMemoryFileSystem, createRecordingClock, describeFailure, detectProject, detectTheme, detectThemeFromText, digestOfProjection, digestsEqual, editDistance, entryFromRow, ephemeralCredential, errorCodeOf, failureDetails, fetchTransport, isCorrelatableRequestId, isIdempotent, isKnownReasonCode, loadDecisionSpace, loadErrorRegistry, missingFactsFor, nextActionFor2 as nextActionForErrorCode, nextActionFor as nextActionForReason, nodeFileSystem, parseDiagnostics, planIntegration, renderExplanation, resolveContractPath, resolveCredential, resolveEndpoint, runVerification, suggestCodes, systemClock, validateContractFile, validateContractPublicEnvelope, validateDiagnosisDocument, validateErrorExplanationDocument, validatePlanDocument, validateSandboxCreateDocument, validateVerificationDocument, verifyDigest, walkSingle, walkTree, withPrefix } from './chunk-KQICUK54.js';
|