{"version":3,"sources":["../../agent/client/builder.ts","../../plugins/client/builder.ts","../../plugins/defaults/generation/client.ts","../../plugins/defaults/memories/client.ts","../../plugins/defaults/stores/client.ts","../../exports/client.ts"],"sourcesContent":["import type z from \"zod\";\nimport { defaults } from \"@/exports/client\";\nimport type { PluginClientConfig, PluginClientDefinition } from \"@/plugins/client/types\";\nimport { toMethodName } from \"@/shared/method-name\";\nimport type { Override } from \"@/shared/types\";\nimport type { AgentDefinition } from \"../server/types\";\nimport type { AgentClientDefinition, TypedAgentClientBuilder } from \"./types\";\n\nexport class AgentClientBuilder<\n  const AgentClientDef extends AgentClientDefinition,\n  Excluded extends string = never,\n> {\n  readonly def: AgentClientDef;\n\n  constructor(definition: AgentClientDef) {\n    this.def = definition;\n  }\n\n  /**\n   * Register plugins to extend the agent client features.\n   * Defaults to `[generation, memories, stores, actions, percepts]` plugins if not specified.\n   *\n   * In case you want to register custom plugins and still keep the defaults you can do:\n   * ```ts\n   * import { defaults } from \"life/server\";\n   *\n   * defineAgent(\"my-agent\").plugins([...defaults.plugins, myCustomPlugin]);\n   * ```\n   *\n   * Or if you want only some of the defaults, you can do:\n   * ```ts\n   * import { defaults } from \"life/server\";\n   *\n   * defineAgent(\"my-agent\").plugins([defaults.plugins.generation, defaults.plugins.memories]);\n   * ```\n   */\n  plugins<const Plugins extends { def: PluginClientDefinition }[]>(plugins: Plugins) {\n    const builder = new AgentClientBuilder({ ...this.def, plugins: plugins.map((p) => p.def) });\n    const builderWithPlugins = AgentClientBuilder.withPluginsMethods(builder);\n    return builderWithPlugins as TypedAgentClientBuilder<\n      Override<\n        Override<\n          AgentClientDef,\n          \"plugins\",\n          {\n            [K in keyof Plugins]: Plugins[K][\"def\"];\n          }\n        >,\n        \"pluginConfigs\",\n        {\n          [K in Plugins[number] as K[\"def\"][\"name\"]]: PluginClientConfig<\n            K[\"def\"][\"config\"],\n            \"output\"\n          >;\n        }\n      >,\n      Excluded | \"plugins\"\n    >;\n  }\n\n  // biome-ignore lint/suspicious/noExplicitAny: reason\n  static withPluginsMethods<Builder extends AgentClientBuilder<any, any>>(builder: Builder) {\n    for (const plugin of builder.def.plugins) {\n      Object.assign(builder, {\n        [toMethodName(plugin.name)]: (\n          config: z.input<PluginClientDefinition[\"config\"][\"schema\"]>,\n        ): unknown => {\n          const newBuilder = new AgentClientBuilder({\n            ...builder.def,\n            pluginConfigs: {\n              ...(builder.def.pluginConfigs ?? {}),\n              [plugin.name]: config,\n            },\n          });\n          return AgentClientBuilder.withPluginsMethods(newBuilder);\n        },\n      });\n    }\n    return builder;\n  }\n}\n\n// Helper function to define a agent client\nexport function defineAgentClient<const ServerAgent extends { def: AgentDefinition }>(\n  name: ServerAgent[\"def\"][\"name\"],\n) {\n  const defaultDefinition = {\n    name,\n    plugins: [...defaults.plugins].map((p) => p.def),\n    pluginConfigs: {},\n    $serverDef: {} as ServerAgent[\"def\"],\n  } as const satisfies AgentClientDefinition;\n  const builder = new AgentClientBuilder(defaultDefinition);\n  const builderWithPlugins = AgentClientBuilder.withPluginsMethods(builder);\n  return builderWithPlugins as TypedAgentClientBuilder<typeof builderWithPlugins.def, never>;\n}\n","import { z } from \"zod\";\nimport type { Any, Override, Without } from \"@/shared/types\";\nimport { type ZodObjectWithTelemetry, zodObjectWithTelemetry } from \"@/telemetry/helpers/zod\";\nimport type { PluginDefinition } from \"../server/types\";\nimport type {\n  PluginClientAtomsDefinition,\n  PluginClientDefinition,\n  PluginClientExtensionDefinition,\n  TypedPluginClientBuilder,\n} from \"./types\";\n\n/**\n * ### `definePluginClientConfig()`\n *\n * Standalone version of `definePluginClient().config()` used to break down plugin client definition.\n *\n * Its output must then be passed to `definePluginClient().$config()`.\n *\n * @example\n * ```ts\n * const configDef = definePluginClientConfig({ schema: z.object({ name: z.string() }) });\n * const pluginClient = definePluginClient(\"my-plugin\").$config(configDef); // <-- Here\n *\n * // Equivalent to:\n * const pluginClient = definePluginClient(\"my-plugin\").config({ schema: z.object({ name: z.string() }) }); // <-- Here\n * ```\n * &nbsp;\n *\n * ---\n * @returns The config definition.\n */\nexport const definePluginClientConfig = <Schema extends z.ZodObject>(\n  definition: ZodObjectWithTelemetry<Schema, \"input\">,\n) => zodObjectWithTelemetry(definition);\n\n/**\n * Builder class for the plugin client definition.\n * Do not use directly, use `definePluginClient()` instead.\n */\nexport class PluginClientBuilder<\n  PluginClientDef extends PluginClientDefinition,\n  Excluded extends string = never,\n> {\n  readonly def: PluginClientDef;\n\n  constructor(definition: PluginClientDef) {\n    this.def = definition;\n  }\n\n  /**\n   * ### `.dependencies()`\n   *\n   * Specify other plugins clients as required by this plugin client.\n   *\n   * Their config, atoms, and class can then be accessed from `dependencies.*` inside the plugin client's class and atoms.\n   *\n   * @see TODO: Add docs link\n   *\n   * @example\n   * ```ts\n   * const pluginClient = definePluginClient(\"my-plugin\")\n   *    .dependencies([anotherPluginClient])\n   *    .atoms(({ dependencies }) => {\n   *        // Obtain the atoms of the dependency plugin client\n   *        const anotherPluginAtoms = dependencies.anotherPlugin.atoms();\n   *        // ...\n   *    });\n   * ```\n   * &nbsp;\n   *\n   * ---\n   * @param plugins - The dependencies definitions.\n   * @returns TypedPluginClientBuilder\n   */\n  dependencies<Plugins extends { def: PluginClientDefinition }[]>(plugins: Plugins) {\n    const dependencies = plugins.map((p) => p.def);\n    const builder = new PluginClientBuilder({ ...this.def, dependencies });\n    return builder as TypedPluginClientBuilder<\n      Override<\n        PluginClientDef,\n        \"dependencies\",\n        {\n          [K in keyof Plugins]: Without<Plugins[K][\"def\"], \"dependencies\">;\n        }\n      >,\n      Excluded | \"dependencies\"\n    >;\n  }\n\n  /**\n   * ### `.config()`\n   *\n   * Add a configuration that users can provide to tweak plugin client's behavior.\n   *\n   * @see TODO: Add docs link\n   *\n   * @example\n   * ```ts\n   * const myPluginClient = definePluginClient(\"my-plugin\")\n   *    .config({ schema: z.object({ refreshRate: z.number() }) });\n   *\n   * const myAgentClient = defineAgentClient(\"my-agent\")\n   *    .plugins([myPluginClient])\n   *    .myPlugin({ refreshRate: 1000 }); // <-- Here\n   * ```\n   * &nbsp;\n   *\n   * ---\n   *\n   * The provided config can then be accessed from `plugin.config` inside atoms and class.\n   *\n   * @example\n   * ```ts\n   * const pluginClient = definePluginClient(\"my-plugin\")\n   *    .config({ schema: z.object({ refreshRate: z.number() }) });\n   *    .atoms(({ config }) => {\n   *        const refreshRate = config.refreshRate; // <-- Here\n   *    });\n   * ```\n   * &nbsp;\n   *\n   * ---\n   * @param config - The config definition.\n   * @returns TypedPluginClientBuilder\n   */\n  config<Schema extends z.ZodObject>(config: ZodObjectWithTelemetry<Schema, \"input\">) {\n    return this.$config(zodObjectWithTelemetry(config));\n  }\n\n  /**\n   * ### `.$config()`\n   *\n   * Define plugin client config from the output of `definePluginClientConfig()`.\n   *\n   * @see TODO: Add docs link for `definePluginClientConfig()`\n   *\n   * ---\n   * @param config - The config definition.\n   * @returns TypedPluginClientBuilder\n   */\n  $config<ConfigDef extends ZodObjectWithTelemetry<z.ZodObject, \"output\">>(config: ConfigDef) {\n    const builder = new PluginClientBuilder({ ...this.def, config });\n    return builder as TypedPluginClientBuilder<\n      Override<PluginClientDef, \"config\", ConfigDef>,\n      Excluded | \"config\" | \"$config\"\n    >;\n  }\n\n  /**\n   * ### `.class()`\n   *\n   * TODO\n   *\n   * @see TODO: Add docs link\n   *\n   * ---\n   * @param input - The class definition.\n   * @returns TypedPluginClientBuilder\n   */\n  class<Extension extends PluginClientExtensionDefinition<PluginClientDef, false>>(\n    extension: Extension,\n  ) {\n    const builder = new PluginClientBuilder({ ...this.def, class: extension });\n    return builder as TypedPluginClientBuilder<\n      Override<PluginClientDef, \"class\", Extension>,\n      Excluded | \"class\"\n    >;\n  }\n\n  /**\n   * ### `.atoms()`\n   *\n   * Add reactive states (atoms) that can then be consumed from various UI frameworks\n   * (React, Vue, Svelte, etc.) to render the plugin data in real-time on the user interface.\n   *\n   * Atoms are powered by [nanostores](https://github.com/nanostores/nanostores).\n   *\n   * @see TODO: Add docs link\n   *\n   * @example\n   * ```ts\n   * import { onMount } from \"nanostores\";\n   *\n   * const pluginClient = definePluginClient(\"my-plugin\")\n   *    .atoms(({ plugin }) => {\n   *        const value = atom(0);\n   *        onMount(() => {\n   *            setInterval(async () => {\n   *                const context = await plugin.context.get();\n   *                value.set(context.value + 1);\n   *            }, 1000);\n   *        });\n   *        return { value };\n   *    });\n   * ```\n   * &nbsp;\n   *\n   * ---\n   *\n   * Then from a React component, you can render the `value` atom:\n   * ```ts\n   * import { useStore } from \"nanostores/react\";\n   *\n   * export default function Page() {\n   *    const agent = useAgent(\"my-agent\");\n   *    const value = useStore(agent.myPlugin.atoms.value);\n   *    return <div>{value}</div>;\n   * };\n   * ```\n   * &nbsp;\n   *\n   * ---\n   * @param definition - The atoms definition.\n   * @returns TypedPluginClientBuilder\n   */\n  atoms<\n    const Names extends string[],\n    Atoms extends PluginClientAtomsDefinition<PluginClientDef, false, Names>,\n  >(atoms: Atoms) {\n    const builder = new PluginClientBuilder({ ...this.def, atoms });\n    return builder as TypedPluginClientBuilder<\n      Override<PluginClientDef, \"atoms\", Atoms>,\n      Excluded | \"atoms\"\n    >;\n  }\n}\n\ntype ServerPluginShape = { def: PluginDefinition };\n\n/**\n * ### `definePluginClient()`\n *\n * Define a new Life.js plugin client.\n *\n * @see TODO: Add docs link\n */\nexport function definePluginClient<\n  ServerPlugin extends ServerPluginShape | undefined = undefined,\n  const Name extends string = ServerPlugin extends ServerPluginShape\n    ? ServerPlugin[\"def\"][\"name\"]\n    : string,\n>(name: Name) {\n  // Extract the server definition type precisely if provided, else default to a broad type\n  type ExtractServerDefinition = Without<\n    ServerPlugin extends ServerPluginShape ? ServerPlugin[\"def\"] : PluginDefinition,\n    \"dependencies\" // remove dependencies (unused) to reduce type explosion\n  > & { dependencies: [] };\n\n  // Create a default definition for the plugin client\n  const defaultDefinition = {\n    name,\n    config: zodObjectWithTelemetry({ schema: z.object() }),\n    dependencies: [],\n    class: <const _ProvidedConfigs>(..._args: Any[]) => class {},\n    atoms: <const _ProvidedConfigs>(..._args: Any[]) => [],\n    $serverDef: null as unknown as ExtractServerDefinition,\n  } as const satisfies PluginClientDefinition;\n\n  // Return the builder with the extracted server definition type\n  return new PluginClientBuilder<typeof defaultDefinition>(defaultDefinition);\n}\n","import { atom, onMount } from \"nanostores\";\nimport z from \"zod\";\nimport type { PluginEvent, PluginEventsDefinition } from \"@/plugins/server/types\";\nimport type { Message } from \"@/shared/messages\";\nimport { definePluginClient } from \"../../client/builder\";\nimport type { generationPlugin } from \"./server\";\nimport type { generationPluginEventsDef } from \"./server/events\";\nimport type { GenerationStatus } from \"./server/status\";\n\ntype PluginEventDataInput<\n  EventsDef extends PluginEventsDefinition,\n  Name extends EventsDef[number][\"name\"],\n> = Extract<PluginEvent<EventsDef, \"input\">, { name: Name }> extends { data: infer Data }\n  ? Data\n  : never;\n\nexport const generationPluginClient = definePluginClient<typeof generationPlugin>(\"generation\")\n  .config({ schema: z.object({ enableVoice: z.boolean().prefault(false) }) })\n  .class(\n    ({ plugin }) =>\n      class {\n        async continue(\n          params: PluginEventDataInput<typeof generationPluginEventsDef, \"agent.continue\">,\n        ) {\n          return await plugin.server.events.emit({ name: \"agent.continue\", data: params });\n        }\n        async decide(\n          params: PluginEventDataInput<typeof generationPluginEventsDef, \"agent.decide\">,\n        ) {\n          return await plugin.server.events.emit({ name: \"agent.decide\", data: params });\n        }\n        async say(params: PluginEventDataInput<typeof generationPluginEventsDef, \"agent.say\">) {\n          return await plugin.server.events.emit({ name: \"agent.say\", data: params });\n        }\n        async interrupt(\n          params: PluginEventDataInput<typeof generationPluginEventsDef, \"agent.interrupt\">,\n        ) {\n          return await plugin.server.events.emit({ name: \"agent.interrupt\", data: params });\n        }\n        messages = {\n          create: async (\n            params: PluginEventDataInput<typeof generationPluginEventsDef, \"messages.create\">,\n          ) => await plugin.server.events.emit({ name: \"messages.create\", data: params }),\n          update: async (\n            params: PluginEventDataInput<typeof generationPluginEventsDef, \"messages.update\">,\n          ) => await plugin.server.events.emit({ name: \"messages.update\", data: params }),\n          get: () => plugin.server.context.get().messages,\n        };\n      },\n  )\n  .atoms(({ plugin, telemetry }) => [\n    {\n      name: \"status\",\n      create: () => {\n        const store = atom<GenerationStatus | null>(null);\n\n        // Subscribe to status changes\n        onMount(store, () => {\n          // Fetch initial status from context\n          const [error, context] = plugin.server.context.safe.get();\n          if (error)\n            telemetry.log.error({\n              message: \"Failed to fetch initial status from context.\",\n              error,\n            });\n          if (context?.status) store.set(context.status);\n\n          // Subscribe to status changes from the context\n          const unsubscribe = plugin.server.context.onChange(\n            (ctx) => ctx.status,\n            (ctx) => store.set(ctx.status),\n          );\n\n          // Return cleanup function\n          return () => unsubscribe?.();\n        });\n\n        return { store, refresh: async () => void 0 };\n      },\n    },\n    {\n      name: \"messages\",\n      create: () => {\n        const store = atom<Message[]>([]);\n        // Subscribe to messages changes\n        onMount(store, () => {\n          // Fetch initial messages from context (if availabe, i.e, agent started)\n          const [error, context] = plugin.server.context.safe.get();\n          if (error)\n            telemetry.log.error({\n              message: \"Failed to fetch initial messages from context.\",\n              error,\n            });\n\n          if (context?.messages) store.set(context.messages);\n\n          // Subscribe to messages changes from the context\n          const unsubscribe = plugin.server.context.onChange(\n            (ctx) => ctx.messages,\n            (ctx) => store.set(ctx.messages),\n          );\n\n          // Return cleanup function\n          return () => unsubscribe?.();\n        });\n\n        return { store, refresh: async () => void 0 };\n      },\n    },\n  ]);\n","import { definePluginClient } from \"../../client/builder\";\nimport { generationPluginClient } from \"../generation/client\";\nimport type { memoriesPlugin } from \"./server\";\n\nexport const memoriesPluginClient = definePluginClient<typeof memoriesPlugin>(\"memories\")\n  .dependencies([generationPluginClient])\n  .class((_) => class {});\n","import { definePluginClient } from \"../../client/builder\";\nimport type { storesPlugin } from \"./server\";\n\nexport const storesPluginClient = definePluginClient<typeof storesPlugin>(\"stores\");\n","export { defineAgentClient } from \"@/agent/client/builder\";\nexport { createLifeClient } from \"@/client/create\";\nexport { definePluginClient } from \"@/plugins/client/builder\";\n\nimport { generationPluginClient } from \"@/plugins/defaults/generation/client\";\nimport { memoriesPluginClient } from \"@/plugins/defaults/memories/client\";\nimport { storesPluginClient } from \"@/plugins/defaults/stores/client\";\n\n// Explicit typing is required to avoid type size explosion with the iterator\nexport type ClientPluginsDefaults = {\n  readonly generation: typeof generationPluginClient;\n  readonly memories: typeof memoriesPluginClient;\n  readonly stores: typeof storesPluginClient;\n  readonly [Symbol.iterator]: () => Generator<\n    typeof generationPluginClient | typeof memoriesPluginClient | typeof storesPluginClient,\n    void,\n    unknown\n  >;\n};\n\nexport const defaults: { readonly plugins: ClientPluginsDefaults } = {\n  plugins: {\n    generation: generationPluginClient,\n    memories: memoriesPluginClient,\n    stores: storesPluginClient,\n    *[Symbol.iterator]() {\n      for (const entry of Object.values(this)) yield entry;\n    },\n  },\n};\n\n// Types\nexport type { AgentClient } from \"@/agent/client/class\";\nexport type {\n  AgentClientFromBuild,\n  AgentClientParam,\n} from \"@/agent/client/types\";\nexport { parseAgentClientParam } from \"@/agent/client/types\";\nexport type { LifeClient } from \"@/client/client\";\nexport type { Message } from \"@/shared/messages\";\n"],"mappings":"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","names":["z","z"]}