@assistant-ui/store 0.0.6 → 0.1.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.
Files changed (92) hide show
  1. package/README.md +13 -13
  2. package/dist/{AssistantIf.d.ts → AuiIf.d.ts} +4 -4
  3. package/dist/AuiIf.d.ts.map +1 -0
  4. package/dist/AuiIf.js +8 -0
  5. package/dist/AuiIf.js.map +1 -0
  6. package/dist/Derived.d.ts +2 -2
  7. package/dist/Derived.d.ts.map +1 -1
  8. package/dist/Derived.js +1 -1
  9. package/dist/index.d.ts +5 -5
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +5 -5
  12. package/dist/index.js.map +1 -1
  13. package/dist/tapClientList.d.ts.map +1 -1
  14. package/dist/tapClientList.js +16 -10
  15. package/dist/tapClientList.js.map +1 -1
  16. package/dist/tapClientLookup.d.ts +3 -3
  17. package/dist/tapClientLookup.d.ts.map +1 -1
  18. package/dist/tapClientLookup.js +28 -16
  19. package/dist/tapClientLookup.js.map +1 -1
  20. package/dist/tapClientResource.d.ts +6 -2
  21. package/dist/tapClientResource.d.ts.map +1 -1
  22. package/dist/tapClientResource.js +11 -5
  23. package/dist/tapClientResource.js.map +1 -1
  24. package/dist/types/client.d.ts +4 -2
  25. package/dist/types/client.d.ts.map +1 -1
  26. package/dist/useAui.d.ts +20 -0
  27. package/dist/useAui.d.ts.map +1 -0
  28. package/dist/{useAssistantClient.js → useAui.js} +65 -35
  29. package/dist/useAui.js.map +1 -0
  30. package/dist/useAuiEvent.d.ts +3 -0
  31. package/dist/useAuiEvent.d.ts.map +1 -0
  32. package/dist/{useAssistantEvent.js → useAuiEvent.js} +4 -4
  33. package/dist/useAuiEvent.js.map +1 -0
  34. package/dist/{useAssistantState.d.ts → useAuiState.d.ts} +4 -4
  35. package/dist/useAuiState.d.ts.map +1 -0
  36. package/dist/{useAssistantState.js → useAuiState.js} +6 -6
  37. package/dist/useAuiState.js.map +1 -0
  38. package/dist/utils/NotificationManager.d.ts +1 -1
  39. package/dist/utils/NotificationManager.d.ts.map +1 -1
  40. package/dist/utils/NotificationManager.js +3 -2
  41. package/dist/utils/NotificationManager.js.map +1 -1
  42. package/dist/utils/StoreResource.d.ts +1 -1
  43. package/dist/utils/StoreResource.d.ts.map +1 -1
  44. package/dist/utils/StoreResource.js +2 -4
  45. package/dist/utils/StoreResource.js.map +1 -1
  46. package/dist/utils/react-assistant-context.d.ts +5 -5
  47. package/dist/utils/react-assistant-context.d.ts.map +1 -1
  48. package/dist/utils/react-assistant-context.js +6 -6
  49. package/dist/utils/react-assistant-context.js.map +1 -1
  50. package/dist/utils/splitClients.d.ts +2 -20
  51. package/dist/utils/splitClients.d.ts.map +1 -1
  52. package/dist/utils/splitClients.js +13 -1
  53. package/dist/utils/splitClients.js.map +1 -1
  54. package/dist/utils/tap-assistant-context.d.ts.map +1 -1
  55. package/dist/utils/tap-assistant-context.js +3 -3
  56. package/dist/utils/tap-assistant-context.js.map +1 -1
  57. package/dist/utils/tap-client-stack-context.js +3 -3
  58. package/dist/utils/tap-client-stack-context.js.map +1 -1
  59. package/dist/wrapperResource.d.ts +3 -0
  60. package/dist/wrapperResource.d.ts.map +1 -0
  61. package/dist/wrapperResource.js +11 -0
  62. package/dist/wrapperResource.js.map +1 -0
  63. package/package.json +2 -2
  64. package/src/AuiIf.tsx +17 -0
  65. package/src/Derived.ts +1 -1
  66. package/src/index.ts +5 -5
  67. package/src/tapClientList.ts +27 -14
  68. package/src/tapClientLookup.ts +53 -33
  69. package/src/tapClientResource.ts +12 -6
  70. package/src/types/client.ts +2 -2
  71. package/src/{useAssistantClient.tsx → useAui.tsx} +95 -52
  72. package/src/{useAssistantEvent.ts → useAuiEvent.ts} +3 -3
  73. package/src/{useAssistantState.tsx → useAuiState.tsx} +5 -7
  74. package/src/utils/NotificationManager.ts +3 -2
  75. package/src/utils/StoreResource.ts +3 -5
  76. package/src/utils/react-assistant-context.tsx +9 -8
  77. package/src/utils/splitClients.ts +22 -7
  78. package/src/utils/tap-assistant-context.ts +5 -6
  79. package/src/utils/tap-client-stack-context.ts +4 -4
  80. package/src/wrapperResource.ts +17 -0
  81. package/dist/AssistantIf.d.ts.map +0 -1
  82. package/dist/AssistantIf.js +0 -8
  83. package/dist/AssistantIf.js.map +0 -1
  84. package/dist/useAssistantClient.d.ts +0 -17
  85. package/dist/useAssistantClient.d.ts.map +0 -1
  86. package/dist/useAssistantClient.js.map +0 -1
  87. package/dist/useAssistantEvent.d.ts +0 -3
  88. package/dist/useAssistantEvent.d.ts.map +0 -1
  89. package/dist/useAssistantEvent.js.map +0 -1
  90. package/dist/useAssistantState.d.ts.map +0 -1
  91. package/dist/useAssistantState.js.map +0 -1
  92. package/src/AssistantIf.tsx +0 -17
package/README.md CHANGED
@@ -6,7 +6,7 @@ Tap-based state management with React Context integration.
6
6
 
7
7
  ```typescript
8
8
  import { resource, tapState } from "@assistant-ui/tap";
9
- import { useAssistantClient, useAssistantState, AssistantProvider, type ClientOutput } from "@assistant-ui/store";
9
+ import { useAui, useAuiState, AuiProvider, type ClientOutput } from "@assistant-ui/store";
10
10
 
11
11
  // 1. Define client type
12
12
  declare module "@assistant-ui/store" {
@@ -23,13 +23,13 @@ const CounterClient = resource((): ClientOutput<"counter"> => {
23
23
 
24
24
  // 3. Use in React
25
25
  function App() {
26
- const aui = useAssistantClient({ counter: CounterClient() });
27
- return <AssistantProvider client={aui}><Counter /></AssistantProvider>;
26
+ const aui = useAui({ counter: CounterClient() });
27
+ return <AuiProvider value={aui}><Counter /></AuiProvider>;
28
28
  }
29
29
 
30
30
  function Counter() {
31
- const count = useAssistantState(({ counter }) => counter.count);
32
- const aui = useAssistantClient();
31
+ const count = useAuiState(({ counter }) => counter.count);
32
+ const aui = useAui();
33
33
  return <button onClick={() => aui.counter().increment()}>{count}</button>;
34
34
  }
35
35
  ```
@@ -52,7 +52,7 @@ declare module "@assistant-ui/store" {
52
52
 
53
53
  **Derived Clients**: Access nested clients from parents.
54
54
  ```typescript
55
- useAssistantClient({
55
+ useAui({
56
56
  item: Derived({ source: "list", query: { index: 0 }, get: (aui) => aui.list().item({ index: 0 }) }),
57
57
  });
58
58
  ```
@@ -62,19 +62,19 @@ useAssistantClient({
62
62
  const emit = tapAssistantEmit();
63
63
  emit("myClient.updated", { id: "123" });
64
64
 
65
- useAssistantEvent("myClient.updated", (p) => console.log(p.id));
65
+ useAuiEvent("myClient.updated", (p) => console.log(p.id));
66
66
  ```
67
67
 
68
68
  ## API
69
69
 
70
70
  | Hook/Component | Description |
71
71
  |----------------|-------------|
72
- | `useAssistantClient()` | Get client from context |
73
- | `useAssistantClient(clients)` | Create/extend client |
74
- | `useAssistantState(selector)` | Subscribe to state |
75
- | `useAssistantEvent(event, cb)` | Subscribe to events |
76
- | `AssistantProvider` | Provide client to tree |
77
- | `AssistantIf` | Conditional rendering |
72
+ | `useAui()` | Get client from context |
73
+ | `useAui(clients)` | Create/extend client |
74
+ | `useAuiState(selector)` | Subscribe to state |
75
+ | `useAuiEvent(event, cb)` | Subscribe to events |
76
+ | `AuiProvider` | Provide client to tree |
77
+ | `AuiIf` | Conditional rendering |
78
78
 
79
79
  | Tap Utility | Description |
80
80
  |-------------|-------------|
@@ -1,10 +1,10 @@
1
1
  import type { FC, PropsWithChildren } from "react";
2
2
  import type { AssistantState } from "./types/client.js";
3
- export declare namespace AssistantIf {
3
+ export declare namespace AuiIf {
4
4
  type Props = PropsWithChildren<{
5
- condition: AssistantIf.Condition;
5
+ condition: AuiIf.Condition;
6
6
  }>;
7
7
  type Condition = (state: AssistantState) => boolean;
8
8
  }
9
- export declare const AssistantIf: FC<AssistantIf.Props>;
10
- //# sourceMappingURL=AssistantIf.d.ts.map
9
+ export declare const AuiIf: FC<AuiIf.Props>;
10
+ //# sourceMappingURL=AuiIf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuiIf.d.ts","sourceRoot":"","sources":["../src/AuiIf.tsx"],"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"}
package/dist/AuiIf.js ADDED
@@ -0,0 +1,8 @@
1
+ "use client";
2
+ import { useAuiState } from "./useAuiState.js";
3
+ export const AuiIf = ({ children, condition }) => {
4
+ const result = useAuiState(condition);
5
+ return result ? children : null;
6
+ };
7
+ AuiIf.displayName = "AuiIf";
8
+ //# sourceMappingURL=AuiIf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuiIf.js","sourceRoot":"","sources":["../src/AuiIf.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAQ5C,MAAM,CAAC,MAAM,KAAK,GAAoB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC,CAAC;AAEF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC"}
package/dist/Derived.d.ts CHANGED
@@ -10,7 +10,7 @@ import type { AssistantClient, ClientNames, AssistantClientAccessor, ClientMeta
10
10
  *
11
11
  * @example
12
12
  * ```typescript
13
- * const aui = useAssistantClient({
13
+ * const aui = useAui({
14
14
  * message: Derived({
15
15
  * source: "thread",
16
16
  * query: { index: 0 },
@@ -19,7 +19,7 @@ import type { AssistantClient, ClientNames, AssistantClientAccessor, ClientMeta
19
19
  * });
20
20
  * ```
21
21
  */
22
- export declare const Derived: <K extends ClientNames>(...args: undefined extends Derived.Props<K> ? [props?: Derived.Props<K>] : [props: Derived.Props<K>]) => ResourceElement<null, Derived.Props<K>>;
22
+ export declare const Derived: <K extends ClientNames>(props: Derived.Props<K>) => ResourceElement<null, Derived.Props<K>>;
23
23
  export type DerivedElement<K extends ClientNames> = ResourceElement<null, Derived.Props<K>>;
24
24
  export declare namespace Derived {
25
25
  /**
@@ -1 +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,kJAGvB,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"}
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"}
package/dist/Derived.js CHANGED
@@ -9,7 +9,7 @@ import { resource } from "@assistant-ui/tap";
9
9
  *
10
10
  * @example
11
11
  * ```typescript
12
- * const aui = useAssistantClient({
12
+ * const aui = useAui({
13
13
  * message: Derived({
14
14
  * source: "thread",
15
15
  * query: { index: 0 },
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- export { useAssistantClient } from "./useAssistantClient.js";
2
- export { useAssistantState } from "./useAssistantState.js";
3
- export { useAssistantEvent } from "./useAssistantEvent.js";
4
- export { AssistantIf } from "./AssistantIf.js";
5
- export { AssistantProvider } from "./utils/react-assistant-context.js";
1
+ export { useAui } from "./useAui.js";
2
+ export { useAuiState } from "./useAuiState.js";
3
+ export { useAuiEvent } from "./useAuiEvent.js";
4
+ export { AuiIf } from "./AuiIf.js";
5
+ export { AuiProvider } from "./utils/react-assistant-context.js";
6
6
  export { Derived } from "./Derived.js";
7
7
  export { attachDefaultPeers } from "./attachDefaultPeers.js";
8
8
  export { tapAssistantClientRef, tapAssistantEmit, } from "./utils/tap-assistant-context.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,gCAA6B;AAC1D,OAAO,EAAE,iBAAiB,EAAE,+BAA4B;AACxD,OAAO,EAAE,iBAAiB,EAAE,+BAA4B;AAGxD,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,EAAE,iBAAiB,EAAE,2CAAwC;AAGpE,OAAO,EAAE,OAAO,EAAE,qBAAkB;AACpC,OAAO,EAAE,kBAAkB,EAAE,gCAA6B;AAG1D,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,cAAc,EACd,YAAY,EACZ,eAAe,EACf,cAAc,GACf,0BAAuB;AACxB,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,0BAAuB;AACxB,YAAY,EAAE,YAAY,EAAE,gCAA6B"}
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,kBAAkB,EAAE,gCAA6B;AAG1D,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,cAAc,EACd,YAAY,EACZ,eAAe,EACf,cAAc,GACf,0BAAuB;AACxB,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,0BAAuB;AACxB,YAAY,EAAE,YAAY,EAAE,gCAA6B"}
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  // hooks
2
- export { useAssistantClient } from "./useAssistantClient.js";
3
- export { useAssistantState } from "./useAssistantState.js";
4
- export { useAssistantEvent } from "./useAssistantEvent.js";
2
+ export { useAui } from "./useAui.js";
3
+ export { useAuiState } from "./useAuiState.js";
4
+ export { useAuiEvent } from "./useAuiEvent.js";
5
5
  // components
6
- export { AssistantIf } from "./AssistantIf.js";
7
- export { AssistantProvider } from "./utils/react-assistant-context.js";
6
+ export { AuiIf } from "./AuiIf.js";
7
+ export { AuiProvider } from "./utils/react-assistant-context.js";
8
8
  // resources
9
9
  export { Derived } from "./Derived.js";
10
10
  export { attachDefaultPeers } from "./attachDefaultPeers.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,OAAO,EAAE,kBAAkB,EAAE,gCAA6B;AAC1D,OAAO,EAAE,iBAAiB,EAAE,+BAA4B;AACxD,OAAO,EAAE,iBAAiB,EAAE,+BAA4B;AAExD,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,EAAE,iBAAiB,EAAE,2CAAwC;AAEpE,YAAY;AACZ,OAAO,EAAE,OAAO,EAAE,qBAAkB;AACpC,OAAO,EAAE,kBAAkB,EAAE,gCAA6B;AAE1D,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"}
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,kBAAkB,EAAE,gCAA6B;AAE1D,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"}
@@ -1 +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,cAAc,EAAE,0BAAuB;AAsBpE,eAAO,MAAM,aAAa,GAAI,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAS,aAAa,EACzE,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,KAClD;IACD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,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;CAyDnC,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,MAAM,EAAE,QAAQ,SAAS,aAAa,IAAI;QACjE,aAAa,EAAE,KAAK,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC;QAChC,QAAQ,EAAE,qBAAqB,CAC7B,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,EAChC,aAAa,CAAC,KAAK,CAAC,CACrB,CAAC;KACH,CAAC;CACH"}
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,cAAc,EAAE,0BAAuB;AAuBpE,eAAO,MAAM,aAAa,GAAI,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAS,aAAa,EACzE,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,KAClD;IACD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,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,MAAM,EAAE,QAAQ,SAAS,aAAa,IAAI;QACjE,aAAa,EAAE,KAAK,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC;QAChC,QAAQ,EAAE,qBAAqB,CAC7B,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,EAChC,aAAa,CAAC,KAAK,CAAC,CACrB,CAAC;KACH,CAAC;CACH"}
@@ -1,29 +1,28 @@
1
- import { tapState } from "@assistant-ui/tap";
1
+ import { tapConst, tapState, withKey } from "@assistant-ui/tap";
2
2
  import { tapClientLookup } from "./tapClientLookup.js";
3
3
  const createProps = (key, data, remove) => {
4
- let initialData = { data };
5
4
  return {
6
5
  key,
7
6
  getInitialData: () => {
8
- if (!initialData) {
9
- throw new Error("getInitialData may only be called once");
7
+ if (!data.hasData) {
8
+ throw new Error("getInitialData may only be called during initial render");
10
9
  }
11
- const data = initialData.data;
12
- initialData = undefined;
13
- return data;
10
+ return data.data;
14
11
  },
15
12
  remove,
16
13
  };
17
14
  };
18
15
  export const tapClientList = (props) => {
19
16
  const { initialValues, getKey, resource: Resource } = props;
17
+ const initialDataHandles = tapConst(() => [], []);
20
18
  const [items, setItems] = tapState(() => {
21
19
  const entries = [];
22
20
  for (const data of initialValues) {
23
21
  const key = getKey(data);
22
+ const handle = { data, hasData: true };
24
23
  entries.push([
25
24
  key,
26
- createProps(key, data, () => {
25
+ createProps(key, handle, () => {
27
26
  setItems((items) => {
28
27
  const newItems = { ...items };
29
28
  delete newItems[key];
@@ -31,19 +30,26 @@ export const tapClientList = (props) => {
31
30
  });
32
31
  }),
33
32
  ]);
33
+ initialDataHandles.push(handle);
34
34
  }
35
35
  return Object.fromEntries(entries);
36
36
  });
37
- const lookup = tapClientLookup(items, Resource, [Resource]);
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
+ });
38
42
  const add = (data) => {
39
43
  const key = getKey(data);
40
44
  setItems((items) => {
41
45
  if (key in items) {
42
46
  throw new Error(`Tried to add item with a key ${key} that already exists`);
43
47
  }
48
+ const handle = { data, hasData: true };
49
+ initialDataHandles.push(handle);
44
50
  return {
45
51
  ...items,
46
- [key]: createProps(key, data, () => {
52
+ [key]: createProps(key, handle, () => {
47
53
  setItems((items) => {
48
54
  const newItems = { ...items };
49
55
  delete newItems[key];
@@ -1 +1 @@
1
- {"version":3,"file":"tapClientList.js","sourceRoot":"","sources":["../src/tapClientList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,6BAA0B;AAGpD,MAAM,WAAW,GAAG,CAClB,GAAW,EACX,IAAW,EACX,MAAkB,EACkB,EAAE;IACtC,IAAI,WAAW,GAAgC,EAAE,IAAI,EAAE,CAAC;IACxD,OAAO;QACL,GAAG;QACH,cAAc,EAAE,GAAG,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;YAC9B,WAAW,GAAG,SAAS,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAmD,EAKnD,EAAE;IACF,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAI5D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAwB,GAAG,EAAE;QAC7D,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG;gBACH,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;oBAC1B,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;wBACjB,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;wBAC9B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;wBACrB,OAAO,QAAQ,CAAC;oBAClB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,eAAe,CAC5B,KAAK,EACL,QAAQ,EACR,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,IAAW,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CACb,gCAAgC,GAAG,sBAAsB,CAC1D,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,GAAG,KAAK;gBACR,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;oBACjC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;wBACjB,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;wBAC9B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;wBACrB,OAAO,QAAQ,CAAC;oBAClB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;aACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG;KACJ,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"tapClientList.js","sourceRoot":"","sources":["../src/tapClientList.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { ResourceElement } from "@assistant-ui/tap";
1
+ import { type ResourceElement } from "@assistant-ui/tap";
2
2
  import type { ClientMethods, ClientOutputOf } from "./types/client.js";
3
- export declare const tapClientLookup: <TState, TMethods extends ClientMethods, M extends Record<string | number | symbol, any>>(map: M, getElement: (t: M[keyof M], key: keyof M) => ResourceElement<ClientOutputOf<TState, TMethods>>, getElementDeps: any[]) => {
3
+ export declare function tapClientLookup<TState, TMethods extends ClientMethods>(getElements: () => readonly ResourceElement<ClientOutputOf<TState, TMethods>>[], getElementsDeps: readonly unknown[]): {
4
4
  state: TState[];
5
5
  get: (lookup: {
6
6
  index: number;
7
7
  } | {
8
- key: keyof M;
8
+ key: string;
9
9
  }) => TMethods;
10
10
  };
11
11
  //# sourceMappingURL=tapClientLookup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tapClientLookup.d.ts","sourceRoot":"","sources":["../src/tapClientLookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAyB,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,0BAAuB;AAGpE,eAAO,MAAM,eAAe,GAC1B,MAAM,EACN,QAAQ,SAAS,aAAa,EAC9B,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAE/C,KAAK,CAAC,EACN,YAAY,CACV,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EACb,GAAG,EAAE,MAAM,CAAC,KACT,eAAe,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EACtD,gBAAgB,GAAG,EAAE,KACpB;IACD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC,CAAA;KAAE,KAAK,QAAQ,CAAC;CAsCjE,CAAC"}
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,cAAc,EAAE,0BAAuB;AAkBpE,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,SAAS,aAAa,EACpE,WAAW,EAAE,MAAM,SAAS,eAAe,CACzC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CACjC,EAAE,EACH,eAAe,EAAE,SAAS,OAAO,EAAE,GAClC;IACD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,QAAQ,CAAC;CAChE,CA2CA"}
@@ -1,15 +1,27 @@
1
- import { tapMemo, tapResources } from "@assistant-ui/tap";
1
+ import { tapInlineResource, tapMemo, tapResources, } from "@assistant-ui/tap";
2
2
  import { ClientResource } from "./tapClientResource.js";
3
- export const tapClientLookup = (map, getElement, getElementDeps) => {
4
- const resources = tapResources(map, (t, key) => ClientResource(getElement(t, key)), getElementDeps);
5
- const keys = tapMemo(() => Object.keys(map), [map]);
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 tapInlineResource(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]);
6
22
  const state = tapMemo(() => {
7
- const result = new Array(keys.length);
8
- for (let i = 0; i < keys.length; i++) {
9
- result[i] = resources[keys[i]].state;
10
- }
11
- return result;
12
- }, [keys, resources]);
23
+ return resources.map((r) => r.state);
24
+ }, [resources]);
13
25
  return {
14
26
  state,
15
27
  get: (lookup) => {
@@ -17,14 +29,14 @@ export const tapClientLookup = (map, getElement, getElementDeps) => {
17
29
  if (lookup.index < 0 || lookup.index >= keys.length) {
18
30
  throw new Error(`tapClientLookup: Index ${lookup.index} out of bounds (length: ${keys.length})`);
19
31
  }
20
- return resources[keys[lookup.index]].methods;
32
+ return resources[lookup.index].methods;
21
33
  }
22
- const value = resources[lookup.key];
23
- if (!value) {
24
- throw new Error(`tapClientLookup: Key "${String(lookup.key)}" not found`);
34
+ const index = keyToIndex[lookup.key];
35
+ if (index === undefined) {
36
+ throw new Error(`tapClientLookup: Key "${lookup.key}" not found`);
25
37
  }
26
- return value.methods;
38
+ return resources[index].methods;
27
39
  },
28
40
  };
29
- };
41
+ }
30
42
  //# sourceMappingURL=tapClientLookup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tapClientLookup.js","sourceRoot":"","sources":["../src/tapClientLookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,+BAA4B;AAErD,MAAM,CAAC,MAAM,eAAe,GAAG,CAK7B,GAAM,EACN,UAGsD,EACtD,cAAqB,EAIrB,EAAE;IACF,MAAM,SAAS,GAAG,YAAY,CAC5B,GAAG,EACH,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAC9C,cAAc,CACf,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,KAAK,CAAC;QACxC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtB,OAAO;QACL,KAAK;QACL,GAAG,EAAE,CAAC,MAA4C,EAAE,EAAE;YACpD,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,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAE,CAAC,OAAO,CAAC;YACjD,CAAC;YAED,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CACb,yBAAyB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CACzD,CAAC;YACJ,CAAC;YACD,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"tapClientLookup.js","sourceRoot":"","sources":["../src/tapClientLookup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,OAAO,EACP,YAAY,GAEb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,+BAA4B;AACrD,OAAO,EAAE,eAAe,EAAE,6BAA0B;AAEpD,MAAM,qBAAqB,GAAG,eAAe,CAC3C,CACE,EAAqD,EACrD,EAAE;IACF,IAAI,EAAE,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC,CAGf,CAAC;AAC/B,CAAC,CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAC7B,WAEG,EACH,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"}
@@ -19,6 +19,10 @@ export declare const getClientState: (client: ClientMethods) => unknown;
19
19
  * });
20
20
  * ```
21
21
  */
22
- export declare const ClientResource: <TState, TMethods extends ClientMethods>(props: ResourceElement<ClientOutputOf<TState, TMethods>>) => ResourceElement<ClientOutputOf<TState, TMethods>, ResourceElement<ClientOutputOf<TState, TMethods>>>;
23
- export declare const tapClientResource: <TState, TMethods extends ClientMethods>(element: ResourceElement<ClientOutputOf<TState, TMethods>>) => ClientOutputOf<TState, TMethods>;
22
+ export declare const ClientResource: <TState, TMethods extends ClientMethods>(props: ResourceElement<ClientOutputOf<TState, TMethods>>) => ResourceElement<ClientOutputOf<TState, TMethods> & {
23
+ key: string | number | undefined;
24
+ }, ResourceElement<ClientOutputOf<TState, TMethods>>>;
25
+ export declare const tapClientResource: <TState, TMethods extends ClientMethods>(element: ResourceElement<ClientOutputOf<TState, TMethods>>) => ClientOutputOf<TState, TMethods> & {
26
+ key: string | number | undefined;
27
+ };
24
28
  //# sourceMappingURL=tapClientResource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tapClientResource.d.ts","sourceRoot":"","sources":["../src/tapClientResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EAIrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,0BAAuB;AAqBpE,eAAO,MAAM,cAAc,GAAI,QAAQ,aAAa,YASnD,CAAC;AA2DF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,cAAc,GACxB,MAAM,EAAE,QAAQ,SAAS,aAAa,mKA4BxC,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,EAAE,QAAQ,SAAS,aAAa,EACtE,SAAS,eAAe,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,qCAG3D,CAAC"}
1
+ {"version":3,"file":"tapClientResource.d.ts","sourceRoot":"","sources":["../src/tapClientResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EAGrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,0BAAuB;AAsBpE,eAAO,MAAM,cAAc,GAAI,QAAQ,aAAa,YASnD,CAAC;AA+DF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,cAAc,GACxB,MAAM,EAAE,QAAQ,SAAS,aAAa;SAGhC,MAAM,GAAG,MAAM,GAAG,SAAS;qDA2BnC,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,EAAE,QAAQ,SAAS,aAAa,EACtE,SAAS,eAAe,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SA9BnD,MAAM,GAAG,MAAM,GAAG,SAAS;CAiCnC,CAAC"}
@@ -1,6 +1,7 @@
1
- import { tapEffect, tapMemo, tapRef, tapResource, resource, tapInlineResource, } from "@assistant-ui/tap";
1
+ import { tapEffect, tapMemo, tapRef, tapResource, tapInlineResource, } from "@assistant-ui/tap";
2
2
  import { tapClientStack, tapWithClientStack, SYMBOL_CLIENT_INDEX, } from "./utils/tap-client-stack-context.js";
3
3
  import { BaseProxyHandler, handleIntrospectionProp, } from "./utils/BaseProxyHandler.js";
4
+ import { wrapperResource } from "./wrapperResource.js";
4
5
  /**
5
6
  * Symbol used internally to get state from ClientProxy.
6
7
  * This allows getState() to be optional in the user-facing client.
@@ -25,6 +26,8 @@ function getOrCreateProxyFn(prop) {
25
26
  const method = this[SYMBOL_GET_OUTPUT].methods[prop];
26
27
  if (!method)
27
28
  throw new Error(`Method "${String(prop)}" is not implemented.`);
29
+ if (typeof method !== "function")
30
+ throw new Error(`"${String(prop)}" is not a function.`);
28
31
  return method(...args);
29
32
  };
30
33
  fieldAccessFns.set(prop, template);
@@ -47,7 +50,10 @@ class ClientProxyHandler extends BaseProxyHandler {
47
50
  const introspection = handleIntrospectionProp(prop, "ClientProxy");
48
51
  if (introspection !== false)
49
52
  return introspection;
50
- return getOrCreateProxyFn(prop);
53
+ const value = this.outputRef.current.methods[prop];
54
+ if (typeof value === "function")
55
+ return getOrCreateProxyFn(prop);
56
+ return value;
51
57
  }
52
58
  ownKeys() {
53
59
  return Object.keys(this.outputRef.current.methods);
@@ -78,10 +84,10 @@ class ClientProxyHandler extends BaseProxyHandler {
78
84
  * });
79
85
  * ```
80
86
  */
81
- export const ClientResource = resource((element) => {
87
+ export const ClientResource = wrapperResource((element) => {
82
88
  const valueRef = tapRef(null);
83
89
  const index = tapClientStack().length;
84
- const methods = tapMemo(() => new Proxy({}, new ClientProxyHandler(valueRef, index)), []);
90
+ const methods = tapMemo(() => new Proxy({}, new ClientProxyHandler(valueRef, index)), [index]);
85
91
  const value = tapWithClientStack(methods, () => tapResource(element));
86
92
  if (!valueRef.current) {
87
93
  valueRef.current = value;
@@ -89,7 +95,7 @@ export const ClientResource = resource((element) => {
89
95
  tapEffect(() => {
90
96
  valueRef.current = value;
91
97
  });
92
- return { methods, state: value.state };
98
+ return { methods, state: value.state, key: element.key };
93
99
  });
94
100
  export const tapClientResource = (element) => {
95
101
  return tapInlineResource(ClientResource(element));
@@ -1 +1 @@
1
- {"version":3,"file":"tapClientResource.js","sourceRoot":"","sources":["../src/tapClientResource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tapClientResource.js","sourceRoot":"","sources":["../src/tapClientResource.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import type { AssistantEventName, AssistantEventCallback, AssistantEventSelector
4
4
  * Base type for methods that can be called on a client.
5
5
  */
6
6
  export interface ClientMethods {
7
- [key: string | symbol]: (...args: any[]) => any;
7
+ [key: string | symbol]: ((...args: any[]) => any) | ClientMethods;
8
8
  }
9
9
  type ClientMetaType = {
10
10
  source: ClientNames;
@@ -103,7 +103,9 @@ export type AssistantClientAccessor<K extends ClientNames> = (() => ClientSchema
103
103
  } | {
104
104
  source: null;
105
105
  query: null;
106
- });
106
+ }) & {
107
+ name: K;
108
+ };
107
109
  /**
108
110
  * The assistant client type with all registered clients.
109
111
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { AssistantClient, ClientNames, ClientElement } from "./types/client.js";
2
+ import { DerivedElement } from "./Derived.js";
3
+ /**
4
+ * Resource that creates an extended AssistantClient.
5
+ */
6
+ export declare const AssistantClientResource: (props: {
7
+ parent: AssistantClient;
8
+ clients: useAui.Props;
9
+ }) => import("@assistant-ui/tap").ResourceElement<AssistantClient, {
10
+ parent: AssistantClient;
11
+ clients: useAui.Props;
12
+ }>;
13
+ export declare namespace useAui {
14
+ type Props = {
15
+ [K in ClientNames]?: ClientElement<K> | DerivedElement<K>;
16
+ };
17
+ }
18
+ export declare function useAui(): AssistantClient;
19
+ export declare function useAui(clients: useAui.Props): AssistantClient;
20
+ //# sourceMappingURL=useAui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAui.d.ts","sourceRoot":"","sources":["../src/useAui.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,eAAe,EAEf,WAAW,EACX,aAAa,EAEd,0BAAuB;AACxB,OAAO,EAAW,cAAc,EAAE,qBAAkB;AAqQpD;;GAEG;AACH,eAAO,MAAM,uBAAuB;YAKxB,eAAe;aACd,MAAM,CAAC,KAAK;;YADb,eAAe;aACd,MAAM,CAAC,KAAK;EAwDxB,CAAC;AAEF,yBAAiB,MAAM,CAAC;IACtB,KAAY,KAAK,GAAG;SACjB,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;KAC1D,CAAC;CACH;AAED,wBAAgB,MAAM,IAAI,eAAe,CAAC;AAC1C,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,eAAe,CAAC"}