@mastra/mcp-docs-server 1.2.2-alpha.1 → 1.2.2-alpha.4
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.
- package/.docs/docs/agents/code-mode.md +1 -1
- package/.docs/docs/agents/goals.md +1 -1
- package/.docs/docs/agents/processors.md +1 -1
- package/.docs/docs/agents/signal-providers.md +1 -1
- package/.docs/docs/agents/signals.md +1 -1
- package/.docs/docs/agents/supervisor-agents.md +15 -0
- package/.docs/docs/evals/built-in-scorers.md +17 -1
- package/.docs/docs/evals/gates-and-verdicts.md +140 -0
- package/.docs/docs/evals/overview.md +2 -0
- package/.docs/docs/evals/quick-checks.md +136 -0
- package/.docs/docs/harness/overview.md +1 -1
- package/.docs/docs/harness/session.md +7 -3
- package/.docs/docs/harness/threads-and-state.md +2 -0
- package/.docs/docs/memory/observational-memory.md +1 -3
- package/.docs/guides/guide/signal-provider.md +1 -1
- package/.docs/models/gateways/netlify.md +1 -3
- package/.docs/models/index.md +1 -1
- package/.docs/models/providers/baseten.md +1 -1
- package/.docs/models/providers/huggingface.md +4 -1
- package/.docs/models/providers/llmgateway.md +184 -199
- package/.docs/reference/agents/channels.md +4 -0
- package/.docs/reference/agents/generate.md +1 -1
- package/.docs/reference/evals/checks.md +210 -0
- package/.docs/reference/evals/run-evals.md +71 -1
- package/.docs/reference/harness/harness-class.md +28 -1
- package/.docs/reference/harness/session.md +20 -4
- package/.docs/reference/index.md +1 -0
- package/.docs/reference/memory/observational-memory.md +1 -1
- package/.docs/reference/memory/serialized-memory-config.md +1 -1
- package/.docs/reference/streaming/agents/stream.md +1 -1
- package/CHANGELOG.md +14 -0
- package/package.json +4 -4
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Quick Checks
|
|
2
|
+
|
|
3
|
+
Quick Checks are zero-LLM, composable micro-scorers for common assertions. They plug into the existing `scorers: [...]` array anywhere scorers are used — in `runEvals`, live scoring, experiments, and Studio.
|
|
4
|
+
|
|
5
|
+
Internally they are standard `createScorer()` instances, so they have the same observability, storage, and pipeline integration as any other scorer.
|
|
6
|
+
|
|
7
|
+
## Usage example
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import { checks } from '@mastra/evals/checks'
|
|
11
|
+
import { runEvals } from '@mastra/core/evals'
|
|
12
|
+
import { myAgent } from '../agents'
|
|
13
|
+
|
|
14
|
+
const result = await runEvals({
|
|
15
|
+
data: [{ input: 'What is the weather in Brooklyn?' }],
|
|
16
|
+
target: myAgent,
|
|
17
|
+
scorers: [
|
|
18
|
+
checks.includes('sunny'),
|
|
19
|
+
checks.calledTool('get_weather'),
|
|
20
|
+
checks.toolOrder(['get_weather', 'summarize']),
|
|
21
|
+
checks.noToolErrors(),
|
|
22
|
+
],
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
console.log(result.scores)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Text checks
|
|
29
|
+
|
|
30
|
+
### `checks.includes(expected, options?)`
|
|
31
|
+
|
|
32
|
+
Scores 1 if the agent's output text contains the expected substring, 0 otherwise.
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
checks.includes('sunny')
|
|
36
|
+
checks.includes('Sunny', { ignoreCase: false })
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**expected** (`string`): Substring to search for in the output.
|
|
40
|
+
|
|
41
|
+
**options.ignoreCase** (`boolean`): Case-insensitive matching. (Default: `true`)
|
|
42
|
+
|
|
43
|
+
Returns: `1` if found, `0` otherwise.
|
|
44
|
+
|
|
45
|
+
### `checks.excludes(unwanted, options?)`
|
|
46
|
+
|
|
47
|
+
Scores 1 if the agent's output text does NOT contain the substring, 0 otherwise.
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
checks.excludes('error')
|
|
51
|
+
checks.excludes('Error', { ignoreCase: false })
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**unwanted** (`string`): Substring that must not appear in the output.
|
|
55
|
+
|
|
56
|
+
**options.ignoreCase** (`boolean`): Case-insensitive matching. (Default: `true`)
|
|
57
|
+
|
|
58
|
+
Returns: `1` if absent, `0` otherwise.
|
|
59
|
+
|
|
60
|
+
### `checks.equals(expected, options?)`
|
|
61
|
+
|
|
62
|
+
Scores 1 if the output text exactly equals the expected string after optional normalization.
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
checks.equals('Hello, world!')
|
|
66
|
+
checks.equals('Hello', { ignoreCase: false })
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**expected** (`string`): Exact string the output must match.
|
|
70
|
+
|
|
71
|
+
**options.ignoreCase** (`boolean`): Case-insensitive matching. (Default: `true`)
|
|
72
|
+
|
|
73
|
+
Returns: `1` if equal, `0` otherwise.
|
|
74
|
+
|
|
75
|
+
### `checks.matches(pattern, options?)`
|
|
76
|
+
|
|
77
|
+
Scores 1 if the output matches the given regular expression.
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
checks.matches(/\d+°[FC]/)
|
|
81
|
+
checks.matches(/^hello$/, { exact: true })
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**pattern** (`RegExp`): Regular expression to test against the output.
|
|
85
|
+
|
|
86
|
+
**options.exact** (`boolean`): Anchor the pattern to match the entire output (adds ^ and $). (Default: `false`)
|
|
87
|
+
|
|
88
|
+
Returns: `1` if matched, `0` otherwise.
|
|
89
|
+
|
|
90
|
+
### `checks.similarity(expected, options?)`
|
|
91
|
+
|
|
92
|
+
Returns the string similarity score (0-1) between the output and an expected string using the Dice coefficient. When a `threshold` is set, returns binary 1/0 instead.
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
checks.similarity('Sunny, 72°F')
|
|
96
|
+
checks.similarity('Sunny, 72°F', { threshold: 0.7 })
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**expected** (`string`): Reference string to compare against.
|
|
100
|
+
|
|
101
|
+
**options.threshold** (`number`): Minimum similarity score (0-1) to return 1. When omitted, returns the raw similarity score.
|
|
102
|
+
|
|
103
|
+
**options.ignoreCase** (`boolean`): Case-insensitive comparison. (Default: `true`)
|
|
104
|
+
|
|
105
|
+
Returns: Raw similarity score (0-1), or binary `1`/`0` when `threshold` is set.
|
|
106
|
+
|
|
107
|
+
## Tool call checks
|
|
108
|
+
|
|
109
|
+
### `checks.calledTool(toolName, options?)`
|
|
110
|
+
|
|
111
|
+
Scores 1 if the agent called the specified tool at least the required number of times.
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
checks.calledTool('get_weather')
|
|
115
|
+
checks.calledTool('search', { times: 2 })
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**toolName** (`string`): Name of the tool to look for.
|
|
119
|
+
|
|
120
|
+
**options.times** (`number`): Minimum number of times the tool must be called. (Default: `1`)
|
|
121
|
+
|
|
122
|
+
Returns: `1` if called at least `times` times, `0` otherwise.
|
|
123
|
+
|
|
124
|
+
### `checks.didNotCall(toolName)`
|
|
125
|
+
|
|
126
|
+
Scores 1 if the agent did NOT call the specified tool.
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
checks.didNotCall('delete_user')
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**toolName** (`string`): Name of the tool that must not appear.
|
|
133
|
+
|
|
134
|
+
Returns: `1` if the tool was not called, `0` otherwise.
|
|
135
|
+
|
|
136
|
+
### `checks.toolOrder(expectedOrder)`
|
|
137
|
+
|
|
138
|
+
Scores 1 if the tools were called in the specified order. Uses relaxed matching — other tool calls between the expected tools are allowed.
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
checks.toolOrder(['search', 'summarize', 'respond'])
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**expectedOrder** (`string[]`): Tool names in the expected calling sequence. Must appear as a subsequence of the actual tool calls.
|
|
145
|
+
|
|
146
|
+
Returns: `1` if the expected order is satisfied, `0` otherwise.
|
|
147
|
+
|
|
148
|
+
### `checks.maxToolCalls(max)`
|
|
149
|
+
|
|
150
|
+
Scores 1 if the agent used no more than `max` tool calls.
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
checks.maxToolCalls(5)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**max** (`number`): Maximum number of tool calls allowed.
|
|
157
|
+
|
|
158
|
+
Returns: `1` if within the limit, `0` otherwise.
|
|
159
|
+
|
|
160
|
+
### `checks.usedNoTools()`
|
|
161
|
+
|
|
162
|
+
Scores 1 if the agent made no tool calls at all.
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
checks.usedNoTools()
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Returns: `1` if no tools were called, `0` otherwise.
|
|
169
|
+
|
|
170
|
+
### `checks.noToolErrors()`
|
|
171
|
+
|
|
172
|
+
Scores 1 if none of the tool invocations resulted in an error state. Detects both error results (`result.error` present) and incomplete tool calls (`state === 'call'`).
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
checks.noToolErrors()
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Returns: `1` if all tool calls succeeded, `0` otherwise.
|
|
179
|
+
|
|
180
|
+
## Combining checks with other scorers
|
|
181
|
+
|
|
182
|
+
Checks compose with LLM-based and code-based scorers in the same `scorers` array:
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
import { checks } from '@mastra/evals/checks'
|
|
186
|
+
import { createAnswerRelevancyScorer } from '@mastra/evals/scorers/prebuilt'
|
|
187
|
+
import { runEvals } from '@mastra/core/evals'
|
|
188
|
+
import { myAgent } from '../agents'
|
|
189
|
+
|
|
190
|
+
const result = await runEvals({
|
|
191
|
+
data: [{ input: 'What is the weather in Brooklyn?' }],
|
|
192
|
+
target: myAgent,
|
|
193
|
+
scorers: [
|
|
194
|
+
// Zero-LLM checks
|
|
195
|
+
checks.includes('Brooklyn'),
|
|
196
|
+
checks.calledTool('get_weather'),
|
|
197
|
+
checks.noToolErrors(),
|
|
198
|
+
// LLM-based scorer
|
|
199
|
+
createAnswerRelevancyScorer({ model: 'openai/gpt-5-mini' }),
|
|
200
|
+
],
|
|
201
|
+
})
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Related
|
|
205
|
+
|
|
206
|
+
- [Quick Checks overview](https://mastra.ai/docs/evals/quick-checks)
|
|
207
|
+
- [Built-in Scorers](https://mastra.ai/docs/evals/built-in-scorers)
|
|
208
|
+
- [`createScorer()` reference](https://mastra.ai/reference/evals/create-scorer)
|
|
209
|
+
- [`runEvals()` reference](https://mastra.ai/reference/evals/run-evals)
|
|
210
|
+
- [Custom Scorers](https://mastra.ai/docs/evals/custom-scorers)
|
|
@@ -29,13 +29,34 @@ console.log(`Average scores:`, result.scores)
|
|
|
29
29
|
console.log(`Processed ${result.summary.totalItems} items`)
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
+
### With gates and thresholds
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import { runEvals } from '@mastra/core/evals'
|
|
36
|
+
import { checks } from '@mastra/evals/checks'
|
|
37
|
+
import { faithfulnessScorer } from './scorers'
|
|
38
|
+
|
|
39
|
+
const result = await runEvals({
|
|
40
|
+
target: myAgent,
|
|
41
|
+
data: [{ input: 'What is the weather in Brooklyn?' }],
|
|
42
|
+
gates: [checks.calledTool('get_weather'), checks.noToolErrors()],
|
|
43
|
+
scorers: [{ scorer: faithfulnessScorer, threshold: 0.7 }, checks.includes('Brooklyn')],
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
result.verdict // 'passed' | 'scored' | 'failed'
|
|
47
|
+
result.gateResults // [{ id, passed, score }]
|
|
48
|
+
result.thresholdResults // [{ id, passed, averageScore, threshold }]
|
|
49
|
+
```
|
|
50
|
+
|
|
32
51
|
## Parameters
|
|
33
52
|
|
|
34
53
|
**target** (`Agent | Workflow`): The agent or workflow to evaluate.
|
|
35
54
|
|
|
36
55
|
**data** (`RunEvalsDataItem[]`): Array of test cases with input data and optional ground truth.
|
|
37
56
|
|
|
38
|
-
**scorers** (`
|
|
57
|
+
**scorers** (`ScorerEntry[] | AgentScorerConfig | WorkflowScorerConfig`): Scorers to use. Each entry is either a bare \`MastraScorer\` or \`{ scorer, threshold }\` for threshold tracking. An \`AgentScorerConfig\` object separates agent-level and trajectory scorers. A \`WorkflowScorerConfig\` object specifies scorers for the workflow, individual steps, and trajectory.
|
|
58
|
+
|
|
59
|
+
**gates** (`MastraScorer[]`): Scorers that must score 1.0 for the run to pass. If any gate averages below 1.0 across data items, the verdict is \`failed\`. Gates run before regular scorers on each data item.
|
|
39
60
|
|
|
40
61
|
**targetOptions** (`AgentExecutionOptions | WorkflowRunOptions`): Options forwarded to the target during execution. For agents: options passed to agent.generate() (e.g. maxSteps, modelSettings, instructions). For workflows: options passed to run.start() (e.g. perStep, outputOptions, initialState).
|
|
41
62
|
|
|
@@ -83,8 +104,55 @@ For workflows, use `WorkflowScorerConfig` to specify scorers at different levels
|
|
|
83
104
|
|
|
84
105
|
**summary.totalItems** (`number`): Total number of test cases processed.
|
|
85
106
|
|
|
107
|
+
**verdict** (`'passed' | 'scored' | 'failed'`): Present when \`gates\` or threshold-bearing scorers are provided. \`passed\` = all gates and thresholds met. \`scored\` = gates passed but a threshold was missed. \`failed\` = at least one gate did not score 1.0.
|
|
108
|
+
|
|
109
|
+
**gateResults** (`GateResult[]`): Per-gate results averaged across all data items. Each entry has \`id\`, \`passed\` (boolean), and \`score\` (0–1).
|
|
110
|
+
|
|
111
|
+
**thresholdResults** (`ThresholdResult[]`): Per-threshold-scorer results averaged across all data items. Each entry has \`id\`, \`passed\`, \`averageScore\`, and \`threshold\`.
|
|
112
|
+
|
|
113
|
+
## ScorerEntry
|
|
114
|
+
|
|
115
|
+
A scorer entry in the `scorers` array can be either a bare scorer or a scorer with a threshold:
|
|
116
|
+
|
|
117
|
+
**scorer** (`MastraScorer`): The scorer instance.
|
|
118
|
+
|
|
119
|
+
**threshold** (`number | { min?: number; max?: number }`): A number implies minimum threshold (score at or above passes). Use \`{ min, max }\` for range-based checks — e.g. \`{ max: 0.3 }\` for scorers like hallucination where a high score is bad. Both \`min\` and \`max\` must be between 0 and 1.
|
|
120
|
+
|
|
86
121
|
## Examples
|
|
87
122
|
|
|
123
|
+
### Gates and verdict
|
|
124
|
+
|
|
125
|
+
Use `gates` for hard pass/fail requirements and `{ scorer, threshold }` for tracked quality metrics:
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
import { runEvals } from '@mastra/core/evals'
|
|
129
|
+
import { checks } from '@mastra/evals/checks'
|
|
130
|
+
|
|
131
|
+
const result = await runEvals({
|
|
132
|
+
target: weatherAgent,
|
|
133
|
+
data: [{ input: 'What is the weather in Brooklyn?' }],
|
|
134
|
+
gates: [checks.calledTool('get_weather'), checks.noToolErrors()],
|
|
135
|
+
scorers: [
|
|
136
|
+
{ scorer: faithfulnessScorer, threshold: 0.7 }, // min threshold (number shorthand)
|
|
137
|
+
{ scorer: hallucinationScorer, threshold: { max: 0.3 } }, // max threshold (high = bad)
|
|
138
|
+
{ scorer: toneScorer, threshold: { min: 0.5, max: 0.9 } }, // range threshold
|
|
139
|
+
checks.includes('Brooklyn'), // bare scorer, no threshold
|
|
140
|
+
],
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
if (result.verdict === 'failed') {
|
|
144
|
+
console.log(
|
|
145
|
+
'Gate failures:',
|
|
146
|
+
result.gateResults?.filter(g => !g.passed),
|
|
147
|
+
)
|
|
148
|
+
} else if (result.verdict === 'scored') {
|
|
149
|
+
console.log(
|
|
150
|
+
'Threshold misses:',
|
|
151
|
+
result.thresholdResults?.filter(t => !t.passed),
|
|
152
|
+
)
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
88
156
|
### Agent Evaluation
|
|
89
157
|
|
|
90
158
|
```typescript
|
|
@@ -246,6 +314,8 @@ const result = await runEvals({
|
|
|
246
314
|
|
|
247
315
|
## Related
|
|
248
316
|
|
|
317
|
+
- [Gates and Verdicts](https://mastra.ai/docs/evals/gates-and-verdicts): Conceptual guide to severity semantics
|
|
318
|
+
- [Quick Checks](https://mastra.ai/reference/evals/checks): Zero-LLM composable micro-scorers
|
|
249
319
|
- [createScorer()](https://mastra.ai/reference/evals/create-scorer): Create custom scorers for experiments
|
|
250
320
|
- [MastraScorer](https://mastra.ai/reference/evals/mastra-scorer): Learn about scorer structure and methods
|
|
251
321
|
- [Trajectory Accuracy](https://mastra.ai/reference/evals/trajectory-accuracy): Built-in trajectory evaluation scorers
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Harness class
|
|
2
2
|
|
|
3
|
-
> **
|
|
3
|
+
> **Beta:** The `Harness` feature is in beta stage and subject to breaking changes in minor versions until it graduates from its beta status.
|
|
4
4
|
|
|
5
5
|
The `Harness` class orchestrates multiple agent modes, shared state, memory, and storage. It provides a control layer that a TUI or other UI can drive to manage threads, switch models and modes, send messages, handle tool approvals, and track events.
|
|
6
6
|
|
|
@@ -166,6 +166,33 @@ Initialize the harness. Loads storage, initializes the workspace, propagates mem
|
|
|
166
166
|
await harness.init()
|
|
167
167
|
```
|
|
168
168
|
|
|
169
|
+
#### `createSession({ id, ownerId, resourceId? })`
|
|
170
|
+
|
|
171
|
+
Create a new, fully-wired `Session` and bring it online. The session starts in the default mode with the seeded model, connects to the Harness's shared machinery (agent, storage/lock, config catalog), and has a current thread (the most recent thread for the resource, or a freshly created one). Call `init()` once before creating sessions so shared storage and workspace are ready.
|
|
172
|
+
|
|
173
|
+
The Harness owns no session of its own — every consumer creates its own session and drives all work through it. In a server or multiplayer setting, each request, thread, or user gets its own session, isolated from every other: independent event bus, mode, model, state, and current thread.
|
|
174
|
+
|
|
175
|
+
`id` and `ownerId` are required — they mirror `SessionRecord.id` and `SessionRecord.ownerId` and are stable for the life of the session. `resourceId` is optional and defaults to `config.resourceId` then `config.id`.
|
|
176
|
+
|
|
177
|
+
```typescript
|
|
178
|
+
const session = await harness.createSession({
|
|
179
|
+
id: 'session-xyz',
|
|
180
|
+
ownerId: 'user-123',
|
|
181
|
+
})
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
You can also override the resource:
|
|
185
|
+
|
|
186
|
+
```typescript
|
|
187
|
+
const session = await harness.createSession({
|
|
188
|
+
id: 'session-xyz',
|
|
189
|
+
ownerId: 'user-123',
|
|
190
|
+
resourceId: 'project-abc',
|
|
191
|
+
})
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Switching the resource ID via `harness.setResourceId()` changes only the resource ID, not `id` or `ownerId`. Read them through `session.identity.getId()` and `session.identity.getOwnerId()`.
|
|
195
|
+
|
|
169
196
|
#### `selectOrCreateThread()`
|
|
170
197
|
|
|
171
198
|
Select the most recent thread for the current resource, or create one if none exist. Loads thread metadata and acquires a thread lock.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Session class
|
|
2
2
|
|
|
3
|
-
> **
|
|
3
|
+
> **Beta:** The `Harness` feature is in beta stage and subject to breaking changes in minor versions until it graduates from its beta status.
|
|
4
4
|
|
|
5
5
|
A `Session` owns all the state tied to a single conversation. The [`Harness`](https://mastra.ai/reference/harness/harness-class) is the shared host — agents, storage, config, the thread lock, and the event bus — while the `Session` holds everything that is per-conversation: identity, the active thread binding and reads, mode and model selection, run and abort state, the live agent stream, tool suspensions, follow-ups, approvals, permission grants, token usage, and the display-state snapshot.
|
|
6
6
|
|
|
@@ -29,7 +29,7 @@ harness.subscribe(event => {
|
|
|
29
29
|
|
|
30
30
|
The session is organized into sub-objects, each owning one domain of per-conversation state.
|
|
31
31
|
|
|
32
|
-
**identity** (`SessionIdentity`):
|
|
32
|
+
**identity** (`SessionIdentity`): Stable session, owner, and resource identity for the conversation. See identity methods below.
|
|
33
33
|
|
|
34
34
|
**thread** (`SessionThread`): Active thread binding and thread/message reads. See thread methods below.
|
|
35
35
|
|
|
@@ -125,7 +125,23 @@ const usage = harness.session.getTokenUsage()
|
|
|
125
125
|
|
|
126
126
|
## Identity
|
|
127
127
|
|
|
128
|
-
`session.identity` owns the resource ID for the
|
|
128
|
+
`session.identity` owns the stable identifiers for the conversation: the resource ID, a session `id`, and an `ownerId`. The `id` and `ownerId` are stable for the life of the session and do not change when the resource ID is switched. They mirror the `id` and `ownerId` fields on `SessionRecord` in storage.
|
|
129
|
+
|
|
130
|
+
### `session.identity.getId()`
|
|
131
|
+
|
|
132
|
+
Return the stable session identifier.
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
const sessionId = harness.session.identity.getId()
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### `session.identity.getOwnerId()`
|
|
139
|
+
|
|
140
|
+
Return the stable owner identifier for the session.
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
const ownerId = harness.session.identity.getOwnerId()
|
|
144
|
+
```
|
|
129
145
|
|
|
130
146
|
### `session.identity.getResourceId()`
|
|
131
147
|
|
|
@@ -143,7 +159,7 @@ Return the resource ID the session was created with.
|
|
|
143
159
|
const defaultResourceId = harness.session.identity.getDefaultResourceId()
|
|
144
160
|
```
|
|
145
161
|
|
|
146
|
-
To change the resource ID, use [`harness.setResourceId()`](https://mastra.ai/reference/harness/harness-class), which also tears down the active thread.
|
|
162
|
+
To change the resource ID, use [`harness.setResourceId()`](https://mastra.ai/reference/harness/harness-class), which also tears down the active thread. The session `id` and `ownerId` are not affected by resource switches.
|
|
147
163
|
|
|
148
164
|
## Thread
|
|
149
165
|
|
package/.docs/reference/index.md
CHANGED
|
@@ -118,6 +118,7 @@ The Reference section provides documentation of Mastra's API, including paramete
|
|
|
118
118
|
- [createScorer()](https://mastra.ai/reference/evals/create-scorer)
|
|
119
119
|
- [filterRun()](https://mastra.ai/reference/evals/filter-run)
|
|
120
120
|
- [MastraScorer](https://mastra.ai/reference/evals/mastra-scorer)
|
|
121
|
+
- [Quick Checks](https://mastra.ai/reference/evals/checks)
|
|
121
122
|
- [runEvals()](https://mastra.ai/reference/evals/run-evals)
|
|
122
123
|
- [Scorer Utils](https://mastra.ai/reference/evals/scorer-utils)
|
|
123
124
|
- [Answer Relevancy Scorer](https://mastra.ai/reference/evals/answer-relevancy)
|
|
@@ -44,7 +44,7 @@ OM performs thresholding with fast local token estimation. Text uses `tokenx`, a
|
|
|
44
44
|
|
|
45
45
|
**temporalMarkers** (`boolean`): Insert temporal-gap reminder markers before new user messages when the previous message in the thread is at least 10 minutes older. The marker is persisted in memory, emitted as an inline reminder event so clients can render it specially, and shown to the observer so it can anchor observations to when events occurred. (Default: `false`)
|
|
46
46
|
|
|
47
|
-
**retrieval** (`boolean | { vector?: boolean; scope?: 'thread' | 'resource' }`):
|
|
47
|
+
**retrieval** (`boolean | { vector?: boolean; scope?: 'thread' | 'resource' }`): Enable retrieval-mode observation groups as durable pointers to raw message history. \`true\` enables cross-thread browsing by default. \`{ vector: true }\` also enables semantic search using Memory's vector store and embedder. \`{ scope: 'thread' }\` restricts the recall tool to the current thread only. Default scope is \`'resource'\`. (Default: `false`)
|
|
48
48
|
|
|
49
49
|
**observation** (`ObservationalMemoryObservationConfig`): Configuration for the observation step. Controls when the Observer agent runs and how it behaves.
|
|
50
50
|
|
|
@@ -58,7 +58,7 @@ new MastraEditor({
|
|
|
58
58
|
|
|
59
59
|
**temporalMarkers** (`boolean`): Persist inline temporal gap markers for long pauses between messages.
|
|
60
60
|
|
|
61
|
-
**retrieval** (`boolean | { vector?: boolean; scope?: 'thread' | 'resource' }`):
|
|
61
|
+
**retrieval** (`boolean | { vector?: boolean; scope?: 'thread' | 'resource' }`): Enable retrieval-mode observation groups as durable pointers to raw message history.
|
|
62
62
|
|
|
63
63
|
**observation** (`SerializedObservationalMemoryObservationConfig`): Observer-step configuration (model, token thresholds, buffering).
|
|
64
64
|
|
|
@@ -78,7 +78,7 @@ const stream = await agent.stream('message for agent')
|
|
|
78
78
|
|
|
79
79
|
**options.onAbort** (`(event: any) => Promise<void> | void`): Callback function called when the stream is aborted.
|
|
80
80
|
|
|
81
|
-
**options.abortSignal** (`AbortSignal`): Signal object that allows you to abort the agent's execution. When the signal is aborted, all ongoing operations will be terminated.
|
|
81
|
+
**options.abortSignal** (`AbortSignal`): Signal object that allows you to abort the agent's execution. When the signal is aborted, all ongoing operations will be terminated, including any in-flight subagent runs the agent delegated to.
|
|
82
82
|
|
|
83
83
|
**options.activeTools** (`Array<keyof ToolSet> | undefined`): Array of active tool names that can be used during execution.
|
|
84
84
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @mastra/mcp-docs-server
|
|
2
2
|
|
|
3
|
+
## 1.2.2-alpha.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`86623c1`](https://github.com/mastra-ai/mastra/commit/86623c1adf7d22de32cc916dda17f4155184db36), [`7c9dd77`](https://github.com/mastra-ai/mastra/commit/7c9dd77bd18cb8dc72797e25f1a0fbdc71a11347), [`9990965`](https://github.com/mastra-ai/mastra/commit/999096571635a83b42ef40841fd7028cfa630779), [`c0ffa3c`](https://github.com/mastra-ai/mastra/commit/c0ffa3c897ccd326de880df734740a7f0681a18f), [`0504bf5`](https://github.com/mastra-ai/mastra/commit/0504bf5e8cffc571a4b343326178de371e6f859b), [`5afe423`](https://github.com/mastra-ai/mastra/commit/5afe423e4badf040f1b0d4525183a856fcb8146e), [`86623c1`](https://github.com/mastra-ai/mastra/commit/86623c1adf7d22de32cc916dda17f4155184db36), [`8c9f1c0`](https://github.com/mastra-ai/mastra/commit/8c9f1c0361d89066f9bcd14a2f69e761b01766c8)]:
|
|
8
|
+
- @mastra/core@1.47.0-alpha.2
|
|
9
|
+
|
|
10
|
+
## 1.2.2-alpha.2
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [[`7f9ae70`](https://github.com/mastra-ai/mastra/commit/7f9ae70826b047e5a66218f9e92f20e54a2d791f), [`1505c07`](https://github.com/mastra-ai/mastra/commit/1505c07603f6346bae12aa82f140e8b88ffea9ab), [`e940f09`](https://github.com/mastra-ai/mastra/commit/e940f099ef5d18b403e6f2b4937e086a4da857b1)]:
|
|
15
|
+
- @mastra/core@1.46.1-alpha.1
|
|
16
|
+
|
|
3
17
|
## 1.2.2-alpha.0
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/mcp-docs-server",
|
|
3
|
-
"version": "1.2.2-alpha.
|
|
3
|
+
"version": "1.2.2-alpha.4",
|
|
4
4
|
"description": "MCP server for accessing Mastra.ai documentation, changelogs, and news.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"jsdom": "^26.1.0",
|
|
29
29
|
"local-pkg": "^1.1.2",
|
|
30
30
|
"zod": "^4.4.3",
|
|
31
|
-
"@mastra/core": "1.
|
|
31
|
+
"@mastra/core": "1.47.0-alpha.2",
|
|
32
32
|
"@mastra/mcp": "^1.12.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
"tsx": "^4.22.4",
|
|
46
46
|
"typescript": "^6.0.3",
|
|
47
47
|
"vitest": "4.1.8",
|
|
48
|
-
"@
|
|
48
|
+
"@mastra/core": "1.47.0-alpha.2",
|
|
49
49
|
"@internal/types-builder": "0.0.83",
|
|
50
|
-
"@
|
|
50
|
+
"@internal/lint": "0.0.108"
|
|
51
51
|
},
|
|
52
52
|
"homepage": "https://mastra.ai",
|
|
53
53
|
"repository": {
|