@ankhorage/runtime 5.1.1 → 5.1.3

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,17 @@
1
1
  # @ankhorage/runtime
2
2
 
3
+ ## 5.1.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 8d799e6: Prefer configured API capability executors so generated hosts provide their injected fetch implementation.
8
+
9
+ ## 5.1.2
10
+
11
+ ### Patch Changes
12
+
13
+ - 948a889: Update dependencies: `@ankhorage/data-sources`.
14
+
3
15
  ## 5.1.1
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # @ankhorage/runtime
5
5
 
6
- ![license: MIT](./paradox/badges/license.svg) ![npm: v5.1.1](./paradox/badges/npm.svg) ![runtime: bun](./paradox/badges/runtime.svg) ![typescript: strict](./paradox/badges/typescript.svg) ![eslint: checked](./paradox/badges/eslint.svg) ![prettier: checked](./paradox/badges/prettier.svg) ![build: checked](./paradox/badges/build.svg) ![tests: checked](./paradox/badges/tests.svg) ![paradox: warnings](./paradox/badges/docs.svg)
6
+ ![license: MIT](./paradox/badges/license.svg) ![npm: v5.1.3](./paradox/badges/npm.svg) ![runtime: bun](./paradox/badges/runtime.svg) ![typescript: strict](./paradox/badges/typescript.svg) ![eslint: checked](./paradox/badges/eslint.svg) ![prettier: checked](./paradox/badges/prettier.svg) ![build: checked](./paradox/badges/build.svg) ![tests: checked](./paradox/badges/tests.svg) ![paradox: warnings](./paradox/badges/docs.svg)
7
7
 
8
8
  Platform-neutral runtime renderer, contracts, and helpers for Ankhorage generated apps.
9
9
 
@@ -5,6 +5,6 @@ export interface RuntimeCapabilityExecutorComposition {
5
5
  readonly capabilityExecutor?: RuntimeCapabilityExecutor;
6
6
  readonly stateAdapter?: StateAdapter;
7
7
  }
8
- /*** Routes API and state capabilities before delegating application-owned capabilities. */
8
+ /*** Keeps local state mutations while preferring the configured host executor for API capabilities. */
9
9
  export declare function composeRuntimeCapabilityExecutor(composition: RuntimeCapabilityExecutorComposition): RuntimeCapabilityExecutor;
10
10
  //# sourceMappingURL=runtimeCapabilityExecutor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeCapabilityExecutor.d.ts","sourceRoot":"","sources":["../src/runtimeCapabilityExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAyB,MAAM,sBAAsB,CAAC;AAGhF,OAAO,KAAK,EAGV,yBAAyB,EAC1B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;IAC1D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IACxD,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACtC;AAED,2FAA2F;AAC3F,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,oCAAoC,GAChD,yBAAyB,CAO3B"}
1
+ {"version":3,"file":"runtimeCapabilityExecutor.d.ts","sourceRoot":"","sources":["../src/runtimeCapabilityExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAyB,MAAM,sBAAsB,CAAC;AAGhF,OAAO,KAAK,EAGV,yBAAyB,EAC1B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;IAC1D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IACxD,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACtC;AAED,uGAAuG;AACvG,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,oCAAoC,GAChD,yBAAyB,CAO3B"}
@@ -1,12 +1,16 @@
1
1
  import { isRecord } from '@ankhorage/utility/object';
2
- /*** Routes API and state capabilities before delegating application-owned capabilities. */
2
+ /*** Keeps local state mutations while preferring the configured host executor for API capabilities. */
3
3
  export function composeRuntimeCapabilityExecutor(composition) {
4
- return async (args) => args.capability.startsWith('api.')
5
- ? composition.apiCapabilityExecutor(args)
6
- : args.capability === 'state.set'
7
- ? executeStateSetCapabilityAsync(args, composition.stateAdapter)
4
+ return async (args) => args.capability === 'state.set'
5
+ ? executeStateSetCapabilityAsync(args, composition.stateAdapter)
6
+ : args.capability.startsWith('api.')
7
+ ? executeApiCapabilityAsync(args, composition)
8
8
  : executeApplicationCapabilityAsync(args, composition.capabilityExecutor);
9
9
  }
10
+ /*** Uses the host API executor when supplied, falling back to the manifest executor. */
11
+ function executeApiCapabilityAsync(args, composition) {
12
+ return composition.capabilityExecutor?.(args) ?? composition.apiCapabilityExecutor(args);
13
+ }
10
14
  /*** Applies one serializable state value through the configured application state adapter. */
11
15
  function executeStateSetCapabilityAsync(args, stateAdapter) {
12
16
  if (stateAdapter === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeCapabilityExecutor.js","sourceRoot":"","sources":["../src/runtimeCapabilityExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StateAdapter, StatePath, StateValue } from '@ankhorage/contracts';\nimport { isRecord } from '@ankhorage/utility/object';\n\nimport type {\n RuntimeCapabilityExecutionArgs,\n RuntimeCapabilityExecutionResult,\n RuntimeCapabilityExecutor,\n} from './runtimeBindings';\n\nexport interface RuntimeCapabilityExecutorComposition {\n readonly apiCapabilityExecutor: RuntimeCapabilityExecutor;\n readonly capabilityExecutor?: RuntimeCapabilityExecutor;\n readonly stateAdapter?: StateAdapter;\n}\n\n/*** Routes API and state capabilities before delegating application-owned capabilities. */\nexport function composeRuntimeCapabilityExecutor(\n composition: RuntimeCapabilityExecutorComposition,\n): RuntimeCapabilityExecutor {\n return async (args) =>\n args.capability.startsWith('api.')\n ? composition.apiCapabilityExecutor(args)\n : args.capability === 'state.set'\n ? executeStateSetCapabilityAsync(args, composition.stateAdapter)\n : executeApplicationCapabilityAsync(args, composition.capabilityExecutor);\n}\n\n/*** Applies one serializable state value through the configured application state adapter. */\nfunction executeStateSetCapabilityAsync(\n args: RuntimeCapabilityExecutionArgs,\n stateAdapter: StateAdapter | undefined,\n): Promise<RuntimeCapabilityExecutionResult> {\n if (stateAdapter === undefined) return Promise.resolve(missingStateAdapterResult());\n\n const input = resolveStateSetInput(args.input);\n if (input === undefined) return Promise.resolve(invalidStateSetInputResult());\n\n try {\n const result = stateAdapter.set(input.path, input.value);\n return Promise.resolve(\n result.ok\n ? { data: { path: input.path, value: input.value }, ok: true }\n : {\n diagnostics: [\n {\n code: result.error.code,\n message: result.error.message,\n severity: 'error',\n },\n ],\n ok: false,\n },\n );\n } catch (error) {\n return Promise.resolve(stateAdapterSetErrorResult(error));\n }\n}\n\nasync function executeApplicationCapabilityAsync(\n args: RuntimeCapabilityExecutionArgs,\n capabilityExecutor: RuntimeCapabilityExecutor | undefined,\n): Promise<RuntimeCapabilityExecutionResult> {\n if (capabilityExecutor !== undefined) return capabilityExecutor(args);\n return {\n diagnostics: [\n {\n code: 'missing-operation',\n message: `Capability '${args.capability}' has no configured executor.`,\n severity: 'error',\n },\n ],\n ok: false,\n };\n}\n\nfunction resolveStateSetInput(\n input: RuntimeCapabilityExecutionArgs['input'],\n): { readonly path: StatePath; readonly value: StateValue } | undefined {\n if (!isRecord(input) || !('value' in input)) return undefined;\n const { path, value } = input;\n if (!isStatePath(path) || !isStateValue(value)) return undefined;\n return { path, value };\n}\n\nfunction isStatePath(value: unknown): value is StatePath {\n return (\n (typeof value === 'string' && value.trim().length > 0) ||\n (Array.isArray(value) &&\n value.length > 0 &&\n value.every((part) => typeof part === 'string' && part.trim().length > 0))\n );\n}\n\nfunction isStateValue(value: unknown): value is StateValue {\n if (value === null || typeof value === 'boolean' || typeof value === 'string') return true;\n if (typeof value === 'number') return Number.isFinite(value);\n if (Array.isArray(value)) return value.every(isStateValue);\n return isRecord(value) && Object.values(value).every(isStateValue);\n}\n\n/*** Converts thrown adapter failures into capability diagnostics at the public Runtime boundary. */\nfunction stateAdapterSetErrorResult(error: unknown): RuntimeCapabilityExecutionResult {\n return {\n diagnostics: [\n {\n code: 'state-adapter-error',\n message: error instanceof Error ? error.message : 'StateAdapter.set failed.',\n severity: 'error',\n },\n ],\n ok: false,\n };\n}\n\nfunction missingStateAdapterResult(): RuntimeCapabilityExecutionResult {\n return {\n diagnostics: [\n {\n code: 'missing-adapter',\n message: \"Capability 'state.set' requires a configured StateAdapter.\",\n severity: 'error',\n },\n ],\n ok: false,\n };\n}\n\nfunction invalidStateSetInputResult(): RuntimeCapabilityExecutionResult {\n return {\n diagnostics: [\n {\n code: 'invalid-input',\n message: \"Capability 'state.set' requires a non-empty path and serializable value.\",\n severity: 'error',\n },\n ],\n ok: false,\n };\n}\n"]}
1
+ {"version":3,"file":"runtimeCapabilityExecutor.js","sourceRoot":"","sources":["../src/runtimeCapabilityExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StateAdapter, StatePath, StateValue } from '@ankhorage/contracts';\nimport { isRecord } from '@ankhorage/utility/object';\n\nimport type {\n RuntimeCapabilityExecutionArgs,\n RuntimeCapabilityExecutionResult,\n RuntimeCapabilityExecutor,\n} from './runtimeBindings';\n\nexport interface RuntimeCapabilityExecutorComposition {\n readonly apiCapabilityExecutor: RuntimeCapabilityExecutor;\n readonly capabilityExecutor?: RuntimeCapabilityExecutor;\n readonly stateAdapter?: StateAdapter;\n}\n\n/*** Keeps local state mutations while preferring the configured host executor for API capabilities. */\nexport function composeRuntimeCapabilityExecutor(\n composition: RuntimeCapabilityExecutorComposition,\n): RuntimeCapabilityExecutor {\n return async (args) =>\n args.capability === 'state.set'\n ? executeStateSetCapabilityAsync(args, composition.stateAdapter)\n : args.capability.startsWith('api.')\n ? executeApiCapabilityAsync(args, composition)\n : executeApplicationCapabilityAsync(args, composition.capabilityExecutor);\n}\n\n/*** Uses the host API executor when supplied, falling back to the manifest executor. */\nfunction executeApiCapabilityAsync(\n args: RuntimeCapabilityExecutionArgs,\n composition: RuntimeCapabilityExecutorComposition,\n): Promise<RuntimeCapabilityExecutionResult> {\n return composition.capabilityExecutor?.(args) ?? composition.apiCapabilityExecutor(args);\n}\n\n/*** Applies one serializable state value through the configured application state adapter. */\nfunction executeStateSetCapabilityAsync(\n args: RuntimeCapabilityExecutionArgs,\n stateAdapter: StateAdapter | undefined,\n): Promise<RuntimeCapabilityExecutionResult> {\n if (stateAdapter === undefined) return Promise.resolve(missingStateAdapterResult());\n\n const input = resolveStateSetInput(args.input);\n if (input === undefined) return Promise.resolve(invalidStateSetInputResult());\n\n try {\n const result = stateAdapter.set(input.path, input.value);\n return Promise.resolve(\n result.ok\n ? { data: { path: input.path, value: input.value }, ok: true }\n : {\n diagnostics: [\n {\n code: result.error.code,\n message: result.error.message,\n severity: 'error',\n },\n ],\n ok: false,\n },\n );\n } catch (error) {\n return Promise.resolve(stateAdapterSetErrorResult(error));\n }\n}\n\nasync function executeApplicationCapabilityAsync(\n args: RuntimeCapabilityExecutionArgs,\n capabilityExecutor: RuntimeCapabilityExecutor | undefined,\n): Promise<RuntimeCapabilityExecutionResult> {\n if (capabilityExecutor !== undefined) return capabilityExecutor(args);\n return {\n diagnostics: [\n {\n code: 'missing-operation',\n message: `Capability '${args.capability}' has no configured executor.`,\n severity: 'error',\n },\n ],\n ok: false,\n };\n}\n\nfunction resolveStateSetInput(\n input: RuntimeCapabilityExecutionArgs['input'],\n): { readonly path: StatePath; readonly value: StateValue } | undefined {\n if (!isRecord(input) || !('value' in input)) return undefined;\n const { path, value } = input;\n if (!isStatePath(path) || !isStateValue(value)) return undefined;\n return { path, value };\n}\n\nfunction isStatePath(value: unknown): value is StatePath {\n return (\n (typeof value === 'string' && value.trim().length > 0) ||\n (Array.isArray(value) &&\n value.length > 0 &&\n value.every((part) => typeof part === 'string' && part.trim().length > 0))\n );\n}\n\nfunction isStateValue(value: unknown): value is StateValue {\n if (value === null || typeof value === 'boolean' || typeof value === 'string') return true;\n if (typeof value === 'number') return Number.isFinite(value);\n if (Array.isArray(value)) return value.every(isStateValue);\n return isRecord(value) && Object.values(value).every(isStateValue);\n}\n\n/*** Converts thrown adapter failures into capability diagnostics at the public Runtime boundary. */\nfunction stateAdapterSetErrorResult(error: unknown): RuntimeCapabilityExecutionResult {\n return {\n diagnostics: [\n {\n code: 'state-adapter-error',\n message: error instanceof Error ? error.message : 'StateAdapter.set failed.',\n severity: 'error',\n },\n ],\n ok: false,\n };\n}\n\nfunction missingStateAdapterResult(): RuntimeCapabilityExecutionResult {\n return {\n diagnostics: [\n {\n code: 'missing-adapter',\n message: \"Capability 'state.set' requires a configured StateAdapter.\",\n severity: 'error',\n },\n ],\n ok: false,\n };\n}\n\nfunction invalidStateSetInputResult(): RuntimeCapabilityExecutionResult {\n return {\n diagnostics: [\n {\n code: 'invalid-input',\n message: \"Capability 'state.set' requires a non-empty path and serializable value.\",\n severity: 'error',\n },\n ],\n ok: false,\n };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/runtime",
3
- "version": "5.1.1",
3
+ "version": "5.1.3",
4
4
  "description": "Platform-neutral runtime renderer, contracts, and helpers for Ankhorage generated apps.",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -262,7 +262,7 @@
262
262
  "dependencies": {
263
263
  "@ankhorage/capability": "^0.2.2",
264
264
  "@ankhorage/contracts": "^26.0.2",
265
- "@ankhorage/data-sources": "^2.1.2",
265
+ "@ankhorage/data-sources": "^2.1.3",
266
266
  "@ankhorage/utility": "^1.10.0"
267
267
  },
268
268
  "peerDependencies": {
@@ -276,7 +276,7 @@
276
276
  }
277
277
  },
278
278
  "devDependencies": {
279
- "@ankhorage/devtools": "^2.3.23",
279
+ "@ankhorage/devtools": "^2.3.30",
280
280
  "@ankhorage/paradox": "^0.3.5",
281
281
  "@types/bun": "^1.4.2",
282
282
  "@types/node": "^26.6.4",
@@ -1,7 +1,7 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="90" height="20" role="img" aria-label="npm: v5.1.1">
2
- <title>npm: v5.1.1</title>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="90" height="20" role="img" aria-label="npm: v5.1.3">
2
+ <title>npm: v5.1.3</title>
3
3
  <rect width="38" height="20" fill="#374151"/>
4
4
  <rect x="38" width="52" height="20" fill="#cb3837"/>
5
5
  <text x="19" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">npm</text>
6
- <text x="64" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">v5.1.1</text>
6
+ <text x="64" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">v5.1.3</text>
7
7
  </svg>
@@ -126,6 +126,12 @@ graph TD
126
126
  package__ankhorage_runtime -.-> module_src_runtimeRepeatDiagnostics_ts
127
127
  module_src_runtimeRepeatEmptyState_ts["src/runtimeRepeatEmptyState.ts"]
128
128
  package__ankhorage_runtime -.-> module_src_runtimeRepeatEmptyState_ts
129
+ module_src_RuntimeScreen_test_tsx["src/RuntimeScreen.test.tsx"]
130
+ package__ankhorage_runtime -.-> module_src_RuntimeScreen_test_tsx
131
+ module_src_RuntimeScreen_test_tsx --> module_src_registry_tsx
132
+ module_src_RuntimeScreen_test_tsx --> module_src_runtimeApiCapabilities_ts
133
+ module_src_RuntimeScreen_test_tsx --> module_src_runtimeBindings_ts
134
+ module_src_RuntimeScreen_test_tsx --> module_src_RuntimeRendererConfig_tsx
129
135
  module_src_RuntimeScreen_tsx["src/RuntimeScreen.tsx"]
130
136
  package__ankhorage_runtime -.-> module_src_RuntimeScreen_tsx
131
137
  module_src_RuntimeScreen_tsx --> module_src_ManifestContext_tsx
@@ -35,6 +35,7 @@ graph LR
35
35
  module_src_runtimeRepeat_ts["src/runtimeRepeat.ts"]
36
36
  module_src_runtimeRepeatDiagnostics_ts["src/runtimeRepeatDiagnostics.ts"]
37
37
  module_src_runtimeRepeatEmptyState_ts["src/runtimeRepeatEmptyState.ts"]
38
+ module_src_RuntimeScreen_test_tsx["src/RuntimeScreen.test.tsx"]
38
39
  module_src_RuntimeScreen_tsx["src/RuntimeScreen.tsx"]
39
40
  module_src_runtimeScreenLoaders_test_ts["src/runtimeScreenLoaders.test.ts"]
40
41
  module_src_runtimeScreenLoaders_ts["src/runtimeScreenLoaders.ts"]
@@ -35,6 +35,7 @@ graph LR
35
35
  module_src_runtimeRepeat_ts["src/runtimeRepeat.ts"]
36
36
  module_src_runtimeRepeatDiagnostics_ts["src/runtimeRepeatDiagnostics.ts"]
37
37
  module_src_runtimeRepeatEmptyState_ts["src/runtimeRepeatEmptyState.ts"]
38
+ module_src_RuntimeScreen_test_tsx["src/RuntimeScreen.test.tsx"]
38
39
  module_src_RuntimeScreen_tsx["src/RuntimeScreen.tsx"]
39
40
  module_src_runtimeScreenLoaders_test_ts["src/runtimeScreenLoaders.test.ts"]
40
41
  module_src_runtimeScreenLoaders_ts["src/runtimeScreenLoaders.ts"]
@@ -98,6 +99,10 @@ graph LR
98
99
  module_src_RuntimeRendererConfig_tsx --> module_src_runtimeEventOperationLifecycle_ts
99
100
  module_src_RuntimeRendererConfig_tsx --> module_src_runtimeMedia_ts
100
101
  module_src_runtimeRepeat_ts --> module_src_runtimeBindings_ts
102
+ module_src_RuntimeScreen_test_tsx --> module_src_registry_tsx
103
+ module_src_RuntimeScreen_test_tsx --> module_src_runtimeApiCapabilities_ts
104
+ module_src_RuntimeScreen_test_tsx --> module_src_runtimeBindings_ts
105
+ module_src_RuntimeScreen_test_tsx --> module_src_RuntimeRendererConfig_tsx
101
106
  module_src_RuntimeScreen_tsx --> module_src_ManifestContext_tsx
102
107
  module_src_RuntimeScreen_tsx --> module_src_registry_tsx
103
108
  module_src_RuntimeScreen_tsx --> module_src_runtimeApiCapabilities_ts
@@ -1,7 +1,9 @@
1
1
  sequenceDiagram
2
2
  participant participant_createMissingCapabilityExecutorDiagnostic as createMissingCapabilityExecutorDiagnostic
3
+ participant participant_executeApi as executeApi
3
4
  participant participant_executeCapability as executeCapability
4
5
  participant participant_executeRuntimeBindingInvocation as executeRuntimeBindingInvocation
6
+ participant participant_navigate as navigate
5
7
  participant participant_resolveBindingInputMap as resolveBindingInputMap
6
8
  participant participant_resolveObjectAsync as resolveObjectAsync
7
9
  participant participant_writeResultSlot as writeResultSlot
@@ -12,6 +14,10 @@ sequenceDiagram
12
14
  participant_resolveObjectAsync-->>participant_resolveBindingInputMap: return
13
15
  participant_resolveBindingInputMap-->>participant_executeRuntimeBindingInvocation: return
14
16
  participant_executeRuntimeBindingInvocation->>participant_executeCapability: context.executeCapability()
17
+ participant_executeCapability->>participant_executeApi: executeApi()
18
+ participant_executeApi-->>participant_executeCapability: return
19
+ participant_executeCapability->>participant_navigate: navigate()
20
+ participant_navigate-->>participant_executeCapability: return
15
21
  participant_executeCapability-->>participant_executeRuntimeBindingInvocation: return
16
22
  participant_executeRuntimeBindingInvocation->>participant_writeResultSlot: context.writeResultSlot()
17
23
  participant_writeResultSlot->>participant_writeResultSlot: args.writeResultSlot()
@@ -66,7 +66,7 @@
66
66
  {
67
67
  "name": "composeRuntimeCapabilityExecutor",
68
68
  "title": null,
69
- "description": "Routes API and state capabilities before delegating application-owned capabilities.",
69
+ "description": "Keeps local state mutations while preferring the configured host executor for API capabilities.",
70
70
  "isReadme": false,
71
71
  "see": [],
72
72
  "security": [],
@@ -27,7 +27,7 @@ Kind: `function`
27
27
  Module: `src/runtimeCapabilityExecutor.ts`
28
28
  Source: `src/runtimeCapabilityExecutor.ts:17:1`
29
29
 
30
- Routes API and state capabilities before delegating application-owned capabilities.
30
+ Keeps local state mutations while preferring the configured host executor for API capabilities.
31
31
 
32
32
  ### Signatures
33
33
 
@@ -184,7 +184,7 @@
184
184
  </li><li>
185
185
  <button class="nav-button" type="button" data-target="src/runtimeCapabilityExecutor.ts">
186
186
  src/runtimeCapabilityExecutor.ts
187
- <small>9 functions</small>
187
+ <small>10 functions</small>
188
188
  </button>
189
189
  </li><li>
190
190
  <button class="nav-button" type="button" data-target="src/runtimeEventExecution.ts">
@@ -256,6 +256,11 @@
256
256
  src/runtimeRepeatEmptyState.ts
257
257
  <small>1 function</small>
258
258
  </button>
259
+ </li><li>
260
+ <button class="nav-button" type="button" data-target="src/RuntimeScreen.test.tsx">
261
+ src/RuntimeScreen.test.tsx
262
+ <small>2 functions</small>
263
+ </button>
259
264
  </li><li>
260
265
  <button class="nav-button" type="button" data-target="src/RuntimeScreen.tsx">
261
266
  src/RuntimeScreen.tsx
@@ -298,7 +303,7 @@
298
303
  <div class="summary">
299
304
  <div><strong>88</strong><span class="muted">public exports</span></div>
300
305
  <div><strong>5</strong><span class="muted">components</span></div>
301
- <div><strong>46</strong><span class="muted">modules</span></div>
306
+ <div><strong>47</strong><span class="muted">modules</span></div>
302
307
  <div><strong>1</strong><span class="muted">entrypoints</span></div>
303
308
  </div>
304
309
  <h3>Entrypoints</h3>
@@ -569,6 +574,11 @@ inject it at the runtime boundary.</p>
569
574
  <p class="muted">Referenced module</p>
570
575
  <p><strong>Dependencies:</strong> <span class="empty">None</span></p>
571
576
  <p><strong>Exports:</strong> <code>shouldRenderRuntimeRepeatEmptyState</code></p>
577
+ </article><article class="item" data-search="src/RuntimeScreen.test.tsx src/registry.tsx src/runtimeApiCapabilities.ts src/runtimeBindings.ts src/RuntimeRendererConfig.tsx">
578
+ <h3>src/RuntimeScreen.test.tsx</h3>
579
+ <p class="muted">Referenced module</p>
580
+ <p><strong>Dependencies:</strong> <code>src/registry.tsx</code>, <code>src/runtimeApiCapabilities.ts</code>, <code>src/runtimeBindings.ts</code>, <code>src/RuntimeRendererConfig.tsx</code></p>
581
+ <p><strong>Exports:</strong> <span class="empty">None</span></p>
572
582
  </article><article class="item" data-search="src/RuntimeScreen.tsx src/ManifestContext.tsx src/registry.tsx src/runtimeApiCapabilities.ts src/runtimeCapabilityExecutor.ts src/RuntimeRenderer.tsx src/RuntimeRendererConfig.tsx src/runtimeScreenLoaders.ts src/runtimeStateAdapter.ts RuntimeScreen RuntimeScreenProps">
573
583
  <h3>src/RuntimeScreen.tsx</h3>
574
584
  <p class="muted">Referenced module</p>
@@ -1885,11 +1895,11 @@ inject it at the runtime boundary.</p>
1885
1895
  </section>
1886
1896
  <section>
1887
1897
  <h3>src/runtimeCapabilityExecutor.ts</h3>
1888
- <article class="item" id="symbol-composeruntimecapabilityexecutor" data-search="composeRuntimeCapabilityExecutor function src/runtimeCapabilityExecutor.ts Routes API and state capabilities before delegating application-owned capabilities. RuntimeCapabilityExecutor RuntimeCapabilityExecutorComposition (composition: RuntimeCapabilityExecutorComposition) =&gt; RuntimeCapabilityExecutor">
1898
+ <article class="item" id="symbol-composeruntimecapabilityexecutor" data-search="composeRuntimeCapabilityExecutor function src/runtimeCapabilityExecutor.ts Keeps local state mutations while preferring the configured host executor for API capabilities. RuntimeCapabilityExecutor RuntimeCapabilityExecutorComposition (composition: RuntimeCapabilityExecutorComposition) =&gt; RuntimeCapabilityExecutor">
1889
1899
  <h4>composeRuntimeCapabilityExecutor</h4>
1890
1900
 
1891
1901
  <p class="muted">function • <code>src/runtimeCapabilityExecutor.ts:17:1</code></p>
1892
- <p>Routes API and state capabilities before delegating application-owned capabilities.</p>
1902
+ <p>Keeps local state mutations while preferring the configured host executor for API capabilities.</p>
1893
1903
 
1894
1904
  <p><strong>Export paths:</strong> <code>src/index.ts</code></p>
1895
1905
  <div><strong>Related symbols:</strong> <ul class="chips"><li class="chip">RuntimeCapabilityExecutor</li><li class="chip">RuntimeCapabilityExecutorComposition</li></ul></div>
@@ -3674,6 +3684,12 @@ inject it at the runtime boundary.</p>
3674
3684
  package__ankhorage_runtime -.-&gt; module_src_runtimeRepeatDiagnostics_ts
3675
3685
  module_src_runtimeRepeatEmptyState_ts[&quot;src/runtimeRepeatEmptyState.ts&quot;]
3676
3686
  package__ankhorage_runtime -.-&gt; module_src_runtimeRepeatEmptyState_ts
3687
+ module_src_RuntimeScreen_test_tsx[&quot;src/RuntimeScreen.test.tsx&quot;]
3688
+ package__ankhorage_runtime -.-&gt; module_src_RuntimeScreen_test_tsx
3689
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_registry_tsx
3690
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_runtimeApiCapabilities_ts
3691
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_runtimeBindings_ts
3692
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_RuntimeRendererConfig_tsx
3677
3693
  module_src_RuntimeScreen_tsx[&quot;src/RuntimeScreen.tsx&quot;]
3678
3694
  package__ankhorage_runtime -.-&gt; module_src_RuntimeScreen_tsx
3679
3695
  module_src_RuntimeScreen_tsx --&gt; module_src_ManifestContext_tsx
@@ -3842,6 +3858,12 @@ inject it at the runtime boundary.</p>
3842
3858
  package__ankhorage_runtime -.-&gt; module_src_runtimeRepeatDiagnostics_ts
3843
3859
  module_src_runtimeRepeatEmptyState_ts[&quot;src/runtimeRepeatEmptyState.ts&quot;]
3844
3860
  package__ankhorage_runtime -.-&gt; module_src_runtimeRepeatEmptyState_ts
3861
+ module_src_RuntimeScreen_test_tsx[&quot;src/RuntimeScreen.test.tsx&quot;]
3862
+ package__ankhorage_runtime -.-&gt; module_src_RuntimeScreen_test_tsx
3863
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_registry_tsx
3864
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_runtimeApiCapabilities_ts
3865
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_runtimeBindings_ts
3866
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_RuntimeRendererConfig_tsx
3845
3867
  module_src_RuntimeScreen_tsx[&quot;src/RuntimeScreen.tsx&quot;]
3846
3868
  package__ankhorage_runtime -.-&gt; module_src_RuntimeScreen_tsx
3847
3869
  module_src_RuntimeScreen_tsx --&gt; module_src_ManifestContext_tsx
@@ -3921,6 +3943,7 @@ inject it at the runtime boundary.</p>
3921
3943
  module_src_runtimeRepeat_ts[&quot;src/runtimeRepeat.ts&quot;]
3922
3944
  module_src_runtimeRepeatDiagnostics_ts[&quot;src/runtimeRepeatDiagnostics.ts&quot;]
3923
3945
  module_src_runtimeRepeatEmptyState_ts[&quot;src/runtimeRepeatEmptyState.ts&quot;]
3946
+ module_src_RuntimeScreen_test_tsx[&quot;src/RuntimeScreen.test.tsx&quot;]
3924
3947
  module_src_RuntimeScreen_tsx[&quot;src/RuntimeScreen.tsx&quot;]
3925
3948
  module_src_runtimeScreenLoaders_test_ts[&quot;src/runtimeScreenLoaders.test.ts&quot;]
3926
3949
  module_src_runtimeScreenLoaders_ts[&quot;src/runtimeScreenLoaders.ts&quot;]
@@ -3984,6 +4007,10 @@ inject it at the runtime boundary.</p>
3984
4007
  module_src_RuntimeRendererConfig_tsx --&gt; module_src_runtimeEventOperationLifecycle_ts
3985
4008
  module_src_RuntimeRendererConfig_tsx --&gt; module_src_runtimeMedia_ts
3986
4009
  module_src_runtimeRepeat_ts --&gt; module_src_runtimeBindings_ts
4010
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_registry_tsx
4011
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_runtimeApiCapabilities_ts
4012
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_runtimeBindings_ts
4013
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_RuntimeRendererConfig_tsx
3987
4014
  module_src_RuntimeScreen_tsx --&gt; module_src_ManifestContext_tsx
3988
4015
  module_src_RuntimeScreen_tsx --&gt; module_src_registry_tsx
3989
4016
  module_src_RuntimeScreen_tsx --&gt; module_src_runtimeApiCapabilities_ts
@@ -4041,6 +4068,7 @@ inject it at the runtime boundary.</p>
4041
4068
  module_src_runtimeRepeat_ts[&quot;src/runtimeRepeat.ts&quot;]
4042
4069
  module_src_runtimeRepeatDiagnostics_ts[&quot;src/runtimeRepeatDiagnostics.ts&quot;]
4043
4070
  module_src_runtimeRepeatEmptyState_ts[&quot;src/runtimeRepeatEmptyState.ts&quot;]
4071
+ module_src_RuntimeScreen_test_tsx[&quot;src/RuntimeScreen.test.tsx&quot;]
4044
4072
  module_src_RuntimeScreen_tsx[&quot;src/RuntimeScreen.tsx&quot;]
4045
4073
  module_src_runtimeScreenLoaders_test_ts[&quot;src/runtimeScreenLoaders.test.ts&quot;]
4046
4074
  module_src_runtimeScreenLoaders_ts[&quot;src/runtimeScreenLoaders.ts&quot;]
@@ -4104,6 +4132,10 @@ inject it at the runtime boundary.</p>
4104
4132
  module_src_RuntimeRendererConfig_tsx --&gt; module_src_runtimeEventOperationLifecycle_ts
4105
4133
  module_src_RuntimeRendererConfig_tsx --&gt; module_src_runtimeMedia_ts
4106
4134
  module_src_runtimeRepeat_ts --&gt; module_src_runtimeBindings_ts
4135
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_registry_tsx
4136
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_runtimeApiCapabilities_ts
4137
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_runtimeBindings_ts
4138
+ module_src_RuntimeScreen_test_tsx --&gt; module_src_RuntimeRendererConfig_tsx
4107
4139
  module_src_RuntimeScreen_tsx --&gt; module_src_ManifestContext_tsx
4108
4140
  module_src_RuntimeScreen_tsx --&gt; module_src_registry_tsx
4109
4141
  module_src_RuntimeScreen_tsx --&gt; module_src_runtimeApiCapabilities_ts
@@ -4163,6 +4195,7 @@ inject it at the runtime boundary.</p>
4163
4195
  module_src_runtimeRepeat_ts[&quot;src/runtimeRepeat.ts&quot;]
4164
4196
  module_src_runtimeRepeatDiagnostics_ts[&quot;src/runtimeRepeatDiagnostics.ts&quot;]
4165
4197
  module_src_runtimeRepeatEmptyState_ts[&quot;src/runtimeRepeatEmptyState.ts&quot;]
4198
+ module_src_RuntimeScreen_test_tsx[&quot;src/RuntimeScreen.test.tsx&quot;]
4166
4199
  module_src_RuntimeScreen_tsx[&quot;src/RuntimeScreen.tsx&quot;]
4167
4200
  module_src_runtimeScreenLoaders_test_ts[&quot;src/runtimeScreenLoaders.test.ts&quot;]
4168
4201
  module_src_runtimeScreenLoaders_ts[&quot;src/runtimeScreenLoaders.ts&quot;]
@@ -4468,6 +4501,7 @@ inject it at the runtime boundary.</p>
4468
4501
  module_src_runtimeRepeat_ts[&quot;src/runtimeRepeat.ts&quot;]
4469
4502
  module_src_runtimeRepeatDiagnostics_ts[&quot;src/runtimeRepeatDiagnostics.ts&quot;]
4470
4503
  module_src_runtimeRepeatEmptyState_ts[&quot;src/runtimeRepeatEmptyState.ts&quot;]
4504
+ module_src_RuntimeScreen_test_tsx[&quot;src/RuntimeScreen.test.tsx&quot;]
4471
4505
  module_src_RuntimeScreen_tsx[&quot;src/RuntimeScreen.tsx&quot;]
4472
4506
  module_src_runtimeScreenLoaders_test_ts[&quot;src/runtimeScreenLoaders.test.ts&quot;]
4473
4507
  module_src_runtimeScreenLoaders_ts[&quot;src/runtimeScreenLoaders.ts&quot;]
@@ -4842,8 +4876,10 @@ inject it at the runtime boundary.</p>
4842
4876
  <p class="muted"><code>diagrams/sequences/execute-runtime-binding-invocation.mmd</code></p>
4843
4877
  <div class="mermaid">sequenceDiagram
4844
4878
  participant participant_createMissingCapabilityExecutorDiagnostic as createMissingCapabilityExecutorDiagnostic
4879
+ participant participant_executeApi as executeApi
4845
4880
  participant participant_executeCapability as executeCapability
4846
4881
  participant participant_executeRuntimeBindingInvocation as executeRuntimeBindingInvocation
4882
+ participant participant_navigate as navigate
4847
4883
  participant participant_resolveBindingInputMap as resolveBindingInputMap
4848
4884
  participant participant_resolveObjectAsync as resolveObjectAsync
4849
4885
  participant participant_writeResultSlot as writeResultSlot
@@ -4854,6 +4890,10 @@ inject it at the runtime boundary.</p>
4854
4890
  participant_resolveObjectAsync--&gt;&gt;participant_resolveBindingInputMap: return
4855
4891
  participant_resolveBindingInputMap--&gt;&gt;participant_executeRuntimeBindingInvocation: return
4856
4892
  participant_executeRuntimeBindingInvocation-&gt;&gt;participant_executeCapability: context.executeCapability()
4893
+ participant_executeCapability-&gt;&gt;participant_executeApi: executeApi()
4894
+ participant_executeApi--&gt;&gt;participant_executeCapability: return
4895
+ participant_executeCapability-&gt;&gt;participant_navigate: navigate()
4896
+ participant_navigate--&gt;&gt;participant_executeCapability: return
4857
4897
  participant_executeCapability--&gt;&gt;participant_executeRuntimeBindingInvocation: return
4858
4898
  participant_executeRuntimeBindingInvocation-&gt;&gt;participant_writeResultSlot: context.writeResultSlot()
4859
4899
  participant_writeResultSlot-&gt;&gt;participant_writeResultSlot: args.writeResultSlot()
@@ -4864,8 +4904,10 @@ inject it at the runtime boundary.</p>
4864
4904
  <summary>View Mermaid source</summary>
4865
4905
  <pre>sequenceDiagram
4866
4906
  participant participant_createMissingCapabilityExecutorDiagnostic as createMissingCapabilityExecutorDiagnostic
4907
+ participant participant_executeApi as executeApi
4867
4908
  participant participant_executeCapability as executeCapability
4868
4909
  participant participant_executeRuntimeBindingInvocation as executeRuntimeBindingInvocation
4910
+ participant participant_navigate as navigate
4869
4911
  participant participant_resolveBindingInputMap as resolveBindingInputMap
4870
4912
  participant participant_resolveObjectAsync as resolveObjectAsync
4871
4913
  participant participant_writeResultSlot as writeResultSlot
@@ -4876,6 +4918,10 @@ inject it at the runtime boundary.</p>
4876
4918
  participant_resolveObjectAsync--&gt;&gt;participant_resolveBindingInputMap: return
4877
4919
  participant_resolveBindingInputMap--&gt;&gt;participant_executeRuntimeBindingInvocation: return
4878
4920
  participant_executeRuntimeBindingInvocation-&gt;&gt;participant_executeCapability: context.executeCapability()
4921
+ participant_executeCapability-&gt;&gt;participant_executeApi: executeApi()
4922
+ participant_executeApi--&gt;&gt;participant_executeCapability: return
4923
+ participant_executeCapability-&gt;&gt;participant_navigate: navigate()
4924
+ participant_navigate--&gt;&gt;participant_executeCapability: return
4879
4925
  participant_executeCapability--&gt;&gt;participant_executeRuntimeBindingInvocation: return
4880
4926
  participant_executeRuntimeBindingInvocation-&gt;&gt;participant_writeResultSlot: context.writeResultSlot()
4881
4927
  participant_writeResultSlot-&gt;&gt;participant_writeResultSlot: args.writeResultSlot()
@@ -5577,49 +5623,54 @@ inject it at the runtime boundary.</p>
5577
5623
  </section><section id="view-src-runtimecapabilityexecutor-ts" class="view" data-view="src/runtimeCapabilityExecutor.ts" hidden>
5578
5624
  <section class="panel">
5579
5625
  <h2>src/runtimeCapabilityExecutor.ts</h2>
5580
- <article class="item" data-search="composeRuntimeCapabilityExecutor src/runtimeCapabilityExecutor.ts Routes API and state capabilities before delegating application-owned capabilities.">
5626
+ <article class="item" data-search="composeRuntimeCapabilityExecutor src/runtimeCapabilityExecutor.ts Keeps local state mutations while preferring the configured host executor for API capabilities.">
5581
5627
  <h3>composeRuntimeCapabilityExecutor</h3>
5582
5628
  <p class="muted"><code>src/runtimeCapabilityExecutor.ts:17:1</code></p>
5583
- <p>Routes API and state capabilities before delegating application-owned capabilities.</p>
5629
+ <p>Keeps local state mutations while preferring the configured host executor for API capabilities.</p>
5630
+
5631
+ </article><article class="item" data-search="executeApiCapabilityAsync src/runtimeCapabilityExecutor.ts Uses the host API executor when supplied, falling back to the manifest executor.">
5632
+ <h3>executeApiCapabilityAsync</h3>
5633
+ <p class="muted"><code>src/runtimeCapabilityExecutor.ts:29:1</code></p>
5634
+ <p>Uses the host API executor when supplied, falling back to the manifest executor.</p>
5584
5635
 
5585
5636
  </article><article class="item" data-search="executeStateSetCapabilityAsync src/runtimeCapabilityExecutor.ts Applies one serializable state value through the configured application state adapter.">
5586
5637
  <h3>executeStateSetCapabilityAsync</h3>
5587
- <p class="muted"><code>src/runtimeCapabilityExecutor.ts:29:1</code></p>
5638
+ <p class="muted"><code>src/runtimeCapabilityExecutor.ts:37:1</code></p>
5588
5639
  <p>Applies one serializable state value through the configured application state adapter.</p>
5589
5640
 
5590
5641
  </article><article class="item" data-search="executeApplicationCapabilityAsync src/runtimeCapabilityExecutor.ts ">
5591
5642
  <h3>executeApplicationCapabilityAsync</h3>
5592
- <p class="muted"><code>src/runtimeCapabilityExecutor.ts:59:1</code></p>
5643
+ <p class="muted"><code>src/runtimeCapabilityExecutor.ts:67:1</code></p>
5593
5644
  <p class="empty">No description available.</p>
5594
5645
 
5595
5646
  </article><article class="item" data-search="resolveStateSetInput src/runtimeCapabilityExecutor.ts ">
5596
5647
  <h3>resolveStateSetInput</h3>
5597
- <p class="muted"><code>src/runtimeCapabilityExecutor.ts:76:1</code></p>
5648
+ <p class="muted"><code>src/runtimeCapabilityExecutor.ts:84:1</code></p>
5598
5649
  <p class="empty">No description available.</p>
5599
5650
 
5600
5651
  </article><article class="item" data-search="isStatePath src/runtimeCapabilityExecutor.ts ">
5601
5652
  <h3>isStatePath</h3>
5602
- <p class="muted"><code>src/runtimeCapabilityExecutor.ts:85:1</code></p>
5653
+ <p class="muted"><code>src/runtimeCapabilityExecutor.ts:93:1</code></p>
5603
5654
  <p class="empty">No description available.</p>
5604
5655
 
5605
5656
  </article><article class="item" data-search="isStateValue src/runtimeCapabilityExecutor.ts ">
5606
5657
  <h3>isStateValue</h3>
5607
- <p class="muted"><code>src/runtimeCapabilityExecutor.ts:94:1</code></p>
5658
+ <p class="muted"><code>src/runtimeCapabilityExecutor.ts:102:1</code></p>
5608
5659
  <p class="empty">No description available.</p>
5609
5660
 
5610
5661
  </article><article class="item" data-search="stateAdapterSetErrorResult src/runtimeCapabilityExecutor.ts Converts thrown adapter failures into capability diagnostics at the public Runtime boundary.">
5611
5662
  <h3>stateAdapterSetErrorResult</h3>
5612
- <p class="muted"><code>src/runtimeCapabilityExecutor.ts:102:1</code></p>
5663
+ <p class="muted"><code>src/runtimeCapabilityExecutor.ts:110:1</code></p>
5613
5664
  <p>Converts thrown adapter failures into capability diagnostics at the public Runtime boundary.</p>
5614
5665
 
5615
5666
  </article><article class="item" data-search="missingStateAdapterResult src/runtimeCapabilityExecutor.ts ">
5616
5667
  <h3>missingStateAdapterResult</h3>
5617
- <p class="muted"><code>src/runtimeCapabilityExecutor.ts:115:1</code></p>
5668
+ <p class="muted"><code>src/runtimeCapabilityExecutor.ts:123:1</code></p>
5618
5669
  <p class="empty">No description available.</p>
5619
5670
 
5620
5671
  </article><article class="item" data-search="invalidStateSetInputResult src/runtimeCapabilityExecutor.ts ">
5621
5672
  <h3>invalidStateSetInputResult</h3>
5622
- <p class="muted"><code>src/runtimeCapabilityExecutor.ts:128:1</code></p>
5673
+ <p class="muted"><code>src/runtimeCapabilityExecutor.ts:136:1</code></p>
5623
5674
  <p class="empty">No description available.</p>
5624
5675
 
5625
5676
  </article>
@@ -5912,6 +5963,21 @@ inject it at the runtime boundary.</p>
5912
5963
  <p class="muted"><code>src/runtimeRepeatEmptyState.ts:3:1</code></p>
5913
5964
  <p class="empty">No description available.</p>
5914
5965
 
5966
+ </article>
5967
+ </section>
5968
+ </section><section id="view-src-runtimescreen-test-tsx" class="view" data-view="src/RuntimeScreen.test.tsx" hidden>
5969
+ <section class="panel">
5970
+ <h2>src/RuntimeScreen.test.tsx</h2>
5971
+ <article class="item" data-search="ButtonProbe src/RuntimeScreen.test.tsx ">
5972
+ <h3>ButtonProbe</h3>
5973
+ <p class="muted"><code>src/RuntimeScreen.test.tsx:31:7</code></p>
5974
+ <p class="empty">No description available.</p>
5975
+
5976
+ </article><article class="item" data-search="executeCapability src/RuntimeScreen.test.tsx ">
5977
+ <h3>executeCapability</h3>
5978
+ <p class="muted"><code>src/RuntimeScreen.test.tsx:147:9</code></p>
5979
+ <p class="empty">No description available.</p>
5980
+
5915
5981
  </article>
5916
5982
  </section>
5917
5983
  </section><section id="view-src-runtimescreen-tsx" class="view" data-view="src/RuntimeScreen.tsx" hidden>
@@ -14,7 +14,7 @@
14
14
  {
15
15
  "id": "npm",
16
16
  "label": "npm",
17
- "value": "v5.1.1",
17
+ "value": "v5.1.3",
18
18
  "color": "cb3837"
19
19
  },
20
20
  {
@@ -713,6 +713,17 @@
713
713
  "shouldRenderRuntimeRepeatEmptyState"
714
714
  ]
715
715
  },
716
+ {
717
+ "path": "src/RuntimeScreen.test.tsx",
718
+ "isEntrypoint": false,
719
+ "dependencies": [
720
+ "src/registry.tsx",
721
+ "src/runtimeApiCapabilities.ts",
722
+ "src/runtimeBindings.ts",
723
+ "src/RuntimeRendererConfig.tsx"
724
+ ],
725
+ "exports": []
726
+ },
716
727
  {
717
728
  "path": "src/RuntimeScreen.tsx",
718
729
  "isEntrypoint": false,
@@ -887,7 +898,7 @@
887
898
  {
888
899
  "name": "composeRuntimeCapabilityExecutor",
889
900
  "title": null,
890
- "description": "Routes API and state capabilities before delegating application-owned capabilities.",
901
+ "description": "Keeps local state mutations while preferring the configured host executor for API capabilities.",
891
902
  "isReadme": false,
892
903
  "see": [],
893
904
  "security": [],
@@ -5659,7 +5670,7 @@
5659
5670
  },
5660
5671
  {
5661
5672
  "name": "composeRuntimeCapabilityExecutor",
5662
- "description": "Routes API and state capabilities before delegating application-owned capabilities.",
5673
+ "description": "Keeps local state mutations while preferring the configured host executor for API capabilities.",
5663
5674
  "see": [],
5664
5675
  "security": [],
5665
5676
  "sourceLocation": {
@@ -5668,6 +5679,17 @@
5668
5679
  "column": 1
5669
5680
  }
5670
5681
  },
5682
+ {
5683
+ "name": "executeApiCapabilityAsync",
5684
+ "description": "Uses the host API executor when supplied, falling back to the manifest executor.",
5685
+ "see": [],
5686
+ "security": [],
5687
+ "sourceLocation": {
5688
+ "filePath": "src/runtimeCapabilityExecutor.ts",
5689
+ "line": 29,
5690
+ "column": 1
5691
+ }
5692
+ },
5671
5693
  {
5672
5694
  "name": "executeStateSetCapabilityAsync",
5673
5695
  "description": "Applies one serializable state value through the configured application state adapter.",
@@ -5675,7 +5697,7 @@
5675
5697
  "security": [],
5676
5698
  "sourceLocation": {
5677
5699
  "filePath": "src/runtimeCapabilityExecutor.ts",
5678
- "line": 29,
5700
+ "line": 37,
5679
5701
  "column": 1
5680
5702
  }
5681
5703
  },
@@ -5686,7 +5708,7 @@
5686
5708
  "security": [],
5687
5709
  "sourceLocation": {
5688
5710
  "filePath": "src/runtimeCapabilityExecutor.ts",
5689
- "line": 59,
5711
+ "line": 67,
5690
5712
  "column": 1
5691
5713
  }
5692
5714
  },
@@ -5697,7 +5719,7 @@
5697
5719
  "security": [],
5698
5720
  "sourceLocation": {
5699
5721
  "filePath": "src/runtimeCapabilityExecutor.ts",
5700
- "line": 76,
5722
+ "line": 84,
5701
5723
  "column": 1
5702
5724
  }
5703
5725
  },
@@ -5708,7 +5730,7 @@
5708
5730
  "security": [],
5709
5731
  "sourceLocation": {
5710
5732
  "filePath": "src/runtimeCapabilityExecutor.ts",
5711
- "line": 85,
5733
+ "line": 93,
5712
5734
  "column": 1
5713
5735
  }
5714
5736
  },
@@ -5719,7 +5741,7 @@
5719
5741
  "security": [],
5720
5742
  "sourceLocation": {
5721
5743
  "filePath": "src/runtimeCapabilityExecutor.ts",
5722
- "line": 94,
5744
+ "line": 102,
5723
5745
  "column": 1
5724
5746
  }
5725
5747
  },
@@ -5730,7 +5752,7 @@
5730
5752
  "security": [],
5731
5753
  "sourceLocation": {
5732
5754
  "filePath": "src/runtimeCapabilityExecutor.ts",
5733
- "line": 102,
5755
+ "line": 110,
5734
5756
  "column": 1
5735
5757
  }
5736
5758
  },
@@ -5741,7 +5763,7 @@
5741
5763
  "security": [],
5742
5764
  "sourceLocation": {
5743
5765
  "filePath": "src/runtimeCapabilityExecutor.ts",
5744
- "line": 115,
5766
+ "line": 123,
5745
5767
  "column": 1
5746
5768
  }
5747
5769
  },
@@ -5752,7 +5774,7 @@
5752
5774
  "security": [],
5753
5775
  "sourceLocation": {
5754
5776
  "filePath": "src/runtimeCapabilityExecutor.ts",
5755
- "line": 128,
5777
+ "line": 136,
5756
5778
  "column": 1
5757
5779
  }
5758
5780
  },
@@ -6240,6 +6262,28 @@
6240
6262
  "column": 1
6241
6263
  }
6242
6264
  },
6265
+ {
6266
+ "name": "ButtonProbe",
6267
+ "description": null,
6268
+ "see": [],
6269
+ "security": [],
6270
+ "sourceLocation": {
6271
+ "filePath": "src/RuntimeScreen.test.tsx",
6272
+ "line": 31,
6273
+ "column": 7
6274
+ }
6275
+ },
6276
+ {
6277
+ "name": "executeCapability",
6278
+ "description": null,
6279
+ "see": [],
6280
+ "security": [],
6281
+ "sourceLocation": {
6282
+ "filePath": "src/RuntimeScreen.test.tsx",
6283
+ "line": 147,
6284
+ "column": 9
6285
+ }
6286
+ },
6243
6287
  {
6244
6288
  "name": "RuntimeScreen",
6245
6289
  "description": null,
@@ -6596,7 +6640,7 @@
6596
6640
  "name": "composeRuntimeCapabilityExecutor",
6597
6641
  "sourcePath": "src/runtimeCapabilityExecutor.ts",
6598
6642
  "symbolName": "composeRuntimeCapabilityExecutor",
6599
- "description": "Routes API and state capabilities before delegating application-owned capabilities.",
6643
+ "description": "Keeps local state mutations while preferring the configured host executor for API capabilities.",
6600
6644
  "isReadme": false
6601
6645
  },
6602
6646
  {
@@ -7285,6 +7329,26 @@
7285
7329
  "toPath": "src/runtimeBindings.ts",
7286
7330
  "sourcePath": "src/runtimeRepeat.ts"
7287
7331
  },
7332
+ {
7333
+ "fromPath": "src/RuntimeScreen.test.tsx",
7334
+ "toPath": "src/registry.tsx",
7335
+ "sourcePath": "src/RuntimeScreen.test.tsx"
7336
+ },
7337
+ {
7338
+ "fromPath": "src/RuntimeScreen.test.tsx",
7339
+ "toPath": "src/runtimeApiCapabilities.ts",
7340
+ "sourcePath": "src/RuntimeScreen.test.tsx"
7341
+ },
7342
+ {
7343
+ "fromPath": "src/RuntimeScreen.test.tsx",
7344
+ "toPath": "src/runtimeBindings.ts",
7345
+ "sourcePath": "src/RuntimeScreen.test.tsx"
7346
+ },
7347
+ {
7348
+ "fromPath": "src/RuntimeScreen.test.tsx",
7349
+ "toPath": "src/RuntimeRendererConfig.tsx",
7350
+ "sourcePath": "src/RuntimeScreen.test.tsx"
7351
+ },
7288
7352
  {
7289
7353
  "fromPath": "src/RuntimeScreen.tsx",
7290
7354
  "toPath": "src/ManifestContext.tsx",
@@ -8006,6 +8070,12 @@
8006
8070
  "callExpression": "expect",
8007
8071
  "sourcePath": "src/runtimeCapabilityExecutor.test.ts"
8008
8072
  },
8073
+ {
8074
+ "fromSymbol": "src/runtimeCapabilityExecutor.test.ts",
8075
+ "toSymbol": "executeCapability",
8076
+ "callExpression": "executeCapability",
8077
+ "sourcePath": "src/runtimeCapabilityExecutor.test.ts"
8078
+ },
8009
8079
  {
8010
8080
  "fromSymbol": "src/runtimeCapabilityExecutor.test.ts",
8011
8081
  "toSymbol": "createRuntimeMemoryStateAdapter",
@@ -8024,22 +8094,16 @@
8024
8094
  "callExpression": "resolveRuntimeNodeProps",
8025
8095
  "sourcePath": "src/runtimeCapabilityExecutor.test.ts"
8026
8096
  },
8027
- {
8028
- "fromSymbol": "src/runtimeCapabilityExecutor.test.ts",
8029
- "toSymbol": "executeCapability",
8030
- "callExpression": "executeCapability",
8031
- "sourcePath": "src/runtimeCapabilityExecutor.test.ts"
8032
- },
8033
8097
  {
8034
8098
  "fromSymbol": "src/runtimeCapabilityExecutor.ts",
8035
- "toSymbol": "apiCapabilityExecutor",
8036
- "callExpression": "composition.apiCapabilityExecutor",
8099
+ "toSymbol": "executeStateSetCapabilityAsync",
8100
+ "callExpression": "executeStateSetCapabilityAsync",
8037
8101
  "sourcePath": "src/runtimeCapabilityExecutor.ts"
8038
8102
  },
8039
8103
  {
8040
8104
  "fromSymbol": "src/runtimeCapabilityExecutor.ts",
8041
- "toSymbol": "executeStateSetCapabilityAsync",
8042
- "callExpression": "executeStateSetCapabilityAsync",
8105
+ "toSymbol": "executeApiCapabilityAsync",
8106
+ "callExpression": "executeApiCapabilityAsync",
8043
8107
  "sourcePath": "src/runtimeCapabilityExecutor.ts"
8044
8108
  },
8045
8109
  {
@@ -8048,6 +8112,18 @@
8048
8112
  "callExpression": "executeApplicationCapabilityAsync",
8049
8113
  "sourcePath": "src/runtimeCapabilityExecutor.ts"
8050
8114
  },
8115
+ {
8116
+ "fromSymbol": "executeApiCapabilityAsync",
8117
+ "toSymbol": "capabilityExecutor",
8118
+ "callExpression": "composition.capabilityExecutor",
8119
+ "sourcePath": "src/runtimeCapabilityExecutor.ts"
8120
+ },
8121
+ {
8122
+ "fromSymbol": "executeApiCapabilityAsync",
8123
+ "toSymbol": "apiCapabilityExecutor",
8124
+ "callExpression": "composition.apiCapabilityExecutor",
8125
+ "sourcePath": "src/runtimeCapabilityExecutor.ts"
8126
+ },
8051
8127
  {
8052
8128
  "fromSymbol": "executeStateSetCapabilityAsync",
8053
8129
  "toSymbol": "missingStateAdapterResult",
@@ -8690,6 +8766,60 @@
8690
8766
  "callExpression": "readRepeatPrimitive",
8691
8767
  "sourcePath": "src/runtimeRepeat.ts"
8692
8768
  },
8769
+ {
8770
+ "fromSymbol": "src/RuntimeScreen.test.tsx",
8771
+ "toSymbol": "it",
8772
+ "callExpression": "it",
8773
+ "sourcePath": "src/RuntimeScreen.test.tsx"
8774
+ },
8775
+ {
8776
+ "fromSymbol": "src/RuntimeScreen.test.tsx",
8777
+ "toSymbol": "mock",
8778
+ "callExpression": "mock",
8779
+ "sourcePath": "src/RuntimeScreen.test.tsx"
8780
+ },
8781
+ {
8782
+ "fromSymbol": "src/RuntimeScreen.test.tsx",
8783
+ "toSymbol": "createRuntimeApiCapabilityExecutor",
8784
+ "callExpression": "createRuntimeApiCapabilityExecutor",
8785
+ "sourcePath": "src/RuntimeScreen.test.tsx"
8786
+ },
8787
+ {
8788
+ "fromSymbol": "executeCapability",
8789
+ "toSymbol": "executeApi",
8790
+ "callExpression": "executeApi",
8791
+ "sourcePath": "src/RuntimeScreen.test.tsx"
8792
+ },
8793
+ {
8794
+ "fromSymbol": "executeCapability",
8795
+ "toSymbol": "navigate",
8796
+ "callExpression": "navigate",
8797
+ "sourcePath": "src/RuntimeScreen.test.tsx"
8798
+ },
8799
+ {
8800
+ "fromSymbol": "src/RuntimeScreen.test.tsx",
8801
+ "toSymbol": "act",
8802
+ "callExpression": "act",
8803
+ "sourcePath": "src/RuntimeScreen.test.tsx"
8804
+ },
8805
+ {
8806
+ "fromSymbol": "src/RuntimeScreen.test.tsx",
8807
+ "toSymbol": "create",
8808
+ "callExpression": "create",
8809
+ "sourcePath": "src/RuntimeScreen.test.tsx"
8810
+ },
8811
+ {
8812
+ "fromSymbol": "src/RuntimeScreen.test.tsx",
8813
+ "toSymbol": "expect",
8814
+ "callExpression": "expect",
8815
+ "sourcePath": "src/RuntimeScreen.test.tsx"
8816
+ },
8817
+ {
8818
+ "fromSymbol": "src/RuntimeScreen.test.tsx",
8819
+ "toSymbol": "pressLevel",
8820
+ "callExpression": "pressLevel",
8821
+ "sourcePath": "src/RuntimeScreen.test.tsx"
8822
+ },
8693
8823
  {
8694
8824
  "fromSymbol": "RuntimeScreen",
8695
8825
  "toSymbol": "useRuntimeRendererConfig",