@tai42/studio-sdk 29.0.0 → 30.0.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 (58) hide show
  1. package/dist/components/combo-draft-editor.d.ts +31 -0
  2. package/dist/components/combo-draft-editor.d.ts.map +1 -0
  3. package/dist/components/combo-draft-editor.js +16 -0
  4. package/dist/components/combo-draft-editor.js.map +1 -0
  5. package/dist/components/committed-combo-list.d.ts +17 -0
  6. package/dist/components/committed-combo-list.d.ts.map +1 -0
  7. package/dist/components/{extension-combo-parts.js → committed-combo-list.js} +2 -22
  8. package/dist/components/committed-combo-list.js.map +1 -0
  9. package/dist/components/extension-combo-builder.d.ts +4 -4
  10. package/dist/components/extension-combo-builder.js +3 -2
  11. package/dist/components/extension-combo-builder.js.map +1 -1
  12. package/dist/components/holder-kinds.d.ts +6 -0
  13. package/dist/components/holder-kinds.d.ts.map +1 -1
  14. package/dist/components/holder-kinds.js +12 -0
  15. package/dist/components/holder-kinds.js.map +1 -1
  16. package/dist/components/holder-list.d.ts +4 -4
  17. package/dist/components/holder-list.d.ts.map +1 -1
  18. package/dist/components/holder-list.js +5 -3
  19. package/dist/components/holder-list.js.map +1 -1
  20. package/dist/components/selected-tool-badges.d.ts +13 -0
  21. package/dist/components/selected-tool-badges.d.ts.map +1 -0
  22. package/dist/components/selected-tool-badges.js +14 -0
  23. package/dist/components/selected-tool-badges.js.map +1 -0
  24. package/dist/components/tag-filter-field.d.ts +11 -0
  25. package/dist/components/tag-filter-field.d.ts.map +1 -0
  26. package/dist/components/tag-filter-field.js +15 -0
  27. package/dist/components/tag-filter-field.js.map +1 -0
  28. package/dist/components/tool-picker.d.ts +1 -1
  29. package/dist/components/tool-picker.d.ts.map +1 -1
  30. package/dist/components/tool-picker.js +4 -2
  31. package/dist/components/tool-picker.js.map +1 -1
  32. package/dist/components/tool-select.d.ts +25 -0
  33. package/dist/components/tool-select.d.ts.map +1 -0
  34. package/dist/components/{tool-picker-parts.js → tool-select.js} +1 -25
  35. package/dist/components/tool-select.js.map +1 -0
  36. package/dist/extension-combos.d.ts +6 -1
  37. package/dist/extension-combos.d.ts.map +1 -1
  38. package/dist/extension-combos.js +8 -0
  39. package/dist/extension-combos.js.map +1 -1
  40. package/dist/hooks/useApi.d.ts +2 -0
  41. package/dist/hooks/useApi.d.ts.map +1 -1
  42. package/package.json +2 -2
  43. package/src/components/combo-draft-editor.tsx +96 -0
  44. package/src/components/{extension-combo-parts.tsx → committed-combo-list.tsx} +4 -105
  45. package/src/components/extension-combo-builder.tsx +10 -10
  46. package/src/components/holder-kinds.ts +15 -0
  47. package/src/components/holder-list.tsx +6 -5
  48. package/src/components/selected-tool-badges.tsx +41 -0
  49. package/src/components/tag-filter-field.tsx +37 -0
  50. package/src/components/tool-picker.tsx +4 -2
  51. package/src/components/{tool-picker-parts.tsx → tool-select.tsx} +2 -72
  52. package/src/extension-combos.ts +15 -1
  53. package/dist/components/extension-combo-parts.d.ts +0 -46
  54. package/dist/components/extension-combo-parts.d.ts.map +0 -1
  55. package/dist/components/extension-combo-parts.js.map +0 -1
  56. package/dist/components/tool-picker-parts.d.ts +0 -43
  57. package/dist/components/tool-picker-parts.d.ts.map +0 -1
  58. package/dist/components/tool-picker-parts.js.map +0 -1
@@ -0,0 +1,31 @@
1
+ /**
2
+ * `ExtensionComboBuilder`'s editor for the combo under construction: the extension
3
+ * picker, a settings form per configurable drafted extension, and the commit actions.
4
+ */
5
+ import type { Extension } from '@tai42/api-client';
6
+ import type { ReactNode } from 'react';
7
+ import type { JsonSchema } from '../schema-form/types';
8
+ import { type ExtensionConfigChange } from './extension-config-editor';
9
+ /** A drafted extension whose catalog entry declares a settings schema. */
10
+ export interface ConfigurableExtension {
11
+ readonly name: string;
12
+ readonly schema: JsonSchema;
13
+ }
14
+ /** The combo under construction: the extension picker, one settings form per drafted
15
+ * configurable extension, the duplicate note, and the Add/Update + Cancel actions. */
16
+ export declare function ComboDraftEditor({ available, draft, onDraftChange, configurable, draftConfigs, onDraftConfigChange, isDuplicate, canAdd, editing, disabled, idPrefix, onCommit, onReset, }: {
17
+ readonly available: readonly Extension[];
18
+ readonly draft: string[];
19
+ readonly onDraftChange: (draft: string[]) => void;
20
+ readonly configurable: readonly ConfigurableExtension[];
21
+ readonly draftConfigs: Readonly<Record<string, Record<string, unknown> | undefined>>;
22
+ readonly onDraftConfigChange: (name: string, change: ExtensionConfigChange) => void;
23
+ readonly isDuplicate: boolean;
24
+ readonly canAdd: boolean;
25
+ readonly editing: number | null;
26
+ readonly disabled: boolean | undefined;
27
+ readonly idPrefix: string;
28
+ readonly onCommit: () => void;
29
+ readonly onReset: () => void;
30
+ }): ReactNode;
31
+ //# sourceMappingURL=combo-draft-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combo-draft-editor.d.ts","sourceRoot":"","sources":["../../src/components/combo-draft-editor.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,qBAAqB,EAAyB,MAAM,2BAA2B,CAAC;AAK9F,0EAA0E;AAC1E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED;uFACuF;AACvF,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,KAAK,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE;IACD,QAAQ,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACxD,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IACrF,QAAQ,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACpF,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,GAAG,SAAS,CA8CZ"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ExtensionConfigEditor } from './extension-config-editor';
3
+ import { ExtensionPicker } from './extension-picker';
4
+ import { XCircleIcon } from './icons';
5
+ import { Button } from './primitives';
6
+ /** The combo under construction: the extension picker, one settings form per drafted
7
+ * configurable extension, the duplicate note, and the Add/Update + Cancel actions. */
8
+ export function ComboDraftEditor({ available, draft, onDraftChange, configurable, draftConfigs, onDraftConfigChange, isDuplicate, canAdd, editing, disabled, idPrefix, onCommit, onReset, }) {
9
+ return (_jsxs("div", { className: "tai-stack tai-stack-2", children: [_jsx(ExtensionPicker, { available: available, value: draft, onChange: onDraftChange, disabled: disabled, idPrefix: `${idPrefix}-draft` }), configurable.map(({ name, schema }) => (_jsx(ExtensionConfigEditor
10
+ // Re-seed the form when the draft target changes (a new draft vs a
11
+ // specific combo pulled in for edit).
12
+ , { name: name, schema: schema, value: draftConfigs[name], onChange: (change) => {
13
+ onDraftConfigChange(name, change);
14
+ }, disabled: disabled, idPrefix: `${idPrefix}-settings-${name}` }, `${editing === null ? 'new' : String(editing)}-${name}`))), isDuplicate ? (_jsxs("p", { role: "alert", className: "tai-field-error", children: [_jsx(XCircleIcon, {}), "This extension set is already added."] })) : null, _jsxs("div", { className: "tai-row", children: [_jsx(Button, { type: "button", variant: "primary", onClick: onCommit, disabled: !canAdd, children: editing === null ? 'Add extension set' : 'Update extension set' }), editing !== null ? (_jsx(Button, { type: "button", onClick: onReset, disabled: disabled, children: "Cancel edit" })) : null] })] }));
15
+ }
16
+ //# sourceMappingURL=combo-draft-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combo-draft-editor.js","sourceRoot":"","sources":["../../src/components/combo-draft-editor.tsx"],"names":[],"mappings":";AAQA,OAAO,EAA8B,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAQtC;uFACuF;AACvF,MAAM,UAAU,gBAAgB,CAAC,EAC/B,SAAS,EACT,KAAK,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,GAeR;IACC,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,aACpC,KAAC,eAAe,IACd,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,GAAG,QAAQ,QAAQ,GAC7B,EAED,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CACtC,KAAC,qBAAqB;YACpB,mEAAmE;YACnE,sCAAsC;gBAEtC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,EACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;oBACnB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACpC,CAAC,EACD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,GAAG,QAAQ,aAAa,IAAI,EAAE,IARnC,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAS5D,CACH,CAAC,EAED,WAAW,CAAC,CAAC,CAAC,CACb,aAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,iBAAiB,aACzC,KAAC,WAAW,KAAG,4CAEb,CACL,CAAC,CAAC,CAAC,IAAI,EAER,eAAK,SAAS,EAAC,SAAS,aACtB,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,YACzE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,sBAAsB,GACzD,EACR,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAClB,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,4BAEjD,CACV,CAAC,CAAC,CAAC,IAAI,IACJ,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `ExtensionComboBuilder`'s list of committed combos: one row of name badges per
3
+ * combo, with per-combo Edit and Remove and an inline unknown-name note.
4
+ */
5
+ import type { PresetExtensionElement } from '@tai42/api-client';
6
+ import { type ReactNode } from 'react';
7
+ /** The current combos, each a row of name badges with per-combo Edit and Remove. */
8
+ export declare function CommittedComboList({ value, availableReady, availableNames, editing, disabled, onEdit, onRemove, }: {
9
+ readonly value: readonly PresetExtensionElement[][];
10
+ readonly availableReady: boolean;
11
+ readonly availableNames: ReadonlySet<string>;
12
+ readonly editing: number | null;
13
+ readonly disabled: boolean | undefined;
14
+ readonly onEdit: (index: number) => void;
15
+ readonly onRemove: (index: number) => void;
16
+ }): ReactNode;
17
+ //# sourceMappingURL=committed-combo-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"committed-combo-list.d.ts","sourceRoot":"","sources":["../../src/components/committed-combo-list.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAiFjD,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,cAAc,EACd,cAAc,EACd,OAAO,EACP,QAAQ,EACR,MAAM,EACN,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,GAAG,SAAS,CAqBZ"}
@@ -1,19 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Fragment } from 'react';
3
- import { comboElementNames } from '../extension-combos';
3
+ import { comboElementNames, unknownNames } from '../extension-combos';
4
4
  import { Badge } from './badge';
5
- import { ExtensionConfigEditor } from './extension-config-editor';
6
- import { ExtensionPicker } from './extension-picker';
7
5
  import { CloseIcon, XCircleIcon } from './icons';
8
6
  import { Button } from './primitives';
9
- /** Two combos are equal when their NAME sequences match (config is not part of identity). */
10
- export function sameNames(a, b) {
11
- return a.length === b.length && a.every((name, index) => name === b[index]);
12
- }
13
- /** The element names in a combo that are absent from the known catalog. */
14
- export function unknownNames(combo, availableNames) {
15
- return comboElementNames(combo).filter((name) => !availableNames.has(name));
16
- }
17
7
  /** One committed combo's row: its name badges and the Edit / Remove pair, with an
18
8
  * inline unknown-name note. */
19
9
  function CommittedComboRow({ combo, index, editing, disabled, unknown, onEdit, onRemove, }) {
@@ -30,14 +20,4 @@ export function CommittedComboList({ value, availableReady, availableNames, edit
30
20
  return _jsx("p", { className: "tai-muted", children: "No extension sets." });
31
21
  return (_jsx("ul", { className: "tai-stack tai-stack-2", children: value.map((combo, index) => (_jsx(CommittedComboRow, { combo: combo, index: index, editing: editing, disabled: disabled, unknown: availableReady ? unknownNames(combo, availableNames) : [], onEdit: onEdit, onRemove: onRemove }, index))) }));
32
22
  }
33
- /** The combo under construction: the extension picker, one settings form per drafted
34
- * configurable extension, the duplicate note, and the Add/Update + Cancel actions. */
35
- export function ComboDraftEditor({ available, draft, onDraftChange, configurable, draftConfigs, onDraftConfigChange, isDuplicate, canAdd, editing, disabled, idPrefix, onCommit, onReset, }) {
36
- return (_jsxs("div", { className: "tai-stack tai-stack-2", children: [_jsx(ExtensionPicker, { available: available, value: draft, onChange: onDraftChange, disabled: disabled, idPrefix: `${idPrefix}-draft` }), configurable.map(({ name, schema }) => (_jsx(ExtensionConfigEditor
37
- // Re-seed the form when the draft target changes (a new draft vs a
38
- // specific combo pulled in for edit).
39
- , { name: name, schema: schema, value: draftConfigs[name], onChange: (change) => {
40
- onDraftConfigChange(name, change);
41
- }, disabled: disabled, idPrefix: `${idPrefix}-settings-${name}` }, `${editing === null ? 'new' : String(editing)}-${name}`))), isDuplicate ? (_jsxs("p", { role: "alert", className: "tai-field-error", children: [_jsx(XCircleIcon, {}), "This extension set is already added."] })) : null, _jsxs("div", { className: "tai-row", children: [_jsx(Button, { type: "button", variant: "primary", onClick: onCommit, disabled: !canAdd, children: editing === null ? 'Add extension set' : 'Update extension set' }), editing !== null ? (_jsx(Button, { type: "button", onClick: onReset, disabled: disabled, children: "Cancel edit" })) : null] })] }));
42
- }
43
- //# sourceMappingURL=extension-combo-parts.js.map
23
+ //# sourceMappingURL=committed-combo-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"committed-combo-list.js","sourceRoot":"","sources":["../../src/components/committed-combo-list.tsx"],"names":[],"mappings":"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"}
@@ -6,10 +6,10 @@
6
6
  * preset/tool extensions wire carries. It is PRESENTATIONAL: the caller fetches the
7
7
  * extension catalog (`available`) and owns the `value`; this component fetches nothing.
8
8
  *
9
- * The surface has two parts:
10
- * - the current combos, each an ordered row of name `Badge`s with a per-combo Edit
11
- * (pull it back into the draft) and Remove;
12
- * - a combo UNDER CONSTRUCTION, authored with the shared `ExtensionPicker` (grouped
9
+ * The surface has two sections:
10
+ * - the current combos (`CommittedComboList`), each an ordered row of name `Badge`s
11
+ * with a per-combo Edit (pull it back into the draft) and Remove;
12
+ * - a combo UNDER CONSTRUCTION (`ComboDraftEditor`), authored with the shared `ExtensionPicker` (grouped
13
13
  * by kind, single-select for the non-stackable `backend` kind). An extension whose
14
14
  * catalog entry declares a `config_schema` is authored as `{ name, config }` through
15
15
  * its settings form; any other name stays a bare element, or the edited combo's own
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
- import { comboElementNames, extensionElementName } from '../extension-combos';
4
- import { ComboDraftEditor, CommittedComboList, sameNames, unknownNames, } from './extension-combo-parts';
3
+ import { comboElementNames, extensionElementName, sameNames, unknownNames, } from '../extension-combos';
4
+ import { ComboDraftEditor } from './combo-draft-editor';
5
+ import { CommittedComboList } from './committed-combo-list';
5
6
  export function ExtensionComboBuilder({ available, value, onChange, disabled, idPrefix = 'extension-combo-builder', onValidityChange, availableReady = true, }) {
6
7
  const [draft, setDraft] = useState([]);
7
8
  // The settings each drafted configurable extension's form last reported.
@@ -1 +1 @@
1
- {"version":3,"file":"extension-combo-builder.js","sourceRoot":"","sources":["../../src/components/extension-combo-builder.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-combo-builder.js","sourceRoot":"","sources":["../../src/components/extension-combo-builder.tsx"],"names":[],"mappings":"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"}
@@ -11,6 +11,12 @@ export type CoreHolderRoute = {
11
11
  readonly search: RouteSearchByToken[T];
12
12
  };
13
13
  }[RouteToken];
14
+ /**
15
+ * A count holder stands for the holders of one kind and tag the caller's role cannot
16
+ * read: its name is the tag and its locator carries only the count. It names no holder,
17
+ * so it has no page to link to.
18
+ */
19
+ export declare function isCountHolder(holder: ReferenceHolder): boolean;
14
20
  /** Every kind the platform reports; a plugin cannot register a link for one. */
15
21
  export declare const CORE_HOLDER_KINDS: ReadonlySet<string>;
16
22
  /** The route a core holder lands on, or `null` for a kind outside the core table. */
@@ -1 +1 @@
1
- {"version":3,"file":"holder-kinds.d.ts","sourceRoot":"","sources":["../../src/components/holder-kinds.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE1E,qDAAqD;AACrD,MAAM,MAAM,eAAe,GAAG;KAC3B,CAAC,IAAI,UAAU,GAAG;QAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;KAAE;CACjF,CAAC,UAAU,CAAC,CAAC;AAyCd,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAqC,CAAC;AAExF,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,GAAG,IAAI,CAG/E"}
1
+ {"version":3,"file":"holder-kinds.d.ts","sourceRoot":"","sources":["../../src/components/holder-kinds.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE1E,qDAAqD;AACrD,MAAM,MAAM,eAAe,GAAG;KAC3B,CAAC,IAAI,UAAU,GAAG;QAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;KAAE;CACjF,CAAC,UAAU,CAAC,CAAC;AAyCd;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAQ9D;AAED,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAqC,CAAC;AAExF,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,GAAG,IAAI,CAG/E"}
@@ -31,6 +31,18 @@ const CORE_ROUTES = {
31
31
  role: () => ({ token: 'settings', search: {} }),
32
32
  setting: () => ({ token: 'settings', search: {} }),
33
33
  };
34
+ /**
35
+ * A count holder stands for the holders of one kind and tag the caller's role cannot
36
+ * read: its name is the tag and its locator carries only the count. It names no holder,
37
+ * so it has no page to link to.
38
+ */
39
+ export function isCountHolder(holder) {
40
+ const keys = Object.keys(holder.locator);
41
+ return (holder.name === holder.tag &&
42
+ keys.length === 1 &&
43
+ keys[0] === 'count' &&
44
+ typeof holder.locator.count === 'number');
45
+ }
34
46
  /** Every kind the platform reports; a plugin cannot register a link for one. */
35
47
  export const CORE_HOLDER_KINDS = new Set(Object.keys(CORE_ROUTES));
36
48
  /** The route a core holder lands on, or `null` for a kind outside the core table. */
@@ -1 +1 @@
1
- {"version":3,"file":"holder-kinds.js","sourceRoot":"","sources":["../../src/components/holder-kinds.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"holder-kinds.js","sourceRoot":"","sources":["../../src/components/holder-kinds.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * `HolderList` — the things that still use a name, each a link to where it lives.
3
3
  * A core holder kind links to its Studio screen; a plugin kind links to the page its
4
- * plugin registered for it; a kind nobody resolves shows as text, so no holder is
5
- * hidden.
4
+ * plugin registered for it; a kind nobody resolves, and a count of holders the caller's
5
+ * role cannot read, show as text, so no holder is hidden.
6
6
  */
7
7
  import type { ReferenceHolder } from '@tai42/api-client';
8
8
  import { type ReactNode } from 'react';
@@ -12,8 +12,8 @@ export interface HolderHref {
12
12
  readonly navigate: () => void;
13
13
  }
14
14
  /**
15
- * The resolver for holder links: `null` for a kind neither the core table nor any
16
- * registered plugin resolves.
15
+ * The resolver for holder links: `null` for a count holder and for a kind neither the
16
+ * core table nor any registered plugin resolves.
17
17
  */
18
18
  export declare function useHolderHref(): (holder: ReferenceHolder) => HolderHref | null;
19
19
  export interface HolderListProps {
@@ -1 +1 @@
1
- {"version":3,"file":"holder-list.d.ts","sourceRoot":"","sources":["../../src/components/holder-list.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAmB,KAAK,SAAS,EAAe,MAAM,OAAO,CAAC;AAQrE,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,CAAC,MAAM,EAAE,eAAe,KAAK,UAAU,GAAG,IAAI,CA0B9E;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC;AA6BD,0FAA0F;AAC1F,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,eAAe,GAAG,SAAS,CAyB3F;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAA;CAAE,CAAC;AAE/E,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC;IAC1E,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,kBAAkB,GAAG,SAAS,CAmB/E;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,eAAe,EAAE,CAEpF"}
1
+ {"version":3,"file":"holder-list.d.ts","sourceRoot":"","sources":["../../src/components/holder-list.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAmB,KAAK,SAAS,EAAe,MAAM,OAAO,CAAC;AAQrE,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,CAAC,MAAM,EAAE,eAAe,KAAK,UAAU,GAAG,IAAI,CA2B9E;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC;AA6BD,0FAA0F;AAC1F,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,eAAe,GAAG,SAAS,CAyB3F;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAA;CAAE,CAAC;AAE/E,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC;IAC1E,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,kBAAkB,GAAG,SAAS,CAmB/E;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,eAAe,EAAE,CAEpF"}
@@ -2,16 +2,18 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback } from 'react';
3
3
  import { errorMessage } from '../errors';
4
4
  import { useNavigation } from '../navigation/context';
5
- import { coreHolderRoute } from './holder-kinds';
5
+ import { coreHolderRoute, isCountHolder } from './holder-kinds';
6
6
  import { Spinner } from './primitives';
7
7
  import { ScrollRegion } from './scroll-region';
8
8
  /**
9
- * The resolver for holder links: `null` for a kind neither the core table nor any
10
- * registered plugin resolves.
9
+ * The resolver for holder links: `null` for a count holder and for a kind neither the
10
+ * core table nor any registered plugin resolves.
11
11
  */
12
12
  export function useHolderHref() {
13
13
  const { navigate, resolvePath, navigatePlugin, resolvePluginPath, resolveHolderLink } = useNavigation();
14
14
  return useCallback((holder) => {
15
+ if (isCountHolder(holder))
16
+ return null;
15
17
  const core = coreHolderRoute(holder);
16
18
  if (core !== null) {
17
19
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"holder-list.js","sourceRoot":"","sources":["../../src/components/holder-list.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"holder-list.js","sourceRoot":"","sources":["../../src/components/holder-list.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** `ToolPicker`'s capability badges for the selected tool, and the note every badge
2
+ * surface carries. */
3
+ import type { ReactNode } from 'react';
4
+ /** The shared informational note every badge surface carries: declared, never enforced. */
5
+ export declare const BADGES_NOTE = "Declared capability labels \u2014 informational only. They describe what the tool touches; the server never enforces them.";
6
+ /** The selected tool's DECLARED capability badges, read-only and informational.
7
+ * Renders nothing unless the selected tool carries badges. */
8
+ export declare function SelectedToolBadges({ value, badgesByTool, idPrefix, }: {
9
+ readonly value: string | null;
10
+ readonly badgesByTool: Readonly<Record<string, readonly string[]>> | undefined;
11
+ readonly idPrefix: string;
12
+ }): ReactNode;
13
+ //# sourceMappingURL=selected-tool-badges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selected-tool-badges.d.ts","sourceRoot":"","sources":["../../src/components/selected-tool-badges.tsx"],"names":[],"mappings":"AAAA;uBACuB;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,2FAA2F;AAC3F,eAAO,MAAM,WAAW,+HACiG,CAAC;AAE1H;+DAC+D;AAC/D,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC/E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GAAG,SAAS,CAmBZ"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Badge } from './badge';
3
+ import { Tooltip } from './tooltip';
4
+ /** The shared informational note every badge surface carries: declared, never enforced. */
5
+ export const BADGES_NOTE = 'Declared capability labels — informational only. They describe what the tool touches; the server never enforces them.';
6
+ /** The selected tool's DECLARED capability badges, read-only and informational.
7
+ * Renders nothing unless the selected tool carries badges. */
8
+ export function SelectedToolBadges({ value, badgesByTool, idPrefix, }) {
9
+ if (value === null || badgesByTool === undefined || (badgesByTool[value]?.length ?? 0) === 0) {
10
+ return null;
11
+ }
12
+ return (_jsx(Tooltip, { content: BADGES_NOTE, children: _jsx("span", { className: "tai-row", "data-testid": `${idPrefix}-badges`, style: { gap: 'var(--tai-space-1)' }, children: (badgesByTool[value] ?? []).map((badge) => (_jsx(Badge, { variant: "neutral", children: badge }, badge))) }) }));
13
+ }
14
+ //# sourceMappingURL=selected-tool-badges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selected-tool-badges.js","sourceRoot":"","sources":["../../src/components/selected-tool-badges.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,WAAW,GACtB,uHAAuH,CAAC;AAE1H;+DAC+D;AAC/D,MAAM,UAAU,kBAAkB,CAAC,EACjC,KAAK,EACL,YAAY,EACZ,QAAQ,GAKT;IACC,IAAI,KAAK,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CACL,KAAC,OAAO,IAAC,OAAO,EAAE,WAAW,YAC3B,eACE,SAAS,EAAC,SAAS,iBACN,GAAG,QAAQ,SAAS,EACjC,KAAK,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,YAEnC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC1C,KAAC,KAAK,IAAa,OAAO,EAAC,SAAS,YACjC,KAAK,IADI,KAAK,CAET,CACT,CAAC,GACG,GACC,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** `ToolPicker`'s tag filter field and its "no filter" sentinel value. */
2
+ import type { ReactNode } from 'react';
3
+ export declare const ALL_TAGS = "__all_tags__";
4
+ /** The tag filter: an "All tags" sentinel plus one option per distinct tag. */
5
+ export declare function TagFilterField({ allTags, tagFilter, onTagFilterChange, disabled, }: {
6
+ readonly allTags: readonly string[];
7
+ readonly tagFilter: string;
8
+ readonly onTagFilterChange: (value: string) => void;
9
+ readonly disabled: boolean | undefined;
10
+ }): ReactNode;
11
+ //# sourceMappingURL=tag-filter-field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-filter-field.d.ts","sourceRoot":"","sources":["../../src/components/tag-filter-field.tsx"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AAEvC,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CACxC,GAAG,SAAS,CAcZ"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Field } from './field';
3
+ import { Select } from './select';
4
+ // Radix `Select.Item` forbids an empty-string value, so the "no filter" choice
5
+ // uses a sentinel rather than ''. A tool literally tagged this string would just
6
+ // never be filtered out — harmless for a UI convenience whose authority is the server.
7
+ export const ALL_TAGS = '__all_tags__';
8
+ /** The tag filter: an "All tags" sentinel plus one option per distinct tag. */
9
+ export function TagFilterField({ allTags, tagFilter, onTagFilterChange, disabled, }) {
10
+ return (_jsx(Field, { label: "Filter by tag", children: _jsx(Select, { options: [
11
+ { value: ALL_TAGS, label: 'All tags' },
12
+ ...allTags.map((tag) => ({ value: tag, label: tag })),
13
+ ], value: tagFilter, onValueChange: onTagFilterChange, disabled: disabled }) }));
14
+ }
15
+ //# sourceMappingURL=tag-filter-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-filter-field.js","sourceRoot":"","sources":["../../src/components/tag-filter-field.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,+EAA+E;AAC/E,iFAAiF;AACjF,uFAAuF;AACvF,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEvC,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,EAC7B,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,QAAQ,GAMT;IACC,OAAO,CACL,KAAC,KAAK,IAAC,KAAK,EAAC,eAAe,YAC1B,KAAC,MAAM,IACL,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE;gBACtC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;aACtD,EACD,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,iBAAiB,EAChC,QAAQ,EAAE,QAAQ,GAClB,GACI,CACT,CAAC;AACJ,CAAC"}
@@ -41,7 +41,7 @@
41
41
  * every one renders as TEXT (React escapes it) — never an HTML sink. Pinned by a test.
42
42
  */
43
43
  import { type ReactNode } from 'react';
44
- export { BADGES_NOTE } from './tool-picker-parts';
44
+ export { BADGES_NOTE } from './selected-tool-badges';
45
45
  /**
46
46
  * The subset of a tool list read this picker reads: `data` is the names the host
47
47
  * offers. A caller's TanStack `UseQueryResult<readonly string[]>` satisfies it
@@ -1 +1 @@
1
- {"version":3,"file":"tool-picker.d.ts","sourceRoot":"","sources":["../../src/components/tool-picker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,OAAO,CAAC;AASxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIlD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,sGAAsG;IACtG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,iFAAiF;IACjF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,sFAAsF;IACtF,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IAClE,wFAAwF;IACxF,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACrE;AA6FD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EACb,aAAa,EACb,QAAQ,EACR,WAA8B,EAC9B,QAAwB,EACxB,KAAK,EACL,WAAW,EACX,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,GACb,EAAE,eAAe,+BAuFjB"}
1
+ {"version":3,"file":"tool-picker.d.ts","sourceRoot":"","sources":["../../src/components/tool-picker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,OAAO,CAAC;AAWxD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAIrD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,sGAAsG;IACtG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,iFAAiF;IACjF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,sFAAsF;IACtF,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IAClE,wFAAwF;IACxF,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACrE;AA6FD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EACb,aAAa,EACb,QAAQ,EACR,WAA8B,EAC9B,QAAwB,EACxB,KAAK,EACL,WAAW,EACX,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,GACb,EAAE,eAAe,+BAuFjB"}
@@ -46,8 +46,10 @@ import { errorMessage, isForbiddenError } from '../errors';
46
46
  import { Badge } from './badge';
47
47
  import { Field } from './field';
48
48
  import { ErrorState } from './primitives';
49
- import { ALL_TAGS, SelectedToolBadges, TagFilterField, ToolSelect } from './tool-picker-parts';
50
- export { BADGES_NOTE } from './tool-picker-parts';
49
+ import { SelectedToolBadges } from './selected-tool-badges';
50
+ import { ALL_TAGS, TagFilterField } from './tag-filter-field';
51
+ import { ToolSelect } from './tool-select';
52
+ export { BADGES_NOTE } from './selected-tool-badges';
51
53
  const MUTED_LINE = { margin: 0, color: 'var(--tai-color-text-muted)' };
52
54
  function phaseOf(refused, failed, unlisted, empty) {
53
55
  if (refused)
@@ -1 +1 @@
1
- {"version":3,"file":"tool-picker.js","sourceRoot":"","sources":["../../src/components/tool-picker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-picker.js","sourceRoot":"","sources":["../../src/components/tool-picker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * `ToolPicker`'s tool `Select`: grouped by tag or flat, with the option-label and
3
+ * grouping helpers it renders from.
4
+ */
5
+ import type { ReactNode } from 'react';
6
+ import { type SelectOption } from './select';
7
+ interface ToolSelectProps {
8
+ readonly tagsByTool: Readonly<Record<string, readonly string[]>> | undefined;
9
+ readonly filtered: readonly string[];
10
+ readonly value: string | null;
11
+ readonly onChange: (toolName: string) => void;
12
+ readonly placeholder: string;
13
+ readonly ariaLabel: string | undefined;
14
+ readonly disabled: boolean | undefined;
15
+ readonly displayNames: Readonly<Record<string, string>> | undefined;
16
+ readonly agentToolNames: ReadonlySet<string> | undefined;
17
+ /** An option drawn ahead of the list's own (a stored value the list does not carry). */
18
+ readonly leading: SelectOption | undefined;
19
+ readonly ariaDescribedBy: string | undefined;
20
+ }
21
+ /** The tool select: grouped by tag when `tagsByTool` is present, else a flat list.
22
+ * Either branch is a `Select`, which claims the enclosing `Field`'s control id. */
23
+ export declare function ToolSelect({ tagsByTool, filtered, value, onChange, placeholder, ariaLabel, disabled, displayNames, agentToolNames, leading, ariaDescribedBy, }: ToolSelectProps): ReactNode;
24
+ export {};
25
+ //# sourceMappingURL=tool-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-select.d.ts","sourceRoot":"","sources":["../../src/components/tool-select.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAqDvE,UAAU,eAAe;IACvB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC7E,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACzD,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C;AAED;oFACoF;AACpF,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,WAAW,EACX,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,OAAO,EACP,eAAe,GAChB,EAAE,eAAe,GAAG,SAAS,CAmC7B"}
@@ -1,17 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { toolDisplayLabel } from '../hooks/useToolDisplayNames';
3
- import { Badge } from './badge';
4
- import { Field } from './field';
5
3
  import { Select } from './select';
6
- import { Tooltip } from './tooltip';
7
- /** The shared informational note every badge surface carries: declared, never enforced. */
8
- export const BADGES_NOTE = 'Declared capability labels — informational only. They describe what the tool touches; the server never enforces them.';
9
4
  const NO_DISPLAY_NAMES = {};
10
5
  const UNTAGGED = 'Untagged';
11
- // Radix `Select.Item` forbids an empty-string value, so the "no filter" choice
12
- // uses a sentinel rather than ''. A tool literally tagged this string would just
13
- // never be filtered out — harmless for a UI convenience whose authority is the server.
14
- export const ALL_TAGS = '__all_tags__';
15
6
  /** The group a tool sorts into: its alphabetically-first tag, else "Untagged". */
16
7
  function groupFor(name, tagsByTool) {
17
8
  const tags = [...(tagsByTool[name] ?? [])].sort((a, b) => a.localeCompare(b));
@@ -71,19 +62,4 @@ export function ToolSelect({ tagsByTool, filtered, value, onChange, placeholder,
71
62
  // a subsequent selection would otherwise trigger.
72
63
  options: leading === undefined ? options : [leading, ...options], value: value ?? '', onValueChange: onChange, placeholder: placeholder, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, disabled: disabled }));
73
64
  }
74
- /** The tag filter: an "All tags" sentinel plus one option per distinct tag. */
75
- export function TagFilterField({ allTags, tagFilter, onTagFilterChange, disabled, }) {
76
- return (_jsx(Field, { label: "Filter by tag", children: _jsx(Select, { options: [
77
- { value: ALL_TAGS, label: 'All tags' },
78
- ...allTags.map((tag) => ({ value: tag, label: tag })),
79
- ], value: tagFilter, onValueChange: onTagFilterChange, disabled: disabled }) }));
80
- }
81
- /** The selected tool's DECLARED capability badges, read-only and informational.
82
- * Renders nothing unless the selected tool carries badges. */
83
- export function SelectedToolBadges({ value, badgesByTool, idPrefix, }) {
84
- if (value === null || badgesByTool === undefined || (badgesByTool[value]?.length ?? 0) === 0) {
85
- return null;
86
- }
87
- return (_jsx(Tooltip, { content: BADGES_NOTE, children: _jsx("span", { className: "tai-row", "data-testid": `${idPrefix}-badges`, style: { gap: 'var(--tai-space-1)' }, children: (badgesByTool[value] ?? []).map((badge) => (_jsx(Badge, { variant: "neutral", children: badge }, badge))) }) }));
88
- }
89
- //# sourceMappingURL=tool-picker-parts.js.map
65
+ //# sourceMappingURL=tool-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-select.js","sourceRoot":"","sources":["../../src/components/tool-select.tsx"],"names":[],"mappings":"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"}
@@ -3,11 +3,16 @@
3
3
  * author `config` (`{ name, config }`) alongside bare-name elements. The editors
4
4
  * hold the full config-bearing elements as their value, so config rides through an
5
5
  * edit directly; these helpers project a combo to its bare extension names where a
6
- * name-only view is needed (a picker's selection, a branch-tool name, a badge row).
6
+ * name-only view is needed (a picker's selection, a branch-tool name, a badge row)
7
+ * and compare or check combos by those names.
7
8
  */
8
9
  import type { PresetExtensionElement } from '@tai42/api-client';
9
10
  /** The bare extension name of one combo element (drops any `config`). */
10
11
  export declare function extensionElementName(element: PresetExtensionElement): string;
11
12
  /** Project a combo's elements to their bare extension names (drops any `config`). */
12
13
  export declare function comboElementNames(combo: readonly PresetExtensionElement[]): string[];
14
+ /** Two combos are equal when their NAME sequences match (config is not part of identity). */
15
+ export declare function sameNames(a: readonly string[], b: readonly string[]): boolean;
16
+ /** The element names in a combo that are absent from the known catalog. */
17
+ export declare function unknownNames(combo: readonly PresetExtensionElement[], availableNames: ReadonlySet<string>): string[];
13
18
  //# sourceMappingURL=extension-combos.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension-combos.d.ts","sourceRoot":"","sources":["../src/extension-combos.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,yEAAyE;AACzE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAE5E;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,GAAG,MAAM,EAAE,CAEpF"}
1
+ {"version":3,"file":"extension-combos.d.ts","sourceRoot":"","sources":["../src/extension-combos.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,yEAAyE;AACzE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAE5E;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,GAAG,MAAM,EAAE,CAEpF;AAED,6FAA6F;AAC7F,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE7E;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,sBAAsB,EAAE,EACxC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,GAClC,MAAM,EAAE,CAEV"}
@@ -6,4 +6,12 @@ export function extensionElementName(element) {
6
6
  export function comboElementNames(combo) {
7
7
  return combo.map(extensionElementName);
8
8
  }
9
+ /** Two combos are equal when their NAME sequences match (config is not part of identity). */
10
+ export function sameNames(a, b) {
11
+ return a.length === b.length && a.every((name, index) => name === b[index]);
12
+ }
13
+ /** The element names in a combo that are absent from the known catalog. */
14
+ export function unknownNames(combo, availableNames) {
15
+ return comboElementNames(combo).filter((name) => !availableNames.has(name));
16
+ }
9
17
  //# sourceMappingURL=extension-combos.js.map