@botbotgo/agent-harness 0.0.1

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.
Files changed (87) hide show
  1. package/dist/api.d.ts +22 -0
  2. package/dist/api.js +48 -0
  3. package/dist/config/direct.yaml +48 -0
  4. package/dist/config/embedding-model.yaml +30 -0
  5. package/dist/config/model.yaml +44 -0
  6. package/dist/config/orchestra.yaml +92 -0
  7. package/dist/config/runtime.yaml +47 -0
  8. package/dist/config/vector-store.yaml +26 -0
  9. package/dist/contracts/types.d.ts +359 -0
  10. package/dist/contracts/types.js +1 -0
  11. package/dist/extensions.d.ts +16 -0
  12. package/dist/extensions.js +251 -0
  13. package/dist/index.d.ts +7 -0
  14. package/dist/index.js +7 -0
  15. package/dist/persistence/file-store.d.ts +39 -0
  16. package/dist/persistence/file-store.js +282 -0
  17. package/dist/presentation.d.ts +4 -0
  18. package/dist/presentation.js +175 -0
  19. package/dist/runtime/agent-runtime-adapter.d.ts +33 -0
  20. package/dist/runtime/agent-runtime-adapter.js +445 -0
  21. package/dist/runtime/event-bus.d.ts +6 -0
  22. package/dist/runtime/event-bus.js +15 -0
  23. package/dist/runtime/file-checkpoint-saver.d.ts +20 -0
  24. package/dist/runtime/file-checkpoint-saver.js +91 -0
  25. package/dist/runtime/harness.d.ts +57 -0
  26. package/dist/runtime/harness.js +696 -0
  27. package/dist/runtime/index.d.ts +10 -0
  28. package/dist/runtime/index.js +10 -0
  29. package/dist/runtime/inventory.d.ts +25 -0
  30. package/dist/runtime/inventory.js +62 -0
  31. package/dist/runtime/parsing/index.d.ts +2 -0
  32. package/dist/runtime/parsing/index.js +2 -0
  33. package/dist/runtime/parsing/output-parsing.d.ts +12 -0
  34. package/dist/runtime/parsing/output-parsing.js +424 -0
  35. package/dist/runtime/parsing/stream-event-parsing.d.ts +27 -0
  36. package/dist/runtime/parsing/stream-event-parsing.js +161 -0
  37. package/dist/runtime/policy-engine.d.ts +9 -0
  38. package/dist/runtime/policy-engine.js +23 -0
  39. package/dist/runtime/store.d.ts +50 -0
  40. package/dist/runtime/store.js +118 -0
  41. package/dist/runtime/support/embedding-models.d.ts +4 -0
  42. package/dist/runtime/support/embedding-models.js +33 -0
  43. package/dist/runtime/support/harness-support.d.ts +27 -0
  44. package/dist/runtime/support/harness-support.js +116 -0
  45. package/dist/runtime/support/index.d.ts +4 -0
  46. package/dist/runtime/support/index.js +4 -0
  47. package/dist/runtime/support/llamaindex.d.ts +24 -0
  48. package/dist/runtime/support/llamaindex.js +108 -0
  49. package/dist/runtime/support/runtime-factories.d.ts +3 -0
  50. package/dist/runtime/support/runtime-factories.js +39 -0
  51. package/dist/runtime/support/skill-metadata.d.ts +1 -0
  52. package/dist/runtime/support/skill-metadata.js +34 -0
  53. package/dist/runtime/support/vector-stores.d.ts +7 -0
  54. package/dist/runtime/support/vector-stores.js +130 -0
  55. package/dist/runtime/thread-memory-sync.d.ts +14 -0
  56. package/dist/runtime/thread-memory-sync.js +88 -0
  57. package/dist/runtime/tool-hitl.d.ts +5 -0
  58. package/dist/runtime/tool-hitl.js +108 -0
  59. package/dist/utils/fs.d.ts +6 -0
  60. package/dist/utils/fs.js +39 -0
  61. package/dist/utils/id.d.ts +1 -0
  62. package/dist/utils/id.js +8 -0
  63. package/dist/vendor/builtins.d.ts +23 -0
  64. package/dist/vendor/builtins.js +103 -0
  65. package/dist/vendor/sources.d.ts +12 -0
  66. package/dist/vendor/sources.js +115 -0
  67. package/dist/workspace/agent-binding-compiler.d.ts +4 -0
  68. package/dist/workspace/agent-binding-compiler.js +181 -0
  69. package/dist/workspace/compile.d.ts +2 -0
  70. package/dist/workspace/compile.js +107 -0
  71. package/dist/workspace/index.d.ts +6 -0
  72. package/dist/workspace/index.js +6 -0
  73. package/dist/workspace/object-loader.d.ts +16 -0
  74. package/dist/workspace/object-loader.js +405 -0
  75. package/dist/workspace/resource-compilers.d.ts +13 -0
  76. package/dist/workspace/resource-compilers.js +182 -0
  77. package/dist/workspace/support/discovery.d.ts +5 -0
  78. package/dist/workspace/support/discovery.js +108 -0
  79. package/dist/workspace/support/index.d.ts +2 -0
  80. package/dist/workspace/support/index.js +2 -0
  81. package/dist/workspace/support/source-collectors.d.ts +3 -0
  82. package/dist/workspace/support/source-collectors.js +30 -0
  83. package/dist/workspace/support/workspace-ref-utils.d.ts +8 -0
  84. package/dist/workspace/support/workspace-ref-utils.js +50 -0
  85. package/dist/workspace/validate.d.ts +3 -0
  86. package/dist/workspace/validate.js +65 -0
  87. package/package.json +32 -0
package/dist/api.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ import type { ArtifactListing, RestartConversationOptions, ResumeOptions, RunOptions, RuntimeAdapterOptions, SessionRecord, WorkspaceLoadOptions, WorkspaceBundle } from "./contracts/types.js";
2
+ import { AgentHarness } from "./runtime/harness.js";
3
+ export declare function loadWorkspaceBundle(workspaceRoot: string, options?: WorkspaceLoadOptions): Promise<WorkspaceBundle>;
4
+ export declare function createHarness(workspace: WorkspaceBundle, adapterOptions?: RuntimeAdapterOptions): AgentHarness;
5
+ export declare function listHarnessSessions(harness: AgentHarness, filter?: {
6
+ agentId?: string;
7
+ }): Promise<SessionRecord[]>;
8
+ export declare function getHarnessApproval(harness: AgentHarness, approvalId: string): Promise<import("./contracts/types.js").ApprovalRecord | null>;
9
+ export declare function runHarness(harness: AgentHarness, options: RunOptions): Promise<import("./contracts/types.js").RunResult>;
10
+ export declare function streamHarness(harness: AgentHarness, options: RunOptions): Promise<AsyncGenerator<string, any, any>>;
11
+ export declare function streamHarnessEvents(harness: AgentHarness, options: RunOptions): Promise<AsyncGenerator<import("./contracts/types.js").HarnessStreamItem, any, any>>;
12
+ export declare function resumeHarness(harness: AgentHarness, options: ResumeOptions): Promise<import("./contracts/types.js").RunResult>;
13
+ export declare function submitHarnessDecision(harness: AgentHarness, options: ResumeOptions): Promise<import("./contracts/types.js").RunResult>;
14
+ export declare function approveHarnessRun(harness: AgentHarness, threadId: string, runId?: string): Promise<import("./contracts/types.js").RunResult>;
15
+ export declare function rejectHarnessRun(harness: AgentHarness, threadId: string, runId?: string): Promise<import("./contracts/types.js").RunResult>;
16
+ export declare function restartHarnessConversation(harness: AgentHarness, options: RestartConversationOptions): Promise<import("./contracts/types.js").RunResult & {
17
+ restart: Record<string, string>;
18
+ }>;
19
+ export declare function listHarnessArtifacts(harness: AgentHarness, threadId: string, runId?: string): Promise<ArtifactListing>;
20
+ export declare function subscribeHarness(harness: AgentHarness, listener: Parameters<AgentHarness["subscribe"]>[0]): () => void;
21
+ export declare function closeHarness(harness: AgentHarness): Promise<void>;
22
+ export { loadWorkspaceBundle as loadWorkspaceFacade, listHarnessSessions as listSessionsFacade, getHarnessApproval as getApprovalFacade, runHarness as runFacade, streamHarness as streamFacade, streamHarnessEvents as streamEventsFacade, resumeHarness as resumeFacade, submitHarnessDecision as submitDecisionFacade, approveHarnessRun as approveFacade, rejectHarnessRun as rejectFacade, restartHarnessConversation as restartConversationFacade, listHarnessArtifacts as artifactsFacade, subscribeHarness as subscribeFacade, closeHarness as closeFacade, };
package/dist/api.js ADDED
@@ -0,0 +1,48 @@
1
+ import { AgentHarness } from "./runtime/harness.js";
2
+ import { loadWorkspace } from "./workspace/compile.js";
3
+ export async function loadWorkspaceBundle(workspaceRoot, options = {}) {
4
+ return loadWorkspace(workspaceRoot, options);
5
+ }
6
+ export function createHarness(workspace, adapterOptions = {}) {
7
+ return new AgentHarness(workspace, adapterOptions);
8
+ }
9
+ export async function listHarnessSessions(harness, filter) {
10
+ return harness.listSessions(filter);
11
+ }
12
+ export async function getHarnessApproval(harness, approvalId) {
13
+ return harness.getApproval(approvalId);
14
+ }
15
+ export async function runHarness(harness, options) {
16
+ return harness.run(options);
17
+ }
18
+ export async function streamHarness(harness, options) {
19
+ return harness.stream(options);
20
+ }
21
+ export async function streamHarnessEvents(harness, options) {
22
+ return harness.streamEvents(options);
23
+ }
24
+ export async function resumeHarness(harness, options) {
25
+ return harness.resume(options);
26
+ }
27
+ export async function submitHarnessDecision(harness, options) {
28
+ return harness.submitDecision(options);
29
+ }
30
+ export async function approveHarnessRun(harness, threadId, runId) {
31
+ return harness.approve(threadId, runId);
32
+ }
33
+ export async function rejectHarnessRun(harness, threadId, runId) {
34
+ return harness.reject(threadId, runId);
35
+ }
36
+ export async function restartHarnessConversation(harness, options) {
37
+ return harness.restartConversation(options);
38
+ }
39
+ export async function listHarnessArtifacts(harness, threadId, runId) {
40
+ return harness.artifacts(threadId, runId);
41
+ }
42
+ export function subscribeHarness(harness, listener) {
43
+ return harness.subscribe(listener);
44
+ }
45
+ export async function closeHarness(harness) {
46
+ return harness.close();
47
+ }
48
+ export { loadWorkspaceBundle as loadWorkspaceFacade, listHarnessSessions as listSessionsFacade, getHarnessApproval as getApprovalFacade, runHarness as runFacade, streamHarness as streamFacade, streamHarnessEvents as streamEventsFacade, resumeHarness as resumeFacade, submitHarnessDecision as submitDecisionFacade, approveHarnessRun as approveFacade, rejectHarnessRun as rejectFacade, restartHarnessConversation as restartConversationFacade, listHarnessArtifacts as artifactsFacade, subscribeHarness as subscribeFacade, closeHarness as closeFacade, };
@@ -0,0 +1,48 @@
1
+ # agent-harness feature: schema version for this declarative config object.
2
+ apiVersion: agent-harness/v1alpha1
3
+ # agent-harness feature: object type discriminator.
4
+ # Available options today: `DeepAgent`, `LangChainAgent`.
5
+ # `LangChainAgent` means this file compiles to the lightweight LangChain v1 execution path
6
+ # rather than the upstream `createDeepAgent(...)` runtime.
7
+ kind: LangChainAgent
8
+ metadata:
9
+ # agent-harness feature: stable object id used for refs and host-agent selection.
10
+ name: direct
11
+ # agent-harness feature: human-readable summary for inventory and UI.
12
+ description: Manual low-latency host for direct answers and lightweight inventory lookup. Do not use it as the default executor for tool-heavy or specialist-shaped tasks.
13
+ spec:
14
+ # ======================
15
+ # LangChainAgent Features
16
+ # ======================
17
+ # Shared LangChain v1 / DeepAgents feature: model ref for the underlying LLM used by the
18
+ # direct-response agent. This should point at a cheap, fast, general-purpose chat model,
19
+ # because `direct` is intended to be the low-latency path for simple requests.
20
+ modelRef: model/default
21
+ # Shared LangChain v1 / DeepAgents feature: checkpointer config passed into the runtime.
22
+ # Even the lightweight direct path can benefit from resumable state during interactive use.
23
+ # Available `kind` options in this harness: `FileCheckpointer`, `MemorySaver`, `SqliteSaver`.
24
+ # `path` is only used by `FileCheckpointer` and `SqliteSaver`; omit it for `MemorySaver`.
25
+ checkpointer:
26
+ kind: MemorySaver
27
+ # LangChainAgent aligned feature: system prompt for the lightweight direct-response host.
28
+ # This prompt should keep the agent focused on:
29
+ # - answering simple requests in one turn
30
+ # - staying lightweight instead of planning or orchestrating
31
+ # - avoiding specialist-style decomposition unless the caller explicitly switches agents
32
+ #
33
+ # The direct host is intentionally narrower than the orchestra host:
34
+ # - `direct` is optimized for latency and straightforward completion
35
+ # - `orchestra` is optimized for multi-step work, tools, delegation, and specialist use
36
+ #
37
+ # Keep this prompt biased toward concise, self-contained answers. If richer routing policy is
38
+ # needed for choosing between host agents, configure that separately via `Runtime.spec.routing`
39
+ # rather than overloading the direct host prompt with classifier behavior.
40
+ systemPrompt: |-
41
+ You are the direct agent.
42
+
43
+ This is a manual low-latency host.
44
+ Answer simple requests directly.
45
+ Keep the path lightweight.
46
+ Do not delegate.
47
+ Do not perform broad multi-step execution.
48
+ Do not behave like the default execution host.
@@ -0,0 +1,30 @@
1
+ # agent-harness feature: schema version for this declarative config object.
2
+ apiVersion: agent-harness/v1alpha1
3
+ # agent-harness feature: object type for a named embedding-model preset.
4
+ kind: EmbeddingModel
5
+ metadata:
6
+ # agent-harness feature: stable embedding model object id used by refs such as `embedding-model/default`.
7
+ name: default
8
+ spec:
9
+ # ====================
10
+ # LangChain v1 Features
11
+ # ====================
12
+ # LangChain aligned feature: provider family or integration namespace for an embeddings implementation.
13
+ provider: ollama
14
+ # LangChain aligned feature: concrete embedding model identifier passed to the provider integration.
15
+ model: nomic-embed-text
16
+ init:
17
+ # LangChain aligned feature: provider-specific initialization options for embeddings.
18
+ baseUrl: https://ollama-rtx-4070.easynet.world/
19
+
20
+ # ===================
21
+ # DeepAgents Features
22
+ # ===================
23
+ # DeepAgents does not define a separate embeddings abstraction. Embedding models are consumed indirectly
24
+ # by retrieval tools that a DeepAgent may call.
25
+
26
+ # ======================
27
+ # agent-harness Features
28
+ # ======================
29
+ # This object is packaged and referenced through retrieval-oriented builtin tools such as `builtin.build_rag_index`
30
+ # and `builtin.query_rag_index`, not through `agent.modelRef`.
@@ -0,0 +1,44 @@
1
+ # agent-harness feature: schema version for this declarative config object.
2
+ apiVersion: agent-harness/v1alpha1
3
+ # agent-harness feature: object type for a named model preset.
4
+ # Available options today: `Model`.
5
+ # The harness resolves this object into LangChain model construction parameters.
6
+ kind: Model
7
+ metadata:
8
+ # agent-harness feature: stable model object id used by refs such as `model/default`.
9
+ name: default
10
+ spec:
11
+ # ====================
12
+ # LangChain v1 Features
13
+ # ====================
14
+ # LangChain aligned feature: provider family or integration namespace.
15
+ # Common options in this harness today include:
16
+ # - `ollama`
17
+ # - `openai`
18
+ # - `openai-compatible`
19
+ # - `anthropic`
20
+ # - `google` / `google-genai` / `gemini`
21
+ # The runtime adapter uses this to select the concrete LangChain chat model implementation.
22
+ provider: ollama
23
+ # LangChain aligned feature: concrete model identifier passed to the selected provider integration.
24
+ # Example values depend on `provider`, such as `gpt-oss:latest` for `ollama`.
25
+ model: gpt-oss:latest
26
+ init:
27
+ # LangChain aligned feature: provider-specific initialization options.
28
+ # Available keys are provider-specific; common examples include `baseUrl`, `temperature`, and auth/client settings.
29
+ # `baseUrl` configures the Ollama-compatible endpoint used by the model client.
30
+ # For `openai-compatible`, `baseUrl` is normalized into the ChatOpenAI `configuration.baseURL` field.
31
+ baseUrl: https://ollama-rtx-4070.easynet.world/
32
+ # LangChain aligned feature: provider/model initialization option controlling sampling temperature.
33
+ temperature: 0.2
34
+ # ===================
35
+ # DeepAgents Features
36
+ # ===================
37
+ # DeepAgents uses the same model object shape indirectly through `createDeepAgent({ model })`.
38
+ # There is no separate DeepAgents-only field here; DeepAgent bindings consume the same compiled model.
39
+
40
+ # ======================
41
+ # agent-harness Features
42
+ # ======================
43
+ # This object is packaged and referenced through `modelRef` fields in harness config, but the actual
44
+ # model arguments above map directly onto the upstream LangChain model layer.
@@ -0,0 +1,92 @@
1
+ # agent-harness feature: schema version for this declarative config object.
2
+ apiVersion: agent-harness/v1alpha1
3
+ # agent-harness feature: object type discriminator.
4
+ # Available options today: `DeepAgent`, `LangChainAgent`.
5
+ # `DeepAgent` means this file compiles to `createDeepAgent(...)` rather than the LangChain v1 agent path.
6
+ kind: DeepAgent
7
+ metadata:
8
+ # agent-harness feature: stable object id used for refs and default DeepAgents name inference.
9
+ name: orchestra
10
+ # agent-harness feature: human-readable summary for inventory and UI.
11
+ description: Default execution host. Answer directly when possible, use local tools and skills first, and delegate only when a specialist is a better fit. Not a reflex delegation-only planner.
12
+ spec:
13
+ # ===================
14
+ # DeepAgents Features
15
+ # ===================
16
+ # DeepAgents aligned feature: model ref for the underlying LLM used by `createDeepAgent(...)`.
17
+ modelRef: model/default
18
+ # Shared LangChain v1 / DeepAgents feature: checkpointer config passed into the upstream runtime.
19
+ # This persists resumable graph state for this agent.
20
+ # Available `kind` options in this harness: `FileCheckpointer`, `MemorySaver`, `SqliteSaver`.
21
+ # `path` is only used by `FileCheckpointer` and `SqliteSaver`; omit it for `MemorySaver`.
22
+ checkpointer:
23
+ # kind: FileCheckpointer
24
+ kind: MemorySaver
25
+ memory:
26
+ # DeepAgents aligned feature: bootstrap memory sources supplied to the deep agent at construction time.
27
+ # These source paths resolve to static files that prime the agent before tool execution begins.
28
+ # This is distinct from long-term memory:
29
+ # - `memory:` here provides startup context files to `createDeepAgent(...)`
30
+ # - `store` below provides the LangGraph store consumed by `StoreBackend`
31
+ # - `backend` below controls `/memories/*` routing and other filesystem backend behavior
32
+ # - the harness checkpointer persists resumable graph state separately under the run root
33
+ - path: AGENTS.md
34
+ # DeepAgents aligned feature: store config passed into `createDeepAgent({ store })`.
35
+ # This is the LangGraph store used by `StoreBackend` routes inside the DeepAgents backend.
36
+ # Available `kind` options in this harness: `FileStore`, `InMemoryStore`, `RedisStore`, `PostgresStore`.
37
+ store:
38
+ kind: FileStore
39
+ path: store.json
40
+ # DeepAgents aligned feature: backend config passed into `createDeepAgent({ backend })`.
41
+ # This directly defines the backend topology for this agent:
42
+ # - runtime graph state uses `StateBackend`
43
+ # - long-term memory under `/memories/*` uses `StoreBackend`
44
+ # - `CompositeBackend` composes those backend instances together
45
+ # The harness also injects a persistent file-backed store and a file-backed checkpointer so that
46
+ # `/memories/*` and resumable run state survive restarts in the default setup.
47
+ # Available top-level `kind` options in this harness: `CompositeBackend`, `StateBackend`, `StoreBackend`.
48
+ backend:
49
+ kind: CompositeBackend
50
+ state:
51
+ # Available state backend `kind` options today: `StateBackend`, `LocalShellBackend`.
52
+ kind: LocalShellBackend
53
+ inheritEnv: true
54
+ timeout: 600
55
+ maxOutputBytes: 200000
56
+ routes:
57
+ /memories/:
58
+ # Available route backend `kind` options today: `StoreBackend`.
59
+ kind: StoreBackend
60
+ # DeepAgents aligned feature: system prompt for the orchestration deep agent.
61
+ # This becomes the top-level instruction block for the upstream DeepAgents runtime.
62
+ systemPrompt: |-
63
+ You are the orchestra agent.
64
+
65
+ You are the default execution host.
66
+ Try to finish the request yourself before delegating.
67
+ Use your own tools first when they are sufficient.
68
+ Use your own skills first when they are sufficient.
69
+ Delegate only when a specialist is a clearly better fit or when your own tools and skills are not enough.
70
+ If neither you nor any suitable specialist can do the work, say so plainly.
71
+
72
+ Do not delegate by reflex.
73
+ Do not delegate just because a task has multiple steps.
74
+ Do not delegate when a direct answer or a short local tool pass is enough.
75
+ Keep the critical path local when immediate progress depends on it; otherwise delegate bounded sidecar work to
76
+ the most appropriate specialist.
77
+
78
+ Use your own tools for lightweight discovery, inventory, and context gathering.
79
+ Prefer the structured checkout, indexing, retrieval, and inventory tools that are already attached to you over
80
+ ad hoc shell work when those tools are sufficient.
81
+ Use the attached specialist descriptions as the source of truth for what each specialist is for.
82
+ Do not delegate to a specialist whose description does not clearly match the task.
83
+ Integrate specialist results into one coherent answer and do not claim checks or evidence you did not obtain.
84
+
85
+ When the user asks about available tools, skills, or agents, use the attached inventory tools instead of
86
+ inferring from memory.
87
+
88
+ Write to `/memories/*` only when the information is durable, reusable across future runs or threads, and likely
89
+ to matter again: user preferences, project conventions, confirmed decisions, reusable summaries, and stable
90
+ ownership facts are good candidates.
91
+ Do not store transient reasoning, temporary plans, scratch work, one-off search results, or intermediate
92
+ outputs that can be cheaply recomputed.
@@ -0,0 +1,47 @@
1
+ # agent-harness feature: schema version for this declarative config object.
2
+ apiVersion: agent-harness/v1alpha1
3
+ # agent-harness feature: workspace-global runtime defaults.
4
+ # This object is harness-owned and acts like a global variables document for the workspace.
5
+ # It is loaded automatically and does not use `ref` indirection from agents.
6
+ # Available options today: `Runtime`.
7
+ kind: Runtime
8
+ metadata:
9
+ # agent-harness feature: stable singleton name for the default runtime variables object.
10
+ name: default
11
+ spec:
12
+ # ======================
13
+ # agent-harness Features
14
+ # ======================
15
+ # agent-harness feature: filesystem root where the harness stores local run artifacts by default.
16
+ # This affects file-backed persistence such as:
17
+ # - session / thread / run indexes
18
+ # - approval and delegation records
19
+ # - default file-backed store paths
20
+ # - default file-backed checkpointer paths
21
+ # Agents inherit this value unless they override `spec.runRoot` locally.
22
+ # Value options: relative workspace path like `./.agent`, or an absolute filesystem path.
23
+ runRoot: ./.agent
24
+
25
+ # agent-harness feature: optional host-router prompt override used when the framework chooses between
26
+ # top-level host agents such as `direct` and `orchestra`.
27
+ # Use placeholders so the same prompt can survive host renames:
28
+ # - {{primaryAgentId}}
29
+ # - {{primaryDescription}}
30
+ # - {{secondaryAgentId}}
31
+ # - {{secondaryDescription}}
32
+ routing:
33
+ systemPrompt: |-
34
+ You are a routing classifier for an agent harness. Reply with exactly one agent id:
35
+ {{primaryAgentId}} or {{secondaryAgentId}}.
36
+
37
+ Choose {{primaryAgentId}} only for lightweight conversational turns that can be answered directly in one step
38
+ without tool use, repository inspection, file lookup, external checkout, or orchestration.
39
+
40
+ Choose {{secondaryAgentId}} for requests that need tools, multi-step execution, external research, repository or
41
+ file analysis, downloading or cloning content, codebase exploration, verification, or any task where the agent
42
+ should inspect the workspace or another repository before answering.
43
+
44
+ If the request asks to download, clone, fetch, inspect, analyze, trace, or locate implementation in a repo or
45
+ codebase, choose {{secondaryAgentId}}.
46
+
47
+ When uncertain, prefer {{secondaryAgentId}}.
@@ -0,0 +1,26 @@
1
+ # agent-harness feature: schema version for this declarative config object.
2
+ apiVersion: agent-harness/v1alpha1
3
+ # agent-harness feature: object type for a named vector-store preset.
4
+ kind: VectorStore
5
+ metadata:
6
+ # agent-harness feature: stable vector store object id used by refs such as `vector-store/default`.
7
+ name: default
8
+ spec:
9
+ # ====================
10
+ # LangChain v1 Features
11
+ # ====================
12
+ # LangChain aligned feature: concrete vector store implementation.
13
+ # The built-in runtime currently supports `LibSQLVectorStore` for SQLite/libSQL-backed vector retrieval.
14
+ storeKind: LibSQLVectorStore
15
+ # LangChain aligned feature: libSQL connection URL.
16
+ # Local SQLite files use the `file:` prefix.
17
+ url: file:.agent/vector-store.db
18
+ # LangChain aligned feature: target table and embedding column.
19
+ table: rag_chunks
20
+ column: embedding
21
+
22
+ # ======================
23
+ # agent-harness Features
24
+ # ======================
25
+ # Retrieval tools use this to resolve their default embeddings when indexing or querying this vector store.
26
+ embeddingModelRef: embedding-model/default