@legioncodeinc/hive 0.3.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/daemon/dashboard/app.js +11 -11
- package/dist/daemon/gate.d.ts +10 -6
- package/dist/daemon/gate.js +20 -8
- package/dist/daemon/gate.js.map +1 -1
- package/dist/daemon/installer/config.d.ts +2 -0
- package/dist/daemon/installer/config.js +5 -3
- package/dist/daemon/installer/config.js.map +1 -1
- package/dist/daemon/installer/funnel-telemetry.d.ts +17 -2
- package/dist/daemon/installer/funnel-telemetry.js +34 -3
- package/dist/daemon/installer/funnel-telemetry.js.map +1 -1
- package/dist/daemon/installer/routes.js +6 -2
- package/dist/daemon/installer/routes.js.map +1 -1
- package/dist/daemon/installer/security.d.ts +9 -2
- package/dist/daemon/installer/security.js +8 -0
- package/dist/daemon/installer/security.js.map +1 -1
- package/dist/daemon/installer/token.d.ts +8 -7
- package/dist/daemon/installer/token.js +40 -18
- package/dist/daemon/installer/token.js.map +1 -1
- package/dist/daemon/registry.d.ts +6 -0
- package/dist/daemon/registry.js +15 -17
- package/dist/daemon/registry.js.map +1 -1
- package/dist/daemon/server.d.ts +14 -0
- package/dist/daemon/server.js +19 -0
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/setup-tenancy.d.ts +18 -0
- package/dist/daemon/setup-tenancy.js +37 -0
- package/dist/daemon/setup-tenancy.js.map +1 -0
- package/dist/dashboard/web/active-tenancy-display.d.ts +34 -0
- package/dist/dashboard/web/active-tenancy-display.js +84 -0
- package/dist/dashboard/web/active-tenancy-display.js.map +1 -0
- package/dist/dashboard/web/app.js +6 -2
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/onboarding/contracts.d.ts +1 -1
- package/dist/dashboard/web/onboarding/contracts.js +9 -1
- package/dist/dashboard/web/onboarding/contracts.js.map +1 -1
- package/dist/dashboard/web/onboarding/login-step.d.ts +3 -4
- package/dist/dashboard/web/onboarding/login-step.js +12 -18
- package/dist/dashboard/web/onboarding/login-step.js.map +1 -1
- package/dist/dashboard/web/onboarding/onboarding-screen.d.ts +8 -4
- package/dist/dashboard/web/onboarding/onboarding-screen.js +90 -13
- package/dist/dashboard/web/onboarding/onboarding-screen.js.map +1 -1
- package/dist/dashboard/web/onboarding/tenancy-client.d.ts +19 -0
- package/dist/dashboard/web/onboarding/tenancy-client.js +84 -0
- package/dist/dashboard/web/onboarding/tenancy-client.js.map +1 -0
- package/dist/dashboard/web/onboarding/tenancy-contracts.d.ts +119 -0
- package/dist/dashboard/web/onboarding/tenancy-contracts.js +79 -0
- package/dist/dashboard/web/onboarding/tenancy-contracts.js.map +1 -0
- package/dist/dashboard/web/onboarding/tenancy-step.d.ts +32 -0
- package/dist/dashboard/web/onboarding/tenancy-step.js +223 -0
- package/dist/dashboard/web/onboarding/tenancy-step.js.map +1 -0
- package/dist/dashboard/web/pages/hive-graph.js +138 -43
- package/dist/dashboard/web/pages/hive-graph.js.map +1 -1
- package/dist/dashboard/web/wire.d.ts +111 -14
- package/dist/dashboard/web/wire.js +105 -0
- package/dist/dashboard/web/wire.js.map +1 -1
- package/dist/install/registry.d.ts +2 -2
- package/dist/install/registry.js +14 -7
- package/dist/install/registry.js.map +1 -1
- package/dist/lock.d.ts +5 -2
- package/dist/lock.js +36 -1
- package/dist/lock.js.map +1 -1
- package/dist/service/index.d.ts +5 -0
- package/dist/service/index.js +9 -1
- package/dist/service/index.js.map +1 -1
- package/dist/service/templates.d.ts +22 -3
- package/dist/service/templates.js +47 -10
- package/dist/service/templates.js.map +1 -1
- package/dist/shared/apiary-root.d.ts +28 -0
- package/dist/shared/apiary-root.js +71 -0
- package/dist/shared/apiary-root.js.map +1 -0
- package/dist/shared/constants.d.ts +0 -1
- package/dist/shared/constants.js +3 -5
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/legacy-paths.d.ts +22 -0
- package/dist/shared/legacy-paths.js +48 -0
- package/dist/shared/legacy-paths.js.map +1 -0
- package/dist/shared/registry-paths.d.ts +19 -0
- package/dist/shared/registry-paths.js +52 -0
- package/dist/shared/registry-paths.js.map +1 -0
- package/dist/shared/state-migration.d.ts +13 -0
- package/dist/shared/state-migration.js +92 -0
- package/dist/shared/state-migration.js.map +1 -0
- package/dist/telemetry/emit.d.ts +27 -14
- package/dist/telemetry/emit.js +20 -4
- package/dist/telemetry/emit.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,7 +13,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
13
13
|
* └ Advanced → picker → installing(exactly the chosen subset) (ob-AC-7)
|
|
14
14
|
* installing(queue, index) ── each card completes+dwells → advance → next index, else → health
|
|
15
15
|
* health ── polls until ready → login
|
|
16
|
-
* login ── device-code display
|
|
16
|
+
* login ── device-code display → tenancy when authenticated (PRD-011a)
|
|
17
|
+
* tenancy ── org + workspace selection → hard navigation to `/` on `selected: true` (ts-AC-9)
|
|
17
18
|
*
|
|
18
19
|
* Resume honesty (ob-AC-16): the Standard/Advanced choice is persisted client-side
|
|
19
20
|
* (onboarding-selection-store), so a resumed install uses `buildResumeQueue`, which excludes a
|
|
@@ -30,8 +31,10 @@ import { InstallCard } from "./install-card.js";
|
|
|
30
31
|
import { LoginStep } from "./login-step.js";
|
|
31
32
|
import { createOnboardingClient } from "./onboarding-client.js";
|
|
32
33
|
import { OnboardingHero } from "./onboarding-hero.js";
|
|
34
|
+
import { consumeTenancyAutoComplete, TenancyStep } from "./tenancy-step.js";
|
|
33
35
|
import { useOnboardingToken } from "./use-onboarding-token.js";
|
|
34
36
|
import { Button } from "../primitives.js";
|
|
37
|
+
import { createWireClient } from "../wire.js";
|
|
35
38
|
/** An empty install queue means nothing more to do, skip straight to the health gate. */
|
|
36
39
|
function installingOrHealth(queue) {
|
|
37
40
|
return queue.length === 0 ? { kind: "health" } : { kind: "installing", queue, index: 0 };
|
|
@@ -51,10 +54,13 @@ function ShortCircuitSummary({ onGoToDashboard }) {
|
|
|
51
54
|
}, children: [_jsx("h1", { style: { fontSize: "var(--text-xl)", fontWeight: 700, color: "var(--text-primary)", margin: 0, letterSpacing: "-0.02em" }, children: "Your fleet is already up" }), _jsx("p", { style: { fontFamily: "var(--font-sans)", fontSize: "var(--text-sm)", color: "var(--text-secondary)", margin: 0, lineHeight: 1.5 }, children: "Every product is installed and the fleet reads healthy. Nothing to install here." }), _jsx(Button, { variant: "primary", size: "lg", "data-testid": "onboarding-go-to-dashboard", onClick: onGoToDashboard, children: "Go to dashboard" })] }) }));
|
|
52
55
|
}
|
|
53
56
|
/**
|
|
54
|
-
* The terminal "no token" screen
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
57
|
+
* The terminal "no token" screen for a machine that is genuinely NOT installed/authenticated. The
|
|
58
|
+
* one-time token rides the opened URL (`/onboarding?t=...`) and is held in memory only, so landing
|
|
59
|
+
* here without one (a refresh after the URL scrub, the printed fallback link, a bookmark) cannot
|
|
60
|
+
* recover the INSTALLER flow on its own: the operator re-runs the installer, which mints a fresh
|
|
61
|
+
* token and reopens the portal. PRD-011c C-1: an installed + authenticated + tenancy-unselected
|
|
62
|
+
* machine never lands here; the tokenless probe below resumes it at the tenancy step instead,
|
|
63
|
+
* because the tenancy step's whole data plane is the token-free `/setup/*` surface (ts-AC-12).
|
|
58
64
|
*/
|
|
59
65
|
function MissingTokenNotice() {
|
|
60
66
|
return (_jsx("div", { "data-testid": "onboarding-missing-token", style: { display: "flex", alignItems: "center", justifyContent: "center", minHeight: "100vh", padding: 32, background: "var(--bg-canvas)", textAlign: "center" }, children: _jsxs("div", { style: {
|
|
@@ -81,7 +87,7 @@ function MissingTokenNotice() {
|
|
|
81
87
|
function LoadingPlaceholder() {
|
|
82
88
|
return (_jsx("div", { "data-testid": "onboarding-loading", style: { display: "flex", alignItems: "center", justifyContent: "center", minHeight: "100vh", background: "var(--bg-canvas)" }, children: _jsx("p", { style: { fontFamily: "var(--font-mono)", fontSize: "var(--text-xs)", color: "var(--text-tertiary)" }, children: "Checking what is already installed\u2026" }) }));
|
|
83
89
|
}
|
|
84
|
-
export function OnboardingScreen({ assetBase = "assets", client: clientOverride, wire, minDwellMs, healthPollMs, loginPollMs, onShortCircuitNavigate, onAuthenticated, }) {
|
|
90
|
+
export function OnboardingScreen({ assetBase = "assets", client: clientOverride, wire, tenancyClient, minDwellMs, healthPollMs, loginPollMs, onShortCircuitNavigate, onAuthenticated, }) {
|
|
85
91
|
const token = useOnboardingToken();
|
|
86
92
|
// A test-injected client bypasses the token gate entirely (it never talks to the real token
|
|
87
93
|
// wiring); real usage waits for `useOnboardingToken` to resolve the `?t=` query param first.
|
|
@@ -90,6 +96,7 @@ export function OnboardingScreen({ assetBase = "assets", client: clientOverride,
|
|
|
90
96
|
const tokenReady = clientOverride !== undefined || (token !== null && token !== "");
|
|
91
97
|
const tokenMissing = clientOverride === undefined && token === "";
|
|
92
98
|
const client = React.useMemo(() => clientOverride ?? createOnboardingClient(token ?? ""), [clientOverride, token]);
|
|
99
|
+
const wireClient = React.useMemo(() => wire ?? createWireClient(), [wire]);
|
|
93
100
|
const [phase, setPhase] = React.useState({ kind: "loading" });
|
|
94
101
|
const [detection, setDetection] = React.useState(null);
|
|
95
102
|
const startedEventFiredRef = React.useRef(false);
|
|
@@ -109,6 +116,14 @@ export function OnboardingScreen({ assetBase = "assets", client: clientOverride,
|
|
|
109
116
|
return;
|
|
110
117
|
setDetection(detectResult);
|
|
111
118
|
if (isFleetFullyInstalled(detectResult) && healthResult.ready) {
|
|
119
|
+
const setupState = await wireClient.setupState();
|
|
120
|
+
if (setupState.authenticated) {
|
|
121
|
+
const tenancy = await wireClient.setupTenancy();
|
|
122
|
+
if (!tenancy.selected) {
|
|
123
|
+
setPhase({ kind: "tenancy" });
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
112
127
|
setPhase({ kind: "short-circuit" });
|
|
113
128
|
}
|
|
114
129
|
else if (hasResumableInstall(detectResult)) {
|
|
@@ -123,7 +138,7 @@ export function OnboardingScreen({ assetBase = "assets", client: clientOverride,
|
|
|
123
138
|
return () => {
|
|
124
139
|
alive = false;
|
|
125
140
|
};
|
|
126
|
-
}, [client, tokenReady]);
|
|
141
|
+
}, [client, tokenReady, wireClient]);
|
|
127
142
|
const chooseMode = React.useCallback((mode) => {
|
|
128
143
|
client.sendEvent("mode_selected", { mode });
|
|
129
144
|
if (mode === "standard") {
|
|
@@ -157,15 +172,75 @@ export function OnboardingScreen({ assetBase = "assets", client: clientOverride,
|
|
|
157
172
|
if (typeof window !== "undefined")
|
|
158
173
|
window.location.assign("/");
|
|
159
174
|
}, [onShortCircuitNavigate]);
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
const handleAuthenticated = React.useCallback(() => {
|
|
175
|
+
// ts-AC-9: terminal handoff after tenancy selection persists; drop the persisted install subset.
|
|
176
|
+
const handleTenancyComplete = React.useCallback(() => {
|
|
163
177
|
clearSelection();
|
|
164
|
-
if (onAuthenticated !== undefined)
|
|
178
|
+
if (onAuthenticated !== undefined) {
|
|
165
179
|
onAuthenticated();
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
if (typeof window !== "undefined")
|
|
183
|
+
window.location.assign("/");
|
|
166
184
|
}, [onAuthenticated]);
|
|
167
|
-
|
|
185
|
+
// ts-AC-1: login authenticates into the tenancy phase, not the dashboard.
|
|
186
|
+
const handleLoginAuthenticated = React.useCallback(() => {
|
|
187
|
+
setPhase({ kind: "tenancy" });
|
|
188
|
+
}, []);
|
|
189
|
+
// PRD-011c C-1 (tg-AC-8 / ts-AC-10): the gate's tenancy redirect navigates to `/onboarding`
|
|
190
|
+
// WITHOUT a `?t=` token, so a tokenless mount must not dead-end on the expired-link notice
|
|
191
|
+
// when the machine is actually installed, authenticated, and merely tenancy-unselected. The
|
|
192
|
+
// tenancy step's entire data plane is the token-free `/setup/*` surface (ts-AC-12), so probe
|
|
193
|
+
// `/setup/state` + `/setup/tenancy` (both token-free by design) and resume there directly:
|
|
194
|
+
// - authenticated + unselected -> the tenancy phase (the gated redirect's intended landing)
|
|
195
|
+
// - authenticated + selected -> straight back to `/` (nothing to resume; the gate serves it)
|
|
196
|
+
// - not authenticated -> the genuine expired-link notice (installer must re-run)
|
|
197
|
+
// An unreachable/failed probe reads as not-authenticated (fail-soft into the honest notice).
|
|
198
|
+
const [tokenlessResume, setTokenlessResume] = React.useState("probing");
|
|
199
|
+
React.useEffect(() => {
|
|
200
|
+
if (!tokenMissing)
|
|
201
|
+
return;
|
|
202
|
+
let alive = true;
|
|
203
|
+
void (async () => {
|
|
204
|
+
const [setupState, tenancy] = await Promise.all([wireClient.setupState(), wireClient.setupTenancy()]);
|
|
205
|
+
if (!alive)
|
|
206
|
+
return;
|
|
207
|
+
if (!setupState.authenticated) {
|
|
208
|
+
setTokenlessResume("expired");
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (tenancy.selected) {
|
|
212
|
+
// Tenancy is already confirmed (e.g. a stale bookmark): hand back to the
|
|
213
|
+
// gate-served dashboard without firing any funnel event. This auto-navigation is
|
|
214
|
+
// bounded by the same W-4 lap counter as the tenancy step's short-circuit: in the
|
|
215
|
+
// split-brain fault (browser reads selected, the gate's read persistently fails)
|
|
216
|
+
// the gate bounces every navigation back here, so past the allowance the flow
|
|
217
|
+
// falls through to the tenancy step, whose terminal split-brain state stops the
|
|
218
|
+
// loop with manual affordances.
|
|
219
|
+
if (consumeTenancyAutoComplete()) {
|
|
220
|
+
handleTenancyComplete();
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
setTokenlessResume("tenancy");
|
|
225
|
+
})().catch(() => {
|
|
226
|
+
// N-2: fail closed on a THROWN probe (not just a resolved failure). The wire client
|
|
227
|
+
// already never throws by contract, but the terminal-notice fallback must not depend
|
|
228
|
+
// on that guarantee: any unexpected throw reads as not-authenticated.
|
|
229
|
+
if (alive)
|
|
230
|
+
setTokenlessResume("expired");
|
|
231
|
+
});
|
|
232
|
+
return () => {
|
|
233
|
+
alive = false;
|
|
234
|
+
};
|
|
235
|
+
}, [tokenMissing, wireClient, handleTenancyComplete]);
|
|
236
|
+
if (tokenMissing) {
|
|
237
|
+
if (tokenlessResume === "probing")
|
|
238
|
+
return _jsx(LoadingPlaceholder, {});
|
|
239
|
+
if (tokenlessResume === "tenancy") {
|
|
240
|
+
return _jsx(TenancyStep, { onboardingClient: client, tenancyClient: tenancyClient, onComplete: handleTenancyComplete });
|
|
241
|
+
}
|
|
168
242
|
return _jsx(MissingTokenNotice, {});
|
|
243
|
+
}
|
|
169
244
|
switch (phase.kind) {
|
|
170
245
|
case "loading":
|
|
171
246
|
return _jsx(LoadingPlaceholder, {});
|
|
@@ -183,7 +258,9 @@ export function OnboardingScreen({ assetBase = "assets", client: clientOverride,
|
|
|
183
258
|
case "health":
|
|
184
259
|
return _jsx(HealthView, { client: client, onReady: goToLogin, pollMs: healthPollMs });
|
|
185
260
|
case "login":
|
|
186
|
-
return _jsx(LoginStep, { onboardingClient: client, wire: wire, onAuthenticated:
|
|
261
|
+
return _jsx(LoginStep, { onboardingClient: client, wire: wire, onAuthenticated: handleLoginAuthenticated, pollMs: loginPollMs });
|
|
262
|
+
case "tenancy":
|
|
263
|
+
return _jsx(TenancyStep, { onboardingClient: client, tenancyClient: tenancyClient, onComplete: handleTenancyComplete });
|
|
187
264
|
default: {
|
|
188
265
|
const exhaustive = phase;
|
|
189
266
|
return exhaustive;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-screen.js","sourceRoot":"","sources":["../../../../src/dashboard/web/onboarding/onboarding-screen.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"onboarding-screen.js","sourceRoot":"","sources":["../../../../src/dashboard/web/onboarding/onboarding-screen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRD-011a tenancy wire client: same-origin `/setup/tenancy/*` via hive's BFF proxy (no onboarding
|
|
3
|
+
* token). Mirrors `onboarding-client.ts` fail-soft discipline; lives beside it in the onboarding folder.
|
|
4
|
+
*/
|
|
5
|
+
import { type SetupTenancyWire, type TenancyCreateResponseWire, type TenancyOrgsWire, type TenancySelectResponseWire, type TenancyWorkspacesWire } from "./tenancy-contracts.js";
|
|
6
|
+
type FetchLike = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
7
|
+
export interface TenancyClientOptions {
|
|
8
|
+
readonly origin?: string;
|
|
9
|
+
readonly fetchImpl?: FetchLike;
|
|
10
|
+
}
|
|
11
|
+
export interface TenancyClient {
|
|
12
|
+
setupTenancy(): Promise<SetupTenancyWire>;
|
|
13
|
+
listOrgs(): Promise<TenancyOrgsWire>;
|
|
14
|
+
listWorkspaces(orgId: string): Promise<TenancyWorkspacesWire>;
|
|
15
|
+
selectTenancy(orgId: string, workspaceId: string): Promise<TenancySelectResponseWire | null>;
|
|
16
|
+
createWorkspace(org: string, name: string): Promise<TenancyCreateResponseWire | null>;
|
|
17
|
+
}
|
|
18
|
+
export declare function createTenancyClient(options?: TenancyClientOptions): TenancyClient;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRD-011a tenancy wire client: same-origin `/setup/tenancy/*` via hive's BFF proxy (no onboarding
|
|
3
|
+
* token). Mirrors `onboarding-client.ts` fail-soft discipline; lives beside it in the onboarding folder.
|
|
4
|
+
*/
|
|
5
|
+
import { EMPTY_TENANCY_ORGS, EMPTY_TENANCY_WORKSPACES, SetupTenancySchema, TenancyCreateResponseSchema, TenancyOrgsSchema, TenancySelectResponseSchema, TenancyWorkspacesSchema, UNSELECTED_SETUP_TENANCY, } from "./tenancy-contracts.js";
|
|
6
|
+
export function createTenancyClient(options = {}) {
|
|
7
|
+
const origin = options.origin ?? "";
|
|
8
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
9
|
+
const url = (path) => `${origin}${path}`;
|
|
10
|
+
return {
|
|
11
|
+
async setupTenancy() {
|
|
12
|
+
try {
|
|
13
|
+
const res = await fetchImpl(url("/setup/tenancy"), { headers: { accept: "application/json" } });
|
|
14
|
+
if (!res.ok)
|
|
15
|
+
return UNSELECTED_SETUP_TENANCY;
|
|
16
|
+
const parsed = SetupTenancySchema.safeParse(await res.json());
|
|
17
|
+
return parsed.success ? parsed.data : UNSELECTED_SETUP_TENANCY;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return UNSELECTED_SETUP_TENANCY;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
async listOrgs() {
|
|
24
|
+
try {
|
|
25
|
+
const res = await fetchImpl(url("/setup/tenancy/orgs"), { headers: { accept: "application/json" } });
|
|
26
|
+
if (!res.ok)
|
|
27
|
+
return EMPTY_TENANCY_ORGS;
|
|
28
|
+
const parsed = TenancyOrgsSchema.safeParse(await res.json());
|
|
29
|
+
return parsed.success ? parsed.data : EMPTY_TENANCY_ORGS;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return EMPTY_TENANCY_ORGS;
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
async listWorkspaces(orgId) {
|
|
36
|
+
try {
|
|
37
|
+
const qs = `?org=${encodeURIComponent(orgId)}`;
|
|
38
|
+
const res = await fetchImpl(url(`/setup/tenancy/workspaces${qs}`), {
|
|
39
|
+
headers: { accept: "application/json" },
|
|
40
|
+
});
|
|
41
|
+
if (!res.ok)
|
|
42
|
+
return { ...EMPTY_TENANCY_WORKSPACES, org: orgId };
|
|
43
|
+
const parsed = TenancyWorkspacesSchema.safeParse(await res.json());
|
|
44
|
+
return parsed.success ? parsed.data : { ...EMPTY_TENANCY_WORKSPACES, org: orgId };
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return { ...EMPTY_TENANCY_WORKSPACES, org: orgId };
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
async selectTenancy(orgId, workspaceId) {
|
|
51
|
+
try {
|
|
52
|
+
const res = await fetchImpl(url("/setup/tenancy/select"), {
|
|
53
|
+
method: "POST",
|
|
54
|
+
headers: { "content-type": "application/json", accept: "application/json" },
|
|
55
|
+
body: JSON.stringify({ orgId, workspaceId }),
|
|
56
|
+
});
|
|
57
|
+
if (!res.ok)
|
|
58
|
+
return null;
|
|
59
|
+
const parsed = TenancySelectResponseSchema.safeParse(await res.json());
|
|
60
|
+
return parsed.success ? parsed.data : null;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
async createWorkspace(org, name) {
|
|
67
|
+
try {
|
|
68
|
+
const res = await fetchImpl(url("/setup/tenancy/workspaces"), {
|
|
69
|
+
method: "POST",
|
|
70
|
+
headers: { "content-type": "application/json", accept: "application/json" },
|
|
71
|
+
body: JSON.stringify({ org, name }),
|
|
72
|
+
});
|
|
73
|
+
if (!res.ok)
|
|
74
|
+
return null;
|
|
75
|
+
const parsed = TenancyCreateResponseSchema.safeParse(await res.json());
|
|
76
|
+
return parsed.success ? parsed.data : null;
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=tenancy-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenancy-client.js","sourceRoot":"","sources":["../../../../src/dashboard/web/onboarding/tenancy-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRD-011a tenancy wire contract: mirrors the honeycomb PRD-073c `/setup/tenancy` family
|
|
3
|
+
* field-for-field (pinned at implementation). Same discipline as `contracts.ts` for PRD-009b:
|
|
4
|
+
* local types at the onboarding boundary, zod with `.catch()` defaults, never throw into React.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
/** `{ id, name }` pair returned by org/workspace enumeration and select acks. */
|
|
8
|
+
export declare const TenancyEntitySchema: z.ZodObject<{
|
|
9
|
+
id: z.ZodCatch<z.ZodString>;
|
|
10
|
+
name: z.ZodCatch<z.ZodString>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
export type TenancyEntityWire = z.infer<typeof TenancyEntitySchema>;
|
|
13
|
+
/**
|
|
14
|
+
* `GET /setup/tenancy`: the durable selected marker and current org/workspace read.
|
|
15
|
+
* `selected` is true ONLY after the daemon has persisted a confirmation. Reconciled against the
|
|
16
|
+
* honeycomb implementation (2026-07-04): the earlier proposed `autoSelected` field was REMOVED
|
|
17
|
+
* from the daemon contract (an auto-selection persists immediately and reads as `selected: true`,
|
|
18
|
+
* so no GET ever carries it); `confirmedBy` was ADDED and reports how the confirmation happened
|
|
19
|
+
* (`selection` = an explicit POST /setup/tenancy/select; `grandfathered` = a pre-PRD-073 credential
|
|
20
|
+
* whose existing tenancy was carried forward).
|
|
21
|
+
*/
|
|
22
|
+
export declare const SetupTenancySchema: z.ZodObject<{
|
|
23
|
+
pending: z.ZodCatch<z.ZodBoolean>;
|
|
24
|
+
selected: z.ZodCatch<z.ZodBoolean>;
|
|
25
|
+
authenticated: z.ZodCatch<z.ZodBoolean>;
|
|
26
|
+
org: z.ZodCatch<z.ZodNullable<z.ZodObject<{
|
|
27
|
+
id: z.ZodCatch<z.ZodString>;
|
|
28
|
+
name: z.ZodCatch<z.ZodString>;
|
|
29
|
+
}, z.core.$strip>>>;
|
|
30
|
+
workspace: z.ZodCatch<z.ZodNullable<z.ZodObject<{
|
|
31
|
+
id: z.ZodCatch<z.ZodString>;
|
|
32
|
+
name: z.ZodCatch<z.ZodString>;
|
|
33
|
+
}, z.core.$strip>>>;
|
|
34
|
+
confirmedBy: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
|
|
35
|
+
selection: "selection";
|
|
36
|
+
grandfathered: "grandfathered";
|
|
37
|
+
}>>>;
|
|
38
|
+
}, z.core.$strip>;
|
|
39
|
+
export type SetupTenancyWire = z.infer<typeof SetupTenancySchema>;
|
|
40
|
+
/** Honest default when the tenancy read fails or the body is malformed. */
|
|
41
|
+
export declare const UNSELECTED_SETUP_TENANCY: SetupTenancyWire;
|
|
42
|
+
/** `GET /setup/tenancy/orgs` body. */
|
|
43
|
+
export declare const TenancyOrgsSchema: z.ZodObject<{
|
|
44
|
+
orgs: z.ZodCatch<z.ZodArray<z.ZodObject<{
|
|
45
|
+
id: z.ZodCatch<z.ZodString>;
|
|
46
|
+
name: z.ZodCatch<z.ZodString>;
|
|
47
|
+
}, z.core.$strip>>>;
|
|
48
|
+
}, z.core.$strip>;
|
|
49
|
+
export type TenancyOrgsWire = z.infer<typeof TenancyOrgsSchema>;
|
|
50
|
+
export declare const EMPTY_TENANCY_ORGS: TenancyOrgsWire;
|
|
51
|
+
/** `GET /setup/tenancy/workspaces?org=` body. */
|
|
52
|
+
export declare const TenancyWorkspacesSchema: z.ZodObject<{
|
|
53
|
+
org: z.ZodCatch<z.ZodString>;
|
|
54
|
+
workspaces: z.ZodCatch<z.ZodArray<z.ZodObject<{
|
|
55
|
+
id: z.ZodCatch<z.ZodString>;
|
|
56
|
+
name: z.ZodCatch<z.ZodString>;
|
|
57
|
+
}, z.core.$strip>>>;
|
|
58
|
+
canCreate: z.ZodCatch<z.ZodBoolean>;
|
|
59
|
+
}, z.core.$strip>;
|
|
60
|
+
export type TenancyWorkspacesWire = z.infer<typeof TenancyWorkspacesSchema>;
|
|
61
|
+
export declare const EMPTY_TENANCY_WORKSPACES: TenancyWorkspacesWire;
|
|
62
|
+
/** Successful `POST /setup/tenancy/select` ack. */
|
|
63
|
+
export declare const TenancySelectOkSchema: z.ZodObject<{
|
|
64
|
+
selected: z.ZodLiteral<true>;
|
|
65
|
+
org: z.ZodObject<{
|
|
66
|
+
id: z.ZodCatch<z.ZodString>;
|
|
67
|
+
name: z.ZodCatch<z.ZodString>;
|
|
68
|
+
}, z.core.$strip>;
|
|
69
|
+
workspace: z.ZodObject<{
|
|
70
|
+
id: z.ZodCatch<z.ZodString>;
|
|
71
|
+
name: z.ZodCatch<z.ZodString>;
|
|
72
|
+
}, z.core.$strip>;
|
|
73
|
+
reminted: z.ZodCatch<z.ZodBoolean>;
|
|
74
|
+
}, z.core.$strip>;
|
|
75
|
+
/** Failed `POST /setup/tenancy/select` ack (redacted reason, no token). */
|
|
76
|
+
export declare const TenancySelectErrSchema: z.ZodObject<{
|
|
77
|
+
selected: z.ZodLiteral<false>;
|
|
78
|
+
error: z.ZodCatch<z.ZodString>;
|
|
79
|
+
}, z.core.$strip>;
|
|
80
|
+
export declare const TenancySelectResponseSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
81
|
+
selected: z.ZodLiteral<true>;
|
|
82
|
+
org: z.ZodObject<{
|
|
83
|
+
id: z.ZodCatch<z.ZodString>;
|
|
84
|
+
name: z.ZodCatch<z.ZodString>;
|
|
85
|
+
}, z.core.$strip>;
|
|
86
|
+
workspace: z.ZodObject<{
|
|
87
|
+
id: z.ZodCatch<z.ZodString>;
|
|
88
|
+
name: z.ZodCatch<z.ZodString>;
|
|
89
|
+
}, z.core.$strip>;
|
|
90
|
+
reminted: z.ZodCatch<z.ZodBoolean>;
|
|
91
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
92
|
+
selected: z.ZodLiteral<false>;
|
|
93
|
+
error: z.ZodCatch<z.ZodString>;
|
|
94
|
+
}, z.core.$strip>]>;
|
|
95
|
+
export type TenancySelectResponseWire = z.infer<typeof TenancySelectResponseSchema>;
|
|
96
|
+
/** Successful `POST /setup/tenancy/workspaces` ack. */
|
|
97
|
+
export declare const TenancyCreateOkSchema: z.ZodObject<{
|
|
98
|
+
created: z.ZodLiteral<true>;
|
|
99
|
+
workspace: z.ZodObject<{
|
|
100
|
+
id: z.ZodCatch<z.ZodString>;
|
|
101
|
+
name: z.ZodCatch<z.ZodString>;
|
|
102
|
+
}, z.core.$strip>;
|
|
103
|
+
}, z.core.$strip>;
|
|
104
|
+
/** Failed `POST /setup/tenancy/workspaces` ack. */
|
|
105
|
+
export declare const TenancyCreateErrSchema: z.ZodObject<{
|
|
106
|
+
created: z.ZodLiteral<false>;
|
|
107
|
+
error: z.ZodCatch<z.ZodString>;
|
|
108
|
+
}, z.core.$strip>;
|
|
109
|
+
export declare const TenancyCreateResponseSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
110
|
+
created: z.ZodLiteral<true>;
|
|
111
|
+
workspace: z.ZodObject<{
|
|
112
|
+
id: z.ZodCatch<z.ZodString>;
|
|
113
|
+
name: z.ZodCatch<z.ZodString>;
|
|
114
|
+
}, z.core.$strip>;
|
|
115
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
116
|
+
created: z.ZodLiteral<false>;
|
|
117
|
+
error: z.ZodCatch<z.ZodString>;
|
|
118
|
+
}, z.core.$strip>]>;
|
|
119
|
+
export type TenancyCreateResponseWire = z.infer<typeof TenancyCreateResponseSchema>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRD-011a tenancy wire contract: mirrors the honeycomb PRD-073c `/setup/tenancy` family
|
|
3
|
+
* field-for-field (pinned at implementation). Same discipline as `contracts.ts` for PRD-009b:
|
|
4
|
+
* local types at the onboarding boundary, zod with `.catch()` defaults, never throw into React.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
/** `{ id, name }` pair returned by org/workspace enumeration and select acks. */
|
|
8
|
+
export const TenancyEntitySchema = z.object({
|
|
9
|
+
id: z.string().catch(""),
|
|
10
|
+
name: z.string().catch(""),
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* `GET /setup/tenancy`: the durable selected marker and current org/workspace read.
|
|
14
|
+
* `selected` is true ONLY after the daemon has persisted a confirmation. Reconciled against the
|
|
15
|
+
* honeycomb implementation (2026-07-04): the earlier proposed `autoSelected` field was REMOVED
|
|
16
|
+
* from the daemon contract (an auto-selection persists immediately and reads as `selected: true`,
|
|
17
|
+
* so no GET ever carries it); `confirmedBy` was ADDED and reports how the confirmation happened
|
|
18
|
+
* (`selection` = an explicit POST /setup/tenancy/select; `grandfathered` = a pre-PRD-073 credential
|
|
19
|
+
* whose existing tenancy was carried forward).
|
|
20
|
+
*/
|
|
21
|
+
export const SetupTenancySchema = z.object({
|
|
22
|
+
pending: z.boolean().catch(true),
|
|
23
|
+
selected: z.boolean().catch(false),
|
|
24
|
+
authenticated: z.boolean().catch(false),
|
|
25
|
+
org: TenancyEntitySchema.nullable().catch(null),
|
|
26
|
+
workspace: TenancyEntitySchema.nullable().catch(null),
|
|
27
|
+
// `.catch(undefined)` keeps the module's fail-soft rule: a malformed confirmedBy value must
|
|
28
|
+
// degrade to "absent" (the field is cosmetic), never fail the whole tenancy read.
|
|
29
|
+
confirmedBy: z.enum(["selection", "grandfathered"]).optional().catch(undefined),
|
|
30
|
+
});
|
|
31
|
+
/** Honest default when the tenancy read fails or the body is malformed. */
|
|
32
|
+
export const UNSELECTED_SETUP_TENANCY = Object.freeze({
|
|
33
|
+
pending: true,
|
|
34
|
+
selected: false,
|
|
35
|
+
authenticated: false,
|
|
36
|
+
org: null,
|
|
37
|
+
workspace: null,
|
|
38
|
+
});
|
|
39
|
+
/** `GET /setup/tenancy/orgs` body. */
|
|
40
|
+
export const TenancyOrgsSchema = z.object({
|
|
41
|
+
orgs: z.array(TenancyEntitySchema).catch([]),
|
|
42
|
+
});
|
|
43
|
+
export const EMPTY_TENANCY_ORGS = Object.freeze({ orgs: [] });
|
|
44
|
+
/** `GET /setup/tenancy/workspaces?org=` body. */
|
|
45
|
+
export const TenancyWorkspacesSchema = z.object({
|
|
46
|
+
org: z.string().catch(""),
|
|
47
|
+
workspaces: z.array(TenancyEntitySchema).catch([]),
|
|
48
|
+
canCreate: z.boolean().catch(false),
|
|
49
|
+
});
|
|
50
|
+
export const EMPTY_TENANCY_WORKSPACES = Object.freeze({
|
|
51
|
+
org: "",
|
|
52
|
+
workspaces: [],
|
|
53
|
+
canCreate: false,
|
|
54
|
+
});
|
|
55
|
+
/** Successful `POST /setup/tenancy/select` ack. */
|
|
56
|
+
export const TenancySelectOkSchema = z.object({
|
|
57
|
+
selected: z.literal(true),
|
|
58
|
+
org: TenancyEntitySchema,
|
|
59
|
+
workspace: TenancyEntitySchema,
|
|
60
|
+
reminted: z.boolean().catch(false),
|
|
61
|
+
});
|
|
62
|
+
/** Failed `POST /setup/tenancy/select` ack (redacted reason, no token). */
|
|
63
|
+
export const TenancySelectErrSchema = z.object({
|
|
64
|
+
selected: z.literal(false),
|
|
65
|
+
error: z.string().catch("Selection could not be saved."),
|
|
66
|
+
});
|
|
67
|
+
export const TenancySelectResponseSchema = z.union([TenancySelectOkSchema, TenancySelectErrSchema]);
|
|
68
|
+
/** Successful `POST /setup/tenancy/workspaces` ack. */
|
|
69
|
+
export const TenancyCreateOkSchema = z.object({
|
|
70
|
+
created: z.literal(true),
|
|
71
|
+
workspace: TenancyEntitySchema,
|
|
72
|
+
});
|
|
73
|
+
/** Failed `POST /setup/tenancy/workspaces` ack. */
|
|
74
|
+
export const TenancyCreateErrSchema = z.object({
|
|
75
|
+
created: z.literal(false),
|
|
76
|
+
error: z.string().catch("Workspace could not be created."),
|
|
77
|
+
});
|
|
78
|
+
export const TenancyCreateResponseSchema = z.union([TenancyCreateOkSchema, TenancyCreateErrSchema]);
|
|
79
|
+
//# sourceMappingURL=tenancy-contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenancy-contracts.js","sourceRoot":"","sources":["../../../../src/dashboard/web/onboarding/tenancy-contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRD-011a: the mandatory org + workspace selection step in the onboarding flow.
|
|
3
|
+
* Enters after device-code login succeeds; terminal handoff runs only after `selected: true`.
|
|
4
|
+
*/
|
|
5
|
+
import React from "react";
|
|
6
|
+
import type { OnboardingClient } from "./onboarding-client.js";
|
|
7
|
+
import { type TenancyClient } from "./tenancy-client.js";
|
|
8
|
+
/**
|
|
9
|
+
* W-4 loop-breaker: how many CONSECUTIVE automatic short-circuits (hydrate reads `selected: true`
|
|
10
|
+
* and the step auto-navigates to `/`) are allowed before the step stops reloading and renders a
|
|
11
|
+
* terminal manual state. In the split-brain fault (the browser's proxied tenancy read says
|
|
12
|
+
* selected while the gate's server-side read persistently fails), each auto-navigation bounces
|
|
13
|
+
* off the gate straight back here; without a bound that is an infinite reload loop re-firing
|
|
14
|
+
* `dashboard_reached` and `POST /api/onboarding/complete` every lap.
|
|
15
|
+
*/
|
|
16
|
+
export declare const TENANCY_AUTO_COMPLETE_LIMIT: 2;
|
|
17
|
+
/**
|
|
18
|
+
* Consume one lap of the bounded auto short-circuit allowance. Returns true (and records the lap)
|
|
19
|
+
* while within {@link TENANCY_AUTO_COMPLETE_LIMIT}; returns false once exceeded, at which point
|
|
20
|
+
* the caller must stop auto-navigating and surface the terminal split-brain state. Shared with
|
|
21
|
+
* the tokenless resume probe in `onboarding-screen.tsx`, the other automatic navigator on the
|
|
22
|
+
* split-brain lap.
|
|
23
|
+
*/
|
|
24
|
+
export declare function consumeTenancyAutoComplete(): boolean;
|
|
25
|
+
/** Reset the auto short-circuit counter (a live picker flow or an explicit operator action). */
|
|
26
|
+
export declare function resetTenancyAutoComplete(): void;
|
|
27
|
+
export interface TenancyStepProps {
|
|
28
|
+
readonly onboardingClient: OnboardingClient;
|
|
29
|
+
readonly tenancyClient?: TenancyClient;
|
|
30
|
+
readonly onComplete?: () => void;
|
|
31
|
+
}
|
|
32
|
+
export declare function TenancyStep({ onboardingClient, tenancyClient: tenancyOverride, onComplete }: TenancyStepProps): React.JSX.Element;
|