harness-engineering-agent 0.1.7 → 0.1.9

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 (276) hide show
  1. package/README.md +161 -62
  2. package/dist/agent/harness-agent-capabilities.d.ts +4 -0
  3. package/dist/agent/harness-agent-capabilities.d.ts.map +1 -0
  4. package/dist/agent/harness-agent-capabilities.js +4 -0
  5. package/dist/agent/harness-agent-capabilities.js.map +1 -0
  6. package/dist/agent/harness-agent-capability-builders.d.ts +11 -0
  7. package/dist/agent/harness-agent-capability-builders.d.ts.map +1 -0
  8. package/dist/agent/harness-agent-capability-builders.js +57 -0
  9. package/dist/agent/harness-agent-capability-builders.js.map +1 -0
  10. package/dist/agent/harness-agent-capability-data.d.ts +3 -0
  11. package/dist/agent/harness-agent-capability-data.d.ts.map +1 -0
  12. package/dist/agent/harness-agent-capability-data.js +23 -0
  13. package/dist/agent/harness-agent-capability-data.js.map +1 -0
  14. package/dist/agent/harness-agent-capability-types.d.ts +50 -0
  15. package/dist/agent/harness-agent-capability-types.d.ts.map +1 -0
  16. package/dist/agent/harness-agent-capability-types.js +3 -0
  17. package/dist/agent/harness-agent-capability-types.js.map +1 -0
  18. package/dist/agent/harness-role-capability-directory-data.d.ts +3 -0
  19. package/dist/agent/harness-role-capability-directory-data.d.ts.map +1 -0
  20. package/dist/agent/harness-role-capability-directory-data.js +208 -0
  21. package/dist/agent/harness-role-capability-directory-data.js.map +1 -0
  22. package/dist/agent/harness-role-capability-directory.d.ts +43 -0
  23. package/dist/agent/harness-role-capability-directory.d.ts.map +1 -0
  24. package/dist/agent/harness-role-capability-directory.js +57 -0
  25. package/dist/agent/harness-role-capability-directory.js.map +1 -0
  26. package/dist/agent/index.d.ts +7 -0
  27. package/dist/agent/index.d.ts.map +1 -0
  28. package/dist/agent/index.js +6 -0
  29. package/dist/agent/index.js.map +1 -0
  30. package/dist/config/config-defaults.d.ts +22 -0
  31. package/dist/config/config-defaults.d.ts.map +1 -1
  32. package/dist/config/config-defaults.js +22 -0
  33. package/dist/config/config-defaults.js.map +1 -1
  34. package/dist/config/config-merge.d.ts.map +1 -1
  35. package/dist/config/config-merge.js +30 -0
  36. package/dist/config/config-merge.js.map +1 -1
  37. package/dist/config/config-schema.d.ts +59 -0
  38. package/dist/config/config-schema.d.ts.map +1 -1
  39. package/dist/config/config-schema.js +18 -1
  40. package/dist/config/config-schema.js.map +1 -1
  41. package/dist/config/config-types.d.ts +5 -1
  42. package/dist/config/config-types.d.ts.map +1 -1
  43. package/dist/config/harness-config.d.ts +2 -1
  44. package/dist/config/harness-config.d.ts.map +1 -1
  45. package/dist/config/harness-config.js +1 -0
  46. package/dist/config/harness-config.js.map +1 -1
  47. package/dist/config/index.d.ts +1 -1
  48. package/dist/config/index.d.ts.map +1 -1
  49. package/dist/config/index.js.map +1 -1
  50. package/dist/config/opencode-compatibility.d.ts +37 -0
  51. package/dist/config/opencode-compatibility.d.ts.map +1 -0
  52. package/dist/config/opencode-compatibility.js +99 -0
  53. package/dist/config/opencode-compatibility.js.map +1 -0
  54. package/dist/controller/agent-output.d.ts +1 -1
  55. package/dist/controller/agent-output.d.ts.map +1 -1
  56. package/dist/controller/agent-output.js +18 -1
  57. package/dist/controller/agent-output.js.map +1 -1
  58. package/dist/controller/agent-session-types.d.ts +56 -0
  59. package/dist/controller/agent-session-types.d.ts.map +1 -0
  60. package/dist/controller/agent-session-types.js +2 -0
  61. package/dist/controller/agent-session-types.js.map +1 -0
  62. package/dist/controller/agent-session-utils.d.ts +52 -0
  63. package/dist/controller/agent-session-utils.d.ts.map +1 -0
  64. package/dist/controller/agent-session-utils.js +118 -0
  65. package/dist/controller/agent-session-utils.js.map +1 -0
  66. package/dist/controller/agent-session.d.ts +2 -40
  67. package/dist/controller/agent-session.d.ts.map +1 -1
  68. package/dist/controller/agent-session.js +126 -128
  69. package/dist/controller/agent-session.js.map +1 -1
  70. package/dist/controller/contracts.d.ts +4 -2
  71. package/dist/controller/contracts.d.ts.map +1 -1
  72. package/dist/controller/contracts.js.map +1 -1
  73. package/dist/controller/errors.d.ts +5 -0
  74. package/dist/controller/errors.d.ts.map +1 -1
  75. package/dist/controller/errors.js +8 -0
  76. package/dist/controller/errors.js.map +1 -1
  77. package/dist/controller/evidence-factory.js +7 -1
  78. package/dist/controller/evidence-factory.js.map +1 -1
  79. package/dist/controller/failure-analysis.d.ts +12 -0
  80. package/dist/controller/failure-analysis.d.ts.map +1 -1
  81. package/dist/controller/failure-analysis.js +41 -0
  82. package/dist/controller/failure-analysis.js.map +1 -1
  83. package/dist/controller/failure-analyzer-schemas.d.ts +87 -0
  84. package/dist/controller/failure-analyzer-schemas.d.ts.map +1 -0
  85. package/dist/controller/failure-analyzer-schemas.js +117 -0
  86. package/dist/controller/failure-analyzer-schemas.js.map +1 -0
  87. package/dist/controller/graph-validator.js +18 -4
  88. package/dist/controller/graph-validator.js.map +1 -1
  89. package/dist/controller/index.d.ts +7 -2
  90. package/dist/controller/index.d.ts.map +1 -1
  91. package/dist/controller/index.js +4 -1
  92. package/dist/controller/index.js.map +1 -1
  93. package/dist/controller/repair-loop.d.ts +1 -1
  94. package/dist/controller/repair-loop.d.ts.map +1 -1
  95. package/dist/controller/repair-loop.js +28 -0
  96. package/dist/controller/repair-loop.js.map +1 -1
  97. package/dist/controller/report-factory.d.ts.map +1 -1
  98. package/dist/controller/report-factory.js +49 -21
  99. package/dist/controller/report-factory.js.map +1 -1
  100. package/dist/controller/role-prompts.d.ts +2 -1
  101. package/dist/controller/role-prompts.d.ts.map +1 -1
  102. package/dist/controller/role-prompts.js +3 -9
  103. package/dist/controller/role-prompts.js.map +1 -1
  104. package/dist/controller/run-acceptance.d.ts +17 -0
  105. package/dist/controller/run-acceptance.d.ts.map +1 -0
  106. package/dist/controller/run-acceptance.js +179 -0
  107. package/dist/controller/run-acceptance.js.map +1 -0
  108. package/dist/controller/run-controller.d.ts.map +1 -1
  109. package/dist/controller/run-controller.js +379 -96
  110. package/dist/controller/run-controller.js.map +1 -1
  111. package/dist/controller/run-state.d.ts +1 -0
  112. package/dist/controller/run-state.d.ts.map +1 -1
  113. package/dist/controller/run-state.js +12 -0
  114. package/dist/controller/run-state.js.map +1 -1
  115. package/dist/controller/session-tool-authorization.d.ts +14 -0
  116. package/dist/controller/session-tool-authorization.d.ts.map +1 -0
  117. package/dist/controller/session-tool-authorization.js +88 -0
  118. package/dist/controller/session-tool-authorization.js.map +1 -0
  119. package/dist/controller/task-agent-output.d.ts +13 -2
  120. package/dist/controller/task-agent-output.d.ts.map +1 -1
  121. package/dist/controller/task-agent-output.js +58 -1
  122. package/dist/controller/task-agent-output.js.map +1 -1
  123. package/dist/controller/task-agent-schemas.d.ts +745 -26
  124. package/dist/controller/task-agent-schemas.d.ts.map +1 -1
  125. package/dist/controller/task-agent-schemas.js +70 -21
  126. package/dist/controller/task-agent-schemas.js.map +1 -1
  127. package/dist/controller/task-executor.d.ts +2 -1
  128. package/dist/controller/task-executor.d.ts.map +1 -1
  129. package/dist/controller/task-executor.js +304 -105
  130. package/dist/controller/task-executor.js.map +1 -1
  131. package/dist/doctor/cli.d.ts +3 -0
  132. package/dist/doctor/cli.d.ts.map +1 -0
  133. package/dist/doctor/cli.js +10 -0
  134. package/dist/doctor/cli.js.map +1 -0
  135. package/dist/doctor/index.d.ts +7 -0
  136. package/dist/doctor/index.d.ts.map +1 -0
  137. package/dist/doctor/index.js +16 -0
  138. package/dist/doctor/index.js.map +1 -0
  139. package/dist/doctor/local-mcp-probe.d.ts +3 -0
  140. package/dist/doctor/local-mcp-probe.d.ts.map +1 -0
  141. package/dist/doctor/local-mcp-probe.js +151 -0
  142. package/dist/doctor/local-mcp-probe.js.map +1 -0
  143. package/dist/doctor/opencode-config.d.ts +43 -0
  144. package/dist/doctor/opencode-config.d.ts.map +1 -0
  145. package/dist/doctor/opencode-config.js +103 -0
  146. package/dist/doctor/opencode-config.js.map +1 -0
  147. package/dist/doctor/run-harness-doctor.d.ts +23 -0
  148. package/dist/doctor/run-harness-doctor.d.ts.map +1 -0
  149. package/dist/doctor/run-harness-doctor.js +176 -0
  150. package/dist/doctor/run-harness-doctor.js.map +1 -0
  151. package/dist/doctor/types.d.ts +69 -0
  152. package/dist/doctor/types.d.ts.map +1 -0
  153. package/dist/doctor/types.js +8 -0
  154. package/dist/doctor/types.js.map +1 -0
  155. package/dist/domain/acceptance-criteria.d.ts +9 -0
  156. package/dist/domain/acceptance-criteria.d.ts.map +1 -0
  157. package/dist/domain/acceptance-criteria.js +38 -0
  158. package/dist/domain/acceptance-criteria.js.map +1 -0
  159. package/dist/domain/context-package.d.ts +43 -0
  160. package/dist/domain/context-package.d.ts.map +1 -0
  161. package/dist/domain/context-package.js +54 -0
  162. package/dist/domain/context-package.js.map +1 -0
  163. package/dist/domain/evidence.d.ts +1 -0
  164. package/dist/domain/evidence.d.ts.map +1 -1
  165. package/dist/domain/evidence.js +1 -2
  166. package/dist/domain/evidence.js.map +1 -1
  167. package/dist/domain/index.d.ts +12 -4
  168. package/dist/domain/index.d.ts.map +1 -1
  169. package/dist/domain/index.js +6 -2
  170. package/dist/domain/index.js.map +1 -1
  171. package/dist/domain/plan-artifacts.d.ts +170 -0
  172. package/dist/domain/plan-artifacts.d.ts.map +1 -0
  173. package/dist/domain/plan-artifacts.js +187 -0
  174. package/dist/domain/plan-artifacts.js.map +1 -0
  175. package/dist/domain/report.d.ts +608 -11
  176. package/dist/domain/report.d.ts.map +1 -1
  177. package/dist/domain/report.js +6 -4
  178. package/dist/domain/report.js.map +1 -1
  179. package/dist/domain/requirement.d.ts +22 -2
  180. package/dist/domain/requirement.d.ts.map +1 -1
  181. package/dist/domain/requirement.js +26 -3
  182. package/dist/domain/requirement.js.map +1 -1
  183. package/dist/domain/run-acceptance.d.ts +33 -0
  184. package/dist/domain/run-acceptance.d.ts.map +1 -0
  185. package/dist/domain/run-acceptance.js +29 -0
  186. package/dist/domain/run-acceptance.js.map +1 -0
  187. package/dist/domain/run.d.ts +596 -7
  188. package/dist/domain/run.d.ts.map +1 -1
  189. package/dist/domain/run.js +58 -0
  190. package/dist/domain/run.js.map +1 -1
  191. package/dist/domain/shared.d.ts +40 -2
  192. package/dist/domain/shared.d.ts.map +1 -1
  193. package/dist/domain/shared.js +26 -0
  194. package/dist/domain/shared.js.map +1 -1
  195. package/dist/domain/task-review.d.ts +57 -0
  196. package/dist/domain/task-review.d.ts.map +1 -0
  197. package/dist/domain/task-review.js +63 -0
  198. package/dist/domain/task-review.js.map +1 -0
  199. package/dist/domain/task.d.ts +24 -2
  200. package/dist/domain/task.d.ts.map +1 -1
  201. package/dist/domain/task.js +20 -12
  202. package/dist/domain/task.js.map +1 -1
  203. package/dist/index.d.ts +5 -0
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +5 -0
  206. package/dist/index.js.map +1 -1
  207. package/dist/plugin/create-harness-plugin.d.ts +4 -28
  208. package/dist/plugin/create-harness-plugin.d.ts.map +1 -1
  209. package/dist/plugin/create-harness-plugin.js +33 -118
  210. package/dist/plugin/create-harness-plugin.js.map +1 -1
  211. package/dist/plugin/harness-agent-config.d.ts +7 -0
  212. package/dist/plugin/harness-agent-config.d.ts.map +1 -1
  213. package/dist/plugin/harness-agent-config.js +72 -118
  214. package/dist/plugin/harness-agent-config.js.map +1 -1
  215. package/dist/plugin/harness-chat-hook.d.ts +1 -1
  216. package/dist/plugin/harness-chat-hook.d.ts.map +1 -1
  217. package/dist/plugin/harness-chat-hook.js +15 -23
  218. package/dist/plugin/harness-chat-hook.js.map +1 -1
  219. package/dist/plugin/harness-chat-protocol.d.ts +2 -2
  220. package/dist/plugin/harness-chat-protocol.d.ts.map +1 -1
  221. package/dist/plugin/harness-chat-protocol.js +13 -2
  222. package/dist/plugin/harness-chat-protocol.js.map +1 -1
  223. package/dist/plugin/harness-coordinator.d.ts +4 -0
  224. package/dist/plugin/harness-coordinator.d.ts.map +1 -1
  225. package/dist/plugin/harness-coordinator.js +7 -1
  226. package/dist/plugin/harness-coordinator.js.map +1 -1
  227. package/dist/plugin/harness-plugin-identifiers.d.ts +5 -0
  228. package/dist/plugin/harness-plugin-identifiers.d.ts.map +1 -0
  229. package/dist/plugin/harness-plugin-identifiers.js +24 -0
  230. package/dist/plugin/harness-plugin-identifiers.js.map +1 -0
  231. package/dist/plugin/harness-plugin-runtime.d.ts +64 -0
  232. package/dist/plugin/harness-plugin-runtime.d.ts.map +1 -0
  233. package/dist/plugin/harness-plugin-runtime.js +125 -0
  234. package/dist/plugin/harness-plugin-runtime.js.map +1 -0
  235. package/dist/plugin/harness-plugin-scheduler.d.ts +16 -0
  236. package/dist/plugin/harness-plugin-scheduler.d.ts.map +1 -0
  237. package/dist/plugin/harness-plugin-scheduler.js +51 -0
  238. package/dist/plugin/harness-plugin-scheduler.js.map +1 -0
  239. package/dist/plugin/harness-request-router.d.ts.map +1 -1
  240. package/dist/plugin/harness-request-router.js +14 -23
  241. package/dist/plugin/harness-request-router.js.map +1 -1
  242. package/dist/plugin/harness-requirement.d.ts +1 -1
  243. package/dist/plugin/harness-requirement.d.ts.map +1 -1
  244. package/dist/plugin/harness-requirement.js +2 -3
  245. package/dist/plugin/harness-requirement.js.map +1 -1
  246. package/dist/session/contracts.d.ts +9 -0
  247. package/dist/session/contracts.d.ts.map +1 -1
  248. package/dist/session/contracts.js.map +1 -1
  249. package/dist/session/fake-session-adapter.d.ts.map +1 -1
  250. package/dist/session/fake-session-adapter.js +1 -0
  251. package/dist/session/fake-session-adapter.js.map +1 -1
  252. package/dist/session/index.d.ts +1 -1
  253. package/dist/session/index.d.ts.map +1 -1
  254. package/dist/session/index.js.map +1 -1
  255. package/dist/session/opencode-session-adapter.d.ts +2 -1
  256. package/dist/session/opencode-session-adapter.d.ts.map +1 -1
  257. package/dist/session/opencode-session-adapter.js +7 -2
  258. package/dist/session/opencode-session-adapter.js.map +1 -1
  259. package/dist/session/opencode-session-prompts.d.ts +2 -10
  260. package/dist/session/opencode-session-prompts.d.ts.map +1 -1
  261. package/dist/session/opencode-session-prompts.js +7 -9
  262. package/dist/session/opencode-session-prompts.js.map +1 -1
  263. package/dist/store/run-event.d.ts +596 -7
  264. package/dist/store/run-event.d.ts.map +1 -1
  265. package/dist/tools/harness-research-tools.d.ts +22 -0
  266. package/dist/tools/harness-research-tools.d.ts.map +1 -1
  267. package/dist/tools/harness-research-tools.js +173 -64
  268. package/dist/tools/harness-research-tools.js.map +1 -1
  269. package/dist/tools/harness-tool-capabilities.d.ts +342 -0
  270. package/dist/tools/harness-tool-capabilities.d.ts.map +1 -0
  271. package/dist/tools/harness-tool-capabilities.js +170 -0
  272. package/dist/tools/harness-tool-capabilities.js.map +1 -0
  273. package/dist/verification/command-policy.d.ts.map +1 -1
  274. package/dist/verification/command-policy.js +2 -2
  275. package/dist/verification/command-policy.js.map +1 -1
  276. package/package.json +6 -1
@@ -0,0 +1,52 @@
1
+ import type { RunId } from "../domain/index.js";
2
+ import type { HarnessSessionRole, SessionAdapter, SessionEvidenceReference, SessionOutputContract, SessionPromptInput } from "../session/index.js";
3
+ import type { RunEvent, RunStore } from "../store/index.js";
4
+ import type { ControllerIdSource } from "./contracts.js";
5
+ export type ActiveSession = {
6
+ readonly sessionId: string;
7
+ readonly timeoutId?: ReturnType<typeof setTimeout>;
8
+ };
9
+ export declare const createPromptInput: (request: {
10
+ readonly brief: string;
11
+ readonly constraints: readonly string[];
12
+ readonly evidence: readonly SessionEvidenceReference[];
13
+ readonly outputContract: SessionOutputContract;
14
+ }) => SessionPromptInput;
15
+ export declare const appendSessionEvent: (input: {
16
+ readonly runId: RunId;
17
+ readonly type: string;
18
+ readonly sessionId: string;
19
+ readonly payload: RunEvent["payload"];
20
+ readonly store: RunStore;
21
+ readonly ids: ControllerIdSource;
22
+ }) => Promise<void>;
23
+ export declare const releaseActiveSession: (input: {
24
+ readonly activeSessions: Map<RunId, Map<string, ActiveSession>>;
25
+ readonly runId: RunId;
26
+ readonly sessionId: string;
27
+ readonly reason: string;
28
+ readonly sessionAdapter: SessionAdapter;
29
+ }) => Promise<void>;
30
+ export declare const requireOrphanSession: (input: {
31
+ readonly runId: RunId;
32
+ readonly sessionId: string;
33
+ readonly listOrphanSessions: () => Promise<readonly OrphanSession[]>;
34
+ }) => Promise<OrphanSession>;
35
+ export type OrphanSession = {
36
+ readonly runId: RunId;
37
+ readonly sessionId: string;
38
+ readonly role: HarnessSessionRole;
39
+ readonly state: "created" | "rebound";
40
+ };
41
+ export declare const listOrphanSessions: (input: {
42
+ readonly store: RunStore;
43
+ }) => Promise<readonly OrphanSession[]>;
44
+ export declare const createTimeout: (input: {
45
+ readonly runId: RunId;
46
+ readonly sessionId: string;
47
+ readonly timeoutMs: number | undefined;
48
+ readonly sessionAdapter: SessionAdapter;
49
+ readonly activeSessions: Map<RunId, Map<string, ActiveSession>>;
50
+ readonly releaseReason: string;
51
+ }) => ReturnType<typeof setTimeout> | undefined;
52
+ //# sourceMappingURL=agent-session-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session-utils.d.ts","sourceRoot":"","sources":["../../src/controller/agent-session-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ export const createPromptInput = (request) => ({
2
+ brief: request.brief,
3
+ constraints: request.constraints,
4
+ evidence: request.evidence,
5
+ outputContract: request.outputContract,
6
+ ...(Reflect.get(request, "executionCategory") === undefined
7
+ ? {}
8
+ : { executionCategory: Reflect.get(request, "executionCategory") }),
9
+ ...(Reflect.get(request, "profileOverride") === undefined ||
10
+ typeof Reflect.get(request, "profileOverride") !== "object" ||
11
+ Reflect.get(Reflect.get(request, "profileOverride"), "skill") === undefined
12
+ ? {}
13
+ : {
14
+ skill: Reflect.get(Reflect.get(request, "profileOverride"), "skill"),
15
+ }),
16
+ ...(Reflect.get(request, "allowedPaths") === undefined
17
+ ? {}
18
+ : { allowedPaths: Reflect.get(request, "allowedPaths") }),
19
+ });
20
+ export const appendSessionEvent = async (input) => {
21
+ await input.store.appendEvents(input.runId, [
22
+ {
23
+ schemaVersion: "1.0.0",
24
+ eventId: input.ids.createEventId(`${input.type}-${input.runId}-${input.sessionId}`),
25
+ idempotencyKey: input.ids.createEventId(`session-${input.type}-${input.runId}-${input.sessionId}`),
26
+ runId: input.runId,
27
+ type: input.type,
28
+ timestamp: new Date().toISOString(),
29
+ payload: input.payload,
30
+ },
31
+ ]);
32
+ };
33
+ export const releaseActiveSession = async (input) => {
34
+ const sessions = input.activeSessions.get(input.runId);
35
+ const activeSession = sessions?.get(input.sessionId);
36
+ if (activeSession === undefined)
37
+ return;
38
+ if (activeSession.timeoutId !== undefined)
39
+ clearTimeout(activeSession.timeoutId);
40
+ sessions?.delete(input.sessionId);
41
+ if (sessions?.size === 0)
42
+ input.activeSessions.delete(input.runId);
43
+ await input.sessionAdapter.release({ sessionId: activeSession.sessionId, reason: input.reason });
44
+ };
45
+ export const requireOrphanSession = async (input) => {
46
+ const orphanSession = (await input.listOrphanSessions()).find((candidate) => candidate.runId === input.runId && candidate.sessionId === input.sessionId);
47
+ if (orphanSession === undefined) {
48
+ throw new TypeError(`orphan session ${input.sessionId} for run ${input.runId} does not exist`);
49
+ }
50
+ return orphanSession;
51
+ };
52
+ export const listOrphanSessions = async (input) => {
53
+ if (input.store.listRunIds === undefined)
54
+ return [];
55
+ const orphanSessions = [];
56
+ for (const runId of await input.store.listRunIds()) {
57
+ const events = await input.store.listEvents(runId);
58
+ const sessions = new Map();
59
+ for (const event of events) {
60
+ const sessionId = readStringPayload(event.payload, "sessionId");
61
+ if (sessionId === undefined)
62
+ continue;
63
+ if (event.type === "session.created") {
64
+ const role = readRolePayload(event.payload);
65
+ if (role !== undefined)
66
+ sessions.set(sessionId, { runId, sessionId, role, state: "created" });
67
+ }
68
+ else if (event.type === "session.released" || event.type === "session.safe-abandoned") {
69
+ sessions.delete(sessionId);
70
+ }
71
+ else if (event.type === "session.rebound") {
72
+ const current = sessions.get(sessionId);
73
+ if (current !== undefined)
74
+ sessions.set(sessionId, { ...current, state: "rebound" });
75
+ }
76
+ }
77
+ orphanSessions.push(...sessions.values());
78
+ }
79
+ return orphanSessions;
80
+ };
81
+ export const createTimeout = (input) => {
82
+ if (input.timeoutMs === undefined)
83
+ return undefined;
84
+ return setTimeout(() => {
85
+ void input.sessionAdapter
86
+ .abort({ sessionId: input.sessionId, reason: "timeout" })
87
+ .catch(() => undefined);
88
+ void releaseActiveSession({
89
+ activeSessions: input.activeSessions,
90
+ runId: input.runId,
91
+ sessionId: input.sessionId,
92
+ reason: input.releaseReason,
93
+ sessionAdapter: input.sessionAdapter,
94
+ });
95
+ }, input.timeoutMs);
96
+ };
97
+ const readStringPayload = (payload, key) => {
98
+ if (typeof payload !== "object" || payload === null || Array.isArray(payload))
99
+ return undefined;
100
+ const value = Reflect.get(payload, key);
101
+ return typeof value === "string" ? value : undefined;
102
+ };
103
+ const readRolePayload = (payload) => {
104
+ const role = readStringPayload(payload, "role");
105
+ switch (role) {
106
+ case "intake":
107
+ case "planner":
108
+ case "worker":
109
+ case "verifier":
110
+ case "acceptance":
111
+ case "failure-analyzer":
112
+ case "repair-worker":
113
+ return role;
114
+ default:
115
+ return undefined;
116
+ }
117
+ };
118
+ //# sourceMappingURL=agent-session-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session-utils.js","sourceRoot":"","sources":["../../src/controller/agent-session-utils.ts"],"names":[],"mappings":"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"}
@@ -1,45 +1,7 @@
1
- import type { RunId } from "../domain/index.js";
2
- import type { HarnessSessionRole, SessionAdapter, SessionEvidenceReference, SessionOutputContract } from "../session/index.js";
1
+ import type { SessionAdapter } from "../session/index.js";
3
2
  import type { RunStore } from "../store/index.js";
3
+ import type { AgentSessionRuntime } from "./agent-session-types.js";
4
4
  import type { ControllerIdSource } from "./contracts.js";
5
- export type SendAgentInput = {
6
- readonly runId: RunId;
7
- readonly role: HarnessSessionRole;
8
- readonly title: string;
9
- readonly brief: string;
10
- readonly constraints: readonly string[];
11
- readonly evidence: readonly SessionEvidenceReference[];
12
- readonly outputContract: SessionOutputContract;
13
- readonly messageLabel: string;
14
- readonly systemPrompt?: string;
15
- readonly timeoutMs?: number;
16
- readonly parentSessionId?: string;
17
- readonly workingDirectory?: string;
18
- };
19
- export type AgentSessionRuntime = {
20
- readonly sendAgent: (input: SendAgentInput) => Promise<string>;
21
- readonly abortActiveSession: (runId: RunId) => Promise<void>;
22
- readonly hasActiveSession: (runId: RunId) => boolean;
23
- readonly isCancelled: (runId: RunId) => boolean;
24
- readonly markCancelled: (runId: RunId) => void;
25
- readonly listOrphanSessions: () => Promise<readonly OrphanSession[]>;
26
- readonly rebindSession: (input: RebindSessionInput) => Promise<void>;
27
- readonly safeAbandonSession: (input: AbandonSessionInput) => Promise<void>;
28
- };
29
- export type OrphanSession = {
30
- readonly runId: RunId;
31
- readonly sessionId: string;
32
- readonly role: HarnessSessionRole;
33
- readonly state: "created" | "rebound";
34
- };
35
- export type RebindSessionInput = {
36
- readonly runId: RunId;
37
- readonly sessionId: string;
38
- readonly actorId: string;
39
- };
40
- export type AbandonSessionInput = RebindSessionInput & {
41
- readonly reason: string;
42
- };
43
5
  export declare const createAgentSessionRuntime: (input: {
44
6
  readonly sessionAdapter: SessionAdapter;
45
7
  readonly ids: ControllerIdSource;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/controller/agent-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EAEtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAIxD,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,CAAA;IACtD,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAA;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9D,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACpD,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IAC/C,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAC9C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAAA;IACpE,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3E,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAOlF,eAAO,MAAM,yBAAyB,GAAI,OAAO;IAC/C,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;IAChC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;IACxB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAClC,KAAG,mBAgOH,CAAA"}
1
+ {"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/controller/agent-session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,EAEV,mBAAmB,EAIpB,MAAM,0BAA0B,CAAA;AAUjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAIxD,eAAO,MAAM,yBAAyB,GAAI,OAAO;IAC/C,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;IAChC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;IACxB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAClC,KAAG,mBAoOH,CAAA"}
@@ -1,102 +1,27 @@
1
+ import { buildSessionToolAllowlist } from "../agent/index.js";
1
2
  import { readAgentOutput } from "./agent-output.js";
2
- import { RunCancellationError } from "./errors.js";
3
+ import { appendSessionEvent, createPromptInput, createTimeout, listOrphanSessions, releaseActiveSession, requireOrphanSession, } from "./agent-session-utils.js";
4
+ import { RunCancellationError, RunPausedError } from "./errors.js";
3
5
  import { roleSystemPrompt } from "./role-prompts.js";
4
6
  export const createAgentSessionRuntime = (input) => {
5
7
  const activeSessions = new Map();
6
- const cancelledRunIds = new Set();
8
+ const interruptedRuns = new Map();
7
9
  const throwIfCancelled = (runId) => {
8
- if (cancelledRunIds.has(runId)) {
9
- throw new RunCancellationError(runId);
10
+ const interruption = interruptedRuns.get(runId);
11
+ switch (interruption) {
12
+ case "cancelled":
13
+ throw new RunCancellationError(runId);
14
+ case "paused":
15
+ throw new RunPausedError(runId);
16
+ default:
17
+ return;
10
18
  }
11
19
  };
12
- const createPromptInput = (request) => ({
13
- brief: request.brief,
14
- constraints: request.constraints,
15
- evidence: request.evidence,
16
- outputContract: request.outputContract,
17
- });
18
- const appendSessionEvent = async (runId, type, sessionId, payload) => {
19
- await input.store.appendEvents(runId, [
20
- {
21
- schemaVersion: "1.0.0",
22
- eventId: input.ids.createEventId(`${type}-${runId}-${sessionId}`),
23
- idempotencyKey: input.ids.createEventId(`session-${type}-${runId}-${sessionId}`),
24
- runId,
25
- type,
26
- timestamp: new Date().toISOString(),
27
- payload,
28
- },
29
- ]);
30
- };
31
20
  const setActiveSession = (runId, session) => {
32
21
  const sessions = activeSessions.get(runId) ?? new Map();
33
22
  sessions.set(session.sessionId, session);
34
23
  activeSessions.set(runId, sessions);
35
24
  };
36
- const releaseActiveSession = async (runId, sessionId, reason) => {
37
- const sessions = activeSessions.get(runId);
38
- const activeSession = sessions?.get(sessionId);
39
- if (activeSession === undefined) {
40
- return;
41
- }
42
- if (activeSession.timeoutId !== undefined) {
43
- clearTimeout(activeSession.timeoutId);
44
- }
45
- sessions?.delete(sessionId);
46
- if (sessions?.size === 0) {
47
- activeSessions.delete(runId);
48
- }
49
- await input.sessionAdapter.release({ sessionId: activeSession.sessionId, reason });
50
- };
51
- const requireOrphanSession = async (runId, sessionId) => {
52
- const orphanSession = (await listOrphanSessions()).find((candidate) => candidate.runId === runId && candidate.sessionId === sessionId);
53
- if (orphanSession === undefined) {
54
- throw new TypeError(`orphan session ${sessionId} for run ${runId} does not exist`);
55
- }
56
- return orphanSession;
57
- };
58
- const listOrphanSessions = async () => {
59
- if (input.store.listRunIds === undefined) {
60
- return [];
61
- }
62
- const orphanSessions = [];
63
- for (const runId of await input.store.listRunIds()) {
64
- const events = await input.store.listEvents(runId);
65
- const sessions = new Map();
66
- for (const event of events) {
67
- const sessionId = readStringPayload(event.payload, "sessionId");
68
- if (sessionId === undefined) {
69
- continue;
70
- }
71
- if (event.type === "session.created") {
72
- const role = readRolePayload(event.payload);
73
- if (role !== undefined) {
74
- sessions.set(sessionId, { runId, sessionId, role, state: "created" });
75
- }
76
- }
77
- else if (event.type === "session.released" || event.type === "session.safe-abandoned") {
78
- sessions.delete(sessionId);
79
- }
80
- else if (event.type === "session.rebound") {
81
- const current = sessions.get(sessionId);
82
- if (current !== undefined) {
83
- sessions.set(sessionId, { ...current, state: "rebound" });
84
- }
85
- }
86
- }
87
- orphanSessions.push(...sessions.values());
88
- }
89
- return orphanSessions;
90
- };
91
- const createTimeout = (runId, sessionId, timeoutMs) => {
92
- if (timeoutMs === undefined) {
93
- return undefined;
94
- }
95
- return setTimeout(() => {
96
- void input.sessionAdapter.abort({ sessionId, reason: "timeout" }).catch(() => undefined);
97
- void releaseActiveSession(runId, sessionId, "timeout");
98
- }, timeoutMs);
99
- };
100
25
  return {
101
26
  async sendAgent(request) {
102
27
  throwIfCancelled(request.runId);
@@ -110,35 +35,60 @@ export const createAgentSessionRuntime = (input) => {
110
35
  promptInput: createPromptInput(request),
111
36
  ...(request.timeoutMs === undefined ? {} : { timeoutMs: request.timeoutMs }),
112
37
  });
113
- const timeoutId = createTimeout(request.runId, session.session.sessionId, request.timeoutMs);
38
+ const timeoutId = createTimeout({
39
+ runId: request.runId,
40
+ sessionId: session.session.sessionId,
41
+ timeoutMs: request.timeoutMs,
42
+ sessionAdapter: input.sessionAdapter,
43
+ activeSessions,
44
+ releaseReason: "timeout",
45
+ });
114
46
  setActiveSession(request.runId, timeoutId === undefined
115
47
  ? { sessionId: session.session.sessionId }
116
48
  : { sessionId: session.session.sessionId, timeoutId });
117
- await appendSessionEvent(request.runId, "session.created", session.session.sessionId, {
49
+ await appendSessionEvent({
50
+ runId: request.runId,
51
+ type: "session.created",
118
52
  sessionId: session.session.sessionId,
119
- role: request.role,
53
+ payload: { sessionId: session.session.sessionId, role: request.role },
54
+ store: input.store,
55
+ ids: input.ids,
120
56
  });
121
57
  try {
58
+ const tools = buildSessionToolAllowlist(request.role);
122
59
  const result = await input.sessionAdapter.send({
123
60
  sessionId: session.session.sessionId,
124
61
  messageId: input.ids.createMessageId(request.messageLabel),
125
62
  prompt: request.brief,
126
63
  promptInput: createPromptInput(request),
64
+ ...(request.profileOverride === undefined
65
+ ? {}
66
+ : { profileOverride: request.profileOverride }),
127
67
  systemPrompt: request.systemPrompt ?? roleSystemPrompt(request.role),
68
+ ...(tools === undefined ? {} : { tools }),
128
69
  });
129
70
  throwIfCancelled(request.runId);
130
71
  return readAgentOutput(result);
131
72
  }
132
73
  finally {
133
- await appendSessionEvent(request.runId, "session.released", session.session.sessionId, {
74
+ await appendSessionEvent({
75
+ runId: request.runId,
76
+ type: "session.released",
77
+ sessionId: session.session.sessionId,
78
+ payload: { sessionId: session.session.sessionId, reason: "completed" },
79
+ store: input.store,
80
+ ids: input.ids,
81
+ });
82
+ await releaseActiveSession({
83
+ activeSessions,
84
+ runId: request.runId,
134
85
  sessionId: session.session.sessionId,
135
86
  reason: "completed",
87
+ sessionAdapter: input.sessionAdapter,
136
88
  });
137
- await releaseActiveSession(request.runId, session.session.sessionId, "completed");
138
89
  }
139
90
  },
140
91
  async abortActiveSession(runId) {
141
- cancelledRunIds.add(runId);
142
92
  const sessions = activeSessions.get(runId);
143
93
  if (sessions !== undefined) {
144
94
  for (const activeSession of sessions.values()) {
@@ -146,7 +96,13 @@ export const createAgentSessionRuntime = (input) => {
146
96
  sessionId: activeSession.sessionId,
147
97
  reason: "controller",
148
98
  });
149
- await releaseActiveSession(runId, activeSession.sessionId, "controller");
99
+ await releaseActiveSession({
100
+ activeSessions,
101
+ runId,
102
+ sessionId: activeSession.sessionId,
103
+ reason: "controller",
104
+ sessionAdapter: input.sessionAdapter,
105
+ });
150
106
  }
151
107
  }
152
108
  },
@@ -154,67 +110,109 @@ export const createAgentSessionRuntime = (input) => {
154
110
  return (activeSessions.get(runId)?.size ?? 0) > 0;
155
111
  },
156
112
  isCancelled(runId) {
157
- return cancelledRunIds.has(runId);
113
+ return interruptedRuns.get(runId) === "cancelled";
158
114
  },
159
115
  markCancelled(runId) {
160
- cancelledRunIds.add(runId);
116
+ interruptedRuns.set(runId, "cancelled");
117
+ },
118
+ markPaused(runId) {
119
+ interruptedRuns.set(runId, "paused");
120
+ },
121
+ clearInterruption(runId) {
122
+ interruptedRuns.delete(runId);
161
123
  },
162
124
  async listOrphanSessions() {
163
- return listOrphanSessions();
125
+ return listOrphanSessions({ store: input.store });
164
126
  },
165
127
  async rebindSession(session) {
166
- const orphanSession = await requireOrphanSession(session.runId, session.sessionId);
128
+ const orphanSession = await requireOrphanSession({
129
+ runId: session.runId,
130
+ sessionId: session.sessionId,
131
+ listOrphanSessions: () => listOrphanSessions({ store: input.store }),
132
+ });
167
133
  const snapshot = input.sessionAdapter.getSession(session.sessionId);
168
134
  if (snapshot === undefined || snapshot.role !== orphanSession.role) {
169
135
  throw new TypeError(`session ${session.sessionId} is not available for rebind`);
170
136
  }
171
137
  setActiveSession(session.runId, { sessionId: session.sessionId });
172
- await appendSessionEvent(session.runId, "session.rebound", session.sessionId, {
138
+ await appendSessionEvent({
139
+ runId: session.runId,
140
+ type: "session.rebound",
173
141
  sessionId: session.sessionId,
174
- actorId: session.actorId,
142
+ payload: { sessionId: session.sessionId, actorId: session.actorId },
143
+ store: input.store,
144
+ ids: input.ids,
175
145
  });
176
146
  },
177
147
  async safeAbandonSession(session) {
178
- await requireOrphanSession(session.runId, session.sessionId);
148
+ await requireOrphanSession({
149
+ runId: session.runId,
150
+ sessionId: session.sessionId,
151
+ listOrphanSessions: () => listOrphanSessions({ store: input.store }),
152
+ });
179
153
  const sessions = activeSessions.get(session.runId);
180
154
  if (sessions?.has(session.sessionId) === true) {
181
155
  sessions.delete(session.sessionId);
182
- if (sessions.size === 0) {
156
+ if (sessions.size === 0)
183
157
  activeSessions.delete(session.runId);
184
- }
185
158
  }
186
159
  await input.sessionAdapter.release({
187
160
  sessionId: session.sessionId,
188
161
  reason: `safe-abandon:${session.reason}`,
189
162
  });
190
- await appendSessionEvent(session.runId, "session.safe-abandoned", session.sessionId, {
163
+ await appendSessionEvent({
164
+ runId: session.runId,
165
+ type: "session.safe-abandoned",
191
166
  sessionId: session.sessionId,
192
- actorId: session.actorId,
193
- reason: session.reason,
167
+ payload: {
168
+ sessionId: session.sessionId,
169
+ actorId: session.actorId,
170
+ reason: session.reason,
171
+ },
172
+ store: input.store,
173
+ ids: input.ids,
194
174
  });
195
175
  },
176
+ async reconcileOrphanSessions(request) {
177
+ const orphanSessions = (await listOrphanSessions({ store: input.store })).filter((session) => session.runId === request.runId);
178
+ if (orphanSessions.length === 0)
179
+ return { kind: "none" };
180
+ const reboundSessionIds = [];
181
+ const abandonedSessionIds = [];
182
+ for (const orphanSession of orphanSessions) {
183
+ const snapshot = input.sessionAdapter.getSession(orphanSession.sessionId);
184
+ if (snapshot !== undefined && snapshot.role === orphanSession.role) {
185
+ setActiveSession(request.runId, { sessionId: orphanSession.sessionId });
186
+ await appendSessionEvent({
187
+ runId: request.runId,
188
+ type: "session.rebound",
189
+ sessionId: orphanSession.sessionId,
190
+ payload: { sessionId: orphanSession.sessionId, actorId: request.actorId },
191
+ store: input.store,
192
+ ids: input.ids,
193
+ });
194
+ reboundSessionIds.push(orphanSession.sessionId);
195
+ continue;
196
+ }
197
+ const reason = "session unavailable during run recovery";
198
+ await input.sessionAdapter.release({
199
+ sessionId: orphanSession.sessionId,
200
+ reason: `safe-abandon:${reason}`,
201
+ });
202
+ await appendSessionEvent({
203
+ runId: request.runId,
204
+ type: "session.safe-abandoned",
205
+ sessionId: orphanSession.sessionId,
206
+ payload: { sessionId: orphanSession.sessionId, actorId: request.actorId, reason },
207
+ store: input.store,
208
+ ids: input.ids,
209
+ });
210
+ abandonedSessionIds.push(orphanSession.sessionId);
211
+ }
212
+ return abandonedSessionIds.length > 0
213
+ ? { kind: "abandoned", sessionIds: abandonedSessionIds }
214
+ : { kind: "rebound", sessionIds: reboundSessionIds };
215
+ },
196
216
  };
197
217
  };
198
- const readStringPayload = (payload, key) => {
199
- if (typeof payload !== "object" || payload === null || Array.isArray(payload)) {
200
- return undefined;
201
- }
202
- const value = Reflect.get(payload, key);
203
- return typeof value === "string" ? value : undefined;
204
- };
205
- const readRolePayload = (payload) => {
206
- const role = readStringPayload(payload, "role");
207
- switch (role) {
208
- case "intake":
209
- case "planner":
210
- case "worker":
211
- case "verifier":
212
- case "acceptance":
213
- case "failure-analyzer":
214
- case "repair-worker":
215
- return role;
216
- default:
217
- return undefined;
218
- }
219
- };
220
218
  //# sourceMappingURL=agent-session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../../src/controller/agent-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../../src/controller/agent-session.ts"],"names":[],"mappings":"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"}