@botbotgo/agent-harness 0.0.44 → 0.0.46

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/README.md CHANGED
@@ -17,7 +17,7 @@ What it provides:
17
17
  - YAML-defined runtime assembly for hosts, models, routing, recovery, concurrency, MCP, and maintenance policy
18
18
  - backend-adapted execution with a generic runtime contract and current LangChain v1 / DeepAgents adapters
19
19
  - local `resources/tools/` and `resources/skills/` loading
20
- - persisted runs, threads, approvals, events, and resumable checkpoints
20
+ - persisted runs, threads, approvals, events, queued tasks, and resumable checkpoints
21
21
 
22
22
  ## Quick Start
23
23
 
@@ -35,6 +35,8 @@ your-workspace/
35
35
  agent-context.md
36
36
  workspace.yaml
37
37
  models.yaml
38
+ embedding-models.yaml
39
+ vector-stores.yaml
38
40
  stores.yaml
39
41
  tools.yaml
40
42
  mcp.yaml
@@ -77,7 +79,7 @@ try {
77
79
  - Persisted threads, runs, approvals, and lifecycle events
78
80
  - Recovery policy and resumable checkpoints
79
81
  - Background checkpoint maintenance
80
- - Runtime-level concurrency control
82
+ - Runtime-level concurrency control and queued-run persistence
81
83
 
82
84
  ## How To Use
83
85
 
@@ -150,6 +152,16 @@ const result = await run(runtime, {
150
152
 
151
153
  `subscribe(...)` is a read-only observer surface over stored lifecycle events.
152
154
 
155
+ The event stream includes:
156
+
157
+ - `run.created`
158
+ - `run.queued`
159
+ - `run.dequeued`
160
+ - `run.state.changed`
161
+ - `approval.requested`
162
+ - `approval.resolved`
163
+ - `output.delta`
164
+
153
165
  ### Inspect Threads And Approvals
154
166
 
155
167
  ```ts
@@ -207,6 +219,8 @@ Core workspace files:
207
219
  - `config/workspace.yaml`
208
220
  - `config/agent-context.md`
209
221
  - `config/models.yaml`
222
+ - `config/embedding-models.yaml`
223
+ - `config/vector-stores.yaml`
210
224
  - `config/stores.yaml`
211
225
  - `config/tools.yaml`
212
226
  - `config/mcp.yaml`
@@ -216,29 +230,281 @@ Core workspace files:
216
230
  - `resources/tools/`
217
231
  - `resources/skills/`
218
232
 
219
- ### `config/workspace.yaml`
233
+ Use Kubernetes-style YAML:
234
+
235
+ - collection files use `apiVersion`, plural `kind`, and `spec: []`
236
+ - single-object files use `apiVersion`, singular `kind`, `metadata`, and `spec`
237
+
238
+ Use distinct names for named objects such as models, stores, checkpointers, tools, and MCP servers.
239
+
240
+ ### Client-Configurable YAML Reference
241
+
242
+ This section is the client-facing explanation of what can be configured in YAML today and what each field changes at runtime.
220
243
 
221
- Use this file for runtime-level policy:
244
+ There are three layers of client configuration:
222
245
 
223
- - `runRoot`
224
- - `routing.rules`
225
- - `routing.defaultAgentId`
226
- - `routing.systemPrompt`
227
- - `routing.modelRouting`
228
- - `concurrency.maxConcurrentRuns`
229
- - `recovery.enabled`
230
- - `recovery.resumeOnStartup`
231
- - `recovery.maxRecoveryAttempts`
232
- - `maintenance.checkpoints.*`
246
+ - runtime-level policy in `config/workspace.yaml`
247
+ - reusable object catalogs in `config/*.yaml`
248
+ - agent assembly in `config/agents/*.yaml`
249
+
250
+ ### `config/workspace.yaml`
251
+
252
+ Use this file for runtime-level policy shared by the whole workspace.
253
+
254
+ Primary fields:
255
+
256
+ - `runRoot`: root directory where the runtime stores thread indexes, runs, approvals, artifacts, queued requests, and default local persistence
257
+ - `routing.defaultAgentId`: default host selected when no explicit routing rule matches
258
+ - `routing.rules`: ordered YAML routing rules evaluated before backend routing
259
+ - `routing.systemPrompt`: optional model-classifier prompt used only when model routing is enabled
260
+ - `routing.modelRouting`: opt in to model-driven host classification fallback
261
+ - `concurrency.maxConcurrentRuns`: maximum number of active runs; extra runs enter the persistent queue
262
+ - `recovery.enabled`: enables runtime-managed startup recovery
263
+ - `recovery.resumeOnStartup`: compatibility alias for resuming interrupted approval-driven runs on startup
264
+ - `recovery.resumeResumingRunsOnStartup`: explicit control for resuming interrupted approval-driven runs on startup
265
+ - `recovery.maxRecoveryAttempts`: upper bound for startup recovery retries
266
+ - `maintenance.checkpoints.enabled`: turns on background checkpoint cleanup
267
+ - `maintenance.checkpoints.schedule.intervalSeconds`: maintenance loop interval
268
+ - `maintenance.checkpoints.schedule.runOnStartup`: run checkpoint cleanup during startup
269
+ - `maintenance.checkpoints.policies.maxAgeSeconds`: age-based checkpoint cleanup
270
+ - `maintenance.checkpoints.policies.maxBytes`: size-based checkpoint cleanup
271
+ - `maintenance.checkpoints.sqlite.sweepBatchSize`: batch size for SQLite cleanup scans
272
+ - `maintenance.checkpoints.sqlite.vacuum`: vacuum SQLite after deletions
233
273
 
234
274
  If `runRoot` is omitted, the runtime defaults to `<workspace-root>/run-data`.
235
275
 
276
+ Example:
277
+
278
+ ```yaml
279
+ apiVersion: agent-harness/v1alpha1
280
+ kind: Runtime
281
+ metadata:
282
+ name: default
283
+ spec:
284
+ runRoot: ./.agent
285
+ concurrency:
286
+ maxConcurrentRuns: 3
287
+ routing:
288
+ defaultAgentId: orchestra
289
+ modelRouting: false
290
+ rules:
291
+ - agentId: orchestra
292
+ contains: ["latest", "recent", "today", "news"]
293
+ - agentId: orchestra
294
+ regex:
295
+ - "\\b(create|build|implement|fix|debug|review|inspect)\\b"
296
+ maintenance:
297
+ checkpoints:
298
+ enabled: true
299
+ schedule:
300
+ intervalSeconds: 3600
301
+ runOnStartup: true
302
+ policies:
303
+ maxAgeSeconds: 604800
304
+ sqlite:
305
+ sweepBatchSize: 200
306
+ vacuum: false
307
+ recovery:
308
+ enabled: true
309
+ resumeResumingRunsOnStartup: true
310
+ maxRecoveryAttempts: 3
311
+ ```
312
+
313
+ Notes:
314
+
315
+ - `routing.rules` only choose the starting host agent; they do not replace backend planning semantics
316
+ - queued runs are persisted under `runRoot` and continue after process restart
317
+ - `running` runs are only replayed on startup when the bound tools are retryable
318
+
236
319
  ### `config/agent-context.md`
237
320
 
238
321
  Use this file for shared startup context loaded into agents at construction time.
239
322
 
240
323
  Put stable project context here. Do not use it as mutable long-term memory.
241
324
 
325
+ Good uses:
326
+
327
+ - product positioning
328
+ - codebase conventions
329
+ - stable domain vocabulary
330
+ - organization-specific rules
331
+
332
+ Bad uses:
333
+
334
+ - transient scratch notes
335
+ - per-run execution state
336
+ - approval packets
337
+ - long-term memory that should live in the store
338
+
339
+ ### `config/models.yaml`
340
+
341
+ Use one file for multiple named models:
342
+
343
+ ```yaml
344
+ apiVersion: agent-harness/v1alpha1
345
+ kind: Models
346
+ spec:
347
+ - name: default
348
+ provider: openai
349
+ model: gpt-4.1
350
+ temperature: 0.2
351
+ - name: planner
352
+ provider: openai
353
+ model: gpt-4.1-mini
354
+ ```
355
+
356
+ These load as `model/default` and `model/planner`.
357
+
358
+ Client-configurable model fields:
359
+
360
+ - `name`: catalog name referenced by `model/<name>`
361
+ - `provider`: provider family such as `openai`, `openai-compatible`, `ollama`, `anthropic`, or `google`
362
+ - `model`: provider model id
363
+ - top-level provider init fields such as `temperature`, `baseUrl`, API-specific settings, and client options
364
+ - `clientRef`: optional external client reference
365
+ - `fallbacks`: optional fallback model refs
366
+ - `metadata`: optional model metadata
367
+
368
+ ### `config/embedding-models.yaml`
369
+
370
+ Use this file for named embedding model presets used by retrieval-oriented tools.
371
+
372
+ ```yaml
373
+ apiVersion: agent-harness/v1alpha1
374
+ kind: EmbeddingModels
375
+ spec:
376
+ - name: default
377
+ provider: ollama
378
+ model: nomic-embed-text
379
+ baseUrl: http://localhost:11434
380
+ ```
381
+
382
+ Client-configurable embedding fields:
383
+
384
+ - `name`
385
+ - `provider`
386
+ - `model`
387
+ - top-level provider init fields such as `baseUrl`
388
+ - `clientRef`
389
+ - `metadata`
390
+
391
+ These load as `embedding-model/default`.
392
+
393
+ ### `config/vector-stores.yaml`
394
+
395
+ Use this file for named vector store presets referenced by retrieval tools.
396
+
397
+ ```yaml
398
+ apiVersion: agent-harness/v1alpha1
399
+ kind: VectorStores
400
+ spec:
401
+ - name: default
402
+ storeKind: LibSQLVectorStore
403
+ url: file:.agent/vector-store.db
404
+ table: rag_chunks
405
+ column: embedding
406
+ embeddingModelRef: embedding-model/default
407
+ ```
408
+
409
+ Client-configurable vector store fields:
410
+
411
+ - `name`
412
+ - `storeKind`
413
+ - `url`
414
+ - `authToken`
415
+ - `table`
416
+ - `column`
417
+ - `embeddingModelRef`
418
+ - `metadata`
419
+
420
+ These load as `vector-store/default`.
421
+
422
+ ### `config/stores.yaml`
423
+
424
+ Use one file for named persistence presets:
425
+
426
+ ```yaml
427
+ apiVersion: agent-harness/v1alpha1
428
+ kind: Stores
429
+ spec:
430
+ - kind: Store
431
+ name: default
432
+ storeKind: FileStore
433
+ path: store.json
434
+ - kind: Checkpointer
435
+ name: default
436
+ checkpointerKind: MemorySaver
437
+ ```
438
+
439
+ These load as `store/default` and `checkpointer/default`.
440
+
441
+ Client-configurable store fields:
442
+
443
+ - `kind: Store` for backend stores
444
+ - `kind: Checkpointer` for resumable execution state
445
+ - `name` for refs
446
+ - `storeKind` such as `FileStore`, `InMemoryStore`, `RedisStore`, `PostgresStore`
447
+ - `checkpointerKind` such as `MemorySaver`, `FileCheckpointer`, `SqliteSaver`
448
+ - storage-specific fields such as `path`, connection strings, auth, and provider options
449
+
450
+ ### `config/tools.yaml`
451
+
452
+ Use this file for reusable tool presets and tool bundles.
453
+
454
+ Minimal collection form:
455
+
456
+ ```yaml
457
+ apiVersion: agent-harness/v1alpha1
458
+ kind: Tools
459
+ spec:
460
+ - kind: Tool
461
+ name: fetch_docs
462
+ type: function
463
+ description: Fetch a documentation page.
464
+ ```
465
+
466
+ Client-configurable tool fields:
467
+
468
+ - `name`
469
+ - `type`: `function`, `backend`, `mcp`, or `bundle`
470
+ - `description`
471
+ - `implementationName` for local JS tool modules
472
+ - `inputSchema.ref`
473
+ - `backend.operation`
474
+ - `mcp.ref` or `mcp.tool`
475
+ - `refs` for bundle composition
476
+ - `hitl.enabled` and `hitl.allow` for approval-gated tools
477
+ - `retryable: true` for tools that are safe to replay during startup recovery
478
+ - `config` for tool-specific options
479
+
480
+ Use `retryable` carefully. Mark a tool retryable only when repeated execution is safe or intentionally idempotent.
481
+
482
+ ### `config/mcp.yaml`
483
+
484
+ Use this file for reusable MCP server definitions and MCP-backed tool presets.
485
+
486
+ ```yaml
487
+ apiVersion: agent-harness/v1alpha1
488
+ kind: McpServers
489
+ spec:
490
+ - name: docs
491
+ transport: http
492
+ url: https://example.com/mcp
493
+ - name: local-browser
494
+ transport: stdio
495
+ command: node
496
+ args: ["./mcp-browser-server.mjs"]
497
+ ```
498
+
499
+ Client-configurable MCP fields:
500
+
501
+ - `name`
502
+ - `transport`: `stdio`, `http`, `sse`, or `websocket`
503
+ - `command`, `args`, `env`, `cwd` for stdio servers
504
+ - `url`, `token`, `headers` for network servers
505
+
506
+ These load as `mcp/<name>`.
507
+
242
508
  ### `config/agents/*.yaml`
243
509
 
244
510
  Prefer the generic agent form and declare the current execution backend explicitly:
@@ -257,20 +523,75 @@ spec:
257
523
 
258
524
  `kind: DeepAgent` and `kind: LangChainAgent` remain supported as compatibility forms, but `kind: Agent` is the recommended product-facing entry point.
259
525
 
260
- Common fields include:
261
-
262
- - `modelRef`
263
- - `execution.backend`
264
- - `systemPrompt`
265
- - `tools`
266
- - `skills`
267
- - `memory`
268
- - `checkpointer`
269
- - `store`
270
- - `backend`
271
- - `middleware`
272
- - `subagents`
273
- - `mcpServers`
526
+ Common client-configurable agent fields:
527
+
528
+ - `metadata.name`
529
+ - `metadata.description`
530
+ - `spec.execution.backend`
531
+ - `spec.modelRef`
532
+ - `spec.systemPrompt`
533
+ - `spec.tools`
534
+ - `spec.skills`
535
+ - `spec.memory`
536
+ - `spec.checkpointer`
537
+ - `spec.store`
538
+ - `spec.backend`
539
+ - `spec.middleware`
540
+ - `spec.subagents`
541
+ - `spec.mcpServers`
542
+ - `spec.responseFormat`
543
+ - `spec.contextSchema`
544
+
545
+ Typical patterns:
546
+
547
+ - use `direct` as a lightweight host for simple one-turn requests
548
+ - use `orchestra` as the main execution host for tools, multi-step work, and delegation
549
+ - keep routing policy in `config/workspace.yaml`, not buried in prompts
550
+
551
+ Example direct agent:
552
+
553
+ ```yaml
554
+ apiVersion: agent-harness/v1alpha1
555
+ kind: Agent
556
+ metadata:
557
+ name: direct
558
+ spec:
559
+ execution:
560
+ backend: langchain-v1
561
+ modelRef: model/default
562
+ checkpointer:
563
+ ref: checkpointer/default
564
+ systemPrompt: |-
565
+ You are the direct agent.
566
+ Answer simple requests directly.
567
+ ```
568
+
569
+ Example orchestra agent:
570
+
571
+ ```yaml
572
+ apiVersion: agent-harness/v1alpha1
573
+ kind: Agent
574
+ metadata:
575
+ name: orchestra
576
+ spec:
577
+ execution:
578
+ backend: deepagent
579
+ modelRef: model/default
580
+ memory:
581
+ - path: config/agent-context.md
582
+ store:
583
+ ref: store/default
584
+ checkpointer:
585
+ ref: checkpointer/default
586
+ backend:
587
+ kind: CompositeBackend
588
+ state:
589
+ kind: VfsSandbox
590
+ timeout: 600
591
+ routes:
592
+ /memories/:
593
+ kind: StoreBackend
594
+ ```
274
595
 
275
596
  ### `resources/`
276
597
 
@@ -283,6 +604,24 @@ Tool modules are discovered from `resources/tools/*.js`, `resources/tools/*.mjs`
283
604
 
284
605
  The preferred tool module format is exporting `tool({...})`.
285
606
 
607
+ Example:
608
+
609
+ ```js
610
+ import { z } from "zod";
611
+ import { tool } from "@botbotgo/agent-harness/tools";
612
+
613
+ export const local_lookup = tool({
614
+ description: "Lookup a ticker from a local tool module.",
615
+ retryable: true,
616
+ schema: {
617
+ ticker: z.string().min(1),
618
+ },
619
+ async invoke(input) {
620
+ return input.ticker.toUpperCase();
621
+ },
622
+ });
623
+ ```
624
+
286
625
  Keep runtime extension source under `resources/`. Keep tests outside the published source tree, for example under repository `test/`.
287
626
 
288
627
  ## Design Notes
@@ -291,11 +630,12 @@ Keep runtime extension source under `resources/`. Keep tests outside the publish
291
630
  - agent-level execution behavior stays upstream
292
631
  - application-level orchestration and lifecycle management stays in the harness
293
632
  - checkpoint resume is treated as a system-managed runtime behavior, not a primary public abstraction
633
+ - public runtime contract generic does not mean backend-agnostic implementation internals; it means client-facing semantics stay stable even when adapters change
294
634
 
295
635
  ## API Summary
296
636
 
297
637
  - `createAgentHarness(...)`
298
- - `run(...)`
638
+ - `run(runtime, {...})`
299
639
  - `subscribe(...)`
300
640
  - `listThreads(...)`
301
641
  - `getThread(...)`
@@ -0,0 +1,28 @@
1
+ # agent-harness feature: schema version for this declarative config object.
2
+ apiVersion: agent-harness/v1alpha1
3
+ # agent-harness feature: object type for named embedding-model presets.
4
+ kind: EmbeddingModels
5
+ spec:
6
+ # agent-harness feature: named embedding model entry used by refs such as `embedding-model/default`.
7
+ - name: default
8
+ # ====================
9
+ # LangChain v1 Features
10
+ # ====================
11
+ # LangChain aligned feature: provider family or integration namespace for an embeddings implementation.
12
+ provider: ollama
13
+ # LangChain aligned feature: concrete embedding model identifier passed to the provider integration.
14
+ model: nomic-embed-text
15
+ # LangChain aligned feature: provider-specific initialization options for embeddings.
16
+ baseUrl: https://ollama-rtx-4070.easynet.world/
17
+
18
+ # ===================
19
+ # DeepAgents Features
20
+ # ===================
21
+ # DeepAgents does not define a separate embeddings abstraction. Embedding models are consumed indirectly
22
+ # by retrieval tools that a DeepAgent may call.
23
+
24
+ # ======================
25
+ # agent-harness Features
26
+ # ======================
27
+ # This object is packaged and referenced through retrieval-oriented workspace tools such as the RAG index builder
28
+ # and query tool, not through `agent.modelRef`.
@@ -1,20 +1,5 @@
1
1
  # agent-harness feature: schema version for reusable MCP server objects.
2
2
  apiVersion: agent-harness/v1alpha1
3
- # This first-layer catalog is the default place to register reusable McpServer objects and MCP-backed Tool objects.
4
- # Examples:
5
- # items:
6
- # - kind: McpServer
7
- # metadata:
8
- # name: browser
9
- # spec:
10
- # command: node
11
- # args: ["./mcp-browser-server.mjs"]
12
- #
13
- # - kind: Tool
14
- # metadata:
15
- # name: browser_navigate
16
- # spec:
17
- # mcp:
18
- # serverRef: mcp/browser
19
- # tool: navigate
20
- items: []
3
+ # agent-harness feature: object type for named reusable MCP server and MCP-backed tool presets.
4
+ kind: McpServers
5
+ spec: []
@@ -4,26 +4,26 @@ apiVersion: agent-harness/v1alpha1
4
4
  kind: Models
5
5
  spec:
6
6
  - name: default
7
- # ====================
8
- # LangChain v1 Features
9
- # ====================
10
- # LangChain aligned feature: provider family or integration namespace.
11
- # Common options in this harness today include:
12
- # - `ollama`
13
- # - `openai`
14
- # - `openai-compatible`
15
- # - `anthropic`
16
- # - `google` / `google-genai` / `gemini`
17
- # The runtime adapter uses this to select the concrete LangChain chat model implementation.
7
+ # ====================
8
+ # LangChain v1 Features
9
+ # ====================
10
+ # LangChain aligned feature: provider family or integration namespace.
11
+ # Common options in this harness today include:
12
+ # - `ollama`
13
+ # - `openai`
14
+ # - `openai-compatible`
15
+ # - `anthropic`
16
+ # - `google` / `google-genai` / `gemini`
17
+ # The runtime adapter uses this to select the concrete LangChain chat model implementation.
18
18
  provider: ollama
19
- # LangChain aligned feature: concrete model identifier passed to the selected provider integration.
20
- # Example values depend on `provider`, such as `gpt-oss:latest` for `ollama`.
19
+ # LangChain aligned feature: concrete model identifier passed to the selected provider integration.
20
+ # Example values depend on `provider`, such as `gpt-oss:latest` for `ollama`.
21
21
  model: gpt-oss:latest
22
- # LangChain aligned feature: provider-specific initialization options.
23
- # Write these fields directly on the model object.
24
- # Common examples include `baseUrl`, `temperature`, and auth/client settings.
25
- # `baseUrl` configures the Ollama-compatible endpoint used by the model client.
26
- # For `openai-compatible`, `baseUrl` is normalized into the ChatOpenAI `configuration.baseURL` field.
22
+ # LangChain aligned feature: provider-specific initialization options.
23
+ # Write these fields directly on the model object.
24
+ # Common examples include `baseUrl`, `temperature`, and auth/client settings.
25
+ # `baseUrl` configures the Ollama-compatible endpoint used by the model client.
26
+ # For `openai-compatible`, `baseUrl` is normalized into the ChatOpenAI `configuration.baseURL` field.
27
27
  baseUrl: https://ollama-rtx-4070.easynet.world/
28
- # LangChain aligned feature: provider/model initialization option controlling sampling temperature.
28
+ # LangChain aligned feature: provider/model initialization option controlling sampling temperature.
29
29
  temperature: 0.2
@@ -1,19 +1,17 @@
1
1
  # agent-harness feature: schema version for reusable persistence presets.
2
2
  apiVersion: agent-harness/v1alpha1
3
- items:
3
+ # agent-harness feature: object type for named persistence presets.
4
+ kind: Stores
5
+ spec:
4
6
  # agent-harness feature: reusable store preset for agent backends that need a durable key-value store.
5
7
  - kind: Store
6
- metadata:
7
- name: default
8
- description: Default file-backed store preset for runtime-managed agent state.
9
- spec:
10
- storeKind: FileStore
11
- path: store.json
8
+ name: default
9
+ description: Default file-backed store preset for runtime-managed agent state.
10
+ storeKind: FileStore
11
+ path: store.json
12
12
 
13
13
  # agent-harness feature: reusable checkpointer preset for resumable execution state.
14
14
  - kind: Checkpointer
15
- metadata:
16
- name: default
17
- description: Default in-memory checkpointer preset for lightweight local development.
18
- spec:
19
- checkpointerKind: MemorySaver
15
+ name: default
16
+ description: Default in-memory checkpointer preset for lightweight local development.
17
+ checkpointerKind: MemorySaver
@@ -1,13 +1,5 @@
1
1
  # agent-harness feature: schema version for reusable tool objects.
2
2
  apiVersion: agent-harness/v1alpha1
3
- # This first-layer catalog is the default place to register reusable Tool objects that agents can reference.
4
- # Examples:
5
- # items:
6
- # - kind: Tool
7
- # metadata:
8
- # name: repo_search
9
- # description: Workspace-local repo search tool.
10
- # spec:
11
- # backend:
12
- # operation: repo_search
13
- items: []
3
+ # agent-harness feature: object type for named reusable tool presets.
4
+ kind: Tools
5
+ spec: []
@@ -0,0 +1,25 @@
1
+ # agent-harness feature: schema version for this declarative config object.
2
+ apiVersion: agent-harness/v1alpha1
3
+ # agent-harness feature: object type for named vector-store presets.
4
+ kind: VectorStores
5
+ spec:
6
+ # agent-harness feature: named vector store entry used by refs such as `vector-store/default`.
7
+ - name: default
8
+ # ====================
9
+ # LangChain v1 Features
10
+ # ====================
11
+ # LangChain aligned feature: concrete vector store implementation.
12
+ # The built-in runtime currently supports `LibSQLVectorStore` for SQLite/libSQL-backed vector retrieval.
13
+ storeKind: LibSQLVectorStore
14
+ # LangChain aligned feature: libSQL connection URL.
15
+ # Local SQLite files use the `file:` prefix.
16
+ url: file:.agent/vector-store.db
17
+ # LangChain aligned feature: target table and embedding column.
18
+ table: rag_chunks
19
+ column: embedding
20
+
21
+ # ======================
22
+ # agent-harness Features
23
+ # ======================
24
+ # Retrieval tools use this to resolve their default embeddings when indexing or querying this vector store.
25
+ embeddingModelRef: embedding-model/default