@principal-ai/subsystems-react 0.24.27 → 0.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/stories/Subsystem/ComponentGraph/fixtures.d.ts +1 -1
  2. package/dist/stories/Subsystem/ComponentGraph/fixtures.d.ts.map +1 -1
  3. package/dist/stories/Subsystem/ComponentGraph/fixtures.js +7 -7
  4. package/dist/stories/Subsystem/ComponentGraph/fixtures.js.map +1 -1
  5. package/dist/subsystem/ComponentDeclaration.d.ts +1 -1
  6. package/dist/subsystem/ComponentDeclaration.d.ts.map +1 -1
  7. package/dist/subsystem/ComponentDeclaration.js +1 -1
  8. package/dist/subsystem/ComponentDeclaration.js.map +1 -1
  9. package/dist/subsystem/ConstructsCatalog.d.ts +2 -2
  10. package/dist/subsystem/ConstructsCatalog.d.ts.map +1 -1
  11. package/dist/subsystem/ConstructsCatalog.js +62 -62
  12. package/dist/subsystem/ConstructsCatalog.js.map +1 -1
  13. package/dist/subsystem/SubsystemComponentGraph.d.ts +2 -2
  14. package/dist/subsystem/SubsystemComponentGraph.d.ts.map +1 -1
  15. package/dist/subsystem/SubsystemComponentGraph.js +27 -27
  16. package/dist/subsystem/SubsystemComponentGraph.js.map +1 -1
  17. package/dist/subsystem/model.d.ts +11 -5
  18. package/dist/subsystem/model.d.ts.map +1 -1
  19. package/dist/subsystem/model.js +65 -36
  20. package/dist/subsystem/model.js.map +1 -1
  21. package/dist/subsystem/nodes.d.ts +3 -3
  22. package/dist/subsystem/nodes.d.ts.map +1 -1
  23. package/dist/subsystem/nodes.js +3 -3
  24. package/dist/subsystem/nodes.js.map +1 -1
  25. package/package.json +1 -1
  26. package/src/stories/Subsystem/ComponentDeclarationAudit.stories.tsx +13 -13
  27. package/src/stories/Subsystem/ComponentGraph/Appearance.stories.tsx +17 -17
  28. package/src/stories/Subsystem/ComponentGraph/Basics.stories.tsx +2 -2
  29. package/src/stories/Subsystem/ComponentGraph/Captures.stories.tsx +3 -3
  30. package/src/stories/Subsystem/ComponentGraph/Constructs.stories.tsx +6 -6
  31. package/src/stories/Subsystem/ComponentGraph/CustomEntities.stories.tsx +8 -8
  32. package/src/stories/Subsystem/ComponentGraph/DetailPanel.stories.tsx +11 -11
  33. package/src/stories/Subsystem/ComponentGraph/Flows.stories.tsx +6 -6
  34. package/src/stories/Subsystem/ComponentGraph/FrameworkStereotype.stories.tsx +10 -10
  35. package/src/stories/Subsystem/ComponentGraph/ModuleBadges.stories.tsx +7 -7
  36. package/src/stories/Subsystem/ComponentGraph/Modules.stories.tsx +17 -17
  37. package/src/stories/Subsystem/ComponentGraph/NodeAnatomy.stories.tsx +16 -16
  38. package/src/stories/Subsystem/ComponentGraph/Packages.stories.tsx +12 -12
  39. package/src/stories/Subsystem/ComponentGraph/Processes.stories.tsx +1 -1
  40. package/src/stories/Subsystem/ComponentGraph/Proposed.stories.tsx +10 -10
  41. package/src/stories/Subsystem/ComponentGraph/Scenarios.stories.tsx +69 -69
  42. package/src/stories/Subsystem/ComponentGraph/Spotlights.stories.tsx +27 -27
  43. package/src/stories/Subsystem/ComponentGraph/fixtures.ts +8 -8
  44. package/src/subsystem/ComponentDeclaration.tsx +2 -2
  45. package/src/subsystem/ConstructsCatalog.tsx +71 -75
  46. package/src/subsystem/SubsystemComponentGraph.tsx +28 -28
  47. package/src/subsystem/model.test.ts +97 -51
  48. package/src/subsystem/model.ts +77 -41
  49. package/src/subsystem/nodes.tsx +6 -6
@@ -39,7 +39,7 @@ const DEEP_VIEWS = 'packages/subsystems-studio/src/mainview/views/AnalysisView.t
39
39
  */
40
40
  const deepComponents: SubsystemComponent[] = [
41
41
  {
42
- id: 'node-comp',
42
+ alias: 'node-comp',
43
43
  name: 'SubsystemComponentNode',
44
44
  construct: 'function',
45
45
  symbol: 'SubsystemComponentNode',
@@ -49,7 +49,7 @@ const deepComponents: SubsystemComponent[] = [
49
49
  purpose: 'Leaf component renderer',
50
50
  },
51
51
  {
52
- id: 'group-comp',
52
+ alias: 'group-comp',
53
53
  name: 'SubsystemGroupNode',
54
54
  construct: 'function',
55
55
  symbol: 'SubsystemGroupNode',
@@ -59,7 +59,7 @@ const deepComponents: SubsystemComponent[] = [
59
59
  purpose: 'Boundary frame renderer',
60
60
  },
61
61
  {
62
- id: 'edge-comp',
62
+ alias: 'edge-comp',
63
63
  name: 'SubsystemEdge',
64
64
  construct: 'function',
65
65
  symbol: 'SubsystemEdge',
@@ -69,7 +69,7 @@ const deepComponents: SubsystemComponent[] = [
69
69
  purpose: 'Edge renderer',
70
70
  },
71
71
  {
72
- id: 'analysis',
72
+ alias: 'analysis',
73
73
  name: 'AnalysisView',
74
74
  construct: 'function',
75
75
  symbol: 'AnalysisView',
@@ -79,7 +79,7 @@ const deepComponents: SubsystemComponent[] = [
79
79
  purpose: 'Renders an analysis',
80
80
  },
81
81
  {
82
- id: 'layers',
82
+ alias: 'layers',
83
83
  name: 'LayersProvider',
84
84
  construct: 'function',
85
85
  symbol: 'LayersProvider',
@@ -89,7 +89,7 @@ const deepComponents: SubsystemComponent[] = [
89
89
  purpose: 'Provides the layer UI',
90
90
  },
91
91
  {
92
- id: 'use-drawings',
92
+ alias: 'use-drawings',
93
93
  name: 'useDrawingsHost',
94
94
  construct: 'function',
95
95
  symbol: 'useDrawingsHost',
@@ -135,7 +135,7 @@ const harnessRegion: SubsystemProcessRegion = {
135
135
  kind: 'module',
136
136
  key: DEEP_NODES,
137
137
  label: DEEP_NODES,
138
- memberIds: ['node-comp', 'group-comp', 'edge-comp'],
138
+ memberAliases: ['node-comp', 'group-comp', 'edge-comp'],
139
139
  };
140
140
 
141
141
  /** Fixed frame; the badge is the only thing that grows on click. */
@@ -30,7 +30,7 @@ const PURL = 'pkg:github/principal-ai/agent-monitoring';
30
30
  */
31
31
  const moduleComponents: SubsystemComponent[] = [
32
32
  {
33
- id: 'record',
33
+ alias: 'record',
34
34
  name: 'CodexRolloutRecord',
35
35
  construct: 'type_alias',
36
36
  symbol: 'CodexRolloutRecord',
@@ -41,7 +41,7 @@ const moduleComponents: SubsystemComponent[] = [
41
41
  layer: 1,
42
42
  },
43
43
  {
44
- id: 'is-rollout',
44
+ alias: 'is-rollout',
45
45
  name: 'isCodexRollout',
46
46
  construct: 'function',
47
47
  symbol: 'isCodexRollout',
@@ -52,7 +52,7 @@ const moduleComponents: SubsystemComponent[] = [
52
52
  layer: 1,
53
53
  },
54
54
  {
55
- id: 'parse',
55
+ alias: 'parse',
56
56
  name: 'parseTranscript',
57
57
  construct: 'function',
58
58
  symbol: 'parseTranscript',
@@ -63,7 +63,7 @@ const moduleComponents: SubsystemComponent[] = [
63
63
  layer: 1,
64
64
  },
65
65
  {
66
- id: 'tool-name',
66
+ alias: 'tool-name',
67
67
  name: 'extractToolName',
68
68
  construct: 'function',
69
69
  symbol: 'extractToolName',
@@ -74,7 +74,7 @@ const moduleComponents: SubsystemComponent[] = [
74
74
  layer: 2,
75
75
  },
76
76
  {
77
- id: 'file-path',
77
+ alias: 'file-path',
78
78
  name: 'extractFilePath',
79
79
  construct: 'function',
80
80
  symbol: 'extractFilePath',
@@ -85,7 +85,7 @@ const moduleComponents: SubsystemComponent[] = [
85
85
  layer: 2,
86
86
  },
87
87
  {
88
- id: 'reader',
88
+ alias: 'reader',
89
89
  name: 'SessionReader',
90
90
  construct: 'class',
91
91
  symbol: 'SessionReader',
@@ -96,7 +96,7 @@ const moduleComponents: SubsystemComponent[] = [
96
96
  layer: 3,
97
97
  },
98
98
  {
99
- id: 'normalize',
99
+ alias: 'normalize',
100
100
  name: 'normalize',
101
101
  construct: 'method',
102
102
  symbol: 'SessionReader.normalize',
@@ -107,7 +107,7 @@ const moduleComponents: SubsystemComponent[] = [
107
107
  layer: 3,
108
108
  },
109
109
  {
110
- id: 'registry',
110
+ alias: 'registry',
111
111
  name: 'registerAgent',
112
112
  construct: 'function',
113
113
  symbol: 'registerAgent',
@@ -147,7 +147,7 @@ export const ModuleBoundaries: Story = {
147
147
  /** Process → module → export nesting (host / renderer). */
148
148
  const nestedComponents: SubsystemComponent[] = [
149
149
  {
150
- id: 'boot',
150
+ alias: 'boot',
151
151
  name: 'boot',
152
152
  construct: 'function',
153
153
  symbol: 'boot',
@@ -160,7 +160,7 @@ const nestedComponents: SubsystemComponent[] = [
160
160
  layer: 1,
161
161
  },
162
162
  {
163
- id: 'create-host',
163
+ alias: 'create-host',
164
164
  name: 'createHost',
165
165
  construct: 'function',
166
166
  symbol: 'createHost',
@@ -172,7 +172,7 @@ const nestedComponents: SubsystemComponent[] = [
172
172
  layer: 1,
173
173
  },
174
174
  {
175
- id: 'session-store',
175
+ alias: 'session-store',
176
176
  name: 'SessionStore',
177
177
  construct: 'store',
178
178
  symbol: 'SessionStore',
@@ -184,7 +184,7 @@ const nestedComponents: SubsystemComponent[] = [
184
184
  layer: 2,
185
185
  },
186
186
  {
187
- id: 'write-session',
187
+ alias: 'write-session',
188
188
  name: 'writeSession',
189
189
  construct: 'function',
190
190
  symbol: 'writeSession',
@@ -196,7 +196,7 @@ const nestedComponents: SubsystemComponent[] = [
196
196
  layer: 2,
197
197
  },
198
198
  {
199
- id: 'bridge',
199
+ alias: 'bridge',
200
200
  name: 'bridge',
201
201
  construct: 'function',
202
202
  symbol: 'bridge',
@@ -209,7 +209,7 @@ const nestedComponents: SubsystemComponent[] = [
209
209
  layer: 3,
210
210
  },
211
211
  {
212
- id: 'post-to-host',
212
+ alias: 'post-to-host',
213
213
  name: 'postToHost',
214
214
  construct: 'function',
215
215
  symbol: 'postToHost',
@@ -221,7 +221,7 @@ const nestedComponents: SubsystemComponent[] = [
221
221
  layer: 3,
222
222
  },
223
223
  {
224
- id: 'trail-view',
224
+ alias: 'trail-view',
225
225
  name: 'TrailView',
226
226
  construct: 'function',
227
227
  symbol: 'TrailView',
@@ -235,7 +235,7 @@ const nestedComponents: SubsystemComponent[] = [
235
235
  layer: 4,
236
236
  },
237
237
  {
238
- id: 'use-trail',
238
+ alias: 'use-trail',
239
239
  name: 'useTrail',
240
240
  construct: 'function',
241
241
  symbol: 'useTrail',
@@ -249,7 +249,7 @@ const nestedComponents: SubsystemComponent[] = [
249
249
  layer: 4,
250
250
  },
251
251
  {
252
- id: 'telemetry',
252
+ alias: 'telemetry',
253
253
  name: 'telemetry',
254
254
  construct: 'external',
255
255
  role: 'service',
@@ -73,7 +73,7 @@ const CHANNELS: Channel[] = [
73
73
  label: 'baseline — function',
74
74
  note: 'border color = construct (function-indigo); left badge = construct.',
75
75
  component: {
76
- id: 'fn',
76
+ alias: 'fn',
77
77
  name: 'auditSubsystemModel',
78
78
  construct: 'function',
79
79
  file: 'src/bun/verify-subsystem-component.ts',
@@ -85,7 +85,7 @@ const CHANNELS: Channel[] = [
85
85
  label: 'class',
86
86
  note: 'construct color changes per kind; nothing else moves.',
87
87
  component: {
88
- id: 'cls',
88
+ alias: 'cls',
89
89
  name: 'MaintainModelAgent',
90
90
  construct: 'class',
91
91
  file: 'src/bun/maintain-model.ts',
@@ -97,7 +97,7 @@ const CHANNELS: Channel[] = [
97
97
  label: 'external',
98
98
  note: 'outside the system — square corners, no file.',
99
99
  component: {
100
- id: 'ext',
100
+ alias: 'ext',
101
101
  name: '@opencode-ai/cli',
102
102
  construct: 'external',
103
103
  file: '',
@@ -109,7 +109,7 @@ const CHANNELS: Channel[] = [
109
109
  label: 'role badge',
110
110
  note: 'top-right badge = role.',
111
111
  component: {
112
- id: 'role',
112
+ alias: 'role',
113
113
  name: 'handleRequest',
114
114
  construct: 'function',
115
115
  file: 'src/bun/http-server.ts',
@@ -122,7 +122,7 @@ const CHANNELS: Channel[] = [
122
122
  label: 'store + storage badge',
123
123
  note: 'store backs a storage badge beside the role badge.',
124
124
  component: {
125
- id: 'store',
125
+ alias: 'store',
126
126
  name: 'sessionCache',
127
127
  construct: 'store',
128
128
  file: 'src/bun/session-cache.ts',
@@ -135,7 +135,7 @@ const CHANNELS: Channel[] = [
135
135
  label: 'proposed',
136
136
  note: 'dashed goldenrod border + right badge; fileless.',
137
137
  component: {
138
- id: 'prop',
138
+ alias: 'prop',
139
139
  name: 'OpenCodeV2Lifecycle',
140
140
  construct: 'function',
141
141
  file: '',
@@ -148,7 +148,7 @@ const CHANNELS: Channel[] = [
148
148
  label: 'proposed + role',
149
149
  note: 'proposed wins the right badge; role stays on the model.',
150
150
  component: {
151
- id: 'prop-role',
151
+ alias: 'prop-role',
152
152
  name: 'startMaintainFlow',
153
153
  construct: 'function',
154
154
  file: '',
@@ -162,7 +162,7 @@ const CHANNELS: Channel[] = [
162
162
  label: 'framework stereotype',
163
163
  note: 'left badge prefers "framework · stereotype"; border stays construct.',
164
164
  component: {
165
- id: 'react',
165
+ alias: 'react',
166
166
  name: 'SubsystemComponentNode',
167
167
  construct: 'function',
168
168
  file: 'src/subsystem/nodes.tsx',
@@ -176,7 +176,7 @@ const CHANNELS: Channel[] = [
176
176
  label: 'custom entity',
177
177
  note: 'left badge wears the entityKind.',
178
178
  component: {
179
- id: 'entity',
179
+ alias: 'entity',
180
180
  name: 'WorkRequester',
181
181
  construct: 'custom_entity',
182
182
  file: '',
@@ -188,7 +188,7 @@ const CHANNELS: Channel[] = [
188
188
  label: 'selected',
189
189
  note: 'selection only thickens the border (2 → 4); color stays construct.',
190
190
  component: {
191
- id: 'sel',
191
+ alias: 'sel',
192
192
  name: 'runMaintainModel',
193
193
  construct: 'function',
194
194
  file: 'src/bun/maintain-model.ts',
@@ -246,7 +246,7 @@ export const Channels: Story = {
246
246
  }}
247
247
  >
248
248
  {CHANNELS.map((c) => (
249
- <ChannelCell key={c.component.id} channel={c} />
249
+ <ChannelCell key={c.component.alias} channel={c} />
250
250
  ))}
251
251
  </div>
252
252
  </div>
@@ -423,32 +423,32 @@ const ISSUE_EXAMPLES: Array<{
423
423
  },
424
424
  {
425
425
  caption: 'error · earliest rung is file (declaration file missing)',
426
- component: { ...CHANNELS[0]!.component, id: 'e-file' },
426
+ component: { ...CHANNELS[0]!.component, alias: 'e-file' },
427
427
  severity: 'error',
428
428
  rung: 'file',
429
429
  count: 2,
430
430
  },
431
431
  {
432
432
  caption: 'error · earliest rung is symbol (multiple symbol matches)',
433
- component: { ...CHANNELS[1]!.component, id: 'e-sym' },
433
+ component: { ...CHANNELS[1]!.component, alias: 'e-sym' },
434
434
  severity: 'error',
435
435
  rung: 'symbol',
436
436
  },
437
437
  {
438
438
  caption: 'info/gap · dashed ring · declaration drift',
439
- component: { ...CHANNELS[1]!.component, id: 'e-decl' },
439
+ component: { ...CHANNELS[1]!.component, alias: 'e-decl' },
440
440
  severity: 'info',
441
441
  rung: 'declaration',
442
442
  },
443
443
  {
444
444
  caption: 'error · type mismatch',
445
- component: { ...CHANNELS[7]!.component, id: 'e-type' },
445
+ component: { ...CHANNELS[7]!.component, alias: 'e-type' },
446
446
  severity: 'error',
447
447
  rung: 'type',
448
448
  },
449
449
  {
450
450
  caption: 'error · signature mismatch (deepest rung)',
451
- component: { ...CHANNELS[0]!.component, id: 'e-sig' },
451
+ component: { ...CHANNELS[0]!.component, alias: 'e-sig' },
452
452
  severity: 'error',
453
453
  rung: 'signature',
454
454
  },
@@ -31,7 +31,7 @@ const LIB = 'pkg:github/acme/lib';
31
31
  */
32
32
  const multiRepoComponents: SubsystemComponent[] = [
33
33
  {
34
- id: 'dispatch',
34
+ alias: 'dispatch',
35
35
  name: 'dispatch',
36
36
  construct: 'function',
37
37
  symbol: 'dispatch',
@@ -43,7 +43,7 @@ const multiRepoComponents: SubsystemComponent[] = [
43
43
  layer: 1,
44
44
  },
45
45
  {
46
- id: 'session',
46
+ alias: 'session',
47
47
  name: 'SessionService',
48
48
  construct: 'class',
49
49
  symbol: 'SessionService',
@@ -55,7 +55,7 @@ const multiRepoComponents: SubsystemComponent[] = [
55
55
  layer: 2,
56
56
  },
57
57
  {
58
- id: 'parse',
58
+ alias: 'parse',
59
59
  name: 'parseEvent',
60
60
  construct: 'function',
61
61
  symbol: 'parseEvent',
@@ -67,7 +67,7 @@ const multiRepoComponents: SubsystemComponent[] = [
67
67
  layer: 1,
68
68
  },
69
69
  {
70
- id: 'normalize',
70
+ alias: 'normalize',
71
71
  name: 'normalize',
72
72
  construct: 'function',
73
73
  symbol: 'normalize',
@@ -123,7 +123,7 @@ export const SingleRepoNoPackageFrames: Story = {
123
123
  */
124
124
  const nestedComponents: SubsystemComponent[] = [
125
125
  {
126
- id: 'dispatch',
126
+ alias: 'dispatch',
127
127
  name: 'dispatch',
128
128
  construct: 'function',
129
129
  symbol: 'dispatch',
@@ -135,7 +135,7 @@ const nestedComponents: SubsystemComponent[] = [
135
135
  layer: 1,
136
136
  },
137
137
  {
138
- id: 'boot',
138
+ alias: 'boot',
139
139
  name: 'boot',
140
140
  construct: 'function',
141
141
  symbol: 'boot',
@@ -147,7 +147,7 @@ const nestedComponents: SubsystemComponent[] = [
147
147
  layer: 1,
148
148
  },
149
149
  {
150
- id: 'session',
150
+ alias: 'session',
151
151
  name: 'SessionService',
152
152
  construct: 'class',
153
153
  symbol: 'SessionService',
@@ -159,7 +159,7 @@ const nestedComponents: SubsystemComponent[] = [
159
159
  layer: 2,
160
160
  },
161
161
  {
162
- id: 'session-types',
162
+ alias: 'session-types',
163
163
  name: 'SessionRecord',
164
164
  construct: 'type_alias',
165
165
  symbol: 'SessionRecord',
@@ -171,7 +171,7 @@ const nestedComponents: SubsystemComponent[] = [
171
171
  layer: 2,
172
172
  },
173
173
  {
174
- id: 'parse',
174
+ alias: 'parse',
175
175
  name: 'parseEvent',
176
176
  construct: 'function',
177
177
  symbol: 'parseEvent',
@@ -183,7 +183,7 @@ const nestedComponents: SubsystemComponent[] = [
183
183
  layer: 1,
184
184
  },
185
185
  {
186
- id: 'parse-types',
186
+ alias: 'parse-types',
187
187
  name: 'RawEvent',
188
188
  construct: 'type_alias',
189
189
  symbol: 'RawEvent',
@@ -195,7 +195,7 @@ const nestedComponents: SubsystemComponent[] = [
195
195
  layer: 1,
196
196
  },
197
197
  {
198
- id: 'normalize',
198
+ alias: 'normalize',
199
199
  name: 'normalize',
200
200
  construct: 'function',
201
201
  symbol: 'normalize',
@@ -207,7 +207,7 @@ const nestedComponents: SubsystemComponent[] = [
207
207
  layer: 2,
208
208
  },
209
209
  {
210
- id: 'normalize-types',
210
+ alias: 'normalize-types',
211
211
  name: 'NormalizedEvent',
212
212
  construct: 'type_alias',
213
213
  symbol: 'NormalizedEvent',
@@ -31,7 +31,7 @@ const processComponents = [
31
31
  ['bridge', 'bridge', 'function', 'src/renderer/bridge.ts', 'pkg:github/principal-ai/principal-studio', 'IPC bridge to the host', 'bridge'],
32
32
  ]),
33
33
  {
34
- id: 'svc',
34
+ alias: 'svc',
35
35
  name: 'telemetry',
36
36
  construct: 'external' as const,
37
37
  file: '',
@@ -95,7 +95,7 @@ const spotlightRows: Array<{ label: string; component: SubsystemComponent }> = [
95
95
  {
96
96
  label: 'normal function (baseline)',
97
97
  component: {
98
- id: 'live-fn',
98
+ alias: 'live-fn',
99
99
  name: 'ensureOpencode',
100
100
  construct: 'function',
101
101
  file: 'src/bun/opencode-v2.ts',
@@ -107,7 +107,7 @@ const spotlightRows: Array<{ label: string; component: SubsystemComponent }> = [
107
107
  {
108
108
  label: 'proposed function — dashed border + right badge',
109
109
  component: {
110
- id: 'prop-fn',
110
+ alias: 'prop-fn',
111
111
  name: 'OpenCodeV2Lifecycle',
112
112
  construct: 'function',
113
113
  file: '',
@@ -120,7 +120,7 @@ const spotlightRows: Array<{ label: string; component: SubsystemComponent }> = [
120
120
  {
121
121
  label: 'proposed class',
122
122
  component: {
123
- id: 'prop-class',
123
+ alias: 'prop-class',
124
124
  name: 'MaintainModelAgent',
125
125
  construct: 'class',
126
126
  file: 'src/bun/maintain-model-agent.ts',
@@ -133,7 +133,7 @@ const spotlightRows: Array<{ label: string; component: SubsystemComponent }> = [
133
133
  {
134
134
  label: 'proposed + role: entry (badge shows proposed only)',
135
135
  component: {
136
- id: 'prop-entry',
136
+ alias: 'prop-entry',
137
137
  name: 'startMaintainFlow',
138
138
  construct: 'function',
139
139
  file: '',
@@ -147,7 +147,7 @@ const spotlightRows: Array<{ label: string; component: SubsystemComponent }> = [
147
147
  {
148
148
  label: 'external (contrast — real outside system)',
149
149
  component: {
150
- id: 'ext',
150
+ alias: 'ext',
151
151
  name: 'OpenCode CLI',
152
152
  construct: 'external',
153
153
  file: '',
@@ -174,7 +174,7 @@ export const Spotlights: Story = {
174
174
  }}
175
175
  >
176
176
  {spotlightRows.map((row) => (
177
- <NodeSpotlight key={row.component.id} {...row} />
177
+ <NodeSpotlight key={row.component.alias} {...row} />
178
178
  ))}
179
179
  </div>
180
180
  ),
@@ -185,7 +185,7 @@ export const Spotlights: Story = {
185
185
  // ---------------------------------------------------------------------------
186
186
  const migrationComponents: SubsystemComponent[] = [
187
187
  {
188
- id: 'audit',
188
+ alias: 'audit',
189
189
  name: 'auditSubsystemModel',
190
190
  construct: 'function',
191
191
  file: 'src/bun/verify-subsystem-component.ts',
@@ -195,7 +195,7 @@ const migrationComponents: SubsystemComponent[] = [
195
195
  role: 'entry',
196
196
  },
197
197
  {
198
- id: 'lifecycle',
198
+ alias: 'lifecycle',
199
199
  name: 'OpenCodeV2Lifecycle',
200
200
  construct: 'function',
201
201
  file: '',
@@ -205,7 +205,7 @@ const migrationComponents: SubsystemComponent[] = [
205
205
  proposed: true,
206
206
  },
207
207
  {
208
- id: 'maintain',
208
+ alias: 'maintain',
209
209
  name: 'runMaintainModel',
210
210
  construct: 'function',
211
211
  file: 'src/bun/maintain-model.ts',
@@ -214,7 +214,7 @@ const migrationComponents: SubsystemComponent[] = [
214
214
  purpose: 'Existing maintain agent runner',
215
215
  },
216
216
  {
217
- id: 'cli',
217
+ alias: 'cli',
218
218
  name: '@opencode-ai/cli',
219
219
  construct: 'external',
220
220
  file: '',