@tai42/studio-sdk 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/components/components.css +1 -1
- package/dist/components/entity-card-grid.d.ts +15 -0
- package/dist/components/entity-card-grid.d.ts.map +1 -0
- package/dist/components/entity-card-grid.js +5 -0
- package/dist/components/entity-card-grid.js.map +1 -0
- package/dist/components/folder-nav.d.ts +63 -0
- package/dist/components/folder-nav.d.ts.map +1 -0
- package/dist/components/folder-nav.js +123 -0
- package/dist/components/folder-nav.js.map +1 -0
- package/dist/components/icons.d.ts +4 -0
- package/dist/components/icons.d.ts.map +1 -1
- package/dist/components/icons.js +4 -0
- package/dist/components/icons.js.map +1 -1
- package/dist/components/overlay-details-fields.d.ts +50 -0
- package/dist/components/overlay-details-fields.d.ts.map +1 -0
- package/dist/components/overlay-details-fields.js +17 -0
- package/dist/components/overlay-details-fields.js.map +1 -0
- package/dist/components/view-toggle.d.ts +31 -0
- package/dist/components/view-toggle.d.ts.map +1 -0
- package/dist/components/view-toggle.js +59 -0
- package/dist/components/view-toggle.js.map +1 -0
- package/dist/hooks/useApi.d.ts +46 -7
- package/dist/hooks/useApi.d.ts.map +1 -1
- package/dist/index.d.ts +13 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/navigation/context.d.ts +8 -0
- package/dist/navigation/context.d.ts.map +1 -1
- package/dist/navigation/context.js +11 -0
- package/dist/navigation/context.js.map +1 -1
- package/dist/navigation/index.d.ts +2 -2
- package/dist/navigation/index.d.ts.map +1 -1
- package/dist/navigation/index.js +1 -1
- package/dist/navigation/index.js.map +1 -1
- package/dist/navigation/types.d.ts +14 -0
- package/dist/navigation/types.d.ts.map +1 -1
- package/dist/plugin/types.d.ts +37 -1
- package/dist/plugin/types.d.ts.map +1 -1
- package/dist/tool-visibility.d.ts +32 -0
- package/dist/tool-visibility.d.ts.map +1 -0
- package/dist/tool-visibility.js +33 -0
- package/dist/tool-visibility.js.map +1 -0
- package/package.json +2 -2
- package/src/components/components.css +1 -1
- package/src/components/entity-card-grid.tsx +25 -0
- package/src/components/folder-nav.tsx +255 -0
- package/src/components/icons.tsx +17 -0
- package/src/components/overlay-details-fields.tsx +102 -0
- package/src/components/view-toggle.tsx +92 -0
- package/src/index.ts +36 -1
- package/src/navigation/context.tsx +15 -0
- package/src/navigation/index.ts +8 -1
- package/src/navigation/types.ts +25 -0
- package/src/plugin/types.ts +38 -1
- package/src/tool-visibility.ts +53 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tool-visibility tri-state, shared by every surface that must honor it: the
|
|
3
|
+
* tools screen's list (and its "show hidden" toggle) and every tool picker.
|
|
4
|
+
*
|
|
5
|
+
* EFFECTIVE hidden is the overlay's tri-state OVERRIDE of the plugin's own
|
|
6
|
+
* declaration: an overlay opinion (`true`/`false`) wins, else the plugin
|
|
7
|
+
* declaration stands. So an overlay `false` UNHIDES a plugin-hidden tool, `true`
|
|
8
|
+
* force-hides, and `null` (no overlay row is the same) DEFERS to the declaration
|
|
9
|
+
* (PLAN §Tools-read-surface). The rule lives here ONCE so the list-exclusion and
|
|
10
|
+
* the picker-exclusion can never drift apart.
|
|
11
|
+
*/
|
|
12
|
+
import type { ToolMetaRecord, ToolTagEntry } from '@tai42/api-client';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Effective hidden after the tri-state override. `overlayHidden` is the overlay's
|
|
16
|
+
* `hidden` (`true`/`false`), or `null`/`undefined` when the overlay defers or has
|
|
17
|
+
* no row; `declaredHidden` is the plugin's own `hidden`. Overlay opinion wins;
|
|
18
|
+
* absence defers to the declaration.
|
|
19
|
+
*/
|
|
20
|
+
export function effectiveHidden(
|
|
21
|
+
overlayHidden: boolean | null | undefined,
|
|
22
|
+
declaredHidden: boolean,
|
|
23
|
+
): boolean {
|
|
24
|
+
return overlayHidden ?? declaredHidden;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The set of tool names whose EFFECTIVE visibility is hidden, from the native
|
|
29
|
+
* declarations (`listToolTags`) merged with the tool_meta overlay (`listToolMeta`).
|
|
30
|
+
* A picker excludes exactly these names from its options; the server stays the
|
|
31
|
+
* authority (a slipped-through name is rejected loudly there), so a name in the set
|
|
32
|
+
* that is not among a picker's options is simply inert.
|
|
33
|
+
*
|
|
34
|
+
* The union of both sources is walked so an overlay row that force-hides a tool
|
|
35
|
+
* carrying no native tag entry is still caught, and an overlay `false` on a
|
|
36
|
+
* plugin-hidden tool correctly keeps it OUT of the set (unhidden).
|
|
37
|
+
*/
|
|
38
|
+
export function hiddenToolNames(
|
|
39
|
+
tagEntries: readonly ToolTagEntry[],
|
|
40
|
+
overlayRows: readonly ToolMetaRecord[],
|
|
41
|
+
): Set<string> {
|
|
42
|
+
const declaredByName = new Map(tagEntries.map((entry) => [entry.name, entry.hidden]));
|
|
43
|
+
const overlayByName = new Map(overlayRows.map((row) => [row.tool_name, row.hidden]));
|
|
44
|
+
const names = new Set<string>([...declaredByName.keys(), ...overlayByName.keys()]);
|
|
45
|
+
|
|
46
|
+
const hidden = new Set<string>();
|
|
47
|
+
for (const name of names) {
|
|
48
|
+
if (effectiveHidden(overlayByName.get(name) ?? null, declaredByName.get(name) ?? false)) {
|
|
49
|
+
hidden.add(name);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return hidden;
|
|
53
|
+
}
|