assembly-kit 0.0.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 (272) hide show
  1. package/CLAUDE.md +205 -0
  2. package/LICENSE +21 -0
  3. package/README.md +516 -0
  4. package/dist/bridge-ui/index.d.mts +4 -0
  5. package/dist/bridge-ui/index.mjs +5 -0
  6. package/dist/bridge-ui/use-actions-menu.d.mts +16 -0
  7. package/dist/bridge-ui/use-actions-menu.mjs +33 -0
  8. package/dist/bridge-ui/use-actions-menu.mjs.map +1 -0
  9. package/dist/bridge-ui/use-primary-cta.d.mts +16 -0
  10. package/dist/bridge-ui/use-primary-cta.mjs +34 -0
  11. package/dist/bridge-ui/use-primary-cta.mjs.map +1 -0
  12. package/dist/bridge-ui/use-secondary-cta.d.mts +16 -0
  13. package/dist/bridge-ui/use-secondary-cta.mjs +34 -0
  14. package/dist/bridge-ui/use-secondary-cta.mjs.map +1 -0
  15. package/dist/client/index.d.mts +108 -0
  16. package/dist/client/index.mjs +168 -0
  17. package/dist/client/index.mjs.map +1 -0
  18. package/dist/client/options.d.mts +40 -0
  19. package/dist/constants/kit-mode.d.mts +15 -0
  20. package/dist/constants/kit-mode.mjs +15 -0
  21. package/dist/constants/kit-mode.mjs.map +1 -0
  22. package/dist/errors/base.d.mts +29 -0
  23. package/dist/errors/base.mjs +16 -0
  24. package/dist/errors/base.mjs.map +1 -0
  25. package/dist/errors/connection.d.mts +12 -0
  26. package/dist/errors/connection.mjs +16 -0
  27. package/dist/errors/connection.mjs.map +1 -0
  28. package/dist/errors/forbidden.d.mts +12 -0
  29. package/dist/errors/forbidden.mjs +16 -0
  30. package/dist/errors/forbidden.mjs.map +1 -0
  31. package/dist/errors/index.d.mts +13 -0
  32. package/dist/errors/index.mjs +13 -0
  33. package/dist/errors/invalid-token.d.mts +12 -0
  34. package/dist/errors/invalid-token.mjs +16 -0
  35. package/dist/errors/invalid-token.mjs.map +1 -0
  36. package/dist/errors/missing-api-key.d.mts +12 -0
  37. package/dist/errors/missing-api-key.mjs +16 -0
  38. package/dist/errors/missing-api-key.mjs.map +1 -0
  39. package/dist/errors/no-token.d.mts +12 -0
  40. package/dist/errors/no-token.mjs +16 -0
  41. package/dist/errors/no-token.mjs.map +1 -0
  42. package/dist/errors/not-found.d.mts +12 -0
  43. package/dist/errors/not-found.mjs +16 -0
  44. package/dist/errors/not-found.mjs.map +1 -0
  45. package/dist/errors/rate-limit.d.mts +17 -0
  46. package/dist/errors/rate-limit.mjs +18 -0
  47. package/dist/errors/rate-limit.mjs.map +1 -0
  48. package/dist/errors/response-parse.d.mts +19 -0
  49. package/dist/errors/response-parse.mjs +23 -0
  50. package/dist/errors/response-parse.mjs.map +1 -0
  51. package/dist/errors/server.d.mts +12 -0
  52. package/dist/errors/server.mjs +16 -0
  53. package/dist/errors/server.mjs.map +1 -0
  54. package/dist/errors/unauthorized.d.mts +12 -0
  55. package/dist/errors/unauthorized.mjs +16 -0
  56. package/dist/errors/unauthorized.mjs.map +1 -0
  57. package/dist/errors/validation.d.mts +12 -0
  58. package/dist/errors/validation.mjs +16 -0
  59. package/dist/errors/validation.mjs.map +1 -0
  60. package/dist/index.d.mts +49 -0
  61. package/dist/index.mjs +51 -0
  62. package/dist/lib/modules/app-connections/resource.d.mts +28 -0
  63. package/dist/lib/modules/app-connections/resource.mjs +33 -0
  64. package/dist/lib/modules/app-connections/resource.mjs.map +1 -0
  65. package/dist/lib/modules/app-connections/schema.d.mts +37 -0
  66. package/dist/lib/modules/app-connections/schema.mjs +30 -0
  67. package/dist/lib/modules/app-connections/schema.mjs.map +1 -0
  68. package/dist/lib/modules/app-installs/resource.d.mts +21 -0
  69. package/dist/lib/modules/app-installs/resource.mjs +31 -0
  70. package/dist/lib/modules/app-installs/resource.mjs.map +1 -0
  71. package/dist/lib/modules/app-installs/schema.d.mts +22 -0
  72. package/dist/lib/modules/app-installs/schema.mjs +23 -0
  73. package/dist/lib/modules/app-installs/schema.mjs.map +1 -0
  74. package/dist/lib/modules/clients/resource.d.mts +43 -0
  75. package/dist/lib/modules/clients/resource.mjs +62 -0
  76. package/dist/lib/modules/clients/resource.mjs.map +1 -0
  77. package/dist/lib/modules/clients/schema.d.mts +50 -0
  78. package/dist/lib/modules/clients/schema.mjs +52 -0
  79. package/dist/lib/modules/clients/schema.mjs.map +1 -0
  80. package/dist/lib/modules/companies/resource.d.mts +37 -0
  81. package/dist/lib/modules/companies/resource.mjs +60 -0
  82. package/dist/lib/modules/companies/resource.mjs.map +1 -0
  83. package/dist/lib/modules/companies/schema.d.mts +39 -0
  84. package/dist/lib/modules/companies/schema.mjs +34 -0
  85. package/dist/lib/modules/companies/schema.mjs.map +1 -0
  86. package/dist/lib/modules/contract-templates/resource.d.mts +27 -0
  87. package/dist/lib/modules/contract-templates/resource.mjs +40 -0
  88. package/dist/lib/modules/contract-templates/resource.mjs.map +1 -0
  89. package/dist/lib/modules/contract-templates/schema.d.mts +21 -0
  90. package/dist/lib/modules/contract-templates/schema.mjs +18 -0
  91. package/dist/lib/modules/contract-templates/schema.mjs.map +1 -0
  92. package/dist/lib/modules/contracts/resource.d.mts +29 -0
  93. package/dist/lib/modules/contracts/resource.mjs +40 -0
  94. package/dist/lib/modules/contracts/resource.mjs.map +1 -0
  95. package/dist/lib/modules/contracts/schema.d.mts +50 -0
  96. package/dist/lib/modules/contracts/schema.mjs +45 -0
  97. package/dist/lib/modules/contracts/schema.mjs.map +1 -0
  98. package/dist/lib/modules/custom-field-options/index.d.mts +1 -0
  99. package/dist/lib/modules/custom-field-options/index.mjs +2 -0
  100. package/dist/lib/modules/custom-field-options/resource.d.mts +22 -0
  101. package/dist/lib/modules/custom-field-options/resource.mjs +25 -0
  102. package/dist/lib/modules/custom-field-options/resource.mjs.map +1 -0
  103. package/dist/lib/modules/custom-field-options/schema.d.mts +18 -0
  104. package/dist/lib/modules/custom-field-options/schema.mjs +13 -0
  105. package/dist/lib/modules/custom-field-options/schema.mjs.map +1 -0
  106. package/dist/lib/modules/custom-fields/resource.d.mts +21 -0
  107. package/dist/lib/modules/custom-fields/resource.mjs +24 -0
  108. package/dist/lib/modules/custom-fields/resource.mjs.map +1 -0
  109. package/dist/lib/modules/custom-fields/schema.d.mts +43 -0
  110. package/dist/lib/modules/custom-fields/schema.mjs +44 -0
  111. package/dist/lib/modules/custom-fields/schema.mjs.map +1 -0
  112. package/dist/lib/modules/events/resource.d.mts +33 -0
  113. package/dist/lib/modules/events/resource.mjs +49 -0
  114. package/dist/lib/modules/events/resource.mjs.map +1 -0
  115. package/dist/lib/modules/events/schema.d.mts +52 -0
  116. package/dist/lib/modules/events/schema.mjs +49 -0
  117. package/dist/lib/modules/events/schema.mjs.map +1 -0
  118. package/dist/lib/modules/file-channels/resource.d.mts +26 -0
  119. package/dist/lib/modules/file-channels/resource.mjs +48 -0
  120. package/dist/lib/modules/file-channels/resource.mjs.map +1 -0
  121. package/dist/lib/modules/file-channels/schema.d.mts +33 -0
  122. package/dist/lib/modules/file-channels/schema.mjs +28 -0
  123. package/dist/lib/modules/file-channels/schema.mjs.map +1 -0
  124. package/dist/lib/modules/files/resource.d.mts +40 -0
  125. package/dist/lib/modules/files/resource.mjs +52 -0
  126. package/dist/lib/modules/files/resource.mjs.map +1 -0
  127. package/dist/lib/modules/files/schema.d.mts +27 -0
  128. package/dist/lib/modules/files/schema.mjs +27 -0
  129. package/dist/lib/modules/files/schema.mjs.map +1 -0
  130. package/dist/lib/modules/form-responses/resource.d.mts +24 -0
  131. package/dist/lib/modules/form-responses/resource.mjs +34 -0
  132. package/dist/lib/modules/form-responses/resource.mjs.map +1 -0
  133. package/dist/lib/modules/form-responses/schema.d.mts +29 -0
  134. package/dist/lib/modules/form-responses/schema.mjs +23 -0
  135. package/dist/lib/modules/form-responses/schema.mjs.map +1 -0
  136. package/dist/lib/modules/forms/resource.d.mts +24 -0
  137. package/dist/lib/modules/forms/resource.mjs +40 -0
  138. package/dist/lib/modules/forms/resource.mjs.map +1 -0
  139. package/dist/lib/modules/forms/schema.d.mts +22 -0
  140. package/dist/lib/modules/forms/schema.mjs +19 -0
  141. package/dist/lib/modules/forms/schema.mjs.map +1 -0
  142. package/dist/lib/modules/index.d.mts +28 -0
  143. package/dist/lib/modules/index.mjs +29 -0
  144. package/dist/lib/modules/internal-users/resource.d.mts +24 -0
  145. package/dist/lib/modules/internal-users/resource.mjs +37 -0
  146. package/dist/lib/modules/internal-users/resource.mjs.map +1 -0
  147. package/dist/lib/modules/internal-users/schema.d.mts +27 -0
  148. package/dist/lib/modules/internal-users/schema.mjs +24 -0
  149. package/dist/lib/modules/internal-users/schema.mjs.map +1 -0
  150. package/dist/lib/modules/invoice-templates/resource.d.mts +22 -0
  151. package/dist/lib/modules/invoice-templates/resource.mjs +32 -0
  152. package/dist/lib/modules/invoice-templates/resource.mjs.map +1 -0
  153. package/dist/lib/modules/invoice-templates/schema.d.mts +21 -0
  154. package/dist/lib/modules/invoice-templates/schema.mjs +18 -0
  155. package/dist/lib/modules/invoice-templates/schema.mjs.map +1 -0
  156. package/dist/lib/modules/invoices/resource.d.mts +30 -0
  157. package/dist/lib/modules/invoices/resource.mjs +48 -0
  158. package/dist/lib/modules/invoices/resource.mjs.map +1 -0
  159. package/dist/lib/modules/invoices/schema.d.mts +81 -0
  160. package/dist/lib/modules/invoices/schema.mjs +75 -0
  161. package/dist/lib/modules/invoices/schema.mjs.map +1 -0
  162. package/dist/lib/modules/message-channels/resource.d.mts +26 -0
  163. package/dist/lib/modules/message-channels/resource.mjs +48 -0
  164. package/dist/lib/modules/message-channels/resource.mjs.map +1 -0
  165. package/dist/lib/modules/message-channels/schema.d.mts +35 -0
  166. package/dist/lib/modules/message-channels/schema.mjs +30 -0
  167. package/dist/lib/modules/message-channels/schema.mjs.map +1 -0
  168. package/dist/lib/modules/messages/resource.d.mts +27 -0
  169. package/dist/lib/modules/messages/resource.mjs +40 -0
  170. package/dist/lib/modules/messages/resource.mjs.map +1 -0
  171. package/dist/lib/modules/messages/schema.d.mts +30 -0
  172. package/dist/lib/modules/messages/schema.mjs +26 -0
  173. package/dist/lib/modules/messages/schema.mjs.map +1 -0
  174. package/dist/lib/modules/notes/resource.d.mts +37 -0
  175. package/dist/lib/modules/notes/resource.mjs +60 -0
  176. package/dist/lib/modules/notes/resource.mjs.map +1 -0
  177. package/dist/lib/modules/notes/schema.d.mts +34 -0
  178. package/dist/lib/modules/notes/schema.mjs +27 -0
  179. package/dist/lib/modules/notes/schema.mjs.map +1 -0
  180. package/dist/lib/modules/notifications/resource.d.mts +27 -0
  181. package/dist/lib/modules/notifications/resource.mjs +52 -0
  182. package/dist/lib/modules/notifications/resource.mjs.map +1 -0
  183. package/dist/lib/modules/notifications/schema.d.mts +52 -0
  184. package/dist/lib/modules/notifications/schema.mjs +43 -0
  185. package/dist/lib/modules/notifications/schema.mjs.map +1 -0
  186. package/dist/lib/modules/payments/resource.d.mts +26 -0
  187. package/dist/lib/modules/payments/resource.mjs +32 -0
  188. package/dist/lib/modules/payments/resource.mjs.map +1 -0
  189. package/dist/lib/modules/payments/schema.d.mts +23 -0
  190. package/dist/lib/modules/payments/schema.mjs +20 -0
  191. package/dist/lib/modules/payments/schema.mjs.map +1 -0
  192. package/dist/lib/modules/prices/resource.d.mts +27 -0
  193. package/dist/lib/modules/prices/resource.mjs +40 -0
  194. package/dist/lib/modules/prices/resource.mjs.map +1 -0
  195. package/dist/lib/modules/prices/schema.d.mts +22 -0
  196. package/dist/lib/modules/prices/schema.mjs +19 -0
  197. package/dist/lib/modules/prices/schema.mjs.map +1 -0
  198. package/dist/lib/modules/products/resource.d.mts +24 -0
  199. package/dist/lib/modules/products/resource.mjs +40 -0
  200. package/dist/lib/modules/products/resource.mjs.map +1 -0
  201. package/dist/lib/modules/products/schema.d.mts +22 -0
  202. package/dist/lib/modules/products/schema.mjs +19 -0
  203. package/dist/lib/modules/products/schema.mjs.map +1 -0
  204. package/dist/lib/modules/subscription-templates/resource.d.mts +22 -0
  205. package/dist/lib/modules/subscription-templates/resource.mjs +32 -0
  206. package/dist/lib/modules/subscription-templates/resource.mjs.map +1 -0
  207. package/dist/lib/modules/subscription-templates/schema.d.mts +21 -0
  208. package/dist/lib/modules/subscription-templates/schema.mjs +18 -0
  209. package/dist/lib/modules/subscription-templates/schema.mjs.map +1 -0
  210. package/dist/lib/modules/subscriptions/resource.d.mts +32 -0
  211. package/dist/lib/modules/subscriptions/resource.mjs +56 -0
  212. package/dist/lib/modules/subscriptions/resource.mjs.map +1 -0
  213. package/dist/lib/modules/subscriptions/schema.d.mts +31 -0
  214. package/dist/lib/modules/subscriptions/schema.mjs +26 -0
  215. package/dist/lib/modules/subscriptions/schema.mjs.map +1 -0
  216. package/dist/lib/modules/task-templates/resource.d.mts +24 -0
  217. package/dist/lib/modules/task-templates/resource.mjs +40 -0
  218. package/dist/lib/modules/task-templates/resource.mjs.map +1 -0
  219. package/dist/lib/modules/task-templates/schema.d.mts +22 -0
  220. package/dist/lib/modules/task-templates/schema.mjs +19 -0
  221. package/dist/lib/modules/task-templates/schema.mjs.map +1 -0
  222. package/dist/lib/modules/tasks/resource.d.mts +38 -0
  223. package/dist/lib/modules/tasks/resource.mjs +60 -0
  224. package/dist/lib/modules/tasks/resource.mjs.map +1 -0
  225. package/dist/lib/modules/tasks/schema.d.mts +45 -0
  226. package/dist/lib/modules/tasks/schema.mjs +43 -0
  227. package/dist/lib/modules/tasks/schema.mjs.map +1 -0
  228. package/dist/lib/modules/workspace/resource.d.mts +19 -0
  229. package/dist/lib/modules/workspace/resource.mjs +23 -0
  230. package/dist/lib/modules/workspace/resource.mjs.map +1 -0
  231. package/dist/lib/modules/workspace/schema.d.mts +23 -0
  232. package/dist/lib/modules/workspace/schema.mjs +21 -0
  233. package/dist/lib/modules/workspace/schema.mjs.map +1 -0
  234. package/dist/lib/pagination/paginate.d.mts +8 -0
  235. package/dist/lib/pagination/paginate.mjs +24 -0
  236. package/dist/lib/pagination/paginate.mjs.map +1 -0
  237. package/dist/logger/index.d.mts +26 -0
  238. package/dist/logger/index.mjs +45 -0
  239. package/dist/logger/index.mjs.map +1 -0
  240. package/dist/schemas/index.d.mts +32 -0
  241. package/dist/schemas/index.mjs +34 -0
  242. package/dist/schemas/shared/hex-color.d.mts +8 -0
  243. package/dist/schemas/shared/hex-color.mjs +7 -0
  244. package/dist/schemas/shared/hex-color.mjs.map +1 -0
  245. package/dist/schemas/shared/index.d.mts +3 -0
  246. package/dist/schemas/shared/index.mjs +4 -0
  247. package/dist/schemas/shared/membership-type.d.mts +9 -0
  248. package/dist/schemas/shared/membership-type.mjs +11 -0
  249. package/dist/schemas/shared/membership-type.mjs.map +1 -0
  250. package/dist/schemas/shared/token.d.mts +22 -0
  251. package/dist/schemas/shared/token.mjs +21 -0
  252. package/dist/schemas/shared/token.mjs.map +1 -0
  253. package/dist/token/assembly-token.d.mts +96 -0
  254. package/dist/token/assembly-token.mjs +117 -0
  255. package/dist/token/assembly-token.mjs.map +1 -0
  256. package/dist/token/crypto.mjs +98 -0
  257. package/dist/token/crypto.mjs.map +1 -0
  258. package/dist/token/index.d.mts +3 -0
  259. package/dist/token/index.mjs +3 -0
  260. package/dist/token/parse.d.mts +24 -0
  261. package/dist/token/parse.mjs +62 -0
  262. package/dist/token/parse.mjs.map +1 -0
  263. package/dist/transport/build-search-params.mjs +16 -0
  264. package/dist/transport/build-search-params.mjs.map +1 -0
  265. package/dist/transport/http.d.mts +14 -0
  266. package/dist/transport/http.mjs +142 -0
  267. package/dist/transport/http.mjs.map +1 -0
  268. package/dist/transport/parse-response.mjs +17 -0
  269. package/dist/transport/parse-response.mjs.map +1 -0
  270. package/dist/version.mjs +7 -0
  271. package/dist/version.mjs.map +1 -0
  272. package/package.json +93 -0
package/CLAUDE.md ADDED
@@ -0,0 +1,205 @@
1
+ # assembly-kit
2
+
3
+ TypeScript SDK for the Assembly platform. ESM-only, Node.js 18+ and Bun.
4
+
5
+ ## Quick Start
6
+
7
+ ```ts
8
+ import { createAssemblyKit, KitMode } from "assembly-kit";
9
+
10
+ // Local mode (default) — only apiKey required
11
+ const kit = createAssemblyKit({ apiKey: "your-key" });
12
+
13
+ // Local mode with workspaceId — compound key: workspaceId/apiKey
14
+ const kit = createAssemblyKit({ apiKey: "your-key", workspaceId: "ws-123" });
15
+
16
+ // Local mode with token — token parsed, compound key from token payload
17
+ const kit = createAssemblyKit({ apiKey: "your-key", token: encryptedToken });
18
+
19
+ // Marketplace mode — either token or workspaceId required
20
+ const kit = createAssemblyKit({
21
+ apiKey: "your-key",
22
+ token: encryptedToken,
23
+ kitMode: KitMode.Marketplace,
24
+ });
25
+ ```
26
+
27
+ - `kitMode: "local"` (default) → only `apiKey` required. `workspaceId` and `token` are optional.
28
+ - `kitMode: "marketplace"` → either `token` or `workspaceId` must be provided.
29
+
30
+ ## createAssemblyKit(options)
31
+
32
+ | Option | Type | Default | Description |
33
+ | ------------------- | ------------------------- | -------------------------- | ---------------------------------------------------------- |
34
+ | `apiKey` | `string` | — | Required. Assembly API key. |
35
+ | `token` | `string` | — | Encrypted token. Takes precedence over `workspaceId`. |
36
+ | `workspaceId` | `string` | — | Workspace ID. Required when `token` is not provided. |
37
+ | `kitMode` | `KitMode` | `"local"` | `"local"` or `"marketplace"`. See Quick Start above. |
38
+ | `validateResponses` | `boolean` | `true` | Validate all API responses through Zod schemas. |
39
+ | `baseUrl` | `string` | `https://api.assembly.com` | Base URL for all API requests. |
40
+ | `retryCount` | `number` | `2` | Number of retry attempts for retryable errors. |
41
+ | `requestsPerSecond` | `number` | `20` | Maximum requests per second (sliding-window rate limiter). |
42
+ | `fetch` | `typeof globalThis.fetch` | — | Injectable fetch function for testing. |
43
+
44
+ ## Resource Namespaces
45
+
46
+ Access API resources via `kit.<namespace>.<method>()`:
47
+
48
+ | Namespace | Methods |
49
+ | ----------------------- | ------------------------------------------------------------------ |
50
+ | `workspace` | `retrieve()` |
51
+ | `clients` | `list()` `retrieve()` `create()` `delete()` `listAll()` |
52
+ | `companies` | `list()` `retrieve()` `create()` `update()` `delete()` `listAll()` |
53
+ | `internalUsers` | `list()` `retrieve()` `listAll()` |
54
+ | `notes` | `list()` `retrieve()` `create()` `update()` `delete()` `listAll()` |
55
+ | `tasks` | `list()` `retrieve()` `create()` `update()` `delete()` `listAll()` |
56
+ | `taskTemplates` | `list()` `retrieve()` `listAll()` |
57
+ | `invoices` | `list()` `retrieve()` `create()` `listAll()` |
58
+ | `invoiceTemplates` | `list()` `listAll()` |
59
+ | `subscriptions` | `list()` `retrieve()` `create()` `cancel()` `listAll()` |
60
+ | `subscriptionTemplates` | `list()` `listAll()` |
61
+ | `payments` | `list()` `listAll()` |
62
+ | `products` | `list()` `retrieve()` `listAll()` |
63
+ | `prices` | `list()` `retrieve()` `listAll()` |
64
+ | `contracts` | `retrieve()` `send()` |
65
+ | `contractTemplates` | `list()` `retrieve()` |
66
+ | `forms` | `list()` `retrieve()` `listAll()` |
67
+ | `formResponses` | `list()` `create()` |
68
+ | `files` | `list()` `retrieve()` `delete()` `listAll()` |
69
+ | `fileChannels` | `list()` `retrieve()` `create()` `listAll()` |
70
+ | `messageChannels` | `list()` `retrieve()` `create()` `listAll()` |
71
+ | `messages` | `list()` `send()` `listAll()` |
72
+ | `events` | `list()` `retrieve()` `create()` `listAll()` |
73
+ | `notifications` | `list()` `create()` `delete()` `markRead()` `markUnread()` |
74
+ | `customFields` | `list()` |
75
+ | `customFieldOptions` | `list()` |
76
+ | `appConnections` | `list()` `create()` |
77
+ | `appInstalls` | `list()` `retrieve()` |
78
+
79
+ ## Pagination
80
+
81
+ `listAll()` auto-paginates and returns `Promise<T[]>`. For manual pagination use `list()` and handle `nextToken`:
82
+
83
+ ```ts
84
+ const allCompanies = await kit.companies.listAll();
85
+ const page = await kit.companies.list({ limit: 100 });
86
+ if (page.nextToken) {
87
+ const next = await kit.companies.list({ limit: 100, nextToken: page.nextToken });
88
+ }
89
+ ```
90
+
91
+ ## Typed Custom Fields
92
+
93
+ `createAssemblyKit` accepts optional generic parameters that type the
94
+ `customFields` shape returned from `kit.clients.*` and `kit.companies.*`:
95
+
96
+ ```ts
97
+ // Single shape applied to both clients and companies
98
+ const kit = createAssemblyKit<{ roles: string[] }>({ apiKey, workspaceId });
99
+ const client = await kit.clients.retrieve("id");
100
+ client.customFields; // { roles: string[] } | null | undefined
101
+
102
+ // Different shapes per resource
103
+ const kit = createAssemblyKit<{ roles: string[] }, { industry: string }>({
104
+ apiKey,
105
+ workspaceId,
106
+ });
107
+ ```
108
+
109
+ The generics only narrow types — runtime parsing still uses the loose
110
+ `Record<string, unknown>` schema, so unexpected fields won't throw.
111
+
112
+ ## Token Utilities
113
+
114
+ Standalone token decryption (not required for normal SDK usage):
115
+
116
+ ```ts
117
+ import { AssemblyToken, createToken } from "assembly-kit";
118
+
119
+ const token = new AssemblyToken({ token: encryptedHex, apiKey });
120
+ token.workspaceId; // string
121
+ token.clientId; // string | undefined
122
+ token.companyId; // string | undefined
123
+ token.internalUserId; // string | undefined
124
+ token.isClientUser; // boolean
125
+ token.isInternalUser; // boolean
126
+
127
+ const client = token.ensureIsClient(); // ClientTokenPayload (throws if not client)
128
+ const internal = token.ensureIsInternalUser(); // InternalUserTokenPayload (throws if not internal)
129
+
130
+ // Encrypt a payload into a token
131
+ const encrypted = createToken({
132
+ payload: { workspaceId: "ws-123", clientId: "cl-1", companyId: "co-1" },
133
+ apiKey,
134
+ });
135
+ ```
136
+
137
+ ## Error Handling
138
+
139
+ All errors extend `AssemblyError`. Import from `assembly-kit`:
140
+
141
+ ```ts
142
+ import {
143
+ AssemblyError, // base class (statusCode, details)
144
+ AssemblyNoTokenError, // 400 — token required but missing
145
+ AssemblyInvalidTokenError, // 401 — token decryption/validation failed
146
+ AssemblyUnauthorizedError, // 401 — API key rejected or identity assertion failed
147
+ AssemblyForbiddenError, // 403 — insufficient permissions
148
+ AssemblyNotFoundError, // 404 — resource not found
149
+ AssemblyValidationError, // 422 — request payload rejected
150
+ AssemblyRateLimitError, // 429 — rate limited (.retryAfter?: number)
151
+ AssemblyServerError, // 500 — server error
152
+ AssemblyResponseParseError, // 500 — Zod validation failed (.zodError)
153
+ AssemblyConnectionError, // 503 — network error
154
+ } from "assembly-kit";
155
+
156
+ try {
157
+ await kit.companies.retrieve(id);
158
+ } catch (err) {
159
+ if (err instanceof AssemblyRateLimitError) {
160
+ // err.retryAfter — seconds until retry
161
+ } else if (err instanceof AssemblyError) {
162
+ // err.message, err.statusCode, err.details
163
+ }
164
+ }
165
+ ```
166
+
167
+ ## Schemas
168
+
169
+ Zod 4 schemas and inferred types for all resources:
170
+
171
+ ```ts
172
+ import { ClientSchema, CompanySchema, TaskSchema } from "assembly-kit/schemas";
173
+ import type { Client, Company, Task } from "assembly-kit/schemas";
174
+
175
+ // Response schemas (paginated)
176
+ import { ClientsResponseSchema } from "assembly-kit/schemas";
177
+
178
+ // Request schemas
179
+ import { ClientCreateRequestSchema } from "assembly-kit/schemas";
180
+ ```
181
+
182
+ ## Multi-Workspace (React Server Components)
183
+
184
+ Use React `cache()` to deduplicate per request:
185
+
186
+ ```ts
187
+ import { cache } from "react";
188
+ import { createAssemblyKit } from "assembly-kit";
189
+
190
+ export const getAssemblyKit = cache((apiKey: string, workspaceId: string) =>
191
+ createAssemblyKit({ apiKey, workspaceId }),
192
+ );
193
+ ```
194
+
195
+ ## Entry Points
196
+
197
+ | Import path | Key exports |
198
+ | ------------------------ | --------------------------------------------------------------------------------------------------------- |
199
+ | `assembly-kit` | `createAssemblyKit`, `AssemblyKit`, errors, schemas, token utils |
200
+ | `assembly-kit/schemas` | All Zod schemas and inferred types |
201
+ | `assembly-kit/client` | `createAssemblyKit`, `AssemblyKit`, `AssemblyKitOptions` |
202
+ | `assembly-kit/errors` | All error classes |
203
+ | `assembly-kit/token` | `AssemblyToken`, `createToken` |
204
+ | `assembly-kit/logger` | `createLogger`, `logger` (requires pino peer dep) |
205
+ | `assembly-kit/bridge-ui` | `usePrimaryCta`, `useSecondaryCta`, `useActionsMenu` (requires react + @assembly-js/app-bridge peer deps) |
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 priosshrsth
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.