@assistant-ui/store 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/AuiIf.d.ts +1 -1
  2. package/dist/AuiIf.d.ts.map +1 -1
  3. package/dist/Derived.d.ts +34 -0
  4. package/dist/Derived.d.ts.map +1 -0
  5. package/dist/Derived.js +24 -0
  6. package/dist/Derived.js.map +1 -0
  7. package/dist/attachTransformScopes.d.ts +11 -0
  8. package/dist/attachTransformScopes.d.ts.map +1 -0
  9. package/dist/attachTransformScopes.js +12 -0
  10. package/dist/attachTransformScopes.js.map +1 -0
  11. package/dist/index.d.ts +9 -3
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +11 -4
  14. package/dist/index.js.map +1 -1
  15. package/dist/tapClientList.d.ts +28 -0
  16. package/dist/tapClientList.d.ts.map +1 -0
  17. package/dist/tapClientList.js +68 -0
  18. package/dist/tapClientList.js.map +1 -0
  19. package/dist/tapClientLookup.d.ts +15 -0
  20. package/dist/tapClientLookup.d.ts.map +1 -0
  21. package/dist/tapClientLookup.js +42 -0
  22. package/dist/tapClientLookup.js.map +1 -0
  23. package/dist/tapClientResource.d.ts +13 -0
  24. package/dist/tapClientResource.d.ts.map +1 -0
  25. package/dist/tapClientResource.js +114 -0
  26. package/dist/tapClientResource.js.map +1 -0
  27. package/dist/types/client.d.ts +115 -0
  28. package/dist/types/client.d.ts.map +1 -0
  29. package/dist/types/client.js +2 -0
  30. package/dist/types/client.js.map +1 -0
  31. package/dist/types/events.d.ts +33 -0
  32. package/dist/types/events.d.ts.map +1 -0
  33. package/dist/types/events.js +8 -0
  34. package/dist/types/events.js.map +1 -0
  35. package/dist/useAui.d.ts +5 -3
  36. package/dist/useAui.d.ts.map +1 -1
  37. package/dist/useAui.js +7 -2
  38. package/dist/useAui.js.map +1 -1
  39. package/dist/useAuiEvent.d.ts +1 -1
  40. package/dist/useAuiEvent.d.ts.map +1 -1
  41. package/dist/useAuiEvent.js +1 -1
  42. package/dist/useAuiEvent.js.map +1 -1
  43. package/dist/useAuiState.d.ts +2 -2
  44. package/dist/useAuiState.d.ts.map +1 -1
  45. package/dist/useAuiState.js +2 -2
  46. package/dist/useAuiState.js.map +1 -1
  47. package/dist/utils/BaseProxyHandler.d.ts +23 -0
  48. package/dist/utils/BaseProxyHandler.d.ts.map +1 -0
  49. package/dist/utils/BaseProxyHandler.js +46 -0
  50. package/dist/utils/BaseProxyHandler.js.map +1 -0
  51. package/dist/utils/NotificationManager.d.ts +11 -0
  52. package/dist/utils/NotificationManager.d.ts.map +1 -0
  53. package/dist/utils/NotificationManager.js +84 -0
  54. package/dist/utils/NotificationManager.js.map +1 -0
  55. package/dist/utils/proxied-assistant-state.d.ts +8 -0
  56. package/dist/utils/proxied-assistant-state.d.ts.map +1 -0
  57. package/dist/utils/proxied-assistant-state.js +34 -0
  58. package/dist/utils/proxied-assistant-state.js.map +1 -0
  59. package/dist/utils/react-assistant-context.d.ts +1 -1
  60. package/dist/utils/react-assistant-context.d.ts.map +1 -1
  61. package/dist/utils/react-assistant-context.js +2 -1
  62. package/dist/utils/react-assistant-context.js.map +1 -1
  63. package/dist/utils/splitClients.d.ts +10 -0
  64. package/dist/utils/splitClients.d.ts.map +1 -0
  65. package/dist/utils/splitClients.js +53 -0
  66. package/dist/utils/splitClients.js.map +1 -0
  67. package/dist/utils/tap-assistant-context.d.ts +19 -0
  68. package/dist/utils/tap-assistant-context.d.ts.map +1 -0
  69. package/dist/utils/tap-assistant-context.js +23 -0
  70. package/dist/utils/tap-assistant-context.js.map +1 -0
  71. package/dist/utils/tap-client-stack-context.d.ts +23 -0
  72. package/dist/utils/tap-client-stack-context.d.ts.map +1 -0
  73. package/dist/utils/tap-client-stack-context.js +28 -0
  74. package/dist/utils/tap-client-stack-context.js.map +1 -0
  75. package/dist/wrapperResource.d.ts +3 -0
  76. package/dist/wrapperResource.d.ts.map +1 -0
  77. package/dist/wrapperResource.js +11 -0
  78. package/dist/wrapperResource.js.map +1 -0
  79. package/package.json +5 -5
  80. package/src/AuiIf.ts +1 -1
  81. package/src/Derived.ts +46 -0
  82. package/src/__tests__/hooks.test.tsx +1 -1
  83. package/src/attachTransformScopes.ts +38 -0
  84. package/src/index.ts +37 -21
  85. package/src/tapClientList.ts +121 -0
  86. package/src/tapClientLookup.ts +79 -0
  87. package/src/tapClientResource.ts +187 -0
  88. package/src/types/client.ts +180 -0
  89. package/src/types/events.ts +77 -0
  90. package/src/useAui.ts +21 -19
  91. package/src/useAuiEvent.ts +2 -2
  92. package/src/useAuiState.ts +3 -3
  93. package/src/utils/BaseProxyHandler.ts +50 -0
  94. package/src/utils/NotificationManager.ts +114 -0
  95. package/src/utils/proxied-assistant-state.ts +53 -0
  96. package/src/utils/react-assistant-context.tsx +3 -7
  97. package/src/utils/splitClients.ts +80 -0
  98. package/src/utils/tap-assistant-context.ts +58 -0
  99. package/src/utils/tap-client-stack-context.ts +51 -0
  100. package/src/wrapperResource.ts +17 -0
  101. package/dist/scope-registry-forward.d.ts +0 -6
  102. package/dist/scope-registry-forward.d.ts.map +0 -1
  103. package/dist/scope-registry-forward.js +0 -2
  104. package/dist/scope-registry-forward.js.map +0 -1
  105. package/dist/scope-registry.d.ts +0 -17
  106. package/dist/scope-registry.d.ts.map +0 -1
  107. package/dist/scope-registry.js +0 -2
  108. package/dist/scope-registry.js.map +0 -1
  109. package/src/scope-registry-forward.ts +0 -6
  110. package/src/scope-registry.ts +0 -15
package/dist/AuiIf.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { FC, PropsWithChildren } from "react";
2
- import type { AssistantState } from "@assistant-ui/core/store";
2
+ import type { AssistantState } from "./types/client.js";
3
3
  export declare namespace AuiIf {
4
4
  type Props = PropsWithChildren<{
5
5
  condition: AuiIf.Condition;
@@ -1 +1 @@
1
- {"version":3,"file":"AuiIf.d.ts","sourceRoot":"","sources":["../src/AuiIf.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,yBAAiB,KAAK,CAAC;IACrB,KAAY,KAAK,GAAG,iBAAiB,CAAC;QAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;IACtE,KAAY,SAAS,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;CAC5D;AAED,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAGjC,CAAC"}
1
+ {"version":3,"file":"AuiIf.d.ts","sourceRoot":"","sources":["../src/AuiIf.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,0BAAuB;AAErD,yBAAiB,KAAK,CAAC;IACrB,KAAY,KAAK,GAAG,iBAAiB,CAAC;QAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;IACtE,KAAY,SAAS,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;CAC5D;AAED,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAGjC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { ResourceElement } from "@assistant-ui/tap";
2
+ import type { AssistantClient, ClientNames, AssistantClientAccessor, ClientMeta } from "./types/client.js";
3
+ /**
4
+ * Creates a derived client field that references a client from a parent scope.
5
+ * The get callback always calls the most recent version (useEffectEvent pattern).
6
+ *
7
+ * IMPORTANT: The `get` callback must return a client that was created via
8
+ * `tapClientResource` (or `tapClientLookup`/`tapClientList` which use it internally).
9
+ * This is required for event scoping to work correctly.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const aui = useAui({
14
+ * message: Derived({
15
+ * source: "thread",
16
+ * query: { index: 0 },
17
+ * get: (aui) => aui.thread().message({ index: 0 }),
18
+ * }),
19
+ * });
20
+ * ```
21
+ */
22
+ export declare const Derived: <K extends ClientNames>(props: Derived.Props<K>) => ResourceElement<null, Derived.Props<K>>;
23
+ export type DerivedElement<K extends ClientNames> = ResourceElement<null, Derived.Props<K>>;
24
+ export declare namespace Derived {
25
+ /**
26
+ * Props passed to a derived client resource element.
27
+ */
28
+ type Props<K extends ClientNames> = {
29
+ get: (client: AssistantClient) => ReturnType<AssistantClientAccessor<K>>;
30
+ } & (ClientMeta<K> | {
31
+ getMeta: (client: AssistantClient) => ClientMeta<K>;
32
+ });
33
+ }
34
+ //# sourceMappingURL=Derived.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Derived.d.ts","sourceRoot":"","sources":["../src/Derived.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,UAAU,EACX,0BAAuB;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,OAAO,GACjB,CAAC,SAAS,WAAW,qEAGvB,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,WAAW,IAAI,eAAe,CACjE,IAAI,EACJ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CACjB,CAAC;AAEF,yBAAiB,OAAO,CAAC;IACvB;;OAEG;IACH,KAAY,KAAK,CAAC,CAAC,SAAS,WAAW,IAAI;QACzC,GAAG,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1E,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;CAC/E"}
@@ -0,0 +1,24 @@
1
+ import { resource } from "@assistant-ui/tap";
2
+ /**
3
+ * Creates a derived client field that references a client from a parent scope.
4
+ * The get callback always calls the most recent version (useEffectEvent pattern).
5
+ *
6
+ * IMPORTANT: The `get` callback must return a client that was created via
7
+ * `tapClientResource` (or `tapClientLookup`/`tapClientList` which use it internally).
8
+ * This is required for event scoping to work correctly.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const aui = useAui({
13
+ * message: Derived({
14
+ * source: "thread",
15
+ * query: { index: 0 },
16
+ * get: (aui) => aui.thread().message({ index: 0 }),
17
+ * }),
18
+ * });
19
+ * ```
20
+ */
21
+ export const Derived = resource((_config) => {
22
+ return null;
23
+ });
24
+ //# sourceMappingURL=Derived.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Derived.js","sourceRoot":"","sources":["../src/Derived.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,mBAAmB,CAAC;AAQ9D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAC7B,CAAwB,OAAyB,EAAQ,EAAE;IACzD,OAAO,IAAI,CAAC;AACd,CAAC,CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ResourceElement } from "@assistant-ui/tap";
2
+ import type { AssistantClient, ClientElement, ClientNames } from "./types/client.js";
3
+ import type { DerivedElement } from "./Derived.js";
4
+ export type ScopesConfig = {
5
+ [K in ClientNames]?: ClientElement<K> | DerivedElement<K>;
6
+ };
7
+ type TransformScopesFn = (scopes: ScopesConfig, parent: AssistantClient) => ScopesConfig;
8
+ export declare function attachTransformScopes<T extends (...args: any[]) => ResourceElement<any>>(resource: T, transform: TransformScopesFn): void;
9
+ export declare function getTransformScopes<T extends (...args: any[]) => ResourceElement<any>>(resource: T): TransformScopesFn | undefined;
10
+ export {};
11
+ //# sourceMappingURL=attachTransformScopes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachTransformScopes.d.ts","sourceRoot":"","sources":["../src/attachTransformScopes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,WAAW,EACZ,0BAAuB;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAkB;AAIhD,MAAM,MAAM,YAAY,GAAG;KACxB,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,KAAK,iBAAiB,GAAG,CACvB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,eAAe,KACpB,YAAY,CAAC;AAMlB,wBAAgB,qBAAqB,CACnC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,eAAe,CAAC,GAAG,CAAC,EAClD,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAMjD;AAED,wBAAgB,kBAAkB,CAChC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,eAAe,CAAC,GAAG,CAAC,EAClD,QAAQ,EAAE,CAAC,GAAG,iBAAiB,GAAG,SAAS,CAE5C"}
@@ -0,0 +1,12 @@
1
+ const TRANSFORM_SCOPES = Symbol("assistant-ui.transform-scopes");
2
+ export function attachTransformScopes(resource, transform) {
3
+ const r = resource;
4
+ if (r[TRANSFORM_SCOPES]) {
5
+ throw new Error("transformScopes is already attached to this resource");
6
+ }
7
+ r[TRANSFORM_SCOPES] = transform;
8
+ }
9
+ export function getTransformScopes(resource) {
10
+ return resource[TRANSFORM_SCOPES];
11
+ }
12
+ //# sourceMappingURL=attachTransformScopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachTransformScopes.js","sourceRoot":"","sources":["../src/attachTransformScopes.ts"],"names":[],"mappings":"AAQA,MAAM,gBAAgB,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAejE,MAAM,UAAU,qBAAqB,CAEnC,QAAW,EAAE,SAA4B;IACzC,MAAM,CAAC,GAAG,QAA2C,CAAC;IACtD,IAAI,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,CAAC,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAEhC,QAAW;IACX,OAAQ,QAA4C,CAAC,gBAAgB,CAAC,CAAC;AACzE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,15 @@
1
- export type { ScopeRegistry } from "./scope-registry.js";
2
- import "./scope-registry-forward.js";
3
- export { Derived, attachTransformScopes, type ScopesConfig, tapAssistantClientRef, tapAssistantEmit, tapClientResource, tapClientLookup, tapClientList, type ClientOutput, type AssistantClient, type AssistantState, type AssistantEventName, type AssistantEventCallback, type AssistantEventPayload, type AssistantEventSelector, type AssistantEventScope, } from "@assistant-ui/core/store";
4
1
  export { useAui } from "./useAui.js";
5
2
  export { useAuiState } from "./useAuiState.js";
6
3
  export { useAuiEvent } from "./useAuiEvent.js";
7
4
  export { AuiIf } from "./AuiIf.js";
8
5
  export { AuiProvider } from "./utils/react-assistant-context.js";
6
+ export { Derived } from "./Derived.js";
7
+ export { attachTransformScopes } from "./attachTransformScopes.js";
8
+ export type { ScopesConfig } from "./attachTransformScopes.js";
9
+ export { tapAssistantClientRef, tapAssistantEmit, } from "./utils/tap-assistant-context.js";
10
+ export { tapClientResource } from "./tapClientResource.js";
11
+ export { tapClientLookup } from "./tapClientLookup.js";
12
+ export { tapClientList } from "./tapClientList.js";
13
+ export type { ScopeRegistry, ClientOutput, ClientMethods, ClientSchema, ClientNames, ClientEvents, ClientMeta, ClientElement, Unsubscribe, AssistantClientAccessor, AssistantClient, AssistantState, } from "./types/client.js";
14
+ export { normalizeEventSelector, type AssistantEventName, type AssistantEventCallback, type AssistantEventPayload, type AssistantEventSelector, type AssistantEventScope, } from "./types/events.js";
9
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,aAAa,EAAE,4BAAyB;AACtD,qCAAkC;AAGlC,OAAO,EACL,OAAO,EACP,qBAAqB,EACrB,KAAK,YAAY,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,GACzB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAClC,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,EAAE,KAAK,EAAE,mBAAgB;AAChC,OAAO,EAAE,WAAW,EAAE,2CAAwC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAClC,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAG5C,OAAO,EAAE,KAAK,EAAE,mBAAgB;AAChC,OAAO,EAAE,WAAW,EAAE,2CAAwC;AAG9D,OAAO,EAAE,OAAO,EAAE,qBAAkB;AACpC,OAAO,EAAE,qBAAqB,EAAE,mCAAgC;AAChE,YAAY,EAAE,YAAY,EAAE,mCAAgC;AAG5D,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,yCAAsC;AACvC,OAAO,EAAE,iBAAiB,EAAE,+BAA4B;AACxD,OAAO,EAAE,eAAe,EAAE,6BAA0B;AACpD,OAAO,EAAE,aAAa,EAAE,2BAAwB;AAGhD,YAAY,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,aAAa,EACb,WAAW,EACX,uBAAuB,EACvB,eAAe,EACf,cAAc,GACf,0BAAuB;AACxB,OAAO,EACL,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,GACzB,0BAAuB"}
package/dist/index.js CHANGED
@@ -1,10 +1,17 @@
1
- import "./scope-registry-forward.js";
2
- // Re-export framework-agnostic infrastructure from core
3
- export { Derived, attachTransformScopes, tapAssistantClientRef, tapAssistantEmit, tapClientResource, tapClientLookup, tapClientList, } from "@assistant-ui/core/store";
4
- // React-specific (stay in store)
1
+ // hooks
5
2
  export { useAui } from "./useAui.js";
6
3
  export { useAuiState } from "./useAuiState.js";
7
4
  export { useAuiEvent } from "./useAuiEvent.js";
5
+ // components
8
6
  export { AuiIf } from "./AuiIf.js";
9
7
  export { AuiProvider } from "./utils/react-assistant-context.js";
8
+ // resources
9
+ export { Derived } from "./Derived.js";
10
+ export { attachTransformScopes } from "./attachTransformScopes.js";
11
+ // tap hooks
12
+ export { tapAssistantClientRef, tapAssistantEmit, } from "./utils/tap-assistant-context.js";
13
+ export { tapClientResource } from "./tapClientResource.js";
14
+ export { tapClientLookup } from "./tapClientLookup.js";
15
+ export { tapClientList } from "./tapClientList.js";
16
+ export { normalizeEventSelector, } from "./types/events.js";
10
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,qCAAkC;AAElC,wDAAwD;AACxD,OAAO,EACL,OAAO,EACP,qBAAqB,EAErB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,aAAa,GASd,MAAM,0BAA0B,CAAC;AAElC,iCAAiC;AACjC,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAClC,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,EAAE,KAAK,EAAE,mBAAgB;AAChC,OAAO,EAAE,WAAW,EAAE,2CAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAClC,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAE5C,aAAa;AACb,OAAO,EAAE,KAAK,EAAE,mBAAgB;AAChC,OAAO,EAAE,WAAW,EAAE,2CAAwC;AAE9D,YAAY;AACZ,OAAO,EAAE,OAAO,EAAE,qBAAkB;AACpC,OAAO,EAAE,qBAAqB,EAAE,mCAAgC;AAGhE,YAAY;AACZ,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,yCAAsC;AACvC,OAAO,EAAE,iBAAiB,EAAE,+BAA4B;AACxD,OAAO,EAAE,eAAe,EAAE,6BAA0B;AACpD,OAAO,EAAE,aAAa,EAAE,2BAAwB;AAiBhD,OAAO,EACL,sBAAsB,GAMvB,0BAAuB"}
@@ -0,0 +1,28 @@
1
+ import type { ContravariantResource } from "@assistant-ui/tap";
2
+ import type { ClientMethods } from "./types/client.js";
3
+ type InferClientState<TMethods> = TMethods extends {
4
+ getState: () => infer S;
5
+ } ? S : unknown;
6
+ export declare const tapClientList: <TData, TMethods extends ClientMethods>(props: tapClientList.Props<TData, TMethods>) => {
7
+ state: InferClientState<TMethods>[];
8
+ get: (lookup: {
9
+ index: number;
10
+ } | {
11
+ key: string;
12
+ }) => TMethods;
13
+ add: (initialData: TData) => void;
14
+ };
15
+ export declare namespace tapClientList {
16
+ type ResourceProps<TData> = {
17
+ key: string;
18
+ getInitialData: () => TData;
19
+ remove: () => void;
20
+ };
21
+ type Props<TData, TMethods extends ClientMethods> = {
22
+ initialValues: TData[];
23
+ getKey: (data: TData) => string;
24
+ resource: ContravariantResource<TMethods, ResourceProps<TData>>;
25
+ };
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=tapClientList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapClientList.d.ts","sourceRoot":"","sources":["../src/tapClientList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,0BAAuB;AAEpD,KAAK,gBAAgB,CAAC,QAAQ,IAAI,QAAQ,SAAS;IACjD,QAAQ,EAAE,MAAM,MAAM,CAAC,CAAC;CACzB,GACG,CAAC,GACD,OAAO,CAAC;AAuBZ,eAAO,MAAM,aAAa,GAAI,KAAK,EAAE,QAAQ,SAAS,aAAa,EACjE,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,KAC1C;IACD,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpC,GAAG,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,QAAQ,CAAC;IAC/D,GAAG,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,CAAC;CAqEnC,CAAC;AAEF,yBAAiB,aAAa,CAAC;IAC7B,KAAY,aAAa,CAAC,KAAK,IAAI;QACjC,GAAG,EAAE,MAAM,CAAC;QACZ,cAAc,EAAE,MAAM,KAAK,CAAC;QAC5B,MAAM,EAAE,MAAM,IAAI,CAAC;KACpB,CAAC;IAEF,KAAY,KAAK,CAAC,KAAK,EAAE,QAAQ,SAAS,aAAa,IAAI;QACzD,aAAa,EAAE,KAAK,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC;QAChC,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;KACjE,CAAC;CACH"}
@@ -0,0 +1,68 @@
1
+ import { tapConst, tapState, withKey } from "@assistant-ui/tap";
2
+ import { tapClientLookup } from "./tapClientLookup.js";
3
+ const createProps = (key, data, remove) => {
4
+ return {
5
+ key,
6
+ getInitialData: () => {
7
+ if (!data.hasData) {
8
+ throw new Error("getInitialData may only be called during initial render");
9
+ }
10
+ return data.data;
11
+ },
12
+ remove,
13
+ };
14
+ };
15
+ export const tapClientList = (props) => {
16
+ const { initialValues, getKey, resource: Resource } = props;
17
+ const initialDataHandles = tapConst(() => [], []);
18
+ const [items, setItems] = tapState(() => {
19
+ const entries = [];
20
+ for (const data of initialValues) {
21
+ const key = getKey(data);
22
+ const handle = { data, hasData: true };
23
+ entries.push([
24
+ key,
25
+ createProps(key, handle, () => {
26
+ setItems((items) => {
27
+ const newItems = { ...items };
28
+ delete newItems[key];
29
+ return newItems;
30
+ });
31
+ }),
32
+ ]);
33
+ initialDataHandles.push(handle);
34
+ }
35
+ return Object.fromEntries(entries);
36
+ });
37
+ const lookup = tapClientLookup(() => Object.values(items).map((props) => withKey(props.key, Resource(props))), [items, Resource]);
38
+ initialDataHandles.forEach((handle) => {
39
+ handle.data = undefined;
40
+ handle.hasData = false;
41
+ });
42
+ const add = (data) => {
43
+ const key = getKey(data);
44
+ setItems((items) => {
45
+ if (key in items) {
46
+ throw new Error(`Tried to add item with a key ${key} that already exists`);
47
+ }
48
+ const handle = { data, hasData: true };
49
+ initialDataHandles.push(handle);
50
+ return {
51
+ ...items,
52
+ [key]: createProps(key, handle, () => {
53
+ setItems((items) => {
54
+ const newItems = { ...items };
55
+ delete newItems[key];
56
+ return newItems;
57
+ });
58
+ }),
59
+ };
60
+ });
61
+ };
62
+ return {
63
+ state: lookup.state,
64
+ get: lookup.get,
65
+ add,
66
+ };
67
+ };
68
+ //# sourceMappingURL=tapClientList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapClientList.js","sourceRoot":"","sources":["../src/tapClientList.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type ResourceElement } from "@assistant-ui/tap";
2
+ import type { ClientMethods } from "./types/client.js";
3
+ type InferClientState<TMethods> = TMethods extends {
4
+ getState: () => infer S;
5
+ } ? S : unknown;
6
+ export declare function tapClientLookup<TMethods extends ClientMethods>(getElements: () => readonly ResourceElement<TMethods>[], getElementsDeps: readonly unknown[]): {
7
+ state: InferClientState<TMethods>[];
8
+ get: (lookup: {
9
+ index: number;
10
+ } | {
11
+ key: string;
12
+ }) => TMethods;
13
+ };
14
+ export {};
15
+ //# sourceMappingURL=tapClientLookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapClientLookup.d.ts","sourceRoot":"","sources":["../src/tapClientLookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,0BAAuB;AAIpD,KAAK,gBAAgB,CAAC,QAAQ,IAAI,QAAQ,SAAS;IACjD,QAAQ,EAAE,MAAM,MAAM,CAAC,CAAC;CACzB,GACG,CAAC,GACD,OAAO,CAAC;AAeZ,wBAAgB,eAAe,CAAC,QAAQ,SAAS,aAAa,EAC5D,WAAW,EAAE,MAAM,SAAS,eAAe,CAAC,QAAQ,CAAC,EAAE,EACvD,eAAe,EAAE,SAAS,OAAO,EAAE,GAClC;IACD,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpC,GAAG,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,QAAQ,CAAC;CAChE,CA2CA"}
@@ -0,0 +1,42 @@
1
+ import { tapMemo, tapResource, tapResources, } from "@assistant-ui/tap";
2
+ import { ClientResource } from "./tapClientResource.js";
3
+ import { wrapperResource } from "./wrapperResource.js";
4
+ const ClientResourceWithKey = wrapperResource((el) => {
5
+ if (el.key === undefined) {
6
+ throw new Error("tapClientResource: Element has no key");
7
+ }
8
+ return tapResource(ClientResource(el));
9
+ });
10
+ export function tapClientLookup(getElements, getElementsDeps) {
11
+ const resources = tapResources(() => getElements().map((el) => ClientResourceWithKey(el)),
12
+ // biome-ignore lint/correctness/useExhaustiveDependencies: getElementsDeps is passed through from caller
13
+ getElementsDeps);
14
+ const keys = tapMemo(() => Object.keys(resources), [resources]);
15
+ // For arrays, track element key -> index mapping
16
+ const keyToIndex = tapMemo(() => {
17
+ return resources.reduce((acc, resource, index) => {
18
+ acc[resource.key] = index;
19
+ return acc;
20
+ }, {});
21
+ }, [resources]);
22
+ const state = tapMemo(() => {
23
+ return resources.map((r) => r.state);
24
+ }, [resources]);
25
+ return {
26
+ state,
27
+ get: (lookup) => {
28
+ if ("index" in lookup) {
29
+ if (lookup.index < 0 || lookup.index >= keys.length) {
30
+ throw new Error(`tapClientLookup: Index ${lookup.index} out of bounds (length: ${keys.length})`);
31
+ }
32
+ return resources[lookup.index].methods;
33
+ }
34
+ const index = keyToIndex[lookup.key];
35
+ if (index === undefined) {
36
+ throw new Error(`tapClientLookup: Key "${lookup.key}" not found`);
37
+ }
38
+ return resources[index].methods;
39
+ },
40
+ };
41
+ }
42
+ //# sourceMappingURL=tapClientLookup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapClientLookup.js","sourceRoot":"","sources":["../src/tapClientLookup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,WAAW,EACX,YAAY,GAEb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,+BAA4B;AACrD,OAAO,EAAE,eAAe,EAAE,6BAA0B;AAQpD,MAAM,qBAAqB,GAAG,eAAe,CAC3C,CAAiC,EAA6B,EAAE,EAAE;IAChE,IAAI,EAAE,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAIpC,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAC7B,WAAuD,EACvD,eAAmC;IAKnC,MAAM,SAAS,GAAG,YAAY,CAC5B,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC1D,yGAAyG;IACzG,eAAe,CAChB,CAAC;IAEF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhE,iDAAiD;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;YACvB,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC1B,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAA4B,CAC7B,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO;QACL,KAAK;QACL,GAAG,EAAE,CAAC,MAA2C,EAAE,EAAE;YACnD,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;gBACtB,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpD,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,CAAC,KAAK,2BAA2B,IAAI,CAAC,MAAM,GAAG,CAChF,CAAC;gBACJ,CAAC;gBACD,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC;YAC1C,CAAC;YAED,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,SAAS,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type ResourceElement } from "@assistant-ui/tap";
2
+ import type { ClientMethods } from "./types/client.js";
3
+ export declare const getClientState: (client: ClientMethods) => any;
4
+ type InferClientState<TMethods> = TMethods extends {
5
+ getState: () => infer S;
6
+ } ? S : undefined;
7
+ export declare const tapClientResource: <TMethods extends ClientMethods>(element: ResourceElement<TMethods>) => {
8
+ state: InferClientState<TMethods>;
9
+ methods: TMethods;
10
+ key: string | number | undefined;
11
+ };
12
+ export {};
13
+ //# sourceMappingURL=tapClientResource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapClientResource.d.ts","sourceRoot":"","sources":["../src/tapClientResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,0BAAuB;AAsBpD,eAAO,MAAM,cAAc,GAAI,QAAQ,aAAa,QASnD,CAAC;AAkIF,KAAK,gBAAgB,CAAC,QAAQ,IAAI,QAAQ,SAAS;IACjD,QAAQ,EAAE,MAAM,MAAM,CAAC,CAAC;CACzB,GACG,CAAC,GACD,SAAS,CAAC;AAEd,eAAO,MAAM,iBAAiB,GAAI,QAAQ,SAAS,aAAa,EAC9D,SAAS,eAAe,CAAC,QAAQ,CAAC,KACjC;IACD,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,EAAE,QAAQ,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAOlC,CAAC"}
@@ -0,0 +1,114 @@
1
+ import { tapEffect, tapMemo, tapRef, tapResource, } from "@assistant-ui/tap";
2
+ import { tapClientStack, tapWithClientStack, SYMBOL_CLIENT_INDEX, } from "./utils/tap-client-stack-context.js";
3
+ import { BaseProxyHandler, handleIntrospectionProp, } from "./utils/BaseProxyHandler.js";
4
+ import { wrapperResource } from "./wrapperResource.js";
5
+ /**
6
+ * Symbol used internally to get state from ClientProxy.
7
+ * This allows getState() to be optional in the user-facing client.
8
+ */
9
+ const SYMBOL_GET_OUTPUT = Symbol("assistant-ui.store.getValue");
10
+ export const getClientState = (client) => {
11
+ const output = client[SYMBOL_GET_OUTPUT];
12
+ if (!output) {
13
+ throw new Error("Client scope contains a non-client resource. " +
14
+ "Ensure your Derived get() returns a client created with tapClientResource(), not a plain resource.");
15
+ }
16
+ return output.getState?.();
17
+ };
18
+ // Global cache for function templates by field name
19
+ const fieldAccessFns = new Map();
20
+ function getOrCreateProxyFn(prop) {
21
+ let template = fieldAccessFns.get(prop);
22
+ if (!template) {
23
+ template = function (...args) {
24
+ if (!this || typeof this !== "object") {
25
+ throw new Error(`Method "${String(prop)}" called without proper context. ` +
26
+ `This may indicate the function was called incorrectly.`);
27
+ }
28
+ const output = this[SYMBOL_GET_OUTPUT];
29
+ if (!output) {
30
+ throw new Error(`Method "${String(prop)}" called on invalid client proxy. ` +
31
+ `Ensure you are calling this method on a valid client instance.`);
32
+ }
33
+ const method = output[prop];
34
+ if (!method)
35
+ throw new Error(`Method "${String(prop)}" is not implemented.`);
36
+ if (typeof method !== "function")
37
+ throw new Error(`"${String(prop)}" is not a function.`);
38
+ return method(...args);
39
+ };
40
+ fieldAccessFns.set(prop, template);
41
+ }
42
+ return template;
43
+ }
44
+ class ClientProxyHandler extends BaseProxyHandler {
45
+ outputRef;
46
+ index;
47
+ boundFns;
48
+ cachedReceiver;
49
+ constructor(outputRef, index) {
50
+ super();
51
+ this.outputRef = outputRef;
52
+ this.index = index;
53
+ }
54
+ get(_, prop, receiver) {
55
+ if (prop === SYMBOL_GET_OUTPUT)
56
+ return this.outputRef.current;
57
+ if (prop === SYMBOL_CLIENT_INDEX)
58
+ return this.index;
59
+ const introspection = handleIntrospectionProp(prop, "ClientProxy");
60
+ if (introspection !== false)
61
+ return introspection;
62
+ const value = this.outputRef.current[prop];
63
+ if (typeof value === "function") {
64
+ if (this.cachedReceiver !== receiver) {
65
+ this.boundFns = new Map();
66
+ this.cachedReceiver = receiver;
67
+ }
68
+ let bound = this.boundFns.get(prop);
69
+ if (!bound) {
70
+ bound = getOrCreateProxyFn(prop).bind(receiver);
71
+ this.boundFns.set(prop, bound);
72
+ }
73
+ return bound;
74
+ }
75
+ return value;
76
+ }
77
+ ownKeys() {
78
+ return Object.keys(this.outputRef.current);
79
+ }
80
+ has(_, prop) {
81
+ if (prop === SYMBOL_GET_OUTPUT)
82
+ return true;
83
+ if (prop === SYMBOL_CLIENT_INDEX)
84
+ return true;
85
+ return prop in this.outputRef.current;
86
+ }
87
+ }
88
+ /**
89
+ * Resource that wraps a plain resource element to create a stable client proxy.
90
+ *
91
+ * Takes a ResourceElement that returns methods (with optional getState()) and
92
+ * wraps it to produce a stable client proxy. This adds the client to the
93
+ * client stack, enabling event scoping.
94
+ *
95
+ * @internal
96
+ */
97
+ export const ClientResource = wrapperResource((element) => {
98
+ const valueRef = tapRef(null);
99
+ const index = tapClientStack().length;
100
+ const methods = tapMemo(() => new Proxy({}, new ClientProxyHandler(valueRef, index)), [index]);
101
+ const value = tapWithClientStack(methods, () => tapResource(element));
102
+ if (!valueRef.current) {
103
+ valueRef.current = value;
104
+ }
105
+ tapEffect(() => {
106
+ valueRef.current = value;
107
+ });
108
+ const state = value.getState?.();
109
+ return { methods, state, key: element.key };
110
+ });
111
+ export const tapClientResource = (element) => {
112
+ return tapResource(ClientResource(element));
113
+ };
114
+ //# sourceMappingURL=tapClientResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapClientResource.js","sourceRoot":"","sources":["../src/tapClientResource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import type { ResourceElement } from "@assistant-ui/tap";
2
+ import type { AssistantEventName, AssistantEventCallback, AssistantEventSelector } from "./events.js";
3
+ /**
4
+ * Base type for methods that can be called on a client.
5
+ */
6
+ export interface ClientMethods {
7
+ [key: string | symbol]: (...args: any[]) => any;
8
+ }
9
+ type ClientMetaType = {
10
+ source: ClientNames;
11
+ query: Record<string, unknown>;
12
+ };
13
+ /**
14
+ * Module augmentation interface for assistant-ui store type extensions.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * declare module "@assistant-ui/store" {
19
+ * interface ScopeRegistry {
20
+ * // Simple client (meta and events are optional)
21
+ * foo: {
22
+ * methods: {
23
+ * getState: () => { bar: string };
24
+ * updateBar: (bar: string) => void;
25
+ * };
26
+ * };
27
+ * // Full client with meta and events
28
+ * bar: {
29
+ * methods: {
30
+ * getState: () => { id: string };
31
+ * update: () => void;
32
+ * };
33
+ * meta: { source: "fooList"; query: { index: number } };
34
+ * events: {
35
+ * "bar.updated": { id: string };
36
+ * };
37
+ * };
38
+ * }
39
+ * }
40
+ * ```
41
+ */
42
+ export interface ScopeRegistry {
43
+ }
44
+ type ClientEventsType<K extends ClientNames> = Record<`${K}.${string}`, unknown>;
45
+ type ClientError<E extends string> = {
46
+ methods: Record<E, () => E>;
47
+ meta: {
48
+ source: ClientNames;
49
+ query: Record<E, E>;
50
+ };
51
+ events: Record<`${E}.`, E>;
52
+ };
53
+ type ValidateClient<K extends keyof ScopeRegistry> = ScopeRegistry[K] extends {
54
+ methods: ClientMethods;
55
+ } ? "meta" extends keyof ScopeRegistry[K] ? ScopeRegistry[K]["meta"] extends ClientMetaType ? "events" extends keyof ScopeRegistry[K] ? ScopeRegistry[K]["events"] extends ClientEventsType<K> ? ScopeRegistry[K] : ClientError<`ERROR: ${K & string} has invalid events type`> : ScopeRegistry[K] : ClientError<`ERROR: ${K & string} has invalid meta type`> : "events" extends keyof ScopeRegistry[K] ? ScopeRegistry[K]["events"] extends ClientEventsType<K> ? ScopeRegistry[K] : ClientError<`ERROR: ${K & string} has invalid events type`> : ScopeRegistry[K] : ClientError<`ERROR: ${K & string} has invalid methods type`>;
56
+ type ClientSchemas = keyof ScopeRegistry extends never ? {
57
+ "ERROR: No clients were defined": ClientError<"ERROR: No clients were defined">;
58
+ } : {
59
+ [K in keyof ScopeRegistry]: ValidateClient<K>;
60
+ };
61
+ /**
62
+ * Output type that client resources return (just methods).
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * const FooResource = resource((): ClientResourceOutput<"foo"> => {
67
+ * const [state, setState] = tapState({ bar: "hello" });
68
+ * return {
69
+ * getState: () => state,
70
+ * updateBar: (b) => setState({ bar: b }),
71
+ * };
72
+ * });
73
+ * ```
74
+ */
75
+ export type ClientOutput<K extends ClientNames> = ClientSchemas[K]["methods"] & ClientMethods;
76
+ export type ClientNames = keyof ClientSchemas extends infer U ? U : never;
77
+ export type ClientEvents<K extends ClientNames> = "events" extends keyof ClientSchemas[K] ? ClientSchemas[K]["events"] extends ClientEventsType<K> ? ClientSchemas[K]["events"] : never : never;
78
+ export type ClientMeta<K extends ClientNames> = "meta" extends keyof ClientSchemas[K] ? Pick<ClientSchemas[K]["meta"] extends ClientMetaType ? ClientSchemas[K]["meta"] : never, "source" | "query"> : never;
79
+ export type ClientElement<K extends ClientNames> = ResourceElement<ClientOutput<K>>;
80
+ /**
81
+ * Unsubscribe function type.
82
+ */
83
+ export type Unsubscribe = () => void;
84
+ /**
85
+ * State type extracted from all clients via their getState() methods.
86
+ */
87
+ export type AssistantState = {
88
+ [K in ClientNames]: ClientSchemas[K]["methods"] extends {
89
+ getState: () => infer S;
90
+ } ? S : never;
91
+ };
92
+ /**
93
+ * Type for a client accessor - a function that returns the methods,
94
+ * with source/query metadata attached (derived from meta).
95
+ */
96
+ export type AssistantClientAccessor<K extends ClientNames> = (() => ClientSchemas[K]["methods"]) & (ClientMeta<K> | {
97
+ source: "root";
98
+ query: Record<string, never>;
99
+ } | {
100
+ source: null;
101
+ query: null;
102
+ }) & {
103
+ name: K;
104
+ };
105
+ /**
106
+ * The assistant client type with all registered clients.
107
+ */
108
+ export type AssistantClient = {
109
+ [K in ClientNames]: AssistantClientAccessor<K>;
110
+ } & {
111
+ subscribe(listener: () => void): Unsubscribe;
112
+ on<TEvent extends AssistantEventName>(selector: AssistantEventSelector<TEvent>, callback: AssistantEventCallback<TEvent>): Unsubscribe;
113
+ };
114
+ export {};
115
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":""}