@mastra/core 1.16.1-alpha.1 → 1.17.0-alpha.2
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/CHANGELOG.md +39 -0
- package/dist/agent/index.cjs +8 -8
- package/dist/agent/index.js +1 -1
- package/dist/{chunk-XKOCRXCP.js → chunk-4UTQD6B5.js} +3 -3
- package/dist/{chunk-XKOCRXCP.js.map → chunk-4UTQD6B5.js.map} +1 -1
- package/dist/{chunk-4DFZ553O.js → chunk-5TKRQNGW.js} +3 -3
- package/dist/{chunk-4DFZ553O.js.map → chunk-5TKRQNGW.js.map} +1 -1
- package/dist/{chunk-UCKOC22J.cjs → chunk-6HSR64XA.cjs} +15 -5
- package/dist/chunk-6HSR64XA.cjs.map +1 -0
- package/dist/{chunk-GKUIFIWB.cjs → chunk-76NWBCBU.cjs} +9 -9
- package/dist/{chunk-GKUIFIWB.cjs.map → chunk-76NWBCBU.cjs.map} +1 -1
- package/dist/{chunk-J3NJXIJ4.js → chunk-ABA3KD3X.js} +524 -246
- package/dist/chunk-ABA3KD3X.js.map +1 -0
- package/dist/{chunk-RQBBPR64.cjs → chunk-AH2ZNH4Y.cjs} +30 -28
- package/dist/chunk-AH2ZNH4Y.cjs.map +1 -0
- package/dist/{chunk-LPCQ6RYF.cjs → chunk-AX5EPGND.cjs} +51 -51
- package/dist/{chunk-LPCQ6RYF.cjs.map → chunk-AX5EPGND.cjs.map} +1 -1
- package/dist/{chunk-ESKXIAWT.js → chunk-E7L2JB4A.js} +8 -8
- package/dist/{chunk-ESKXIAWT.js.map → chunk-E7L2JB4A.js.map} +1 -1
- package/dist/{chunk-YB77ED7R.js → chunk-FLW4344C.js} +3 -3
- package/dist/{chunk-YB77ED7R.js.map → chunk-FLW4344C.js.map} +1 -1
- package/dist/{chunk-7O2GO5ZA.cjs → chunk-I2Z4GKQ6.cjs} +15 -15
- package/dist/{chunk-7O2GO5ZA.cjs.map → chunk-I2Z4GKQ6.cjs.map} +1 -1
- package/dist/{chunk-AM2AF362.cjs → chunk-ID5X55KA.cjs} +5 -5
- package/dist/{chunk-AM2AF362.cjs.map → chunk-ID5X55KA.cjs.map} +1 -1
- package/dist/{chunk-YKW2LXON.js → chunk-JMYTEYXJ.js} +5 -5
- package/dist/{chunk-YKW2LXON.js.map → chunk-JMYTEYXJ.js.map} +1 -1
- package/dist/{chunk-Y5EGGY3M.js → chunk-K76OKOAK.js} +3 -3
- package/dist/{chunk-Y5EGGY3M.js.map → chunk-K76OKOAK.js.map} +1 -1
- package/dist/{chunk-ZJMETLCP.js → chunk-LOGX3EQD.js} +30 -28
- package/dist/chunk-LOGX3EQD.js.map +1 -0
- package/dist/{chunk-RGOEP34Y.js → chunk-MNIWCQYZ.js} +3 -3
- package/dist/{chunk-RGOEP34Y.js.map → chunk-MNIWCQYZ.js.map} +1 -1
- package/dist/{chunk-6ZT4MY74.cjs → chunk-O54IMECL.cjs} +185 -185
- package/dist/{chunk-6ZT4MY74.cjs.map → chunk-O54IMECL.cjs.map} +1 -1
- package/dist/{chunk-KDT3Y3ME.cjs → chunk-OBHOUEDZ.cjs} +83 -83
- package/dist/{chunk-KDT3Y3ME.cjs.map → chunk-OBHOUEDZ.cjs.map} +1 -1
- package/dist/{chunk-WJWWFBKT.js → chunk-OIZT4TON.js} +476 -27
- package/dist/chunk-OIZT4TON.js.map +1 -0
- package/dist/{chunk-NHYQRELK.cjs → chunk-P54SNCAD.cjs} +3 -3
- package/dist/{chunk-NHYQRELK.cjs.map → chunk-P54SNCAD.cjs.map} +1 -1
- package/dist/{chunk-HFGULJ4Q.js → chunk-PICHLY3C.js} +4 -4
- package/dist/{chunk-HFGULJ4Q.js.map → chunk-PICHLY3C.js.map} +1 -1
- package/dist/{chunk-7L2ICIDI.cjs → chunk-PQ4CVQXD.cjs} +6 -6
- package/dist/{chunk-7L2ICIDI.cjs.map → chunk-PQ4CVQXD.cjs.map} +1 -1
- package/dist/{chunk-QJGJEX2X.cjs → chunk-PTRJHO2K.cjs} +7 -7
- package/dist/{chunk-QJGJEX2X.cjs.map → chunk-PTRJHO2K.cjs.map} +1 -1
- package/dist/{chunk-XW4B2RAG.cjs → chunk-QVVWKMFM.cjs} +525 -248
- package/dist/chunk-QVVWKMFM.cjs.map +1 -0
- package/dist/{chunk-JWTPUJWM.cjs → chunk-R47HLGU7.cjs} +512 -61
- package/dist/chunk-R47HLGU7.cjs.map +1 -0
- package/dist/{chunk-OEOHECI4.cjs → chunk-SDSIVJMT.cjs} +9 -9
- package/dist/{chunk-OEOHECI4.cjs.map → chunk-SDSIVJMT.cjs.map} +1 -1
- package/dist/{chunk-PSJRMLRB.js → chunk-UOCBF4IP.js} +3 -3
- package/dist/{chunk-PSJRMLRB.js.map → chunk-UOCBF4IP.js.map} +1 -1
- package/dist/{chunk-TOPTRKIX.js → chunk-X234OVG3.js} +14 -4
- package/dist/chunk-X234OVG3.js.map +1 -0
- package/dist/{chunk-EBPV22NT.cjs → chunk-XTN63GKI.cjs} +7 -7
- package/dist/{chunk-EBPV22NT.cjs.map → chunk-XTN63GKI.cjs.map} +1 -1
- package/dist/{chunk-X672Z4KM.js → chunk-YBNI2A6Y.js} +8 -8
- package/dist/{chunk-X672Z4KM.js.map → chunk-YBNI2A6Y.js.map} +1 -1
- package/dist/{chunk-P7HTEQ33.js → chunk-ZT26XXEB.js} +5 -5
- package/dist/{chunk-P7HTEQ33.js.map → chunk-ZT26XXEB.js.map} +1 -1
- package/dist/datasets/index.cjs +17 -17
- package/dist/datasets/index.js +2 -2
- package/dist/docs/SKILL.md +3 -1
- package/dist/docs/assets/SOURCE_MAP.json +264 -254
- package/dist/docs/references/docs-workspace-lsp.md +116 -0
- package/dist/docs/references/docs-workspace-overview.md +15 -1
- package/dist/docs/references/reference-harness-harness-class.md +2 -0
- package/dist/docs/references/reference-processors-skill-search-processor.md +93 -0
- package/dist/docs/references/reference.md +1 -0
- package/dist/evals/index.cjs +5 -5
- package/dist/evals/index.js +2 -2
- package/dist/evals/scoreTraces/index.cjs +3 -3
- package/dist/evals/scoreTraces/index.js +1 -1
- package/dist/harness/harness.d.ts +4 -5
- package/dist/harness/harness.d.ts.map +1 -1
- package/dist/harness/index.cjs +44 -12
- package/dist/harness/index.cjs.map +1 -1
- package/dist/harness/index.d.ts +1 -1
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +39 -7
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/types.d.ts +18 -4
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/dist/llm/index.cjs +16 -16
- package/dist/llm/index.js +5 -5
- package/dist/llm/model/provider-types.generated.d.ts +5 -0
- package/dist/loop/index.cjs +14 -14
- package/dist/loop/index.js +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.js +1 -1
- package/dist/memory/index.cjs +14 -14
- package/dist/memory/index.js +1 -1
- package/dist/models-dev-DYILKQKY.js +3 -0
- package/dist/{models-dev-7F53M5Y6.js.map → models-dev-DYILKQKY.js.map} +1 -1
- package/dist/models-dev-EX67IAAF.cjs +12 -0
- package/dist/{models-dev-KMQOE3SL.cjs.map → models-dev-EX67IAAF.cjs.map} +1 -1
- package/dist/netlify-EDK4WKCW.cjs +12 -0
- package/dist/{netlify-MBDMAHGO.cjs.map → netlify-EDK4WKCW.cjs.map} +1 -1
- package/dist/netlify-RQLBHLLX.js +3 -0
- package/dist/{netlify-KUZQYG5K.js.map → netlify-RQLBHLLX.js.map} +1 -1
- package/dist/processor-provider/index.cjs +10 -10
- package/dist/processor-provider/index.js +1 -1
- package/dist/processors/index.cjs +50 -42
- package/dist/processors/index.js +1 -1
- package/dist/processors/processors/index.d.ts +2 -0
- package/dist/processors/processors/index.d.ts.map +1 -1
- package/dist/processors/processors/skill-search.d.ts +111 -0
- package/dist/processors/processors/skill-search.d.ts.map +1 -0
- package/dist/processors/tool-result-reminder.d.ts +32 -0
- package/dist/processors/tool-result-reminder.d.ts.map +1 -0
- package/dist/provider-registry-3RCP7DTQ.js +3 -0
- package/dist/{provider-registry-EB75EFT7.js.map → provider-registry-3RCP7DTQ.js.map} +1 -1
- package/dist/provider-registry-MBXOBTD4.cjs +40 -0
- package/dist/{provider-registry-3B6CFW7R.cjs.map → provider-registry-MBXOBTD4.cjs.map} +1 -1
- package/dist/provider-registry.json +10 -0
- package/dist/relevance/index.cjs +3 -3
- package/dist/relevance/index.js +1 -1
- package/dist/storage/index.cjs +74 -74
- package/dist/storage/index.js +1 -1
- package/dist/stream/index.cjs +8 -8
- package/dist/stream/index.js +1 -1
- package/dist/test-utils/llm-mock.cjs +4 -4
- package/dist/test-utils/llm-mock.js +1 -1
- package/dist/tool-loop-agent/index.cjs +4 -4
- package/dist/tool-loop-agent/index.js +1 -1
- package/dist/tools/tool-builder/builder.d.ts.map +1 -1
- package/dist/utils.cjs +23 -23
- package/dist/utils.js +1 -1
- package/dist/vector/index.cjs +7 -7
- package/dist/vector/index.js +1 -1
- package/dist/workflows/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/index.cjs +24 -24
- package/dist/workflows/index.js +1 -1
- package/dist/workspace/constants/index.d.ts +4 -1
- package/dist/workspace/constants/index.d.ts.map +1 -1
- package/dist/workspace/index.cjs +68 -68
- package/dist/workspace/index.js +1 -1
- package/dist/workspace/lsp/client.d.ts +30 -0
- package/dist/workspace/lsp/client.d.ts.map +1 -1
- package/dist/workspace/lsp/manager.d.ts +11 -0
- package/dist/workspace/lsp/manager.d.ts.map +1 -1
- package/dist/workspace/tools/index.d.ts +1 -0
- package/dist/workspace/tools/index.d.ts.map +1 -1
- package/dist/workspace/tools/lsp-inspect.d.ts +13 -0
- package/dist/workspace/tools/lsp-inspect.d.ts.map +1 -0
- package/dist/workspace/tools/tools.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/llm/model/provider-types.generated.d.ts +5 -0
- package/dist/chunk-J3NJXIJ4.js.map +0 -1
- package/dist/chunk-JWTPUJWM.cjs.map +0 -1
- package/dist/chunk-RQBBPR64.cjs.map +0 -1
- package/dist/chunk-TOPTRKIX.js.map +0 -1
- package/dist/chunk-UCKOC22J.cjs.map +0 -1
- package/dist/chunk-WJWWFBKT.js.map +0 -1
- package/dist/chunk-XW4B2RAG.cjs.map +0 -1
- package/dist/chunk-ZJMETLCP.js.map +0 -1
- package/dist/models-dev-7F53M5Y6.js +0 -3
- package/dist/models-dev-KMQOE3SL.cjs +0 -12
- package/dist/netlify-KUZQYG5K.js +0 -3
- package/dist/netlify-MBDMAHGO.cjs +0 -12
- package/dist/provider-registry-3B6CFW7R.cjs +0 -40
- package/dist/provider-registry-EB75EFT7.js +0 -3
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# LSP inspection
|
|
2
|
+
|
|
3
|
+
**Added in:** `@mastra/core@1.1.0`
|
|
4
|
+
|
|
5
|
+
LSP inspection gives workspace-backed agents semantic code intelligence. When you enable LSP on a workspace, agents can inspect symbols in supported files to retrieve hover information, jump to definitions, and find implementations.
|
|
6
|
+
|
|
7
|
+
## When to use LSP inspection
|
|
8
|
+
|
|
9
|
+
Use LSP inspection when your agent needs semantic code understanding instead of plain-text search alone:
|
|
10
|
+
|
|
11
|
+
- Inspect TypeScript or JavaScript symbols and their inferred types
|
|
12
|
+
- Find where a symbol is declared before editing related code
|
|
13
|
+
- Explore implementations across a codebase without manually tracing every file
|
|
14
|
+
- Combine semantic inspection with `view` and `search_content` for faster navigation
|
|
15
|
+
|
|
16
|
+
## Basic usage
|
|
17
|
+
|
|
18
|
+
Enable LSP on a workspace by setting `lsp: true`:
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import { Workspace, LocalFilesystem, LocalSandbox } from '@mastra/core/workspace'
|
|
22
|
+
|
|
23
|
+
const workspace = new Workspace({
|
|
24
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
25
|
+
sandbox: new LocalSandbox({ workingDirectory: './workspace' }),
|
|
26
|
+
lsp: true,
|
|
27
|
+
})
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
With this configuration, the workspace registers the default LSP inspection tool alongside the configured filesystem and sandbox tools.
|
|
31
|
+
|
|
32
|
+
## Agent tool
|
|
33
|
+
|
|
34
|
+
When LSP is enabled, the workspace exposes `mastra_workspace_lsp_inspect` by default.
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"path": "/absolute/path/to/file.ts",
|
|
39
|
+
"line": 10,
|
|
40
|
+
"match": "const foo = <<<bar()"
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The `match` field must include exactly one `<<<` cursor marker. The marker identifies the symbol position on the specified line.
|
|
45
|
+
|
|
46
|
+
The tool returns up to three result groups:
|
|
47
|
+
|
|
48
|
+
| Result | Description |
|
|
49
|
+
| ---------------- | ---------------------------------------------------------------- |
|
|
50
|
+
| `hover` | Type information or documentation for the symbol at the cursor |
|
|
51
|
+
| `diagnostics` | Line-scoped LSP diagnostics for the inspected line, when present |
|
|
52
|
+
| `definition` | Declaration locations with a one-line preview |
|
|
53
|
+
| `implementation` | Implementation or usage locations |
|
|
54
|
+
|
|
55
|
+
## Tool name remapping
|
|
56
|
+
|
|
57
|
+
Rename the tool if your agent expects a shorter name:
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
import { Workspace, LocalFilesystem, WORKSPACE_TOOLS } from '@mastra/core/workspace'
|
|
61
|
+
|
|
62
|
+
const workspace = new Workspace({
|
|
63
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
64
|
+
lsp: true,
|
|
65
|
+
tools: {
|
|
66
|
+
[WORKSPACE_TOOLS.LSP.LSP_INSPECT]: {
|
|
67
|
+
name: 'lsp_inspect',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
})
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
This changes the exposed tool name only. The configuration key stays `WORKSPACE_TOOLS.LSP.LSP_INSPECT`.
|
|
74
|
+
|
|
75
|
+
## LSP configuration
|
|
76
|
+
|
|
77
|
+
Set `lsp` to `true` for default behavior, or provide an object to customize server startup and diagnostics:
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
import { Workspace, LocalFilesystem } from '@mastra/core/workspace'
|
|
81
|
+
|
|
82
|
+
const workspace = new Workspace({
|
|
83
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
84
|
+
lsp: {
|
|
85
|
+
diagnosticTimeout: 4000,
|
|
86
|
+
initTimeout: 8000,
|
|
87
|
+
disableServers: ['pyright'],
|
|
88
|
+
binaryOverrides: {
|
|
89
|
+
typescript: '/custom/path/to/typescript-language-server',
|
|
90
|
+
},
|
|
91
|
+
searchPaths: ['/opt/homebrew/bin'],
|
|
92
|
+
},
|
|
93
|
+
})
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Use custom configuration when you need to:
|
|
97
|
+
|
|
98
|
+
- Increase timeouts for large repositories
|
|
99
|
+
- Disable specific language servers
|
|
100
|
+
- Point Mastra at custom language server binaries
|
|
101
|
+
- Add extra binary search paths in constrained environments
|
|
102
|
+
|
|
103
|
+
## Requirements and limitations
|
|
104
|
+
|
|
105
|
+
- LSP inspection only works for file types with a matching language server
|
|
106
|
+
- The `path` you inspect must resolve inside the workspace filesystem or allowed paths
|
|
107
|
+
- External package inspection may resolve to declaration files such as `.d.ts` instead of runtime source files
|
|
108
|
+
- `lsp_inspect` complements `view` and `search_content`, but does not replace reading implementation code when you need full context
|
|
109
|
+
|
|
110
|
+
## Related
|
|
111
|
+
|
|
112
|
+
- [Workspace overview](https://mastra.ai/docs/workspace/overview)
|
|
113
|
+
- [Filesystem](https://mastra.ai/docs/workspace/filesystem)
|
|
114
|
+
- [Sandbox](https://mastra.ai/docs/workspace/sandbox)
|
|
115
|
+
- [Search and indexing](https://mastra.ai/docs/workspace/search)
|
|
116
|
+
- [Workspace class reference](https://mastra.ai/reference/workspace/workspace-class)
|
|
@@ -8,9 +8,14 @@ A workspace supports the following features:
|
|
|
8
8
|
|
|
9
9
|
- **[Filesystem](https://mastra.ai/docs/workspace/filesystem)**: File storage (read, write, list, delete, copy, move, grep)
|
|
10
10
|
- **[Sandbox](https://mastra.ai/docs/workspace/sandbox)**: Command execution (shell commands) and background processes
|
|
11
|
+
- **[LSP inspection](https://mastra.ai/docs/workspace/lsp)**: Hover, definition, and implementation queries through language servers
|
|
11
12
|
- **[Search](https://mastra.ai/docs/workspace/search)**: BM25, vector, or hybrid search over indexed content
|
|
12
13
|
- **[Skills](https://mastra.ai/docs/workspace/skills)**: Reusable instructions for agents
|
|
13
14
|
|
|
15
|
+
## When to use workspaces
|
|
16
|
+
|
|
17
|
+
Use a workspace when your agent needs access to the local filesystem, shell commands, semantic code inspection, indexed search, or reusable skill instructions.
|
|
18
|
+
|
|
14
19
|
## How it works
|
|
15
20
|
|
|
16
21
|
When you assign a workspace to an agent, Mastra includes the corresponding tools in the agent's toolset. The agent can then use these tools to interact with files and execute commands.
|
|
@@ -208,16 +213,24 @@ import { Workspace, LocalFilesystem, LocalSandbox, WORKSPACE_TOOLS } from '@mast
|
|
|
208
213
|
const workspace = new Workspace({
|
|
209
214
|
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
210
215
|
sandbox: new LocalSandbox({ workingDirectory: './workspace' }),
|
|
216
|
+
lsp: true,
|
|
211
217
|
tools: {
|
|
212
218
|
[WORKSPACE_TOOLS.FILESYSTEM.READ_FILE]: { name: 'view' },
|
|
213
219
|
[WORKSPACE_TOOLS.FILESYSTEM.GREP]: { name: 'search_content' },
|
|
214
220
|
[WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES]: { name: 'find_files' },
|
|
215
221
|
[WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND]: { name: 'execute_command' },
|
|
222
|
+
[WORKSPACE_TOOLS.LSP.LSP_INSPECT]: { name: 'lsp_inspect' },
|
|
216
223
|
},
|
|
217
224
|
})
|
|
218
225
|
```
|
|
219
226
|
|
|
220
|
-
The agent sees `view`, `search_content`, `find_files`, and `
|
|
227
|
+
The agent sees `view`, `search_content`, `find_files`, `execute_command`, and `lsp_inspect` instead of the default `mastra_workspace_*` names. Tool names must be unique — duplicate names or conflicts with other default names throw an error.
|
|
228
|
+
|
|
229
|
+
## LSP inspection
|
|
230
|
+
|
|
231
|
+
Enable `lsp` on a workspace to add semantic code inspection through language servers. This adds the `mastra_workspace_lsp_inspect` tool by default, which can return hover information, definition locations, and implementations for a symbol at a specific cursor position.
|
|
232
|
+
|
|
233
|
+
See [LSP inspection](https://mastra.ai/docs/workspace/lsp) for configuration, examples, and tool name remapping.
|
|
221
234
|
|
|
222
235
|
### Output truncation
|
|
223
236
|
|
|
@@ -294,6 +307,7 @@ External providers may perform additional setup like establishing connections or
|
|
|
294
307
|
|
|
295
308
|
- [Filesystem](https://mastra.ai/docs/workspace/filesystem)
|
|
296
309
|
- [Sandbox](https://mastra.ai/docs/workspace/sandbox)
|
|
310
|
+
- [LSP inspection](https://mastra.ai/docs/workspace/lsp)
|
|
297
311
|
- [Skills](https://mastra.ai/docs/workspace/skills)
|
|
298
312
|
- [Search and indexing](https://mastra.ai/docs/workspace/search)
|
|
299
313
|
- [Workspace class reference](https://mastra.ai/reference/workspace/workspace-class)
|
|
@@ -94,6 +94,8 @@ await harness.sendMessage({ content: 'Hello!' })
|
|
|
94
94
|
|
|
95
95
|
**omConfig** (`HarnessOMConfig`): Default configuration for observational memory (observer/reflector model IDs and thresholds).
|
|
96
96
|
|
|
97
|
+
**disableBuiltinTools** (`BuiltinToolId[]`): Built-in harness tool IDs to remove from the \`harnessBuiltIn\` toolset. Valid values are \`ask\_user\`, \`submit\_plan\`, \`task\_write\`, \`task\_check\`, and \`subagent\`.
|
|
98
|
+
|
|
97
99
|
**heartbeatHandlers** (`HeartbeatHandler[]`): Periodic background tasks started during \`init()\`. Use for gateway sync, cache refresh, and similar tasks.
|
|
98
100
|
|
|
99
101
|
**idGenerator** (`() => string`): Custom ID generator for Harness-managed IDs such as threads and mode-run identifiers. (Default: `timestamp + random string`)
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# SkillSearchProcessor
|
|
2
|
+
|
|
3
|
+
The `SkillSearchProcessor` is an **input processor** that enables on-demand skill discovery and loading. Instead of injecting all skill metadata into the system prompt upfront (like `SkillsProcessor`), it gives the agent two meta-tools (`search_skills` and `load_skill`) that let it find and load skills on demand. This reduces context token usage when workspaces have many skills.
|
|
4
|
+
|
|
5
|
+
## Usage example
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { SkillSearchProcessor } from '@mastra/core/processors'
|
|
9
|
+
|
|
10
|
+
const skillSearch = new SkillSearchProcessor({
|
|
11
|
+
workspace,
|
|
12
|
+
search: {
|
|
13
|
+
topK: 5,
|
|
14
|
+
minScore: 0.1,
|
|
15
|
+
},
|
|
16
|
+
})
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Constructor parameters
|
|
20
|
+
|
|
21
|
+
**options** (`SkillSearchProcessorOptions`): Configuration options for the skill search processor
|
|
22
|
+
|
|
23
|
+
**options.workspace** (`Workspace`): Workspace instance containing skills. Skills are accessed via workspace.skills.
|
|
24
|
+
|
|
25
|
+
**options.search** (`{ topK?: number; minScore?: number }`): Configuration for the search behavior.
|
|
26
|
+
|
|
27
|
+
**options.search.topK** (`number`): Maximum number of skills to return in search results.
|
|
28
|
+
|
|
29
|
+
**options.search.minScore** (`number`): Minimum relevance score for including a skill in search results.
|
|
30
|
+
|
|
31
|
+
**options.ttl** (`number`): Time-to-live for thread state in milliseconds. After this duration of inactivity, thread state will be cleaned up. Set to 0 to disable cleanup.
|
|
32
|
+
|
|
33
|
+
## Returns
|
|
34
|
+
|
|
35
|
+
**id** (`string`): Processor identifier set to 'skill-search'
|
|
36
|
+
|
|
37
|
+
**name** (`string`): Processor display name set to 'Skill Search Processor'
|
|
38
|
+
|
|
39
|
+
**processInputStep** (`(args: ProcessInputStepArgs) => Promise<ProcessInputStepResult>`): Processes each step to inject search/load meta-tools and any previously loaded skill instructions as system messages.
|
|
40
|
+
|
|
41
|
+
## Extended usage example
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { Agent } from '@mastra/core/agent'
|
|
45
|
+
import { SkillSearchProcessor } from '@mastra/core/processors'
|
|
46
|
+
import { Workspace, LocalFilesystem } from '@mastra/core/workspace'
|
|
47
|
+
|
|
48
|
+
const workspace = new Workspace({
|
|
49
|
+
filesystem: new LocalFilesystem({ basePath: './project' }),
|
|
50
|
+
skills: ['/skills'],
|
|
51
|
+
bm25: true,
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
const skillSearch = new SkillSearchProcessor({
|
|
55
|
+
workspace,
|
|
56
|
+
search: {
|
|
57
|
+
topK: 5,
|
|
58
|
+
minScore: 0.1,
|
|
59
|
+
},
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
const agent = new Agent({
|
|
63
|
+
name: 'skill-agent',
|
|
64
|
+
instructions:
|
|
65
|
+
'You are a helpful assistant. Use search_skills to find relevant skills, then load_skill to load their instructions.',
|
|
66
|
+
model: 'openai/gpt-4o',
|
|
67
|
+
workspace,
|
|
68
|
+
inputProcessors: [skillSearch],
|
|
69
|
+
})
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The agent workflow is:
|
|
73
|
+
|
|
74
|
+
1. Agent receives a user message
|
|
75
|
+
2. Agent calls `search_skills` with keywords (e.g., "api design")
|
|
76
|
+
3. Agent reviews results and calls `load_skill` with the skill name
|
|
77
|
+
4. The skill's instructions appear as system messages on the next turn
|
|
78
|
+
5. Agent follows the loaded skill's instructions
|
|
79
|
+
|
|
80
|
+
## Compared to SkillsProcessor
|
|
81
|
+
|
|
82
|
+
| | SkillsProcessor | SkillSearchProcessor |
|
|
83
|
+
| -------------- | -------------------------- | ---------------------------------- |
|
|
84
|
+
| Scaling | Injects all skills upfront | On-demand discovery |
|
|
85
|
+
| Context usage | Grows with skill count | Constant (only loaded skills) |
|
|
86
|
+
| Agent workflow | Skills always visible | Agent searches and loads as needed |
|
|
87
|
+
| Best for | Few skills (< 10) | Many skills (10+) |
|
|
88
|
+
|
|
89
|
+
## Related
|
|
90
|
+
|
|
91
|
+
- [ToolSearchProcessor](https://mastra.ai/reference/processors/tool-search-processor)
|
|
92
|
+
- [Processors](https://mastra.ai/docs/agents/processors)
|
|
93
|
+
- [Workspace Skills](https://mastra.ai/docs/workspace/overview)
|
|
@@ -153,6 +153,7 @@ The Reference section provides documentation of Mastra's API, including paramete
|
|
|
153
153
|
- [Processor Interface](https://mastra.ai/reference/processors/processor-interface)
|
|
154
154
|
- [PromptInjectionDetector](https://mastra.ai/reference/processors/prompt-injection-detector)
|
|
155
155
|
- [SemanticRecall](https://mastra.ai/reference/processors/semantic-recall-processor)
|
|
156
|
+
- [SkillSearchProcessor](https://mastra.ai/reference/processors/skill-search-processor)
|
|
156
157
|
- [SystemPromptScrubber](https://mastra.ai/reference/processors/system-prompt-scrubber)
|
|
157
158
|
- [TokenLimiterProcessor](https://mastra.ai/reference/processors/token-limiter-processor)
|
|
158
159
|
- [ToolCallFilter](https://mastra.ai/reference/processors/tool-call-filter)
|
package/dist/evals/index.cjs
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkID5X55KA_cjs = require('../chunk-ID5X55KA.cjs');
|
|
4
|
+
var chunkR47HLGU7_cjs = require('../chunk-R47HLGU7.cjs');
|
|
5
5
|
var chunkQVQ3PGG2_cjs = require('../chunk-QVQ3PGG2.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "runEvals", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkID5X55KA_cjs.runEvals; }
|
|
12
12
|
});
|
|
13
13
|
Object.defineProperty(exports, "MastraScorer", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkR47HLGU7_cjs.MastraScorer; }
|
|
16
16
|
});
|
|
17
17
|
Object.defineProperty(exports, "createScorer", {
|
|
18
18
|
enumerable: true,
|
|
19
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunkR47HLGU7_cjs.createScorer; }
|
|
20
20
|
});
|
|
21
21
|
Object.defineProperty(exports, "listScoresResponseSchema", {
|
|
22
22
|
enumerable: true,
|
package/dist/evals/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { runEvals } from '../chunk-
|
|
2
|
-
export { MastraScorer, createScorer } from '../chunk-
|
|
1
|
+
export { runEvals } from '../chunk-5TKRQNGW.js';
|
|
2
|
+
export { MastraScorer, createScorer } from '../chunk-OIZT4TON.js';
|
|
3
3
|
export { listScoresResponseSchema, saveScorePayloadSchema, scoreResultSchema, scoreRowDataSchema, scoringEntityTypeSchema, scoringExtractStepResultSchema, scoringHookInputSchema, scoringInputSchema, scoringInputWithExtractStepResultAndAnalyzeStepResultSchema, scoringInputWithExtractStepResultAndScoreAndReasonSchema, scoringInputWithExtractStepResultSchema, scoringPromptsSchema, scoringSourceSchema, scoringValueSchema } from '../chunk-AGEYVARR.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkAX5EPGND_cjs = require('../../chunk-AX5EPGND.cjs');
|
|
4
4
|
var chunkQVQ3PGG2_cjs = require('../../chunk-QVQ3PGG2.cjs');
|
|
5
5
|
var chunkG5HKDGNT_cjs = require('../../chunk-G5HKDGNT.cjs');
|
|
6
6
|
var chunk4U7ZLI36_cjs = require('../../chunk-4U7ZLI36.cjs');
|
|
@@ -235,7 +235,7 @@ function transformTraceToScorerInputAndOutput(trace) {
|
|
|
235
235
|
}
|
|
236
236
|
|
|
237
237
|
// src/evals/scoreTraces/scoreTracesWorkflow.ts
|
|
238
|
-
var getTraceStep =
|
|
238
|
+
var getTraceStep = chunkAX5EPGND_cjs.createStep({
|
|
239
239
|
id: "__process-trace-scoring",
|
|
240
240
|
inputSchema: v4.z.object({
|
|
241
241
|
targets: v4.z.array(
|
|
@@ -446,7 +446,7 @@ async function attachScoreToSpan({
|
|
|
446
446
|
} catch {
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
|
-
var scoreTracesWorkflow =
|
|
449
|
+
var scoreTracesWorkflow = chunkAX5EPGND_cjs.createWorkflow({
|
|
450
450
|
id: "__batch-scoring-traces",
|
|
451
451
|
inputSchema: v4.z.object({
|
|
452
452
|
targets: v4.z.array(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createStep, createWorkflow } from '../../chunk-
|
|
1
|
+
import { createStep, createWorkflow } from '../../chunk-JMYTEYXJ.js';
|
|
2
2
|
import { saveScorePayloadSchema } from '../../chunk-AGEYVARR.js';
|
|
3
3
|
import { resolveObservabilityContext } from '../../chunk-CT4YYQI3.js';
|
|
4
4
|
import { MastraError } from '../../chunk-FJEVLHJT.js';
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { TracingContext, TracingOptions } from '../observability/index.js';
|
|
2
2
|
import { RequestContext } from '../request-context/index.js';
|
|
3
|
-
import type { InferPublicSchema } from '../schema/index.js';
|
|
4
3
|
import type { ObservationalMemoryRecord } from '../storage/types.js';
|
|
5
4
|
import { Workspace } from '../workspace/workspace.js';
|
|
6
|
-
import type { AvailableModel, HeartbeatHandler, HarnessConfig, HarnessDisplayState, HarnessEventListener, HarnessMessage, HarnessMode, HarnessSession,
|
|
5
|
+
import type { AvailableModel, HeartbeatHandler, HarnessConfig, HarnessDisplayState, HarnessEventListener, HarnessMessage, HarnessMode, HarnessSession, HarnessThread, ModelAuthStatus, PermissionPolicy, PermissionRules, ToolCategory } from './types.js';
|
|
7
6
|
/**
|
|
8
7
|
* The Harness orchestrates multiple agent modes, shared state, memory, and storage.
|
|
9
8
|
* It's the core abstraction that a TUI (or other UI) controls.
|
|
@@ -30,7 +29,7 @@ import type { AvailableModel, HeartbeatHandler, HarnessConfig, HarnessDisplaySta
|
|
|
30
29
|
* await harness.sendMessage({ content: "Hello!" })
|
|
31
30
|
* ```
|
|
32
31
|
*/
|
|
33
|
-
export declare class Harness<TState
|
|
32
|
+
export declare class Harness<TState = {}> {
|
|
34
33
|
#private;
|
|
35
34
|
readonly id: string;
|
|
36
35
|
private config;
|
|
@@ -74,12 +73,12 @@ export declare class Harness<TState extends HarnessStateSchema<any> = HarnessSta
|
|
|
74
73
|
/**
|
|
75
74
|
* Get current harness state (read-only snapshot).
|
|
76
75
|
*/
|
|
77
|
-
getState(): Readonly<
|
|
76
|
+
getState(): Readonly<TState>;
|
|
78
77
|
/**
|
|
79
78
|
* Update harness state. Validates against schema if provided.
|
|
80
79
|
* Emits state_changed event.
|
|
81
80
|
*/
|
|
82
|
-
setState(updates: Partial<
|
|
81
|
+
setState(updates: Partial<TState>): Promise<void>;
|
|
83
82
|
private getSchemaDefaults;
|
|
84
83
|
listModes(): HarnessMode<TState>[];
|
|
85
84
|
getCurrentModeId(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/harness/harness.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/harness/harness.ts"],"names":[],"mappings":"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"}
|
package/dist/harness/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkI2Z4GKQ6_cjs = require('../chunk-I2Z4GKQ6.cjs');
|
|
4
|
+
var chunkR47HLGU7_cjs = require('../chunk-R47HLGU7.cjs');
|
|
5
|
+
var chunkQVVWKMFM_cjs = require('../chunk-QVVWKMFM.cjs');
|
|
6
6
|
var chunkK4NN2KQQ_cjs = require('../chunk-K4NN2KQQ.cjs');
|
|
7
7
|
var chunkXB4FLS7A_cjs = require('../chunk-XB4FLS7A.cjs');
|
|
8
8
|
var chunk5WBEMKE2_cjs = require('../chunk-5WBEMKE2.cjs');
|
|
@@ -312,7 +312,7 @@ Use this tool when:
|
|
|
312
312
|
};
|
|
313
313
|
}
|
|
314
314
|
const workspace = context?.workspace;
|
|
315
|
-
const subagent = new
|
|
315
|
+
const subagent = new chunkR47HLGU7_cjs.Agent({
|
|
316
316
|
id: `subagent-${definition.id}`,
|
|
317
317
|
name: `${definition.name} Subagent`,
|
|
318
318
|
instructions: definition.instructions,
|
|
@@ -320,7 +320,7 @@ Use this tool when:
|
|
|
320
320
|
tools: mergedTools,
|
|
321
321
|
workspace
|
|
322
322
|
});
|
|
323
|
-
const allWorkspaceToolNames = workspace ? new Set(Object.keys(
|
|
323
|
+
const allWorkspaceToolNames = workspace ? new Set(Object.keys(chunkQVVWKMFM_cjs.createWorkspaceTools(workspace))) : void 0;
|
|
324
324
|
const allowedWs = definition.allowedWorkspaceTools ? new Set(definition.allowedWorkspaceTools) : void 0;
|
|
325
325
|
const startTime = Date.now();
|
|
326
326
|
emitEvent?.({
|
|
@@ -542,7 +542,7 @@ var Harness = class {
|
|
|
542
542
|
throw new Error("Harness requires at least one agent mode");
|
|
543
543
|
}
|
|
544
544
|
this.currentModeId = defaultMode.id;
|
|
545
|
-
if (config.workspace instanceof
|
|
545
|
+
if (config.workspace instanceof chunkQVVWKMFM_cjs.Workspace) {
|
|
546
546
|
this.workspace = config.workspace;
|
|
547
547
|
} else if (typeof config.workspace === "function") {
|
|
548
548
|
this.workspaceFn = config.workspace;
|
|
@@ -561,13 +561,13 @@ var Harness = class {
|
|
|
561
561
|
*/
|
|
562
562
|
async init() {
|
|
563
563
|
if (this.config.storage) {
|
|
564
|
-
this.#internalMastra = new
|
|
564
|
+
this.#internalMastra = new chunkI2Z4GKQ6_cjs.Mastra({ logger: false, storage: this.config.storage });
|
|
565
565
|
await this.#internalMastra.getStorage().init();
|
|
566
566
|
}
|
|
567
567
|
if (this.config.workspace && !this.workspaceInitialized && !this.workspaceFn) {
|
|
568
568
|
try {
|
|
569
569
|
if (!this.workspace) {
|
|
570
|
-
this.workspace = new
|
|
570
|
+
this.workspace = new chunkQVVWKMFM_cjs.Workspace(this.config.workspace);
|
|
571
571
|
}
|
|
572
572
|
this.emit({ type: "workspace_status_changed", status: "initializing" });
|
|
573
573
|
await this.workspace.init();
|
|
@@ -813,7 +813,7 @@ var Harness = class {
|
|
|
813
813
|
}
|
|
814
814
|
}
|
|
815
815
|
try {
|
|
816
|
-
const { PROVIDER_REGISTRY } = await import('../provider-registry-
|
|
816
|
+
const { PROVIDER_REGISTRY } = await import('../provider-registry-MBXOBTD4.cjs');
|
|
817
817
|
const registry = PROVIDER_REGISTRY;
|
|
818
818
|
const providerConfig = registry[provider];
|
|
819
819
|
const envVars = providerConfig?.apiKeyEnvVar;
|
|
@@ -833,7 +833,7 @@ var Harness = class {
|
|
|
833
833
|
*/
|
|
834
834
|
async listAvailableModels() {
|
|
835
835
|
try {
|
|
836
|
-
const { PROVIDER_REGISTRY } = await import('../provider-registry-
|
|
836
|
+
const { PROVIDER_REGISTRY } = await import('../provider-registry-MBXOBTD4.cjs');
|
|
837
837
|
if (!PROVIDER_REGISTRY) return [];
|
|
838
838
|
const registry = PROVIDER_REGISTRY;
|
|
839
839
|
const providers = Object.keys(registry);
|
|
@@ -892,7 +892,7 @@ var Harness = class {
|
|
|
892
892
|
}
|
|
893
893
|
async getProviderApiKeyEnvVar(provider) {
|
|
894
894
|
try {
|
|
895
|
-
const { PROVIDER_REGISTRY } = await import('../provider-registry-
|
|
895
|
+
const { PROVIDER_REGISTRY } = await import('../provider-registry-MBXOBTD4.cjs');
|
|
896
896
|
const registry = PROVIDER_REGISTRY;
|
|
897
897
|
const envVars = registry[provider]?.apiKeyEnvVar;
|
|
898
898
|
return Array.isArray(envVars) ? envVars[0] : envVars;
|
|
@@ -1111,7 +1111,7 @@ var Harness = class {
|
|
|
1111
1111
|
if (!this.config.storage) return [];
|
|
1112
1112
|
const memoryStorage = await this.getMemoryStorage();
|
|
1113
1113
|
const filter = options?.allResources ? void 0 : { resourceId: this.resourceId };
|
|
1114
|
-
const result = await memoryStorage.listThreads({ filter });
|
|
1114
|
+
const result = await memoryStorage.listThreads({ filter, perPage: false });
|
|
1115
1115
|
return result.threads.map((thread) => ({
|
|
1116
1116
|
id: thread.id,
|
|
1117
1117
|
resourceId: thread.resourceId,
|
|
@@ -1682,6 +1682,19 @@ ${textContent}
|
|
|
1682
1682
|
});
|
|
1683
1683
|
break;
|
|
1684
1684
|
}
|
|
1685
|
+
case "data-system-reminder": {
|
|
1686
|
+
const data = part.data ?? {};
|
|
1687
|
+
const message = data.message;
|
|
1688
|
+
if (typeof message === "string") {
|
|
1689
|
+
content.push({
|
|
1690
|
+
type: "system_reminder",
|
|
1691
|
+
message,
|
|
1692
|
+
reminderType: typeof data.reminderType === "string" ? data.reminderType : void 0,
|
|
1693
|
+
path: typeof data.path === "string" ? data.path : void 0
|
|
1694
|
+
});
|
|
1695
|
+
}
|
|
1696
|
+
break;
|
|
1697
|
+
}
|
|
1685
1698
|
case "file":
|
|
1686
1699
|
if (typeof part.data !== "string") {
|
|
1687
1700
|
console.warn("[Harness] Skipping file part with non-string data:", typeof part.data);
|
|
@@ -2083,6 +2096,20 @@ ${textContent}
|
|
|
2083
2096
|
}
|
|
2084
2097
|
break;
|
|
2085
2098
|
}
|
|
2099
|
+
case "data-system-reminder": {
|
|
2100
|
+
const payload = chunk.data;
|
|
2101
|
+
const message = payload?.message;
|
|
2102
|
+
if (typeof message === "string") {
|
|
2103
|
+
currentMessage.content.push({
|
|
2104
|
+
type: "system_reminder",
|
|
2105
|
+
message,
|
|
2106
|
+
reminderType: typeof payload?.reminderType === "string" ? payload.reminderType : void 0,
|
|
2107
|
+
path: typeof payload?.path === "string" ? payload.path : void 0
|
|
2108
|
+
});
|
|
2109
|
+
this.emit({ type: "message_update", message: currentMessage });
|
|
2110
|
+
}
|
|
2111
|
+
break;
|
|
2112
|
+
}
|
|
2086
2113
|
case "data-om-activation": {
|
|
2087
2114
|
const payload = chunk.data;
|
|
2088
2115
|
if (payload && payload.cycleId) {
|
|
@@ -2778,6 +2805,11 @@ ${textContent}
|
|
|
2778
2805
|
fallbackModelId: currentMode?.defaultModelId
|
|
2779
2806
|
});
|
|
2780
2807
|
}
|
|
2808
|
+
if (this.config.disableBuiltinTools?.length) {
|
|
2809
|
+
for (const toolId of this.config.disableBuiltinTools) {
|
|
2810
|
+
delete builtInTools[toolId];
|
|
2811
|
+
}
|
|
2812
|
+
}
|
|
2781
2813
|
if (resolvedHarnessTools) {
|
|
2782
2814
|
return { harnessBuiltIn: builtInTools, harness: resolvedHarnessTools };
|
|
2783
2815
|
}
|