@principal-ai/subsystems-react 0.28.3 → 0.28.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"PierreFileView.d.ts","sourceRoot":"","sources":["../../src/pierre/PierreFileView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAcH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,SAAS,GACV,EAAE,mBAAmB,+BA6FrB"}
1
+ {"version":3,"file":"PierreFileView.d.ts","sourceRoot":"","sources":["../../src/pierre/PierreFileView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAeH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,SAAS,GACV,EAAE,mBAAmB,+BAkHrB"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /**
3
3
  * PierreFileView — host-injected full-file code view via `@pierre/diffs`.
4
4
  *
@@ -11,6 +11,7 @@ import { getFiletypeFromFileName, getHighlighterOptions, preloadHighlighter, } f
11
11
  import { useTheme } from '@principal-ade/industry-theme';
12
12
  import { buildPierreOptions, PIERRE_FILE_STYLE } from './pierreBackground';
13
13
  import { pierreLangForPath } from './pierreFileLang';
14
+ import { isFileUnavailableError } from './fileAvailability';
14
15
  import { scrollFocusLineIntoView } from './scrollAnchor';
15
16
  export function PierreFileView({ filePath, fileName, readFile, background, focusLine, }) {
16
17
  const { theme } = useTheme();
@@ -68,6 +69,15 @@ export function PierreFileView({ filePath, fileName, readFile, background, focus
68
69
  ...(focusLine != null ? { onPostRender } : {}),
69
70
  }), [background, focusLine, onPostRender]);
70
71
  if (error) {
72
+ // A file with no local checkout is usually a proposed seam that isn't
73
+ // implemented yet — explain that instead of echoing the host error.
74
+ if (isFileUnavailableError(error)) {
75
+ return (_jsxs("div", { style: { padding: 16, display: 'flex', flexDirection: 'column', gap: 4 }, children: [_jsx("span", { style: { color: theme.colors.text }, children: "This file isn't in the local checkout for this repo \u2014 it may be proposed or not yet implemented." }), _jsx("span", { style: {
76
+ color: theme.colors.textSecondary,
77
+ fontFamily: theme.fonts.monospace,
78
+ fontSize: theme.fontSizes[0],
79
+ }, children: filePath })] }));
80
+ }
71
81
  return (_jsx("div", { style: { padding: 16, color: theme.colors.error ?? '#e5534b' }, children: error }));
72
82
  }
73
83
  if (fileObject === null || !highlighterReady) {
@@ -1 +1 @@
1
- {"version":3,"file":"PierreFileView.js","sourceRoot":"","sources":["../../src/pierre/PierreFileView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PierreFileView.js","sourceRoot":"","sources":["../../src/pierre/PierreFileView.tsx"],"names":[],"mappings":"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"}
@@ -21,6 +21,11 @@ export interface PierreWalkthroughCodeViewProps {
21
21
  background?: string;
22
22
  /** Open the step's full source file (header button or double-click snippet body). */
23
23
  onOpenFile?: (path: string, opts?: SubsystemOpenFileOptions) => void;
24
+ /**
25
+ * Aliases of components marked `proposed`. A step whose file can't be read
26
+ * but whose endpoint is proposed reads as "planned" rather than "missing".
27
+ */
28
+ proposedAliases?: ReadonlySet<string>;
24
29
  }
25
- export declare function PierreWalkthroughCodeView({ walkthrough, stepIndex, readFile, contextLines, background, onOpenFile, }: PierreWalkthroughCodeViewProps): import("react").JSX.Element;
30
+ export declare function PierreWalkthroughCodeView({ walkthrough, stepIndex, readFile, contextLines, background, onOpenFile, proposedAliases, }: PierreWalkthroughCodeViewProps): import("react").JSX.Element;
26
31
  //# sourceMappingURL=PierreWalkthroughCodeView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PierreWalkthroughCodeView.d.ts","sourceRoot":"","sources":["../../src/pierre/PierreWalkthroughCodeView.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;;AA4BH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAU5E,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,oBAAoB,CAAC;IAClC,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mFAAmF;IACnF,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,wBAAwB,KAAK,IAAI,CAAC;CACtE;AAsDD,wBAAgB,yBAAyB,CAAC,EACxC,WAAW,EACX,SAAS,EACT,QAAQ,EACR,YAAgB,EAChB,UAAU,EACV,UAAU,GACX,EAAE,8BAA8B,+BAyRhC"}
1
+ {"version":3,"file":"PierreWalkthroughCodeView.d.ts","sourceRoot":"","sources":["../../src/pierre/PierreWalkthroughCodeView.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;;AA4BH,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAW5E,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,oBAAoB,CAAC;IAClC,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mFAAmF;IACnF,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACrE;;;OAGG;IACH,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACvC;AAoFD,wBAAgB,yBAAyB,CAAC,EACxC,WAAW,EACX,SAAS,EACT,QAAQ,EACR,YAAgB,EAChB,UAAU,EACV,UAAU,EACV,eAAe,GAChB,EAAE,8BAA8B,+BAuUhC"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  /**
3
3
  * PierreWalkthroughCodeView — multi-file step snippets via `@pierre/diffs` CodeView.
4
4
  *
@@ -14,10 +14,30 @@ import { useTheme } from '@principal-ade/industry-theme';
14
14
  import { buildPierreOptions, PIERRE_FILE_STYLE } from './pierreBackground';
15
15
  import { pierreLangForPath } from './pierreFileLang';
16
16
  import { resolvePierreSyntaxThemeName } from './pierreSyntaxTheme';
17
+ import { fileUnavailableNotice, isFileUnavailableError } from './fileAvailability';
17
18
  import { remapSnippetLineNumbers, sliceSnippetWindow, } from './sliceSnippet';
18
19
  function stepItemId(walkthroughId, index) {
19
20
  return `${walkthroughId}:${index}`;
20
21
  }
22
+ /** Stable key for a step's file within a repo (mirrors `pathsKey`). */
23
+ function siteKey(step) {
24
+ return `${step.purl}\0${step.file}`;
25
+ }
26
+ /** Notice shown in place of a snippet whose file the host couldn't read. */
27
+ function unavailableNotice(step, error, proposed) {
28
+ return isFileUnavailableError(error)
29
+ ? fileUnavailableNotice(step.file, proposed)
30
+ : `Couldn't load ${step.file}: ${error}`;
31
+ }
32
+ /** A single-line placeholder snippet standing in for an unreadable file. */
33
+ function unavailableSlice(notice) {
34
+ return {
35
+ contents: `// ${notice}`,
36
+ sliceStart: 1,
37
+ sliceEnd: 1,
38
+ focusOffset: 1,
39
+ };
40
+ }
21
41
  function OpenFileHeaderButton({ file, line, onOpenFile, }) {
22
42
  const { theme } = useTheme();
23
43
  const [hover, setHover] = useState(false);
@@ -39,35 +59,51 @@ function OpenFileHeaderButton({ file, line, onOpenFile, }) {
39
59
  transition: 'background 120ms ease, color 120ms ease',
40
60
  }, children: [_jsx(Maximize2, { size: 11 }), "Open file"] }));
41
61
  }
42
- export function PierreWalkthroughCodeView({ walkthrough, stepIndex, readFile, contextLines = 8, background, onOpenFile, }) {
62
+ export function PierreWalkthroughCodeView({ walkthrough, stepIndex, readFile, contextLines = 8, background, onOpenFile, proposedAliases, }) {
43
63
  const { theme, mode } = useTheme();
44
64
  const viewRef = useRef(null);
45
65
  const [load, setLoad] = useState({ status: 'loading' });
66
+ // A hop onto a proposed component is planned work; label its missing file
67
+ // accordingly instead of showing a bare "not found".
68
+ const isProposedStep = useCallback((step) => proposedAliases != null &&
69
+ (proposedAliases.has(step.from) || proposedAliases.has(step.to)), [proposedAliases]);
46
70
  const pathsKey = useMemo(() => {
47
- const keys = [...new Set(walkthrough.steps.map((s) => `${s.purl}\0${s.file}`))];
71
+ const keys = [...new Set(walkthrough.steps.map((s) => siteKey(s)))];
48
72
  keys.sort();
49
73
  return keys.join('\0');
50
74
  }, [walkthrough.steps]);
75
+ // Load each site independently: one unreadable step (a proposed seam whose
76
+ // file isn't implemented yet) must not blank the whole walkthrough. Failures
77
+ // are kept per-path and rendered as inline placeholders below.
51
78
  useEffect(() => {
52
79
  let cancelled = false;
53
80
  setLoad({ status: 'loading' });
54
- const sites = [...new Map(walkthrough.steps.map((s) => [`${s.purl}\0${s.file}`, s])).values()];
81
+ const sites = [...new Map(walkthrough.steps.map((s) => [siteKey(s), s])).values()];
55
82
  void Promise.all(sites.map(async (step) => {
56
- const contents = await readFile(step.file, step.purl);
57
- return [`${step.purl}\0${step.file}`, contents];
58
- }))
59
- .then((entries) => {
83
+ const key = siteKey(step);
84
+ try {
85
+ const contents = await readFile(step.file, step.purl);
86
+ return { key, contents, error: null };
87
+ }
88
+ catch (err) {
89
+ return {
90
+ key,
91
+ contents: null,
92
+ error: err instanceof Error ? err.message : 'Failed to read file',
93
+ };
94
+ }
95
+ })).then((results) => {
60
96
  if (cancelled)
61
97
  return;
62
- setLoad({ status: 'ready', byPath: new Map(entries) });
63
- })
64
- .catch((err) => {
65
- if (cancelled)
66
- return;
67
- setLoad({
68
- status: 'error',
69
- message: err instanceof Error ? err.message : 'Failed to read files',
70
- });
98
+ const byPath = new Map();
99
+ const unavailable = new Map();
100
+ for (const row of results) {
101
+ if (row.contents != null)
102
+ byPath.set(row.key, row.contents);
103
+ else
104
+ unavailable.set(row.key, row.error ?? 'Failed to read file');
105
+ }
106
+ setLoad({ status: 'ready', byPath, unavailable });
71
107
  });
72
108
  return () => {
73
109
  cancelled = true;
@@ -77,17 +113,29 @@ export function PierreWalkthroughCodeView({ walkthrough, stepIndex, readFile, co
77
113
  if (load.status !== 'ready')
78
114
  return [];
79
115
  return walkthrough.steps.map((step) => {
80
- const contents = load.byPath.get(`${step.purl}\0${step.file}`) ?? '';
116
+ const key = siteKey(step);
117
+ const failure = load.unavailable.get(key);
118
+ if (failure != null) {
119
+ return unavailableSlice(unavailableNotice(step, failure, isProposedStep(step)));
120
+ }
121
+ const contents = load.byPath.get(key) ?? '';
81
122
  return sliceSnippetWindow(contents, step.line, step.line, contextLines, step.line);
82
123
  });
83
- }, [load, walkthrough.steps, contextLines]);
124
+ }, [load, walkthrough.steps, contextLines, isProposedStep]);
84
125
  const items = useMemo(() => {
85
126
  if (load.status !== 'ready' || slices.length === 0)
86
127
  return [];
87
128
  return walkthrough.steps.map((step, index) => {
88
129
  const slice = slices[index];
89
130
  const focus = slice.focusOffset;
90
- const annotations = step.annotation != null && step.annotation.length > 0 && focus != null
131
+ const key = siteKey(step);
132
+ const failure = load.unavailable.get(key);
133
+ // The placeholder line already carries the reason, so it replaces any
134
+ // authored annotation rather than stacking with it.
135
+ const annotations = failure == null &&
136
+ step.annotation != null &&
137
+ step.annotation.length > 0 &&
138
+ focus != null
91
139
  ? [
92
140
  {
93
141
  lineNumber: focus,
@@ -104,11 +152,11 @@ export function PierreWalkthroughCodeView({ walkthrough, stepIndex, readFile, co
104
152
  name: step.file,
105
153
  contents: slice.contents,
106
154
  lang: pierreLangForPath(step.file),
107
- cacheKey: `${walkthrough.id}:${index}:${step.file}:${step.line}:${slice.sliceStart}-${slice.sliceEnd}`,
155
+ cacheKey: `${walkthrough.id}:${index}:${step.file}:${step.line}:${slice.sliceStart}-${slice.sliceEnd}${failure != null ? ':unavailable' : ''}`,
108
156
  },
109
157
  };
110
158
  });
111
- }, [load, slices, walkthrough.id, walkthrough.steps]);
159
+ }, [load, slices, walkthrough.id, walkthrough.steps, isProposedStep]);
112
160
  const selectedLines = useMemo(() => {
113
161
  if (stepIndex == null || stepIndex < 0 || stepIndex >= slices.length) {
114
162
  return null;
@@ -156,7 +204,10 @@ export function PierreWalkthroughCodeView({ walkthrough, stepIndex, readFile, co
156
204
  const step = walkthrough.steps[index];
157
205
  if (!step)
158
206
  return null;
159
- return (_jsxs("span", { style: {
207
+ // Unreadable sites have nothing to open — say so instead of offering a
208
+ // button that would only fail again in the full-file overlay.
209
+ const unavailable = load.status === 'ready' && load.unavailable.has(siteKey(step));
210
+ return (_jsx("span", { style: {
160
211
  display: 'inline-flex',
161
212
  alignItems: 'center',
162
213
  gap: 6,
@@ -164,9 +215,9 @@ export function PierreWalkthroughCodeView({ walkthrough, stepIndex, readFile, co
164
215
  fontFamily: theme.fonts.monospace,
165
216
  fontSize: theme.fontSizes[0],
166
217
  color: theme.colors.textSecondary,
167
- }, children: ["L", step.line, onOpenFile && (_jsx(OpenFileHeaderButton, { file: step.file, line: step.line, onOpenFile: onOpenFile }))] }));
218
+ }, children: unavailable ? (_jsx("span", { title: "This file isn't in the local checkout", children: "not in checkout" })) : (_jsxs(_Fragment, { children: ["L", step.line, onOpenFile && (_jsx(OpenFileHeaderButton, { file: step.file, line: step.line, onOpenFile: onOpenFile }))] })) }));
168
219
  };
169
- }, [walkthrough.steps, theme, onOpenFile]);
220
+ }, [walkthrough.steps, theme, onOpenFile, load]);
170
221
  const renderAnnotation = useMemo(() => {
171
222
  return (annotation, item) => {
172
223
  const index = Number.parseInt(item.id.split(':').pop() ?? '', 10);
@@ -196,8 +247,10 @@ export function PierreWalkthroughCodeView({ walkthrough, stepIndex, readFile, co
196
247
  const step = walkthrough.steps[index];
197
248
  if (!step)
198
249
  return;
250
+ if (load.status === 'ready' && load.unavailable.has(siteKey(step)))
251
+ return;
199
252
  onOpenFile(step.file, { startLine: step.line, fullFile: true });
200
- }, [onOpenFile, walkthrough.steps]);
253
+ }, [onOpenFile, walkthrough.steps, load]);
201
254
  const options = useMemo(() => {
202
255
  return {
203
256
  theme: {
@@ -239,12 +292,12 @@ export function PierreWalkthroughCodeView({ walkthrough, stepIndex, readFile, co
239
292
  slices,
240
293
  items.length,
241
294
  ]);
242
- if (load.status === 'error') {
243
- return (_jsx("div", { style: { padding: 16, color: theme.colors.error ?? '#e5534b' }, children: load.message }));
244
- }
245
- if (load.status === 'loading' || items.length === 0) {
295
+ if (load.status === 'loading') {
246
296
  return (_jsx("div", { style: { padding: 16, color: theme.colors.textSecondary }, children: "Loading\u2026" }));
247
297
  }
298
+ if (items.length === 0) {
299
+ return (_jsx("div", { style: { padding: 16, color: theme.colors.textSecondary }, children: "No steps in this walkthrough." }));
300
+ }
248
301
  const CodeViewLoose = CodeView;
249
302
  return (_jsx(CodeViewLoose, { ref: viewRef, items: items, options: options, selectedLines: selectedLines, renderHeaderPrefix: renderHeaderPrefix, renderHeaderMetadata: renderHeaderMetadata, renderAnnotation: renderAnnotation, style: { ...PIERRE_FILE_STYLE, height: '100%', overflow: 'auto' } }));
250
303
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PierreWalkthroughCodeView.js","sourceRoot":"","sources":["../../src/pierre/PierreWalkthroughCodeView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PierreWalkthroughCodeView.js","sourceRoot":"","sources":["../../src/pierre/PierreWalkthroughCodeView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Host file reads fail with a small, stable set of messages when a path can't
3
+ * be served from any local checkout — most often a *proposed* seam whose file
4
+ * isn't implemented yet. These helpers detect that class of failure so the
5
+ * Pierre views can show a proposed / not-yet-available notice instead of a raw
6
+ * host error.
7
+ */
8
+ /** True when a read failed because the file has no local checkout, not because
9
+ * of an I/O or permission error. */
10
+ export declare function isFileUnavailableError(message: string | null | undefined): boolean;
11
+ /**
12
+ * One-line notice shown in place of a snippet whose file can't be read. When
13
+ * the step touches a proposed component the wording names that, so a proposed
14
+ * seam reads as "planned" rather than "missing".
15
+ */
16
+ export declare function fileUnavailableNotice(path: string, proposed?: boolean): string;
17
+ //# sourceMappingURL=fileAvailability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileAvailability.d.ts","sourceRoot":"","sources":["../../src/pierre/fileAvailability.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;qCACqC;AACrC,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACjC,OAAO,CAGT;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,MAAM,CAIR"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Host file reads fail with a small, stable set of messages when a path can't
3
+ * be served from any local checkout — most often a *proposed* seam whose file
4
+ * isn't implemented yet. These helpers detect that class of failure so the
5
+ * Pierre views can show a proposed / not-yet-available notice instead of a raw
6
+ * host error.
7
+ */
8
+ /** Substrings the host uses when a read can't resolve to a local file. */
9
+ const UNAVAILABLE_FRAGMENTS = [
10
+ 'not found in graph repos',
11
+ 'graph has no local root',
12
+ 'no local checkout',
13
+ ];
14
+ /** True when a read failed because the file has no local checkout, not because
15
+ * of an I/O or permission error. */
16
+ export function isFileUnavailableError(message) {
17
+ if (!message)
18
+ return false;
19
+ return UNAVAILABLE_FRAGMENTS.some((fragment) => message.includes(fragment));
20
+ }
21
+ /**
22
+ * One-line notice shown in place of a snippet whose file can't be read. When
23
+ * the step touches a proposed component the wording names that, so a proposed
24
+ * seam reads as "planned" rather than "missing".
25
+ */
26
+ export function fileUnavailableNotice(path, proposed) {
27
+ return proposed
28
+ ? `Proposed — ${path} isn't in the local checkout yet.`
29
+ : `Not in the local checkout: ${path}`;
30
+ }
31
+ //# sourceMappingURL=fileAvailability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileAvailability.js","sourceRoot":"","sources":["../../src/pierre/fileAvailability.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,0EAA0E;AAC1E,MAAM,qBAAqB,GAAG;IAC5B,0BAA0B;IAC1B,yBAAyB;IACzB,mBAAmB;CACX,CAAC;AAEX;qCACqC;AACrC,MAAM,UAAU,sBAAsB,CACpC,OAAkC;IAElC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,QAAkB;IAElB,OAAO,QAAQ;QACb,CAAC,CAAC,cAAc,IAAI,mCAAmC;QACvD,CAAC,CAAC,8BAA8B,IAAI,EAAE,CAAC;AAC3C,CAAC"}
@@ -27,6 +27,11 @@ export interface WalkthroughViewerContext {
27
27
  stepIndex: number | null;
28
28
  /** Open a step's full source file over the walkthrough drawer (keeps snippets mounted). */
29
29
  onOpenFile: (path: string, opts?: SubsystemOpenFileOptions) => void;
30
+ /**
31
+ * Aliases of components marked `proposed`. A step whose file can't be read
32
+ * but whose endpoint is proposed can be labelled as planned, not missing.
33
+ */
34
+ proposedAliases: ReadonlySet<string>;
30
35
  }
31
36
  export interface SubsystemComponentGraphProps {
32
37
  components: SubsystemComponent[];
@@ -176,6 +181,13 @@ export interface SubsystemComponentGraphProps {
176
181
  onVerifyComponent?: (componentAlias: string) => void;
177
182
  /** Live verification status for the selected component. */
178
183
  componentVerification?: ComponentVerificationState | null;
184
+ /**
185
+ * When set, the graph's walkthrough working set — expanded flows and the
186
+ * selected flow/step — is persisted to `localStorage` under this key and
187
+ * restored on mount. Hosts key it by the model id so each model remembers
188
+ * where the user left off. Omit to keep the state purely in-memory.
189
+ */
190
+ persistKey?: string;
179
191
  }
180
192
  export declare function SubsystemComponentGraph(props: SubsystemComponentGraphProps): import("react").JSX.Element;
181
193
  //# sourceMappingURL=SubsystemComponentGraph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubsystemComponentGraph.d.ts","sourceRoot":"","sources":["../../src/subsystem/SubsystemComponentGraph.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubsystemComponentGraph.d.ts","sourceRoot":"","sources":["../../src/subsystem/SubsystemComponentGraph.tsx"],"names":[],"mappings":"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"}
@@ -37,6 +37,34 @@ const EDGE_LABEL_MAX_EDGE_FRACTION = 0.55;
37
37
  /** Rough monospace width at fontSize 10 + horizontal padding/border. */
38
38
  const EDGE_LABEL_CHAR_PX = 6.2;
39
39
  const EDGE_LABEL_PAD_PX = 18;
40
+ const VIEW_STATE_PREFIX = 'principal.subsystems.viewState.';
41
+ function readViewState(key) {
42
+ if (!key || typeof window === 'undefined')
43
+ return {};
44
+ try {
45
+ const raw = window.localStorage.getItem(VIEW_STATE_PREFIX + key);
46
+ if (!raw)
47
+ return {};
48
+ const parsed = JSON.parse(raw);
49
+ return parsed && typeof parsed === 'object'
50
+ ? parsed
51
+ : {};
52
+ }
53
+ catch {
54
+ return {};
55
+ }
56
+ }
57
+ function writeViewState(key, patch) {
58
+ if (!key || typeof window === 'undefined')
59
+ return;
60
+ try {
61
+ const merged = { ...readViewState(key), ...patch };
62
+ window.localStorage.setItem(VIEW_STATE_PREFIX + key, JSON.stringify(merged));
63
+ }
64
+ catch {
65
+ // Best-effort: private mode / quota — view state is non-critical.
66
+ }
67
+ }
40
68
  const nodeTypes = {
41
69
  'subsystem-component': SubsystemComponentNode,
42
70
  'subsystem-group': SubsystemGroupNode,
@@ -72,13 +100,16 @@ function FileOverlayCloseButton({ onClose }) {
72
100
  transition: 'background 120ms ease, color 120ms ease',
73
101
  }, children: _jsx(X, { size: 14 }) }));
74
102
  }
75
- const WalkthroughDrawerContent = memo(function WalkthroughDrawerContent({ render, walkthrough, stepIndex, onOpenFile, }) {
76
- return _jsx(_Fragment, { children: render({ walkthrough, stepIndex, onOpenFile }) });
103
+ const WalkthroughDrawerContent = memo(function WalkthroughDrawerContent({ render, walkthrough, stepIndex, onOpenFile, proposedAliases, }) {
104
+ return _jsx(_Fragment, { children: render({ walkthrough, stepIndex, onOpenFile, proposedAliases }) });
77
105
  });
78
- function Inner({ components, relations, walkthroughs, initialWalkthroughId, onReorderWalkthroughs, onSelect, onEdgeSelect, measured: _measured, maxNodeWidth, showEdgeLabels, edgeView, title, hideSidebar, walkthroughStepMode = 'focus', autoPlayWalkthroughs = false, walkthroughAutoPlayIntervalMs = WALKTHROUGH_PLAY_PAUSE_MS, zoomOnWalkthroughFocus = true, graphTitle, showWalkthroughTitle = false, description, canvasOverlay, sidebarExtra, sidebarAfterDescription, diagnostic, issues, showIssues, onSelectIssue, onApplyIssueFix, onHoverIssue, renderFileView, renderFileViewer, renderWalkthroughViewer, onFileSelect, onVerifyComponent, componentVerification }) {
106
+ function Inner({ components, relations, walkthroughs, initialWalkthroughId, onReorderWalkthroughs, onSelect, onEdgeSelect, measured: _measured, maxNodeWidth, showEdgeLabels, edgeView, title, hideSidebar, walkthroughStepMode = 'focus', autoPlayWalkthroughs = false, walkthroughAutoPlayIntervalMs = WALKTHROUGH_PLAY_PAUSE_MS, zoomOnWalkthroughFocus = true, graphTitle, showWalkthroughTitle = false, description, canvasOverlay, sidebarExtra, sidebarAfterDescription, diagnostic, issues, showIssues, onSelectIssue, onApplyIssueFix, onHoverIssue, renderFileView, renderFileViewer, renderWalkthroughViewer, onFileSelect, onVerifyComponent, componentVerification, persistKey }) {
79
107
  const { theme } = useTheme();
80
108
  const { fitView } = useReactFlow();
81
109
  const viewport = useViewport();
110
+ // Restored once per mount from `localStorage` (see `readViewState`). Each
111
+ // graph is its own tab/mount, so `persistKey` is stable for a mount.
112
+ const persisted = useMemo(() => readViewState(persistKey), [persistKey]);
82
113
  const graphEdges = useMemo(() => deriveGraphEdges({ relations, walkthroughs }), [relations, walkthroughs]);
83
114
  const [built, setBuilt] = useState({
84
115
  nodes: [],
@@ -100,9 +131,10 @@ function Inner({ components, relations, walkthroughs, initialWalkthroughId, onRe
100
131
  const [hoveredComponentAlias, setHoveredComponentId] = useState(null);
101
132
  // Walkthrough focus — selected flow (or step) is full strength; other
102
133
  // opened-flow members stay visible but dimmed; everything else is hidden.
103
- const [focusedWalkthroughId, setFocusedWalkthroughId] = useState(null);
134
+ // Restored from the persisted view state when a `persistKey` is set.
135
+ const [focusedWalkthroughId, setFocusedWalkthroughId] = useState(persisted.focusedWalkthroughId ?? null);
104
136
  // `null` = whole flow focused; a number = that single step's edge focused.
105
- const [focusedStepIndex, setFocusedStepIndex] = useState(null);
137
+ const [focusedStepIndex, setFocusedStepIndex] = useState(persisted.focusedStepIndex ?? null);
106
138
  // Hovered walkthrough in the flows panel: dims every canvas node/edge not
107
139
  // involved in the hover preview (or selected ∪ hovered when a step is
108
140
  // focused). `stepIndex: null` = whole flow (collapsed title hover);
@@ -125,7 +157,8 @@ function Inner({ components, relations, walkthroughs, initialWalkthroughId, onRe
125
157
  : 'relations');
126
158
  // Walkthrough flows the user has expanded (via the title row). Closed by
127
159
  // default so a graph with several flows doesn't dump every step list at once.
128
- const [expandedWalkthroughs, setExpandedWalkthroughs] = useState(new Set());
160
+ // Restored from the persisted view state when a `persistKey` is set.
161
+ const [expandedWalkthroughs, setExpandedWalkthroughs] = useState(() => new Set(persisted.expandedWalkthroughs ?? []));
129
162
  // Sidebar description visibility. Hidden by default so the files/flows
130
163
  // panel gets the vertical room; the title-row toggle reveals it.
131
164
  const [descriptionVisible, setDescriptionVisible] = useState(false);
@@ -133,11 +166,16 @@ function Inner({ components, relations, walkthroughs, initialWalkthroughId, onRe
133
166
  // `true` only when a description exists AND the user opened it.
134
167
  const showDesc = !!description && descriptionVisible;
135
168
  // Sidebar width (px). Draggable via the resize handle between the sidebar
136
- // and the graph canvas; clamps to sensible bounds while dragging.
137
- const [sidebarWidth, setSidebarWidth] = useState(340);
169
+ // and the graph canvas; clamps to sensible bounds while dragging. Restored
170
+ // from the persisted view state when a `persistKey` is set.
171
+ const [sidebarWidth, setSidebarWidth] = useState(persisted.sidebarWidth ?? 450);
138
172
  const [sidebarDrag, setSidebarDrag] = useState(false);
139
173
  const sidebarDragStartX = useRef(0);
140
- const sidebarDragStartWidth = useRef(340);
174
+ const sidebarDragStartWidth = useRef(450);
175
+ // Mirror of `sidebarWidth` for the drag-end persist (the mouseup listener
176
+ // closes over the drag-start render).
177
+ const sidebarWidthRef = useRef(sidebarWidth);
178
+ sidebarWidthRef.current = sidebarWidth;
141
179
  const sidebarMinWidth = 240;
142
180
  const sidebarMaxWidth = useMemo(() => Math.max(Math.min((_measured?.w ?? 680) * 0.5, 600), sidebarMinWidth), [_measured?.w]);
143
181
  // Resize drag: capture the drag state so document-level move/up listeners
@@ -158,6 +196,8 @@ function Inner({ components, relations, walkthroughs, initialWalkthroughId, onRe
158
196
  };
159
197
  const onUp = () => {
160
198
  setSidebarDrag(false);
199
+ // Persist only on drag end — not on every mousemove.
200
+ writeViewState(persistKey, { sidebarWidth: sidebarWidthRef.current });
161
201
  // Re-fit the canvas so the graph re-centers in the new available space.
162
202
  requestAnimationFrame(() => fitView());
163
203
  };
@@ -167,7 +207,26 @@ function Inner({ components, relations, walkthroughs, initialWalkthroughId, onRe
167
207
  document.removeEventListener('mousemove', onMove);
168
208
  document.removeEventListener('mouseup', onUp);
169
209
  };
170
- }, [sidebarDrag, sidebarMaxWidth, fitView]);
210
+ }, [sidebarDrag, sidebarMaxWidth, fitView, persistKey]);
211
+ // Persist the walkthrough working set per model. Each write merges into the
212
+ // stored blob, so the three fields never clobber one another.
213
+ useEffect(() => {
214
+ if (!persistKey)
215
+ return;
216
+ writeViewState(persistKey, {
217
+ expandedWalkthroughs: Array.from(expandedWalkthroughs),
218
+ });
219
+ }, [persistKey, expandedWalkthroughs]);
220
+ useEffect(() => {
221
+ if (!persistKey)
222
+ return;
223
+ writeViewState(persistKey, { focusedWalkthroughId });
224
+ }, [persistKey, focusedWalkthroughId]);
225
+ useEffect(() => {
226
+ if (!persistKey)
227
+ return;
228
+ writeViewState(persistKey, { focusedStepIndex });
229
+ }, [persistKey, focusedStepIndex]);
171
230
  // Ref mirror of `selected` so the SUBSYSTEM_CALLBACKS click handler (a
172
231
  // closure over the effect deps) can toggle without a stale value.
173
232
  const selectedRef = useRef(null);
@@ -1425,7 +1484,7 @@ function Inner({ components, relations, walkthroughs, initialWalkthroughId, onRe
1425
1484
  selected.file === drawerTarget.file &&
1426
1485
  selected.declarationRef?.startLine === drawerTarget.startLine }) }))] }), _jsx(FileDrawer, { title: drawerTitle, onClose: closeDrawer, fillHeight: drawerFillHeight, suppressEscape: fileOverlayOpen, children: drawerTarget?.kind === 'walkthrough' &&
1427
1486
  focusedWalkthrough &&
1428
- renderWalkthroughViewer ? (_jsx(WalkthroughDrawerContent, { render: renderWalkthroughDrawerContent, walkthrough: focusedWalkthrough, stepIndex: drawerTarget.stepIndex, onOpenFile: onOpenFileFromWalkthrough })) : drawerTarget?.kind === 'file' ? (_jsx(FileDrawerContent, { render: renderDrawerContent, file: drawerTarget.file, startLine: drawerTarget.startLine })) : null }), fileOverlay && (_jsxs("div", { style: {
1487
+ renderWalkthroughViewer ? (_jsx(WalkthroughDrawerContent, { render: renderWalkthroughDrawerContent, walkthrough: focusedWalkthrough, stepIndex: drawerTarget.stepIndex, onOpenFile: onOpenFileFromWalkthrough, proposedAliases: proposedAliases })) : drawerTarget?.kind === 'file' ? (_jsx(FileDrawerContent, { render: renderDrawerContent, file: drawerTarget.file, startLine: drawerTarget.startLine })) : null }), fileOverlay && (_jsxs("div", { style: {
1429
1488
  position: 'absolute',
1430
1489
  inset: 0,
1431
1490
  zIndex: 8,