@tai42/studio-sdk 1.3.0 → 1.5.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/entity-card-grid.d.ts +1 -1
- package/dist/components/folder-nav.d.ts +1 -1
- package/dist/components/folder-nav.js +1 -1
- package/dist/components/overlay-details-fields.d.ts +1 -1
- package/dist/components/view-toggle.d.ts +1 -1
- package/dist/components/view-toggle.js +1 -1
- package/dist/hooks/useApi.d.ts +59 -9
- package/dist/hooks/useApi.d.ts.map +1 -1
- package/dist/tool-visibility.d.ts +2 -2
- package/package.json +2 -2
- package/src/components/entity-card-grid.tsx +1 -1
- package/src/components/folder-nav.tsx +1 -1
- package/src/components/overlay-details-fields.tsx +1 -1
- package/src/components/view-toggle.tsx +1 -1
- package/src/tool-visibility.ts +2 -2
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* half of {@link ViewToggle}). It lays its children out on the design system's
|
|
4
4
|
* responsive `.tai-grid-cards` track (three columns, dropping to two then one down
|
|
5
5
|
* the responsive bands); each child is expected to be an interactive `Card`. Living
|
|
6
|
-
* in the SDK keeps the tools screen and
|
|
6
|
+
* in the SDK keeps the tools screen and the flows page on one identical grid.
|
|
7
7
|
*/
|
|
8
8
|
import type { ReactNode } from 'react';
|
|
9
9
|
export interface EntityCardGridProps {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Folder navigation primitives for the tool-organization tree — shared by the tools
|
|
3
|
-
* screen and
|
|
3
|
+
* screen and the flows page so both explore, breadcrumb, and re-file against
|
|
4
4
|
* one identical set of controls.
|
|
5
5
|
*
|
|
6
6
|
* The tree is passed FLAT (a {@link Folder} list keyed by `id`, each naming its
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* Folder navigation primitives for the tool-organization tree — shared by the tools
|
|
4
|
-
* screen and
|
|
4
|
+
* screen and the flows page so both explore, breadcrumb, and re-file against
|
|
5
5
|
* one identical set of controls.
|
|
6
6
|
*
|
|
7
7
|
* The tree is passed FLAT (a {@link Folder} list keyed by `id`, each naming its
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `OverlayDetailsFields` — the display-name + user-tags editor shared by EVERY
|
|
3
3
|
* tool_meta edit surface (the tools-screen edit dialog, the presets screen, and
|
|
4
|
-
*
|
|
4
|
+
* the flows page). One canonical control means the merge-patch write semantics
|
|
5
5
|
* exist exactly once.
|
|
6
6
|
*
|
|
7
7
|
* Controlled: the caller owns `value` (prefilled from the tool's overlay row) and
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* so the segment shows just its glyph while keeping a real accessible name. A single
|
|
7
7
|
* screen's choice persists across sessions in `localStorage`, keyed per SURFACE —
|
|
8
8
|
* the tools screen and the flows page each remember their own view — via
|
|
9
|
-
* {@link useViewMode}. The two live in the SDK so every entity screen (and
|
|
9
|
+
* {@link useViewMode}. The two live in the SDK so every entity screen (and the
|
|
10
10
|
* flows page) toggles identically; `EntityCardGrid` renders the card half.
|
|
11
11
|
*/
|
|
12
12
|
import { type ReactNode } from 'react';
|
|
@@ -7,7 +7,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
7
7
|
* so the segment shows just its glyph while keeping a real accessible name. A single
|
|
8
8
|
* screen's choice persists across sessions in `localStorage`, keyed per SURFACE —
|
|
9
9
|
* the tools screen and the flows page each remember their own view — via
|
|
10
|
-
* {@link useViewMode}. The two live in the SDK so every entity screen (and
|
|
10
|
+
* {@link useViewMode}. The two live in the SDK so every entity screen (and the
|
|
11
11
|
* flows page) toggles identically; `EntityCardGrid` renders the card half.
|
|
12
12
|
*/
|
|
13
13
|
import { useCallback, useState } from 'react';
|
package/dist/hooks/useApi.d.ts
CHANGED
|
@@ -601,6 +601,12 @@ export declare const ApiProvider: import("react").Provider<{
|
|
|
601
601
|
}, import("zod").ZodTypeAny, "passthrough">[];
|
|
602
602
|
user_tools: string[];
|
|
603
603
|
}>;
|
|
604
|
+
readonly getMcpEnvRefs: (signal?: AbortSignal) => Promise<{
|
|
605
|
+
set: boolean;
|
|
606
|
+
var: string;
|
|
607
|
+
pointer: string;
|
|
608
|
+
has_default: boolean;
|
|
609
|
+
}[]>;
|
|
604
610
|
readonly listProviders: (signal?: AbortSignal) => Promise<{
|
|
605
611
|
providers: {
|
|
606
612
|
description: string;
|
|
@@ -1395,7 +1401,10 @@ export declare const ApiProvider: import("react").Provider<{
|
|
|
1395
1401
|
format: "csv" | "json";
|
|
1396
1402
|
}, signal?: AbortSignal) => Promise<Blob>;
|
|
1397
1403
|
readonly searchMarketplace: (query?: import("@tai42/api-client").MarketplaceSearchQuery, signal?: AbortSignal) => Promise<{
|
|
1398
|
-
|
|
1404
|
+
total: number;
|
|
1405
|
+
page: number;
|
|
1406
|
+
page_size: number;
|
|
1407
|
+
listings: {
|
|
1399
1408
|
name: string;
|
|
1400
1409
|
description: string;
|
|
1401
1410
|
tags: string[];
|
|
@@ -1403,12 +1412,10 @@ export declare const ApiProvider: import("react").Provider<{
|
|
|
1403
1412
|
icon_url: string | null;
|
|
1404
1413
|
categories: string[];
|
|
1405
1414
|
updated_at: string;
|
|
1406
|
-
|
|
1415
|
+
groups: {
|
|
1407
1416
|
name: string;
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
kind: string;
|
|
1411
|
-
};
|
|
1417
|
+
count: number;
|
|
1418
|
+
}[];
|
|
1412
1419
|
ref: string;
|
|
1413
1420
|
namespace: string;
|
|
1414
1421
|
package: string;
|
|
@@ -1416,10 +1423,13 @@ export declare const ApiProvider: import("react").Provider<{
|
|
|
1416
1423
|
pricing: string;
|
|
1417
1424
|
latest_version: string | null;
|
|
1418
1425
|
downloads: number;
|
|
1426
|
+
kinds: {
|
|
1427
|
+
kind: string;
|
|
1428
|
+
count: number;
|
|
1429
|
+
names: string[];
|
|
1430
|
+
}[];
|
|
1431
|
+
premium?: boolean | null | undefined;
|
|
1419
1432
|
}[];
|
|
1420
|
-
total: number;
|
|
1421
|
-
page: number;
|
|
1422
|
-
page_size: number;
|
|
1423
1433
|
}>;
|
|
1424
1434
|
readonly getMarketplacePlugin: (namespace: string, name: string, signal?: AbortSignal) => Promise<{
|
|
1425
1435
|
name: string;
|
|
@@ -1450,16 +1460,56 @@ export declare const ApiProvider: import("react").Provider<{
|
|
|
1450
1460
|
description: string;
|
|
1451
1461
|
tags: string[];
|
|
1452
1462
|
kind: string;
|
|
1463
|
+
group: string | null;
|
|
1453
1464
|
}[];
|
|
1454
1465
|
version: string;
|
|
1455
1466
|
contract_range: string | null;
|
|
1456
1467
|
published_at: string | null;
|
|
1468
|
+
spec?: import("zod").objectOutputType<{
|
|
1469
|
+
provides: import("zod").ZodArray<import("zod").ZodObject<{
|
|
1470
|
+
kind: import("zod").ZodString;
|
|
1471
|
+
name: import("zod").ZodString;
|
|
1472
|
+
mcp: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
1473
|
+
env: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>>;
|
|
1474
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
1475
|
+
env: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>>;
|
|
1476
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
1477
|
+
env: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>>;
|
|
1478
|
+
}, import("zod").ZodTypeAny, "passthrough">>>>;
|
|
1479
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
1480
|
+
kind: import("zod").ZodString;
|
|
1481
|
+
name: import("zod").ZodString;
|
|
1482
|
+
mcp: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
1483
|
+
env: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>>;
|
|
1484
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
1485
|
+
env: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>>;
|
|
1486
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
1487
|
+
env: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>>;
|
|
1488
|
+
}, import("zod").ZodTypeAny, "passthrough">>>>;
|
|
1489
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
1490
|
+
kind: import("zod").ZodString;
|
|
1491
|
+
name: import("zod").ZodString;
|
|
1492
|
+
mcp: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
1493
|
+
env: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>>;
|
|
1494
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
1495
|
+
env: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>>;
|
|
1496
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
1497
|
+
env: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>>;
|
|
1498
|
+
}, import("zod").ZodTypeAny, "passthrough">>>>;
|
|
1499
|
+
}, import("zod").ZodTypeAny, "passthrough">>, "many">;
|
|
1500
|
+
}, import("zod").ZodTypeAny, "passthrough"> | null | undefined;
|
|
1457
1501
|
} | null;
|
|
1502
|
+
premium?: boolean | null | undefined;
|
|
1503
|
+
docs_url?: string | null | undefined;
|
|
1458
1504
|
}>;
|
|
1459
1505
|
readonly listMarketplaceCategories: (signal?: AbortSignal) => Promise<string[]>;
|
|
1460
1506
|
readonly listMarketplaceKinds: (signal?: AbortSignal) => Promise<string[]>;
|
|
1461
1507
|
readonly listInstalledMarketplacePlugins: (signal?: AbortSignal) => Promise<{
|
|
1462
1508
|
installed: {
|
|
1509
|
+
items: {
|
|
1510
|
+
name: string;
|
|
1511
|
+
kind: string;
|
|
1512
|
+
}[];
|
|
1463
1513
|
version: string;
|
|
1464
1514
|
ref: string;
|
|
1465
1515
|
latest: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useApi.d.ts","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD,eAAO,MAAM,WAAW;;+
|
|
1
|
+
{"version":3,"file":"useApi.d.ts","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD,eAAO,MAAM,WAAW;;+BAWsrX,CAAC;iDAAsF,CAAC;;;;;uCAAuM,CAAC;;;;;4EAAgO,CAAC;wFAAgG,CAAC;;;+CAA2G,CAAC;;;;;aAAqL,CAAC;cAAoC,CAAC;mBAA8B,CAAC;;oDAAkF,CAAC;;;;;mBAA2L,CAAC;;kCAAkE,CAAC;;;;;iCAA8I,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;6CAAk2B,CAAC;;;;;;;;;;;;;;sDAA4e,CAAC;;;;;;;;;;;;;;;;qEAAqiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qDAAs8C,CAAC;;;;;;;;;;;;;kCAAmb,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;kDAAqwB,CAAC;;;;;;;;;;;;;;;;;;;oCAA8kB,CAAC;;;;;0CAAwK,CAAC;;;qDAAsH,CAAC;;;;yDAAsJ,CAAC;;;;;;;;;;;;;oCAAka,CAAC;;;;;sCAAmK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAAo4B,CAAC;;;oCAAoE,CAAC;;;;qDAAuI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;uBAAo3B,CAAC;;;;;;;;;;;;;uBAAqd,CAAC;;;;;mCAAmH,CAAC;;;;;;;;;;;;;;eAA+c,CAAC;mBAA6B,CAAC;cAAwB,CAAC;;;;;;;iCAAmM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAA4zC,CAAC;;;;;;;;;;;;;uBAAqd,CAAC;;;;;kCAAkH,CAAC;;;;;;;;;;;;;;;;;mBAAgkB,CAAC;;;gCAAgE,CAAC;;;;oEAA4K,CAAC;;;;;;;;;kCAAuP,CAAC;;;;;;;;;;;;;;;;;;;;uBAA0sB,CAAC;;;;;;;;;;;;;uBAAqd,CAAC;;;;;mCAAmH,CAAC;;;;0CAAuI,CAAC;;;;sDAA+I,CAAC;;;;;;;eAAgQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAAs8B,CAAC;;;;;;;;;;;;;uBAAqd,CAAC;;;;;;;;;;;;;;;;;;;;;+DAAogB,CAAC;;;;;;8EAA8N,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAA+/B,CAAC;;;;;;;;;;;;;uBAAqd,CAAC;;;;;0CAA0H,CAAC;;;;;;;;;;;;;;;;;;mCAA0wB,CAAC;;;;;;mCAA2K,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAA61B,CAAC;;;;;;;;;;;;;;iBAAygB,CAAC;;+CAA6E,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAA+iC,CAAC;;;;;;;;;;;;;uBAAqd,CAAC;;;;;;;;;;;;;;;;;;;;;uBAA6rB,CAAC;;;;;;;;;;;;;uBAAqd,CAAC;;;;;;;;+EAAoU,CAAC;;;;sFAA6K,CAAC;;;;;;;;;;;;;;;uBAAgiB,CAAC;;;;;;;;;;;;;uBAAqd,CAAC;;;;;;;;;;;+DAA6X,CAAC;;;;;;;;;;;;;;;;uBAAyjB,CAAC;;;;;;;;;;;;;uBAAqd,CAAC;;;;;;;;;;;;uCAAkR,CAAC;;;;;;;;;;;;;;;;;kCAAsiB,CAAC;;;4CAA4G,CAAC;;;;;;;;;;;;;;;;gGAAkmB,CAAC;;;;;;;;;;;;;gHAA4gB,CAAC;;;;;;;;;;;;;;iBAAslB,CAAC;mBAAgD,CAAC;wBAAqD,CAAC;wBAAqD,CAAC;+BAA4D,CAAC;gCAA6D,CAAC;oBAA4C,CAAC;;;;;;;;uDAA2O,CAAC;;;;;;;;;;;;;;;;;;;;uCAAoqB,CAAC;;;;;;;;gCAAqO,CAAC;;;;;;;;;;4CAAsT,CAAC;;;;;;;;;;kEAA4U,CAAC;0EAAoK,CAAC;8BAAwH,CAAC,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAAy/B,CAAC;;;;;;;;;;;;;;;;sCAAyiB,CAAC;;;;;;;;;;;;;;;;;;wCAA2nB,CAAC;uCAA2F,CAAC;;;;;;;;;;;;;;qBAA6d,CAAC;uBAAkC,CAAC;;;;gCAAiF,CAAC;;;;;;;;;;;;;;oCAA0b,CAAC;;;;;;;;sCAA4Q,CAAC;;;;;;;+BAA6P,CAAC;;;;;;;;;wBAAiU,CAAC;;;;;;;;;;;wBAAuX,CAAC;;;;;;;;;;;wBAAmY,CAAC;;;;;;oDAAoL,CAAC;;;;;;;;;;;;;gCAA0e,CAAC;;;;;;;;;;;sBAAkS,CAAC;qBAAgC,CAAC;;;;;;;;;;;;;;;wBAA6d,CAAC;;uCAA0D,CAAC;;;;iBAA6H,CAAC;oBAAiD,CAAC;wBAAqD,CAAC;mBAA8B,CAAC;;;;;;;;;;;;;;;;2BAAmhB,CAAC;;;;;;;;;;;;;;;;;;;;;;sCAAyjB,CAAC;cAAkB,CAAC;;;;;;;;;;4BAAqR,CAAC;;;;;;;;;gBAAuQ,CAAC;;;;;;;;;;;;;;;;;;yCAA0f,CAAC;;;;;;;;;;;;;;wDAAia,CAAC;;;;;;;4BAAsO,CAAC;uBAAkC,CAAC;;;;;;;;;wCAA8Q,CAAC;;;;sDAA2I,CAAC;;;;;;;;;;;kBAA+U,CAAC;;;;;;;;;;;;;2BAAghB,CAAC;;;;;;;;;;;;;2BAAygB,CAAC;;;;wBAAwH,CAAC;;;;;;;mCAA+L,CAAC;;;;;;;;uCAA6wB,CAAC;;;;;;;;;;;6CAAgsB,CAAC,kDAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;8BAA0vB,CAAC,+CAAmB,CAAC;;;;;;;;;;;;wBAA6Z,CAAC;yBAAoC,CAAC;;;;;kDAAyI,CAAC;;;;;;;;;;;;;;;;;;;iBAAsoB,CAAC;kBAA6B,CAAC;iBAA4B,CAAC;oBAA+B,CAAC;;aAAqC,CAAC;cAAyB,CAAC;gBAA2B,CAAC;;kDAAqE,CAAC;;;aAA8H,CAAC;sCAAuE,CAAC,4DAAgC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAAszB,CAAC;;;2EAA8H,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAAugC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAAmuG,CAAC;gBAA8C,CAAC;;+CAAoF,CAAC;0CAA+E,CAAC;qDAA0F,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAAi7D,CAAC;;;;;;;;;;;;+BAAkW,CAAC;oCAAuE,CAAC;;;;;;wCAAga,CAAC;SAXzqmE,CAAC;AAE/C,wBAAgB,MAAM,IAAI,SAAS,CAMlC;AAED,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* EFFECTIVE hidden is the overlay's tri-state OVERRIDE of the plugin's own
|
|
6
6
|
* declaration: an overlay opinion (`true`/`false`) wins, else the plugin
|
|
7
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
|
-
*
|
|
8
|
+
* force-hides, and `null` (no overlay row is the same) DEFERS to the declaration.
|
|
9
|
+
* The rule lives here ONCE so the list-exclusion and
|
|
10
10
|
* the picker-exclusion can never drift apart.
|
|
11
11
|
*/
|
|
12
12
|
import type { ToolMetaRecord, ToolTagEntry } from '@tai42/api-client';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tai42/studio-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "The Studio plugin contract, shared UI components, and hooks that every feature builds on.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "tai42 <oss@tai42.ai>",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"@radix-ui/react-select": "^2.3.2",
|
|
90
90
|
"@radix-ui/react-tabs": "^1.1.16",
|
|
91
91
|
"@radix-ui/react-tooltip": "^1.2.11",
|
|
92
|
-
"@tai42/api-client": "1.
|
|
92
|
+
"@tai42/api-client": "1.5.0"
|
|
93
93
|
},
|
|
94
94
|
"scripts": {
|
|
95
95
|
"build": "tsc -b tsconfig.build.json && node scripts/copy-assets.mjs",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* half of {@link ViewToggle}). It lays its children out on the design system's
|
|
4
4
|
* responsive `.tai-grid-cards` track (three columns, dropping to two then one down
|
|
5
5
|
* the responsive bands); each child is expected to be an interactive `Card`. Living
|
|
6
|
-
* in the SDK keeps the tools screen and
|
|
6
|
+
* in the SDK keeps the tools screen and the flows page on one identical grid.
|
|
7
7
|
*/
|
|
8
8
|
import type { ReactNode } from 'react';
|
|
9
9
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Folder navigation primitives for the tool-organization tree — shared by the tools
|
|
3
|
-
* screen and
|
|
3
|
+
* screen and the flows page so both explore, breadcrumb, and re-file against
|
|
4
4
|
* one identical set of controls.
|
|
5
5
|
*
|
|
6
6
|
* The tree is passed FLAT (a {@link Folder} list keyed by `id`, each naming its
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `OverlayDetailsFields` — the display-name + user-tags editor shared by EVERY
|
|
3
3
|
* tool_meta edit surface (the tools-screen edit dialog, the presets screen, and
|
|
4
|
-
*
|
|
4
|
+
* the flows page). One canonical control means the merge-patch write semantics
|
|
5
5
|
* exist exactly once.
|
|
6
6
|
*
|
|
7
7
|
* Controlled: the caller owns `value` (prefilled from the tool's overlay row) and
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* so the segment shows just its glyph while keeping a real accessible name. A single
|
|
7
7
|
* screen's choice persists across sessions in `localStorage`, keyed per SURFACE —
|
|
8
8
|
* the tools screen and the flows page each remember their own view — via
|
|
9
|
-
* {@link useViewMode}. The two live in the SDK so every entity screen (and
|
|
9
|
+
* {@link useViewMode}. The two live in the SDK so every entity screen (and the
|
|
10
10
|
* flows page) toggles identically; `EntityCardGrid` renders the card half.
|
|
11
11
|
*/
|
|
12
12
|
import { useCallback, useState, type ReactNode } from 'react';
|
package/src/tool-visibility.ts
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* EFFECTIVE hidden is the overlay's tri-state OVERRIDE of the plugin's own
|
|
6
6
|
* declaration: an overlay opinion (`true`/`false`) wins, else the plugin
|
|
7
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
|
-
*
|
|
8
|
+
* force-hides, and `null` (no overlay row is the same) DEFERS to the declaration.
|
|
9
|
+
* The rule lives here ONCE so the list-exclusion and
|
|
10
10
|
* the picker-exclusion can never drift apart.
|
|
11
11
|
*/
|
|
12
12
|
import type { ToolMetaRecord, ToolTagEntry } from '@tai42/api-client';
|