@qontinui/navigation 0.2.0 → 0.3.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/dist/index.cjs +54 -13
- package/dist/index.d.cts +40 -11
- package/dist/index.d.ts +40 -11
- package/dist/index.js +53 -13
- package/package.json +4 -2
package/dist/index.cjs
CHANGED
|
@@ -75,6 +75,7 @@ __export(index_exports, {
|
|
|
75
75
|
isGroupExpanded: () => isGroupExpanded,
|
|
76
76
|
isItemActive: () => isItemActive,
|
|
77
77
|
isItemAvailable: () => isItemAvailable,
|
|
78
|
+
isItemDemoted: () => isItemDemoted,
|
|
78
79
|
isItemExpanded: () => isItemExpanded,
|
|
79
80
|
isSecondaryOpenFor: () => isSecondaryOpenFor,
|
|
80
81
|
isValidIconName: () => isValidIconName,
|
|
@@ -106,7 +107,13 @@ var WORKSPACE_ITEMS = [
|
|
|
106
107
|
description: "Tell the runner what to do in plain English",
|
|
107
108
|
route: "/prompt-home",
|
|
108
109
|
color: "#8B5CF6",
|
|
109
|
-
productMode: "ai"
|
|
110
|
+
productMode: "ai",
|
|
111
|
+
// Runner-only demotion. On the runner this page COMPOSES a loop workflow
|
|
112
|
+
// (setup → verification → agentic → completion) from a prompt and hands it
|
|
113
|
+
// to the executor — it is the loop paradigm's front door, not the
|
|
114
|
+
// Terminal's, so it belongs behind the advanced disclosure there. On
|
|
115
|
+
// qontinui-web the same route is the app's landing page, so it stays.
|
|
116
|
+
hidden: ["runner"]
|
|
110
117
|
},
|
|
111
118
|
{
|
|
112
119
|
id: "gui-automation",
|
|
@@ -115,7 +122,10 @@ var WORKSPACE_ITEMS = [
|
|
|
115
122
|
description: "Run and schedule workflows",
|
|
116
123
|
route: "/execute",
|
|
117
124
|
color: "#10B981",
|
|
118
|
-
productMode: "visual"
|
|
125
|
+
productMode: "visual",
|
|
126
|
+
// Web demotes it (coord+sessions default); the runner reaches it through
|
|
127
|
+
// the Visual product mode, which is itself disclosure-gated there.
|
|
128
|
+
hidden: ["web"]
|
|
119
129
|
},
|
|
120
130
|
{
|
|
121
131
|
id: "terminal",
|
|
@@ -134,7 +144,12 @@ var WORKSPACE_ITEMS = [
|
|
|
134
144
|
description: "Monitor active executions",
|
|
135
145
|
route: "/runs/active",
|
|
136
146
|
color: "#4A90D9",
|
|
137
|
-
productMode: "ai"
|
|
147
|
+
productMode: "ai",
|
|
148
|
+
// The loop-workflow cockpit: phase badge, iteration counter, GUI/Playwright
|
|
149
|
+
// widgets and the "did the fix work?" verification panel. A Terminal
|
|
150
|
+
// session watches itself in the Terminal, so this is advanced on both
|
|
151
|
+
// platforms (web already demoted it locally).
|
|
152
|
+
hidden: true
|
|
138
153
|
},
|
|
139
154
|
{
|
|
140
155
|
id: "productivity",
|
|
@@ -167,7 +182,9 @@ var SESSION_ITEMS = [
|
|
|
167
182
|
icon: "Zap",
|
|
168
183
|
description: "Action execution log",
|
|
169
184
|
route: "/runs/actions",
|
|
170
|
-
color: "#4A90D9"
|
|
185
|
+
color: "#4A90D9",
|
|
186
|
+
// GUI action log — only ever populated by a visual/loop workflow run.
|
|
187
|
+
hidden: true
|
|
171
188
|
},
|
|
172
189
|
{
|
|
173
190
|
id: "run-image",
|
|
@@ -175,7 +192,8 @@ var SESSION_ITEMS = [
|
|
|
175
192
|
icon: "Image",
|
|
176
193
|
description: "Visual recognition results",
|
|
177
194
|
route: "/runs/image-recognition",
|
|
178
|
-
color: "#4A90D9"
|
|
195
|
+
color: "#4A90D9",
|
|
196
|
+
hidden: true
|
|
179
197
|
},
|
|
180
198
|
{
|
|
181
199
|
id: "run-findings",
|
|
@@ -191,7 +209,9 @@ var SESSION_ITEMS = [
|
|
|
191
209
|
icon: "FileSearch",
|
|
192
210
|
description: "State exploration results",
|
|
193
211
|
route: "/runs/state-exploration",
|
|
194
|
-
color: "#4A90D9"
|
|
212
|
+
color: "#4A90D9",
|
|
213
|
+
// State-machine exploration is a visual-GUI-automation artifact.
|
|
214
|
+
hidden: true
|
|
195
215
|
},
|
|
196
216
|
{
|
|
197
217
|
id: "run-tests",
|
|
@@ -199,7 +219,9 @@ var SESSION_ITEMS = [
|
|
|
199
219
|
icon: "TestTube",
|
|
200
220
|
description: "Playwright test results",
|
|
201
221
|
route: "/runs/test-results",
|
|
202
|
-
color: "#4A90D9"
|
|
222
|
+
color: "#4A90D9",
|
|
223
|
+
// Populated by the loop's verification phase, never by a chat session.
|
|
224
|
+
hidden: true
|
|
203
225
|
},
|
|
204
226
|
{
|
|
205
227
|
id: "run-ai-output",
|
|
@@ -253,7 +275,12 @@ var REVIEW_ITEMS = [
|
|
|
253
275
|
hasOwnPage: true,
|
|
254
276
|
route: "/runs",
|
|
255
277
|
color: "#4A90D9",
|
|
256
|
-
productMode: "ai"
|
|
278
|
+
productMode: "ai",
|
|
279
|
+
// Runner keeps it: a Terminal/Claude session creates a `task_run`
|
|
280
|
+
// (`workflow_type: "chat"`), so this IS the runner's session history.
|
|
281
|
+
// qontinui-web demotes it — its sessions live in `coord.sessions` and
|
|
282
|
+
// produce no task_runs.
|
|
283
|
+
hidden: ["web"]
|
|
257
284
|
},
|
|
258
285
|
{
|
|
259
286
|
id: "run-findings",
|
|
@@ -262,7 +289,8 @@ var REVIEW_ITEMS = [
|
|
|
262
289
|
description: "Review findings and HITL questions across runs",
|
|
263
290
|
route: "/runs/findings",
|
|
264
291
|
color: "#4A90D9",
|
|
265
|
-
productMode: "ai"
|
|
292
|
+
productMode: "ai",
|
|
293
|
+
hidden: ["web"]
|
|
266
294
|
},
|
|
267
295
|
{
|
|
268
296
|
// Id is "observations" (NOT "memory"): it must match the runner's
|
|
@@ -458,8 +486,11 @@ var BUILD_ITEMS = [
|
|
|
458
486
|
route: "/vga",
|
|
459
487
|
color: "var(--brand-secondary)",
|
|
460
488
|
// Visual GUI automation belongs to Visual mode, not AI Dev (removed from
|
|
461
|
-
// the AI Dev sidebar on both runner and web).
|
|
462
|
-
|
|
489
|
+
// the AI Dev sidebar on both runner and web). Web demotes it outright; on
|
|
490
|
+
// the runner it is reached through the Visual product mode, which is itself
|
|
491
|
+
// behind the "Show visual GUI automation" disclosure.
|
|
492
|
+
productMode: "visual",
|
|
493
|
+
hidden: ["web"]
|
|
463
494
|
},
|
|
464
495
|
{
|
|
465
496
|
id: "orchestration-loop",
|
|
@@ -660,7 +691,11 @@ var CONFIGURE_ITEMS = [
|
|
|
660
691
|
icon: "Radio",
|
|
661
692
|
description: "Workflow event bus, queue status, circuit breaker",
|
|
662
693
|
hiddenInProd: true,
|
|
663
|
-
productMode: "ai"
|
|
694
|
+
productMode: "ai",
|
|
695
|
+
// Workflow event bus — a loop-workflow internal. Dev-only AND advanced, so
|
|
696
|
+
// the CONFIGURE group has no default-visible item left and the group header
|
|
697
|
+
// is dropped entirely by filterGroupsForPlatform.
|
|
698
|
+
hidden: true
|
|
664
699
|
}
|
|
665
700
|
];
|
|
666
701
|
var CONFIGURE_GROUP = {
|
|
@@ -1104,11 +1139,16 @@ function setShowHiddenItems(show) {
|
|
|
1104
1139
|
function getShowHiddenItems() {
|
|
1105
1140
|
return _showHiddenItems;
|
|
1106
1141
|
}
|
|
1142
|
+
function isItemDemoted(item, platform) {
|
|
1143
|
+
const demoted = item.hidden;
|
|
1144
|
+
if (!demoted) return false;
|
|
1145
|
+
return demoted === true || demoted.includes(platform);
|
|
1146
|
+
}
|
|
1107
1147
|
function isItemAvailable(item, platform) {
|
|
1108
1148
|
if (item.hiddenInProd && !isDevelopmentMode()) {
|
|
1109
1149
|
return false;
|
|
1110
1150
|
}
|
|
1111
|
-
if (item
|
|
1151
|
+
if (isItemDemoted(item, platform) && !_showHiddenItems) {
|
|
1112
1152
|
return false;
|
|
1113
1153
|
}
|
|
1114
1154
|
if (_productMode && item.productMode && item.productMode !== "both" && item.productMode !== _productMode) {
|
|
@@ -1454,6 +1494,7 @@ function NavigationItemShell({
|
|
|
1454
1494
|
isGroupExpanded,
|
|
1455
1495
|
isItemActive,
|
|
1456
1496
|
isItemAvailable,
|
|
1497
|
+
isItemDemoted,
|
|
1457
1498
|
isItemExpanded,
|
|
1458
1499
|
isSecondaryOpenFor,
|
|
1459
1500
|
isValidIconName,
|
package/dist/index.d.cts
CHANGED
|
@@ -65,10 +65,18 @@ interface NavigationItem {
|
|
|
65
65
|
* sidebar until the user opts in via the "Show advanced automation features"
|
|
66
66
|
* setting (wired through `setShowHiddenItems(true)`). The route/tab id is
|
|
67
67
|
* still registered, so deep-links and programmatic tab-activation continue
|
|
68
|
-
* to resolve. Used to demote the
|
|
69
|
-
* builder, DAG editor, orchestration loop, step builders
|
|
70
|
-
* Terminal is the primary entry point.
|
|
71
|
-
|
|
68
|
+
* to resolve. Used to demote the verification-agentic loop-workflow surfaces
|
|
69
|
+
* (workflow builder, DAG editor, orchestration loop, step builders, the
|
|
70
|
+
* run/execution dashboards) now that the Terminal is the primary entry point.
|
|
71
|
+
*
|
|
72
|
+
* `true` demotes the item on EVERY platform. A platform list demotes it only
|
|
73
|
+
* on the named platforms — the runner and qontinui-web disagree about a
|
|
74
|
+
* handful of items (the runner's Home/prompt entry is advanced there but is
|
|
75
|
+
* still web's landing page; web's coord+sessions default drops runs/findings
|
|
76
|
+
* the runner keeps), and expressing that at the source beats each app
|
|
77
|
+
* carrying its own parallel demotion list that silently drifts.
|
|
78
|
+
*/
|
|
79
|
+
hidden?: boolean | Platform[];
|
|
72
80
|
/** Product mode visibility - "ai", "visual", or "both" (default: shown in all modes) */
|
|
73
81
|
productMode?: "ai" | "visual" | "both";
|
|
74
82
|
/** URL path for web routing (e.g., "/build/workflows") */
|
|
@@ -177,10 +185,12 @@ type NavigationAction = {
|
|
|
177
185
|
* - platform: "runner" | "web" | both (default) — which app shows the item
|
|
178
186
|
* - productMode: "ai" | "visual" | "both" | undefined (default=both) — which product mode
|
|
179
187
|
* - hiddenInProd: true — dev-only items hidden in production
|
|
180
|
-
* - hidden: true — "advanced" surfaces (the workflow
|
|
181
|
-
* out of the default sidebar until the user
|
|
182
|
-
* automation features" (setShowHiddenItems).
|
|
183
|
-
* so deep-links (e.g. the Terminal
|
|
188
|
+
* - hidden: true | Platform[] — "advanced" surfaces (the loop-workflow and
|
|
189
|
+
* workflow-authoring tools) kept out of the default sidebar until the user
|
|
190
|
+
* opts in via "Show advanced automation features" (setShowHiddenItems).
|
|
191
|
+
* Route/tab id stays registered, so deep-links (e.g. the Terminal
|
|
192
|
+
* "save as workflow" disclosure) resolve. A platform list demotes on only
|
|
193
|
+
* those platforms — see `NavigationItem.hidden`.
|
|
184
194
|
*
|
|
185
195
|
* ---------------------------------------------------------------------------
|
|
186
196
|
* Terminal-centric information architecture (2026-06).
|
|
@@ -203,9 +213,21 @@ type NavigationAction = {
|
|
|
203
213
|
* (Groups that end up with no visible items are dropped by
|
|
204
214
|
* filterGroupsForPlatform, so no bare group header renders.)
|
|
205
215
|
*
|
|
216
|
+
* 2026-07 follow-up — the loop-workflow残り. The first pass demoted the
|
|
217
|
+
* BUILDERS but left the loop's RUNTIME surfaces in the default set: the
|
|
218
|
+
* natural-language Home prompt (which composes and launches a
|
|
219
|
+
* setup→verification→agentic→completion workflow), the Active dashboard
|
|
220
|
+
* (phase badge, iteration counter, "did the fix work?" verification widget),
|
|
221
|
+
* and the GUI/loop-specific run detail tabs (Actions, Image Recognition,
|
|
222
|
+
* State Explorer, Test Results). Those are the loop paradigm's cockpit, not
|
|
223
|
+
* the Terminal's, so they are demoted too. What stays under Runs is the set a
|
|
224
|
+
* Terminal session actually produces — chat sessions create `task_runs` with
|
|
225
|
+
* `workflow_type: "chat"`, so Summary / Findings / AI Output / Statistics /
|
|
226
|
+
* AI Data remain first-class.
|
|
227
|
+
*
|
|
206
228
|
* The default (toggle OFF, AI Dev mode) is therefore the lean, Terminal-first
|
|
207
|
-
* set: WORKSPACE (
|
|
208
|
-
*
|
|
229
|
+
* set: WORKSPACE (Terminal / Productivity), REVIEW (Runs / Findings / Memory /
|
|
230
|
+
* Knowledge / Helper Tasks), and SYSTEM (Settings / Help). This mirrors
|
|
209
231
|
* qontinui-web's coord+sessions-centric default menu.
|
|
210
232
|
*
|
|
211
233
|
* Both platforms share this structure; per-item `platforms`/`productMode`
|
|
@@ -320,6 +342,13 @@ declare function setShowHiddenItems(show: boolean): void;
|
|
|
320
342
|
* Whether `hidden` items are currently shown.
|
|
321
343
|
*/
|
|
322
344
|
declare function getShowHiddenItems(): boolean;
|
|
345
|
+
/**
|
|
346
|
+
* Whether an item's `hidden` ("advanced") demotion applies on this platform.
|
|
347
|
+
*
|
|
348
|
+
* `hidden: true` demotes everywhere; `hidden: ["runner"]` demotes only on the
|
|
349
|
+
* runner. Absent/false is never demoted.
|
|
350
|
+
*/
|
|
351
|
+
declare function isItemDemoted(item: NavigationItem, platform: Platform): boolean;
|
|
323
352
|
/**
|
|
324
353
|
* Filter a navigation item based on platform.
|
|
325
354
|
* Returns true if the item should be shown on the given platform.
|
|
@@ -498,4 +527,4 @@ interface NavigationItemShellProps {
|
|
|
498
527
|
*/
|
|
499
528
|
declare function NavigationItemShell({ item, onActivate, children, }: NavigationItemShellProps): React.ReactElement;
|
|
500
529
|
|
|
501
|
-
export { AUTOMATE_GROUP, AUTOMATE_ITEMS, BUILD_GROUP, BUILD_ITEMS, CHILDREN_MAP, CONFIGURE_GROUP, CONFIGURE_ITEMS, DEV_GROUP, DEV_ITEMS, ICON_NAMES, INSIGHTS_GROUP, INSIGHTS_ITEMS, type IconName, NAVIGATION_GROUPS, type NavigationAction, type NavigationBadge, type NavigationGroup, type NavigationItem, type NavigationItemLike, NavigationItemShell, type NavigationItemShellProps, type NavigationState, type Platform, REVIEW_GROUP, REVIEW_ITEMS, RUNS_ITEMS, SESSION_ITEMS, SETTINGS_ITEMS, SPEND_GROUP, SPEND_ITEMS, STORAGE_KEYS, SYSTEM_GROUP, SYSTEM_ITEMS, type SecondarySidebarState, WORKSPACE_GROUP, WORKSPACE_ITEMS, createInitialState, deserializeState, filterGroupForPlatform, filterGroupsForPlatform, filterItemsForPlatform, findItemById, getAllItems, getChildrenForPlatform, getChildrenItems, getItemGroup, getNavigationGroups, getProductMode, getRunnerNavigation, getShowHiddenItems, getWebNavigation, isDevelopmentMode, isGroupExpanded, isItemActive, isItemAvailable, isItemExpanded, isSecondaryOpenFor, isValidIconName, navigationActions, navigationReducer, serializeState, setDevelopmentMode, setProductMode, setShowHiddenItems, useNavigationItem };
|
|
530
|
+
export { AUTOMATE_GROUP, AUTOMATE_ITEMS, BUILD_GROUP, BUILD_ITEMS, CHILDREN_MAP, CONFIGURE_GROUP, CONFIGURE_ITEMS, DEV_GROUP, DEV_ITEMS, ICON_NAMES, INSIGHTS_GROUP, INSIGHTS_ITEMS, type IconName, NAVIGATION_GROUPS, type NavigationAction, type NavigationBadge, type NavigationGroup, type NavigationItem, type NavigationItemLike, NavigationItemShell, type NavigationItemShellProps, type NavigationState, type Platform, REVIEW_GROUP, REVIEW_ITEMS, RUNS_ITEMS, SESSION_ITEMS, SETTINGS_ITEMS, SPEND_GROUP, SPEND_ITEMS, STORAGE_KEYS, SYSTEM_GROUP, SYSTEM_ITEMS, type SecondarySidebarState, WORKSPACE_GROUP, WORKSPACE_ITEMS, createInitialState, deserializeState, filterGroupForPlatform, filterGroupsForPlatform, filterItemsForPlatform, findItemById, getAllItems, getChildrenForPlatform, getChildrenItems, getItemGroup, getNavigationGroups, getProductMode, getRunnerNavigation, getShowHiddenItems, getWebNavigation, isDevelopmentMode, isGroupExpanded, isItemActive, isItemAvailable, isItemDemoted, isItemExpanded, isSecondaryOpenFor, isValidIconName, navigationActions, navigationReducer, serializeState, setDevelopmentMode, setProductMode, setShowHiddenItems, useNavigationItem };
|
package/dist/index.d.ts
CHANGED
|
@@ -65,10 +65,18 @@ interface NavigationItem {
|
|
|
65
65
|
* sidebar until the user opts in via the "Show advanced automation features"
|
|
66
66
|
* setting (wired through `setShowHiddenItems(true)`). The route/tab id is
|
|
67
67
|
* still registered, so deep-links and programmatic tab-activation continue
|
|
68
|
-
* to resolve. Used to demote the
|
|
69
|
-
* builder, DAG editor, orchestration loop, step builders
|
|
70
|
-
* Terminal is the primary entry point.
|
|
71
|
-
|
|
68
|
+
* to resolve. Used to demote the verification-agentic loop-workflow surfaces
|
|
69
|
+
* (workflow builder, DAG editor, orchestration loop, step builders, the
|
|
70
|
+
* run/execution dashboards) now that the Terminal is the primary entry point.
|
|
71
|
+
*
|
|
72
|
+
* `true` demotes the item on EVERY platform. A platform list demotes it only
|
|
73
|
+
* on the named platforms — the runner and qontinui-web disagree about a
|
|
74
|
+
* handful of items (the runner's Home/prompt entry is advanced there but is
|
|
75
|
+
* still web's landing page; web's coord+sessions default drops runs/findings
|
|
76
|
+
* the runner keeps), and expressing that at the source beats each app
|
|
77
|
+
* carrying its own parallel demotion list that silently drifts.
|
|
78
|
+
*/
|
|
79
|
+
hidden?: boolean | Platform[];
|
|
72
80
|
/** Product mode visibility - "ai", "visual", or "both" (default: shown in all modes) */
|
|
73
81
|
productMode?: "ai" | "visual" | "both";
|
|
74
82
|
/** URL path for web routing (e.g., "/build/workflows") */
|
|
@@ -177,10 +185,12 @@ type NavigationAction = {
|
|
|
177
185
|
* - platform: "runner" | "web" | both (default) — which app shows the item
|
|
178
186
|
* - productMode: "ai" | "visual" | "both" | undefined (default=both) — which product mode
|
|
179
187
|
* - hiddenInProd: true — dev-only items hidden in production
|
|
180
|
-
* - hidden: true — "advanced" surfaces (the workflow
|
|
181
|
-
* out of the default sidebar until the user
|
|
182
|
-
* automation features" (setShowHiddenItems).
|
|
183
|
-
* so deep-links (e.g. the Terminal
|
|
188
|
+
* - hidden: true | Platform[] — "advanced" surfaces (the loop-workflow and
|
|
189
|
+
* workflow-authoring tools) kept out of the default sidebar until the user
|
|
190
|
+
* opts in via "Show advanced automation features" (setShowHiddenItems).
|
|
191
|
+
* Route/tab id stays registered, so deep-links (e.g. the Terminal
|
|
192
|
+
* "save as workflow" disclosure) resolve. A platform list demotes on only
|
|
193
|
+
* those platforms — see `NavigationItem.hidden`.
|
|
184
194
|
*
|
|
185
195
|
* ---------------------------------------------------------------------------
|
|
186
196
|
* Terminal-centric information architecture (2026-06).
|
|
@@ -203,9 +213,21 @@ type NavigationAction = {
|
|
|
203
213
|
* (Groups that end up with no visible items are dropped by
|
|
204
214
|
* filterGroupsForPlatform, so no bare group header renders.)
|
|
205
215
|
*
|
|
216
|
+
* 2026-07 follow-up — the loop-workflow残り. The first pass demoted the
|
|
217
|
+
* BUILDERS but left the loop's RUNTIME surfaces in the default set: the
|
|
218
|
+
* natural-language Home prompt (which composes and launches a
|
|
219
|
+
* setup→verification→agentic→completion workflow), the Active dashboard
|
|
220
|
+
* (phase badge, iteration counter, "did the fix work?" verification widget),
|
|
221
|
+
* and the GUI/loop-specific run detail tabs (Actions, Image Recognition,
|
|
222
|
+
* State Explorer, Test Results). Those are the loop paradigm's cockpit, not
|
|
223
|
+
* the Terminal's, so they are demoted too. What stays under Runs is the set a
|
|
224
|
+
* Terminal session actually produces — chat sessions create `task_runs` with
|
|
225
|
+
* `workflow_type: "chat"`, so Summary / Findings / AI Output / Statistics /
|
|
226
|
+
* AI Data remain first-class.
|
|
227
|
+
*
|
|
206
228
|
* The default (toggle OFF, AI Dev mode) is therefore the lean, Terminal-first
|
|
207
|
-
* set: WORKSPACE (
|
|
208
|
-
*
|
|
229
|
+
* set: WORKSPACE (Terminal / Productivity), REVIEW (Runs / Findings / Memory /
|
|
230
|
+
* Knowledge / Helper Tasks), and SYSTEM (Settings / Help). This mirrors
|
|
209
231
|
* qontinui-web's coord+sessions-centric default menu.
|
|
210
232
|
*
|
|
211
233
|
* Both platforms share this structure; per-item `platforms`/`productMode`
|
|
@@ -320,6 +342,13 @@ declare function setShowHiddenItems(show: boolean): void;
|
|
|
320
342
|
* Whether `hidden` items are currently shown.
|
|
321
343
|
*/
|
|
322
344
|
declare function getShowHiddenItems(): boolean;
|
|
345
|
+
/**
|
|
346
|
+
* Whether an item's `hidden` ("advanced") demotion applies on this platform.
|
|
347
|
+
*
|
|
348
|
+
* `hidden: true` demotes everywhere; `hidden: ["runner"]` demotes only on the
|
|
349
|
+
* runner. Absent/false is never demoted.
|
|
350
|
+
*/
|
|
351
|
+
declare function isItemDemoted(item: NavigationItem, platform: Platform): boolean;
|
|
323
352
|
/**
|
|
324
353
|
* Filter a navigation item based on platform.
|
|
325
354
|
* Returns true if the item should be shown on the given platform.
|
|
@@ -498,4 +527,4 @@ interface NavigationItemShellProps {
|
|
|
498
527
|
*/
|
|
499
528
|
declare function NavigationItemShell({ item, onActivate, children, }: NavigationItemShellProps): React.ReactElement;
|
|
500
529
|
|
|
501
|
-
export { AUTOMATE_GROUP, AUTOMATE_ITEMS, BUILD_GROUP, BUILD_ITEMS, CHILDREN_MAP, CONFIGURE_GROUP, CONFIGURE_ITEMS, DEV_GROUP, DEV_ITEMS, ICON_NAMES, INSIGHTS_GROUP, INSIGHTS_ITEMS, type IconName, NAVIGATION_GROUPS, type NavigationAction, type NavigationBadge, type NavigationGroup, type NavigationItem, type NavigationItemLike, NavigationItemShell, type NavigationItemShellProps, type NavigationState, type Platform, REVIEW_GROUP, REVIEW_ITEMS, RUNS_ITEMS, SESSION_ITEMS, SETTINGS_ITEMS, SPEND_GROUP, SPEND_ITEMS, STORAGE_KEYS, SYSTEM_GROUP, SYSTEM_ITEMS, type SecondarySidebarState, WORKSPACE_GROUP, WORKSPACE_ITEMS, createInitialState, deserializeState, filterGroupForPlatform, filterGroupsForPlatform, filterItemsForPlatform, findItemById, getAllItems, getChildrenForPlatform, getChildrenItems, getItemGroup, getNavigationGroups, getProductMode, getRunnerNavigation, getShowHiddenItems, getWebNavigation, isDevelopmentMode, isGroupExpanded, isItemActive, isItemAvailable, isItemExpanded, isSecondaryOpenFor, isValidIconName, navigationActions, navigationReducer, serializeState, setDevelopmentMode, setProductMode, setShowHiddenItems, useNavigationItem };
|
|
530
|
+
export { AUTOMATE_GROUP, AUTOMATE_ITEMS, BUILD_GROUP, BUILD_ITEMS, CHILDREN_MAP, CONFIGURE_GROUP, CONFIGURE_ITEMS, DEV_GROUP, DEV_ITEMS, ICON_NAMES, INSIGHTS_GROUP, INSIGHTS_ITEMS, type IconName, NAVIGATION_GROUPS, type NavigationAction, type NavigationBadge, type NavigationGroup, type NavigationItem, type NavigationItemLike, NavigationItemShell, type NavigationItemShellProps, type NavigationState, type Platform, REVIEW_GROUP, REVIEW_ITEMS, RUNS_ITEMS, SESSION_ITEMS, SETTINGS_ITEMS, SPEND_GROUP, SPEND_ITEMS, STORAGE_KEYS, SYSTEM_GROUP, SYSTEM_ITEMS, type SecondarySidebarState, WORKSPACE_GROUP, WORKSPACE_ITEMS, createInitialState, deserializeState, filterGroupForPlatform, filterGroupsForPlatform, filterItemsForPlatform, findItemById, getAllItems, getChildrenForPlatform, getChildrenItems, getItemGroup, getNavigationGroups, getProductMode, getRunnerNavigation, getShowHiddenItems, getWebNavigation, isDevelopmentMode, isGroupExpanded, isItemActive, isItemAvailable, isItemDemoted, isItemExpanded, isSecondaryOpenFor, isValidIconName, navigationActions, navigationReducer, serializeState, setDevelopmentMode, setProductMode, setShowHiddenItems, useNavigationItem };
|
package/dist/index.js
CHANGED
|
@@ -16,7 +16,13 @@ var WORKSPACE_ITEMS = [
|
|
|
16
16
|
description: "Tell the runner what to do in plain English",
|
|
17
17
|
route: "/prompt-home",
|
|
18
18
|
color: "#8B5CF6",
|
|
19
|
-
productMode: "ai"
|
|
19
|
+
productMode: "ai",
|
|
20
|
+
// Runner-only demotion. On the runner this page COMPOSES a loop workflow
|
|
21
|
+
// (setup → verification → agentic → completion) from a prompt and hands it
|
|
22
|
+
// to the executor — it is the loop paradigm's front door, not the
|
|
23
|
+
// Terminal's, so it belongs behind the advanced disclosure there. On
|
|
24
|
+
// qontinui-web the same route is the app's landing page, so it stays.
|
|
25
|
+
hidden: ["runner"]
|
|
20
26
|
},
|
|
21
27
|
{
|
|
22
28
|
id: "gui-automation",
|
|
@@ -25,7 +31,10 @@ var WORKSPACE_ITEMS = [
|
|
|
25
31
|
description: "Run and schedule workflows",
|
|
26
32
|
route: "/execute",
|
|
27
33
|
color: "#10B981",
|
|
28
|
-
productMode: "visual"
|
|
34
|
+
productMode: "visual",
|
|
35
|
+
// Web demotes it (coord+sessions default); the runner reaches it through
|
|
36
|
+
// the Visual product mode, which is itself disclosure-gated there.
|
|
37
|
+
hidden: ["web"]
|
|
29
38
|
},
|
|
30
39
|
{
|
|
31
40
|
id: "terminal",
|
|
@@ -44,7 +53,12 @@ var WORKSPACE_ITEMS = [
|
|
|
44
53
|
description: "Monitor active executions",
|
|
45
54
|
route: "/runs/active",
|
|
46
55
|
color: "#4A90D9",
|
|
47
|
-
productMode: "ai"
|
|
56
|
+
productMode: "ai",
|
|
57
|
+
// The loop-workflow cockpit: phase badge, iteration counter, GUI/Playwright
|
|
58
|
+
// widgets and the "did the fix work?" verification panel. A Terminal
|
|
59
|
+
// session watches itself in the Terminal, so this is advanced on both
|
|
60
|
+
// platforms (web already demoted it locally).
|
|
61
|
+
hidden: true
|
|
48
62
|
},
|
|
49
63
|
{
|
|
50
64
|
id: "productivity",
|
|
@@ -77,7 +91,9 @@ var SESSION_ITEMS = [
|
|
|
77
91
|
icon: "Zap",
|
|
78
92
|
description: "Action execution log",
|
|
79
93
|
route: "/runs/actions",
|
|
80
|
-
color: "#4A90D9"
|
|
94
|
+
color: "#4A90D9",
|
|
95
|
+
// GUI action log — only ever populated by a visual/loop workflow run.
|
|
96
|
+
hidden: true
|
|
81
97
|
},
|
|
82
98
|
{
|
|
83
99
|
id: "run-image",
|
|
@@ -85,7 +101,8 @@ var SESSION_ITEMS = [
|
|
|
85
101
|
icon: "Image",
|
|
86
102
|
description: "Visual recognition results",
|
|
87
103
|
route: "/runs/image-recognition",
|
|
88
|
-
color: "#4A90D9"
|
|
104
|
+
color: "#4A90D9",
|
|
105
|
+
hidden: true
|
|
89
106
|
},
|
|
90
107
|
{
|
|
91
108
|
id: "run-findings",
|
|
@@ -101,7 +118,9 @@ var SESSION_ITEMS = [
|
|
|
101
118
|
icon: "FileSearch",
|
|
102
119
|
description: "State exploration results",
|
|
103
120
|
route: "/runs/state-exploration",
|
|
104
|
-
color: "#4A90D9"
|
|
121
|
+
color: "#4A90D9",
|
|
122
|
+
// State-machine exploration is a visual-GUI-automation artifact.
|
|
123
|
+
hidden: true
|
|
105
124
|
},
|
|
106
125
|
{
|
|
107
126
|
id: "run-tests",
|
|
@@ -109,7 +128,9 @@ var SESSION_ITEMS = [
|
|
|
109
128
|
icon: "TestTube",
|
|
110
129
|
description: "Playwright test results",
|
|
111
130
|
route: "/runs/test-results",
|
|
112
|
-
color: "#4A90D9"
|
|
131
|
+
color: "#4A90D9",
|
|
132
|
+
// Populated by the loop's verification phase, never by a chat session.
|
|
133
|
+
hidden: true
|
|
113
134
|
},
|
|
114
135
|
{
|
|
115
136
|
id: "run-ai-output",
|
|
@@ -163,7 +184,12 @@ var REVIEW_ITEMS = [
|
|
|
163
184
|
hasOwnPage: true,
|
|
164
185
|
route: "/runs",
|
|
165
186
|
color: "#4A90D9",
|
|
166
|
-
productMode: "ai"
|
|
187
|
+
productMode: "ai",
|
|
188
|
+
// Runner keeps it: a Terminal/Claude session creates a `task_run`
|
|
189
|
+
// (`workflow_type: "chat"`), so this IS the runner's session history.
|
|
190
|
+
// qontinui-web demotes it — its sessions live in `coord.sessions` and
|
|
191
|
+
// produce no task_runs.
|
|
192
|
+
hidden: ["web"]
|
|
167
193
|
},
|
|
168
194
|
{
|
|
169
195
|
id: "run-findings",
|
|
@@ -172,7 +198,8 @@ var REVIEW_ITEMS = [
|
|
|
172
198
|
description: "Review findings and HITL questions across runs",
|
|
173
199
|
route: "/runs/findings",
|
|
174
200
|
color: "#4A90D9",
|
|
175
|
-
productMode: "ai"
|
|
201
|
+
productMode: "ai",
|
|
202
|
+
hidden: ["web"]
|
|
176
203
|
},
|
|
177
204
|
{
|
|
178
205
|
// Id is "observations" (NOT "memory"): it must match the runner's
|
|
@@ -368,8 +395,11 @@ var BUILD_ITEMS = [
|
|
|
368
395
|
route: "/vga",
|
|
369
396
|
color: "var(--brand-secondary)",
|
|
370
397
|
// Visual GUI automation belongs to Visual mode, not AI Dev (removed from
|
|
371
|
-
// the AI Dev sidebar on both runner and web).
|
|
372
|
-
|
|
398
|
+
// the AI Dev sidebar on both runner and web). Web demotes it outright; on
|
|
399
|
+
// the runner it is reached through the Visual product mode, which is itself
|
|
400
|
+
// behind the "Show visual GUI automation" disclosure.
|
|
401
|
+
productMode: "visual",
|
|
402
|
+
hidden: ["web"]
|
|
373
403
|
},
|
|
374
404
|
{
|
|
375
405
|
id: "orchestration-loop",
|
|
@@ -570,7 +600,11 @@ var CONFIGURE_ITEMS = [
|
|
|
570
600
|
icon: "Radio",
|
|
571
601
|
description: "Workflow event bus, queue status, circuit breaker",
|
|
572
602
|
hiddenInProd: true,
|
|
573
|
-
productMode: "ai"
|
|
603
|
+
productMode: "ai",
|
|
604
|
+
// Workflow event bus — a loop-workflow internal. Dev-only AND advanced, so
|
|
605
|
+
// the CONFIGURE group has no default-visible item left and the group header
|
|
606
|
+
// is dropped entirely by filterGroupsForPlatform.
|
|
607
|
+
hidden: true
|
|
574
608
|
}
|
|
575
609
|
];
|
|
576
610
|
var CONFIGURE_GROUP = {
|
|
@@ -1014,11 +1048,16 @@ function setShowHiddenItems(show) {
|
|
|
1014
1048
|
function getShowHiddenItems() {
|
|
1015
1049
|
return _showHiddenItems;
|
|
1016
1050
|
}
|
|
1051
|
+
function isItemDemoted(item, platform) {
|
|
1052
|
+
const demoted = item.hidden;
|
|
1053
|
+
if (!demoted) return false;
|
|
1054
|
+
return demoted === true || demoted.includes(platform);
|
|
1055
|
+
}
|
|
1017
1056
|
function isItemAvailable(item, platform) {
|
|
1018
1057
|
if (item.hiddenInProd && !isDevelopmentMode()) {
|
|
1019
1058
|
return false;
|
|
1020
1059
|
}
|
|
1021
|
-
if (item
|
|
1060
|
+
if (isItemDemoted(item, platform) && !_showHiddenItems) {
|
|
1022
1061
|
return false;
|
|
1023
1062
|
}
|
|
1024
1063
|
if (_productMode && item.productMode && item.productMode !== "both" && item.productMode !== _productMode) {
|
|
@@ -1363,6 +1402,7 @@ export {
|
|
|
1363
1402
|
isGroupExpanded,
|
|
1364
1403
|
isItemActive,
|
|
1365
1404
|
isItemAvailable,
|
|
1405
|
+
isItemDemoted,
|
|
1366
1406
|
isItemExpanded,
|
|
1367
1407
|
isSecondaryOpenFor,
|
|
1368
1408
|
isValidIconName,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qontinui/navigation",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Shared navigation structure for Qontinui applications",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"build": "tsup src/index.ts --format cjs,esm --dts && node -e \"if(!require('fs').statSync('dist/index.d.ts').size)process.exit(1)\"",
|
|
14
14
|
"dev": "tsup src/index.ts --format cjs,esm --dts --watch",
|
|
15
15
|
"typecheck": "tsc --noEmit",
|
|
16
|
+
"test": "vitest run",
|
|
16
17
|
"lint": "eslint src/",
|
|
17
18
|
"clean": "rm -rf dist",
|
|
18
19
|
"prepublishOnly": "npm run build"
|
|
@@ -56,6 +57,7 @@
|
|
|
56
57
|
"react": "^19.0.0",
|
|
57
58
|
"tsup": "^8.0.1",
|
|
58
59
|
"typescript": "^6.0.2",
|
|
59
|
-
"typescript-eslint": "^8.61.0"
|
|
60
|
+
"typescript-eslint": "^8.61.0",
|
|
61
|
+
"vitest": "^3.2.7"
|
|
60
62
|
}
|
|
61
63
|
}
|