@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.
- package/dist/components/combo-draft-editor.d.ts +31 -0
- package/dist/components/combo-draft-editor.d.ts.map +1 -0
- package/dist/components/combo-draft-editor.js +16 -0
- package/dist/components/combo-draft-editor.js.map +1 -0
- package/dist/components/committed-combo-list.d.ts +17 -0
- package/dist/components/committed-combo-list.d.ts.map +1 -0
- package/dist/components/{extension-combo-parts.js → committed-combo-list.js} +2 -22
- package/dist/components/committed-combo-list.js.map +1 -0
- package/dist/components/extension-combo-builder.d.ts +4 -4
- package/dist/components/extension-combo-builder.js +3 -2
- package/dist/components/extension-combo-builder.js.map +1 -1
- package/dist/components/holder-kinds.d.ts +6 -0
- package/dist/components/holder-kinds.d.ts.map +1 -1
- package/dist/components/holder-kinds.js +12 -0
- package/dist/components/holder-kinds.js.map +1 -1
- package/dist/components/holder-list.d.ts +4 -4
- package/dist/components/holder-list.d.ts.map +1 -1
- package/dist/components/holder-list.js +5 -3
- package/dist/components/holder-list.js.map +1 -1
- package/dist/components/selected-tool-badges.d.ts +13 -0
- package/dist/components/selected-tool-badges.d.ts.map +1 -0
- package/dist/components/selected-tool-badges.js +14 -0
- package/dist/components/selected-tool-badges.js.map +1 -0
- package/dist/components/tag-filter-field.d.ts +11 -0
- package/dist/components/tag-filter-field.d.ts.map +1 -0
- package/dist/components/tag-filter-field.js +15 -0
- package/dist/components/tag-filter-field.js.map +1 -0
- package/dist/components/tool-picker.d.ts +1 -1
- package/dist/components/tool-picker.d.ts.map +1 -1
- package/dist/components/tool-picker.js +4 -2
- package/dist/components/tool-picker.js.map +1 -1
- package/dist/components/tool-select.d.ts +25 -0
- package/dist/components/tool-select.d.ts.map +1 -0
- package/dist/components/{tool-picker-parts.js → tool-select.js} +1 -25
- package/dist/components/tool-select.js.map +1 -0
- package/dist/extension-combos.d.ts +6 -1
- package/dist/extension-combos.d.ts.map +1 -1
- package/dist/extension-combos.js +8 -0
- package/dist/extension-combos.js.map +1 -1
- package/dist/hooks/useApi.d.ts +2 -0
- package/dist/hooks/useApi.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/combo-draft-editor.tsx +96 -0
- package/src/components/{extension-combo-parts.tsx → committed-combo-list.tsx} +4 -105
- package/src/components/extension-combo-builder.tsx +10 -10
- package/src/components/holder-kinds.ts +15 -0
- package/src/components/holder-list.tsx +6 -5
- package/src/components/selected-tool-badges.tsx +41 -0
- package/src/components/tag-filter-field.tsx +37 -0
- package/src/components/tool-picker.tsx +4 -2
- package/src/components/{tool-picker-parts.tsx → tool-select.tsx} +2 -72
- package/src/extension-combos.ts +15 -1
- package/dist/components/extension-combo-parts.d.ts +0 -46
- package/dist/components/extension-combo-parts.d.ts.map +0 -1
- package/dist/components/extension-combo-parts.js.map +0 -1
- package/dist/components/tool-picker-parts.d.ts +0 -43
- package/dist/components/tool-picker-parts.d.ts.map +0 -1
- 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
|
-
|
|
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
|
|
10
|
-
* - the current combos, each an ordered row of name `Badge`s
|
|
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
|
|
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":";AAsCA,OAAO,EAAkB,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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":";AAOA,OAAO,EAAmC,WAAW,EAAE,MAAM,OAAO,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
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-
|
|
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;
|
|
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 {
|
|
50
|
-
|
|
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":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,EAAkB,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,
|
|
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
|
-
|
|
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":";AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAuC,MAAM,UAAU,CAAC;AAEvE,MAAM,gBAAgB,GAAqC,EAAE,CAAC;AAC9D,MAAM,QAAQ,GAAG,UAAU,CAAC;AAE5B,kFAAkF;AAClF,SAAS,QAAQ,CAAC,IAAY,EAAE,UAAuD;IACrF,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAClB,IAAY,EACZ,YAA0D,EAC1D,cAA+C;IAE/C,MAAM,IAAI,GAAG,gBAAgB,CAAC,YAAY,IAAI,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACtE,OAAO,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC;AAED,gFAAgF;AAChF,SAAS,WAAW,CAClB,KAAwB,EACxB,UAAuD,EACvD,YAA0D,EAC1D,cAA+C;IAE/C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACjB,IAAI,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7B,KAAK;QACL,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjC,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,cAAc,CAAC;SACvD,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;AACR,CAAC;AAiBD;oFACoF;AACpF,MAAM,UAAU,UAAU,CAAC,EACzB,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,WAAW,EACX,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,OAAO,EACP,eAAe,GACC;IAChB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;QAC/E,OAAO,CACL,KAAC,MAAM,IACL,MAAM,EACJ,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,EAE5F,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,aAAa,EAAE,QAAQ,EACvB,WAAW,EAAE,WAAW,gBACZ,SAAS,sBACH,eAAe,EACjC,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtC,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,cAAc,CAAC;KACvD,CAAC,CAAC,CAAC;IACJ,OAAO,CACL,KAAC,MAAM;IACL,8EAA8E;IAC9E,gFAAgF;IAChF,kDAAkD;;QAFlD,8EAA8E;QAC9E,gFAAgF;QAChF,kDAAkD;QAClD,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,EAChE,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,aAAa,EAAE,QAAQ,EACvB,WAAW,EAAE,WAAW,gBACZ,SAAS,sBACH,eAAe,EACjC,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -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
|
|
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"}
|
package/dist/extension-combos.js
CHANGED
|
@@ -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
|