@fluojs/studio 1.0.7 → 2.0.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.
@@ -0,0 +1 @@
1
+ :root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#e5e7eb;background:#070b16;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{color:#e5e7eb;background:radial-gradient(circle at 0 0,#3b82f638,#0000 34rem),radial-gradient(circle at 80% 10%,#0ea5e929,#0000 28rem),linear-gradient(#07101f 0%,#0b1020 55%,#070b16 100%);min-height:100vh;margin:0}button,input{font:inherit}main{width:min(1480px,100vw - 32px);margin:0 auto;padding:28px 0 48px}h1,h2,h3,h4,p{margin-top:0}h1{letter-spacing:-.065em;margin-bottom:12px;font-size:clamp(34px,5vw,68px);line-height:.95}h2{letter-spacing:-.03em;margin-bottom:10px;font-size:22px}h3{margin-bottom:8px}p{line-height:1.65}code{color:#bfdbfe;background:#0f172ad1;border:1px solid #94a3b842;border-radius:8px;padding:2px 7px}.studio-hero{background:linear-gradient(135deg,#0f172ac2,#1e293b94);border:1px solid #93c5fd33;border-radius:28px;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:24px;margin-bottom:18px;padding:32px;display:grid;box-shadow:0 28px 90px #00000047}.studio-hero p{color:#b6c4d8;max-width:820px}.hero-command{white-space:nowrap;background:#0f172ae6;border:1px solid #60a5fa6b;border-radius:18px;padding:14px 18px;box-shadow:inset 0 1px #ffffff0d}.card{background:linear-gradient(#0f172ae0,#111827d1);border:1px solid #94a3b833;border-radius:22px;margin-bottom:16px;padding:18px;box-shadow:0 20px 80px #00000038}.section-title-row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.eyebrow{color:#93c5fd;letter-spacing:.12em;text-transform:uppercase;margin:0 0 6px;font-size:12px;font-weight:800}.mode-badge,.status-pill,.chip{color:#cbd5e1;background:#0f172ab8;border:1px solid #94a3b83d;border-radius:999px;align-items:center;padding:5px 10px;font-size:12px;line-height:1.2;display:inline-flex}.mode-badge{color:#bfdbfe}.status-pill-success{color:#bbf7d0;border-color:#22c55e5c}.status-pill-warning{color:#fde68a;border-color:#f59e0b6b}.status-pill-danger{color:#fecaca;border-color:#f871716b}.status-pill-accent{color:#bfdbfe;border-color:#60a5fa6b}.status-pill-muted{color:#94a3b8}.chips{flex-wrap:wrap;gap:7px;margin-bottom:10px;display:flex}.muted{color:#94a3b8}.notice{color:#93c5fd;margin:12px 0 0}.actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}button{color:#fff;cursor:pointer;background:linear-gradient(#2563eb,#1d4ed8);border:1px solid #60a5fa52;border-radius:12px;padding:9px 13px}button:disabled{cursor:not-allowed;background:#475569;border-color:#64748b47}button:hover:not(:disabled),button:focus-visible:not(:disabled){border-color:#93c5fdcc;outline:none;transform:translateY(-1px)}label{margin-bottom:10px;display:block}input[type=text]{color:#e5e7eb;background:#0f172ad1;border:1px solid #94a3b847;border-radius:12px;width:100%;margin-top:6px;padding:10px 12px}input[type=file]{border:1px dashed #94a3b85c;border-radius:14px;width:100%;padding:16px}.filter-row{flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:10px;display:flex}.filter-row span{color:#cbd5e1;font-weight:700}.uploader.drag-active{border-color:#60a5fa;box-shadow:inset 0 0 0 2px #60a5fa59}.live-connection{position:relative;overflow:hidden}.live-connection:before{content:"";pointer-events:none;background:radial-gradient(circle at 0 0,#22d3ee24,#0000 26rem);position:absolute;inset:0}.live-status-main{justify-content:space-between;align-items:flex-start;gap:18px;display:flex;position:relative}.connection-orb-wrap{text-transform:uppercase;justify-items:center;gap:8px;min-width:120px;display:grid}.connection-orb{background:#64748b;border-radius:999px;width:22px;height:22px;display:block;box-shadow:0 0 30px #64748bcc}.connection-connected .connection-orb{background:#22c55e;box-shadow:0 0 35px #22c55ec7}.connection-connecting .connection-orb,.connection-reconnecting .connection-orb,.connection-restarting .connection-orb{background:#f59e0b;box-shadow:0 0 35px #f59e0bcc}.connection-stale .connection-orb,.connection-error .connection-orb,.connection-disconnected .connection-orb{background:#ef4444;box-shadow:0 0 35px #ef4444c7}.dashboard-grid{grid-template-columns:minmax(0,1.25fr) minmax(360px,.75fr);align-items:start;gap:16px;display:grid}.live-graph-card,.timing-card,.live-diagnostics-card{grid-column:1/-1}.live-graph-layout,.routes-layout,.request-layout{grid-template-columns:minmax(0,1fr) minmax(280px,.34fr);gap:16px;display:grid}.live-graph-canvas,#graph-host{background:#020617ad;border:1px solid #94a3b82e;border-radius:18px;min-height:320px;overflow:auto}.live-graph-canvas svg,#graph-host svg{width:100%;min-width:780px}.live-edge{stroke:#64748b99;stroke-width:1.4px}.live-edge-highlighted{stroke:#f59e0b;stroke-width:2.4px}.live-edge-arrow{fill:#64748b}.live-edge-label{fill:#fde68a;paint-order:stroke;stroke:#020617;stroke-width:3px;font-size:11px}.live-node rect{fill:#1e293bf5;stroke:#94a3b873;stroke-width:1.2px}.live-node text{fill:#e5e7eb;text-anchor:middle;pointer-events:none;font-size:11px}.live-node .live-node-kind{fill:#94a3b8;font-size:10px}.live-node-module rect,.live-node-active rect{fill:#1e40afeb}.live-node-provider rect{fill:#14532de0}.live-node-controller rect{fill:#5b21b6e0}.live-node-route rect{fill:#0c4a6ee0}.live-node-external rect,.live-node-platform rect{fill:#475569e0}.live-node-selected rect{stroke:#fbbf24;stroke-width:3px}.live-node-related rect{stroke:#38bdf8;stroke-width:2.2px}.live-graph-details,.route-detail,.request-detail{background:#0f172aa8;border:1px solid #94a3b82e;border-radius:18px;padding:14px}.edge-list,.route-list,.request-timeline{gap:8px;display:grid}.edge-row,.route-row,.request-row,.connection-button{color:#e5e7eb;text-align:left;background:#0f172adb;border-color:#94a3b82e;gap:4px;width:100%;display:grid}.edge-row span,.route-row small,.request-row small,.connection-button small{color:#94a3b8}.route-row-selected,.request-row-selected{border-color:#60a5fa;box-shadow:inset 0 0 0 1px #60a5fa3d}.method{color:#bfdbfe;background:#60a5fa29;border-radius:999px;width:fit-content;padding:3px 7px;font-size:11px;font-weight:800}.request-row-danger{border-color:#f871716b}.request-row-success{border-color:#22c55e52}.request-row-accent{border-color:#60a5fa5c}.timing-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;display:grid}.timing-total{background:#0f172aa8;border:1px solid #94a3b82e;border-radius:14px;justify-content:space-between;align-items:baseline;margin-bottom:10px;padding:10px 12px;display:flex}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid #94a3b82e;padding:8px 6px;font-size:13px}pre{background:#020617b8;border:1px solid #94a3b82e;border-radius:14px;max-height:340px;padding:14px;overflow:auto}.split-grid,.section-pair{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;display:grid}.empty-state{color:#94a3b8;border:1px dashed #94a3b852;border-radius:16px;place-items:start;gap:4px;padding:18px;display:grid}.empty-state strong{color:#e5e7eb}.edge-line{stroke:#64748b;stroke-width:1.6px}.edge-selected{stroke:#f59e0b;stroke-width:2.6px}.edge-arrow{fill:#64748b}.module-node{fill:#1e293b;stroke:#64748b;stroke-width:1.5px;cursor:pointer}.module-node:focus-visible{stroke:#60a5fa;stroke-width:3px;outline:none}.module-root{stroke:#3b82f6;stroke-width:2.6px}.component-ready{fill:#14532d}.component-degraded{fill:#7c2d12}.component-not-ready{fill:#7f1d1d}.component-external{fill:#312e81;cursor:default}.module-selected{stroke:#f59e0b;stroke-width:3px}.module-neighbor{stroke:#38bdf8;stroke-width:2.6px}.module-dependent{stroke:#a78bfa;stroke-width:2.6px}.module-label{fill:#e5e7eb;pointer-events:none;font-size:11px}.diagnostics-list{gap:12px;display:grid}.issue{margin-bottom:0}.issue.severity-error,.inline-diagnostic.severity-error{border-color:#ef4444}.issue.severity-warning{border-color:#f59e0b}.issue.severity-info{border-color:#3b82f6}.inline-diagnostic{background:#7f1d1d3d;border:1px solid #f8717161;border-radius:14px;padding:12px}a{color:#93c5fd}.inspector-card{background:linear-gradient(135deg,#0f172af5,#111827eb)}.connection-hero{background:#0f172ad1;border:1px solid #94a3b833;border-radius:16px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px;padding:14px;display:flex}.connection-metrics{flex-wrap:wrap;gap:8px;display:flex}.connection-metrics span,.connection-pill{color:#cbd5e1;background:#111827e0;border:1px solid #94a3b83d;border-radius:999px;padding:6px 10px;font-size:12px}.connection-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;display:grid}.connection-group h4{margin:0 0 8px}.connection-button:hover,.connection-button:focus-visible{border-color:#60a5fa;outline:none}.connection-button span,.connection-button small{display:block}.external-pill{margin:0 6px 6px 0;display:inline-block}.connection-diagnostic{border-left:3px solid #64748b;margin-bottom:8px;padding:8px 0 8px 10px}.connection-diagnostic.severity-error{border-left-color:#ef4444}.connection-diagnostic.severity-warning{border-left-color:#f59e0b}.connection-diagnostic.severity-info{border-left-color:#3b82f6}.connection-diagnostic span{color:#94a3b8;margin-top:2px;font-size:12px;display:block}.connection-diagnostic p{margin:6px 0 0}@media (width<=960px){main{width:min(100vw - 20px,920px);padding-top:14px}.studio-hero,.dashboard-grid,.live-graph-layout,.routes-layout,.request-layout{grid-template-columns:1fr}.hero-command{width:fit-content}}
@@ -1,11 +1,91 @@
1
- import type { BootstrapTimingDiagnostics, PlatformDiagnosticIssue, PlatformShellSnapshot, PlatformSnapshot } from '@fluojs/runtime';
2
- export type { PlatformDiagnosticIssue, PlatformShellSnapshot } from '@fluojs/runtime';
3
1
  /**
4
- * Readiness statuses supported by Studio snapshot filtering and graph annotations.
2
+ * Runtime-neutral diagnostics contract consumed by Studio inspect artifacts.
3
+ *
4
+ * Runtime produces values with this structural shape, but Studio owns the
5
+ * consumer-side declaration so its Node engine support is not coupled to the
6
+ * runtime package's engine range.
5
7
  */
6
- export type PlatformReadinessStatus = PlatformSnapshot['readiness']['status'];
8
+ export type PlatformReadinessStatus = 'ready' | 'not-ready' | 'degraded';
9
+ /** Health statuses supported by Studio snapshot parsing. */
10
+ export type PlatformHealthStatus = 'healthy' | 'unhealthy' | 'degraded';
11
+ /** Lifecycle states supported by Studio component diagnostics. */
12
+ export type PlatformState = 'created' | 'validated' | 'starting' | 'ready' | 'degraded' | 'stopping' | 'stopped' | 'failed';
13
+ /** Outcome for one named readiness or health probe in a platform report. */
14
+ export interface PlatformCheckResult {
15
+ name: string;
16
+ status: 'pass' | 'fail' | 'degraded';
17
+ message?: string;
18
+ }
19
+ /** Readiness semantics consumed from a platform inspection artifact. */
20
+ export interface PlatformReadinessReport {
21
+ status: PlatformReadinessStatus;
22
+ critical: boolean;
23
+ reason?: string;
24
+ checks?: PlatformCheckResult[];
25
+ }
26
+ /** Health semantics consumed from a platform inspection artifact. */
27
+ export interface PlatformHealthReport {
28
+ status: PlatformHealthStatus;
29
+ reason?: string;
30
+ checks?: PlatformCheckResult[];
31
+ }
32
+ /** Machine-readable issue emitted in a platform inspection artifact. */
33
+ export interface PlatformDiagnosticIssue {
34
+ code: string;
35
+ severity: 'error' | 'warning' | 'info';
36
+ componentId: string;
37
+ message: string;
38
+ cause?: string;
39
+ fixHint?: string;
40
+ dependsOn?: string[];
41
+ docsUrl?: string;
42
+ }
43
+ /** Component snapshot consumed by Studio graph and diagnostics views. */
44
+ export interface PlatformSnapshot {
45
+ id: string;
46
+ kind: string;
47
+ state: PlatformState;
48
+ readiness: {
49
+ status: PlatformReadinessStatus;
50
+ critical: boolean;
51
+ reason?: string;
52
+ };
53
+ health: {
54
+ status: PlatformHealthStatus;
55
+ reason?: string;
56
+ };
57
+ dependencies: string[];
58
+ telemetry: {
59
+ namespace: string;
60
+ tags: Record<string, string>;
61
+ };
62
+ ownership: {
63
+ ownsResources: boolean;
64
+ externallyManaged: boolean;
65
+ };
66
+ details: Record<string, unknown>;
67
+ }
68
+ /** Aggregate platform snapshot consumed by Studio static diagnostics. */
69
+ export interface PlatformShellSnapshot {
70
+ generatedAt: string;
71
+ readiness: PlatformReadinessReport;
72
+ health: PlatformHealthReport;
73
+ components: PlatformSnapshot[];
74
+ diagnostics: PlatformDiagnosticIssue[];
75
+ }
76
+ /** One bootstrap timing phase represented in a Studio artifact. */
77
+ export interface BootstrapTimingPhase {
78
+ durationMs: number;
79
+ name: 'bootstrap_module' | 'register_runtime_tokens' | 'resolve_lifecycle_instances' | 'run_bootstrap_lifecycle' | 'create_dispatcher';
80
+ }
81
+ /** Bootstrap timing diagnostics consumed by Studio reports and live events. */
82
+ export interface BootstrapTimingDiagnostics {
83
+ phases: BootstrapTimingPhase[];
84
+ totalMs: number;
85
+ version: 1;
86
+ }
7
87
  /**
8
- * Diagnostic severities supported by Studio snapshot filtering.
88
+ * Readiness statuses supported by Studio snapshot filtering and graph annotations.
9
89
  */
10
90
  export type PlatformDiagnosticSeverity = PlatformDiagnosticIssue['severity'];
11
91
  /**
@@ -25,7 +105,7 @@ export interface StudioReportSummary {
25
105
  */
26
106
  export interface StudioReportArtifact {
27
107
  generatedAt: string;
28
- snapshot: PlatformShellSnapshot;
108
+ snapshot: StudioInspectionSnapshot;
29
109
  summary: StudioReportSummary;
30
110
  timing: BootstrapTimingDiagnostics;
31
111
  version: 1;
@@ -35,7 +115,7 @@ export interface StudioReportArtifact {
35
115
  */
36
116
  export interface StudioPayload {
37
117
  report?: StudioReportArtifact;
38
- snapshot?: PlatformShellSnapshot;
118
+ snapshot?: StudioInspectionSnapshot;
39
119
  timing?: BootstrapTimingDiagnostics;
40
120
  }
41
121
  /** Live Studio graph node kinds emitted by runtime-connected devtools. */
@@ -59,16 +139,37 @@ export interface StudioGraphEdge {
59
139
  metadata?: Record<string, unknown>;
60
140
  to: string;
61
141
  }
142
+ /** Route kinds accepted by the Studio live wire contract. */
143
+ export type StudioRouteKind = string;
62
144
  /** Route descriptor projected into the live Studio UI. */
63
145
  export interface StudioRouteDescriptor {
64
146
  controller: string;
147
+ graphNodeId?: string;
65
148
  handler: string;
66
149
  id: string;
150
+ kind?: StudioRouteKind;
67
151
  method: string;
68
152
  module?: string;
153
+ params?: string[];
69
154
  path: string;
70
155
  version?: string;
71
156
  }
157
+ /** Route descriptor returned after Studio normalizes legacy wire defaults. */
158
+ export interface StudioNormalizedRouteDescriptor extends Omit<StudioRouteDescriptor, 'graphNodeId' | 'kind' | 'params'> {
159
+ graphNodeId: string;
160
+ kind: StudioRouteKind;
161
+ params: string[];
162
+ }
163
+ /** Route descriptor emitted by Runtime producers after legacy defaults are resolved. */
164
+ export type StudioProducerRouteDescriptor = StudioNormalizedRouteDescriptor;
165
+ /** Static inspect snapshot with optional compiled route diagnostics. */
166
+ export interface StudioInspectionSnapshot extends PlatformShellSnapshot {
167
+ routes?: StudioRouteDescriptor[];
168
+ }
169
+ /** Static inspect snapshot returned after route entries are normalized. */
170
+ export interface StudioParsedInspectionSnapshot extends Omit<StudioInspectionSnapshot, 'routes'> {
171
+ routes?: StudioNormalizedRouteDescriptor[];
172
+ }
72
173
  /** Request lifecycle status understood by the live Studio request-flow panel. */
73
174
  export type StudioRequestStatus = 'started' | 'matched' | 'succeeded' | 'failed' | 'finished';
74
175
  /** Request trace emitted by runtime observers without request/response bodies. */
@@ -113,6 +214,12 @@ export interface StudioLiveSnapshot {
113
214
  timing?: BootstrapTimingDiagnostics;
114
215
  version: 1;
115
216
  }
217
+ /** Live snapshot returned after route entries are normalized. */
218
+ export interface StudioParsedLiveSnapshot extends Omit<StudioLiveSnapshot, 'routes'> {
219
+ routes: StudioNormalizedRouteDescriptor[];
220
+ }
221
+ /** Live snapshot emitted by Runtime producers with normalized route fields. */
222
+ export type StudioProducerLiveSnapshot = StudioParsedLiveSnapshot;
116
223
  /** Studio connection status presented by the live UI. */
117
224
  export type StudioConnectionStatus = 'connected' | 'connecting' | 'disconnected' | 'error' | 'reconnecting' | 'restarting' | 'stale' | 'static';
118
225
  /** Studio connection state used by sidecar/UI state machines. */
@@ -158,6 +265,10 @@ export interface StudioDisconnectPayload {
158
265
  }
159
266
  /** Event envelope exchanged between runtime, CLI sidecar, and Studio UI. */
160
267
  export type StudioLiveEvent = StudioLiveEventBase<'disconnect', StudioDisconnectPayload> | StudioLiveEventBase<'diagnostic', StudioLiveDiagnostic> | StudioLiveEventBase<'heartbeat', StudioHeartbeatPayload> | StudioLiveEventBase<'request', StudioRequestTrace> | StudioLiveEventBase<'restart', StudioRestartPayload> | StudioLiveEventBase<'snapshot', StudioLiveSnapshot> | StudioLiveEventBase<'timing', BootstrapTimingDiagnostics>;
268
+ /** Live event returned after Studio validates and normalizes its payload. */
269
+ export type StudioParsedLiveEvent = StudioLiveEventBase<'disconnect', StudioDisconnectPayload> | StudioLiveEventBase<'diagnostic', StudioLiveDiagnostic> | StudioLiveEventBase<'heartbeat', StudioHeartbeatPayload> | StudioLiveEventBase<'request', StudioRequestTrace> | StudioLiveEventBase<'restart', StudioRestartPayload> | StudioLiveEventBase<'snapshot', StudioParsedLiveSnapshot> | StudioLiveEventBase<'timing', BootstrapTimingDiagnostics>;
270
+ /** Live event emitted by Runtime producers with normalized snapshot routes. */
271
+ export type StudioProducerLiveEvent = StudioLiveEventBase<'disconnect', StudioDisconnectPayload> | StudioLiveEventBase<'diagnostic', StudioLiveDiagnostic> | StudioLiveEventBase<'heartbeat', StudioHeartbeatPayload> | StudioLiveEventBase<'request', StudioRequestTrace> | StudioLiveEventBase<'restart', StudioRestartPayload> | StudioLiveEventBase<'snapshot', StudioProducerLiveSnapshot> | StudioLiveEventBase<'timing', BootstrapTimingDiagnostics>;
161
272
  /**
162
273
  * Filter state applied to the loaded platform snapshot inside Studio.
163
274
  */
@@ -170,9 +281,19 @@ export interface FilterState {
170
281
  * Parsed Studio payload together with the original JSON source.
171
282
  */
172
283
  export interface ParsedPayload {
173
- payload: StudioPayload;
284
+ payload: StudioParsedPayload;
174
285
  rawJson: string;
175
286
  }
287
+ /** Report artifact returned after compiled route entries are normalized. */
288
+ export interface StudioParsedReportArtifact extends Omit<StudioReportArtifact, 'snapshot'> {
289
+ snapshot: StudioParsedInspectionSnapshot;
290
+ }
291
+ /** Studio payload returned after compiled route entries are normalized. */
292
+ export interface StudioParsedPayload {
293
+ report?: StudioParsedReportArtifact;
294
+ snapshot?: StudioParsedInspectionSnapshot;
295
+ timing?: BootstrapTimingDiagnostics;
296
+ }
176
297
  /**
177
298
  * Validates a runtime-connected Studio event envelope.
178
299
  *
@@ -180,14 +301,14 @@ export interface ParsedPayload {
180
301
  * @returns The typed Studio live event.
181
302
  * @throws Error when the event does not match the live Studio contract.
182
303
  */
183
- export declare function validateStudioLiveEvent(value: unknown): StudioLiveEvent;
304
+ export declare function validateStudioLiveEvent(value: unknown): StudioParsedLiveEvent;
184
305
  /**
185
306
  * Parses a live Studio event JSON envelope from the runtime sidecar stream.
186
307
  *
187
308
  * @param rawJson Raw JSON encoded event.
188
309
  * @returns The validated Studio live event.
189
310
  */
190
- export declare function parseStudioLiveEvent(rawJson: string): StudioLiveEvent;
311
+ export declare function parseStudioLiveEvent(rawJson: string): StudioParsedLiveEvent;
191
312
  /**
192
313
  * Runtime-safe type guard for Studio live event envelopes.
193
314
  *
@@ -210,7 +331,7 @@ export declare function parseStudioPayload(rawJson: string): ParsedPayload;
210
331
  * @param filter - Active readiness, severity, and query filters.
211
332
  * @returns A filtered snapshot containing only the matching components and diagnostics.
212
333
  */
213
- export declare function applyFilters(snapshot: PlatformShellSnapshot, filter: FilterState): PlatformShellSnapshot;
334
+ export declare function applyFilters<TSnapshot extends PlatformShellSnapshot>(snapshot: TSnapshot, filter: FilterState): TSnapshot;
214
335
  /**
215
336
  * Renders the loaded platform snapshot as a Mermaid dependency graph.
216
337
  *
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
package/dist/contracts.js CHANGED
@@ -1,9 +1,33 @@
1
1
  /**
2
- * Readiness statuses supported by Studio snapshot filtering and graph annotations.
2
+ * Runtime-neutral diagnostics contract consumed by Studio inspect artifacts.
3
+ *
4
+ * Runtime produces values with this structural shape, but Studio owns the
5
+ * consumer-side declaration so its Node engine support is not coupled to the
6
+ * runtime package's engine range.
3
7
  */
4
8
 
9
+ /** Health statuses supported by Studio snapshot parsing. */
10
+
11
+ /** Lifecycle states supported by Studio component diagnostics. */
12
+
13
+ /** Outcome for one named readiness or health probe in a platform report. */
14
+
15
+ /** Readiness semantics consumed from a platform inspection artifact. */
16
+
17
+ /** Health semantics consumed from a platform inspection artifact. */
18
+
19
+ /** Machine-readable issue emitted in a platform inspection artifact. */
20
+
21
+ /** Component snapshot consumed by Studio graph and diagnostics views. */
22
+
23
+ /** Aggregate platform snapshot consumed by Studio static diagnostics. */
24
+
25
+ /** One bootstrap timing phase represented in a Studio artifact. */
26
+
27
+ /** Bootstrap timing diagnostics consumed by Studio reports and live events. */
28
+
5
29
  /**
6
- * Diagnostic severities supported by Studio snapshot filtering.
30
+ * Readiness statuses supported by Studio snapshot filtering and graph annotations.
7
31
  */
8
32
 
9
33
  /**
@@ -26,8 +50,18 @@
26
50
 
27
51
  /** Serializable edge in the runtime-connected Studio dependency graph. */
28
52
 
53
+ /** Route kinds accepted by the Studio live wire contract. */
54
+
29
55
  /** Route descriptor projected into the live Studio UI. */
30
56
 
57
+ /** Route descriptor returned after Studio normalizes legacy wire defaults. */
58
+
59
+ /** Route descriptor emitted by Runtime producers after legacy defaults are resolved. */
60
+
61
+ /** Static inspect snapshot with optional compiled route diagnostics. */
62
+
63
+ /** Static inspect snapshot returned after route entries are normalized. */
64
+
31
65
  /** Request lifecycle status understood by the live Studio request-flow panel. */
32
66
 
33
67
  /** Request trace emitted by runtime observers without request/response bodies. */
@@ -36,6 +70,10 @@
36
70
 
37
71
  /** Live snapshot consumed by the React Studio shell and sidecar replay cache. */
38
72
 
73
+ /** Live snapshot returned after route entries are normalized. */
74
+
75
+ /** Live snapshot emitted by Runtime producers with normalized route fields. */
76
+
39
77
  /** Studio connection status presented by the live UI. */
40
78
 
41
79
  /** Studio connection state used by sidecar/UI state machines. */
@@ -58,6 +96,10 @@
58
96
 
59
97
  /** Event envelope exchanged between runtime, CLI sidecar, and Studio UI. */
60
98
 
99
+ /** Live event returned after Studio validates and normalizes its payload. */
100
+
101
+ /** Live event emitted by Runtime producers with normalized snapshot routes. */
102
+
61
103
  /**
62
104
  * Filter state applied to the loaded platform snapshot inside Studio.
63
105
  */
@@ -66,10 +108,10 @@
66
108
  * Parsed Studio payload together with the original JSON source.
67
109
  */
68
110
 
69
- const originalComponentsByFilteredSnapshot = new WeakMap();
70
- function internalComponentIdsFor(snapshot) {
71
- return new Set((originalComponentsByFilteredSnapshot.get(snapshot) ?? snapshot.components).map(component => component.id));
72
- }
111
+ /** Report artifact returned after compiled route entries are normalized. */
112
+
113
+ /** Studio payload returned after compiled route entries are normalized. */
114
+
73
115
  function isRecord(value) {
74
116
  return typeof value === 'object' && value !== null;
75
117
  }
@@ -130,6 +172,16 @@ function isStudioGraphEdgeKind(value) {
130
172
  function isStudioRequestStatus(value) {
131
173
  return value === 'started' || value === 'matched' || value === 'succeeded' || value === 'failed' || value === 'finished';
132
174
  }
175
+ const bootstrapTimingPhaseNames = {
176
+ bootstrap_module: true,
177
+ register_runtime_tokens: true,
178
+ resolve_lifecycle_instances: true,
179
+ run_bootstrap_lifecycle: true,
180
+ create_dispatcher: true
181
+ };
182
+ function isBootstrapTimingPhaseName(value) {
183
+ return typeof value === 'string' && Object.hasOwn(bootstrapTimingPhaseNames, value);
184
+ }
133
185
  function validateStudioGraphNode(value) {
134
186
  if (!isRecord(value) || !isStudioGraphNodeKind(value.kind)) {
135
187
  throw new Error('Invalid Studio live graph node payload.');
@@ -175,11 +227,23 @@ function validateStudioRouteDescriptor(value) {
175
227
  if (!isRecord(value)) {
176
228
  throw new Error('Invalid Studio live route descriptor payload.');
177
229
  }
230
+ const kind = value.kind;
231
+ if (kind !== undefined && typeof kind !== 'string') {
232
+ throw new Error('Invalid Studio live route descriptor kind payload.');
233
+ }
234
+ const params = value.params;
235
+ if (params !== undefined && !isStringArray(params)) {
236
+ throw new Error('Invalid Studio live route descriptor params payload.');
237
+ }
238
+ const id = validateString(value.id, 'Invalid Studio live route descriptor payload.');
178
239
  const route = {
179
240
  controller: validateString(value.controller, 'Invalid Studio live route descriptor payload.'),
241
+ graphNodeId: validateOptionalString(value.graphNodeId, 'Invalid Studio live route descriptor graph node payload.') ?? `route:${id.replaceAll(/[^a-zA-Z0-9_.:-]/g, '_') || 'anonymous'}`,
180
242
  handler: validateString(value.handler, 'Invalid Studio live route descriptor payload.'),
181
- id: validateString(value.id, 'Invalid Studio live route descriptor payload.'),
243
+ id,
244
+ kind: kind ?? 'http',
182
245
  method: validateString(value.method, 'Invalid Studio live route descriptor payload.'),
246
+ params: params === undefined ? [] : [...params],
183
247
  path: validateString(value.path, 'Invalid Studio live route descriptor payload.')
184
248
  };
185
249
  const moduleName = validateOptionalString(value.module, 'Invalid Studio live route descriptor module payload.');
@@ -489,7 +553,14 @@ function validateSnapshot(value) {
489
553
  throw new Error('Invalid optional diagnostics issue fields in platform snapshot payload.');
490
554
  }
491
555
  }
492
- return value;
556
+ if (value.routes !== undefined && !Array.isArray(value.routes)) {
557
+ throw new Error('Invalid route diagnostics in platform snapshot payload.');
558
+ }
559
+ const snapshot = value;
560
+ return value.routes === undefined ? snapshot : {
561
+ ...snapshot,
562
+ routes: value.routes.map(route => validateStudioRouteDescriptor(route))
563
+ };
493
564
  }
494
565
  function validateTiming(value) {
495
566
  if (!isRecord(value)) {
@@ -502,7 +573,7 @@ function validateTiming(value) {
502
573
  throw new Error('Invalid bootstrap timing payload.');
503
574
  }
504
575
  for (const phase of value.phases) {
505
- if (!isRecord(phase) || typeof phase.name !== 'string' || typeof phase.durationMs !== 'number') {
576
+ if (!isRecord(phase) || !isBootstrapTimingPhaseName(phase.name) || typeof phase.durationMs !== 'number') {
506
577
  throw new Error('Invalid phase entry in bootstrap timing payload.');
507
578
  }
508
579
  }
@@ -607,13 +678,11 @@ export function applyFilters(snapshot, filter) {
607
678
  }
608
679
  return issue.code.toLowerCase().includes(query) || issue.componentId.toLowerCase().includes(query) || issue.message.toLowerCase().includes(query) || (issue.cause?.toLowerCase().includes(query) ?? false) || (issue.fixHint?.toLowerCase().includes(query) ?? false) || (issue.docsUrl?.toLowerCase().includes(query) ?? false) || (issue.dependsOn?.some(dependency => dependency.toLowerCase().includes(query)) ?? false);
609
680
  });
610
- const filteredSnapshot = {
681
+ return {
611
682
  ...snapshot,
612
683
  components,
613
684
  diagnostics
614
685
  };
615
- originalComponentsByFilteredSnapshot.set(filteredSnapshot, snapshot.components);
616
- return filteredSnapshot;
617
686
  }
618
687
  function escapeMermaidText(value) {
619
688
  return value.replaceAll('\\', '\\\\').replaceAll('"', '\\"').replaceAll('\r\n', '\\n').replaceAll('\r', '\\n').replaceAll('\n', '\\n');
@@ -648,7 +717,7 @@ export function renderMermaid(snapshot) {
648
717
  const lines = ['graph TD'];
649
718
  const nodeByComponent = new Map();
650
719
  const externalNodeByDependency = new Map();
651
- const internalComponentIds = internalComponentIdsFor(snapshot);
720
+ const internalComponentIds = new Set(snapshot.components.map(component => component.id));
652
721
  if (snapshot.components.length === 0) {
653
722
  lines.push(' EMPTY["No registered platform components"]');
654
723
  return lines.join('\n');
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { applyFilters, parseStudioLiveEvent, parseStudioPayload, renderMermaid, validateStudioLiveEvent, isStudioLiveEvent, type FilterState, type ParsedPayload, type PlatformDiagnosticIssue, type PlatformDiagnosticSeverity, type PlatformReadinessStatus, type StudioReportArtifact, type StudioReportSummary, type PlatformShellSnapshot, type StudioPayload, type StudioConnectionState, type StudioConnectionStatus, type StudioDisconnectPayload, type StudioGraphEdge, type StudioGraphEdgeKind, type StudioGraphNode, type StudioGraphNodeKind, type StudioHeartbeatPayload, type StudioLiveDiagnostic, type StudioLiveEvent, type StudioLiveEventBase, type StudioLiveEventSource, type StudioLiveSnapshot, type StudioRequestStatus, type StudioRequestTrace, type StudioRestartPayload, type StudioRouteDescriptor, } from './contracts.js';
1
+ export { applyFilters, type FilterState, isStudioLiveEvent, type ParsedPayload, type PlatformDiagnosticIssue, type PlatformDiagnosticSeverity, type PlatformReadinessStatus, type PlatformShellSnapshot, parseStudioLiveEvent, parseStudioPayload, renderMermaid, type StudioConnectionState, type StudioConnectionStatus, type StudioDisconnectPayload, type StudioGraphEdge, type StudioGraphEdgeKind, type StudioGraphNode, type StudioGraphNodeKind, type StudioHeartbeatPayload, type StudioInspectionSnapshot, type StudioLiveDiagnostic, type StudioLiveEvent, type StudioLiveEventBase, type StudioLiveEventSource, type StudioLiveSnapshot, type StudioNormalizedRouteDescriptor, type StudioParsedInspectionSnapshot, type StudioParsedLiveEvent, type StudioParsedLiveSnapshot, type StudioParsedPayload, type StudioParsedReportArtifact, type StudioProducerLiveEvent, type StudioProducerLiveSnapshot, type StudioProducerRouteDescriptor, type StudioPayload, type StudioReportArtifact, type StudioReportSummary, type StudioRequestStatus, type StudioRequestTrace, type StudioRestartPayload, type StudioRouteDescriptor, type StudioRouteKind, validateStudioLiveEvent, } from './contracts.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC"}
package/dist/index.html CHANGED
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Fluo Studio</title>
7
- <script type="module" crossorigin src="./assets/index-BMydm6o4.js"></script>
8
- <link rel="stylesheet" crossorigin href="./assets/index-ort96Zw9.css">
7
+ <script type="module" crossorigin src="./assets/index-BKRrd1IN.js"></script>
8
+ <link rel="stylesheet" crossorigin href="./assets/index-C3sr4y-k.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="app"></div>
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export { applyFilters, parseStudioLiveEvent, parseStudioPayload, renderMermaid, validateStudioLiveEvent, isStudioLiveEvent } from './contracts.js';
1
+ export { applyFilters, isStudioLiveEvent, parseStudioLiveEvent, parseStudioPayload, renderMermaid, validateStudioLiveEvent } from './contracts.js';
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ import { dirname } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { runStudioViewerCli } from './viewer-server.js';
5
+ const viewerDirectory = dirname(fileURLToPath(import.meta.url));
6
+ void runStudioViewerCli(process.argv.slice(2), viewerDirectory).catch(error => {
7
+ const message = error instanceof Error ? error.message : 'Unknown Studio viewer launch error.';
8
+ process.stderr.write(`${message}\n`);
9
+ process.exitCode = 1;
10
+ });