@wabot-dev/framework 0.9.27 → 2.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +27 -0
  2. package/bin/skills.mjs +151 -0
  3. package/bin/wabot-skills.mjs +120 -0
  4. package/dist/build/build.js +1031 -8
  5. package/dist/src/addon/chat-bot/in-memory/InMemoryChatMemory.js +1 -3
  6. package/dist/src/addon/chat-bot/xai/XAIChatAdapter.js +180 -0
  7. package/dist/src/addon/chat-controller/cmd/cmdChannelSocketPath.js +1 -5
  8. package/dist/src/addon/chat-controller/hubspot/@hubspot.js +28 -0
  9. package/dist/src/addon/chat-controller/hubspot/HubSpotChannel.js +81 -0
  10. package/dist/src/addon/chat-controller/hubspot/HubSpotChannelConfig.js +20 -0
  11. package/dist/src/addon/chat-controller/hubspot/HubSpotReceiver.js +42 -0
  12. package/dist/src/addon/chat-controller/hubspot/HubSpotSender.js +118 -0
  13. package/dist/src/addon/chat-controller/hubspot/HubSpotWebhookController.js +122 -0
  14. package/dist/src/addon/chat-controller/hubspot/downloadHubSpotAttachments.js +45 -0
  15. package/dist/src/addon/chat-controller/hubspot/hubspotChannelName.js +3 -0
  16. package/dist/src/addon/chat-controller/hubspot/verifyHubSpotSignatureV3.js +28 -0
  17. package/dist/src/addon/chat-controller/{telegram/markdownToTelegramHtml.js → markdown/markdownToChatHtml.js} +5 -8
  18. package/dist/src/addon/chat-controller/slack/@slack.js +22 -0
  19. package/dist/src/addon/chat-controller/slack/SlackChannel.js +187 -0
  20. package/dist/src/addon/chat-controller/slack/SlackChannelConfig.js +12 -0
  21. package/dist/src/addon/chat-controller/slack/markdownToSlackMrkdwn.js +38 -0
  22. package/dist/src/addon/chat-controller/slack/slackChannelName.js +3 -0
  23. package/dist/src/addon/chat-controller/telegram/TelegramChannel.js +2 -2
  24. package/dist/src/addon/ui/preact/PreactRenderer.js +86 -0
  25. package/dist/src/addon/ui/preact/outlet.js +22 -0
  26. package/dist/src/addon/ui/preact/preactClientRuntime.js +67 -0
  27. package/dist/src/core/repository/CrudRepository.js +7 -7
  28. package/dist/src/feature/async/computeDedupKey.js +1 -1
  29. package/dist/src/feature/chat-controller/runChatControllers.js +4 -1
  30. package/dist/src/feature/pg/@pgExtension.js +2 -4
  31. package/dist/src/feature/project-runner/ProjectRunner.js +62 -10
  32. package/dist/src/feature/project-runner/scanner.js +1 -1
  33. package/dist/src/feature/repository/@memExtension.js +1 -2
  34. package/dist/src/feature/rest-controller/runRestControllers.js +11 -6
  35. package/dist/src/feature/ui-controller/actions.js +35 -0
  36. package/dist/src/feature/ui-controller/bundler/UiBundler.js +191 -0
  37. package/dist/src/feature/ui-controller/bundler/devMiddleware.js +41 -0
  38. package/dist/src/feature/ui-controller/bundler/index.js +4 -0
  39. package/dist/src/feature/ui-controller/bundler/manifest.js +34 -0
  40. package/dist/src/feature/ui-controller/bundler/navRuntime.js +236 -0
  41. package/dist/src/feature/ui-controller/bundler/pageAssets.js +30 -0
  42. package/dist/src/feature/ui-controller/document/escape.js +17 -0
  43. package/dist/src/feature/ui-controller/document/helpers.js +13 -0
  44. package/dist/src/feature/ui-controller/document/renderDocument.js +43 -0
  45. package/dist/src/feature/ui-controller/island/IslandRegistry.js +68 -0
  46. package/dist/src/feature/ui-controller/island/island.js +40 -0
  47. package/dist/src/feature/ui-controller/island/serialize.js +35 -0
  48. package/dist/src/feature/ui-controller/metadata/@action.js +18 -0
  49. package/dist/src/feature/ui-controller/metadata/@uiController.js +19 -0
  50. package/dist/src/feature/ui-controller/metadata/@uiMiddleware.js +20 -0
  51. package/dist/src/feature/ui-controller/metadata/@view.js +18 -0
  52. package/dist/src/feature/ui-controller/metadata/UiControllerMetadataStore.js +107 -0
  53. package/dist/src/feature/ui-controller/renderer/UiRendererRegistry.js +42 -0
  54. package/dist/src/feature/ui-controller/runUiControllers.js +285 -0
  55. package/dist/src/index.d.ts +640 -3
  56. package/dist/src/index.js +32 -3
  57. package/dist/src/testing/LlmJudge.js +93 -0
  58. package/dist/src/testing/MockChatAdapter.js +68 -0
  59. package/dist/src/testing/TestChatMemory.js +73 -0
  60. package/dist/src/testing/asyncHarness.js +66 -0
  61. package/dist/src/testing/auth.js +114 -0
  62. package/dist/src/testing/chatBotHarness.js +88 -0
  63. package/dist/src/testing/chatControllerHarness.js +94 -0
  64. package/dist/src/testing/conformance/chatAdapterConformanceCases.js +656 -0
  65. package/dist/src/testing/fixtures.js +53 -0
  66. package/dist/src/testing/helpers.js +42 -0
  67. package/dist/src/testing/index.d.ts +818 -0
  68. package/dist/src/testing/index.js +14 -0
  69. package/dist/src/testing/repositories.js +34 -0
  70. package/dist/src/testing/restHarness.js +127 -0
  71. package/dist/src/testing/testImageBase64.js +5 -0
  72. package/dist/src/testing/uiHarness.js +102 -0
  73. package/dist/src/testing/validation.js +66 -0
  74. package/dist/src/ui/client.js +6 -0
  75. package/dist/src/ui/index.d.ts +427 -0
  76. package/dist/src/ui/index.js +29 -0
  77. package/dist/src/ui/jsx-dev-runtime.d.ts +1 -0
  78. package/dist/src/ui/jsx-dev-runtime.js +1 -0
  79. package/dist/src/ui/jsx-runtime.d.ts +1 -0
  80. package/dist/src/ui/jsx-runtime.js +1 -0
  81. package/package.json +48 -11
  82. package/skills/wabot-async/SKILL.md +143 -0
  83. package/skills/wabot-auth/SKILL.md +153 -0
  84. package/skills/wabot-chat/SKILL.md +140 -0
  85. package/skills/wabot-di-config/SKILL.md +117 -0
  86. package/skills/wabot-framework/SKILL.md +81 -0
  87. package/skills/wabot-framework/references/quickstart.md +85 -0
  88. package/skills/wabot-mindset/SKILL.md +159 -0
  89. package/skills/wabot-ops/SKILL.md +151 -0
  90. package/skills/wabot-persistence/SKILL.md +159 -0
  91. package/skills/wabot-rest-socket/SKILL.md +167 -0
  92. package/skills/wabot-testing/SKILL.md +214 -0
  93. package/skills/wabot-ui/SKILL.md +201 -0
  94. package/skills/wabot-validation/SKILL.md +108 -0
@@ -11,6 +11,7 @@ import { Pool, PoolClient } from 'pg';
11
11
  import { AsyncLocalStorage } from 'node:async_hooks';
12
12
  import { Server as Server$1, Socket } from 'socket.io';
13
13
  import { Algorithm } from 'jsonwebtoken';
14
+ import { Client } from '@hubspot/api-client';
14
15
  import { Wasender } from 'wasenderapi';
15
16
 
16
17
  type IStorablePrimitive = null | number | string | boolean | undefined;
@@ -1207,6 +1208,17 @@ interface IProjectRunnerConfig {
1207
1208
  * mode used by the bundled output produced by src/build/build.ts.
1208
1209
  */
1209
1210
  preloaded?: boolean;
1211
+ /** UI / island bundling options. */
1212
+ ui?: IUiRunnerConfig;
1213
+ }
1214
+ interface IUiRunnerConfig {
1215
+ /**
1216
+ * Extra esbuild import aliases for the island client bundler. Only needed when
1217
+ * islands import the framework UI through a non-package specifier (e.g. a path
1218
+ * alias in monorepo / in-repo dev). Regular consumers don't need this: the
1219
+ * package's "browser" export condition resolves the client build automatically.
1220
+ */
1221
+ bundlerAlias?: Record<string, string>;
1210
1222
  }
1211
1223
  declare class ProjectRunner {
1212
1224
  private directories;
@@ -1215,6 +1227,7 @@ declare class ProjectRunner {
1215
1227
  private connectionString;
1216
1228
  private isPg;
1217
1229
  private preloaded;
1230
+ private ui;
1218
1231
  private pool;
1219
1232
  constructor(config?: IProjectRunnerConfig);
1220
1233
  run(): Promise<void>;
@@ -1226,6 +1239,9 @@ declare class ProjectRunner {
1226
1239
  private registerMemoryAdapters;
1227
1240
  private registerPostgresAdapters;
1228
1241
  private startComponents;
1242
+ private startUiControllers;
1243
+ private setupDevUiAssets;
1244
+ private setupProdUiAssets;
1229
1245
  private resolveDefaultChatAdapters;
1230
1246
  }
1231
1247
  declare function run(config?: IProjectRunnerConfig): Promise<void>;
@@ -1295,6 +1311,7 @@ interface IMessageContext extends IReceivedMessage {
1295
1311
  authInfo?: object;
1296
1312
  }
1297
1313
 
1314
+ declare function prepareChatContainer(container: DependencyContainer$1, messageContext: IMessageContext, mindsetCtor?: IConstructor<IMindset>): Promise<DependencyContainer$1>;
1298
1315
  declare function runChatControllers(controllers: IConstructor<any>[]): void;
1299
1316
 
1300
1317
  declare class HttpServerProvider {
@@ -1623,6 +1640,13 @@ declare class RestControllerMetadataStore {
1623
1640
  }[];
1624
1641
  }
1625
1642
 
1643
+ interface IRegisterRestControllersOptions {
1644
+ /** Container the per-request child containers derive from. */
1645
+ baseContainer?: DependencyContainer$1;
1646
+ /** Express provider to mount the routes on. */
1647
+ expressProvider?: ExpressProvider;
1648
+ }
1649
+ declare function registerRestControllers(controllers: IConstructor<any>[], options?: IRegisterRestControllersOptions): ExpressProvider;
1626
1650
  declare function runRestControllers(controllers: IConstructor<any>[]): void;
1627
1651
 
1628
1652
  declare const EXPRESS_REQ = "EXPRESS_REQ";
@@ -1700,6 +1724,385 @@ declare class SocketControllerMetadataStore {
1700
1724
 
1701
1725
  declare function runSocketControllers(controllers: IConstructor<any>[]): void;
1702
1726
 
1727
+ /** A resource to `<link rel="preload">` (font, critical image, …). */
1728
+ interface IPreloadLink {
1729
+ href: string;
1730
+ /** Destination: 'font' | 'image' | 'style' | 'script' | 'fetch' | … */
1731
+ as: string;
1732
+ /** MIME type, e.g. 'font/woff2'. Recommended so the preload matches the request. */
1733
+ type?: string;
1734
+ /**
1735
+ * CORS mode. Fonts are always fetched cross-origin, so `as: 'font'` defaults to
1736
+ * `true` (a bare `crossorigin`) — omitting it would fetch the font twice.
1737
+ */
1738
+ crossorigin?: boolean | 'anonymous' | 'use-credentials';
1739
+ media?: string;
1740
+ }
1741
+ /** An origin to `<link rel="preconnect">` (e.g. a font CDN). */
1742
+ type IPreconnect = string | {
1743
+ href: string;
1744
+ crossorigin?: boolean;
1745
+ };
1746
+ /** Extra `<head>` resource hints rendered on full document loads. */
1747
+ interface IControllerHead {
1748
+ /** Origins to open a connection to early (TLS handshake), e.g. a font host. */
1749
+ preconnect?: IPreconnect[];
1750
+ /** Resources to fetch early in parallel (fonts, hero image, …). */
1751
+ preload?: IPreloadLink[];
1752
+ }
1753
+ interface IUiControllerConfig {
1754
+ /** Base path every view/action of the controller is mounted under. */
1755
+ path: string;
1756
+ /** Middlewares (e.g. auth guards) applied to every view and action. */
1757
+ middlewares?: IConstructor<IMiddleware>[];
1758
+ /**
1759
+ * Opt into client-side ("boosted") navigation between this controller's
1760
+ * views: links within the controller's `path` are intercepted and swapped in
1761
+ * without a full browser reload, backed by a stale-while-revalidate cache.
1762
+ * Views still SSR normally and keep working without JS. Defaults to false.
1763
+ */
1764
+ app?: boolean;
1765
+ /**
1766
+ * Persistent app shell rendered once around every view of the controller. The
1767
+ * layout renders an `<Outlet/>` where the current view goes; during boosted
1768
+ * navigation only the outlet swaps, so the shell (and its islands) keep their
1769
+ * state. A renderer component (e.g. a Preact function component).
1770
+ */
1771
+ layout?: unknown;
1772
+ /**
1773
+ * `<head>` resource hints (preconnect/preload) rendered on full document
1774
+ * loads — the natural home for app-wide fonts, since the head persists across
1775
+ * boosted navigation and is cached for the whole session.
1776
+ */
1777
+ head?: IControllerHead;
1778
+ }
1779
+
1780
+ declare function uiController(config: string | IUiControllerConfig): (target: IConstructor<any>) => void;
1781
+
1782
+ interface IViewConfig {
1783
+ /** Sub-path appended to the controller path. Empty/omitted = controller index. */
1784
+ path?: string;
1785
+ /** Document <title> for this page. */
1786
+ title?: string;
1787
+ /** Extra <meta> tags rendered into the document head: name -> content. */
1788
+ meta?: Record<string, string>;
1789
+ /**
1790
+ * Stale-while-revalidate hints for boosted navigation (`app: true`
1791
+ * controllers). Only meaningful for the soft-nav client cache.
1792
+ */
1793
+ swr?: {
1794
+ /**
1795
+ * Seconds a cached fragment is considered fresh: within this window a
1796
+ * revisit renders from cache without a background revalidation. Default 0
1797
+ * (always revalidate in the background).
1798
+ */
1799
+ maxAge?: number;
1800
+ /**
1801
+ * Cheap revalidation tag (the SWR key). When provided, boosted-nav
1802
+ * revalidation compares this against `If-None-Match` and can answer 304
1803
+ * *without* running the view handler or SSR. Receives the request with
1804
+ * body+query+params merged, so parameterized routes can (and should) key off
1805
+ * their route params — e.g. `version: ({ id }) => docRevision(id)`.
1806
+ * Return a short, deterministic string (a data timestamp or revision).
1807
+ */
1808
+ version?: (request: any) => string | Promise<string>;
1809
+ };
1810
+ }
1811
+
1812
+ declare function view(config?: string | IViewConfig): (target: object, propertyKey: string | symbol) => void;
1813
+
1814
+ interface IActionConfig {
1815
+ /** Sub-path of the action. Defaults to the method name. Mounted under `<controller>/_action/<path>`. */
1816
+ path?: string;
1817
+ }
1818
+
1819
+ declare function action(config?: string | IActionConfig): (target: object, propertyKey: string | symbol) => void;
1820
+
1821
+ /**
1822
+ * Attach a middleware (e.g. an auth guard) to a single @view or @action.
1823
+ * Controller-wide middlewares can instead be declared on @uiController({ middlewares }).
1824
+ */
1825
+ declare function uiMiddleware(middlewareConstructor: IConstructor<IMiddleware>): (target: object, propertyKey: string | symbol) => void;
1826
+
1827
+ interface IUiControllerMetadata {
1828
+ controllerConstructor: IConstructor<any>;
1829
+ path: string;
1830
+ middlewares: IConstructor<IMiddleware>[];
1831
+ /** Whether this controller opts into client-side ("boosted") navigation. */
1832
+ app?: boolean;
1833
+ /** Persistent app-shell component rendered around every view (with an `<Outlet/>`). */
1834
+ layout?: unknown;
1835
+ /** `<head>` resource hints (preconnect/preload) for full document loads. */
1836
+ head?: IControllerHead;
1837
+ }
1838
+
1839
+ interface IViewMetadata {
1840
+ controllerConstructor: IConstructor<any>;
1841
+ functionName: string;
1842
+ config?: IViewConfig;
1843
+ paramsTypes: any[];
1844
+ }
1845
+
1846
+ interface IActionMetadata {
1847
+ controllerConstructor: IConstructor<any>;
1848
+ functionName: string;
1849
+ config?: IActionConfig;
1850
+ paramsTypes: any[];
1851
+ }
1852
+
1853
+ interface IUiMiddlewareMetadata {
1854
+ controllerConstructor: IConstructor<any>;
1855
+ functionName: string;
1856
+ middlewareConstructor: IConstructor<IMiddleware>;
1857
+ }
1858
+
1859
+ declare class UiControllerMetadataStore {
1860
+ private controllers;
1861
+ private views;
1862
+ private actions;
1863
+ private middlewares;
1864
+ saveControllerMetadata(metadata: IUiControllerMetadata): void;
1865
+ saveViewMetadata(metadata: IViewMetadata): void;
1866
+ saveActionMetadata(metadata: IActionMetadata): void;
1867
+ saveMiddlewareMetadata(metadata: IUiMiddlewareMetadata): void;
1868
+ getAllUiControllerConstructors(): IConstructor<any>[];
1869
+ private getController;
1870
+ private collectMethodMiddlewares;
1871
+ getControllerViewsInfo(controllerConstructor: IConstructor<any>): {
1872
+ controllerConstructor: IConstructor<any>;
1873
+ controller: IUiControllerMetadata;
1874
+ middlewares: IUiMiddlewareMetadata[];
1875
+ functionName: string;
1876
+ config?: IViewConfig;
1877
+ paramsTypes: any[];
1878
+ }[];
1879
+ getControllerActionsInfo(controllerConstructor: IConstructor<any>): {
1880
+ controllerConstructor: IConstructor<any>;
1881
+ controller: IUiControllerMetadata;
1882
+ middlewares: IUiMiddlewareMetadata[];
1883
+ functionName: string;
1884
+ config?: IActionConfig;
1885
+ paramsTypes: any[];
1886
+ }[];
1887
+ }
1888
+
1889
+ interface IRenderContext {
1890
+ /** True while running under the dev server (enables hydration in dev, etc.). */
1891
+ dev?: boolean;
1892
+ /**
1893
+ * Optional layout component to wrap the view in (the persistent app shell).
1894
+ * The renderer places the view where the layout renders its `<Outlet/>`.
1895
+ * Passed only for full-document loads; omitted for boosted-nav fragments so
1896
+ * only the view (the outlet's content) is rendered.
1897
+ */
1898
+ layout?: unknown;
1899
+ }
1900
+ interface IRenderedIsland {
1901
+ /** Stable island id (module-derived), used to load its client bundle. */
1902
+ id: string;
1903
+ /** Serializable props the island was rendered with, for client hydration. */
1904
+ props: unknown;
1905
+ }
1906
+ interface IRenderResult {
1907
+ /** Server-rendered HTML for the view body. */
1908
+ html: string;
1909
+ /** Islands encountered while rendering, in document order. */
1910
+ islands: IRenderedIsland[];
1911
+ /** Style hrefs (or inline CSS ids) the page depends on, if any. */
1912
+ styles: string[];
1913
+ }
1914
+ interface IIslandEntryArgs {
1915
+ /** Stable island id (also the client bundle's output name). */
1916
+ id: string;
1917
+ /** Absolute path to the island's source module (default export = island). */
1918
+ importPath: string;
1919
+ }
1920
+ /** Renderer-specific knobs the island bundler needs to build client bundles. */
1921
+ interface IUiClientConfig {
1922
+ /** Module the generated island entry imports its hydration `registerIsland` from. */
1923
+ runtimeModule: string;
1924
+ /** esbuild JSX settings for compiling islands on the client. */
1925
+ esbuildJsx?: {
1926
+ jsx?: 'automatic' | 'transform' | 'preserve';
1927
+ jsxImportSource?: string;
1928
+ jsxFactory?: string;
1929
+ jsxFragmentFactory?: string;
1930
+ };
1931
+ /** Source of the client entry that registers one island for hydration. */
1932
+ islandEntrySource(args: IIslandEntryArgs): string;
1933
+ }
1934
+ /**
1935
+ * A pluggable UI rendering engine. The default implementation is Preact
1936
+ * (`@wabot-dev/framework/ui`), but any framework can be adapted by implementing
1937
+ * this interface and registering it in {@link UiRendererRegistry}.
1938
+ */
1939
+ interface UiRenderer {
1940
+ /** Unique id, e.g. "preact" or "react". */
1941
+ readonly id: string;
1942
+ /** Render a view's returned node tree to HTML, collecting island usage. */
1943
+ renderToString(node: unknown, context?: IRenderContext): IRenderResult | Promise<IRenderResult>;
1944
+ /** Bundling/hydration config. Required to ship interactive islands. */
1945
+ readonly client?: IUiClientConfig;
1946
+ }
1947
+
1948
+ declare class UiRendererRegistry {
1949
+ private renderers;
1950
+ private defaultRenderer;
1951
+ /** Register a renderer. The first one registered becomes the default. */
1952
+ register(renderer: UiRenderer): void;
1953
+ /** Register a renderer and make it the default. */
1954
+ setDefault(renderer: UiRenderer): void;
1955
+ has(id: string): boolean;
1956
+ hasDefault(): boolean;
1957
+ get(id?: string): UiRenderer;
1958
+ }
1959
+
1960
+ /**
1961
+ * Marker attached to components wrapped with {@link island}. The UI renderer
1962
+ * uses it to decide which components must hydrate on the client; the bundler
1963
+ * uses {@link IslandMeta.id} (assigned from the `*.island.tsx` file location) to
1964
+ * emit a per-island client bundle.
1965
+ */
1966
+ declare const ISLAND_MARKER: unique symbol;
1967
+ interface IslandMeta {
1968
+ /** The original component, rendered for SSR and hydrated on the client. */
1969
+ component: (props: any) => any;
1970
+ /** Human-readable name (component name unless overridden). */
1971
+ name: string;
1972
+ /** Stable bundle id, assigned during island discovery. Undefined until then. */
1973
+ id?: string;
1974
+ }
1975
+ interface IslandComponent<P = any> {
1976
+ (props: P): any;
1977
+ [ISLAND_MARKER]: IslandMeta;
1978
+ }
1979
+ /**
1980
+ * Mark a component as an interactive client "island". The component still
1981
+ * renders on the server, but only islands ship JavaScript and hydrate in the
1982
+ * browser. Islands must be the export of a `*.island.tsx` file so the bundler
1983
+ * can give them a stable id.
1984
+ *
1985
+ * // Counter.island.tsx
1986
+ * function Counter() { ... }
1987
+ * export default island(Counter)
1988
+ */
1989
+ declare function island<P>(component: (props: P) => any, name?: string): IslandComponent<P>;
1990
+ declare function getIslandMeta(component: unknown): IslandMeta | undefined;
1991
+ declare function isIsland(component: unknown): boolean;
1992
+ /** Assign the stable bundle id to an island, done during island discovery. */
1993
+ declare function setIslandId(component: unknown, id: string): void;
1994
+
1995
+ /**
1996
+ * Serialize the props an island was rendered with so the client can hydrate it
1997
+ * with the same data. Drops `children`/`ref`/`key` and any function-valued
1998
+ * props (event handlers belong inside the island, not in its serialized props).
1999
+ */
2000
+ declare function serializeProps(props: Record<string, unknown>): string;
2001
+ declare function deserializeProps(raw: string | undefined | null): Record<string, unknown>;
2002
+
2003
+ interface IDiscoveredIsland {
2004
+ /** Stable id derived from the file's project-relative path. */
2005
+ id: string;
2006
+ /** Absolute path to the island source module. */
2007
+ importPath: string;
2008
+ /** Project-relative posix path (the basis of the id). */
2009
+ relPath: string;
2010
+ }
2011
+ /** Files matching this are treated as islands (default export wrapped with island()). */
2012
+ declare const ISLAND_FILE_PATTERN: RegExp;
2013
+ /** Deterministic, readable, collision-resistant id from a project-relative path. */
2014
+ declare function toIslandId(relPath: string): string;
2015
+ declare function isIslandFile(file: string): boolean;
2016
+ /**
2017
+ * Discovers `*.island.tsx` modules, assigns each a stable id, and stamps that
2018
+ * id onto the imported island component (ESM module singletons mean the view
2019
+ * renders the same instance, so the renderer can read the id during SSR).
2020
+ */
2021
+ declare class IslandRegistry {
2022
+ private islands;
2023
+ private logger;
2024
+ discover(files: string[], cwd?: string): Promise<IDiscoveredIsland[]>;
2025
+ register(island: IDiscoveredIsland): void;
2026
+ list(): IDiscoveredIsland[];
2027
+ get(id: string): IDiscoveredIsland | undefined;
2028
+ get size(): number;
2029
+ }
2030
+
2031
+ interface IDocumentOptions {
2032
+ /** Server-rendered HTML placed inside <body>. */
2033
+ bodyHtml: string;
2034
+ /** Document title. */
2035
+ title?: string;
2036
+ /** <meta name=.. content=..> tags. */
2037
+ meta?: Record<string, string>;
2038
+ /** Stylesheet hrefs rendered as <link rel="stylesheet">. */
2039
+ styles?: string[];
2040
+ /** Extra <link> tags (preload/preconnect/…) as attribute maps. `true` => bare attribute. */
2041
+ links?: Array<Record<string, string | boolean>>;
2042
+ /** Module script srcs rendered as <script type="module">. */
2043
+ scripts?: string[];
2044
+ /** Raw HTML appended to <head> (e.g. inline bootstrap data). */
2045
+ headHtml?: string;
2046
+ /** Raw HTML appended to the end of <body> (e.g. dev live-reload snippet). */
2047
+ bodyEndHtml?: string;
2048
+ /** <html lang>. Defaults to "en". */
2049
+ lang?: string;
2050
+ }
2051
+ /**
2052
+ * Render the default HTML document shell around a view's body. Kept
2053
+ * renderer-agnostic (plain string templating) so it works with any UiRenderer.
2054
+ */
2055
+ declare function renderDocument(options: IDocumentOptions): string;
2056
+
2057
+ declare const REDIRECT_MARKER: unique symbol;
2058
+ interface UiRedirect {
2059
+ readonly [REDIRECT_MARKER]: true;
2060
+ location: string;
2061
+ status: number;
2062
+ }
2063
+ /**
2064
+ * Return this from a @view or @action to send an HTTP redirect instead of
2065
+ * rendering. Used for the post/redirect/get pattern after form actions.
2066
+ */
2067
+ declare function redirect(location: string, status?: number): UiRedirect;
2068
+ declare function isRedirect(value: unknown): value is UiRedirect;
2069
+
2070
+ /** Escape text for safe interpolation into HTML element content. */
2071
+ declare function escapeHtml(value: string): string;
2072
+ /** Escape a value for safe interpolation into a double-quoted HTML attribute. */
2073
+ declare function escapeAttr(value: string): string;
2074
+
2075
+ /** Build the URL of an @action: `<controllerPath>/_action/<actionName>`. */
2076
+ declare function actionUrl(controllerPath: string, actionName: string): string;
2077
+ interface ICallActionOptions {
2078
+ headers?: Record<string, string>;
2079
+ signal?: AbortSignal;
2080
+ }
2081
+ /**
2082
+ * POST JSON to an @action and return its JSON result. Throws on non-2xx with
2083
+ * the server-provided error message. Intended for use from islands; plain
2084
+ * <form action=…> posts also work for progressive enhancement.
2085
+ */
2086
+ declare function callAction<T = unknown>(url: string, data?: unknown, options?: ICallActionOptions): Promise<T>;
2087
+
2088
+ /** Page-level assets (scripts/styles) to inject, computed from the islands a view rendered. */
2089
+ interface IPageAssets {
2090
+ scripts?: string[];
2091
+ styles?: string[];
2092
+ headHtml?: string;
2093
+ bodyEndHtml?: string;
2094
+ /** URL of the boosted-navigation runtime; injected on `app: true` pages. */
2095
+ navScript?: string;
2096
+ }
2097
+ interface IRegisterUiControllersOptions {
2098
+ baseContainer?: DependencyContainer$1;
2099
+ expressProvider?: ExpressProvider;
2100
+ /** Hook used by the bundler/dev server to inject island client bundles + CSS. */
2101
+ pageAssets?: (islands: IRenderedIsland[]) => IPageAssets;
2102
+ }
2103
+ declare function registerUiControllers(controllers: IConstructor<any>[], options?: IRegisterUiControllersOptions): ExpressProvider;
2104
+ declare function runUiControllers(controllers: IConstructor<any>[], options?: IRegisterUiControllersOptions): void;
2105
+
1703
2106
  declare class PgCronJobRepository extends PgCrudRepository<CronJob> implements ICronJobRepository {
1704
2107
  constructor(pool: Pool);
1705
2108
  findDue(date?: Date): Promise<CronJob[]>;
@@ -2074,6 +2477,21 @@ declare class WabotChatAdapter implements IChatAdapter {
2074
2477
  nextItems(req: IChatAdapterNextItemsReq): Promise<IChatAdapterNextItemsRes>;
2075
2478
  }
2076
2479
 
2480
+ declare class XAIChatAdapter implements IChatAdapter {
2481
+ private env;
2482
+ private logger;
2483
+ private client;
2484
+ constructor(env: Env);
2485
+ nextItems(req: IChatAdapterNextItemsReq): Promise<IChatAdapterNextItemsRes>;
2486
+ private mapChatItems;
2487
+ private mapHumanMessage;
2488
+ private mapImage;
2489
+ private mapBotMessage;
2490
+ private mapFunctionCall;
2491
+ private mapTool;
2492
+ private mapResponse;
2493
+ }
2494
+
2077
2495
  declare function cmd(): (target: object, propertyKey: string | symbol) => void;
2078
2496
 
2079
2497
  declare class CmdChannelConfig {
@@ -2183,6 +2601,227 @@ declare function cmdChannelSocketPath(): string;
2183
2601
 
2184
2602
  declare function runCmdClient(): void;
2185
2603
 
2604
+ declare const hubspotChannelName: "HubSpotChannel";
2605
+
2606
+ interface IHubSpotChannelConfig {
2607
+ accessToken: string | ConfigReference<string>;
2608
+ webhookSecret: string | ConfigReference<string>;
2609
+ webhookPath?: string;
2610
+ appId?: string;
2611
+ senderActorId?: string | ConfigReference<string>;
2612
+ }
2613
+
2614
+ declare class HubSpotChannelConfig {
2615
+ readonly channelName: typeof hubspotChannelName;
2616
+ readonly accessToken: string;
2617
+ readonly webhookSecret: string;
2618
+ readonly webhookPath: string;
2619
+ readonly appId: string | undefined;
2620
+ readonly senderActorId: string | undefined;
2621
+ constructor(config: {
2622
+ accessToken: string;
2623
+ webhookSecret: string;
2624
+ webhookPath?: string;
2625
+ appId?: string;
2626
+ senderActorId?: string;
2627
+ });
2628
+ }
2629
+
2630
+ interface IHubSpotReceivedMessage extends IReceivedMessage {
2631
+ channel: typeof hubspotChannelName;
2632
+ }
2633
+
2634
+ interface IHubSpotChannelMessage extends IHubSpotReceivedMessage {
2635
+ chatConnection: IChatConnection;
2636
+ injectInstances?: [any, any][];
2637
+ }
2638
+
2639
+ type IHubSpotWebhookEvent = IHubSpotConversationNewMessageEvent | IHubSpotUnknownEvent;
2640
+ type IHubSpotWebhookEventBatch = IHubSpotWebhookEvent[];
2641
+ interface IHubSpotConversationNewMessageEvent {
2642
+ subscriptionType: 'conversation.creation' | 'conversation.newMessage';
2643
+ portalId: number;
2644
+ appId?: number;
2645
+ occurredAt: number;
2646
+ objectId: string;
2647
+ messageId?: string;
2648
+ message?: IHubSpotConversationMessage;
2649
+ }
2650
+ interface IHubSpotConversationMessage {
2651
+ id: string;
2652
+ threadId: string;
2653
+ direction: 'INCOMING' | 'OUTGOING';
2654
+ channel?: string;
2655
+ channelId?: string;
2656
+ channelAccountId?: string;
2657
+ text?: string;
2658
+ richText?: string;
2659
+ from?: IHubSpotActor;
2660
+ recipients?: IHubSpotActor[];
2661
+ attachments?: IHubSpotAttachment[];
2662
+ }
2663
+ interface IHubSpotActor {
2664
+ actorId: string;
2665
+ name?: string;
2666
+ recipientField?: string;
2667
+ senderField?: string;
2668
+ }
2669
+ interface IHubSpotAttachment {
2670
+ id: string;
2671
+ name?: string;
2672
+ mimeType?: string;
2673
+ url?: string;
2674
+ fileId?: string;
2675
+ }
2676
+ interface IHubSpotUnknownEvent {
2677
+ subscriptionType: string;
2678
+ [key: string]: unknown;
2679
+ }
2680
+
2681
+ interface IHubSpotMessagePayload {
2682
+ threadId: string;
2683
+ messageId: string;
2684
+ senderId: string;
2685
+ senderName?: string;
2686
+ channel?: string;
2687
+ channelId?: string;
2688
+ channelAccountId?: string;
2689
+ text?: string;
2690
+ files: IChatMessageFile[];
2691
+ metadata: Record<string, string>;
2692
+ }
2693
+
2694
+ interface IVerifyHubSpotSignatureV3Options {
2695
+ secret: string;
2696
+ method: string;
2697
+ url: string;
2698
+ rawBody: string;
2699
+ timestampHeader: string;
2700
+ signatureHeader: string;
2701
+ }
2702
+ declare function verifyHubSpotSignatureV3(opts: IVerifyHubSpotSignatureV3Options): boolean;
2703
+
2704
+ interface IDownloadHubSpotAttachmentsOptions {
2705
+ accessToken: string;
2706
+ logger?: Logger;
2707
+ }
2708
+ declare function downloadHubSpotAttachments(attachments: IHubSpotAttachment[] | undefined, options: IDownloadHubSpotAttachmentsOptions): Promise<IChatMessageFile[]>;
2709
+
2710
+ interface IHubSpotSendMessageRequest {
2711
+ threadId: string;
2712
+ text?: string;
2713
+ richText?: string;
2714
+ files?: IChatMessageFile[];
2715
+ senderActorId?: string;
2716
+ channelId?: string;
2717
+ channelAccountId?: string;
2718
+ }
2719
+ interface IHubSpotSendMessageResult {
2720
+ messageId: string;
2721
+ }
2722
+ declare class HubSpotSender {
2723
+ private client;
2724
+ private accessToken;
2725
+ private baseUrl;
2726
+ private logger;
2727
+ private defaultSenderActorId;
2728
+ constructor(config: HubSpotChannelConfig, client?: Client);
2729
+ sendMessage(req: IHubSpotSendMessageRequest): Promise<IHubSpotSendMessageResult>;
2730
+ private uploadFile;
2731
+ }
2732
+
2733
+ type IHubSpotMessageListener = (payload: IHubSpotMessagePayload) => Promise<void>;
2734
+ interface IHubSpotWebhookControllerDeps {
2735
+ webhookSecret: string;
2736
+ accessToken: string;
2737
+ listener: IHubSpotMessageListener;
2738
+ channelName: string;
2739
+ }
2740
+ declare class HubSpotWebhookController {
2741
+ private logger;
2742
+ private webhookSecret;
2743
+ private accessToken;
2744
+ private listener;
2745
+ private channelName;
2746
+ constructor(deps: IHubSpotWebhookControllerDeps);
2747
+ handleWebhook(req: IncomingMessage): Promise<null>;
2748
+ private dispatch;
2749
+ }
2750
+
2751
+ declare class HubSpotReceiver {
2752
+ private config;
2753
+ private listener;
2754
+ constructor(config: HubSpotChannelConfig);
2755
+ listenMessage(listener: IHubSpotMessageListener): void;
2756
+ connect(): void;
2757
+ disconnect(): void;
2758
+ }
2759
+
2760
+ declare class HubSpotChannel implements IChatChannel {
2761
+ static channelName: "HubSpotChannel";
2762
+ private logger;
2763
+ private sender;
2764
+ private receiver;
2765
+ private accessToken;
2766
+ private webhookSecret;
2767
+ private appId;
2768
+ constructor(config: HubSpotChannelConfig, env: Env);
2769
+ listen(callback: (message: IHubSpotChannelMessage) => Promise<void>): void;
2770
+ connect(): void;
2771
+ disconnect(): void;
2772
+ private toChannelMessage;
2773
+ }
2774
+
2775
+ declare function markdownToChatHtml(input: string): string;
2776
+
2777
+ declare function hubspot(config: IHubSpotChannelConfig): (target: object, propertyKey: string | symbol) => void;
2778
+
2779
+ interface ISlackChannelConfig {
2780
+ appToken: string | ConfigReference<string>;
2781
+ botToken: string | ConfigReference<string>;
2782
+ signingSecret?: string | ConfigReference<string>;
2783
+ }
2784
+ declare class SlackChannelConfig {
2785
+ readonly appToken: string;
2786
+ readonly botToken: string;
2787
+ readonly signingSecret?: string | undefined;
2788
+ constructor(appToken: string, botToken: string, signingSecret?: string | undefined);
2789
+ }
2790
+
2791
+ declare function slack(config: ISlackChannelConfig): (target: object, propertyKey: string | symbol) => void;
2792
+
2793
+ declare const slackChannelName: "SlackChannel";
2794
+
2795
+ interface ISlackReceivedMessage extends IReceivedMessage {
2796
+ channel: typeof slackChannelName;
2797
+ }
2798
+
2799
+ interface ISlackChannelMessage extends ISlackReceivedMessage {
2800
+ chatConnection: IChatConnection;
2801
+ injectInstances?: [any, any][];
2802
+ }
2803
+
2804
+ declare class SlackChannel implements IChatChannel {
2805
+ private config;
2806
+ static channelName: "SlackChannel";
2807
+ private app;
2808
+ private callback;
2809
+ private logger;
2810
+ private userNameCache;
2811
+ constructor(config: SlackChannelConfig);
2812
+ listen(callback: (message: ISlackChannelMessage) => Promise<void>): void;
2813
+ private handleMessage;
2814
+ private buildChatConnection;
2815
+ private buildReply;
2816
+ private extractMedia;
2817
+ private downloadFile;
2818
+ private resolveUserName;
2819
+ connect(): void;
2820
+ disconnect(): void;
2821
+ }
2822
+
2823
+ declare function markdownToSlackMrkdwn(input: string): string;
2824
+
2186
2825
  interface ISocketChannelConfig {
2187
2826
  namespace: string | ConfigReference<string>;
2188
2827
  handshakeMidlewares?: IConstructor<IHandshakeMiddleware>[];
@@ -2279,8 +2918,6 @@ declare class TelegramChannel implements IChatChannel {
2279
2918
  disconnect(): void;
2280
2919
  }
2281
2920
 
2282
- declare function markdownToTelegramHtml(input: string): string;
2283
-
2284
2921
  interface IWhatsAppCloudTemplateResponse {
2285
2922
  data: IWhatsAppCloudTemplate[];
2286
2923
  paging: IWhatsAppCloudApiPaging;
@@ -2722,4 +3359,4 @@ declare function HtmlModule(options: IHtmlModuleOptions): {
2722
3359
  new (): {};
2723
3360
  };
2724
3361
 
2725
- export { AnthropicChatAdapter, ApiKey, ApiKeyGuardMiddleware, ApiKeyHandshakeGuardMiddleware, ApiKeyRepository, Async, AsyncMetadataStore, Auth, Chat, ChatAdapter, ChatAdapterMetadataStore, ChatAdapterRegistry, ChatBot, ChatBotMetadataStore, ChatItem, ChatMemory, ChatOperator, ChatRepository, ChatResolver, type ClientMap, CmdChannel, CmdChannelConfig, CmdChannelServer, type CmdClientMessage, type CmdServerMessage, type ConfigReference, type ConfigReferenceType, ConfigResolver, Container, ControllerMetadataStore, CronJob, CronJobRepository, CrudRepository, CustomError, DeepSeekChatAdapter, DescriptionMetadataStore, EXPRESS_REQ, EXPRESS_RES, Entity, Env, type ErrorSeverity, ExpressProvider, GoogleChatAdapter, type GoogleChatAdapterV2Options, HtmlModule, HttpServerProvider, type IApiKeyData, type IApiKeyRepository, type IArrayValidationError, type IArrayValidationResult, type IBotMessageItem, type IBuiltQuery, type IChannelMessage, type IChannelMetadata, type IChatAdapter, type IChatAdapterDecoratorConfig, type IChatAdapterMetadata, type IChatAdapterNextItemsReq, type IChatAdapterNextItemsRes, type IChatAssociation, type IChatBot, type IChatBotMetadata, type IChatChannel, type IChatConnection, type IChatControllerMetadata, type IChatData, type IChatItem, type IChatItemData, type IChatItemType, type IChatMemory, type IChatMessage, type IChatMessageDocument, type IChatMessageFile, type IChatMessageImage, type IChatMessagesPrivateFile, type IChatMessagesPublicFile, type IChatRepository, type IChatType, type ICmdChannelEntry, type ICmdChannelHandlers, type ICmdChannelMessage, type ICmdImage, type ICmdIncomingMessage, type ICmdReceivedMessage, type ICommandConfig, type ICommandHandler, type ICommandHandlerConfig, type IConstructor, type ICronConfig, type ICronHandler, type ICronJobData, type ICronJobRepository, type ICrudRepository, type ICustomErrorData, type IDedupConfig, type IDescriptionMetadata, type IEndPointConfig, type IEndPointMetadata, type IEntityData, type IEnvType, type IErrorHandlersConfig, type IErrorMonitor, type IErrorMonitorContext, type IExtractChatMessageTextOptions, type IFunctionCall, type IFunctionCallItem, type IGenerateApiKeyReq, type IGenerateApiKeyRes, type IHandshakeMiddleware, type IHandshakeMiddlewareMetadata, type IHtmlModuleOptions, type IHumanMessageItem, type IJobData, type IJobOptions, type IJobRepository, type IJwtRefreshTokenData, type IJwtRefreshTokenRepository, type IKapsoChannelConfig, type IKapsoChannelMessage, type IKapsoChannelMessageListener, type IKapsoChatMessage, type IKapsoConversation, type IKapsoEvent, type IKapsoIncomingMessage, type IKapsoMessageReceivedEvent, type IKapsoReceivedMessage, type IKapsoUnknownEvent, type ILanguageModelUsage, type ILockKey, type ILocker, type ILockerKey, type IMemoryRepositoryAdapterOptions, type IMessageContext, type IMiddleware, type IMiddlewareMetadata, type IMindset, type IMindsetConfig, type IMindsetIdentity, type IMindsetLlm, type IMindsetMetadata, type IMindsetModelKind, type IMindsetModelRef, type IMindsetModels, type IMindsetModuleConfig, type IMindsetModuleMetadata, type IMindsetParameterSchema, type IMindsetTool, type IMindsetToolParameter, type IModelValidationError, type IModelValidationResult, type IModelValidatorsInfo, type IMoneyData, type IPersistentData, type IPgRepositoryConfig, type IProjectRunnerConfig, type IPropertyValidatorInfo, type IQueryAst, type IQueryCondition, type IQueryMethodMetadata, type IQueryOrderBy, type IReceivedMessage, type IRemoteApiKeyFetcher, type IRepositoryAdapter, type IRepositoryConfig, type IRepositoryRuntime, type IRestControllerConfig, type IRestControllerMetadata, type IScanProjectFilesOptions, type IScheduleAt, type IScheduleDelay, type ISendWhatsAppMessageReq, type ISendWhatsAppTemplateReq, type ISocketChannelConfig, type ISocketChannelMessage, type ISocketChannelReceivedMessage, type ISocketControllerConfig, type ISocketControllerMetadata, type ISocketEventConfig, type ISocketEventMetadata, type ISocketReceivedMessage, type IStorableData, type ITelegramChannelConfig, type ITelegramChannelMessage, type ITelegramReceivedMessage, type ITransactionAdapter, type IValidateArrayOptions, type IValidateArrayOptionsWithItemsValidators, type IValidateInputShape, type IValidateIsInOptions, type IValidateIsRecordOptions, type IValidateMaxOptions, type IValidateMinOptions, type IValidationError, type IValidationResult, type IValidator, type IValidatorMetadata, type IWasenderChannelConfig, type IWasenderChannelMessageListener, type IWasenderDeviceListMetadata, type IWasenderEvent, type IWasenderMessageContent, type IWasenderMessageContextInfo, type IWasenderMessageKey, type IWasenderMessageReceivedData, type IWasenderMessageReceivedEvent, type IWasenderQrUpdatedEvent, type IWasenderReceivedMessage, type IWhatsAppCloudContact, type IWhatsAppCloudMessage, type IWhatsAppCloudMessageMetadata, type IWhatsAppCloudTemplate, type IWhatsAppCloudTemplateComponent, type IWhatsAppCloudTemplateResponse, type IWhatsAppCloudWebhookPayload, type IWhatsAppSender, type IWhatsAppTemplateData, type IWhatsAppTemplateParameter, type IchatControllerConfig, InMemoryChatMemory, InMemoryChatRepository, InMemoryCronJobRepository, InMemoryJobRepository, InMemoryLockKey, InMemoryLocker, Job, JobRepository, JobRunner, Jwt, JwtAccessAndRefreshTokenDto, JwtConfig, JwtGuardMiddleware, JwtHandshakeGuardMiddleware, JwtRefreshToken, JwtRefreshTokenRepository, JwtSigner, JwtTokenDto, KapsoChannel, KapsoChannelConfig, KapsoReceiver, KapsoSender, KapsoWebhookController, Lifecycle, Locker, Logger, MEMORY_ADAPTER_ID, Mapper, MemoryRepositoryAdapter, MemoryRepositoryExtension, Mindset, MindsetMetadataStore, MindsetOperator, Money, MoneyDto, OpenRouterChatAdapter, OpenaiChatAdapter, PG_ADAPTER_ID, Password, type PasswordHashOptions, Persistent, PgApiKeyRepository, PgChatMemory, PgChatRepository, PgCronJobRepository, PgCrudRepository, PgJobRepository, PgJsonRepositoryAdapter, PgJwtRefreshTokenRepository, PgLockKey, PgLocker, PgRepositoryBase, PgRepositoryBase as PgRepositoryExtension, PgTransactionAdapter, ProjectRunner, type QueryConnector, type QueryOperator, type QueryPrefix, Random, RemoteApiKeyRepository, RepositoryAdapterRegistry, RepositoryMetadataStore, type ResolvedConfig, RestControllerMetadataStore, RestRequest, SocketChannel, SocketChannelConfig, SocketChannelMessageFile, SocketChannelReceivedMessage, SocketControllerMetadataStore, SocketServerConfig, SocketServerProvider, Storable, TelegramChannel, TelegramChannelConfig, TransactionMetadataStore, UnionChatAdapter, ValidationMetadataStore, WabotChatAdapter, WasenderChannel, WasenderChannelConfig, WasenderReceiver, WasenderSender, WasenderWebhookController, WhatsAppApiSender, WhatsAppReceiverByCloudApi, WhatsAppSender, apiKeyGuard, apiKeyHandshakeGuard, bool, boolArr, buildQuerySql, chatAdapter, chatBot, chatController, chatItemTypeOptions, cmd, cmdChannelName, cmdChannelSocketPath, command, commandHandler, computeDedupKey, container, cronHandler, description, errorToPlainObject, evaluateQueryAst, extractChatMessageText, extractNumberFromWasenderMessageKey, getClientMap, getPgClient, handshakeMiddlewares, inject, injectable, isArray, isBoolean, isChatMessageEmpty, isDate, isIn, isModel, isNotEmpty, isNumber, isOptional, isPresent, isRecord, isRetryableError, isString, jwtGuard, jwtHandshakeGuard, kapso, kapsoChannelName, markdownToTelegramHtml, max, memExtension, middleware, min, mindset, mindsetModule, modelInfo, num, numArr, obj, onDelete, onGet, onPost, onPut, onSocketEvent, parseQueryMethodName, pendingMediaStartIndex, pgExtension, pgStorage, query, queryExtension, readJsonFromFile, repository, resolveConfigReferences, restController, run, runChatAdapters, runChatControllers, runCmdClient, runCommandHandlers, runCronHandlers, runRestControllers, runSocketControllers, safeJsonParse, scanProjectFiles, scoped, setupErrorHandlers, singleton, socket, socketChannelName, socketController, stopCommandHandlers, stopCronHandlers, str, strArr, stripAnsweredMedia, telegram, telegramChannelName, transaction, validateAndTransform, validateArray, validateIsBoolean, validateIsDate, validateIsIn, validateIsNotEmpty, validateIsNumber, validateIsPresent, validateIsRecord, validateIsString, validateMax, validateMin, validateModel, wasender, wasenderChannelName, withPgClient, withPgTransaction, writeJsonToFile };
3362
+ export { AnthropicChatAdapter, ApiKey, ApiKeyGuardMiddleware, ApiKeyHandshakeGuardMiddleware, ApiKeyRepository, Async, AsyncMetadataStore, Auth, Chat, ChatAdapter, ChatAdapterMetadataStore, ChatAdapterRegistry, ChatBot, ChatBotMetadataStore, ChatItem, ChatMemory, ChatOperator, ChatRepository, ChatResolver, type ClientMap, CmdChannel, CmdChannelConfig, CmdChannelServer, type CmdClientMessage, type CmdServerMessage, type ConfigReference, type ConfigReferenceType, ConfigResolver, Container, ControllerMetadataStore, CronJob, CronJobRepository, CrudRepository, CustomError, DeepSeekChatAdapter, DescriptionMetadataStore, EXPRESS_REQ, EXPRESS_RES, Entity, Env, type ErrorSeverity, ExpressProvider, GoogleChatAdapter, type GoogleChatAdapterV2Options, HtmlModule, HttpServerProvider, HubSpotChannel, HubSpotChannelConfig, HubSpotReceiver, HubSpotSender, HubSpotWebhookController, type IActionConfig, type IActionMetadata, type IApiKeyData, type IApiKeyRepository, type IArrayValidationError, type IArrayValidationResult, type IBotMessageItem, type IBuiltQuery, type ICallActionOptions, type IChannelMessage, type IChannelMetadata, type IChatAdapter, type IChatAdapterDecoratorConfig, type IChatAdapterMetadata, type IChatAdapterNextItemsReq, type IChatAdapterNextItemsRes, type IChatAssociation, type IChatBot, type IChatBotMetadata, type IChatChannel, type IChatConnection, type IChatControllerMetadata, type IChatData, type IChatItem, type IChatItemData, type IChatItemType, type IChatMemory, type IChatMessage, type IChatMessageDocument, type IChatMessageFile, type IChatMessageImage, type IChatMessagesPrivateFile, type IChatMessagesPublicFile, type IChatRepository, type IChatType, type ICmdChannelEntry, type ICmdChannelHandlers, type ICmdChannelMessage, type ICmdImage, type ICmdIncomingMessage, type ICmdReceivedMessage, type ICommandConfig, type ICommandHandler, type ICommandHandlerConfig, type IConstructor, type IControllerHead, type ICronConfig, type ICronHandler, type ICronJobData, type ICronJobRepository, type ICrudRepository, type ICustomErrorData, type IDedupConfig, type IDescriptionMetadata, type IDiscoveredIsland, type IDocumentOptions, type IDownloadHubSpotAttachmentsOptions, type IEndPointConfig, type IEndPointMetadata, type IEntityData, type IEnvType, type IErrorHandlersConfig, type IErrorMonitor, type IErrorMonitorContext, type IExtractChatMessageTextOptions, type IFunctionCall, type IFunctionCallItem, type IGenerateApiKeyReq, type IGenerateApiKeyRes, type IHandshakeMiddleware, type IHandshakeMiddlewareMetadata, type IHtmlModuleOptions, type IHubSpotActor, type IHubSpotAttachment, type IHubSpotChannelConfig, type IHubSpotChannelMessage, type IHubSpotConversationMessage, type IHubSpotConversationNewMessageEvent, type IHubSpotMessageListener, type IHubSpotMessagePayload, type IHubSpotReceivedMessage, type IHubSpotSendMessageRequest, type IHubSpotSendMessageResult, type IHubSpotUnknownEvent, type IHubSpotWebhookControllerDeps, type IHubSpotWebhookEvent, type IHubSpotWebhookEventBatch, type IHumanMessageItem, type IIslandEntryArgs, type IJobData, type IJobOptions, type IJobRepository, type IJwtRefreshTokenData, type IJwtRefreshTokenRepository, type IKapsoChannelConfig, type IKapsoChannelMessage, type IKapsoChannelMessageListener, type IKapsoChatMessage, type IKapsoConversation, type IKapsoEvent, type IKapsoIncomingMessage, type IKapsoMessageReceivedEvent, type IKapsoReceivedMessage, type IKapsoUnknownEvent, type ILanguageModelUsage, type ILockKey, type ILocker, type ILockerKey, type IMemoryRepositoryAdapterOptions, type IMessageContext, type IMiddleware, type IMiddlewareMetadata, type IMindset, type IMindsetConfig, type IMindsetIdentity, type IMindsetLlm, type IMindsetMetadata, type IMindsetModelKind, type IMindsetModelRef, type IMindsetModels, type IMindsetModuleConfig, type IMindsetModuleMetadata, type IMindsetParameterSchema, type IMindsetTool, type IMindsetToolParameter, type IModelValidationError, type IModelValidationResult, type IModelValidatorsInfo, type IMoneyData, type IPageAssets, type IPersistentData, type IPgRepositoryConfig, type IPreconnect, type IPreloadLink, type IProjectRunnerConfig, type IPropertyValidatorInfo, type IQueryAst, type IQueryCondition, type IQueryMethodMetadata, type IQueryOrderBy, type IReceivedMessage, type IRegisterRestControllersOptions, type IRegisterUiControllersOptions, type IRemoteApiKeyFetcher, type IRenderContext, type IRenderResult, type IRenderedIsland, type IRepositoryAdapter, type IRepositoryConfig, type IRepositoryRuntime, type IRestControllerConfig, type IRestControllerMetadata, ISLAND_FILE_PATTERN, ISLAND_MARKER, type IScanProjectFilesOptions, type IScheduleAt, type IScheduleDelay, type ISendWhatsAppMessageReq, type ISendWhatsAppTemplateReq, type ISlackChannelConfig, type ISlackChannelMessage, type ISlackReceivedMessage, type ISocketChannelConfig, type ISocketChannelMessage, type ISocketChannelReceivedMessage, type ISocketControllerConfig, type ISocketControllerMetadata, type ISocketEventConfig, type ISocketEventMetadata, type ISocketReceivedMessage, type IStorableData, type ITelegramChannelConfig, type ITelegramChannelMessage, type ITelegramReceivedMessage, type ITransactionAdapter, type IUiClientConfig, type IUiControllerConfig, type IUiControllerMetadata, type IUiMiddlewareMetadata, type IUiRunnerConfig, type IValidateArrayOptions, type IValidateArrayOptionsWithItemsValidators, type IValidateInputShape, type IValidateIsInOptions, type IValidateIsRecordOptions, type IValidateMaxOptions, type IValidateMinOptions, type IValidationError, type IValidationResult, type IValidator, type IValidatorMetadata, type IVerifyHubSpotSignatureV3Options, type IViewConfig, type IViewMetadata, type IWasenderChannelConfig, type IWasenderChannelMessageListener, type IWasenderDeviceListMetadata, type IWasenderEvent, type IWasenderMessageContent, type IWasenderMessageContextInfo, type IWasenderMessageKey, type IWasenderMessageReceivedData, type IWasenderMessageReceivedEvent, type IWasenderQrUpdatedEvent, type IWasenderReceivedMessage, type IWhatsAppCloudContact, type IWhatsAppCloudMessage, type IWhatsAppCloudMessageMetadata, type IWhatsAppCloudTemplate, type IWhatsAppCloudTemplateComponent, type IWhatsAppCloudTemplateResponse, type IWhatsAppCloudWebhookPayload, type IWhatsAppSender, type IWhatsAppTemplateData, type IWhatsAppTemplateParameter, type IchatControllerConfig, InMemoryChatMemory, InMemoryChatRepository, InMemoryCronJobRepository, InMemoryJobRepository, InMemoryLockKey, InMemoryLocker, type IslandComponent, type IslandMeta, IslandRegistry, Job, JobRepository, JobRunner, Jwt, JwtAccessAndRefreshTokenDto, JwtConfig, JwtGuardMiddleware, JwtHandshakeGuardMiddleware, JwtRefreshToken, JwtRefreshTokenRepository, JwtSigner, JwtTokenDto, KapsoChannel, KapsoChannelConfig, KapsoReceiver, KapsoSender, KapsoWebhookController, Lifecycle, Locker, Logger, MEMORY_ADAPTER_ID, Mapper, MemoryRepositoryAdapter, MemoryRepositoryExtension, Mindset, MindsetMetadataStore, MindsetOperator, Money, MoneyDto, OpenRouterChatAdapter, OpenaiChatAdapter, PG_ADAPTER_ID, Password, type PasswordHashOptions, Persistent, PgApiKeyRepository, PgChatMemory, PgChatRepository, PgCronJobRepository, PgCrudRepository, PgJobRepository, PgJsonRepositoryAdapter, PgJwtRefreshTokenRepository, PgLockKey, PgLocker, PgRepositoryBase, PgRepositoryBase as PgRepositoryExtension, PgTransactionAdapter, ProjectRunner, type QueryConnector, type QueryOperator, type QueryPrefix, REDIRECT_MARKER, Random, RemoteApiKeyRepository, RepositoryAdapterRegistry, RepositoryMetadataStore, type ResolvedConfig, RestControllerMetadataStore, RestRequest, SlackChannel, SlackChannelConfig, SocketChannel, SocketChannelConfig, SocketChannelMessageFile, SocketChannelReceivedMessage, SocketControllerMetadataStore, SocketServerConfig, SocketServerProvider, Storable, TelegramChannel, TelegramChannelConfig, TransactionMetadataStore, UiControllerMetadataStore, type UiRedirect, type UiRenderer, UiRendererRegistry, UnionChatAdapter, ValidationMetadataStore, WabotChatAdapter, WasenderChannel, WasenderChannelConfig, WasenderReceiver, WasenderSender, WasenderWebhookController, WhatsAppApiSender, WhatsAppReceiverByCloudApi, WhatsAppSender, XAIChatAdapter, action, actionUrl, apiKeyGuard, apiKeyHandshakeGuard, bool, boolArr, buildQuerySql, callAction, chatAdapter, chatBot, chatController, chatItemTypeOptions, cmd, cmdChannelName, cmdChannelSocketPath, command, commandHandler, computeDedupKey, container, cronHandler, description, deserializeProps, downloadHubSpotAttachments, errorToPlainObject, escapeAttr, escapeHtml, evaluateQueryAst, extractChatMessageText, extractNumberFromWasenderMessageKey, getClientMap, getIslandMeta, getPgClient, handshakeMiddlewares, hubspot, hubspotChannelName, inject, injectable, isArray, isBoolean, isChatMessageEmpty, isDate, isIn, isIsland, isIslandFile, isModel, isNotEmpty, isNumber, isOptional, isPresent, isRecord, isRedirect, isRetryableError, isString, island, jwtGuard, jwtHandshakeGuard, kapso, kapsoChannelName, markdownToChatHtml as markdownToHubSpotHtml, markdownToSlackMrkdwn, markdownToChatHtml as markdownToTelegramHtml, max, memExtension, middleware, min, mindset, mindsetModule, modelInfo, num, numArr, obj, onDelete, onGet, onPost, onPut, onSocketEvent, parseQueryMethodName, pendingMediaStartIndex, pgExtension, pgStorage, prepareChatContainer, query, queryExtension, readJsonFromFile, redirect, registerRestControllers, registerUiControllers, renderDocument, repository, resolveConfigReferences, restController, run, runChatAdapters, runChatControllers, runCmdClient, runCommandHandlers, runCronHandlers, runRestControllers, runSocketControllers, runUiControllers, safeJsonParse, scanProjectFiles, scoped, serializeProps, setIslandId, setupErrorHandlers, singleton, slack, slackChannelName, socket, socketChannelName, socketController, stopCommandHandlers, stopCronHandlers, str, strArr, stripAnsweredMedia, telegram, telegramChannelName, toIslandId, transaction, uiController, uiMiddleware, validateAndTransform, validateArray, validateIsBoolean, validateIsDate, validateIsIn, validateIsNotEmpty, validateIsNumber, validateIsPresent, validateIsRecord, validateIsString, validateMax, validateMin, validateModel, verifyHubSpotSignatureV3, view, wasender, wasenderChannelName, withPgClient, withPgTransaction, writeJsonToFile };