@dxos/plugin-client 0.9.1-main.c7dcc2e112 → 0.9.1-staging.ee54ba693a
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/dist/lib/neutral/{AccountContainer-LIMGLO2Y.mjs → AccountContainer-7SF53UON.mjs} +15 -11
- package/dist/lib/neutral/AccountContainer-7SF53UON.mjs.map +7 -0
- package/dist/lib/neutral/ClientPlugin.node.mjs +2 -2
- package/dist/lib/neutral/ClientPlugin.node.mjs.map +3 -3
- package/dist/lib/neutral/{DevicesContainer-X26OGLFK.mjs → DevicesContainer-PRWIN36N.mjs} +25 -16
- package/dist/lib/neutral/DevicesContainer-PRWIN36N.mjs.map +7 -0
- package/dist/lib/neutral/{InvitationsContainer-OBBCJ7CJ.mjs → InvitationsContainer-BI5RAWET.mjs} +42 -31
- package/dist/lib/neutral/InvitationsContainer-BI5RAWET.mjs.map +7 -0
- package/dist/lib/neutral/{ProfileContainer-FGS2MVWA.mjs → ProfileContainer-YEAYOTX5.mjs} +21 -20
- package/dist/lib/neutral/ProfileContainer-YEAYOTX5.mjs.map +7 -0
- package/dist/lib/neutral/{RecoveryCredentialsContainer-SL4LYHBE.mjs → RecoveryCredentialsContainer-6BZ2IWX7.mjs} +22 -13
- package/dist/lib/neutral/RecoveryCredentialsContainer-6BZ2IWX7.mjs.map +7 -0
- package/dist/lib/neutral/UsageContainer-2DWCVVE4.mjs +241 -0
- package/dist/lib/neutral/UsageContainer-2DWCVVE4.mjs.map +7 -0
- package/dist/lib/neutral/account-cache-YVQKLNV2.mjs +16 -0
- package/dist/lib/neutral/account-cache-YVQKLNV2.mjs.map +7 -0
- package/dist/lib/neutral/{app-graph-builder-FTXJNX37.mjs → app-graph-builder-RVXTD6OE.mjs} +3 -3
- package/dist/lib/neutral/app-graph-builder-RVXTD6OE.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +4 -4
- package/dist/lib/neutral/capabilities/node.mjs +3 -3
- package/dist/lib/neutral/chunk-A7WDDIWY.mjs +162 -0
- package/dist/lib/neutral/chunk-A7WDDIWY.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-JEF2FQGB.mjs → chunk-JY35S2CN.mjs} +2 -2
- package/dist/lib/neutral/{chunk-JEF2FQGB.mjs.map → chunk-JY35S2CN.mjs.map} +1 -1
- package/dist/lib/neutral/chunk-ZFABGG2E.mjs +8 -0
- package/dist/lib/neutral/containers/index.mjs +6 -6
- package/dist/lib/neutral/{create-agent-U567RM7Z.mjs → create-agent-6UKJMZS5.mjs} +2 -2
- package/dist/lib/neutral/{create-identity-IKN2FJ5B.mjs → create-identity-ULCRB3YH.mjs} +2 -2
- package/dist/lib/neutral/{create-passkey-JAD3ACY7.mjs → create-passkey-I7VDS3AC.mjs} +2 -2
- package/dist/lib/neutral/{create-recovery-code-JZYXR4BY.mjs → create-recovery-code-DH2B6EGP.mjs} +2 -2
- package/dist/lib/neutral/index.mjs +4 -2
- package/dist/lib/neutral/{layer-specs-VQCJLV33.mjs → layer-specs-YI7BVWKZ.mjs} +6 -8
- package/dist/lib/neutral/layer-specs-YI7BVWKZ.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/{navigation-handler-MPJAVHWY.mjs → navigation-handler-MQ6MZXLX.mjs} +2 -2
- package/dist/lib/neutral/{open-usage-24I7RAFL.mjs → open-usage-OJVTPGOY.mjs} +2 -2
- package/dist/lib/neutral/operations/index.mjs +1 -1
- package/dist/lib/neutral/plugin.mjs +1 -1
- package/dist/lib/neutral/{redeem-passkey-4DR7GPMU.mjs → redeem-passkey-TYP4XLHO.mjs} +2 -2
- package/dist/lib/neutral/{redeem-token-N5MBQG3I.mjs → redeem-token-2J33R3PV.mjs} +2 -2
- package/dist/lib/neutral/{share-identity-YJIFDIPJ.mjs → share-identity-TOROBLWL.mjs} +2 -2
- package/dist/lib/neutral/testing/index.mjs.map +2 -2
- package/dist/lib/neutral/types/index.mjs +3 -1
- package/dist/types/src/capabilities/account-cache.d.ts +1 -31
- package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -2
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/client.d.ts +1 -2
- package/dist/types/src/capabilities/client.d.ts.map +1 -1
- package/dist/types/src/capabilities/hub-http-client.d.ts +1 -2
- package/dist/types/src/capabilities/hub-http-client.d.ts.map +1 -1
- package/dist/types/src/capabilities/layer-specs.d.ts +1 -2
- package/dist/types/src/capabilities/layer-specs.d.ts.map +1 -1
- package/dist/types/src/capabilities/migrations.d.ts +1 -1
- package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts +1 -2
- package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-context.d.ts +1 -6
- package/dist/types/src/capabilities/react-context.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
- package/dist/types/src/containers/AccountContainer/AccountContainer.d.ts.map +1 -1
- package/dist/types/src/containers/AccountContainer/AccountContainer.stories.d.ts +14 -0
- package/dist/types/src/containers/AccountContainer/AccountContainer.stories.d.ts.map +1 -0
- package/dist/types/src/containers/DevicesContainer/DevicesContainer.d.ts.map +1 -1
- package/dist/types/src/containers/InvitationsContainer/InvitationsContainer.d.ts.map +1 -1
- package/dist/types/src/containers/InvitationsContainer/InvitationsContainer.stories.d.ts +14 -0
- package/dist/types/src/containers/InvitationsContainer/InvitationsContainer.stories.d.ts.map +1 -0
- package/dist/types/src/containers/ProfileContainer/ProfileContainer.d.ts.map +1 -1
- package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.d.ts.map +1 -1
- package/dist/types/src/containers/UsageContainer/UsageContainer.d.ts.map +1 -1
- package/dist/types/src/containers/UsageContainer/UsageView.d.ts +16 -7
- package/dist/types/src/containers/UsageContainer/UsageView.d.ts.map +1 -1
- package/dist/types/src/containers/UsageContainer/UsageView.stories.d.ts +2 -0
- package/dist/types/src/containers/UsageContainer/UsageView.stories.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +2 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -0
- package/dist/types/src/{state/use-hub-http.d.ts → hooks/useHubClient.d.ts} +1 -1
- package/dist/types/src/hooks/useHubClient.d.ts.map +1 -0
- package/dist/types/src/meta.d.ts +4 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/testing/initializeIdentity.d.ts.map +1 -1
- package/dist/types/src/{state → types}/account-cache.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +1 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +46 -45
- package/src/capabilities/account-cache.ts +1 -3
- package/src/capabilities/app-graph-builder.ts +80 -79
- package/src/capabilities/layer-specs.ts +4 -6
- package/src/commands/account/login/login.ts +2 -2
- package/src/containers/AccountContainer/AccountContainer.stories.tsx +46 -0
- package/src/containers/AccountContainer/AccountContainer.tsx +66 -62
- package/src/containers/DevicesContainer/DevicesContainer.tsx +69 -54
- package/src/containers/InvitationsContainer/InvitationsContainer.stories.tsx +46 -0
- package/src/containers/InvitationsContainer/InvitationsContainer.tsx +64 -61
- package/src/containers/ProfileContainer/ProfileContainer.tsx +37 -27
- package/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.tsx +50 -41
- package/src/containers/UsageContainer/UsageContainer.tsx +11 -10
- package/src/containers/UsageContainer/UsageView.stories.tsx +13 -0
- package/src/containers/UsageContainer/UsageView.tsx +182 -150
- package/src/hooks/index.ts +5 -0
- package/src/testing/initializeIdentity.ts +1 -0
- package/src/types/capabilities.ts +1 -1
- package/src/types/index.ts +1 -0
- package/dist/lib/neutral/AccountContainer-LIMGLO2Y.mjs.map +0 -7
- package/dist/lib/neutral/DevicesContainer-X26OGLFK.mjs.map +0 -7
- package/dist/lib/neutral/InvitationsContainer-OBBCJ7CJ.mjs.map +0 -7
- package/dist/lib/neutral/ProfileContainer-FGS2MVWA.mjs.map +0 -7
- package/dist/lib/neutral/RecoveryCredentialsContainer-SL4LYHBE.mjs.map +0 -7
- package/dist/lib/neutral/UsageContainer-HBPMLIK7.mjs +0 -226
- package/dist/lib/neutral/UsageContainer-HBPMLIK7.mjs.map +0 -7
- package/dist/lib/neutral/account-cache-4EKGEUJI.mjs +0 -43
- package/dist/lib/neutral/account-cache-4EKGEUJI.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-builder-FTXJNX37.mjs.map +0 -7
- package/dist/lib/neutral/chunk-54MDDWCV.mjs +0 -8
- package/dist/lib/neutral/chunk-DA3LZQSD.mjs +0 -136
- package/dist/lib/neutral/chunk-DA3LZQSD.mjs.map +0 -7
- package/dist/lib/neutral/layer-specs-VQCJLV33.mjs.map +0 -7
- package/dist/types/src/state/use-hub-http.d.ts.map +0 -1
- /package/dist/lib/neutral/{chunk-54MDDWCV.mjs.map → chunk-ZFABGG2E.mjs.map} +0 -0
- /package/dist/lib/neutral/{create-agent-U567RM7Z.mjs.map → create-agent-6UKJMZS5.mjs.map} +0 -0
- /package/dist/lib/neutral/{create-identity-IKN2FJ5B.mjs.map → create-identity-ULCRB3YH.mjs.map} +0 -0
- /package/dist/lib/neutral/{create-passkey-JAD3ACY7.mjs.map → create-passkey-I7VDS3AC.mjs.map} +0 -0
- /package/dist/lib/neutral/{create-recovery-code-JZYXR4BY.mjs.map → create-recovery-code-DH2B6EGP.mjs.map} +0 -0
- /package/dist/lib/neutral/{navigation-handler-MPJAVHWY.mjs.map → navigation-handler-MQ6MZXLX.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-usage-24I7RAFL.mjs.map → open-usage-OJVTPGOY.mjs.map} +0 -0
- /package/dist/lib/neutral/{redeem-passkey-4DR7GPMU.mjs.map → redeem-passkey-TYP4XLHO.mjs.map} +0 -0
- /package/dist/lib/neutral/{redeem-token-N5MBQG3I.mjs.map → redeem-token-2J33R3PV.mjs.map} +0 -0
- /package/dist/lib/neutral/{share-identity-YJIFDIPJ.mjs.map → share-identity-TOROBLWL.mjs.map} +0 -0
- /package/dist/types/src/{state → types}/account-cache.d.ts +0 -0
- /package/src/{state/use-hub-http.ts → hooks/useHubClient.ts} +0 -0
- /package/src/{state → types}/account-cache.ts +0 -0
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useHubHttpClient
|
|
3
|
-
} from "./chunk-JEF2FQGB.mjs";
|
|
4
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
5
|
-
|
|
6
|
-
// src/containers/UsageContainer/UsageContainer.tsx
|
|
7
|
-
import React2, { useCallback, useState as useState2 } from "react";
|
|
8
|
-
import { Context } from "@dxos/context";
|
|
9
|
-
import { log } from "@dxos/log";
|
|
10
|
-
import { useAsyncEffect } from "@dxos/react-ui";
|
|
11
|
-
|
|
12
|
-
// src/containers/UsageContainer/UsageView.tsx
|
|
13
|
-
import React, { useMemo, useState } from "react";
|
|
14
|
-
import { IconButton, Message, useTranslation } from "@dxos/react-ui";
|
|
15
|
-
import { Settings } from "@dxos/react-ui-form";
|
|
16
|
-
import { JsonHighlighter } from "@dxos/react-ui-syntax-highlighter";
|
|
17
|
-
import { meta } from "#meta";
|
|
18
|
-
var usageMatchesLimit = (item, limit) => {
|
|
19
|
-
if (item.eventType !== limit.eventType || item.valueKey !== limit.valueKey) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
return limit.subtypePattern.every((pattern, index) => pattern === "*" || pattern === item.subtypePattern[index]);
|
|
23
|
-
};
|
|
24
|
-
var sumUsageForLimit = (usage, limit) => usage.reduce((total, item) => usageMatchesLimit(item, limit) ? total + item.amount : total, 0);
|
|
25
|
-
var formatValueKey = (valueKey) => valueKey.replace(/([A-Z])/g, " $1").trim().toLowerCase();
|
|
26
|
-
var formatLimitLabel = (limit, t) => {
|
|
27
|
-
const metric = formatValueKey(limit.valueKey);
|
|
28
|
-
const subtype = limit.subtypePattern.filter((segment) => segment && segment !== "*").join("/");
|
|
29
|
-
if (limit.eventType === "ai") {
|
|
30
|
-
return `${subtype || t("usage-all-models.label")} \xB7 ${metric}`;
|
|
31
|
-
}
|
|
32
|
-
return `${subtype ? `${limit.eventType}/${subtype}` : limit.eventType} \xB7 ${metric}`;
|
|
33
|
-
};
|
|
34
|
-
var formatAmount = (amount) => amount.toLocaleString();
|
|
35
|
-
var SECONDS_PER_HOUR = 60 * 60;
|
|
36
|
-
var formatWindow = (windowHours, t) => {
|
|
37
|
-
if (windowHours % (24 * 30) === 0) {
|
|
38
|
-
return t("usage-window-months.label", {
|
|
39
|
-
count: windowHours / (24 * 30)
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
if (windowHours % 24 === 0) {
|
|
43
|
-
return t("usage-window-days.label", {
|
|
44
|
-
count: windowHours / 24
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
return t("usage-window-hours.label", {
|
|
48
|
-
count: windowHours
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
var UsageRow = ({ label, caption, percent, value }) => /* @__PURE__ */ React.createElement("div", {
|
|
52
|
-
className: "flex items-center gap-trim-lg py-trim-sm"
|
|
53
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
54
|
-
className: "flex flex-col min-w-0 w-1/3 shrink-0"
|
|
55
|
-
}, /* @__PURE__ */ React.createElement("span", {
|
|
56
|
-
className: "truncate text-base-fg"
|
|
57
|
-
}, label), caption && /* @__PURE__ */ React.createElement("span", {
|
|
58
|
-
className: "text-sm text-description"
|
|
59
|
-
}, caption)), percent === void 0 ? /* @__PURE__ */ React.createElement("div", {
|
|
60
|
-
className: "flex-1"
|
|
61
|
-
}) : /* @__PURE__ */ React.createElement("div", {
|
|
62
|
-
role: "progressbar",
|
|
63
|
-
"aria-label": label,
|
|
64
|
-
"aria-valuenow": percent,
|
|
65
|
-
"aria-valuemin": 0,
|
|
66
|
-
"aria-valuemax": 100,
|
|
67
|
-
className: "h-1.5 flex-1 rounded-full bg-separator overflow-hidden"
|
|
68
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
69
|
-
className: "h-full rounded-full bg-primary-500 transition-[width] duration-500",
|
|
70
|
-
style: {
|
|
71
|
-
width: `${percent}%`
|
|
72
|
-
}
|
|
73
|
-
})), /* @__PURE__ */ React.createElement("span", {
|
|
74
|
-
className: "shrink-0 w-24 text-end text-sm text-description tabular-nums"
|
|
75
|
-
}, value));
|
|
76
|
-
var UsageSkeleton = () => /* @__PURE__ */ React.createElement("div", {
|
|
77
|
-
className: "flex flex-col"
|
|
78
|
-
}, Array.from({
|
|
79
|
-
length: 3
|
|
80
|
-
}).map((_, index) => /* @__PURE__ */ React.createElement("div", {
|
|
81
|
-
key: index,
|
|
82
|
-
className: "flex items-center gap-trim-lg py-trim-sm"
|
|
83
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
84
|
-
className: "flex flex-col gap-1 w-1/3 shrink-0"
|
|
85
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
86
|
-
className: "h-4 w-24 rounded bg-separator animate-pulse"
|
|
87
|
-
}), /* @__PURE__ */ React.createElement("div", {
|
|
88
|
-
className: "h-3 w-32 rounded bg-separator animate-pulse"
|
|
89
|
-
})), /* @__PURE__ */ React.createElement("div", {
|
|
90
|
-
className: "h-1.5 flex-1 rounded-full bg-separator animate-pulse"
|
|
91
|
-
}), /* @__PURE__ */ React.createElement("div", {
|
|
92
|
-
className: "h-3 w-12 shrink-0 rounded bg-separator animate-pulse"
|
|
93
|
-
}))));
|
|
94
|
-
var UsageView = ({ state, data, lastUpdated, onRefresh }) => {
|
|
95
|
-
const { t } = useTranslation(meta.profile.key);
|
|
96
|
-
const [rawExpanded, setRawExpanded] = useState(false);
|
|
97
|
-
const limitRows = useMemo(() => {
|
|
98
|
-
if (!data) {
|
|
99
|
-
return [];
|
|
100
|
-
}
|
|
101
|
-
return data.limits.map((limit) => {
|
|
102
|
-
const used = sumUsageForLimit(data.usage, limit);
|
|
103
|
-
const label = formatLimitLabel(limit, t);
|
|
104
|
-
const windowHours = limit.windowDuration / SECONDS_PER_HOUR;
|
|
105
|
-
const window = formatWindow(windowHours, t);
|
|
106
|
-
const key = `${limit.eventType}/${limit.subtypePattern.join(",")}/${limit.valueKey}/${limit.windowDuration}/${limit.limit ?? "unlimited"}`;
|
|
107
|
-
if (limit.limit === null) {
|
|
108
|
-
return {
|
|
109
|
-
key,
|
|
110
|
-
label,
|
|
111
|
-
caption: t("usage-unlimited.description", {
|
|
112
|
-
used: formatAmount(used),
|
|
113
|
-
window
|
|
114
|
-
}),
|
|
115
|
-
percent: void 0,
|
|
116
|
-
value: t("usage-unlimited.label"),
|
|
117
|
-
windowHours
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
const percent = limit.limit > 0 ? Math.min(100, Math.round(used / limit.limit * 100)) : used > 0 ? 100 : 0;
|
|
121
|
-
return {
|
|
122
|
-
key,
|
|
123
|
-
label,
|
|
124
|
-
caption: t("usage-limit.description", {
|
|
125
|
-
used: formatAmount(used),
|
|
126
|
-
limit: formatAmount(limit.limit),
|
|
127
|
-
window
|
|
128
|
-
}),
|
|
129
|
-
percent,
|
|
130
|
-
value: t("usage-percent-used.label", {
|
|
131
|
-
percent
|
|
132
|
-
}),
|
|
133
|
-
windowHours
|
|
134
|
-
};
|
|
135
|
-
}).sort((a, b) => a.windowHours - b.windowHours);
|
|
136
|
-
}, [
|
|
137
|
-
data,
|
|
138
|
-
t
|
|
139
|
-
]);
|
|
140
|
-
return /* @__PURE__ */ React.createElement(Settings.Viewport, null, /* @__PURE__ */ React.createElement(Settings.Section, {
|
|
141
|
-
title: t("usage-section.title"),
|
|
142
|
-
description: t("usage-section.description")
|
|
143
|
-
}, state === "unavailable" ? /* @__PURE__ */ React.createElement(Message.Root, {
|
|
144
|
-
valence: "warning"
|
|
145
|
-
}, /* @__PURE__ */ React.createElement(Message.Title, {
|
|
146
|
-
icon: "ph--cloud-slash--duotone"
|
|
147
|
-
}, t("usage-unavailable.title")), /* @__PURE__ */ React.createElement(Message.Content, null, t("usage-unavailable.description"))) : state === "loading" ? /* @__PURE__ */ React.createElement(UsageSkeleton, null) : state === "error" ? /* @__PURE__ */ React.createElement(Message.Root, {
|
|
148
|
-
valence: "error"
|
|
149
|
-
}, /* @__PURE__ */ React.createElement(Message.Title, {
|
|
150
|
-
icon: "ph--cloud-x--duotone"
|
|
151
|
-
}, t("usage-offline.title")), /* @__PURE__ */ React.createElement(Message.Content, null, t("usage-offline.description"))) : limitRows.length === 0 ? /* @__PURE__ */ React.createElement(Message.Root, {
|
|
152
|
-
valence: "neutral"
|
|
153
|
-
}, /* @__PURE__ */ React.createElement(Message.Title, {
|
|
154
|
-
icon: "ph--chart-bar--duotone"
|
|
155
|
-
}, t("usage-empty.title")), /* @__PURE__ */ React.createElement(Message.Content, null, t("usage-empty.description"))) : /* @__PURE__ */ React.createElement("div", {
|
|
156
|
-
className: "flex flex-col"
|
|
157
|
-
}, limitRows.map((row) => /* @__PURE__ */ React.createElement(UsageRow, {
|
|
158
|
-
key: row.key,
|
|
159
|
-
label: row.label,
|
|
160
|
-
caption: row.caption,
|
|
161
|
-
percent: row.percent,
|
|
162
|
-
value: row.value
|
|
163
|
-
})), /* @__PURE__ */ React.createElement("div", {
|
|
164
|
-
className: "flex items-center gap-1 pt-trim-md text-sm text-description"
|
|
165
|
-
}, lastUpdated !== void 0 && /* @__PURE__ */ React.createElement("span", null, t("usage-last-updated.label", {
|
|
166
|
-
time: new Date(lastUpdated).toLocaleTimeString()
|
|
167
|
-
})), onRefresh && /* @__PURE__ */ React.createElement(IconButton, {
|
|
168
|
-
iconOnly: true,
|
|
169
|
-
variant: "ghost",
|
|
170
|
-
icon: "ph--arrow-clockwise--regular",
|
|
171
|
-
label: t("usage-refresh.label"),
|
|
172
|
-
onClick: onRefresh
|
|
173
|
-
}))), state === "ready" && data && /* @__PURE__ */ React.createElement("div", {
|
|
174
|
-
className: "flex flex-col pt-trim-md"
|
|
175
|
-
}, /* @__PURE__ */ React.createElement(IconButton, {
|
|
176
|
-
variant: "ghost",
|
|
177
|
-
icon: "ph--caret-right--regular",
|
|
178
|
-
iconClassNames: rawExpanded ? "transition-transform rotate-90" : "transition-transform",
|
|
179
|
-
label: t("usage-raw-json.label"),
|
|
180
|
-
onClick: () => setRawExpanded((value) => !value),
|
|
181
|
-
classNames: "self-start"
|
|
182
|
-
}), rawExpanded && /* @__PURE__ */ React.createElement(JsonHighlighter, {
|
|
183
|
-
data,
|
|
184
|
-
classNames: "mt-trim-sm text-xs overflow-auto"
|
|
185
|
-
}))));
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
// src/containers/UsageContainer/UsageContainer.tsx
|
|
189
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-client/src/containers/UsageContainer/UsageContainer.tsx";
|
|
190
|
-
var UsageContainer = () => {
|
|
191
|
-
const hubHttp = useHubHttpClient();
|
|
192
|
-
const [state, setState] = useState2("loading");
|
|
193
|
-
const [data, setData] = useState2();
|
|
194
|
-
const [lastUpdated, setLastUpdated] = useState2();
|
|
195
|
-
const [refreshCount, setRefreshCount] = useState2(0);
|
|
196
|
-
useAsyncEffect(async () => {
|
|
197
|
-
if (!hubHttp) {
|
|
198
|
-
setState("unavailable");
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
setState((previous) => previous === "ready" ? previous : "loading");
|
|
202
|
-
try {
|
|
203
|
-
const result = await hubHttp.getProfileUsage(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 27 }));
|
|
204
|
-
setData(result);
|
|
205
|
-
setLastUpdated(Date.now());
|
|
206
|
-
setState("ready");
|
|
207
|
-
} catch (err) {
|
|
208
|
-
log.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 32, S: void 0 });
|
|
209
|
-
setState("error");
|
|
210
|
-
}
|
|
211
|
-
}, [
|
|
212
|
-
hubHttp,
|
|
213
|
-
refreshCount
|
|
214
|
-
]);
|
|
215
|
-
const handleRefresh = useCallback(() => setRefreshCount((count) => count + 1), []);
|
|
216
|
-
return /* @__PURE__ */ React2.createElement(UsageView, {
|
|
217
|
-
state,
|
|
218
|
-
data,
|
|
219
|
-
lastUpdated,
|
|
220
|
-
onRefresh: handleRefresh
|
|
221
|
-
});
|
|
222
|
-
};
|
|
223
|
-
export {
|
|
224
|
-
UsageContainer as default
|
|
225
|
-
};
|
|
226
|
-
//# sourceMappingURL=UsageContainer-HBPMLIK7.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/UsageContainer/UsageContainer.tsx", "../../../src/containers/UsageContainer/UsageView.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { Context } from '@dxos/context';\nimport { log } from '@dxos/log';\nimport { type GetProfileUsageResponse } from '@dxos/protocols';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { useHubHttpClient } from '../../state/use-hub-http';\nimport { UsageView, type UsageViewState } from './UsageView';\n\n/**\n * Fetches rolling-window profile usage from the hub service and renders it.\n * Connected wrapper around the presentational {@link UsageView}.\n */\nexport const UsageContainer = () => {\n const hubHttp = useHubHttpClient();\n const [state, setState] = useState<UsageViewState>('loading');\n const [data, setData] = useState<GetProfileUsageResponse | undefined>();\n const [lastUpdated, setLastUpdated] = useState<number | undefined>();\n const [refreshCount, setRefreshCount] = useState(0);\n\n useAsyncEffect(async () => {\n if (!hubHttp) {\n setState('unavailable');\n return;\n }\n // Keep prior data visible while refetching; only show the skeleton on first load.\n setState((previous) => (previous === 'ready' ? previous : 'loading'));\n try {\n const result = await hubHttp.getProfileUsage(new Context());\n setData(result);\n setLastUpdated(Date.now());\n setState('ready');\n } catch (err) {\n log.catch(err);\n setState('error');\n }\n }, [hubHttp, refreshCount]);\n\n const handleRefresh = useCallback(() => setRefreshCount((count) => count + 1), []);\n\n return <UsageView state={state} data={data} lastUpdated={lastUpdated} onRefresh={handleRefresh} />;\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport React, { useMemo, useState } from 'react';\n\nimport { type GetProfileUsageResponse, type MeteringLimit, type MeteringUsageItem } from '@dxos/protocols';\nimport { IconButton, Message, useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\n\nimport { meta } from '#meta';\n\nexport type UsageViewState = 'loading' | 'ready' | 'error' | 'unavailable';\n\nexport type UsageViewProps = {\n /** Current fetch state; drives which content is shown. */\n state: UsageViewState;\n /** Profile usage payload; required when `state` is `'ready'`. */\n data?: GetProfileUsageResponse;\n /** Epoch milliseconds of the last successful fetch. */\n lastUpdated?: number;\n /** Invoked when the user requests a refresh. */\n onRefresh?: () => void;\n};\n\ntype TFunction = (key: string, options?: Record<string, unknown>) => string;\n\n/**\n * Whether a usage row falls under a limit. Subtype segments are matched positionally against\n * `subtypePattern` where `*` matches any segment.\n */\nconst usageMatchesLimit = (item: MeteringUsageItem, limit: MeteringLimit): boolean => {\n if (item.eventType !== limit.eventType || item.valueKey !== limit.valueKey) {\n return false;\n }\n return limit.subtypePattern.every((pattern, index) => pattern === '*' || pattern === item.subtypePattern[index]);\n};\n\n/** Sum every usage item that falls under the limit. */\nconst sumUsageForLimit = (usage: GetProfileUsageResponse['usage'], limit: MeteringLimit): number =>\n usage.reduce((total, item) => (usageMatchesLimit(item, limit) ? total + item.amount : total), 0);\n\n/** Humanize a camelCase value key, e.g. `outputTokens` → `output tokens`. */\nconst formatValueKey = (valueKey: string): string =>\n valueKey\n .replace(/([A-Z])/g, ' $1')\n .trim()\n .toLowerCase();\n\n/**\n * Human label for a limit: a scope followed by the value key, e.g.\n * `{ eventType: 'ai', valueKey: 'outputTokens', subtypePattern: ['*'] }` → `All models · output tokens`,\n * `{ eventType: 'ai', valueKey: 'inputTokens', subtypePattern: ['claude-opus-4'] }` → `claude-opus-4 · input tokens`.\n */\nconst formatLimitLabel = (limit: MeteringLimit, t: TFunction): string => {\n const metric = formatValueKey(limit.valueKey);\n const subtype = limit.subtypePattern.filter((segment) => segment && segment !== '*').join('/');\n if (limit.eventType === 'ai') {\n return `${subtype || t('usage-all-models.label')} · ${metric}`;\n }\n return `${subtype ? `${limit.eventType}/${subtype}` : limit.eventType} · ${metric}`;\n};\n\nconst formatAmount = (amount: number): string => amount.toLocaleString();\n\nconst SECONDS_PER_HOUR = 60 * 60;\n\n/** Render `windowHours` as a localized \"N months / days / hours\" string. */\nconst formatWindow = (windowHours: number, t: TFunction): string => {\n if (windowHours % (24 * 30) === 0) {\n return t('usage-window-months.label', { count: windowHours / (24 * 30) });\n }\n if (windowHours % 24 === 0) {\n return t('usage-window-days.label', { count: windowHours / 24 });\n }\n return t('usage-window-hours.label', { count: windowHours });\n};\n\n/**\n * A single usage row: label + caption on the left, a thin meter, and a value on the right.\n * Omitting `percent` (an unlimited limit) renders no meter.\n */\nconst UsageRow = ({\n label,\n caption,\n percent,\n value,\n}: {\n label: string;\n caption?: string;\n percent?: number;\n value: string;\n}) => (\n <div className='flex items-center gap-trim-lg py-trim-sm'>\n <div className='flex flex-col min-w-0 w-1/3 shrink-0'>\n <span className='truncate text-base-fg'>{label}</span>\n {caption && <span className='text-sm text-description'>{caption}</span>}\n </div>\n {percent === undefined ? (\n <div className='flex-1' />\n ) : (\n <div\n role='progressbar'\n aria-label={label}\n aria-valuenow={percent}\n aria-valuemin={0}\n aria-valuemax={100}\n className='h-1.5 flex-1 rounded-full bg-separator overflow-hidden'\n >\n <div\n className='h-full rounded-full bg-primary-500 transition-[width] duration-500'\n style={{ width: `${percent}%` }}\n />\n </div>\n )}\n <span className='shrink-0 w-24 text-end text-sm text-description tabular-nums'>{value}</span>\n </div>\n);\n\n/** Placeholder rows shown while the first fetch is in flight. */\nconst UsageSkeleton = () => (\n <div className='flex flex-col'>\n {Array.from({ length: 3 }).map((_, index) => (\n <div key={index} className='flex items-center gap-trim-lg py-trim-sm'>\n <div className='flex flex-col gap-1 w-1/3 shrink-0'>\n <div className='h-4 w-24 rounded bg-separator animate-pulse' />\n <div className='h-3 w-32 rounded bg-separator animate-pulse' />\n </div>\n <div className='h-1.5 flex-1 rounded-full bg-separator animate-pulse' />\n <div className='h-3 w-12 shrink-0 rounded bg-separator animate-pulse' />\n </div>\n ))}\n </div>\n);\n\n/**\n * Presentational view of profile usage: renders loading/error/unavailable/empty states, or one row\n * per limit with a usage meter, plus a collapsible raw-response viewer. Pure — all data via props.\n */\nexport const UsageView = ({ state, data, lastUpdated, onRefresh }: UsageViewProps) => {\n const { t } = useTranslation(meta.profile.key);\n const [rawExpanded, setRawExpanded] = useState(false);\n\n // One display row per limit, shorter windows first. A `null` amount means unlimited (rendered without a meter).\n const limitRows = useMemo(() => {\n if (!data) {\n return [];\n }\n return data.limits\n .map((limit) => {\n const used = sumUsageForLimit(data.usage, limit);\n const label = formatLimitLabel(limit, t);\n const windowHours = limit.windowDuration / SECONDS_PER_HOUR;\n const window = formatWindow(windowHours, t);\n const key = `${limit.eventType}/${limit.subtypePattern.join(',')}/${limit.valueKey}/${limit.windowDuration}/${limit.limit ?? 'unlimited'}`;\n if (limit.limit === null) {\n return {\n key,\n label,\n caption: t('usage-unlimited.description', { used: formatAmount(used), window }),\n percent: undefined,\n value: t('usage-unlimited.label'),\n windowHours,\n };\n }\n const percent = limit.limit > 0 ? Math.min(100, Math.round((used / limit.limit) * 100)) : used > 0 ? 100 : 0;\n return {\n key,\n label,\n caption: t('usage-limit.description', { used: formatAmount(used), limit: formatAmount(limit.limit), window }),\n percent,\n value: t('usage-percent-used.label', { percent }),\n windowHours,\n };\n })\n .sort((a, b) => a.windowHours - b.windowHours);\n }, [data, t]);\n\n return (\n <Settings.Viewport>\n <Settings.Section title={t('usage-section.title')} description={t('usage-section.description')}>\n {state === 'unavailable' ? (\n <Message.Root valence='warning'>\n <Message.Title icon='ph--cloud-slash--duotone'>{t('usage-unavailable.title')}</Message.Title>\n <Message.Content>{t('usage-unavailable.description')}</Message.Content>\n </Message.Root>\n ) : state === 'loading' ? (\n <UsageSkeleton />\n ) : state === 'error' ? (\n <Message.Root valence='error'>\n <Message.Title icon='ph--cloud-x--duotone'>{t('usage-offline.title')}</Message.Title>\n <Message.Content>{t('usage-offline.description')}</Message.Content>\n </Message.Root>\n ) : limitRows.length === 0 ? (\n <Message.Root valence='neutral'>\n <Message.Title icon='ph--chart-bar--duotone'>{t('usage-empty.title')}</Message.Title>\n <Message.Content>{t('usage-empty.description')}</Message.Content>\n </Message.Root>\n ) : (\n <div className='flex flex-col'>\n {limitRows.map((row) => (\n <UsageRow key={row.key} label={row.label} caption={row.caption} percent={row.percent} value={row.value} />\n ))}\n\n <div className='flex items-center gap-1 pt-trim-md text-sm text-description'>\n {lastUpdated !== undefined && (\n <span>{t('usage-last-updated.label', { time: new Date(lastUpdated).toLocaleTimeString() })}</span>\n )}\n {onRefresh && (\n <IconButton\n iconOnly\n variant='ghost'\n icon='ph--arrow-clockwise--regular'\n label={t('usage-refresh.label')}\n onClick={onRefresh}\n />\n )}\n </div>\n </div>\n )}\n {state === 'ready' && data && (\n <div className='flex flex-col pt-trim-md'>\n <IconButton\n variant='ghost'\n icon='ph--caret-right--regular'\n iconClassNames={rawExpanded ? 'transition-transform rotate-90' : 'transition-transform'}\n label={t('usage-raw-json.label')}\n onClick={() => setRawExpanded((value) => !value)}\n classNames='self-start'\n />\n {rawExpanded && <JsonHighlighter data={data} classNames='mt-trim-sm text-xs overflow-auto' />}\n </div>\n )}\n </Settings.Section>\n </Settings.Viewport>\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useCallback", "useState", "Context", "log", "useAsyncEffect", "React", "useMemo", "useState", "IconButton", "Message", "useTranslation", "Settings", "JsonHighlighter", "meta", "usageMatchesLimit", "item", "limit", "eventType", "valueKey", "subtypePattern", "every", "pattern", "index", "sumUsageForLimit", "usage", "reduce", "total", "amount", "formatValueKey", "replace", "trim", "toLowerCase", "formatLimitLabel", "t", "metric", "subtype", "filter", "segment", "join", "formatAmount", "toLocaleString", "SECONDS_PER_HOUR", "formatWindow", "windowHours", "count", "UsageRow", "label", "caption", "percent", "value", "div", "className", "span", "undefined", "role", "aria-label", "aria-valuenow", "aria-valuemin", "aria-valuemax", "style", "width", "UsageSkeleton", "Array", "from", "length", "map", "_", "key", "UsageView", "state", "data", "lastUpdated", "onRefresh", "profile", "rawExpanded", "setRawExpanded", "limitRows", "limits", "used", "windowDuration", "window", "Math", "min", "round", "sort", "a", "b", "Viewport", "Section", "title", "description", "Root", "valence", "Title", "icon", "Content", "row", "time", "Date", "toLocaleTimeString", "iconOnly", "variant", "onClick", "iconClassNames", "classNames", "state", "useState", "setData", "lastUpdated", "setLastUpdated", "refreshCount", "setRefreshCount", "useAsyncEffect", "setState", "result", "getProfileUsage", "Context", "Date", "now", "log", "err", "hubHttp", "data", "onRefresh"]
|
|
7
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
-
|
|
3
|
-
// src/capabilities/account-cache.ts
|
|
4
|
-
import * as Effect from "effect/Effect";
|
|
5
|
-
import { Capability } from "@dxos/app-framework";
|
|
6
|
-
import { createKvsStore } from "@dxos/effect";
|
|
7
|
-
import { ClientCapabilities } from "#types";
|
|
8
|
-
|
|
9
|
-
// src/state/account-cache.ts
|
|
10
|
-
import * as Schema from "effect/Schema";
|
|
11
|
-
var AccountCacheValue = Schema.Struct({
|
|
12
|
-
identityDid: Schema.String,
|
|
13
|
-
email: Schema.String,
|
|
14
|
-
emailVerified: Schema.Boolean,
|
|
15
|
-
/** ISO timestamp. */
|
|
16
|
-
createdAt: Schema.String,
|
|
17
|
-
invitationsRemaining: Schema.Number
|
|
18
|
-
});
|
|
19
|
-
var AccountCacheInvitation = Schema.Struct({
|
|
20
|
-
code: Schema.String,
|
|
21
|
-
/** ISO timestamp. */
|
|
22
|
-
createdAt: Schema.String,
|
|
23
|
-
redeemedByIdentityDid: Schema.optional(Schema.String),
|
|
24
|
-
/** ISO timestamp. */
|
|
25
|
-
redeemedAt: Schema.optional(Schema.String)
|
|
26
|
-
});
|
|
27
|
-
var AccountCache = Schema.Struct({
|
|
28
|
-
account: Schema.optional(AccountCacheValue),
|
|
29
|
-
invitations: Schema.optional(Schema.Array(AccountCacheInvitation)),
|
|
30
|
-
/** Epoch ms when the cache was last refreshed. */
|
|
31
|
-
fetchedAt: Schema.optional(Schema.Number)
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
// src/capabilities/account-cache.ts
|
|
35
|
-
var account_cache_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(ClientCapabilities.AccountCache, createKvsStore({
|
|
36
|
-
key: "composer.account",
|
|
37
|
-
schema: AccountCache,
|
|
38
|
-
defaultValue: () => ({})
|
|
39
|
-
}))));
|
|
40
|
-
export {
|
|
41
|
-
account_cache_default as default
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=account-cache-4EKGEUJI.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/account-cache.ts", "../../../src/state/account-cache.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { createKvsStore } from '@dxos/effect';\n\nimport { ClientCapabilities } from '#types';\n\nimport { AccountCache } from '../state/account-cache';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(\n ClientCapabilities.AccountCache,\n createKvsStore<AccountCache>({\n key: 'composer.account',\n schema: AccountCache,\n defaultValue: () => ({}),\n }),\n ),\n ),\n);\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nconst AccountCacheValue = Schema.Struct({\n identityDid: Schema.String,\n email: Schema.String,\n emailVerified: Schema.Boolean,\n /** ISO timestamp. */\n createdAt: Schema.String,\n invitationsRemaining: Schema.Number,\n});\nexport type AccountCacheValue = Schema.Schema.Type<typeof AccountCacheValue>;\n\nconst AccountCacheInvitation = Schema.Struct({\n code: Schema.String,\n /** ISO timestamp. */\n createdAt: Schema.String,\n redeemedByIdentityDid: Schema.optional(Schema.String),\n /** ISO timestamp. */\n redeemedAt: Schema.optional(Schema.String),\n});\nexport type AccountCacheInvitation = Schema.Schema.Type<typeof AccountCacheInvitation>;\n\nexport const AccountCache = Schema.Struct({\n account: Schema.optional(AccountCacheValue),\n invitations: Schema.optional(Schema.Array(AccountCacheInvitation)),\n /** Epoch ms when the cache was last refreshed. */\n fetchedAt: Schema.optional(Schema.Number),\n});\nexport type AccountCache = Schema.Schema.Type<typeof AccountCache>;\n"],
|
|
5
|
-
"mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,sBAAsB;AAE/B,SAASC,0BAA0B;;;ACLnC,YAAYC,YAAY;AAExB,IAAMC,oBAA2BC,cAAO;EACtCC,aAAoBC;EACpBC,OAAcD;EACdE,eAAsBC;;EAEtBC,WAAkBJ;EAClBK,sBAA6BC;AAC/B,CAAA;AAGA,IAAMC,yBAAgCT,cAAO;EAC3CU,MAAaR;;EAEbI,WAAkBJ;EAClBS,uBAA8BC,gBAAgBV,aAAM;;EAEpDW,YAAmBD,gBAAgBV,aAAM;AAC3C,CAAA;AAGO,IAAMY,eAAsBd,cAAO;EACxCe,SAAgBH,gBAASb,iBAAAA;EACzBiB,aAAoBJ,gBAAgBK,aAAMR,sBAAAA,CAAAA;;EAE1CS,WAAkBN,gBAAgBJ,aAAM;AAC1C,CAAA;;;ADlBA,IAAA,wBAAeW,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YACTC,mBAAmBC,cACnBC,eAA6B;EAC3BC,KAAK;EACLC,QAAQH;EACRI,cAAc,OAAO,CAAC;AACxB,CAAA,CAAA,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "Capability", "createKvsStore", "ClientCapabilities", "Schema", "AccountCacheValue", "Struct", "identityDid", "String", "email", "emailVerified", "Boolean", "createdAt", "invitationsRemaining", "Number", "AccountCacheInvitation", "code", "redeemedByIdentityDid", "optional", "redeemedAt", "AccountCache", "account", "invitations", "Array", "fetchedAt", "Capability", "makeModule", "succeed", "contributes", "ClientCapabilities", "AccountCache", "createKvsStore", "key", "schema", "defaultValue"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { CreateAtom, GraphBuilder, Node, NodeMatcher } from '@dxos/plugin-graph';\nimport { ConnectionState } from '@dxos/react-client/mesh';\n\nimport { meta } from '#meta';\nimport { ClientOperation } from '#operations';\nimport { Account, ClientCapabilities } from '#types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* GraphBuilder.createExtension({\n id: 'root',\n match: NodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n {\n id: 'openUserAccount',\n data: () => Operation.invoke(ClientOperation.ShareIdentity),\n properties: {\n label: ['open-user-account.label', { ns: meta.profile.key }],\n icon: 'ph--user--regular',\n disposition: 'menu',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n },\n },\n ]),\n connector: Effect.fnUntraced(function* (node, get) {\n const client = yield* Capability.get(ClientCapabilities.Client);\n const identity = get(CreateAtom.fromObservable(client.halo.identity));\n const status = get(CreateAtom.fromObservable(client.mesh.networkStatus));\n\n return [\n Node.make({\n id: Account.id,\n type: meta.profile.key,\n properties: {\n label: ['account.label', { ns: meta.profile.key }],\n icon: 'ph--user--regular',\n disposition: 'user-account',\n testId: 'clientPlugin.account',\n // NOTE: This currently needs to be the identity key because the fallback is generated from hex.\n userId: identity?.identityKey.toHex(),\n hue: identity?.profile?.data?.hue,\n emoji: identity?.profile?.data?.emoji,\n status: status.swarm === ConnectionState.OFFLINE ? 'error' : 'active',\n },\n nodes: [\n Node.make({\n id: Account.Profile,\n data: Account.Profile,\n type: meta.profile.key,\n properties: {\n label: ['profile.label', { ns: meta.profile.key }],\n icon: 'ph--user--regular',\n },\n }),\n Node.make({\n id: Account.Account,\n data: Account.Account,\n type: meta.profile.key,\n properties: {\n label: ['account-panel.label', { ns: meta.profile.key }],\n icon: 'ph--identification-card--regular',\n },\n }),\n Node.make({\n id: Account.Devices,\n data: Account.Devices,\n type: meta.profile.key,\n properties: {\n label: ['devices.label', { ns: meta.profile.key }],\n icon: 'ph--devices--regular',\n testId: 'clientPlugin.devices',\n },\n }),\n Node.make({\n id: Account.Security,\n data: Account.Security,\n type: meta.profile.key,\n properties: {\n label: ['security.label', { ns: meta.profile.key }],\n icon: 'ph--key--regular',\n },\n }),\n Node.make({\n id: Account.Invitations,\n data: Account.Invitations,\n type: meta.profile.key,\n properties: {\n label: ['invitations-panel.label', { ns: meta.profile.key }],\n icon: 'ph--ticket--regular',\n },\n }),\n Node.make({\n id: Account.Usage,\n data: Account.Usage,\n type: meta.profile.key,\n properties: {\n label: ['usage-panel.label', { ns: meta.profile.key }],\n icon: 'ph--chart-bar--regular',\n },\n }),\n ],\n }),\n ];\n }),\n });\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Effect", "Capability", "AppCapabilities", "Operation", "CreateAtom", "GraphBuilder", "Node", "NodeMatcher", "ConnectionState", "meta", "ClientOperation", "Account", "ClientCapabilities", "makeModule", "fnUntraced", "extensions", "createExtension", "id", "match", "whenRoot", "actions", "succeed", "data", "invoke", "ShareIdentity", "properties", "label", "ns", "profile", "key", "icon", "disposition", "keyBinding", "macos", "windows", "linux", "connector", "node", "get", "client", "Client", "identity", "fromObservable", "halo", "status", "mesh", "networkStatus", "make", "type", "testId", "userId", "identityKey", "toHex", "hue", "emoji", "swarm", "OFFLINE", "nodes", "Profile", "Devices", "Security", "Invitations", "Usage", "contributes", "AppGraphBuilder"]
|
|
7
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// src/operations/index.ts
|
|
2
|
-
import { OperationHandlerSet } from "@dxos/compute";
|
|
3
|
-
var ClientOperationHandlerSet = OperationHandlerSet.lazy(() => import("./create-agent-U567RM7Z.mjs"), () => import("./create-identity-IKN2FJ5B.mjs"), () => import("./create-passkey-JAD3ACY7.mjs"), () => import("./create-recovery-code-JZYXR4BY.mjs"), () => import("./join-identity-PJCHDNLH.mjs"), () => import("./open-usage-24I7RAFL.mjs"), () => import("./recover-identity-B7YM2BR4.mjs"), () => import("./redeem-passkey-4DR7GPMU.mjs"), () => import("./redeem-token-N5MBQG3I.mjs"), () => import("./reset-storage-K47HZTGP.mjs"), () => import("./share-identity-YJIFDIPJ.mjs"));
|
|
4
|
-
|
|
5
|
-
export {
|
|
6
|
-
ClientOperationHandlerSet
|
|
7
|
-
};
|
|
8
|
-
//# sourceMappingURL=chunk-54MDDWCV.mjs.map
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
// src/types/capabilities.ts
|
|
2
|
-
import { Capability } from "@dxos/app-framework";
|
|
3
|
-
import { meta } from "#meta";
|
|
4
|
-
(function(ClientCapabilities2) {
|
|
5
|
-
ClientCapabilities2.Client = Capability.make(`${meta.profile.key}.capability.client`);
|
|
6
|
-
ClientCapabilities2.Schema = Capability.make(`${meta.profile.key}.capability.schema`);
|
|
7
|
-
ClientCapabilities2.Migration = Capability.make(`${meta.profile.key}.capability.migration`);
|
|
8
|
-
ClientCapabilities2.AccountCache = Capability.make(`${meta.profile.key}.capability.accountCache`);
|
|
9
|
-
ClientCapabilities2.HubHttpClient = Capability.make(`${meta.profile.key}.capability.hubHttpClient`);
|
|
10
|
-
})(ClientCapabilities || (ClientCapabilities = {}));
|
|
11
|
-
var ClientCapabilities;
|
|
12
|
-
|
|
13
|
-
// src/types/events.ts
|
|
14
|
-
import { ActivationEvent } from "@dxos/app-framework";
|
|
15
|
-
import { meta as meta2 } from "#meta";
|
|
16
|
-
(function(ClientEvents2) {
|
|
17
|
-
ClientEvents2.ClientReady = ActivationEvent.make(`${meta2.profile.key}.event.clientReady`);
|
|
18
|
-
ClientEvents2.SetupSchema = ActivationEvent.make(`${meta2.profile.key}.event.setupSchema`);
|
|
19
|
-
ClientEvents2.SetupMigration = ActivationEvent.make(`${meta2.profile.key}.event.setupMigration`);
|
|
20
|
-
ClientEvents2.IdentityCreated = ActivationEvent.make(`${meta2.profile.key}.event.identityCreated`);
|
|
21
|
-
ClientEvents2.SpacesReady = ActivationEvent.make(`${meta2.profile.key}.event.spacesReady`);
|
|
22
|
-
})(ClientEvents || (ClientEvents = {}));
|
|
23
|
-
var ClientEvents;
|
|
24
|
-
|
|
25
|
-
// src/types/schema.ts
|
|
26
|
-
import * as Schema from "effect/Schema";
|
|
27
|
-
import { IdentityDid, SpaceId } from "@dxos/keys";
|
|
28
|
-
import { meta as meta3 } from "#meta";
|
|
29
|
-
var IdentitySchema = Schema.Struct({
|
|
30
|
-
identityDid: IdentityDid,
|
|
31
|
-
spaceId: Schema.optional(SpaceId),
|
|
32
|
-
profile: Schema.optional(Schema.Struct({
|
|
33
|
-
displayName: Schema.optional(Schema.String),
|
|
34
|
-
avatarCid: Schema.optional(Schema.String),
|
|
35
|
-
data: Schema.optional(Schema.Record({
|
|
36
|
-
key: Schema.String,
|
|
37
|
-
value: Schema.Any
|
|
38
|
-
}))
|
|
39
|
-
}))
|
|
40
|
-
});
|
|
41
|
-
(function(ClientAction2) {
|
|
42
|
-
const ProfileSchema = Schema.Struct({
|
|
43
|
-
displayName: Schema.optional(Schema.String),
|
|
44
|
-
avatarCid: Schema.optional(Schema.String),
|
|
45
|
-
data: Schema.optional(Schema.Record({
|
|
46
|
-
key: Schema.String,
|
|
47
|
-
value: Schema.Any
|
|
48
|
-
}))
|
|
49
|
-
});
|
|
50
|
-
class CreateIdentity extends Schema.TaggedClass()(`${meta3.profile.key}.action.create-identity`, {
|
|
51
|
-
input: ProfileSchema,
|
|
52
|
-
output: IdentitySchema
|
|
53
|
-
}) {
|
|
54
|
-
}
|
|
55
|
-
ClientAction2.CreateIdentity = CreateIdentity;
|
|
56
|
-
class JoinIdentity extends Schema.TaggedClass()(`${meta3.profile.key}.action.join-identity`, {
|
|
57
|
-
input: Schema.Struct({
|
|
58
|
-
invitationCode: Schema.optional(Schema.String)
|
|
59
|
-
}),
|
|
60
|
-
output: Schema.Void
|
|
61
|
-
}) {
|
|
62
|
-
}
|
|
63
|
-
ClientAction2.JoinIdentity = JoinIdentity;
|
|
64
|
-
class ShareIdentity extends Schema.TaggedClass()(`${meta3.profile.key}.action.share-identity`, {
|
|
65
|
-
input: Schema.Void,
|
|
66
|
-
output: Schema.Void
|
|
67
|
-
}) {
|
|
68
|
-
}
|
|
69
|
-
ClientAction2.ShareIdentity = ShareIdentity;
|
|
70
|
-
class RecoverIdentity extends Schema.TaggedClass()(`${meta3.profile.key}.action.recover-identity`, {
|
|
71
|
-
input: Schema.Void,
|
|
72
|
-
output: Schema.Void
|
|
73
|
-
}) {
|
|
74
|
-
}
|
|
75
|
-
ClientAction2.RecoverIdentity = RecoverIdentity;
|
|
76
|
-
class ResetStorage extends Schema.TaggedClass()(`${meta3.profile.key}.action.reset-storage`, {
|
|
77
|
-
input: Schema.Struct({
|
|
78
|
-
mode: Schema.optional(Schema.String)
|
|
79
|
-
}),
|
|
80
|
-
output: Schema.Void
|
|
81
|
-
}) {
|
|
82
|
-
}
|
|
83
|
-
ClientAction2.ResetStorage = ResetStorage;
|
|
84
|
-
class CreateAgent extends Schema.TaggedClass()(`${meta3.profile.key}.action.create-agent`, {
|
|
85
|
-
input: Schema.Void,
|
|
86
|
-
output: Schema.Void
|
|
87
|
-
}) {
|
|
88
|
-
}
|
|
89
|
-
ClientAction2.CreateAgent = CreateAgent;
|
|
90
|
-
class CreateRecoveryCode extends Schema.TaggedClass()(`${meta3.profile.key}.action.create-recovery-code`, {
|
|
91
|
-
input: Schema.Void,
|
|
92
|
-
output: Schema.Void
|
|
93
|
-
}) {
|
|
94
|
-
}
|
|
95
|
-
ClientAction2.CreateRecoveryCode = CreateRecoveryCode;
|
|
96
|
-
class CreatePasskey extends Schema.TaggedClass()(`${meta3.profile.key}.action.create-passkey`, {
|
|
97
|
-
input: Schema.Void,
|
|
98
|
-
output: Schema.Void
|
|
99
|
-
}) {
|
|
100
|
-
}
|
|
101
|
-
ClientAction2.CreatePasskey = CreatePasskey;
|
|
102
|
-
class RedeemPasskey extends Schema.TaggedClass()(`${meta3.profile.key}.action.redeem-passkey`, {
|
|
103
|
-
input: Schema.Void,
|
|
104
|
-
output: Schema.Void
|
|
105
|
-
}) {
|
|
106
|
-
}
|
|
107
|
-
ClientAction2.RedeemPasskey = RedeemPasskey;
|
|
108
|
-
class RedeemToken extends Schema.TaggedClass()(`${meta3.profile.key}.action.redeem-token`, {
|
|
109
|
-
input: Schema.Struct({
|
|
110
|
-
token: Schema.String
|
|
111
|
-
}),
|
|
112
|
-
output: Schema.Void
|
|
113
|
-
}) {
|
|
114
|
-
}
|
|
115
|
-
ClientAction2.RedeemToken = RedeemToken;
|
|
116
|
-
})(ClientAction || (ClientAction = {}));
|
|
117
|
-
(function(Account2) {
|
|
118
|
-
const _id = "dxos.org.plugin.client.account";
|
|
119
|
-
Account2.id = `!${_id}`;
|
|
120
|
-
Account2.Profile = `${_id}.profile`;
|
|
121
|
-
Account2.Devices = `${_id}.devices`;
|
|
122
|
-
Account2.Security = `${_id}.security`;
|
|
123
|
-
Account2.Account = `${_id}.account`;
|
|
124
|
-
Account2.Invitations = `${_id}.invitations`;
|
|
125
|
-
Account2.Usage = `${_id}.usage`;
|
|
126
|
-
})(Account || (Account = {}));
|
|
127
|
-
var ClientAction;
|
|
128
|
-
var Account;
|
|
129
|
-
|
|
130
|
-
export {
|
|
131
|
-
ClientCapabilities,
|
|
132
|
-
ClientEvents,
|
|
133
|
-
ClientAction,
|
|
134
|
-
Account
|
|
135
|
-
};
|
|
136
|
-
//# sourceMappingURL=chunk-DA3LZQSD.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/types/capabilities.ts", "../../../src/types/events.ts", "../../../src/types/schema.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom } from '@effect-atom/atom-react';\n\nimport { Capability } from '@dxos/app-framework';\nimport { type Client } from '@dxos/client';\nimport { type ObjectMigration } from '@dxos/client/echo';\nimport { type Type } from '@dxos/echo';\nimport { type HubHttpClient } from '@dxos/edge-client';\n\nimport { meta } from '#meta';\n\nimport { type AccountCache as AccountCacheType } from '../state/account-cache';\n\nexport namespace ClientCapabilities {\n export const Client = Capability.make<Client>(`${meta.profile.key}.capability.client`);\n export const Schema = Capability.make<Type.AnyEntity[]>(`${meta.profile.key}.capability.schema`);\n export const Migration = Capability.make<ObjectMigration[]>(`${meta.profile.key}.capability.migration`);\n export const AccountCache = Capability.make<Atom.Writable<AccountCacheType>>(\n `${meta.profile.key}.capability.accountCache`,\n );\n export const HubHttpClient = Capability.make<HubHttpClient>(`${meta.profile.key}.capability.hubHttpClient`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { ActivationEvent } from '@dxos/app-framework';\n\nimport { meta } from '#meta';\n\nexport namespace ClientEvents {\n export const ClientReady = ActivationEvent.make(`${meta.profile.key}.event.clientReady`);\n export const SetupSchema = ActivationEvent.make(`${meta.profile.key}.event.setupSchema`);\n export const SetupMigration = ActivationEvent.make(`${meta.profile.key}.event.setupMigration`);\n export const IdentityCreated = ActivationEvent.make(`${meta.profile.key}.event.identityCreated`);\n export const SpacesReady = ActivationEvent.make(`${meta.profile.key}.event.spacesReady`);\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { type Client, type ClientOptions } from '@dxos/client';\nimport { IdentityDid, SpaceId } from '@dxos/keys';\n\nimport { meta } from '#meta';\n\n// TODO(wittjosiah): Factor out. Generate?\nconst IdentitySchema = Schema.Struct({\n identityDid: IdentityDid,\n spaceId: Schema.optional(SpaceId),\n profile: Schema.optional(\n Schema.Struct({\n displayName: Schema.optional(Schema.String),\n avatarCid: Schema.optional(Schema.String),\n data: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),\n }),\n ),\n});\n\nexport namespace ClientAction {\n const ProfileSchema = Schema.Struct({\n displayName: Schema.optional(Schema.String),\n avatarCid: Schema.optional(Schema.String),\n data: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),\n });\n\n export class CreateIdentity extends Schema.TaggedClass<CreateIdentity>()(\n `${meta.profile.key}.action.create-identity`,\n {\n input: ProfileSchema,\n output: IdentitySchema,\n },\n ) {}\n\n export class JoinIdentity extends Schema.TaggedClass<JoinIdentity>()(`${meta.profile.key}.action.join-identity`, {\n input: Schema.Struct({\n invitationCode: Schema.optional(Schema.String),\n }),\n output: Schema.Void,\n }) {}\n\n export class ShareIdentity extends Schema.TaggedClass<ShareIdentity>()(`${meta.profile.key}.action.share-identity`, {\n input: Schema.Void,\n output: Schema.Void,\n }) {}\n\n export class RecoverIdentity extends Schema.TaggedClass<RecoverIdentity>()(\n `${meta.profile.key}.action.recover-identity`,\n {\n input: Schema.Void,\n output: Schema.Void,\n },\n ) {}\n\n export class ResetStorage extends Schema.TaggedClass<ResetStorage>()(`${meta.profile.key}.action.reset-storage`, {\n input: Schema.Struct({\n mode: Schema.optional(Schema.String),\n }),\n output: Schema.Void,\n }) {}\n\n export class CreateAgent extends Schema.TaggedClass<CreateAgent>()(`${meta.profile.key}.action.create-agent`, {\n input: Schema.Void,\n output: Schema.Void,\n }) {}\n\n export class CreateRecoveryCode extends Schema.TaggedClass<CreateRecoveryCode>()(\n `${meta.profile.key}.action.create-recovery-code`,\n {\n input: Schema.Void,\n output: Schema.Void,\n },\n ) {}\n\n export class CreatePasskey extends Schema.TaggedClass<CreatePasskey>()(`${meta.profile.key}.action.create-passkey`, {\n input: Schema.Void,\n output: Schema.Void,\n }) {}\n\n export class RedeemPasskey extends Schema.TaggedClass<RedeemPasskey>()(`${meta.profile.key}.action.redeem-passkey`, {\n input: Schema.Void,\n output: Schema.Void,\n }) {}\n\n export class RedeemToken extends Schema.TaggedClass<RedeemToken>()(`${meta.profile.key}.action.redeem-token`, {\n input: Schema.Struct({\n token: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n}\n\nexport type ClientPluginOptions = ClientOptions & {\n /**\n * Base origin for the invitation link.\n */\n shareableLinkOrigin?: string;\n\n /**\n * Path for the invitation link.\n */\n invitationPath?: string;\n\n /**\n * Query parameter for the invitation code.\n */\n invitationProp?: string;\n\n /**\n * Run after the client has been initialized.\n * Plugin context is provided so capabilities are accessible.\n */\n onClientInitialized?: (params: { client: Client }) => Effect.Effect<void, Error | never, Capability.Service | never>;\n\n /**\n * Called when spaces are ready.\n * Plugin context is provided so capabilities are accessible.\n */\n onSpacesReady?: (params: { client: Client }) => Effect.Effect<void, Error | never, Capability.Service | never>;\n\n /**\n * Called when the client is reset.\n * Plugin context is provided so capabilities are accessible.\n */\n onReset?: (params: { target?: string }) => Effect.Effect<void, Error | never, Capability.Service | never>;\n};\n\nexport namespace Account {\n // TODO(wittjosiah): Cannot use slashes in ids until we have a router which decouples ids from url paths.\n const _id = 'dxos.org.plugin.client.account';\n // TODO(wittjosiah): This is a hack to prevent the previous deck from being set for pinned items.\n // Ideally this should be worked into the data model in a generic way.\n export const id = `!${_id}`;\n\n export const Profile = `${_id}.profile`;\n export const Devices = `${_id}.devices`;\n export const Security = `${_id}.security`;\n export const Account = `${_id}.account`;\n export const Invitations = `${_id}.invitations`;\n export const Usage = `${_id}.usage`;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Capability", "meta", "ClientCapabilities", "Client", "make", "profile", "key", "Schema", "Migration", "AccountCache", "HubHttpClient", "ActivationEvent", "meta", "ClientEvents", "ClientReady", "make", "profile", "key", "SetupSchema", "SetupMigration", "IdentityCreated", "SpacesReady", "Schema", "IdentityDid", "SpaceId", "meta", "IdentitySchema", "Struct", "identityDid", "spaceId", "optional", "profile", "displayName", "String", "avatarCid", "data", "Record", "key", "value", "Any", "ClientAction", "ProfileSchema", "CreateIdentity", "TaggedClass", "input", "output", "JoinIdentity", "invitationCode", "Void", "ShareIdentity", "RecoverIdentity", "ResetStorage", "mode", "CreateAgent", "CreateRecoveryCode", "CreatePasskey", "RedeemPasskey", "RedeemToken", "token", "Account", "_id", "id", "Profile", "Devices", "Security", "Invitations", "Usage"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/layer-specs.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { ClientService } from '@dxos/client';\nimport { Credential, LayerSpec } from '@dxos/compute';\nimport { Database, Feed } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-client';\nimport { credentialsLayerFromDatabase } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\n\nimport { ClientCapabilities } from '#types';\n\n//\n// Capability Module\n//\n// Contributes the core client/space service layer specs:\n// - {@link ClientService} (application affinity).\n// - {@link Database.Service}, {@link Feed.FeedService},\n// {@link Credential.CredentialsService} (space affinity).\n//\n// Specs are declared at module level and resolve the underlying\n// {@link ClientCapabilities.Client} through the Effect layer graph (via\n// {@link Capability.Service}) rather than capturing it from an outer scope.\n//\n\n/**\n * Provides the Effect-level {@link ClientService} backed by the\n * {@link ClientCapabilities.Client} capability contributed by the plugin\n * runtime.\n */\nconst ClientLayerSpec = LayerSpec.make(\n {\n affinity: 'application',\n requires: [Capability.Service],\n provides: [ClientService],\n },\n () =>\n Layer.unwrapEffect(\n Effect.gen(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n return ClientService.fromClient(client);\n }).pipe(Effect.orDie),\n ),\n);\n\n/**\n * Space-scoped database/feed services resolved from the `Client`'s space\n * registry. One spec for both so the `client.spaces.get` / `waitUntilReady`\n * round-trip only happens once per space slice. Fails hard if the context is\n * missing a `space` id or the client cannot resolve it — both indicate a\n * configuration bug in the layer graph.\n */\nconst DatabaseLayerSpec = LayerSpec.make(\n {\n affinity: 'space',\n requires: [ClientService],\n provides: [Database.Service, Feed.FeedService],\n },\n (context) =>\n Layer.unwrapEffect(\n Effect.gen(function* () {\n invariant(context.space, 'space context required for Database layer');\n const client = yield* ClientService;\n const space = client.spaces.get(context.space);\n invariant(space, `space not found on client: ${context.space}`);\n yield* Effect.promise(() => space.waitUntilReady());\n return Layer.mergeAll(Database.layer(space.db), createFeedServiceLayer(space.db));\n }),\n ),\n);\n\nconst CredentialsLayerSpec = LayerSpec.make(\n {\n affinity: 'space',\n requires: [Database.Service],\n provides: [Credential.CredentialsService],\n },\n () => credentialsLayerFromDatabase(),\n);\n\nexport default Capability.makeModule(() =>\n Effect.succeed([\n Capability.contributes(Capabilities.LayerSpec, ClientLayerSpec),\n Capability.contributes(Capabilities.LayerSpec, DatabaseLayerSpec),\n Capability.contributes(Capabilities.LayerSpec, CredentialsLayerSpec),\n ]),\n);\n"],
|
|
5
|
-
"mappings": ";;;AAIA,YAAYA,YAAY;AACxB,YAAYC,WAAW;AAEvB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,qBAAqB;AAC9B,SAASC,YAAYC,iBAAiB;AACtC,SAASC,UAAUC,YAAY;AAC/B,SAASC,8BAA8B;AACvC,SAASC,oCAAoC;AAC7C,SAASC,iBAAiB;AAE1B,SAASC,0BAA0B;AAEnC,IAAE,eAAA;AAqBEC,IAAAA,kBAAU,UAAA,KAAA;YAACV;YAAmB;IAC9BW,WAAU;;YAAe;IAGzBb;;SAGI,mBAAqBc,WAAAA,aAAWC;AAC/BC,QAAKjB,SAAOkB,OAAK,WAAA,IAAA,mBAAA,MAAA;AAI1B,SAAA,cAAA,WAAA,MAAA;;AAUIL,IAAAA,oBAAU,UAAA,KAAA;YAACT;YAAc;IACzBU;;YAAkCK;IAAY,SAAA;IAE/CC,KAAAA;;gBAIWJ,mBAAgBZ,WAAAA,aAAAA;AACtB,YAAMiB,QAAQL,OAAOM,6CAAwB,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,iBAAA,6CAAA,EAAA,CAAA;AAC7CX,QAAAA,SAAUU,OAAQ;AAClB,QAAA,QAAcE,OAAO,OAAOF,IAAMG,QAAAA,KAAAA;AAClC,YAAOvB,OAAMwB,8BAAgC,QAAGhB,KAAAA,IAAAA,EAAAA,YAAuBY,YAAQ,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,SAAA,+CAAA,EAAA,CAAA;AACjF,SAAA,eAAA,MAAA,MAAA,eAAA,CAAA;AAIAK,SAAAA,eAAuBpB,SAAUqB,MACrC,MAAA,EAAA,GAAA,uBAAA,MAAA,EAAA,CAAA;AACEC,CAAAA,CAAAA,CAAAA;IACAf,uBAAU,UAAA,KAAA;YAACN;YAAiB;IAC5BO,SAAU;;YAA+B;IAErCJ,WAAAA;EAGR;sCAE2BR,CAAAA;0BACvBC,WAAW0B,WAAY3B,MAAaI,eAAWwB;EAC/C3B,WAAW0B,YAAY3B,aAAaI,WAAWoB,eAAAA;EAEjD,WAAA,YAAA,aAAA,WAAA,iBAAA;;;",
|
|
6
|
-
"names": ["Effect", "Layer", "Capabilities", "Capability", "ClientService", "Credential", "LayerSpec", "Database", "Feed", "createFeedServiceLayer", "credentialsLayerFromDatabase", "invariant", "ClientCapabilities", "requires", "provides", "fromClient", "client", "pipe", "orDie", "FeedService", "context", "space", "spaces", "promise", "waitUntilReady", "mergeAll", "CredentialsLayerSpec", "make", "affinity", "contributes", "DatabaseLayerSpec"]
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-hub-http.d.ts","sourceRoot":"","sources":["../../../../src/state/use-hub-http.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAMvD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAO,aAAa,GAAG,SAYnD,CAAC"}
|
|
File without changes
|
|
File without changes
|
/package/dist/lib/neutral/{create-identity-IKN2FJ5B.mjs.map → create-identity-ULCRB3YH.mjs.map}
RENAMED
|
File without changes
|
/package/dist/lib/neutral/{create-passkey-JAD3ACY7.mjs.map → create-passkey-I7VDS3AC.mjs.map}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/lib/neutral/{redeem-passkey-4DR7GPMU.mjs.map → redeem-passkey-TYP4XLHO.mjs.map}
RENAMED
|
File without changes
|
|
File without changes
|
/package/dist/lib/neutral/{share-identity-YJIFDIPJ.mjs.map → share-identity-TOROBLWL.mjs.map}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|