@lushly-dev/fast-element 3.0.1-preview.1 → 3.0.1-preview.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Change Log - @microsoft/fast-element
2
2
 
3
+ ## 3.0.1-preview.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#960](https://github.com/lushly-dev/afd/pull/960) [`2393aaa`](https://github.com/lushly-dev/afd/commit/2393aaa8a753e9f03aebc99f2e6009da517f79a0) Thanks [@Falkicon](https://github.com/Falkicon)! - fast-element is now built with TypeScript 7. The ESM modules and declarations describe the same API: the JavaScript differs only in formatting (line wraps, separate `var` declarations for helper temporaries, their numbering), and five declaration files spell types differently (numeric keys in brackets, member and union order, `typeof noop` for `() => undefined`). The `dist/fast-element*.js` bundles are now built from that ESM output: they inline TypeScript's `__rest` helper in the two modules that use it instead of importing one copy from tslib, which adds 290 bytes to the minified bundles (gzipped, they stay within 4 bytes of before).
8
+
3
9
  ## 3.0.1-preview.1
4
10
 
5
11
  ### Patch Changes
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "metadata": {
3
3
  "toolPackage": "@microsoft/api-extractor",
4
- "toolVersion": "7.58.1",
4
+ "toolVersion": "7.60.1",
5
5
  "schemaVersion": 1011,
6
6
  "oldestForwardsCompatibleVersion": 1001,
7
7
  "tsdocConfig": {
@@ -504,7 +504,7 @@
504
504
  {
505
505
  "kind": "Interface",
506
506
  "canonicalReference": "@lushly-dev/fast-element!Action:interface",
507
- "docComment": "/**\n * Action format for command palette integration. Compatible with ninja-keys and similar libraries.\n *\n * @public\n */\n",
507
+ "docComment": "/**\n * Action format for command palette integration.\n * Compatible with ninja-keys and similar libraries.\n *\n * @public\n */\n",
508
508
  "excerptTokens": [
509
509
  {
510
510
  "kind": "Content",
@@ -1018,7 +1018,7 @@
1018
1018
  {
1019
1019
  "kind": "Function",
1020
1020
  "canonicalReference": "@lushly-dev/fast-element!command:function(1)",
1021
- "docComment": "/**\n * Decorator that registers a method as a command. Commands are discoverable by AI agents and command palettes.\n *\n * @remarks\n *\n * - Command IDs must include a namespace prefix (e.g., \"app.action\") - Runtime warning is emitted if namespace is missing - Metadata is stored using FAST's push() pattern - Commands are registered with CommandRegistry when element connects\n *\n * @param id - Namespace-prefixed command identifier (e.g., \"editor.save\")\n *\n * @param options - Optional command configuration\n *\n * @returns A method decorator\n *\n * @example\n * ```typescript\n * class TextEditor extends FASTElement {\n * // Basic command\n * @command('editor.selectAll')\n * selectAll(): CommandResult {\n * return success({ selected: true });\n * }\n *\n * // Command with full options\n * @command('editor.save', {\n * label: 'Save Document',\n * icon: 'save',\n * description: 'Save the current document',\n * category: 'File',\n * keybinding: 'Ctrl+S',\n * when: 'editorFocus'\n * })\n * save(): CommandResult {\n * return success({ saved: true });\n * }\n * }\n * ```\n *\n * @public\n */\n",
1021
+ "docComment": "/**\n * Decorator that registers a method as a command.\n * Commands are discoverable by AI agents and command palettes.\n *\n * @remarks\n *\n * - Command IDs must include a namespace prefix (e.g., \"app.action\")\n * - Runtime warning is emitted if namespace is missing\n * - Metadata is stored using FAST's push() pattern\n * - Commands are registered with CommandRegistry when element connects\n *\n * @param id - Namespace-prefixed command identifier (e.g., \"editor.save\")\n *\n * @param options - Optional command configuration\n *\n * @returns A method decorator\n *\n * @example\n * ```typescript\n * class TextEditor extends FASTElement {\n * // Basic command\n * @command('editor.selectAll')\n * selectAll(): CommandResult {\n * return success({ selected: true });\n * }\n *\n * // Command with full options\n * @command('editor.save', {\n * label: 'Save Document',\n * icon: 'save',\n * description: 'Save the current document',\n * category: 'File',\n * keybinding: 'Ctrl+S',\n * when: 'editorFocus'\n * })\n * save(): CommandResult {\n * return success({ saved: true });\n * }\n * }\n * ```\n *\n * @public\n */\n",
1022
1022
  "excerptTokens": [
1023
1023
  {
1024
1024
  "kind": "Content",
@@ -1095,7 +1095,7 @@
1095
1095
  {
1096
1096
  "kind": "Class",
1097
1097
  "canonicalReference": "@lushly-dev/fast-element!CommandBehavior:class",
1098
- "docComment": "/**\n * Behavior that manages command lifecycle for FASTElement components.\n *\n * @remarks\n *\n * - Discovers `command`-decorated methods via getCommandMetadata - Registers commands with CommandRegistry on connect - Unregisters commands on disconnect - Provides reactive canExecute/when getters via Observable.track()\n *\n * @public\n */\n",
1098
+ "docComment": "/**\n * Behavior that manages command lifecycle for FASTElement components.\n *\n * @remarks\n *\n * - Discovers `command`-decorated methods via getCommandMetadata\n * - Registers commands with CommandRegistry on connect\n * - Unregisters commands on disconnect\n * - Provides reactive canExecute/when getters via Observable.track()\n *\n * @public\n */\n",
1099
1099
  "excerptTokens": [
1100
1100
  {
1101
1101
  "kind": "Content",
@@ -1111,7 +1111,7 @@
1111
1111
  {
1112
1112
  "kind": "Method",
1113
1113
  "canonicalReference": "@lushly-dev/fast-element!CommandBehavior#addedCallback:member(1)",
1114
- "docComment": "/**\n * Called when the behavior is first attached to a controller. Discovers all `command`-decorated methods on the host element.\n *\n * @param controller - The host controller managing this behavior\n */\n",
1114
+ "docComment": "/**\n * Called when the behavior is first attached to a controller.\n * Discovers all `command`-decorated methods on the host element.\n *\n * @param controller - The host controller managing this behavior\n */\n",
1115
1115
  "excerptTokens": [
1116
1116
  {
1117
1117
  "kind": "Content",
@@ -1160,7 +1160,7 @@
1160
1160
  {
1161
1161
  "kind": "Method",
1162
1162
  "canonicalReference": "@lushly-dev/fast-element!CommandBehavior#connectedCallback:member(1)",
1163
- "docComment": "/**\n * Called when the host element connects to the DOM. Registers all discovered commands with the CommandRegistry.\n *\n * @param controller - The host controller managing this behavior\n */\n",
1163
+ "docComment": "/**\n * Called when the host element connects to the DOM.\n * Registers all discovered commands with the CommandRegistry.\n *\n * @param controller - The host controller managing this behavior\n */\n",
1164
1164
  "excerptTokens": [
1165
1165
  {
1166
1166
  "kind": "Content",
@@ -1209,7 +1209,7 @@
1209
1209
  {
1210
1210
  "kind": "Method",
1211
1211
  "canonicalReference": "@lushly-dev/fast-element!CommandBehavior#disconnectedCallback:member(1)",
1212
- "docComment": "/**\n * Called when the host element disconnects from the DOM. Unregisters all commands from the CommandRegistry.\n *\n * @param controller - The host controller managing this behavior\n */\n",
1212
+ "docComment": "/**\n * Called when the host element disconnects from the DOM.\n * Unregisters all commands from the CommandRegistry.\n *\n * @param controller - The host controller managing this behavior\n */\n",
1213
1213
  "excerptTokens": [
1214
1214
  {
1215
1215
  "kind": "Content",
@@ -1261,7 +1261,7 @@
1261
1261
  {
1262
1262
  "kind": "Interface",
1263
1263
  "canonicalReference": "@lushly-dev/fast-element!CommandEntry:interface",
1264
- "docComment": "/**\n * Runtime command entry in the CommandRegistry. Uses AFD's CommandResult for full ecosystem alignment.\n *\n * @remarks\n *\n * Created at connect-time by CommandBehavior from CommandMetadata. The source WeakRef allows garbage collection of disconnected elements.\n *\n * @public\n */\n",
1264
+ "docComment": "/**\n * Runtime command entry in the CommandRegistry.\n * Uses AFD's CommandResult for full ecosystem alignment.\n *\n * @remarks\n *\n * Created at connect-time by CommandBehavior from CommandMetadata.\n * The source WeakRef allows garbage collection of disconnected elements.\n *\n * @public\n */\n",
1265
1265
  "excerptTokens": [
1266
1266
  {
1267
1267
  "kind": "Content",
@@ -1276,7 +1276,7 @@
1276
1276
  {
1277
1277
  "kind": "PropertySignature",
1278
1278
  "canonicalReference": "@lushly-dev/fast-element!CommandEntry#canExecute:member",
1279
- "docComment": "/**\n * Whether the command can currently be executed. Reactive via Observable.track() on the source element.\n */\n",
1279
+ "docComment": "/**\n * Whether the command can currently be executed.\n * Reactive via Observable.track() on the source element.\n */\n",
1280
1280
  "excerptTokens": [
1281
1281
  {
1282
1282
  "kind": "Content",
@@ -1411,7 +1411,7 @@
1411
1411
  {
1412
1412
  "kind": "PropertySignature",
1413
1413
  "canonicalReference": "@lushly-dev/fast-element!CommandEntry#execute:member",
1414
- "docComment": "/**\n * Execute the command with optional arguments. Returns AFD CommandResult for consistent error handling.\n */\n",
1414
+ "docComment": "/**\n * Execute the command with optional arguments.\n * Returns AFD CommandResult for consistent error handling.\n */\n",
1415
1415
  "excerptTokens": [
1416
1416
  {
1417
1417
  "kind": "Content",
@@ -1629,7 +1629,7 @@
1629
1629
  {
1630
1630
  "kind": "PropertySignature",
1631
1631
  "canonicalReference": "@lushly-dev/fast-element!CommandEntry#methodName:member",
1632
- "docComment": "/**\n * Name of the method on the source element that implements the command. Set by CommandBehavior; used for conventions such as `${methodName}Undo()`.\n */\n",
1632
+ "docComment": "/**\n * Name of the method on the source element that implements the command.\n * Set by CommandBehavior; used for conventions such as `${methodName}Undo()`.\n */\n",
1633
1633
  "excerptTokens": [
1634
1634
  {
1635
1635
  "kind": "Content",
@@ -1684,7 +1684,7 @@
1684
1684
  {
1685
1685
  "kind": "PropertySignature",
1686
1686
  "canonicalReference": "@lushly-dev/fast-element!CommandEntry#source:member",
1687
- "docComment": "/**\n * WeakRef to the source element. Allows garbage collection of disconnected elements.\n */\n",
1687
+ "docComment": "/**\n * WeakRef to the source element.\n * Allows garbage collection of disconnected elements.\n */\n",
1688
1688
  "excerptTokens": [
1689
1689
  {
1690
1690
  "kind": "Content",
@@ -1720,7 +1720,7 @@
1720
1720
  {
1721
1721
  "kind": "PropertySignature",
1722
1722
  "canonicalReference": "@lushly-dev/fast-element!CommandEntry#when:member",
1723
- "docComment": "/**\n * Whether the command should be visible in UI. Reactive via Observable.track() on the source element.\n */\n",
1723
+ "docComment": "/**\n * Whether the command should be visible in UI.\n * Reactive via Observable.track() on the source element.\n */\n",
1724
1724
  "excerptTokens": [
1725
1725
  {
1726
1726
  "kind": "Content",
@@ -1954,7 +1954,7 @@
1954
1954
  {
1955
1955
  "kind": "TypeAlias",
1956
1956
  "canonicalReference": "@lushly-dev/fast-element!CommandId:type",
1957
- "docComment": "/**\n * Namespace-prefixed command ID. TypeScript template literal enforces at compile time.\n *\n * @remarks\n *\n * Commands must include a namespace prefix to avoid collisions. Format: \"namespace.action\" or \"\\@scope/namespace.action\"\n *\n * @example\n * ```typescript\n * // Valid IDs:\n * const id1: CommandId = \"editor.save\";\n * const id2: CommandId = \"app.settings.toggle\";\n * const id3: CommandId = \"@myorg/editor.format\";\n *\n * // Invalid (compile error):\n * const bad: CommandId = \"save\"; // Missing namespace\n * ```\n *\n * @public\n */\n",
1957
+ "docComment": "/**\n * Namespace-prefixed command ID.\n * TypeScript template literal enforces at compile time.\n *\n * @remarks\n *\n * Commands must include a namespace prefix to avoid collisions.\n * Format: \"namespace.action\" or \"\\@scope/namespace.action\"\n *\n * @example\n * ```typescript\n * // Valid IDs:\n * const id1: CommandId = \"editor.save\";\n * const id2: CommandId = \"app.settings.toggle\";\n * const id3: CommandId = \"@myorg/editor.format\";\n *\n * // Invalid (compile error):\n * const bad: CommandId = \"save\"; // Missing namespace\n * ```\n *\n * @public\n */\n",
1958
1958
  "excerptTokens": [
1959
1959
  {
1960
1960
  "kind": "Content",
@@ -2006,7 +2006,7 @@
2006
2006
  {
2007
2007
  "kind": "Interface",
2008
2008
  "canonicalReference": "@lushly-dev/fast-element!CommandMetadata:interface",
2009
- "docComment": "/**\n * Decorator metadata stored via createMetadataLocator. Represents the compile-time configuration of a command.\n *\n * @public\n */\n",
2009
+ "docComment": "/**\n * Decorator metadata stored via createMetadataLocator.\n * Represents the compile-time configuration of a command.\n *\n * @public\n */\n",
2010
2010
  "excerptTokens": [
2011
2011
  {
2012
2012
  "kind": "Content",
@@ -2378,7 +2378,7 @@
2378
2378
  {
2379
2379
  "kind": "Interface",
2380
2380
  "canonicalReference": "@lushly-dev/fast-element!CommandOptions:interface",
2381
- "docComment": "/**\n * Options passed to the `command` decorator. All fields except id are optional.\n *\n * @public\n */\n",
2381
+ "docComment": "/**\n * Options passed to the `command` decorator.\n * All fields except id are optional.\n *\n * @public\n */\n",
2382
2382
  "excerptTokens": [
2383
2383
  {
2384
2384
  "kind": "Content",
@@ -2695,7 +2695,7 @@
2695
2695
  {
2696
2696
  "kind": "Variable",
2697
2697
  "canonicalReference": "@lushly-dev/fast-element!CommandRegistry:var",
2698
- "docComment": "/**\n * Global CommandRegistry singleton.\n *\n * @remarks\n *\n * The CommandRegistry is the central hub for command management. Commands are registered automatically when FASTElement components with \\@command decorators connect to the DOM.\n *\n * Key features: - SSR-safe with lazy initialization - Reactive: subscribe to changes via onChange() - Command palette integration via getActions() - Telemetry hooks for analytics\n *\n * @example\n * ```typescript\n * import { CommandRegistry, success, failure } from '\\@lushly-dev/fast-element/command.js';\n *\n * // Manual command registration (usually done automatically)\n * CommandRegistry.register('custom.action', \\{\n * id: 'custom.action',\n * label: 'Custom Action',\n * execute: () => success(\\{ done: true \\}),\n * canExecute: true,\n * when: true,\n * source: new WeakRef(document.body),\n * \\});\n *\n * // Execute command\n * const result = await CommandRegistry.execute('custom.action');\n *\n * // Command palette integration\n * const actions = CommandRegistry.getActions();\n * ninjaKeys.data = actions;\n * ```\n *\n * @public\n */\n",
2698
+ "docComment": "/**\n * Global CommandRegistry singleton.\n *\n * @remarks\n *\n * The CommandRegistry is the central hub for command management.\n * Commands are registered automatically when FASTElement components\n * with \\@command decorators connect to the DOM.\n *\n * Key features:\n * - SSR-safe with lazy initialization\n * - Reactive: subscribe to changes via onChange()\n * - Command palette integration via getActions()\n * - Telemetry hooks for analytics\n *\n * @example\n * ```typescript\n * import { CommandRegistry, success, failure } from '\\@lushly-dev/fast-element/command.js';\n *\n * // Manual command registration (usually done automatically)\n * CommandRegistry.register('custom.action', \\{\n * id: 'custom.action',\n * label: 'Custom Action',\n * execute: () => success(\\{ done: true \\}),\n * canExecute: true,\n * when: true,\n * source: new WeakRef(document.body),\n * \\});\n *\n * // Execute command\n * const result = await CommandRegistry.execute('custom.action');\n *\n * // Command palette integration\n * const actions = CommandRegistry.getActions();\n * ninjaKeys.data = actions;\n * ```\n *\n * @public\n */\n",
2699
2699
  "excerptTokens": [
2700
2700
  {
2701
2701
  "kind": "Content",
@@ -3506,7 +3506,7 @@
3506
3506
  {
3507
3507
  "kind": "TypeAlias",
3508
3508
  "canonicalReference": "@lushly-dev/fast-element!CommandResult:type",
3509
- "docComment": "/**\n * Result type for command execution. Discriminated union based on success field.\n *\n * @public\n */\n",
3509
+ "docComment": "/**\n * Result type for command execution.\n * Discriminated union based on success field.\n *\n * @public\n */\n",
3510
3510
  "excerptTokens": [
3511
3511
  {
3512
3512
  "kind": "Content",
@@ -3580,7 +3580,7 @@
3580
3580
  {
3581
3581
  "kind": "Interface",
3582
3582
  "canonicalReference": "@lushly-dev/fast-element!CommandSchema:interface",
3583
- "docComment": "/**\n * Schema describing a command palette action. Populated by the `command` decorator during schema extraction.\n *\n * @public\n */\n",
3583
+ "docComment": "/**\n * Schema describing a command palette action.\n * Populated by the `command` decorator during schema extraction.\n *\n * @public\n */\n",
3584
3584
  "excerptTokens": [
3585
3585
  {
3586
3586
  "kind": "Content",
@@ -4436,7 +4436,7 @@
4436
4436
  {
4437
4437
  "kind": "Class",
4438
4438
  "canonicalReference": "@lushly-dev/fast-element!ConfirmBehavior:class",
4439
- "docComment": "/**\n * Behavior that intercepts destructive commands and prompts for user confirmation.\n *\n * @remarks\n *\n * - Installs a shared `confirm` interceptor with the CommandRegistry while at least one instance is connected (reference counted: the interceptor is added by the first instance and removed when the last one disconnects) - Intercepts commands where `destructive: true` - When several instances are connected, the most recently connected one handles confirmations; if it disconnects, the previous one takes over - Concurrent confirmations are queued: `pendingConfirmation` is the oldest unsettled one, and each `executeConfirmed()`/`cancelPending()` settles it and exposes the next - `pendingConfirmation` is observable, so templates binding to it update - Cancels any pending confirmation on disconnect\n *\n * @public\n */\n",
4439
+ "docComment": "/**\n * Behavior that intercepts destructive commands and prompts for user confirmation.\n *\n * @remarks\n *\n * - Installs a shared `confirm` interceptor with the CommandRegistry while at\n * least one instance is connected (reference counted: the interceptor is added\n * by the first instance and removed when the last one disconnects)\n * - Intercepts commands where `destructive: true`\n * - When several instances are connected, the most recently connected one handles\n * confirmations; if it disconnects, the previous one takes over\n * - Concurrent confirmations are queued: `pendingConfirmation` is the oldest\n * unsettled one, and each `executeConfirmed()`/`cancelPending()` settles it and\n * exposes the next\n * - `pendingConfirmation` is observable, so templates binding to it update\n * - Cancels any pending confirmation on disconnect\n *\n * @public\n */\n",
4440
4440
  "excerptTokens": [
4441
4441
  {
4442
4442
  "kind": "Content",
@@ -4452,7 +4452,7 @@
4452
4452
  {
4453
4453
  "kind": "Method",
4454
4454
  "canonicalReference": "@lushly-dev/fast-element!ConfirmBehavior#cancelPending:member(1)",
4455
- "docComment": "/**\n * Cancels the current pending operation.\n *\n * @remarks\n *\n * Call this when the user clicks \"Cancel\" in your confirmation UI. The intercepted command will return a USER_CANCELLED error.\n */\n",
4455
+ "docComment": "/**\n * Cancels the current pending operation.\n *\n * @remarks\n *\n * Call this when the user clicks \"Cancel\" in your confirmation UI.\n * The intercepted command will return a USER_CANCELLED error.\n */\n",
4456
4456
  "excerptTokens": [
4457
4457
  {
4458
4458
  "kind": "Content",
@@ -4483,7 +4483,7 @@
4483
4483
  {
4484
4484
  "kind": "Method",
4485
4485
  "canonicalReference": "@lushly-dev/fast-element!ConfirmBehavior#connectedCallback:member(1)",
4486
- "docComment": "/**\n * Called when the host element connects to the DOM. Registers this instance and, for the first one, the shared interceptor.\n *\n * @param controller - The host controller managing this behavior\n */\n",
4486
+ "docComment": "/**\n * Called when the host element connects to the DOM.\n * Registers this instance and, for the first one, the shared interceptor.\n *\n * @param controller - The host controller managing this behavior\n */\n",
4487
4487
  "excerptTokens": [
4488
4488
  {
4489
4489
  "kind": "Content",
@@ -4532,7 +4532,7 @@
4532
4532
  {
4533
4533
  "kind": "Method",
4534
4534
  "canonicalReference": "@lushly-dev/fast-element!ConfirmBehavior#disconnectedCallback:member(1)",
4535
- "docComment": "/**\n * Called when the host element disconnects from the DOM. Cancels pending confirmations, and removes the shared interceptor when this was the last connected instance.\n *\n * @param controller - The host controller managing this behavior\n */\n",
4535
+ "docComment": "/**\n * Called when the host element disconnects from the DOM.\n * Cancels pending confirmations, and removes the shared interceptor when this\n * was the last connected instance.\n *\n * @param controller - The host controller managing this behavior\n */\n",
4536
4536
  "excerptTokens": [
4537
4537
  {
4538
4538
  "kind": "Content",
@@ -4581,7 +4581,7 @@
4581
4581
  {
4582
4582
  "kind": "Method",
4583
4583
  "canonicalReference": "@lushly-dev/fast-element!ConfirmBehavior#executeConfirmed:member(1)",
4584
- "docComment": "/**\n * Confirms the current pending operation and allows it to proceed.\n *\n * @remarks\n *\n * Call this when the user clicks \"Confirm\" in your confirmation UI. The intercepted command will then execute normally.\n */\n",
4584
+ "docComment": "/**\n * Confirms the current pending operation and allows it to proceed.\n *\n * @remarks\n *\n * Call this when the user clicks \"Confirm\" in your confirmation UI.\n * The intercepted command will then execute normally.\n */\n",
4585
4585
  "excerptTokens": [
4586
4586
  {
4587
4587
  "kind": "Content",
@@ -4612,7 +4612,7 @@
4612
4612
  {
4613
4613
  "kind": "Property",
4614
4614
  "canonicalReference": "@lushly-dev/fast-element!ConfirmBehavior#pendingConfirmation:member",
4615
- "docComment": "/**\n * Gets the oldest pending confirmation, if any.\n *\n * @remarks\n *\n * Observable: use this in templates to show a confirmation dialog and to get the prompt text. When several confirmations are queued, the next one becomes current after the present one is settled.\n *\n * @returns The pending confirmation or null\n */\n",
4615
+ "docComment": "/**\n * Gets the oldest pending confirmation, if any.\n *\n * @remarks\n *\n * Observable: use this in templates to show a confirmation dialog and to get the\n * prompt text. When several confirmations are queued, the next one becomes\n * current after the present one is settled.\n *\n * @returns The pending confirmation or null\n */\n",
4616
4616
  "excerptTokens": [
4617
4617
  {
4618
4618
  "kind": "Content",
@@ -4647,7 +4647,7 @@
4647
4647
  {
4648
4648
  "kind": "Property",
4649
4649
  "canonicalReference": "@lushly-dev/fast-element!ConfirmBehavior#pendingCount:member",
4650
- "docComment": "/**\n * Gets the number of unsettled confirmations, including the current one. Observable.\n */\n",
4650
+ "docComment": "/**\n * Gets the number of unsettled confirmations, including the current one.\n * Observable.\n */\n",
4651
4651
  "excerptTokens": [
4652
4652
  {
4653
4653
  "kind": "Content",
@@ -4894,7 +4894,7 @@
4894
4894
  {
4895
4895
  "kind": "Variable",
4896
4896
  "canonicalReference": "@lushly-dev/fast-element!DEFAULT_EXPOSE_CONFIG:var",
4897
- "docComment": "/**\n * Default expose configuration. Secure defaults: palette and agent are enabled, mcp and cli require opt-in.\n *\n * @public\n */\n",
4897
+ "docComment": "/**\n * Default expose configuration.\n * Secure defaults: palette and agent are enabled, mcp and cli require opt-in.\n *\n * @public\n */\n",
4898
4898
  "excerptTokens": [
4899
4899
  {
4900
4900
  "kind": "Content",
@@ -4931,7 +4931,7 @@
4931
4931
  {
4932
4932
  "kind": "Function",
4933
4933
  "canonicalReference": "@lushly-dev/fast-element!defineConfirmDialog:function(1)",
4934
- "docComment": "/**\n * Defines the confirmation dialog in the provided registry.\n *\n * @remarks\n *\n * Registration is explicit so importing the command API remains side-effect free. Repeated calls for the same registry are safe.\n *\n * @param registry - Registry in which to define the dialog.\n *\n * @public\n */\n",
4934
+ "docComment": "/**\n * Defines the confirmation dialog in the provided registry.\n *\n * @remarks\n *\n * Registration is explicit so importing the command API remains side-effect free.\n * Repeated calls for the same registry are safe.\n *\n * @param registry - Registry in which to define the dialog.\n *\n * @public\n */\n",
4935
4935
  "excerptTokens": [
4936
4936
  {
4937
4937
  "kind": "Content",
@@ -5109,7 +5109,7 @@
5109
5109
  {
5110
5110
  "kind": "Interface",
5111
5111
  "canonicalReference": "@lushly-dev/fast-element!ExposeConfig:interface",
5112
- "docComment": "/**\n * Configuration for which interfaces a command is exposed to. Secure defaults: palette and agent are opt-out, mcp and cli are opt-in.\n *\n * @remarks\n *\n * - palette: Command palette UI (ninja-keys, etc.) - agent: AI agents interacting with the component - mcp: Model Context Protocol servers - cli: Command-line interface tools\n *\n * @public\n */\n",
5112
+ "docComment": "/**\n * Configuration for which interfaces a command is exposed to.\n * Secure defaults: palette and agent are opt-out, mcp and cli are opt-in.\n *\n * @remarks\n *\n * - palette: Command palette UI (ninja-keys, etc.)\n * - agent: AI agents interacting with the component\n * - mcp: Model Context Protocol servers\n * - cli: Command-line interface tools\n *\n * @public\n */\n",
5113
5113
  "excerptTokens": [
5114
5114
  {
5115
5115
  "kind": "Content",
@@ -5358,7 +5358,7 @@
5358
5358
  {
5359
5359
  "kind": "Interface",
5360
5360
  "canonicalReference": "@lushly-dev/fast-element!Interceptor:interface",
5361
- "docComment": "/**\n * Interceptor for command execution. Interceptors can modify, block, or wrap command execution.\n *\n * @remarks\n *\n * Interceptors run in priority order (lower priority runs first). Each interceptor must call `next()` to continue the chain.\n *\n * @example\n * ```typescript\n * CommandRegistry.addInterceptor({\n * name: 'confirm',\n * priority: 10,\n * intercept: async (command, args, next) => {\n * if (command.destructive) {\n * const confirmed = await showConfirm('Are you sure?');\n * if (!confirmed) return { success: false, error: { code: 'USER_CANCELLED', message: 'Cancelled' } };\n * }\n * return next();\n * }\n * });\n * ```\n *\n * @public\n */\n",
5361
+ "docComment": "/**\n * Interceptor for command execution.\n * Interceptors can modify, block, or wrap command execution.\n *\n * @remarks\n *\n * Interceptors run in priority order (lower priority runs first).\n * Each interceptor must call `next()` to continue the chain.\n *\n * @example\n * ```typescript\n * CommandRegistry.addInterceptor({\n * name: 'confirm',\n * priority: 10,\n * intercept: async (command, args, next) => {\n * if (command.destructive) {\n * const confirmed = await showConfirm('Are you sure?');\n * if (!confirmed) return { success: false, error: { code: 'USER_CANCELLED', message: 'Cancelled' } };\n * }\n * return next();\n * }\n * });\n * ```\n *\n * @public\n */\n",
5362
5362
  "excerptTokens": [
5363
5363
  {
5364
5364
  "kind": "Content",
@@ -5373,7 +5373,7 @@
5373
5373
  {
5374
5374
  "kind": "PropertySignature",
5375
5375
  "canonicalReference": "@lushly-dev/fast-element!Interceptor#confirms:member",
5376
- "docComment": "/**\n * Marks the interceptor as one that asks for user confirmation of destructive commands.\n *\n * @remarks\n *\n * Externally-originated invocations (see {@link CommandRegistryAPI.invoke}) of `destructive` commands fail closed with `CONFIRMATION_REQUIRED` unless an interceptor with this flag, or one named `confirm`, is installed.\n */\n",
5376
+ "docComment": "/**\n * Marks the interceptor as one that asks for user confirmation of destructive\n * commands.\n *\n * @remarks\n *\n * Externally-originated invocations (see {@link CommandRegistryAPI.invoke}) of\n * `destructive` commands fail closed with `CONFIRMATION_REQUIRED` unless an\n * interceptor with this flag, or one named `confirm`, is installed.\n */\n",
5377
5377
  "excerptTokens": [
5378
5378
  {
5379
5379
  "kind": "Content",
@@ -5608,7 +5608,7 @@
5608
5608
  {
5609
5609
  "kind": "PropertySignature",
5610
5610
  "canonicalReference": "@lushly-dev/fast-element!InvokeOptions#origin:member",
5611
- "docComment": "/**\n * The interface the invocation arrives through (`agent`, `mcp`, `cli` or `palette`). The command's `expose` configuration must enable it.\n */\n",
5611
+ "docComment": "/**\n * The interface the invocation arrives through (`agent`, `mcp`, `cli` or\n * `palette`). The command's `expose` configuration must enable it.\n */\n",
5612
5612
  "excerptTokens": [
5613
5613
  {
5614
5614
  "kind": "Content",
@@ -5802,7 +5802,7 @@
5802
5802
  {
5803
5803
  "kind": "TypeAlias",
5804
5804
  "canonicalReference": "@lushly-dev/fast-element!JSONSchema:type",
5805
- "docComment": "/**\n * JSONSchema type for parameter validation. Flexible until formal JSON Schema type is added.\n *\n * @public\n */\n",
5805
+ "docComment": "/**\n * JSONSchema type for parameter validation.\n * Flexible until formal JSON Schema type is added.\n *\n * @public\n */\n",
5806
5806
  "excerptTokens": [
5807
5807
  {
5808
5808
  "kind": "Content",
@@ -6469,7 +6469,7 @@
6469
6469
  {
6470
6470
  "kind": "Interface",
6471
6471
  "canonicalReference": "@lushly-dev/fast-element!PostHook:interface",
6472
- "docComment": "/**\n * PostHook for observing command execution results. PostHooks run after command execution completes (success or failure).\n *\n * @remarks\n *\n * Unlike interceptors, post-hooks cannot modify the result. They are useful for: - Logging and analytics - Building undo stacks - Triggering side effects\n *\n * @example\n * ```typescript\n * CommandRegistry.addPostHook({\n * name: 'undo',\n * afterExecute: (command, args, result) => {\n * if (result.success && command.undoable) {\n * undoStack.push({ command, args, result });\n * }\n * }\n * });\n * ```\n *\n * @public\n */\n",
6472
+ "docComment": "/**\n * PostHook for observing command execution results.\n * PostHooks run after command execution completes (success or failure).\n *\n * @remarks\n *\n * Unlike interceptors, post-hooks cannot modify the result.\n * They are useful for:\n * - Logging and analytics\n * - Building undo stacks\n * - Triggering side effects\n *\n * @example\n * ```typescript\n * CommandRegistry.addPostHook({\n * name: 'undo',\n * afterExecute: (command, args, result) => {\n * if (result.success && command.undoable) {\n * undoStack.push({ command, args, result });\n * }\n * }\n * });\n * ```\n *\n * @public\n */\n",
6473
6473
  "excerptTokens": [
6474
6474
  {
6475
6475
  "kind": "Content",
@@ -6855,7 +6855,7 @@
6855
6855
  {
6856
6856
  "kind": "Function",
6857
6857
  "canonicalReference": "@lushly-dev/fast-element!registerComponentCommands:function(1)",
6858
- "docComment": "/**\n * Register fast.component.* commands with the CommandRegistry. Called during fast-element initialization.\n *\n * @remarks\n *\n * These commands provide runtime introspection of registered FAST elements. They have no dependencies on Creator or design-to-code packages.\n *\n * @public\n */\n",
6858
+ "docComment": "/**\n * Register fast.component.* commands with the CommandRegistry.\n * Called during fast-element initialization.\n *\n * @remarks\n *\n * These commands provide runtime introspection of registered FAST elements.\n * They have no dependencies on Creator or design-to-code packages.\n *\n * @public\n */\n",
6859
6859
  "excerptTokens": [
6860
6860
  {
6861
6861
  "kind": "Content",
@@ -6883,7 +6883,7 @@
6883
6883
  {
6884
6884
  "kind": "Function",
6885
6885
  "canonicalReference": "@lushly-dev/fast-element!registerValidationCommands:function(1)",
6886
- "docComment": "/**\n * Register fast.lint.* and fast.a11y.* commands with the CommandRegistry. Called during fast-element initialization.\n *\n * @remarks\n *\n * These commands provide code validation and accessibility auditing: - fast.lint.check: Validates code against FAST best practices - fast.a11y.audit: Runs WCAG accessibility audit on DOM elements\n *\n * @public\n */\n",
6886
+ "docComment": "/**\n * Register fast.lint.* and fast.a11y.* commands with the CommandRegistry.\n * Called during fast-element initialization.\n *\n * @remarks\n *\n * These commands provide code validation and accessibility auditing:\n * - fast.lint.check: Validates code against FAST best practices\n * - fast.a11y.audit: Runs WCAG accessibility audit on DOM elements\n *\n * @public\n */\n",
6887
6887
  "excerptTokens": [
6888
6888
  {
6889
6889
  "kind": "Content",
@@ -7214,7 +7214,7 @@
7214
7214
  {
7215
7215
  "kind": "Class",
7216
7216
  "canonicalReference": "@lushly-dev/fast-element!UndoBehavior:class",
7217
- "docComment": "/**\n * Behavior that manages an undo stack for undoable commands.\n *\n * @remarks\n *\n * - Installs a shared PostHook with the CommandRegistry while at least one instance is connected (reference counted: added by the first instance, removed when the last one disconnects) - When several instances are connected, the most recently connected one records undo entries and handles the keyboard shortcut - Captures undo functions from `${methodName}Undo()` convention - Maintains a limited stack of undo entries - Provides `undo()` method and Ctrl/Cmd+Z keyboard shortcut; the shortcut is left to the browser when the event target is an editable element - Cleans up on disconnect\n *\n * @public\n */\n",
7217
+ "docComment": "/**\n * Behavior that manages an undo stack for undoable commands.\n *\n * @remarks\n *\n * - Installs a shared PostHook with the CommandRegistry while at least one instance\n * is connected (reference counted: added by the first instance, removed when the\n * last one disconnects)\n * - When several instances are connected, the most recently connected one records\n * undo entries and handles the keyboard shortcut\n * - Captures undo functions from `${methodName}Undo()` convention\n * - Maintains a limited stack of undo entries\n * - Provides `undo()` method and Ctrl/Cmd+Z keyboard shortcut; the shortcut is left\n * to the browser when the event target is an editable element\n * - Cleans up on disconnect\n *\n * @public\n */\n",
7218
7218
  "excerptTokens": [
7219
7219
  {
7220
7220
  "kind": "Content",
@@ -7324,7 +7324,7 @@
7324
7324
  {
7325
7325
  "kind": "Method",
7326
7326
  "canonicalReference": "@lushly-dev/fast-element!UndoBehavior#connectedCallback:member(1)",
7327
- "docComment": "/**\n * Called when the host element connects to the DOM. Registers the undo post-hook with CommandRegistry.\n *\n * @param controller - The host controller managing this behavior\n */\n",
7327
+ "docComment": "/**\n * Called when the host element connects to the DOM.\n * Registers the undo post-hook with CommandRegistry.\n *\n * @param controller - The host controller managing this behavior\n */\n",
7328
7328
  "excerptTokens": [
7329
7329
  {
7330
7330
  "kind": "Content",
@@ -7373,7 +7373,7 @@
7373
7373
  {
7374
7374
  "kind": "Method",
7375
7375
  "canonicalReference": "@lushly-dev/fast-element!UndoBehavior#disconnectedCallback:member(1)",
7376
- "docComment": "/**\n * Called when the host element disconnects from the DOM. Removes the post-hook (when this was the last instance) and cleans up state.\n *\n * @param controller - The host controller managing this behavior\n */\n",
7376
+ "docComment": "/**\n * Called when the host element disconnects from the DOM.\n * Removes the post-hook (when this was the last instance) and cleans up state.\n *\n * @param controller - The host controller managing this behavior\n */\n",
7377
7377
  "excerptTokens": [
7378
7378
  {
7379
7379
  "kind": "Content",
@@ -7528,7 +7528,7 @@
7528
7528
  {
7529
7529
  "kind": "Method",
7530
7530
  "canonicalReference": "@lushly-dev/fast-element!UndoBehavior#undo:member(1)",
7531
- "docComment": "/**\n * Undoes the most recent operation.\n *\n * @remarks\n *\n * Pops the most recent entry from the stack and executes its undo function. If the undo function is async, this returns a Promise.\n *\n * @returns Promise that resolves when the undo is complete\n */\n",
7531
+ "docComment": "/**\n * Undoes the most recent operation.\n *\n * @remarks\n *\n * Pops the most recent entry from the stack and executes its undo function.\n * If the undo function is async, this returns a Promise.\n *\n * @returns Promise that resolves when the undo is complete\n */\n",
7532
7532
  "excerptTokens": [
7533
7533
  {
7534
7534
  "kind": "Content",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "metadata": {
3
3
  "toolPackage": "@microsoft/api-extractor",
4
- "toolVersion": "7.58.1",
4
+ "toolVersion": "7.60.1",
5
5
  "schemaVersion": 1011,
6
6
  "oldestForwardsCompatibleVersion": 1001,
7
7
  "tsdocConfig": {
@@ -230,7 +230,7 @@
230
230
  {
231
231
  "kind": "Variable",
232
232
  "canonicalReference": "@lushly-dev/fast-element!Context:var",
233
- "docComment": "/**\n * Enables using: {@link https://github.com/webcomponents-cg/community-protocols/blob/main/proposals/context.md | W3C Community Context protocol.}\n *\n * @public\n */\n",
233
+ "docComment": "/**\n * Enables using:\n * {@link https://github.com/webcomponents-cg/community-protocols/blob/main/proposals/context.md | W3C Community Context protocol.}\n *\n * @public\n */\n",
234
234
  "excerptTokens": [
235
235
  {
236
236
  "kind": "Content",
@@ -474,7 +474,7 @@
474
474
  {
475
475
  "kind": "TypeAlias",
476
476
  "canonicalReference": "@lushly-dev/fast-element!ContextCallback:type",
477
- "docComment": "/**\n * A callback which is provided by a context requester and is called with the value satisfying the request. This callback can be called multiple times by context providers as the requested value is changed.\n *\n * @public\n */\n",
477
+ "docComment": "/**\n * A callback which is provided by a context requester and is called with the value satisfying the request.\n * This callback can be called multiple times by context providers as the requested value is changed.\n *\n * @public\n */\n",
478
478
  "excerptTokens": [
479
479
  {
480
480
  "kind": "Content",
@@ -513,7 +513,7 @@
513
513
  {
514
514
  "kind": "TypeAlias",
515
515
  "canonicalReference": "@lushly-dev/fast-element!ContextDecorator:type",
516
- "docComment": "/**\n * A constant key that can be used to represent a Context dependency. The key can be used for context or DI but also doubles as a decorator for resolving the associated dependency.\n *\n * @public\n */\n",
516
+ "docComment": "/**\n * A constant key that can be used to represent a Context dependency.\n * The key can be used for context or DI but also doubles as a decorator for\n * resolving the associated dependency.\n *\n * @public\n */\n",
517
517
  "excerptTokens": [
518
518
  {
519
519
  "kind": "Content",
@@ -588,7 +588,7 @@
588
588
  {
589
589
  "kind": "Class",
590
590
  "canonicalReference": "@lushly-dev/fast-element!ContextEvent:class",
591
- "docComment": "/**\n * An event fired by a context requester to signal it desires a named context.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `multiple` value, then a provider can call the callback multiple times if the value is changed, if this is the case the provider should pass a `dispose` method to the callback which requesters can invoke to indicate they no longer wish to receive these updates.\n *\n * @public\n */\n",
591
+ "docComment": "/**\n * An event fired by a context requester to signal it desires a named context.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `multiple` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass a `dispose`\n * method to the callback which requesters can invoke to indicate they no longer wish to receive these updates.\n *\n * @public\n */\n",
592
592
  "excerptTokens": [
593
593
  {
594
594
  "kind": "Content",
@@ -881,7 +881,7 @@
881
881
  {
882
882
  "kind": "TypeAlias",
883
883
  "canonicalReference": "@lushly-dev/fast-element!FASTContext:type",
884
- "docComment": "/**\n * A Context object defines an optional initial value for a Context, as well as a name identifier for debugging purposes. The FASTContext can also be used as a decorator to declare context dependencies or as a key for DI.\n *\n * @public\n */\n",
884
+ "docComment": "/**\n * A Context object defines an optional initial value for a Context, as well as a name identifier for debugging purposes.\n * The FASTContext can also be used as a decorator to declare context dependencies or as a key for DI.\n *\n * @public\n */\n",
885
885
  "excerptTokens": [
886
886
  {
887
887
  "kind": "Content",