@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 +369 -29
- package/dist/config/embedding-models.yaml +28 -0
- package/dist/config/mcp.yaml +3 -18
- package/dist/config/models.yaml +19 -19
- package/dist/config/stores.yaml +10 -12
- package/dist/config/tools.yaml +3 -11
- package/dist/config/vector-stores.yaml +25 -0
- package/dist/config/workspace.yaml +20 -18
- package/dist/contracts/types.d.ts +4 -2
- package/dist/extensions.js +3 -0
- package/dist/package-version.d.ts +1 -1
- package/dist/package-version.js +1 -1
- package/dist/persistence/file-store.d.ts +9 -1
- package/dist/persistence/file-store.js +16 -0
- package/dist/resource/resource-impl.d.ts +1 -0
- package/dist/runtime/harness.d.ts +3 -0
- package/dist/runtime/harness.js +262 -112
- package/dist/runtime/thread-memory-sync.js +2 -0
- package/dist/tool-modules.d.ts +1 -0
- package/dist/tool-modules.js +11 -0
- package/dist/tools.d.ts +2 -0
- package/dist/workspace/object-loader.js +23 -12
- package/dist/workspace/resource-compilers.js +1 -0
- package/dist/workspace/support/workspace-ref-utils.d.ts +1 -1
- package/dist/workspace/support/workspace-ref-utils.js +1 -1
- package/dist/workspace/tool-hydration.js +1 -0
- package/package.json +1 -1
- package/dist/config/embedding-model.yaml +0 -29
- package/dist/config/vector-store.yaml +0 -26
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
|
-
|
|
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
|
-
|
|
244
|
+
There are three layers of client configuration:
|
|
222
245
|
|
|
223
|
-
- `
|
|
224
|
-
- `
|
|
225
|
-
- `
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
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
|
|
261
|
-
|
|
262
|
-
- `
|
|
263
|
-
- `
|
|
264
|
-
- `
|
|
265
|
-
- `
|
|
266
|
-
- `
|
|
267
|
-
- `
|
|
268
|
-
- `
|
|
269
|
-
- `
|
|
270
|
-
- `
|
|
271
|
-
- `
|
|
272
|
-
- `
|
|
273
|
-
- `
|
|
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`.
|
package/dist/config/mcp.yaml
CHANGED
|
@@ -1,20 +1,5 @@
|
|
|
1
1
|
# agent-harness feature: schema version for reusable MCP server objects.
|
|
2
2
|
apiVersion: agent-harness/v1alpha1
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
|
|
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: []
|
package/dist/config/models.yaml
CHANGED
|
@@ -4,26 +4,26 @@ apiVersion: agent-harness/v1alpha1
|
|
|
4
4
|
kind: Models
|
|
5
5
|
spec:
|
|
6
6
|
- name: default
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
20
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
28
|
+
# LangChain aligned feature: provider/model initialization option controlling sampling temperature.
|
|
29
29
|
temperature: 0.2
|
package/dist/config/stores.yaml
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
# agent-harness feature: schema version for reusable persistence presets.
|
|
2
2
|
apiVersion: agent-harness/v1alpha1
|
|
3
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
spec:
|
|
19
|
-
checkpointerKind: MemorySaver
|
|
15
|
+
name: default
|
|
16
|
+
description: Default in-memory checkpointer preset for lightweight local development.
|
|
17
|
+
checkpointerKind: MemorySaver
|
package/dist/config/tools.yaml
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
# agent-harness feature: schema version for reusable tool objects.
|
|
2
2
|
apiVersion: agent-harness/v1alpha1
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
|
|
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
|