> ## Documentation Index
> Fetch the complete documentation index at: https://docs.re-factor.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Composable building blocks of AI interaction and execution in re-factor.

## Foundations

The primary goal of [re-factor](/) is to provide users with a means of re-imagining, re-factoring, and revolutionizing the way they build business processes. To this end, [re-factor](/) provides a set of [runnables](#runnables) that are composable, executable, and extensible building blocks that allow users to embed AI into their processes in an intuitive and powerful way.

## Types

[Runnables](#runnables) within [re-factor](/) can be classified into one of the following types:

|                   Runnable                   | Description                                                      | Status |
| :------------------------------------------: | ---------------------------------------------------------------- | :----: |
| [Completions](/guides/runnables/completions) | Generate text and structured responses to prompts with LLMs.     |   🟢   |
|       [Tools](/guides/runnables/tools)       | Provide interfaces to external systems and resources.            |   🚧   |
|       [Flows](/guides/runnables/flows)       | Orchestrate complex processes by chaining prompts and tools.     |   🚧   |
|      [Agents](/guides/runnables/agents)      | Orchestrate dynamic processes by empowering LLMs to take action. |   🚧   |

### Common parameters

<ParamField path="name" type="string" required>
  The name of the runnable. This is a human-readable label that helps you identify and manage runnables in your system.
</ParamField>

<ParamField path="type" type="enum<completion | flow | tool | agent>" required>
  The type of the runnable. This is used to determine the runnable's behavior and can be used to filter and organize runnables in your system.
</ParamField>

<ParamField path="description" type="string">
  A description of the runnable. This can provide additional context to users and help them understand the purpose and functionality of the runnable.
</ParamField>

<ParamField path="tags" type="array<string>">
  An array of tags that categorize the runnable. This can be used to filter and organize runnables in your system.
</ParamField>

<ParamField path="schemas" type="object">
  An object that declares schemas that can be used within the runnable. The keys of the object are the names of the schemas and the values are the schemas themselves. Schemas must be valid [JSONSchema Draft 7](http://json-schema.org/draft-07/schema#) objects.
</ParamField>

<ParamField path="resources" type="array<EmbeddedResource>">
  An array of resources that can be used within the runnable. Resources are named entities that can be referenced by name within the runnable's configuration.

  See the [Resources Guide](/guides/resources#embedded-resource) for more details, schemas, and examples.
</ParamField>

<ParamField path="prompt" type="Prompt">
  Required in [`completions`](/guides/runnables/completions) and [`agents`](/guides/runnables/agents) and often used within the `tasks` of [`flows`](/guides/runnables/flows).

  See the [Prompts Guide](/guides/prompts) for more details, schemas, and examples.
</ParamField>

<ParamField path="llms" type="array<LLMConfiguration>">
  Required in [`completions`](/guides/runnables/completions) and [`agents`](/guides/runnables/agents) and often used within the `tasks` of [`flows`](/guides/runnables/flows).

  Provides one or more LLM configurations that can be used within the runnable to generate responses.

  See the [LLMs Guide](/guides/llms#llmconfiguration) for more details, schemas, and examples.
</ParamField>

#### Prompts

[`prompts`](/guides/prompts) are required in [`completions`](/guides/runnables/completions) and [`agents`](/guides/runnables/agents) and very commonly used in [`flows`](/guides/runnables/flows). They provide the context and instructions for the LLM to generate a response.
