@botbotgo/agent-harness 0.0.298 → 0.0.300

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 (166) hide show
  1. package/README.md +78 -38
  2. package/README.zh.md +80 -31
  3. package/dist/acp.d.ts +3 -0
  4. package/dist/acp.js +10 -2
  5. package/dist/api.d.ts +14 -2
  6. package/dist/api.js +19 -3
  7. package/dist/cli.d.ts +18 -1
  8. package/dist/cli.js +1408 -319
  9. package/dist/client/acp.d.ts +9 -3
  10. package/dist/client/acp.js +55 -1
  11. package/dist/client/in-process.d.ts +5 -2
  12. package/dist/client/in-process.js +4 -6
  13. package/dist/client/index.d.ts +1 -1
  14. package/dist/client/types.d.ts +6 -5
  15. package/dist/config/agents/direct.yaml +7 -17
  16. package/dist/config/agents/orchestra.yaml +9 -65
  17. package/dist/config/catalogs/embedding-models.yaml +1 -1
  18. package/dist/config/catalogs/stores.yaml +1 -1
  19. package/dist/config/knowledge/knowledge-runtime.yaml +36 -2
  20. package/dist/config/knowledge/procedural-memory-runtime.yaml +78 -0
  21. package/dist/config/{catalogs/models.yaml → models.yaml} +2 -2
  22. package/dist/config/prompts/direct-system.md +16 -0
  23. package/dist/config/prompts/orchestra-system.md +62 -0
  24. package/dist/config/prompts/routing-system.md +14 -0
  25. package/dist/config/runtime/runtime-memory.yaml +39 -5
  26. package/dist/config/runtime/workspace.yaml +7 -16
  27. package/dist/contracts/runtime.d.ts +242 -1
  28. package/dist/contracts/workspace.d.ts +2 -0
  29. package/dist/index.d.ts +5 -3
  30. package/dist/index.js +2 -1
  31. package/dist/init-project.js +178 -33
  32. package/dist/knowledge/contracts.d.ts +5 -0
  33. package/dist/knowledge/module.d.ts +5 -0
  34. package/dist/knowledge/module.js +340 -18
  35. package/dist/package-version.d.ts +1 -1
  36. package/dist/package-version.js +1 -1
  37. package/dist/persistence/file-store.d.ts +5 -1
  38. package/dist/persistence/file-store.js +16 -0
  39. package/dist/persistence/sqlite-store.d.ts +4 -1
  40. package/dist/persistence/sqlite-store.js +88 -14
  41. package/dist/persistence/types.d.ts +4 -1
  42. package/dist/procedural/config.d.ts +63 -0
  43. package/dist/procedural/config.js +125 -0
  44. package/dist/procedural/index.d.ts +2 -0
  45. package/dist/procedural/index.js +1 -0
  46. package/dist/protocol/ag-ui/http.d.ts +3 -0
  47. package/dist/protocol/ag-ui/http.js +10 -0
  48. package/dist/request-events.d.ts +63 -0
  49. package/dist/request-events.js +400 -0
  50. package/dist/resource/isolation.js +11 -0
  51. package/dist/resource/resource-impl.d.ts +1 -0
  52. package/dist/resource/resource-impl.js +103 -12
  53. package/dist/resources/init-templates/agent-context/deep-research.md +5 -0
  54. package/dist/resources/init-templates/prompts/research-analyst-basic.md +1 -0
  55. package/dist/resources/init-templates/prompts/research-analyst-web-search.md +1 -0
  56. package/dist/resources/init-templates/prompts/research-host-deep-research-basic.md +1 -0
  57. package/dist/resources/init-templates/prompts/research-host-deep-research-web-search.md +1 -0
  58. package/dist/resources/init-templates/prompts/research-host-single-agent-basic.md +1 -0
  59. package/dist/resources/init-templates/prompts/research-host-single-agent-web-search.md +1 -0
  60. package/dist/resources/prompts/runtime/browser-capability-disclaimer-recovery.md +1 -0
  61. package/dist/resources/prompts/runtime/default-subagent.md +2 -0
  62. package/dist/resources/prompts/runtime/durable-memory-context.md +7 -0
  63. package/dist/resources/prompts/runtime/execution-with-tool-evidence-retry.md +1 -0
  64. package/dist/resources/prompts/runtime/execution-with-tool-evidence.md +1 -0
  65. package/dist/resources/prompts/runtime/invalid-tool-selection-recovery.md +1 -0
  66. package/dist/resources/prompts/runtime/memory-manager.md +31 -0
  67. package/dist/resources/prompts/runtime/memory-mutation-reconciliation.md +22 -0
  68. package/dist/resources/prompts/runtime/slash-command-skill.md +6 -0
  69. package/dist/resources/prompts/runtime/strict-tool-json.md +1 -0
  70. package/dist/resources/prompts/runtime/workspace-boundary-guidance.md +3 -0
  71. package/dist/resources/prompts/runtime/workspace-relative-path.md +1 -0
  72. package/dist/resources/prompts/runtime/write-todos-descriptive-content.md +1 -0
  73. package/dist/resources/prompts/runtime/write-todos-full-entry.md +1 -0
  74. package/dist/resources/prompts/runtime/write-todos-non-empty-initial-list.md +1 -0
  75. package/dist/resources/tools/_runtime_tool_helpers.mjs +152 -0
  76. package/dist/resources/tools/cancel_request.mjs +21 -0
  77. package/dist/resources/tools/fetch_url.mjs +23 -0
  78. package/dist/resources/tools/http_request.mjs +30 -0
  79. package/dist/resources/tools/inspect_approvals.mjs +27 -0
  80. package/dist/resources/tools/inspect_artifacts.mjs +21 -0
  81. package/dist/resources/tools/inspect_events.mjs +21 -0
  82. package/dist/resources/tools/inspect_requests.mjs +27 -0
  83. package/dist/resources/tools/inspect_sessions.mjs +21 -0
  84. package/dist/resources/tools/list_files.mjs +27 -0
  85. package/dist/resources/tools/read_artifact.mjs +22 -0
  86. package/dist/resources/tools/request_approval.mjs +27 -0
  87. package/dist/resources/tools/run_command.mjs +21 -0
  88. package/dist/resources/tools/schedule_task.mjs +76 -0
  89. package/dist/resources/tools/search_files.mjs +47 -0
  90. package/dist/resources/tools/send_message.mjs +23 -0
  91. package/dist/runtime/adapter/direct-builtin-utility.d.ts +1 -0
  92. package/dist/runtime/adapter/direct-builtin-utility.js +90 -0
  93. package/dist/runtime/adapter/flow/execution-context.d.ts +1 -1
  94. package/dist/runtime/adapter/flow/execution-context.js +1 -1
  95. package/dist/runtime/adapter/flow/invocation-flow.d.ts +1 -0
  96. package/dist/runtime/adapter/flow/invocation-flow.js +9 -1
  97. package/dist/runtime/adapter/flow/invoke-runtime.d.ts +1 -1
  98. package/dist/runtime/adapter/flow/stream-runtime.d.ts +5 -1
  99. package/dist/runtime/adapter/flow/stream-runtime.js +556 -35
  100. package/dist/runtime/adapter/invocation-result.js +3 -2
  101. package/dist/runtime/adapter/local-tool-invocation.d.ts +1 -1
  102. package/dist/runtime/adapter/local-tool-invocation.js +28 -4
  103. package/dist/runtime/adapter/middleware-assembly.js +3 -1
  104. package/dist/runtime/adapter/model/invocation-request.d.ts +4 -1
  105. package/dist/runtime/adapter/model/invocation-request.js +138 -16
  106. package/dist/runtime/adapter/model/message-assembly.js +2 -6
  107. package/dist/runtime/adapter/model/model-providers.js +103 -5
  108. package/dist/runtime/adapter/resilience.js +17 -2
  109. package/dist/runtime/adapter/runtime-adapter-support.d.ts +11 -7
  110. package/dist/runtime/adapter/runtime-adapter-support.js +39 -5
  111. package/dist/runtime/adapter/tool/builtin-middleware-tools.d.ts +63 -1
  112. package/dist/runtime/adapter/tool/builtin-middleware-tools.js +193 -21
  113. package/dist/runtime/adapter/tool/tool-arguments.d.ts +3 -1
  114. package/dist/runtime/adapter/tool/tool-arguments.js +52 -17
  115. package/dist/runtime/adapter/tool-resolution.d.ts +1 -0
  116. package/dist/runtime/adapter/tool-resolution.js +4 -2
  117. package/dist/runtime/agent-runtime-adapter.d.ts +27 -0
  118. package/dist/runtime/agent-runtime-adapter.js +163 -11
  119. package/dist/runtime/harness/events/event-bus.d.ts +1 -0
  120. package/dist/runtime/harness/events/event-bus.js +3 -0
  121. package/dist/runtime/harness/events/event-sink.d.ts +3 -0
  122. package/dist/runtime/harness/events/event-sink.js +16 -7
  123. package/dist/runtime/harness/events/streaming.d.ts +18 -1
  124. package/dist/runtime/harness/events/streaming.js +23 -10
  125. package/dist/runtime/harness/run/inspection.js +26 -5
  126. package/dist/runtime/harness/run/stream-run.d.ts +13 -4
  127. package/dist/runtime/harness/run/stream-run.js +448 -4
  128. package/dist/runtime/harness/run/surface-semantics.js +7 -34
  129. package/dist/runtime/harness/system/runtime-memory-manager.d.ts +3 -0
  130. package/dist/runtime/harness/system/runtime-memory-manager.js +384 -69
  131. package/dist/runtime/harness/system/runtime-memory-policy.d.ts +20 -1
  132. package/dist/runtime/harness/system/runtime-memory-policy.js +65 -17
  133. package/dist/runtime/harness/system/runtime-memory-records.js +100 -0
  134. package/dist/runtime/harness/system/runtime-memory-sync.js +2 -2
  135. package/dist/runtime/harness/system/store.d.ts +4 -0
  136. package/dist/runtime/harness/system/store.js +153 -0
  137. package/dist/runtime/harness.d.ts +9 -1
  138. package/dist/runtime/harness.js +141 -7
  139. package/dist/runtime/maintenance/sqlite-checkpoint-saver.d.ts +8 -3
  140. package/dist/runtime/maintenance/sqlite-checkpoint-saver.js +152 -53
  141. package/dist/runtime/parsing/output-parsing.d.ts +10 -2
  142. package/dist/runtime/parsing/output-parsing.js +223 -16
  143. package/dist/runtime/parsing/stream-event-parsing.d.ts +7 -0
  144. package/dist/runtime/parsing/stream-event-parsing.js +51 -1
  145. package/dist/runtime/scheduling/system-schedule-manager.d.ts +41 -0
  146. package/dist/runtime/scheduling/system-schedule-manager.js +532 -0
  147. package/dist/runtime/support/embedding-models.d.ts +1 -1
  148. package/dist/runtime/support/embedding-models.js +5 -2
  149. package/dist/runtime/support/runtime-factories.js +1 -1
  150. package/dist/runtime/support/runtime-layout.d.ts +3 -0
  151. package/dist/runtime/support/runtime-layout.js +10 -1
  152. package/dist/runtime/support/runtime-prompts.d.ts +30 -0
  153. package/dist/runtime/support/runtime-prompts.js +55 -0
  154. package/dist/runtime/support/vector-stores.d.ts +1 -1
  155. package/dist/runtime/support/vector-stores.js +5 -2
  156. package/dist/upstream-events.js +8 -7
  157. package/dist/utils/bundled-text.d.ts +3 -0
  158. package/dist/utils/bundled-text.js +25 -0
  159. package/dist/utils/id.js +3 -2
  160. package/dist/workspace/agent-binding-compiler.js +53 -13
  161. package/dist/workspace/object-loader.js +64 -2
  162. package/dist/workspace/support/workspace-ref-utils.d.ts +2 -1
  163. package/dist/workspace/support/workspace-ref-utils.js +24 -5
  164. package/dist/workspace/yaml-object-reader.d.ts +1 -0
  165. package/dist/workspace/yaml-object-reader.js +95 -17
  166. package/package.json +11 -5
package/dist/api.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ArtifactListing, CancelOptions, InvocationEnvelope, ListMemoriesInput, ListMemoriesResult, MemoryRecord, MemorizeInput, MemorizeResult, MessageContent, RecallInput, RecallResult, RemoveMemoryInput, RequestDecisionOptions, RequestRecord, RequestResult as InternalRequestResult, RequestStartOptions, RequestSummary, RuntimeArtifactWriteInput, ResumeOptions, RequestListeners, RuntimeHealthSnapshot, RuntimeGovernanceEvidence, RuntimeGovernanceDiagnostics, RuntimeOperatorOverview, RuntimeQueueDiagnostics, RuntimeAdapterOptions, RuntimeEvaluationExport, RuntimeEvaluationExportInput, RuntimeEvaluationArtifact, RuntimeEvaluationReplayInput, RuntimeEvaluationReplayResult as InternalRuntimeEvaluationReplayResult, RuntimeSessionPackage, RuntimeSessionPackageInput, SessionListSummary, SessionRecord, SessionSummary, TranscriptMessage, UpdateMemoryInput, WorkspaceLoadOptions } from "./contracts/types.js";
1
+ import type { ArtifactListing, CancelOptions, InvocationEnvelope, ListMemoriesInput, ListMemoriesResult, MemoryRecord, MemorizeInput, MemorizeResult, MessageContent, RequestDataEvent, RecallInput, RecallResult, RemoveMemoryInput, RequestEventSnapshot, RequestPlanState, RequestDecisionOptions, RequestRecord, RequestResult as InternalRequestResult, RequestStartOptions, RequestSummary, RuntimeArtifactWriteInput, ResumeOptions, RequestListeners, RuntimeHealthSnapshot, RuntimeGovernanceEvidence, RuntimeGovernanceDiagnostics, RuntimeOperatorOverview, RuntimeQueueDiagnostics, RuntimeAdapterOptions, RuntimeEvaluationExport, RuntimeEvaluationExportInput, RuntimeEvaluationArtifact, RuntimeEvaluationReplayInput, RuntimeEvaluationReplayResult as InternalRuntimeEvaluationReplayResult, RuntimeSessionPackage, RuntimeSessionPackageInput, SessionListSummary, SessionRecord, SessionSummary, TranscriptMessage, UpdateMemoryInput, WorkspaceLoadOptions } from "./contracts/types.js";
2
2
  import { AgentHarnessRuntime } from "./runtime/harness.js";
3
3
  import type { InventoryAgentRecord, InventorySkillRecord } from "./runtime/harness/system/inventory.js";
4
4
  import type { RequirementAssessmentOptions } from "./runtime/harness/system/skill-requirements.js";
@@ -8,7 +8,7 @@ export { createAcpStdioClient } from "./protocol/acp/client.js";
8
8
  export type { AcpApproval, AcpArtifact, AcpEventNotification, AcpNotification, AcpJsonRpcError, AcpJsonRpcRequest, AcpJsonRpcResponse, AcpJsonRpcSuccess, AcpRequestRecord, AcpRequestParams, AcpServerCapabilities, AcpSessionRecord, AcpStreamNotification, } from "./acp.js";
9
9
  export { AgentHarnessRuntime } from "./runtime/harness.js";
10
10
  export { createUpstreamTimelineReducer } from "./upstream-events.js";
11
- export type { ListMemoriesInput, ListMemoriesResult, MemoryDecision, MemoryKind, MemoryRecord, MemoryScope, MemorizeInput, MemorizeResult, RecallInput, RecallResult, RemoveMemoryInput, RuntimeEvaluationExport, RuntimeEvaluationExportInput, RuntimeEvaluationReplayInput, SessionListSummary, RuntimeSessionPackageInput, RuntimeSessionPackage, UpdateMemoryInput, } from "./contracts/types.js";
11
+ export type { ListMemoriesInput, ListMemoriesResult, MemoryDecision, MemoryKind, MemoryRecord, MemoryScope, MemorizeInput, MemorizeResult, RecallInput, RecallResult, RemoveMemoryInput, RuntimeEvaluationExport, RuntimeEvaluationExportInput, RuntimeEvaluationReplayInput, RequestPlanState, SessionListSummary, RuntimeSessionPackageInput, RuntimeSessionPackage, UpdateMemoryInput, } from "./contracts/types.js";
12
12
  export type { AcpHttpServer, AcpHttpServerOptions } from "./protocol/acp/http.js";
13
13
  export type { AcpStdioClient, AcpStdioClientOptions } from "./protocol/acp/client.js";
14
14
  export type { A2aAgentCard, A2aHttpServer, A2aHttpServerOptions, A2aTask, A2aTaskState } from "./protocol/a2a/http.js";
@@ -41,6 +41,7 @@ export type PublicRequestListeners = {
41
41
  onEvent?: (event: RequestEvent) => void | Promise<void>;
42
42
  onUpstreamEvent?: RequestListeners["onUpstreamEvent"];
43
43
  onTraceItem?: (item: RequestTraceItem) => void | Promise<void>;
44
+ onPlanState?: RequestListeners["onPlanState"];
44
45
  };
45
46
  export type Approval = {
46
47
  approvalId: string;
@@ -69,6 +70,7 @@ export type RequestPackageInput = {
69
70
  export type RequestPackage = {
70
71
  session: SessionRecord | null;
71
72
  request: RequestRecord | null;
73
+ planState?: RequestPlanState | null;
72
74
  approvals: Approval[];
73
75
  transcript: TranscriptMessage[];
74
76
  events: RequestEvent[];
@@ -100,11 +102,15 @@ type PublicApprovalFilter = {
100
102
  };
101
103
  type PublicRequestStartOptions = Omit<RequestStartOptions, "sessionId" | "listeners"> & {
102
104
  sessionId?: string;
105
+ eventListener?: (snapshot: RequestEventSnapshot) => void | Promise<void>;
106
+ dataListener?: (event: RequestDataEvent) => void | Promise<void>;
103
107
  listeners?: PublicRequestListeners;
104
108
  };
105
109
  type PublicRequestDecisionOptions = Omit<RequestDecisionOptions, "sessionId" | "requestId" | "listeners"> & {
106
110
  sessionId: string;
107
111
  requestId?: string;
112
+ eventListener?: (snapshot: RequestEventSnapshot) => void | Promise<void>;
113
+ dataListener?: (event: RequestDataEvent) => void | Promise<void>;
108
114
  listeners?: PublicRequestListeners;
109
115
  };
110
116
  export type PublicRequestOptions = PublicRequestStartOptions | PublicRequestDecisionOptions;
@@ -113,6 +119,8 @@ export type PublicRequestResult = Omit<InternalRequestResult, "sessionId" | "req
113
119
  requestId: string;
114
120
  };
115
121
  export type RequestResult = PublicRequestResult;
122
+ export type RequestSnapshot = RequestEventSnapshot;
123
+ export type RequestData = RequestDataEvent;
116
124
  export type UserChatMessage = {
117
125
  role: "user";
118
126
  content: MessageContent;
@@ -162,6 +170,10 @@ export declare function getArtifact(runtime: AgentHarnessRuntime, input: {
162
170
  requestId: string;
163
171
  artifactPath: string;
164
172
  }): Promise<unknown>;
173
+ export declare function getRequestPlanState(runtime: AgentHarnessRuntime, input: {
174
+ sessionId: string;
175
+ requestId: string;
176
+ }): Promise<RequestPlanState | null>;
165
177
  export declare function recordArtifact(runtime: AgentHarnessRuntime, input: RecordArtifactInput): Promise<import("./contracts/types.js").ArtifactRecord>;
166
178
  export declare function listRequestEvents(runtime: AgentHarnessRuntime, input: {
167
179
  sessionId: string;
package/dist/api.js CHANGED
@@ -70,6 +70,7 @@ function toPublicRequestListeners(listeners) {
70
70
  event: item.event,
71
71
  })
72
72
  : undefined,
73
+ onPlanState: listeners.onPlanState,
73
74
  };
74
75
  }
75
76
  function toRequestArtifactListing(listing) {
@@ -111,12 +112,20 @@ function toPublicRequestResult(result) {
111
112
  };
112
113
  }
113
114
  function toInternalRequestOptions(options) {
115
+ const legacyListeners = toPublicRequestListeners(options.listeners);
116
+ const mergedListeners = legacyListeners || options.eventListener || options.dataListener
117
+ ? {
118
+ ...(legacyListeners ?? {}),
119
+ ...(options.eventListener ? { eventListener: options.eventListener } : {}),
120
+ ...(options.dataListener ? { dataListener: options.dataListener } : {}),
121
+ }
122
+ : undefined;
114
123
  if ("decision" in options) {
115
124
  return {
116
125
  approvalId: options.approvalId,
117
126
  decision: options.decision,
118
127
  editedInput: options.editedInput,
119
- listeners: toPublicRequestListeners(options.listeners),
128
+ listeners: mergedListeners,
120
129
  requestId: options.requestId,
121
130
  sessionId: options.sessionId,
122
131
  };
@@ -125,7 +134,7 @@ function toInternalRequestOptions(options) {
125
134
  agentId: options.agentId,
126
135
  input: options.input,
127
136
  invocation: options.invocation,
128
- listeners: toPublicRequestListeners(options.listeners),
137
+ listeners: mergedListeners,
129
138
  priority: options.priority,
130
139
  sessionId: options.sessionId,
131
140
  };
@@ -272,6 +281,9 @@ export async function listRequestArtifacts(runtime, input) {
272
281
  export async function getArtifact(runtime, input) {
273
282
  return runtime.readRequestArtifact(input.sessionId, input.requestId, input.artifactPath);
274
283
  }
284
+ export async function getRequestPlanState(runtime, input) {
285
+ return runtime.getRequestPlanState(input.sessionId, input.requestId);
286
+ }
275
287
  export async function recordArtifact(runtime, input) {
276
288
  return runtime.recordArtifact(input);
277
289
  }
@@ -314,7 +326,11 @@ export async function getOperatorOverview(runtime, options) {
314
326
  };
315
327
  }
316
328
  export async function exportRequestPackage(runtime, input) {
317
- return toRequestPackage(await runtime.exportRequestPackage(input));
329
+ const pkg = await runtime.exportRequestPackage(input);
330
+ return {
331
+ ...toRequestPackage(pkg),
332
+ planState: await runtime.getRequestPlanState(input.sessionId, input.requestId),
333
+ };
318
334
  }
319
335
  export async function exportSessionPackage(runtime, input) {
320
336
  return runtime.exportSessionPackage(input);
package/dist/cli.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
+ import { type ChildProcessWithoutNullStreams } from "node:child_process";
2
3
  import { createInterface as createReadlineInterface } from "node:readline";
3
4
  import type { Readable } from "node:stream";
4
5
  import { createAgentHarness } from "./api.js";
@@ -34,6 +35,20 @@ type CliDeps = {
34
35
  serveAcpOverStdio?: typeof serveAcpOverStdio;
35
36
  serveRuntimeMcpOverStdio?: typeof serveRuntimeMcpOverStdio;
36
37
  };
38
+ export declare function renderChatPromptLine(input: {
39
+ agentId?: string;
40
+ sessionId?: string;
41
+ requestId?: string;
42
+ color: boolean;
43
+ }): string;
44
+ export declare function renderChatBanner(input: {
45
+ workspacePath: string;
46
+ transport: "stdio" | "http";
47
+ agentId?: string;
48
+ sessionId?: string;
49
+ /** When true (TTY + default stdout), paint logo and accents in ANSI color */
50
+ color?: boolean;
51
+ }): string;
37
52
  type ChatWorkspaceModelInfo = {
38
53
  provider?: string;
39
54
  model?: string;
@@ -45,6 +60,8 @@ export declare function probeChatWorkspace(input: {
45
60
  agentId?: string;
46
61
  }): Promise<string | undefined>;
47
62
  export declare function isChatServerNoiseLine(line: string): boolean;
48
- export declare function wrapChatClientForLifecycle(client: HarnessClient, onStop: () => Promise<void> | void): HarnessClient;
63
+ type ProcessExitHookHost = Pick<NodeJS.Process, "on" | "off">;
64
+ export declare function installChatSubprocessExitGuard(child: ChildProcessWithoutNullStreams, host?: ProcessExitHookHost): () => void;
49
65
  export declare function runCli(argv: string[], io?: CliIo, deps?: CliDeps): Promise<number>;
66
+ export declare function resolveInvokedCliHref(argvPath?: string): string;
50
67
  export {};