@almadar/ui 6.22.0 → 6.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -200,7 +200,20 @@ interface ServerBridgeTransport {
200
200
  sendEvent: (orbitalName: string, event: string, payload?: EventPayload, clientId?: string, tick?: string, sourceTrait?: string, results?: ReadonlyArray<{
201
201
  traitName: string;
202
202
  result: TransitionResult;
203
- }>, entityByTrait?: Readonly<Record<string, EntityRow>>) => Promise<OrbitalEventResponse>;
203
+ }>, entityByTrait?: Readonly<Record<string, EntityRow>>,
204
+ /**
205
+ * The mounted top-level schema's own `name` (`ServerBridgeProvider`'s
206
+ * `schema` prop). Orbital names are not unique across a hosting
207
+ * server's whole catalog — a "whole orbital import" copies an existing
208
+ * orbital wholesale into a new behavior, so two catalog entries can
209
+ * declare an orbital with the identical name — this disambiguates
210
+ * which one a stateless server should resolve against instead of it
211
+ * guessing from a global orbital-name reverse index (verified
212
+ * 2026-09-16: project-friday's own imported `TaskOrbital` was
213
+ * misrouted to the standalone `std-project-manager` orbital of the
214
+ * same name). An unmodified server ignores the extra field.
215
+ */
216
+ behaviorHint?: string) => Promise<OrbitalEventResponse>;
204
217
  }
205
218
  /**
206
219
  * Supplies the bearer token the hosting server authenticates with. Resolved
@@ -200,7 +200,20 @@ interface ServerBridgeTransport {
200
200
  sendEvent: (orbitalName: string, event: string, payload?: EventPayload, clientId?: string, tick?: string, sourceTrait?: string, results?: ReadonlyArray<{
201
201
  traitName: string;
202
202
  result: TransitionResult;
203
- }>, entityByTrait?: Readonly<Record<string, EntityRow>>) => Promise<OrbitalEventResponse>;
203
+ }>, entityByTrait?: Readonly<Record<string, EntityRow>>,
204
+ /**
205
+ * The mounted top-level schema's own `name` (`ServerBridgeProvider`'s
206
+ * `schema` prop). Orbital names are not unique across a hosting
207
+ * server's whole catalog — a "whole orbital import" copies an existing
208
+ * orbital wholesale into a new behavior, so two catalog entries can
209
+ * declare an orbital with the identical name — this disambiguates
210
+ * which one a stateless server should resolve against instead of it
211
+ * guessing from a global orbital-name reverse index (verified
212
+ * 2026-09-16: project-friday's own imported `TaskOrbital` was
213
+ * misrouted to the standalone `std-project-manager` orbital of the
214
+ * same name). An unmodified server ignores the extra field.
215
+ */
216
+ behaviorHint?: string) => Promise<OrbitalEventResponse>;
204
217
  }
205
218
  /**
206
219
  * Supplies the bearer token the hosting server authenticates with. Resolved
@@ -54647,7 +54647,7 @@ function createHttpTransport(serverUrl, getAccessToken) {
54647
54647
  } catch {
54648
54648
  }
54649
54649
  },
54650
- sendEvent: async (orbitalName, event, payload, clientId, tick, sourceTrait, results, entityByTrait) => {
54650
+ sendEvent: async (orbitalName, event, payload, clientId, tick, sourceTrait, results, entityByTrait, behaviorHint) => {
54651
54651
  const traits2 = results?.map((r) => ({ trait: r.traitName, from: r.result.previousState }));
54652
54652
  const body = {
54653
54653
  event,
@@ -54667,7 +54667,8 @@ function createHttpTransport(serverUrl, getAccessToken) {
54667
54667
  // `traits`" would make the mount-time case indistinguishable from
54668
54668
  // "do nothing" and break every organism's INIT on the stateless path.
54669
54669
  ...results !== void 0 ? { traits: traits2 ?? [] } : {},
54670
- ...entityByTrait ? { entityByTrait } : {}
54670
+ ...entityByTrait ? { entityByTrait } : {},
54671
+ ...behaviorHint !== void 0 ? { behavior: behaviorHint } : {}
54671
54672
  };
54672
54673
  const res = await fetch(`${serverUrl}/${orbitalName}/events`, {
54673
54674
  method: "POST",
@@ -54716,9 +54717,9 @@ function ServerBridgeProvider({
54716
54717
  );
54717
54718
  const tickRelay = React89.useMemo(
54718
54719
  () => createTickSendRelay(async (_key, snap) => {
54719
- await transport.sendEvent(snap.orbitalName, snap.event, snap.payload, getTabClientId(), snap.tick, snap.sourceTrait);
54720
+ await transport.sendEvent(snap.orbitalName, snap.event, snap.payload, getTabClientId(), snap.tick, snap.sourceTrait, void 0, void 0, schema.name);
54720
54721
  }),
54721
- [transport]
54722
+ [transport, schema.name]
54722
54723
  );
54723
54724
  React89.useEffect(() => () => tickRelay.clear(), [tickRelay]);
54724
54725
  const commandPump = React89.useMemo(createCommandSendPump, []);
@@ -54739,7 +54740,7 @@ function ServerBridgeProvider({
54739
54740
  return commandPump.enqueue(async () => {
54740
54741
  if (disposedRef.current) return { effects: [], meta: emptyMeta };
54741
54742
  try {
54742
- const result = await transport.sendEvent(orbitalName, event, payload, getTabClientId(), tick, sourceTrait, results, entityByTrait);
54743
+ const result = await transport.sendEvent(orbitalName, event, payload, getTabClientId(), tick, sourceTrait, results, entityByTrait, schema.name);
54743
54744
  const effects = [];
54744
54745
  const responseData = result.data || {};
54745
54746
  const dataEntities = {};
@@ -54820,7 +54821,7 @@ function ServerBridgeProvider({
54820
54821
  return { effects: [], meta: { ...emptyMeta, error: msg } };
54821
54822
  }
54822
54823
  });
54823
- }, [connected, transport, eventBus, tickRelay, commandPump]);
54824
+ }, [connected, transport, eventBus, tickRelay, commandPump, schema.name]);
54824
54825
  React89.useEffect(() => {
54825
54826
  if (!schema) return;
54826
54827
  let cancelled = false;
@@ -6,7 +6,7 @@ export { a as CurrentPagePathContext, b as CurrentPagePathProvider, c as Current
6
6
  import { b as UserData } from '../UserContext-D566nfWA.cjs';
7
7
  export { U as UserContext, a as UserContextValue, c as UserProvider, d as UserProviderProps, u as useHasPermission, e as useHasRole, f as useUser, g as useUserForEvaluation } from '../UserContext-D566nfWA.cjs';
8
8
  import { E as EventBusContextType } from '../event-bus-types-Bl78kokd.cjs';
9
- export { A as AccessTokenProvider, E as EntityBindingContext, a as EntityBindingSource, b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, S as SendEventResult, e as ServerBridgeContextValue, f as ServerBridgeProvider, g as ServerBridgeProviderProps, h as ServerBridgeTransport, i as ServerClientEffect, j as ServerResponseMeta, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, u as useEntityBindingSnapshot, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-DoK8Xq71.cjs';
9
+ export { A as AccessTokenProvider, E as EntityBindingContext, a as EntityBindingSource, b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, S as SendEventResult, e as ServerBridgeContextValue, f as ServerBridgeProvider, g as ServerBridgeProviderProps, h as ServerBridgeTransport, i as ServerClientEffect, j as ServerResponseMeta, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, u as useEntityBindingSnapshot, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-CTZw2DbY.cjs';
10
10
  import { i as UseOfflineExecutorResult, U as UseOfflineExecutorOptions } from '../offline-executor-DdV2o0Zu.cjs';
11
11
  export { N as NavigationContextValue, c as NavigationProvider, d as NavigationProviderProps, e as NavigationState, j as comparePathSpecificity, l as extractRouteParams, m as findPageByName, n as findPageByPath, o as getAllPages, p as getDefaultPage, q as matchPath, r as matchPathAmong, s as pathMatches, u as useActivePage, t as useInitPayload, v as useNavigateTo, w as useNavigation, x as useNavigationId, y as useNavigationState } from '../offline-executor-DdV2o0Zu.cjs';
12
12
  import '../verificationRegistry-DTrKDRoa.cjs';
@@ -6,7 +6,7 @@ export { a as CurrentPagePathContext, b as CurrentPagePathProvider, c as Current
6
6
  import { b as UserData } from '../UserContext-D566nfWA.js';
7
7
  export { U as UserContext, a as UserContextValue, c as UserProvider, d as UserProviderProps, u as useHasPermission, e as useHasRole, f as useUser, g as useUserForEvaluation } from '../UserContext-D566nfWA.js';
8
8
  import { E as EventBusContextType } from '../event-bus-types-Bl78kokd.js';
9
- export { A as AccessTokenProvider, E as EntityBindingContext, a as EntityBindingSource, b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, S as SendEventResult, e as ServerBridgeContextValue, f as ServerBridgeProvider, g as ServerBridgeProviderProps, h as ServerBridgeTransport, i as ServerClientEffect, j as ServerResponseMeta, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, u as useEntityBindingSnapshot, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-DoK8Xq71.js';
9
+ export { A as AccessTokenProvider, E as EntityBindingContext, a as EntityBindingSource, b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, S as SendEventResult, e as ServerBridgeContextValue, f as ServerBridgeProvider, g as ServerBridgeProviderProps, h as ServerBridgeTransport, i as ServerClientEffect, j as ServerResponseMeta, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, u as useEntityBindingSnapshot, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-CTZw2DbY.js';
10
10
  import { i as UseOfflineExecutorResult, U as UseOfflineExecutorOptions } from '../offline-executor-DdV2o0Zu.js';
11
11
  export { N as NavigationContextValue, c as NavigationProvider, d as NavigationProviderProps, e as NavigationState, j as comparePathSpecificity, l as extractRouteParams, m as findPageByName, n as findPageByPath, o as getAllPages, p as getDefaultPage, q as matchPath, r as matchPathAmong, s as pathMatches, u as useActivePage, t as useInitPayload, v as useNavigateTo, w as useNavigation, x as useNavigationId, y as useNavigationState } from '../offline-executor-DdV2o0Zu.js';
12
12
  import '../verificationRegistry-Cwa52VyK.js';
@@ -54573,7 +54573,7 @@ function createHttpTransport(serverUrl, getAccessToken) {
54573
54573
  } catch {
54574
54574
  }
54575
54575
  },
54576
- sendEvent: async (orbitalName, event, payload, clientId, tick, sourceTrait, results, entityByTrait) => {
54576
+ sendEvent: async (orbitalName, event, payload, clientId, tick, sourceTrait, results, entityByTrait, behaviorHint) => {
54577
54577
  const traits2 = results?.map((r) => ({ trait: r.traitName, from: r.result.previousState }));
54578
54578
  const body = {
54579
54579
  event,
@@ -54593,7 +54593,8 @@ function createHttpTransport(serverUrl, getAccessToken) {
54593
54593
  // `traits`" would make the mount-time case indistinguishable from
54594
54594
  // "do nothing" and break every organism's INIT on the stateless path.
54595
54595
  ...results !== void 0 ? { traits: traits2 ?? [] } : {},
54596
- ...entityByTrait ? { entityByTrait } : {}
54596
+ ...entityByTrait ? { entityByTrait } : {},
54597
+ ...behaviorHint !== void 0 ? { behavior: behaviorHint } : {}
54597
54598
  };
54598
54599
  const res = await fetch(`${serverUrl}/${orbitalName}/events`, {
54599
54600
  method: "POST",
@@ -54642,9 +54643,9 @@ function ServerBridgeProvider({
54642
54643
  );
54643
54644
  const tickRelay = useMemo(
54644
54645
  () => createTickSendRelay(async (_key, snap) => {
54645
- await transport.sendEvent(snap.orbitalName, snap.event, snap.payload, getTabClientId(), snap.tick, snap.sourceTrait);
54646
+ await transport.sendEvent(snap.orbitalName, snap.event, snap.payload, getTabClientId(), snap.tick, snap.sourceTrait, void 0, void 0, schema.name);
54646
54647
  }),
54647
- [transport]
54648
+ [transport, schema.name]
54648
54649
  );
54649
54650
  useEffect(() => () => tickRelay.clear(), [tickRelay]);
54650
54651
  const commandPump = useMemo(createCommandSendPump, []);
@@ -54665,7 +54666,7 @@ function ServerBridgeProvider({
54665
54666
  return commandPump.enqueue(async () => {
54666
54667
  if (disposedRef.current) return { effects: [], meta: emptyMeta };
54667
54668
  try {
54668
- const result = await transport.sendEvent(orbitalName, event, payload, getTabClientId(), tick, sourceTrait, results, entityByTrait);
54669
+ const result = await transport.sendEvent(orbitalName, event, payload, getTabClientId(), tick, sourceTrait, results, entityByTrait, schema.name);
54669
54670
  const effects = [];
54670
54671
  const responseData = result.data || {};
54671
54672
  const dataEntities = {};
@@ -54746,7 +54747,7 @@ function ServerBridgeProvider({
54746
54747
  return { effects: [], meta: { ...emptyMeta, error: msg } };
54747
54748
  }
54748
54749
  });
54749
- }, [connected, transport, eventBus, tickRelay, commandPump]);
54750
+ }, [connected, transport, eventBus, tickRelay, commandPump, schema.name]);
54750
54751
  useEffect(() => {
54751
54752
  if (!schema) return;
54752
54753
  let cancelled = false;
@@ -5,8 +5,8 @@ import * as _almadar_runtime from '@almadar/runtime';
5
5
  import { TraitState, TransitionResult, EffectHandlers } from '@almadar/runtime';
6
6
  import { K as KeyCaptureTable } from '../useKeyboardRouter-CVn8lfiX.cjs';
7
7
  import { c as useUISlots } from '../UISlotContext-BlRDbHDy.cjs';
8
- import { a as EntityBindingSource, h as ServerBridgeTransport, A as AccessTokenProvider } from '../EntityBindingContext-DoK8Xq71.cjs';
9
- export { b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, e as ServerBridgeContextValue, f as ServerBridgeProvider, i as ServerClientEffect, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-DoK8Xq71.cjs';
8
+ import { a as EntityBindingSource, h as ServerBridgeTransport, A as AccessTokenProvider } from '../EntityBindingContext-CTZw2DbY.cjs';
9
+ export { b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, e as ServerBridgeContextValue, f as ServerBridgeProvider, i as ServerClientEffect, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-CTZw2DbY.cjs';
10
10
  import '../verificationRegistry-DTrKDRoa.cjs';
11
11
  export { PERF_NAMESPACE, PerfEntry, PreparedPreviewSchema, adjustSchemaForMockData, buildMockData, clearPerf, perfEnd, perfStart, perfTime, prepareSchemaForPreview, wrapCallbackForEvent } from '@almadar/runtime/ui';
12
12
  import React__default, { ReactNode } from 'react';
@@ -5,8 +5,8 @@ import * as _almadar_runtime from '@almadar/runtime';
5
5
  import { TraitState, TransitionResult, EffectHandlers } from '@almadar/runtime';
6
6
  import { K as KeyCaptureTable } from '../useKeyboardRouter-B1pIi9jo.js';
7
7
  import { c as useUISlots } from '../UISlotContext-CB89mv7N.js';
8
- import { a as EntityBindingSource, h as ServerBridgeTransport, A as AccessTokenProvider } from '../EntityBindingContext-DoK8Xq71.js';
9
- export { b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, e as ServerBridgeContextValue, f as ServerBridgeProvider, i as ServerClientEffect, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-DoK8Xq71.js';
8
+ import { a as EntityBindingSource, h as ServerBridgeTransport, A as AccessTokenProvider } from '../EntityBindingContext-CTZw2DbY.js';
9
+ export { b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, e as ServerBridgeContextValue, f as ServerBridgeProvider, i as ServerClientEffect, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-CTZw2DbY.js';
10
10
  import '../verificationRegistry-Cwa52VyK.js';
11
11
  export { PERF_NAMESPACE, PerfEntry, PreparedPreviewSchema, adjustSchemaForMockData, buildMockData, clearPerf, perfEnd, perfStart, perfTime, prepareSchemaForPreview, wrapCallbackForEvent } from '@almadar/runtime/ui';
12
12
  import React__default, { ReactNode } from 'react';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "6.22.0",
3
+ "version": "6.23.0",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "sideEffects": [