# @purista/cli API

Packages from @purista/cli

---
Canonical: /handbook/api/modules/_purista_cli/
Format: Markdown for agents
---

Package: `@purista/cli`

## Signature

```typescript
@purista/cli
```

## Members

### Classes

- `class PuristaCliError` — Base error type thrown by the programmatic CLI API.
- `class PuristaCliPromptError` — Error thrown by prompt adapters when interactive input cannot be collected.
- `class PuristaCliValidationError` — Error thrown when command input or project state cannot be resolved.

### Interfaces

- `interface Options` — Options used for converting strings to any case.
- `interface PascalCaseOptions` — Options used for converting strings to pascal/camel case.

### Type Aliases

- `type AddPuristaQueueInput = void` — Input for generating a queue, its primary worker, and optional producer command.
- `type AddPuristaQueueWorkerInput = void` — Input for generating an additional worker for an existing queue.
- `type BasePromptRequest = void` — Shared fields used by prompt requests.
- `type BlueprintId = typeof blueprintIds[number]` — Built-in project blueprint identifiers understood by the generator.
- `type ConfirmPromptRequest = BasePromptRequest<TKey> & { defaultValue: boolean; type: "confirm" }` — Boolean confirmation prompt request.
- `type CreateProjectInput = void` — Normalized input used to plan and materialize a new PURISTA project.
- `type EnqueueOption = void` — Queue import metadata used when generating a command with `.canEnqueue(...)`.
- `type ExampleServiceGeneratorStep = void` — Deferred generator action that creates the example service after base files exist.
- `type InputPromptRequest = BasePromptRequest<TKey> & { type: "input"; validate: (value: string) => true | string }` — Text input prompt request.
- `type Locale = string[] | string | false | undefined` — Supported locale values. Use `false` to ignore locale.
Defaults to `undefined`, which uses the host environment.
- `type OutputAdapter = void` — Adapter for rendering CLI results and errors in custom hosts.
- `type PackageManager = "npm" | "bun" | "pnpm" | "yarn"` — Package managers supported by the project generator.
- `type PKG = PackageJson & { trustedDependencies: string[] }` — Package.json shape used by the CLI project blueprint merger.
- `type ProjectBlueprint = void` — A reusable project generator unit.
- `type ProjectBlueprintContext = CreateProjectInput & { targetDirectoryPath: string }` — Input visible to a blueprint while it decides and creates contributions.
- `type ProjectBlueprintContribution = ProjectConfigPatch & { files: ProjectFileContribution[]; generatorSteps: ProjectGeneratorStep[]; warnings: string[] }` — Files, config patches, warnings, and deferred steps emitted by a blueprint.
- `type ProjectConfigPatch = void` — Partial project-level configuration merged from a blueprint.
- `type ProjectFileContribution = void` — A file that a blueprint contributes to a project generation plan.
- `type ProjectGenerationPlan = void` — Complete dry-run project generation plan.
- `type ProjectGeneratorStep = ExampleServiceGeneratorStep` — Union of deferred generator steps executed while materializing a project.
- `type ProjectSnapshot = void` — Full project snapshot used by CLI generators to append new definitions safely.
- `type PromptAdapter = void` — Adapter used by the engine when it must collect missing input.
- `type PromptAnswerMap = Record<string, string | boolean>` — Programmatic answer map keyed by prompt `key`.
- `type PromptChoice = void` — One selectable prompt option.
- `type PromptRequest = InputPromptRequest<TKey> | ConfirmPromptRequest<TKey> | SelectPromptRequest<TKey>` — Union of prompt requests emitted by CLI command resolution.
- `type PuristaCliEngineOptions = void` — Options for creating a reusable programmatic PURISTA CLI engine.
- `type PuristaCommandContext = void` — Runtime context passed to CLI command resolvers and executors.
- `type PuristaCommandId = typeof puristaCommandIds[number]` — Command identifiers accepted by the programmatic CLI engine.
- `type PuristaCommandIssue = void` — A validation or execution issue reported by a CLI command.
- `type PuristaCommandMode = "interactive" | "non-interactive" | "programmatic"` — Controls how unresolved command input is completed before execution.
- `type PuristaCommandResolution = void` — Output of command input resolution before execution.
- `type PuristaCommandResult = void` — Result returned after a CLI command has executed.
- `type PuristaConfig = z.infer<typeof puristaConfigSchema>` — Parsed `purista.json` configuration with defaults applied.
- `type PuristaExecutableCommand = void` — Definition contract implemented by commands registered in the CLI engine.
- `type PuristaFileMutation = void` — Describes one file path changed by a CLI command.
- `type PuristaProjectInfo = void` — Public project information required by scaffolding helpers.
- `type PuristaProjectServices = Record<string, Record<string, Omit<ServiceVersionSnapshot, "queues" | "queueWorkers">>>` — Public service scan result used by legacy generator helpers.
- `type QueueProducerOptions = void` — Optional command generated together with a queue to enqueue work.
- `type QueueWorkerOptions = void` — Queue worker generated together with a queue.
- `type ResolvedProjectBlueprints = void` — Result of selecting project blueprints for a concrete init input.
- `type SelectPromptRequest = BasePromptRequest<TKey> & { choices: ReadonlyArray<PromptChoice<TValue>>; defaultValue: TValue; type: "select" }` — Single-choice prompt request.
- `type ServiceVersionSnapshot = void` — Discovered files and artifact directories for one service version.

### Variables

- `const blueprintIds: typeOperator` — Ordered list of built-in project blueprint identifiers.
- `const projectBlueprintRegistry: Record<string, ProjectBlueprint>` — Registry of built-in project blueprints used by `planProjectGeneration`.
- `const puristaCommandIds: typeOperator` — Ordered list of command identifiers supported by the programmatic CLI engine.
- `const puristaConfigSchema: ZodObject<{ $schema: ZodDefault<ZodOptional<ZodString>>; agentPath: ZodDefault<ZodOptional<ZodString>>; eventBridge: ZodDefault<ZodEnum<{ amqp: unknown; dapr: unknown; default: unknown; mqtt: unknown; nats: unknown }>>; eventConvention: ZodDefault<ZodEnum<{ camel: unknown; constantCase: unknown; dotCase: unknown; kebab: unknown; pascal: unknown; pascalSnake: unknown; ... }>>; fileConvention: ZodDefault<ZodEnum<{ camel: unknown; kebab: unknown; pascal: unknown; pascalSnake: unknown; snake: unknown }>>; formatter: ZodDefault<ZodEnum<{ biome: unknown; none: unknown; prettier: unknown }>>; ... }, $strip>` — Zod schema for the `purista.json` configuration file consumed by the CLI.

### Functions

- `addPuristaAgent(input: { agentDescription: string; agentName: string; codeWriterOptions: Partial<Options>; projectRootPath: string; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; puristaProject: PuristaProjectInfo; ... }): Promise<void>`
- `addPuristaCommand(input: { codeWriterOptions: Partial<Options>; commandDescription: string; commandName: string; enqueues: { parameterSchemaExportName: string; payloadSchemaExportName: string; queueName: string; schemaFilePath: string }[]; eventToSubscribe: string; projectRootPath: string; ... }): Promise<void>`
- `addPuristaQueue(input: AddPuristaQueueInput): Promise<void>`
- `addPuristaQueueWorker(input: AddPuristaQueueWorkerInput): Promise<void>`
- `addPuristaService(input: { codeWriterOptions: Partial<Options>; projectRootPath: string; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; puristaProject: PuristaProjectInfo; serviceDescription: string; serviceName: string; ... }): Promise<void>`
- `addPuristaStream(input: { codeWriterOptions: Partial<Options>; projectRootPath: string; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; puristaProject: PuristaProjectInfo; responseEventName: string; serviceName: string; ... }): Promise<void>`
- `addPuristaSubscription(input: { codeWriterOptions: Partial<Options>; eventToSubscribe: string; projectRootPath: string; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; puristaProject: PuristaProjectInfo; responseEventName: string; ... }): Promise<void>`
- `camelCase(input: string, options?: PascalCaseOptions): string`
- `capitalCase(input: string, options?: Options): string`
- `constantCase(input: string, options?: Options): string`
- `convertToProjectFileCasing(input: string, puristaProjectConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }): string`
- `createAmqpConfigFile(): string`
- `createBiomeConfigFile(): string`
- `createDaprConfigFile(): string`
- `createDefinitionsFile(input: CreateProjectInput): string`
- `createEntrypointFile(input: CreateProjectInput, puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }): string`
- `createEslintModuleConfigFile(): string`
- `createEventBridgeFile(input: CreateProjectInput): string`
- `createExportDefinitionsFile(): string`
- `createGitIgnoreFile(): string`
- `createHttpConfigFile(): string`
- `createHttpFile(runtime: "node" | "bun"): "import type { EventBridge, Logger, Service } from '@purista/core'\nimport { honoV1Service } from '@purista/hono-http-server'\nimport { apiReference } from '@scalar/hono-api-reference'\nimport { serveStatic } from 'hono/bun'\nimport httpConfig from './config/http.js'\n\nexport const getHttpServer = async (input: { eventBridge: EventBridge; logger: Logger; services: Service[] }) => {\n\tconst honoService = await honoV1Service.getInstance(input.eventBridge, {\n\t\tlogger: input.logger,\n\t\tserviceConfig: { ...httpConfig.serviceConfig, services: input.services },\n\t})\n\n\thonoService.app.get(\n\t\thttpConfig.serviceConfig.apiMountPath,\n\t\tapiReference({\n\t\t\tpageTitle: httpConfig.serviceConfig.openApi.info.title,\n\t\t\tspec: {\n\t\t\t\turl: `${httpConfig.serviceConfig.apiMountPath}/openapi.json`,\n\t\t\t},\n\t\t}),\n\t)\n\n\thonoService.app.get('*', serveStatic({ root: httpConfig.root }))\n\thonoService.openApi.addServer({\n\t\turl: `http://localhost:${httpConfig.port}`,\n\t\tdescription: 'the local server',\n\t})\n\n\tawait honoService.start()\n\n\tconst serverInstance = Bun.serve({\n\t\tfetch: honoService.app.fetch,\n\t\tport: httpConfig.port,\n\t})\n\n\treturn { honoService, serverInstance }\n}\n" | "import { serve } from '@hono/node-server'\nimport { serveStatic } from '@hono/node-server/serve-static'\nimport type { EventBridge, Logger, Service } from '@purista/core'\nimport { honoV1Service } from '@purista/hono-http-server'\nimport { apiReference } from '@scalar/hono-api-reference'\nimport httpConfig from './config/http.js'\n\nexport const getHttpServer = async (input: { eventBridge: EventBridge; logger: Logger; services: Service[] }) => {\n\tconst honoService = await honoV1Service.getInstance(input.eventBridge, {\n\t\tlogger: input.logger,\n\t\tserviceConfig: { ...httpConfig.serviceConfig, services: input.services },\n\t})\n\n\thonoService.app.get(\n\t\thttpConfig.serviceConfig.apiMountPath,\n\t\tapiReference({\n\t\t\tpageTitle: httpConfig.serviceConfig.openApi.info.title,\n\t\t\tspec: {\n\t\t\t\turl: `${httpConfig.serviceConfig.apiMountPath}/openapi.json`,\n\t\t\t},\n\t\t}),\n\t)\n\n\thonoService.app.get('*', serveStatic({ root: httpConfig.root }))\n\thonoService.openApi.addServer({ url: `http://localhost:${httpConfig.port}`, description: 'the local server' })\n\n\tawait honoService.start()\n\n\tconst serverInstance = serve({\n\t\tfetch: honoService.app.fetch,\n\t\tport: httpConfig.port,\n\t})\n\n\treturn { honoService, serverInstance }\n}\n"`
- `createMqttConfigFile(): string`
- `createNatsConfigFile(): string`
- `createProjectSnapshot(puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }, projectRootPath?: string): Promise<ProjectSnapshot>`
- `createPublicIndexHtml(input: CreateProjectInput): string`
- `createPuristaCliEngine(options: PuristaCliEngineOptions): { resolvePuristaCommand: (commandId: "add-service" | "add-command" | "add-subscription" | "add-stream" | "add-queue" | "add-queue-worker" | "add-agent" | "export-asyncapi" | "export-runtime-capabilities" | "export-schedule-manifest" | "export-kubernetes-cronjob" | "export-cloudevents-schema" | "init-project", input: TInput) => Promise<PuristaCommandResolution<TInput, unknown>>; runPuristaCommand: (commandId: "add-service" | "add-command" | "add-subscription" | "add-stream" | "add-queue" | "add-queue-worker" | "add-agent" | "export-asyncapi" | "export-runtime-capabilities" | "export-schedule-manifest" | "export-kubernetes-cronjob" | "export-cloudevents-schema" | "init-project", input: TInput) => Promise<PuristaCommandResult> }`
- `createReadmeFile(input: CreateProjectInput): string`
- `createServiceEventEnumFile(input: CreateProjectInput): string`
- `dotCase(input: string, options?: Options): string`
- `getCommandBuilderFileContent(input: { codeWriterOptions: Partial<Options>; commandDescription: string; commandName: string; enqueueOptions: EnqueueOption[]; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; puristaProject: PuristaProjectInfo; ... }): string`
- `getCommandSchemaFileContent(input: { codeWriterOptions: Partial<Options>; commandName: string; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; serviceName: string; serviceVersion: string }): string`
- `getCommandTestFileContent(input: { codeWriterOptions: Partial<Options>; commandName: string; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; serviceName: string; serviceVersion: string }): string`
- `getCommandTypeFileContent(input: { codeWriterOptions: Partial<Options>; commandName: string; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; serviceName: string; serviceVersion: string }): string`
- `getGeneralServiceConfigFileContent(input: { codeWriterOptions: Partial<Options>; serviceDescription: string; serviceName: string }): string`
- `getQueueBuilderFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; queueDescription: string; queueName: string; serviceName: string; serviceVersion: string }): string`
- `getQueueSchemaFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; queueName: string; serviceName: string; serviceVersion: string }): string`
- `getQueueTestFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; queueName: string; serviceName: string; serviceVersion: string }): string`
- `getQueueTypeFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; queueName: string; serviceName: string; serviceVersion: string }): string`
- `getQueueWorkerBuilderFileContent(input: { codeWriterOptions: Partial<Options>; intervalMs: number; maxParallelHandlers: number; mode: "continuous" | "interval" | "sequential"; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; queueName: string; ... }): string`
- `getQueueWorkerTestFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; queueName: string; serviceName: string; serviceVersion: string; workerName: string }): string`
- `getServiceBuilderFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; serviceName: string; serviceVersion: string }): string`
- `getServiceConfigFileContent(input: { codeWriterOptions: Partial<Options>; serviceName: string; serviceVersion: string }): string`
- `getServiceFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; serviceName: string; serviceVersion: string }): string`
- `getServiceTestFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; serviceName: string; serviceVersion: string }): string`
- `getStreamBuilderFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; puristaProject: PuristaProjectInfo; responseEventName: string; serviceName: string; serviceVersion: string; ... }): string`
- `getStreamSchemaFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; serviceName: string; serviceVersion: string; streamName: string }): string`
- `getStreamTestFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; serviceName: string; serviceVersion: string; streamName: string }): string`
- `getStreamTypeFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; serviceName: string; serviceVersion: string; streamName: string }): string`
- `getSubscriptionBuilderFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; puristaProject: PuristaProjectInfo; responseEventName: string; serviceName: string; serviceVersion: string; ... }): string`
- `getSubscriptionSchemaFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; responseEventName: string; serviceName: string; serviceVersion: string; subscriptionName: string }): string`
- `getSubscriptionTestFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; serviceName: string; serviceVersion: string; subscriptionName: string }): string`
- `getSubscriptionTypeFileContent(input: { codeWriterOptions: Partial<Options>; puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }; responseEventName: string; serviceName: string; serviceVersion: string; subscriptionName: string }): string`
- `kebabCase(input: string, options?: Options): string`
- `loadPuristaConfig(projectRootPath?: string): Promise<{ $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }>`
- `materializeProjectGeneration(plan: ProjectGenerationPlan): Promise<{ files: string[]; targetDirectoryPath: string }>`
- `noCase(input: string, options?: Options): string`
- `pascalCase(input: string, options?: PascalCaseOptions): string`
- `pascalSnakeCase(input: string, options?: Options): string`
- `pathCase(input: string, options?: Options): string`
- `planProjectGeneration(input: CreateProjectInput, options: { cwd: string }): ProjectGenerationPlan`
- `resolveProjectBlueprints(input: CreateProjectInput, options: { cwd: string }): ResolvedProjectBlueprints`
- `resolvePuristaCommand<TInput>(commandId: "add-service" | "add-command" | "add-subscription" | "add-stream" | "add-queue" | "add-queue-worker" | "add-agent" | "export-asyncapi" | "export-runtime-capabilities" | "export-schedule-manifest" | "export-kubernetes-cronjob" | "export-cloudevents-schema" | "init-project", input: TInput, options?: PuristaCliEngineOptions): Promise<PuristaCommandResolution<TInput, unknown>>`
- `runPuristaCommand<TInput>(commandId: "add-service" | "add-command" | "add-subscription" | "add-stream" | "add-queue" | "add-queue-worker" | "add-agent" | "export-asyncapi" | "export-runtime-capabilities" | "export-schedule-manifest" | "export-kubernetes-cronjob" | "export-cloudevents-schema" | "init-project", input: TInput, options?: PuristaCliEngineOptions): Promise<PuristaCommandResult>`
- `scanPuristaProject(puristaConfig: { $schema: string; agentPath: string; eventBridge: "default" | "amqp" | "nats" | "mqtt" | "dapr"; eventConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake" | "constantCase" | "dotCase" | "pathCase" | "trainCase"; fileConvention: "camel" | "snake" | "kebab" | "pascal" | "pascalSnake"; formatter: "biome" | "prettier" | "none"; ... }, projectRootPath?: string): Promise<PuristaProjectInfo>`
- `sentenceCase(input: string, options?: Options): string`
- `snakeCase(input: string, options?: Options): string`
- `split(value: string): string[]`
- `splitSeparateNumbers(value: string): string[]`
- `trainCase(input: string, options?: Options): string`
