chore: install openagent opencode
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<!-- Context: development/modular-building | Priority: high | Version: 1.0 | Updated: 2026-02-15 -->
|
||||
|
||||
# Guide: Modular Mastra Building
|
||||
|
||||
**Purpose**: Best practices for structuring a large-scale Mastra implementation.
|
||||
|
||||
**Last Updated**: 2026-01-09
|
||||
|
||||
---
|
||||
|
||||
## Core Idea
|
||||
Modular building ensures that as the project grows, components remain testable, reusable, and easy to navigate. This is achieved by separating logic into specialized directories and using a central registry.
|
||||
|
||||
## Key Points
|
||||
- **Component Separation**: Keep `agents`, `tools`, `workflows`, and `scorers` in their own top-level directories within `src/mastra/`.
|
||||
- **Shared Services**: Use a `shared.ts` file to instantiate services (DB, repositories) to prevent circular dependencies between workflows and the main Mastra instance.
|
||||
- **Central Registry**: Register all components in `src/mastra/index.ts`. This is the single source of truth for the Mastra instance.
|
||||
- **Feature-Based Steps**: Group related workflow steps into sub-directories (e.g., `src/mastra/workflows/v3/steps/`) to keep workflow files clean.
|
||||
|
||||
## Quick Example
|
||||
```typescript
|
||||
// src/mastra/shared.ts
|
||||
export const services = createServices();
|
||||
|
||||
// src/mastra/index.ts
|
||||
import { services } from './shared';
|
||||
export const mastra = new Mastra({
|
||||
workflows: { myWorkflow },
|
||||
agents: { myAgent },
|
||||
// ...
|
||||
});
|
||||
```
|
||||
|
||||
**Reference**: `src/mastra/index.ts`, `src/mastra/shared.ts`
|
||||
**Related**:
|
||||
- concepts/core.md
|
||||
- guides/workflow-step-structure.md
|
||||
35
.opencode/context/development/ai/mastra-ai/guides/testing.md
Normal file
35
.opencode/context/development/ai/mastra-ai/guides/testing.md
Normal file
@@ -0,0 +1,35 @@
|
||||
<!-- Context: development/testing | Priority: high | Version: 1.0 | Updated: 2026-02-15 -->
|
||||
|
||||
# Guide: Testing Mastra
|
||||
|
||||
**Purpose**: How to run and validate Mastra components in this project.
|
||||
|
||||
**Last Updated**: 2026-01-09
|
||||
|
||||
---
|
||||
|
||||
## Core Idea
|
||||
Testing in this project is divided into tool-level tests and full workflow integration tests. Use the provided bun --bun scripts for rapid validation.
|
||||
|
||||
## Key Points
|
||||
- **Tool Tests**: Validate individual tools in isolation (e.g., `bun --bun run test:playbook`).
|
||||
- **Workflow Tests**: Run full end-to-end scenarios (e.g., `bun --bun run test:workflow`).
|
||||
- **Baseline Tests**: Compare current performance against a known baseline (`bun --bun run test:baseline`).
|
||||
- **Observability**: Use `bun --bun run traces` after tests to inspect the execution details in the database.
|
||||
|
||||
## Quick Example
|
||||
```bash
|
||||
# Test a specific tool
|
||||
bun --bun run test:calculator
|
||||
|
||||
# Run full validity workflow
|
||||
bun --bun run validity:workflow
|
||||
|
||||
# View results of the last run
|
||||
bun --bun run traces
|
||||
```
|
||||
|
||||
**Reference**: `package.json` scripts, `scripts/` directory
|
||||
**Related**:
|
||||
- concepts/core.md
|
||||
- lookup/mastra-config.md
|
||||
@@ -0,0 +1,40 @@
|
||||
<!-- Context: development/workflow-step-structure | Priority: high | Version: 1.0 | Updated: 2026-02-15 -->
|
||||
|
||||
# Guide: Workflow Step Structure
|
||||
|
||||
**Purpose**: Standardized pattern for defining maintainable and testable workflow steps.
|
||||
|
||||
**Last Updated**: 2026-01-09
|
||||
|
||||
---
|
||||
|
||||
## Core Idea
|
||||
Workflow steps should be self-contained units that encapsulate their input/output schemas and execution logic. For complex workflows, steps should be moved to a dedicated `steps/` directory and grouped by phase.
|
||||
|
||||
## Key Points
|
||||
- **Directory Structure**: Group steps by phase (e.g., `steps/phase1-load.ts`, `steps/phase2-process.ts`).
|
||||
- **Schema Centralization**: Define shared schemas (like `workflowStateSchema`) in a `schemas.ts` file within the steps directory.
|
||||
- **Explicit State**: Use `stateSchema` in `createStep` to ensure type safety when accessing the global workflow state.
|
||||
- **Tool Delegation**: Steps should primarily act as orchestrators, delegating heavy lifting to Tools.
|
||||
- **Logging**: Include clear console logs at the start and end of each step for easier debugging.
|
||||
|
||||
## Quick Example
|
||||
```typescript
|
||||
// src/mastra/workflows/v3/steps/phase1.ts
|
||||
export const myStep = createStep({
|
||||
id: 'my-step-id',
|
||||
inputSchema: z.object({ ... }),
|
||||
outputSchema: z.object({ ... }),
|
||||
stateSchema: workflowStateSchema,
|
||||
execute: async ({ inputData, state, mastra }) => {
|
||||
console.log('🚀 Starting myStep...');
|
||||
const result = await myTool.execute(inputData, { mastra });
|
||||
return result;
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
**Reference**: `src/mastra/workflows/v3/steps/`
|
||||
**Related**:
|
||||
- concepts/workflows.md
|
||||
- guides/modular-building.md
|
||||
Reference in New Issue
Block a user