@elizaos/shared 2.0.0-alpha.538 → 2.0.0-beta.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 (563) hide show
  1. package/dist/api/chat-contracts.d.ts +2 -0
  2. package/dist/api/chat-contracts.d.ts.map +1 -0
  3. package/dist/api/chat-contracts.js +2 -0
  4. package/dist/api/chat-contracts.js.map +1 -0
  5. package/dist/api/http-helpers.d.ts +50 -0
  6. package/dist/api/http-helpers.d.ts.map +1 -0
  7. package/dist/api/http-helpers.js +168 -0
  8. package/dist/api/http-helpers.js.map +1 -0
  9. package/dist/api/route-helpers.d.ts +16 -0
  10. package/dist/api/route-helpers.d.ts.map +1 -0
  11. package/dist/api/route-helpers.js +2 -0
  12. package/dist/api/route-helpers.js.map +1 -0
  13. package/dist/cli/parse-duration.d.ts +5 -0
  14. package/dist/cli/parse-duration.d.ts.map +1 -0
  15. package/dist/cli/parse-duration.js +28 -0
  16. package/dist/cli/parse-duration.js.map +1 -0
  17. package/dist/config/allowed-hosts.d.ts +8 -0
  18. package/dist/config/allowed-hosts.d.ts.map +1 -0
  19. package/dist/config/allowed-hosts.js +44 -0
  20. package/dist/config/allowed-hosts.js.map +1 -0
  21. package/dist/config/api-key-prefix-hints.d.ts +25 -0
  22. package/dist/config/api-key-prefix-hints.d.ts.map +1 -0
  23. package/dist/config/api-key-prefix-hints.js +27 -0
  24. package/dist/config/api-key-prefix-hints.js.map +1 -0
  25. package/dist/config/app-config.d.ts +273 -0
  26. package/dist/config/app-config.d.ts.map +1 -0
  27. package/dist/config/app-config.js +32 -0
  28. package/dist/config/app-config.js.map +1 -0
  29. package/dist/config/app-manifest.d.ts +75 -0
  30. package/dist/config/app-manifest.d.ts.map +1 -0
  31. package/dist/config/app-manifest.js +109 -0
  32. package/dist/config/app-manifest.js.map +1 -0
  33. package/dist/config/boot-config-react.d.ts +5 -0
  34. package/dist/config/boot-config-react.d.ts.map +1 -0
  35. package/dist/config/boot-config-react.js +8 -0
  36. package/dist/config/boot-config-react.js.map +1 -0
  37. package/dist/config/boot-config-store.d.ts +74 -0
  38. package/dist/config/boot-config-store.d.ts.map +1 -0
  39. package/dist/config/boot-config-store.js +121 -0
  40. package/dist/config/boot-config-store.js.map +1 -0
  41. package/dist/config/boot-config.d.ts +6 -0
  42. package/dist/config/boot-config.d.ts.map +1 -0
  43. package/dist/config/boot-config.js +6 -0
  44. package/dist/config/boot-config.js.map +1 -0
  45. package/dist/config/branding-react.d.ts +4 -0
  46. package/dist/config/branding-react.d.ts.map +1 -0
  47. package/dist/config/branding-react.js +12 -0
  48. package/dist/config/branding-react.js.map +1 -0
  49. package/dist/config/branding.d.ts +53 -0
  50. package/dist/config/branding.d.ts.map +1 -0
  51. package/dist/config/branding.js +23 -0
  52. package/dist/config/branding.js.map +1 -0
  53. package/dist/config/cloud-only.d.ts +6 -0
  54. package/dist/config/cloud-only.d.ts.map +1 -0
  55. package/dist/config/cloud-only.js +16 -0
  56. package/dist/config/cloud-only.js.map +1 -0
  57. package/dist/config/config-catalog.d.ts +371 -0
  58. package/dist/config/config-catalog.d.ts.map +1 -0
  59. package/dist/config/config-catalog.js +710 -0
  60. package/dist/config/config-catalog.js.map +1 -0
  61. package/dist/config/config-paths.d.ts +11 -0
  62. package/dist/config/config-paths.d.ts.map +1 -0
  63. package/dist/config/config-paths.js +74 -0
  64. package/dist/config/config-paths.js.map +1 -0
  65. package/dist/config/config.d.ts +11 -0
  66. package/dist/config/config.d.ts.map +1 -0
  67. package/dist/config/config.js +23 -0
  68. package/dist/config/config.js.map +1 -0
  69. package/dist/config/distribution-profile.d.ts +16 -0
  70. package/dist/config/distribution-profile.d.ts.map +1 -0
  71. package/dist/config/distribution-profile.js +29 -0
  72. package/dist/config/distribution-profile.js.map +1 -0
  73. package/dist/config/env-vars.d.ts +2 -0
  74. package/dist/config/env-vars.d.ts.map +1 -0
  75. package/dist/config/env-vars.js +2 -0
  76. package/dist/config/env-vars.js.map +1 -0
  77. package/dist/config/index.d.ts +14 -0
  78. package/dist/config/index.d.ts.map +1 -0
  79. package/dist/config/index.js +17 -0
  80. package/dist/config/index.js.map +1 -0
  81. package/dist/config/plugin-auto-enable-engine.d.ts +4 -0
  82. package/dist/config/plugin-auto-enable-engine.d.ts.map +1 -0
  83. package/dist/config/plugin-auto-enable-engine.js +45 -0
  84. package/dist/config/plugin-auto-enable-engine.js.map +1 -0
  85. package/dist/config/plugin-auto-enable.d.ts +2 -0
  86. package/dist/config/plugin-auto-enable.d.ts.map +1 -0
  87. package/dist/config/plugin-auto-enable.js +8 -0
  88. package/dist/config/plugin-auto-enable.js.map +1 -0
  89. package/dist/config/plugin-manifest.d.ts +89 -0
  90. package/dist/config/plugin-manifest.d.ts.map +1 -0
  91. package/dist/config/plugin-manifest.js +272 -0
  92. package/dist/config/plugin-manifest.js.map +1 -0
  93. package/dist/config/plugin-ui-spec.d.ts +42 -0
  94. package/dist/config/plugin-ui-spec.d.ts.map +1 -0
  95. package/dist/config/plugin-ui-spec.js +257 -0
  96. package/dist/config/plugin-ui-spec.js.map +1 -0
  97. package/dist/config/runtime-mode.d.ts +54 -0
  98. package/dist/config/runtime-mode.d.ts.map +1 -0
  99. package/dist/config/runtime-mode.js +103 -0
  100. package/dist/config/runtime-mode.js.map +1 -0
  101. package/dist/config/runtime-overrides.d.ts +16 -0
  102. package/dist/config/runtime-overrides.d.ts.map +1 -0
  103. package/dist/config/runtime-overrides.js +49 -0
  104. package/dist/config/runtime-overrides.js.map +1 -0
  105. package/dist/config/schema.d.ts +7 -0
  106. package/dist/config/schema.d.ts.map +1 -0
  107. package/dist/config/schema.js +30 -0
  108. package/dist/config/schema.js.map +1 -0
  109. package/{config → dist/config}/types.eliza.d.ts +16 -38
  110. package/dist/config/types.eliza.d.ts.map +1 -0
  111. package/{config → dist/config}/types.messages.d.ts +1 -1
  112. package/{config → dist/config}/types.tools.d.ts +1 -1
  113. package/dist/config/ui-spec.d.ts +164 -0
  114. package/dist/config/ui-spec.d.ts.map +1 -0
  115. package/dist/config/ui-spec.js +14 -0
  116. package/dist/config/ui-spec.js.map +1 -0
  117. package/dist/config/wechat-config.d.ts +2 -0
  118. package/dist/config/wechat-config.d.ts.map +1 -0
  119. package/dist/config/wechat-config.js +2 -0
  120. package/dist/config/wechat-config.js.map +1 -0
  121. package/dist/config/zod-schema.agent-runtime.d.ts +1087 -0
  122. package/dist/config/zod-schema.agent-runtime.d.ts.map +1 -0
  123. package/dist/config/zod-schema.agent-runtime.js +764 -0
  124. package/dist/config/zod-schema.agent-runtime.js.map +1 -0
  125. package/dist/config/zod-schema.core.d.ts +1048 -0
  126. package/dist/config/zod-schema.core.d.ts.map +1 -0
  127. package/dist/config/zod-schema.core.js +707 -0
  128. package/dist/config/zod-schema.core.js.map +1 -0
  129. package/{connector-cred-types.d.ts → dist/connector-cred-types.d.ts} +3 -3
  130. package/{connector-cred-types.js → dist/connector-cred-types.js} +4 -4
  131. package/dist/connectors.d.ts +2 -0
  132. package/dist/connectors.d.ts.map +1 -0
  133. package/dist/connectors.js +2 -0
  134. package/dist/connectors.js.map +1 -0
  135. package/{contracts → dist/contracts}/apps.d.ts +8 -1
  136. package/dist/contracts/apps.d.ts.map +1 -0
  137. package/{contracts → dist/contracts}/apps.js +9 -10
  138. package/dist/contracts/apps.js.map +1 -0
  139. package/{contracts → dist/contracts}/awareness.d.ts +1 -1
  140. package/{contracts → dist/contracts}/config.d.ts +52 -4
  141. package/dist/contracts/config.d.ts.map +1 -0
  142. package/dist/contracts/feature-result.d.ts +24 -0
  143. package/dist/contracts/feature-result.d.ts.map +1 -0
  144. package/dist/contracts/feature-result.js +7 -0
  145. package/dist/contracts/feature-result.js.map +1 -0
  146. package/dist/contracts/health.d.ts +30 -0
  147. package/dist/contracts/health.d.ts.map +1 -0
  148. package/dist/contracts/health.js +29 -0
  149. package/dist/contracts/health.js.map +1 -0
  150. package/{contracts → dist/contracts}/index.d.ts +2 -1
  151. package/{contracts → dist/contracts}/index.d.ts.map +1 -1
  152. package/{contracts → dist/contracts}/index.js +2 -1
  153. package/dist/contracts/index.js.map +1 -0
  154. package/{contracts → dist/contracts}/lifeops.d.ts +410 -3
  155. package/dist/contracts/lifeops.d.ts.map +1 -0
  156. package/{contracts → dist/contracts}/lifeops.js +35 -5
  157. package/dist/contracts/lifeops.js.map +1 -0
  158. package/{contracts → dist/contracts}/onboarding.d.ts +85 -6
  159. package/dist/contracts/onboarding.d.ts.map +1 -0
  160. package/{contracts → dist/contracts}/onboarding.js +99 -13
  161. package/{contracts → dist/contracts}/onboarding.js.map +1 -1
  162. package/dist/contracts/permissions.d.ts +121 -0
  163. package/dist/contracts/permissions.d.ts.map +1 -0
  164. package/dist/contracts/permissions.js +31 -0
  165. package/dist/contracts/permissions.js.map +1 -0
  166. package/{contracts → dist/contracts}/service-routing.d.ts +3 -11
  167. package/dist/contracts/service-routing.d.ts.map +1 -0
  168. package/{contracts → dist/contracts}/service-routing.js +10 -11
  169. package/dist/contracts/service-routing.js.map +1 -0
  170. package/{contracts → dist/contracts}/wallet.d.ts +7 -0
  171. package/dist/contracts/wallet.d.ts.map +1 -0
  172. package/dist/contracts/wallet.js +194 -0
  173. package/dist/contracts/wallet.js.map +1 -0
  174. package/{env-utils.impl.d.ts → dist/env-utils.d.ts} +1 -1
  175. package/dist/env-utils.d.ts.map +1 -0
  176. package/{env-utils.impl.js → dist/env-utils.js} +4 -1
  177. package/dist/env-utils.js.map +1 -0
  178. package/dist/events/index.d.ts +62 -0
  179. package/dist/events/index.d.ts.map +1 -0
  180. package/dist/events/index.js +52 -0
  181. package/dist/events/index.js.map +1 -0
  182. package/dist/i18n/generated/validation-keyword-data.d.ts +3080 -0
  183. package/dist/i18n/generated/validation-keyword-data.d.ts.map +1 -0
  184. package/dist/i18n/generated/validation-keyword-data.js +3084 -0
  185. package/dist/i18n/generated/validation-keyword-data.js.map +1 -0
  186. package/dist/index.d.ts +93 -0
  187. package/dist/index.d.ts.map +1 -0
  188. package/dist/index.js +105 -0
  189. package/dist/index.js.map +1 -0
  190. package/dist/local-inference/index.d.ts +16 -0
  191. package/dist/local-inference/index.d.ts.map +1 -0
  192. package/dist/local-inference/index.js +16 -0
  193. package/dist/local-inference/index.js.map +1 -0
  194. package/dist/local-inference/paths.d.ts +24 -0
  195. package/dist/local-inference/paths.d.ts.map +1 -0
  196. package/dist/local-inference/paths.js +40 -0
  197. package/dist/local-inference/paths.js.map +1 -0
  198. package/dist/local-inference/routing-preferences.d.ts +31 -0
  199. package/dist/local-inference/routing-preferences.d.ts.map +1 -0
  200. package/dist/local-inference/routing-preferences.js +73 -0
  201. package/dist/local-inference/routing-preferences.js.map +1 -0
  202. package/dist/local-inference/types.d.ts +62 -0
  203. package/dist/local-inference/types.d.ts.map +1 -0
  204. package/dist/local-inference/types.js +25 -0
  205. package/dist/local-inference/types.js.map +1 -0
  206. package/dist/local-inference/verify.d.ts +39 -0
  207. package/dist/local-inference/verify.d.ts.map +1 -0
  208. package/dist/local-inference/verify.js +105 -0
  209. package/dist/local-inference/verify.js.map +1 -0
  210. package/dist/package.json +50 -0
  211. package/dist/platform/is-native-server.d.ts +9 -0
  212. package/dist/platform/is-native-server.d.ts.map +1 -0
  213. package/dist/platform/is-native-server.js +12 -0
  214. package/dist/platform/is-native-server.js.map +1 -0
  215. package/{runtime-env.js → dist/runtime-env.js} +2 -2
  216. package/{runtime-env.js.map → dist/runtime-env.js.map} +1 -1
  217. package/{self-edit.js → dist/self-edit.js} +1 -1
  218. package/{self-edit.js.map → dist/self-edit.js.map} +1 -1
  219. package/{settings-debug.d.ts.map → dist/settings-debug.d.ts.map} +1 -1
  220. package/{settings-debug.js → dist/settings-debug.js} +45 -38
  221. package/dist/settings-debug.js.map +1 -0
  222. package/{spoken-text.js → dist/spoken-text.js} +1 -1
  223. package/{spoken-text.js.map → dist/spoken-text.js.map} +1 -1
  224. package/dist/terminal/links.d.ts +9 -0
  225. package/dist/terminal/links.d.ts.map +1 -0
  226. package/dist/terminal/links.js +21 -0
  227. package/dist/terminal/links.js.map +1 -0
  228. package/dist/terminal/palette.d.ts +11 -0
  229. package/dist/terminal/palette.d.ts.map +1 -0
  230. package/dist/terminal/palette.js +13 -0
  231. package/dist/terminal/palette.js.map +1 -0
  232. package/dist/terminal/theme.d.ts +17 -0
  233. package/dist/terminal/theme.d.ts.map +1 -0
  234. package/dist/terminal/theme.js +25 -0
  235. package/dist/terminal/theme.js.map +1 -0
  236. package/dist/test-support/process-helpers.d.ts +13 -0
  237. package/dist/test-support/process-helpers.d.ts.map +1 -0
  238. package/dist/test-support/process-helpers.js +24 -0
  239. package/dist/test-support/process-helpers.js.map +1 -0
  240. package/dist/test-support/test-helpers.d.ts +112 -0
  241. package/dist/test-support/test-helpers.d.ts.map +1 -0
  242. package/dist/test-support/test-helpers.js +416 -0
  243. package/dist/test-support/test-helpers.js.map +1 -0
  244. package/{type-guards.d.ts → dist/type-guards.d.ts} +1 -0
  245. package/dist/type-guards.d.ts.map +1 -0
  246. package/{type-guards.js → dist/type-guards.js} +6 -0
  247. package/dist/type-guards.js.map +1 -0
  248. package/dist/types/index.d.ts +655 -0
  249. package/dist/types/index.d.ts.map +1 -0
  250. package/dist/types/index.js +5 -0
  251. package/dist/types/index.js.map +1 -0
  252. package/dist/utils/asset-url.d.ts +24 -0
  253. package/dist/utils/asset-url.d.ts.map +1 -0
  254. package/dist/utils/asset-url.js +151 -0
  255. package/dist/utils/asset-url.js.map +1 -0
  256. package/dist/utils/assistant-text.d.ts +2 -0
  257. package/dist/utils/assistant-text.d.ts.map +1 -0
  258. package/dist/utils/assistant-text.js +168 -0
  259. package/dist/utils/assistant-text.js.map +1 -0
  260. package/dist/utils/browser-tab-kit-types.d.ts +81 -0
  261. package/dist/utils/browser-tab-kit-types.d.ts.map +1 -0
  262. package/dist/utils/browser-tab-kit-types.js +23 -0
  263. package/dist/utils/browser-tab-kit-types.js.map +1 -0
  264. package/dist/utils/browser-tabs-renderer-registry.d.ts +56 -0
  265. package/dist/utils/browser-tabs-renderer-registry.d.ts.map +1 -0
  266. package/dist/utils/browser-tabs-renderer-registry.js +962 -0
  267. package/{i18n/generated/validation-keyword-data.d.ts.map → dist/utils/browser-tabs-renderer-registry.js.map} +1 -1
  268. package/dist/utils/character-message-examples.d.ts +7 -0
  269. package/dist/utils/character-message-examples.d.ts.map +1 -0
  270. package/dist/utils/character-message-examples.js +123 -0
  271. package/dist/utils/character-message-examples.js.map +1 -0
  272. package/dist/utils/cloud-status.d.ts +3 -0
  273. package/dist/utils/cloud-status.d.ts.map +1 -0
  274. package/dist/utils/cloud-status.js +11 -0
  275. package/dist/utils/cloud-status.js.map +1 -0
  276. package/dist/utils/documents-upload-image.d.ts +27 -0
  277. package/dist/utils/documents-upload-image.d.ts.map +1 -0
  278. package/dist/utils/documents-upload-image.js +147 -0
  279. package/dist/utils/documents-upload-image.js.map +1 -0
  280. package/dist/utils/eliza-cloud-model-route.d.ts +3 -0
  281. package/dist/utils/eliza-cloud-model-route.d.ts.map +1 -0
  282. package/dist/utils/eliza-cloud-model-route.js +10 -0
  283. package/dist/utils/eliza-cloud-model-route.js.map +1 -0
  284. package/dist/utils/eliza-globals.d.ts +13 -0
  285. package/dist/utils/eliza-globals.d.ts.map +1 -0
  286. package/dist/utils/eliza-globals.js +49 -0
  287. package/dist/utils/eliza-globals.js.map +1 -0
  288. package/dist/utils/eliza-root.d.ts +9 -0
  289. package/dist/utils/eliza-root.d.ts.map +1 -0
  290. package/dist/utils/eliza-root.js +102 -0
  291. package/dist/utils/eliza-root.js.map +1 -0
  292. package/dist/utils/env.d.ts +34 -0
  293. package/dist/utils/env.d.ts.map +1 -0
  294. package/dist/utils/env.js +131 -0
  295. package/dist/utils/env.js.map +1 -0
  296. package/dist/utils/errors.d.ts +13 -0
  297. package/dist/utils/errors.d.ts.map +1 -0
  298. package/dist/utils/errors.js +26 -0
  299. package/dist/utils/errors.js.map +1 -0
  300. package/dist/utils/exec-safety.d.ts +2 -0
  301. package/dist/utils/exec-safety.d.ts.map +1 -0
  302. package/dist/utils/exec-safety.js +22 -0
  303. package/dist/utils/exec-safety.js.map +1 -0
  304. package/dist/utils/format.d.ts +66 -0
  305. package/dist/utils/format.d.ts.map +1 -0
  306. package/dist/utils/format.js +122 -0
  307. package/dist/utils/format.js.map +1 -0
  308. package/dist/utils/index.d.ts +12 -0
  309. package/dist/utils/index.d.ts.map +1 -0
  310. package/dist/utils/index.js +12 -0
  311. package/dist/utils/index.js.map +1 -0
  312. package/dist/utils/labels.d.ts +6 -0
  313. package/dist/utils/labels.d.ts.map +1 -0
  314. package/dist/utils/labels.js +42 -0
  315. package/dist/utils/labels.js.map +1 -0
  316. package/dist/utils/log-prefix.d.ts +2 -0
  317. package/dist/utils/log-prefix.d.ts.map +1 -0
  318. package/dist/utils/log-prefix.js +54 -0
  319. package/dist/utils/log-prefix.js.map +1 -0
  320. package/dist/utils/name-tokens.d.ts +24 -0
  321. package/dist/utils/name-tokens.d.ts.map +1 -0
  322. package/dist/utils/name-tokens.js +37 -0
  323. package/dist/utils/name-tokens.js.map +1 -0
  324. package/dist/utils/namespace-defaults.d.ts +6 -0
  325. package/dist/utils/namespace-defaults.d.ts.map +1 -0
  326. package/dist/utils/namespace-defaults.js +16 -0
  327. package/dist/utils/namespace-defaults.js.map +1 -0
  328. package/dist/utils/number-parsing.d.ts +26 -0
  329. package/dist/utils/number-parsing.d.ts.map +1 -0
  330. package/dist/utils/number-parsing.js +52 -0
  331. package/dist/utils/number-parsing.js.map +1 -0
  332. package/dist/utils/owner-name.d.ts +3 -0
  333. package/dist/utils/owner-name.d.ts.map +1 -0
  334. package/dist/utils/owner-name.js +8 -0
  335. package/dist/utils/owner-name.js.map +1 -0
  336. package/dist/utils/permission-deep-links.d.ts +34 -0
  337. package/dist/utils/permission-deep-links.d.ts.map +1 -0
  338. package/dist/utils/permission-deep-links.js +84 -0
  339. package/dist/utils/permission-deep-links.js.map +1 -0
  340. package/dist/utils/rate-limiter.d.ts +32 -0
  341. package/dist/utils/rate-limiter.d.ts.map +1 -0
  342. package/dist/utils/rate-limiter.js +53 -0
  343. package/dist/utils/rate-limiter.js.map +1 -0
  344. package/dist/utils/serialise.d.ts +12 -0
  345. package/dist/utils/serialise.d.ts.map +1 -0
  346. package/dist/utils/serialise.js +22 -0
  347. package/dist/utils/serialise.js.map +1 -0
  348. package/dist/utils/sql-compat.d.ts +10 -0
  349. package/dist/utils/sql-compat.d.ts.map +1 -0
  350. package/dist/utils/sql-compat.js +112 -0
  351. package/dist/utils/sql-compat.js.map +1 -0
  352. package/dist/utils/streaming-text.d.ts +9 -0
  353. package/dist/utils/streaming-text.d.ts.map +1 -0
  354. package/dist/utils/streaming-text.js +113 -0
  355. package/dist/utils/streaming-text.js.map +1 -0
  356. package/dist/utils/subscription-auth.d.ts +9 -0
  357. package/dist/utils/subscription-auth.d.ts.map +1 -0
  358. package/dist/utils/subscription-auth.js +49 -0
  359. package/dist/utils/subscription-auth.js.map +1 -0
  360. package/dist/utils/trajectory-format.d.ts +6 -0
  361. package/dist/utils/trajectory-format.d.ts.map +1 -0
  362. package/dist/utils/trajectory-format.js +44 -0
  363. package/dist/utils/trajectory-format.js.map +1 -0
  364. package/dist/utils/tts-debug.d.ts +9 -0
  365. package/dist/utils/tts-debug.d.ts.map +1 -0
  366. package/dist/utils/tts-debug.js +70 -0
  367. package/dist/utils/tts-debug.js.map +1 -0
  368. package/dist/voice.d.ts +40 -0
  369. package/dist/voice.d.ts.map +1 -0
  370. package/dist/voice.js +296 -0
  371. package/dist/voice.js.map +1 -0
  372. package/package.json +33 -179
  373. package/config/types.eliza.d.ts.map +0 -1
  374. package/connectors.d.ts +0 -13
  375. package/connectors.d.ts.map +0 -1
  376. package/connectors.js +0 -97
  377. package/connectors.js.map +0 -1
  378. package/contracts/apps.d.ts.map +0 -1
  379. package/contracts/apps.js.map +0 -1
  380. package/contracts/config.d.ts.map +0 -1
  381. package/contracts/index.js.map +0 -1
  382. package/contracts/lifeops-extensions.d.ts +0 -340
  383. package/contracts/lifeops-extensions.d.ts.map +0 -1
  384. package/contracts/lifeops-extensions.js +0 -37
  385. package/contracts/lifeops-extensions.js.map +0 -1
  386. package/contracts/lifeops.d.ts.map +0 -1
  387. package/contracts/lifeops.js.map +0 -1
  388. package/contracts/onboarding.d.ts.map +0 -1
  389. package/contracts/permissions.d.ts +0 -39
  390. package/contracts/permissions.d.ts.map +0 -1
  391. package/contracts/permissions.js +0 -5
  392. package/contracts/permissions.js.map +0 -1
  393. package/contracts/scratchpad.d.ts +0 -136
  394. package/contracts/scratchpad.d.ts.map +0 -1
  395. package/contracts/scratchpad.js +0 -91
  396. package/contracts/scratchpad.js.map +0 -1
  397. package/contracts/service-routing.d.ts.map +0 -1
  398. package/contracts/service-routing.js.map +0 -1
  399. package/contracts/wallet.d.ts.map +0 -1
  400. package/contracts/wallet.js +0 -61
  401. package/contracts/wallet.js.map +0 -1
  402. package/eliza-core-roles.d.ts +0 -79
  403. package/eliza-core-roles.d.ts.map +0 -1
  404. package/eliza-core-roles.js +0 -600
  405. package/eliza-core-roles.js.map +0 -1
  406. package/env-utils.d.ts +0 -5
  407. package/env-utils.d.ts.map +0 -1
  408. package/env-utils.impl.d.ts.map +0 -1
  409. package/env-utils.impl.js.map +0 -1
  410. package/env-utils.js +0 -5
  411. package/env-utils.js.map +0 -1
  412. package/i18n/generated/validation-keyword-data.d.ts +0 -1091
  413. package/i18n/generated/validation-keyword-data.js +0 -1095
  414. package/i18n/generated/validation-keyword-data.js.map +0 -1
  415. package/index.d.ts +0 -28
  416. package/index.d.ts.map +0 -1
  417. package/index.js +0 -40
  418. package/index.js.map +0 -1
  419. package/settings-debug.js.map +0 -1
  420. package/type-guards.d.ts.map +0 -1
  421. package/type-guards.js.map +0 -1
  422. package/types.d.ts +0 -27
  423. package/types.d.ts.map +0 -1
  424. package/types.js +0 -2
  425. package/types.js.map +0 -1
  426. /package/{app-hero-art.d.ts → dist/app-hero-art.d.ts} +0 -0
  427. /package/{app-hero-art.d.ts.map → dist/app-hero-art.d.ts.map} +0 -0
  428. /package/{app-hero-art.js → dist/app-hero-art.js} +0 -0
  429. /package/{app-hero-art.js.map → dist/app-hero-art.js.map} +0 -0
  430. /package/{awareness → dist/awareness}/index.d.ts +0 -0
  431. /package/{awareness → dist/awareness}/index.d.ts.map +0 -0
  432. /package/{awareness → dist/awareness}/index.js +0 -0
  433. /package/{awareness → dist/awareness}/index.js.map +0 -0
  434. /package/{awareness → dist/awareness}/registry.d.ts +0 -0
  435. /package/{awareness → dist/awareness}/registry.d.ts.map +0 -0
  436. /package/{awareness → dist/awareness}/registry.js +0 -0
  437. /package/{awareness → dist/awareness}/registry.js.map +0 -0
  438. /package/{config → dist/config}/types.agent-defaults.d.ts +0 -0
  439. /package/{config → dist/config}/types.agent-defaults.d.ts.map +0 -0
  440. /package/{config → dist/config}/types.agent-defaults.js +0 -0
  441. /package/{config → dist/config}/types.agent-defaults.js.map +0 -0
  442. /package/{config → dist/config}/types.agents.d.ts +0 -0
  443. /package/{config → dist/config}/types.agents.d.ts.map +0 -0
  444. /package/{config → dist/config}/types.agents.js +0 -0
  445. /package/{config → dist/config}/types.agents.js.map +0 -0
  446. /package/{config → dist/config}/types.d.ts +0 -0
  447. /package/{config → dist/config}/types.d.ts.map +0 -0
  448. /package/{config → dist/config}/types.eliza.js +0 -0
  449. /package/{config → dist/config}/types.eliza.js.map +0 -0
  450. /package/{config → dist/config}/types.gateway.d.ts +0 -0
  451. /package/{config → dist/config}/types.gateway.d.ts.map +0 -0
  452. /package/{config → dist/config}/types.gateway.js +0 -0
  453. /package/{config → dist/config}/types.gateway.js.map +0 -0
  454. /package/{config → dist/config}/types.hooks.d.ts +0 -0
  455. /package/{config → dist/config}/types.hooks.d.ts.map +0 -0
  456. /package/{config → dist/config}/types.hooks.js +0 -0
  457. /package/{config → dist/config}/types.hooks.js.map +0 -0
  458. /package/{config → dist/config}/types.js +0 -0
  459. /package/{config → dist/config}/types.js.map +0 -0
  460. /package/{config → dist/config}/types.messages.d.ts.map +0 -0
  461. /package/{config → dist/config}/types.messages.js +0 -0
  462. /package/{config → dist/config}/types.messages.js.map +0 -0
  463. /package/{config → dist/config}/types.tools.d.ts.map +0 -0
  464. /package/{config → dist/config}/types.tools.js +0 -0
  465. /package/{config → dist/config}/types.tools.js.map +0 -0
  466. /package/{connector-cred-types.d.ts.map → dist/connector-cred-types.d.ts.map} +0 -0
  467. /package/{connector-cred-types.js.map → dist/connector-cred-types.js.map} +0 -0
  468. /package/{contracts → dist/contracts}/awareness.d.ts.map +0 -0
  469. /package/{contracts → dist/contracts}/awareness.js +0 -0
  470. /package/{contracts → dist/contracts}/awareness.js.map +0 -0
  471. /package/{contracts → dist/contracts}/cloud-topology.d.ts +0 -0
  472. /package/{contracts → dist/contracts}/cloud-topology.d.ts.map +0 -0
  473. /package/{contracts → dist/contracts}/cloud-topology.js +0 -0
  474. /package/{contracts → dist/contracts}/cloud-topology.js.map +0 -0
  475. /package/{contracts → dist/contracts}/config.js +0 -0
  476. /package/{contracts → dist/contracts}/config.js.map +0 -0
  477. /package/{contracts → dist/contracts}/content-pack.d.ts +0 -0
  478. /package/{contracts → dist/contracts}/content-pack.d.ts.map +0 -0
  479. /package/{contracts → dist/contracts}/content-pack.js +0 -0
  480. /package/{contracts → dist/contracts}/content-pack.js.map +0 -0
  481. /package/{contracts → dist/contracts}/drop.d.ts +0 -0
  482. /package/{contracts → dist/contracts}/drop.d.ts.map +0 -0
  483. /package/{contracts → dist/contracts}/drop.js +0 -0
  484. /package/{contracts → dist/contracts}/drop.js.map +0 -0
  485. /package/{contracts → dist/contracts}/inbox.d.ts +0 -0
  486. /package/{contracts → dist/contracts}/inbox.d.ts.map +0 -0
  487. /package/{contracts → dist/contracts}/inbox.js +0 -0
  488. /package/{contracts → dist/contracts}/inbox.js.map +0 -0
  489. /package/{contracts → dist/contracts}/lifeops-connector-degradation.d.ts +0 -0
  490. /package/{contracts → dist/contracts}/lifeops-connector-degradation.d.ts.map +0 -0
  491. /package/{contracts → dist/contracts}/lifeops-connector-degradation.js +0 -0
  492. /package/{contracts → dist/contracts}/lifeops-connector-degradation.js.map +0 -0
  493. /package/{contracts → dist/contracts}/theme.d.ts +0 -0
  494. /package/{contracts → dist/contracts}/theme.d.ts.map +0 -0
  495. /package/{contracts → dist/contracts}/theme.js +0 -0
  496. /package/{contracts → dist/contracts}/theme.js.map +0 -0
  497. /package/{contracts → dist/contracts}/verification.d.ts +0 -0
  498. /package/{contracts → dist/contracts}/verification.d.ts.map +0 -0
  499. /package/{contracts → dist/contracts}/verification.js +0 -0
  500. /package/{contracts → dist/contracts}/verification.js.map +0 -0
  501. /package/{dev-settings-banner-style.d.ts → dist/dev-settings-banner-style.d.ts} +0 -0
  502. /package/{dev-settings-banner-style.d.ts.map → dist/dev-settings-banner-style.d.ts.map} +0 -0
  503. /package/{dev-settings-banner-style.js → dist/dev-settings-banner-style.js} +0 -0
  504. /package/{dev-settings-banner-style.js.map → dist/dev-settings-banner-style.js.map} +0 -0
  505. /package/{dev-settings-figlet-heading.d.ts → dist/dev-settings-figlet-heading.d.ts} +0 -0
  506. /package/{dev-settings-figlet-heading.d.ts.map → dist/dev-settings-figlet-heading.d.ts.map} +0 -0
  507. /package/{dev-settings-figlet-heading.js → dist/dev-settings-figlet-heading.js} +0 -0
  508. /package/{dev-settings-figlet-heading.js.map → dist/dev-settings-figlet-heading.js.map} +0 -0
  509. /package/{dev-settings-table.d.ts → dist/dev-settings-table.d.ts} +0 -0
  510. /package/{dev-settings-table.d.ts.map → dist/dev-settings-table.d.ts.map} +0 -0
  511. /package/{dev-settings-table.js → dist/dev-settings-table.js} +0 -0
  512. /package/{dev-settings-table.js.map → dist/dev-settings-table.js.map} +0 -0
  513. /package/{format-error.d.ts → dist/format-error.d.ts} +0 -0
  514. /package/{format-error.d.ts.map → dist/format-error.d.ts.map} +0 -0
  515. /package/{format-error.js → dist/format-error.js} +0 -0
  516. /package/{format-error.js.map → dist/format-error.js.map} +0 -0
  517. /package/{i18n → dist/i18n}/keyword-matching.d.ts +0 -0
  518. /package/{i18n → dist/i18n}/keyword-matching.d.ts.map +0 -0
  519. /package/{i18n → dist/i18n}/keyword-matching.js +0 -0
  520. /package/{i18n → dist/i18n}/keyword-matching.js.map +0 -0
  521. /package/{i18n → dist/i18n}/validation-keywords.d.ts +0 -0
  522. /package/{i18n → dist/i18n}/validation-keywords.d.ts.map +0 -0
  523. /package/{i18n → dist/i18n}/validation-keywords.js +0 -0
  524. /package/{i18n → dist/i18n}/validation-keywords.js.map +0 -0
  525. /package/{onboarding-presets.characters.d.ts → dist/onboarding-presets.characters.d.ts} +0 -0
  526. /package/{onboarding-presets.characters.d.ts.map → dist/onboarding-presets.characters.d.ts.map} +0 -0
  527. /package/{onboarding-presets.characters.js → dist/onboarding-presets.characters.js} +0 -0
  528. /package/{onboarding-presets.characters.js.map → dist/onboarding-presets.characters.js.map} +0 -0
  529. /package/{onboarding-presets.d.ts → dist/onboarding-presets.d.ts} +0 -0
  530. /package/{onboarding-presets.d.ts.map → dist/onboarding-presets.d.ts.map} +0 -0
  531. /package/{onboarding-presets.js → dist/onboarding-presets.js} +0 -0
  532. /package/{onboarding-presets.js.map → dist/onboarding-presets.js.map} +0 -0
  533. /package/{onboarding-presets.shared.d.ts → dist/onboarding-presets.shared.d.ts} +0 -0
  534. /package/{onboarding-presets.shared.d.ts.map → dist/onboarding-presets.shared.d.ts.map} +0 -0
  535. /package/{onboarding-presets.shared.js → dist/onboarding-presets.shared.js} +0 -0
  536. /package/{onboarding-presets.shared.js.map → dist/onboarding-presets.shared.js.map} +0 -0
  537. /package/{recent-messages-state.d.ts → dist/recent-messages-state.d.ts} +0 -0
  538. /package/{recent-messages-state.d.ts.map → dist/recent-messages-state.d.ts.map} +0 -0
  539. /package/{recent-messages-state.js → dist/recent-messages-state.js} +0 -0
  540. /package/{recent-messages-state.js.map → dist/recent-messages-state.js.map} +0 -0
  541. /package/{restart.d.ts → dist/restart.d.ts} +0 -0
  542. /package/{restart.d.ts.map → dist/restart.d.ts.map} +0 -0
  543. /package/{restart.js → dist/restart.js} +0 -0
  544. /package/{restart.js.map → dist/restart.js.map} +0 -0
  545. /package/{runtime-env.d.ts → dist/runtime-env.d.ts} +0 -0
  546. /package/{runtime-env.d.ts.map → dist/runtime-env.d.ts.map} +0 -0
  547. /package/{self-edit.d.ts → dist/self-edit.d.ts} +0 -0
  548. /package/{self-edit.d.ts.map → dist/self-edit.d.ts.map} +0 -0
  549. /package/{settings-debug.d.ts → dist/settings-debug.d.ts} +0 -0
  550. /package/{spoken-text.d.ts → dist/spoken-text.d.ts} +0 -0
  551. /package/{spoken-text.d.ts.map → dist/spoken-text.d.ts.map} +0 -0
  552. /package/{themes → dist/themes}/index.d.ts +0 -0
  553. /package/{themes → dist/themes}/index.d.ts.map +0 -0
  554. /package/{themes → dist/themes}/index.js +0 -0
  555. /package/{themes → dist/themes}/index.js.map +0 -0
  556. /package/{themes → dist/themes}/presets.d.ts +0 -0
  557. /package/{themes → dist/themes}/presets.d.ts.map +0 -0
  558. /package/{themes → dist/themes}/presets.js +0 -0
  559. /package/{themes → dist/themes}/presets.js.map +0 -0
  560. /package/{validation-keywords.d.ts → dist/validation-keywords.d.ts} +0 -0
  561. /package/{validation-keywords.d.ts.map → dist/validation-keywords.d.ts.map} +0 -0
  562. /package/{validation-keywords.js → dist/validation-keywords.js} +0 -0
  563. /package/{validation-keywords.js.map → dist/validation-keywords.js.map} +0 -0
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Replace un-substituted `{{name}}` / `{{agentName}}` tokens with the
3
+ * actual character name. Handles legacy persisted templates from onboarding.
4
+ */
5
+ export function replaceNameTokens(text, name) {
6
+ return text
7
+ .replace(/\{\{name\}\}/g, name)
8
+ .replace(/\{\{agentName\}\}/g, name);
9
+ }
10
+ /**
11
+ * Reverse of `replaceNameTokens` — rewrite whole-word occurrences of the
12
+ * given literal character name back into `{{name}}` tokens so that a
13
+ * later rename continues to propagate through every text field.
14
+ *
15
+ * Rules:
16
+ * - Case-sensitive, whole-word match (word boundaries on both sides).
17
+ * - Names under 2 characters are ignored; the tokenizer is not
18
+ * meaningful for single-letter names and risks destroying prose.
19
+ * - Idempotent: re-running on already-tokenized text is a no-op because
20
+ * `{{name}}` does not contain the literal name.
21
+ * - Non-destructive on empty input or empty name.
22
+ *
23
+ * @param text The text to scan.
24
+ * @param name The literal character name to tokenize (e.g. "Momo").
25
+ * @returns The text with whole-word occurrences replaced by `{{name}}`.
26
+ */
27
+ export function tokenizeNameOccurrences(text, name) {
28
+ if (!text || !name)
29
+ return text;
30
+ const trimmed = name.trim();
31
+ if (trimmed.length < 2)
32
+ return text;
33
+ const escaped = trimmed.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
34
+ const pattern = new RegExp(`\\b${escaped}\\b`, "g");
35
+ return text.replace(pattern, "{{name}}");
36
+ }
37
+ //# sourceMappingURL=name-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name-tokens.js","sourceRoot":"","sources":["../../src/utils/name-tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,IAAY;IAC1D,OAAO,IAAI;SACR,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC;SAC9B,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,IAAY;IAChE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,OAAO,KAAK,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * App entrypoints should consistently default to the app namespace even
3
+ * when they bypass the CLI/profile bootstrap path.
4
+ */
5
+ export declare function ensureNamespaceDefaults(env?: NodeJS.ProcessEnv): void;
6
+ //# sourceMappingURL=namespace-defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace-defaults.d.ts","sourceRoot":"","sources":["../../src/utils/namespace-defaults.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,IAAI,CAIN"}
@@ -0,0 +1,16 @@
1
+ import process from "node:process";
2
+ function trimEnvValue(value) {
3
+ const trimmed = value?.trim();
4
+ return trimmed ? trimmed : undefined;
5
+ }
6
+ /**
7
+ * App entrypoints should consistently default to the app namespace even
8
+ * when they bypass the CLI/profile bootstrap path.
9
+ */
10
+ export function ensureNamespaceDefaults(env = process.env) {
11
+ if (!trimEnvValue(env.ELIZA_NAMESPACE)) {
12
+ env.ELIZA_NAMESPACE = "eliza";
13
+ }
14
+ }
15
+ ensureNamespaceDefaults();
16
+ //# sourceMappingURL=namespace-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace-defaults.js","sourceRoot":"","sources":["../../src/utils/namespace-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,SAAS,YAAY,CAAC,KAAyB;IAC7C,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAyB,OAAO,CAAC,GAAG;IAEpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC;IAChC,CAAC;AACH,CAAC;AAED,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ export interface ParsePositiveNumberOptions {
2
+ fallback?: number;
3
+ floor?: boolean;
4
+ }
5
+ export interface ParseClampedNumberOptions {
6
+ min?: number;
7
+ max?: number;
8
+ fallback?: number;
9
+ }
10
+ export interface ParseClampedIntegerOptions {
11
+ min?: number;
12
+ max?: number;
13
+ fallback?: number;
14
+ }
15
+ export declare function parsePositiveInteger(value: string | null | undefined, fallback: number): number;
16
+ export declare function parsePositiveInteger(value: string | null | undefined, fallback?: number): number | undefined;
17
+ export declare function parsePositiveFloat(value: string | null | undefined, options?: ParsePositiveNumberOptions): number | undefined;
18
+ export declare function parseClampedFloat(value: string | null | undefined, options: ParseClampedNumberOptions & {
19
+ fallback: number;
20
+ }): number;
21
+ export declare function parseClampedFloat(value: string | null | undefined, options?: ParseClampedNumberOptions): number | undefined;
22
+ export declare function parseClampedInteger(value: string | null | undefined, options: ParseClampedIntegerOptions & {
23
+ fallback: number;
24
+ }): number;
25
+ export declare function parseClampedInteger(value: string | null | undefined, options?: ParseClampedIntegerOptions): number | undefined;
26
+ //# sourceMappingURL=number-parsing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-parsing.d.ts","sourceRoot":"","sources":["../../src/utils/number-parsing.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC;AACV,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAAC;AAgBtB,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,0BAA0B,GACnC,MAAM,GAAG,SAAS,CAUpB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,EAAE,yBAAyB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxD,MAAM,CAAC;AACV,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,yBAAyB,GAClC,MAAM,GAAG,SAAS,CAAC;AAgBtB,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,EAAE,0BAA0B,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzD,MAAM,CAAC;AACV,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,0BAA0B,GACnC,MAAM,GAAG,SAAS,CAAC"}
@@ -0,0 +1,52 @@
1
+ function sanitizeNumericText(value) {
2
+ return value == null ? "" : value.trim();
3
+ }
4
+ function normalizeFallback(fallback) {
5
+ return Number.isFinite(fallback) ? fallback : undefined;
6
+ }
7
+ export function parsePositiveInteger(value, fallback) {
8
+ const raw = sanitizeNumericText(value);
9
+ if (!raw)
10
+ return normalizeFallback(fallback);
11
+ const parsed = Number(raw);
12
+ if (!Number.isFinite(parsed) || parsed <= 0) {
13
+ return normalizeFallback(fallback);
14
+ }
15
+ return Math.max(1, Math.floor(parsed));
16
+ }
17
+ export function parsePositiveFloat(value, options) {
18
+ const raw = sanitizeNumericText(value);
19
+ if (!raw)
20
+ return normalizeFallback(options?.fallback);
21
+ const parsed = Number(raw);
22
+ if (!Number.isFinite(parsed) || parsed <= 0) {
23
+ return normalizeFallback(options?.fallback);
24
+ }
25
+ return options?.floor ? Math.floor(parsed) : parsed;
26
+ }
27
+ export function parseClampedFloat(value, options = {}) {
28
+ const raw = sanitizeNumericText(value);
29
+ if (!raw)
30
+ return normalizeFallback(options.fallback);
31
+ const parsed = Number(raw);
32
+ if (!Number.isFinite(parsed))
33
+ return normalizeFallback(options.fallback);
34
+ const min = options.min ?? -Infinity;
35
+ const max = options.max ?? Infinity;
36
+ return Math.max(min, Math.min(max, parsed));
37
+ }
38
+ export function parseClampedInteger(value, options = {}) {
39
+ const raw = sanitizeNumericText(value);
40
+ if (!raw)
41
+ return normalizeFallback(options.fallback);
42
+ const parsed = Number.parseInt(raw, 10);
43
+ if (!Number.isFinite(parsed))
44
+ return normalizeFallback(options.fallback);
45
+ const { min, max } = options;
46
+ if (min !== undefined && parsed < min)
47
+ return min;
48
+ if (max !== undefined && parsed > max)
49
+ return max;
50
+ return parsed;
51
+ }
52
+ //# sourceMappingURL=number-parsing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-parsing.js","sourceRoot":"","sources":["../../src/utils/number-parsing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const OWNER_NAME_MAX_LENGTH = 60;
2
+ export declare function normalizeOwnerName(value: string | null | undefined): string;
3
+ //# sourceMappingURL=owner-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-name.d.ts","sourceRoot":"","sources":["../../src/utils/owner-name.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAM3E"}
@@ -0,0 +1,8 @@
1
+ export const OWNER_NAME_MAX_LENGTH = 60;
2
+ export function normalizeOwnerName(value) {
3
+ if (typeof value !== "string") {
4
+ return "";
5
+ }
6
+ return value.trim().slice(0, OWNER_NAME_MAX_LENGTH);
7
+ }
8
+ //# sourceMappingURL=owner-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-name.js","sourceRoot":"","sources":["../../src/utils/owner-name.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAExC,MAAM,UAAU,kBAAkB,CAAC,KAAgC;IACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * macOS Privacy & Security pane deep-link table.
3
+ *
4
+ * Maps permission ids to the `x-apple.systempreferences:` URL that opens the
5
+ * exact pane the user needs to grant access. The chat permission card calls
6
+ * `openPermissionSettings(id)` when a permission is denied and the user
7
+ * clicks "Open System Settings".
8
+ *
9
+ * Win32 / Linux: stubbed with a console warning. Native equivalents (Windows
10
+ * `ms-settings:privacy-*`, GNOME `gnome-control-center privacy`, etc.) can
11
+ * be wired in when those platforms gain real support — until then the chat
12
+ * surface advertises the limitation up-front.
13
+ */
14
+ import type { PermissionId } from "../contracts/permissions.js";
15
+ export declare function getMacPermissionDeepLink(id: PermissionId): string;
16
+ type Platform = "darwin" | "win32" | "linux" | "unknown";
17
+ export interface OpenPermissionSettingsDeps {
18
+ /**
19
+ * Optional opener. Injected for tests; defaults to `window.open` in the
20
+ * browser/electron renderer. On Node-only contexts the caller must inject
21
+ * something (e.g. `child_process.exec("open ...")`).
22
+ */
23
+ open?: (url: string) => void | Promise<void>;
24
+ /** Override platform detection (tests). */
25
+ platform?: Platform;
26
+ }
27
+ /**
28
+ * Open the system settings pane for the given permission. Resolves once the
29
+ * opener has been invoked (it doesn't wait for the user). Win32 / Linux
30
+ * stub: logs a warning and resolves without opening anything.
31
+ */
32
+ export declare function openPermissionSettings(id: PermissionId, deps?: OpenPermissionSettingsDeps): Promise<void>;
33
+ export {};
34
+ //# sourceMappingURL=permission-deep-links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-deep-links.d.ts","sourceRoot":"","sources":["../../src/utils/permission-deep-links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AA6BhE,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CAEjE;AAED,KAAK,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAwBzD,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,YAAY,EAChB,IAAI,GAAE,0BAA+B,GACpC,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * macOS Privacy & Security pane deep-link table.
3
+ *
4
+ * Maps permission ids to the `x-apple.systempreferences:` URL that opens the
5
+ * exact pane the user needs to grant access. The chat permission card calls
6
+ * `openPermissionSettings(id)` when a permission is denied and the user
7
+ * clicks "Open System Settings".
8
+ *
9
+ * Win32 / Linux: stubbed with a console warning. Native equivalents (Windows
10
+ * `ms-settings:privacy-*`, GNOME `gnome-control-center privacy`, etc.) can
11
+ * be wired in when those platforms gain real support — until then the chat
12
+ * surface advertises the limitation up-front.
13
+ */
14
+ const ROOT_PRIVACY = "x-apple.systempreferences:com.apple.preference.security?Privacy";
15
+ /**
16
+ * Per-id deep links. The right-hand value is the full URL.
17
+ * Permissions without a dedicated pane fall through to {@link ROOT_PRIVACY}.
18
+ */
19
+ const MAC_DEEP_LINKS = {
20
+ accessibility: `${ROOT_PRIVACY}_Accessibility`,
21
+ "screen-recording": `${ROOT_PRIVACY}_ScreenCapture`,
22
+ reminders: `${ROOT_PRIVACY}_Reminders`,
23
+ calendar: `${ROOT_PRIVACY}_Calendars`,
24
+ contacts: `${ROOT_PRIVACY}_Contacts`,
25
+ health: `${ROOT_PRIVACY}_Health`,
26
+ microphone: `${ROOT_PRIVACY}_Microphone`,
27
+ camera: `${ROOT_PRIVACY}_Camera`,
28
+ location: `${ROOT_PRIVACY}_LocationServices`,
29
+ notifications: "x-apple.systempreferences:com.apple.preference.notifications",
30
+ "full-disk": `${ROOT_PRIVACY}_AllFiles`,
31
+ automation: `${ROOT_PRIVACY}_Automation`,
32
+ // Permissions without dedicated panes — fall back to root Privacy.
33
+ shell: ROOT_PRIVACY,
34
+ "website-blocking": ROOT_PRIVACY,
35
+ notes: ROOT_PRIVACY,
36
+ screentime: "x-apple.systempreferences:com.apple.preference.screentime",
37
+ };
38
+ export function getMacPermissionDeepLink(id) {
39
+ return MAC_DEEP_LINKS[id] ?? ROOT_PRIVACY;
40
+ }
41
+ function detectPlatform() {
42
+ if (typeof globalThis !== "undefined" &&
43
+ typeof globalThis.process
44
+ ?.platform === "string") {
45
+ const p = globalThis.process
46
+ .platform;
47
+ if (p === "darwin" || p === "win32" || p === "linux")
48
+ return p;
49
+ }
50
+ if (typeof navigator !== "undefined" &&
51
+ typeof navigator.userAgent === "string") {
52
+ const ua = navigator.userAgent;
53
+ if (/Mac/.test(ua))
54
+ return "darwin";
55
+ if (/Win/.test(ua))
56
+ return "win32";
57
+ if (/Linux/.test(ua))
58
+ return "linux";
59
+ }
60
+ return "unknown";
61
+ }
62
+ /**
63
+ * Open the system settings pane for the given permission. Resolves once the
64
+ * opener has been invoked (it doesn't wait for the user). Win32 / Linux
65
+ * stub: logs a warning and resolves without opening anything.
66
+ */
67
+ export async function openPermissionSettings(id, deps = {}) {
68
+ const platform = deps.platform ?? detectPlatform();
69
+ if (platform !== "darwin") {
70
+ // TODO(permissions): wire ms-settings:privacy-* (win32) and
71
+ // gnome-control-center privacy (linux) once we ship those targets.
72
+ console.warn(`[permission-deep-links] openPermissionSettings is a no-op on ${platform}; permission=${id}`);
73
+ return;
74
+ }
75
+ const url = getMacPermissionDeepLink(id);
76
+ const opener = deps.open ??
77
+ ((u) => {
78
+ if (typeof window !== "undefined" && typeof window.open === "function") {
79
+ window.open(u, "_self");
80
+ }
81
+ });
82
+ await opener(url);
83
+ }
84
+ //# sourceMappingURL=permission-deep-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-deep-links.js","sourceRoot":"","sources":["../../src/utils/permission-deep-links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,YAAY,GAChB,iEAAiE,CAAC;AAEpE;;;GAGG;AACH,MAAM,cAAc,GAAiC;IACnD,aAAa,EAAE,GAAG,YAAY,gBAAgB;IAC9C,kBAAkB,EAAE,GAAG,YAAY,gBAAgB;IACnD,SAAS,EAAE,GAAG,YAAY,YAAY;IACtC,QAAQ,EAAE,GAAG,YAAY,YAAY;IACrC,QAAQ,EAAE,GAAG,YAAY,WAAW;IACpC,MAAM,EAAE,GAAG,YAAY,SAAS;IAChC,UAAU,EAAE,GAAG,YAAY,aAAa;IACxC,MAAM,EAAE,GAAG,YAAY,SAAS;IAChC,QAAQ,EAAE,GAAG,YAAY,mBAAmB;IAC5C,aAAa,EAAE,8DAA8D;IAC7E,WAAW,EAAE,GAAG,YAAY,WAAW;IACvC,UAAU,EAAE,GAAG,YAAY,aAAa;IACxC,mEAAmE;IACnE,KAAK,EAAE,YAAY;IACnB,kBAAkB,EAAE,YAAY;IAChC,KAAK,EAAE,YAAY;IACnB,UAAU,EAAE,2DAA2D;CACxE,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,EAAgB;IACvD,OAAO,cAAc,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC;AAC5C,CAAC;AAID,SAAS,cAAc;IACrB,IACE,OAAO,UAAU,KAAK,WAAW;QACjC,OAAQ,UAAkD,CAAC,OAAO;YAChE,EAAE,QAAQ,KAAK,QAAQ,EACzB,CAAC;QACD,MAAM,CAAC,GAAI,UAAgD,CAAC,OAAO;aAChE,QAAQ,CAAC;QACZ,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,OAAO;YAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IACD,IACE,OAAO,SAAS,KAAK,WAAW;QAChC,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,EACvC,CAAC;QACD,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC;QAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,QAAQ,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,OAAO,CAAC;QACnC,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,OAAO,CAAC;IACvC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAaD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,EAAgB,EAChB,OAAmC,EAAE;IAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,cAAc,EAAE,CAAC;IACnD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,4DAA4D;QAC5D,mEAAmE;QACnE,OAAO,CAAC,IAAI,CACV,gEAAgE,QAAQ,gBAAgB,EAAE,EAAE,CAC7F,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,wBAAwB,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,MAAM,GACV,IAAI,CAAC,IAAI;QACT,CAAC,CAAC,CAAS,EAAE,EAAE;YACb,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACvE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Generic in-memory rate limiter with automatic sweep.
3
+ *
4
+ * Consolidates the per-IP rate limiting pattern from
5
+ * `@elizaos/plugin-wallet/lib/wallet-export-guard` and the pairing attempt
6
+ * limiter in `server.ts`.
7
+ */
8
+ export interface RateLimiterOptions {
9
+ /** Time window in milliseconds. An action is blocked if the last allowed
10
+ * action for the same key happened less than `windowMs` ago. */
11
+ windowMs: number;
12
+ /** How often (ms) to sweep stale entries. Defaults to `windowMs * 1.5`. */
13
+ sweepIntervalMs?: number;
14
+ }
15
+ export interface RateLimitCheck {
16
+ /** `true` if the action is allowed. */
17
+ allowed: boolean;
18
+ /** Seconds until the action would be allowed again (0 when allowed). */
19
+ retryAfterSeconds: number;
20
+ }
21
+ export interface RateLimiter {
22
+ /** Check *and* record an action for `key`. */
23
+ check(key: string): RateLimitCheck;
24
+ /** Peek without recording — returns the same shape but doesn't consume. */
25
+ peek(key: string): RateLimitCheck;
26
+ /** Remove all tracked keys. */
27
+ clear(): void;
28
+ /** Stop the background sweep timer (for clean shutdown / tests). */
29
+ dispose(): void;
30
+ }
31
+ export declare function createRateLimiter(opts: RateLimiterOptions): RateLimiter;
32
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,kBAAkB;IACjC;qEACiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;IACnC,2EAA2E;IAC3E,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;IAClC,+BAA+B;IAC/B,KAAK,IAAI,IAAI,CAAC;IACd,oEAAoE;IACpE,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CA6CvE"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Generic in-memory rate limiter with automatic sweep.
3
+ *
4
+ * Consolidates the per-IP rate limiting pattern from
5
+ * `@elizaos/plugin-wallet/lib/wallet-export-guard` and the pairing attempt
6
+ * limiter in `server.ts`.
7
+ */
8
+ export function createRateLimiter(opts) {
9
+ const { windowMs } = opts;
10
+ const sweepIntervalMs = opts.sweepIntervalMs ?? Math.ceil(windowMs * 1.5);
11
+ const map = new Map(); // key → lastActionAt
12
+ const sweepTimer = setInterval(() => {
13
+ const cutoff = Date.now() - windowMs * 2;
14
+ for (const [key, ts] of map) {
15
+ if (ts < cutoff)
16
+ map.delete(key);
17
+ }
18
+ }, sweepIntervalMs);
19
+ // Allow the process to exit without this timer holding it
20
+ if (typeof sweepTimer === "object" && "unref" in sweepTimer) {
21
+ sweepTimer.unref();
22
+ }
23
+ function peekImpl(key) {
24
+ const last = map.get(key);
25
+ if (last === undefined)
26
+ return { allowed: true, retryAfterSeconds: 0 };
27
+ const elapsed = Date.now() - last;
28
+ if (elapsed >= windowMs)
29
+ return { allowed: true, retryAfterSeconds: 0 };
30
+ return {
31
+ allowed: false,
32
+ retryAfterSeconds: Math.ceil((windowMs - elapsed) / 1000),
33
+ };
34
+ }
35
+ return {
36
+ check(key) {
37
+ const result = peekImpl(key);
38
+ if (result.allowed) {
39
+ map.set(key, Date.now());
40
+ }
41
+ return result;
42
+ },
43
+ peek: peekImpl,
44
+ clear() {
45
+ map.clear();
46
+ },
47
+ dispose() {
48
+ clearInterval(sweepTimer);
49
+ map.clear();
50
+ },
51
+ };
52
+ }
53
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4BH,MAAM,UAAU,iBAAiB,CAAC,IAAwB;IACxD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,qBAAqB;IAE5D,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC;QACzC,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;YAC5B,IAAI,EAAE,GAAG,MAAM;gBAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,EAAE,eAAe,CAAC,CAAC;IAEpB,0DAA0D;IAC1D,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;QAC3D,UAA6B,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,SAAS,QAAQ,CAAC,GAAW;QAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAClC,IAAI,OAAO,IAAI,QAAQ;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;QACxE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;SAC1D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,CAAC,GAAW;YACf,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,EAAE,QAAQ;QACd,KAAK;YACH,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;QACD,OAAO;YACL,aAAa,CAAC,UAAU,CAAC,CAAC;YAC1B,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Creates a serialised (sequential) promise queue.
3
+ *
4
+ * Each call to the returned function chains the provided async `fn` after
5
+ * the previous one completes, ensuring only one operation runs at a time.
6
+ *
7
+ * Usage:
8
+ * const run = createSerialise();
9
+ * await run(async () => { ... });
10
+ */
11
+ export declare function createSerialise(): <T>(fn: () => Promise<T>) => Promise<T>;
12
+ //# sourceMappingURL=serialise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialise.d.ts","sourceRoot":"","sources":["../../src/utils/serialise.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,eAAe,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAUzE"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Creates a serialised (sequential) promise queue.
3
+ *
4
+ * Each call to the returned function chains the provided async `fn` after
5
+ * the previous one completes, ensuring only one operation runs at a time.
6
+ *
7
+ * Usage:
8
+ * const run = createSerialise();
9
+ * await run(async () => { ... });
10
+ */
11
+ export function createSerialise() {
12
+ let lock = Promise.resolve();
13
+ return (fn) => {
14
+ const prev = lock;
15
+ let resolve;
16
+ lock = new Promise((r) => {
17
+ resolve = r;
18
+ });
19
+ return prev.then(fn).finally(() => resolve?.());
20
+ };
21
+ }
22
+ //# sourceMappingURL=serialise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialise.js","sourceRoot":"","sources":["../../src/utils/serialise.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,IAAI,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5C,OAAO,CAAI,EAAoB,EAAc,EAAE;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,OAAmB,CAAC;QACxB,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE;YAC7B,OAAO,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { AgentRuntime } from "@elizaos/core";
2
+ export declare function quoteIdent(name: string): string;
3
+ export declare function sanitizeIdentifier(value: string | null | undefined): string | null;
4
+ export declare function sqlLiteral(value: string): string;
5
+ export declare function executeRawSql(runtime: AgentRuntime, sqlText: string): Promise<{
6
+ rows: Record<string, unknown>[];
7
+ columns: string[];
8
+ }>;
9
+ export declare function ensureRuntimeSqlCompatibility(runtime: AgentRuntime | null | undefined): Promise<void>;
10
+ //# sourceMappingURL=sql-compat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-compat.d.ts","sourceRoot":"","sources":["../../src/utils/sql-compat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKlD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,MAAM,GAAG,IAAI,CAOf;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC,CAsBD;AAyED,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GACvC,OAAO,CAAC,IAAI,CAAC,CA2Cf"}
@@ -0,0 +1,112 @@
1
+ const repairedRuntimes = new WeakSet();
2
+ const repairPromises = new WeakMap();
3
+ export function quoteIdent(name) {
4
+ return `"${name.replace(/"/g, '""')}"`;
5
+ }
6
+ export function sanitizeIdentifier(value) {
7
+ if (typeof value !== "string")
8
+ return null;
9
+ const trimmed = value.trim();
10
+ if (!trimmed)
11
+ return null;
12
+ const sanitized = trimmed.replace(/[^a-zA-Z0-9_]/g, "");
13
+ if (sanitized.length === 0 || sanitized.length > 128)
14
+ return null;
15
+ return sanitized;
16
+ }
17
+ export function sqlLiteral(value) {
18
+ return `'${value.replace(/'/g, "''")}'`;
19
+ }
20
+ export async function executeRawSql(runtime, sqlText) {
21
+ const db = runtime.adapter?.db;
22
+ if (!db?.execute) {
23
+ throw new Error("Database adapter not available");
24
+ }
25
+ const { sql } = await import("drizzle-orm");
26
+ const result = await db.execute(sql.raw(sqlText));
27
+ const rows = Array.isArray(result.rows) ? result.rows : [];
28
+ const columns = Array.isArray(result.fields)
29
+ ? result.fields.map((field) => field.name)
30
+ : Object.keys(rows[0] ?? {});
31
+ return { rows, columns };
32
+ }
33
+ async function getTableColumnNames(runtime, tableName, schemaName = "public") {
34
+ const columns = new Set();
35
+ try {
36
+ const { rows } = await executeRawSql(runtime, `SELECT column_name
37
+ FROM information_schema.columns
38
+ WHERE table_schema = ${sqlLiteral(schemaName)}
39
+ AND table_name = ${sqlLiteral(tableName)}
40
+ ORDER BY ordinal_position`);
41
+ for (const row of rows) {
42
+ const value = row.column_name;
43
+ if (typeof value === "string" && value.length > 0) {
44
+ columns.add(value);
45
+ }
46
+ }
47
+ }
48
+ catch {
49
+ // Fall through to PRAGMA for PGlite/SQLite compatibility.
50
+ }
51
+ if (columns.size > 0) {
52
+ return columns;
53
+ }
54
+ try {
55
+ const safeTableName = sanitizeIdentifier(tableName);
56
+ if (!safeTableName) {
57
+ return columns;
58
+ }
59
+ const { rows } = await executeRawSql(runtime, `PRAGMA table_info(${safeTableName})`);
60
+ for (const row of rows) {
61
+ const value = row.name;
62
+ if (typeof value === "string" && value.length > 0) {
63
+ columns.add(value);
64
+ }
65
+ }
66
+ }
67
+ catch {
68
+ // Ignore missing-table/missing-pragma support.
69
+ }
70
+ return columns;
71
+ }
72
+ async function addColumnIfMissing(runtime, tableName, columnName, definition) {
73
+ const columns = await getTableColumnNames(runtime, tableName);
74
+ if (columns.has(columnName)) {
75
+ return;
76
+ }
77
+ throw new Error(`[sql-compat] Missing required column ${quoteIdent(tableName)}.${quoteIdent(columnName)} (${definition}). Run the appropriate database migrations before starting the app.`);
78
+ }
79
+ export async function ensureRuntimeSqlCompatibility(runtime) {
80
+ if (!runtime?.adapter?.db) {
81
+ return;
82
+ }
83
+ if (repairedRuntimes.has(runtime)) {
84
+ return;
85
+ }
86
+ const existingRepair = repairPromises.get(runtime);
87
+ if (existingRepair) {
88
+ await existingRepair;
89
+ return;
90
+ }
91
+ const repairPromise = (async () => {
92
+ await addColumnIfMissing(runtime, "participants", "agent_id", 'uuid REFERENCES "agents"("id") ON DELETE CASCADE');
93
+ await addColumnIfMissing(runtime, "participants", "room_state", "text");
94
+ for (const [columnName, definition] of [
95
+ ["step_count", "integer NOT NULL DEFAULT 0"],
96
+ ["llm_call_count", "integer NOT NULL DEFAULT 0"],
97
+ ["total_prompt_tokens", "integer NOT NULL DEFAULT 0"],
98
+ ["total_completion_tokens", "integer NOT NULL DEFAULT 0"],
99
+ ["total_reward", "real NOT NULL DEFAULT 0"],
100
+ ["scenario_id", "text"],
101
+ ["batch_id", "text"],
102
+ ]) {
103
+ await addColumnIfMissing(runtime, "trajectories", columnName, definition);
104
+ }
105
+ repairedRuntimes.add(runtime);
106
+ })().finally(() => {
107
+ repairPromises.delete(runtime);
108
+ });
109
+ repairPromises.set(runtime, repairPromise);
110
+ await repairPromise;
111
+ }
112
+ //# sourceMappingURL=sql-compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-compat.js","sourceRoot":"","sources":["../../src/utils/sql-compat.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAgB,CAAC;AACrD,MAAM,cAAc,GAAG,IAAI,OAAO,EAA+B,CAAC;AAElE,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAgC;IAEhC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACxD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAClE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAqB,EACrB,OAAe;IAKf,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAOf,CAAC;IAEd,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAE/B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,OAAqB,EACrB,SAAiB,EACjB,UAAU,GAAG,QAAQ;IAErB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,aAAa,CAClC,OAAO,EACP;;+BAEyB,UAAU,CAAC,UAAU,CAAC;6BACxB,UAAU,CAAC,SAAS,CAAC;kCAChB,CAC7B,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC;YAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;IAC5D,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,aAAa,CAClC,OAAO,EACP,qBAAqB,aAAa,GAAG,CACtC,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;YACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,OAAqB,EACrB,SAAiB,EACjB,UAAkB,EAClB,UAAkB;IAElB,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,IAAI,KAAK,CACb,wCAAwC,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,UAAU,qEAAqE,CAC5K,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAAwC;IAExC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,KAAK,IAAI,EAAE;QAChC,MAAM,kBAAkB,CACtB,OAAO,EACP,cAAc,EACd,UAAU,EACV,kDAAkD,CACnD,CAAC;QACF,MAAM,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAExE,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI;YACrC,CAAC,YAAY,EAAE,4BAA4B,CAAC;YAC5C,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;YAChD,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;YACrD,CAAC,yBAAyB,EAAE,4BAA4B,CAAC;YACzD,CAAC,cAAc,EAAE,yBAAyB,CAAC;YAC3C,CAAC,aAAa,EAAE,MAAM,CAAC;YACvB,CAAC,UAAU,EAAE,MAAM,CAAC;SACZ,EAAE,CAAC;YACX,MAAM,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC5E,CAAC;QAED,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;QAChB,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC3C,MAAM,aAAa,CAAC;AACtB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function mergeStreamingText(existing: string, incoming: string): string;
2
+ export declare function computeStreamingDelta(existing: string, incoming: string): string;
3
+ export type StreamingUpdateResult = {
4
+ kind: "append" | "replace" | "noop";
5
+ nextText: string;
6
+ emittedText: string;
7
+ };
8
+ export declare function resolveStreamingUpdate(existing: string, incoming: string): StreamingUpdateResult;
9
+ //# sourceMappingURL=streaming-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-text.d.ts","sourceRoot":"","sources":["../../src/utils/streaming-text.ts"],"names":[],"mappings":"AA6DA,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6D7E;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAOR;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,qBAAqB,CAgBvB"}