@lotagate/cli 0.1.22 → 0.1.23

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 (490) hide show
  1. package/package.json +7 -7
  2. package/scripts/install-native.mjs +11 -11
  3. package/dist/application/agent/agent-history.d.ts +0 -3
  4. package/dist/application/agent/agent-history.js +0 -81
  5. package/dist/application/agent/agent-input-context.d.ts +0 -9
  6. package/dist/application/agent/agent-input-context.js +0 -12
  7. package/dist/application/agent/agent-limit.d.ts +0 -3
  8. package/dist/application/agent/agent-limit.js +0 -12
  9. package/dist/application/agent/agent-run-tracker.d.ts +0 -30
  10. package/dist/application/agent/agent-run-tracker.js +0 -68
  11. package/dist/application/agent/agent-session-store.d.ts +0 -19
  12. package/dist/application/agent/agent-session-store.js +0 -74
  13. package/dist/application/agent/capability-profile.d.ts +0 -37
  14. package/dist/application/agent/capability-profile.js +0 -13
  15. package/dist/application/agent/cli-agent-execution-service.d.ts +0 -81
  16. package/dist/application/agent/cli-agent-execution-service.js +0 -279
  17. package/dist/application/agent/context-compaction-persistence.d.ts +0 -8
  18. package/dist/application/agent/context-compaction-persistence.js +0 -27
  19. package/dist/application/agent/context-compaction.d.ts +0 -20
  20. package/dist/application/agent/context-compaction.js +0 -114
  21. package/dist/application/agent/prompt-data-safety.d.ts +0 -14
  22. package/dist/application/agent/prompt-data-safety.js +0 -38
  23. package/dist/application/agent/safe-system-prompt.d.ts +0 -3
  24. package/dist/application/agent/safe-system-prompt.js +0 -19
  25. package/dist/application/agent/scoped-tool-executor.d.ts +0 -13
  26. package/dist/application/agent/scoped-tool-executor.js +0 -32
  27. package/dist/application/agent/system-prompt-builder.d.ts +0 -14
  28. package/dist/application/agent/system-prompt-builder.js +0 -199
  29. package/dist/application/agent/tool-catalog.d.ts +0 -14
  30. package/dist/application/agent/tool-catalog.js +0 -30
  31. package/dist/application/agent/tool-display.d.ts +0 -6
  32. package/dist/application/agent/tool-display.js +0 -59
  33. package/dist/application/agent/tool-hook-lifecycle.d.ts +0 -19
  34. package/dist/application/agent/tool-hook-lifecycle.js +0 -85
  35. package/dist/application/auth/authentication-service.d.ts +0 -20
  36. package/dist/application/auth/authentication-service.js +0 -44
  37. package/dist/application/chat/chat-service.d.ts +0 -12
  38. package/dist/application/chat/chat-service.js +0 -19
  39. package/dist/application/chat/pending-attachment-store.d.ts +0 -12
  40. package/dist/application/chat/pending-attachment-store.js +0 -28
  41. package/dist/application/commands/application-command-executor.d.ts +0 -20
  42. package/dist/application/commands/application-command-executor.js +0 -66
  43. package/dist/application/commands/cli-args.d.ts +0 -6
  44. package/dist/application/commands/cli-args.js +0 -43
  45. package/dist/application/commands/cli-command-services.d.ts +0 -16
  46. package/dist/application/commands/cli-command-services.js +0 -405
  47. package/dist/application/commands/command-catalog.d.ts +0 -6
  48. package/dist/application/commands/command-catalog.js +0 -159
  49. package/dist/application/commands/command-contract.d.ts +0 -58
  50. package/dist/application/commands/command-contract.js +0 -1
  51. package/dist/application/commands/command-hints.d.ts +0 -9
  52. package/dist/application/commands/command-hints.js +0 -17
  53. package/dist/application/commands/command-output.d.ts +0 -4
  54. package/dist/application/commands/command-output.js +0 -1
  55. package/dist/application/commands/command-parser.d.ts +0 -10
  56. package/dist/application/commands/command-parser.js +0 -155
  57. package/dist/application/commands/command-presentation.d.ts +0 -7
  58. package/dist/application/commands/command-presentation.js +0 -131
  59. package/dist/application/commands/command-registry.d.ts +0 -11
  60. package/dist/application/commands/command-registry.js +0 -64
  61. package/dist/application/commands/command-runtime.d.ts +0 -2
  62. package/dist/application/commands/command-runtime.js +0 -3
  63. package/dist/application/commands/goal-command-handlers.d.ts +0 -3
  64. package/dist/application/commands/goal-command-handlers.js +0 -120
  65. package/dist/application/commands/media-command-handlers.d.ts +0 -9
  66. package/dist/application/commands/media-command-handlers.js +0 -307
  67. package/dist/application/commands/media-command-output.d.ts +0 -11
  68. package/dist/application/commands/media-command-output.js +0 -8
  69. package/dist/application/commands/runtime-command-handlers.d.ts +0 -7
  70. package/dist/application/commands/runtime-command-handlers.js +0 -177
  71. package/dist/application/commands/stream-output.d.ts +0 -4
  72. package/dist/application/commands/stream-output.js +0 -10
  73. package/dist/application/commands/utility-commands.d.ts +0 -6
  74. package/dist/application/commands/utility-commands.js +0 -81
  75. package/dist/application/config/execution-config.d.ts +0 -4
  76. package/dist/application/config/execution-config.js +0 -6
  77. package/dist/application/extensions/extension-list-contract.d.ts +0 -13
  78. package/dist/application/extensions/extension-list-contract.js +0 -1
  79. package/dist/application/extensions/extension-list-formatters.d.ts +0 -31
  80. package/dist/application/extensions/extension-list-formatters.js +0 -98
  81. package/dist/application/extensions/extension-list-output.d.ts +0 -3
  82. package/dist/application/extensions/extension-list-output.js +0 -7
  83. package/dist/application/extensions/plugin-contribution-registry.d.ts +0 -15
  84. package/dist/application/extensions/plugin-contribution-registry.js +0 -80
  85. package/dist/application/extensions/skill-scope-store.d.ts +0 -23
  86. package/dist/application/extensions/skill-scope-store.js +0 -33
  87. package/dist/application/formatting/compact-number.d.ts +0 -2
  88. package/dist/application/formatting/compact-number.js +0 -18
  89. package/dist/application/formatting/compact-table.d.ts +0 -22
  90. package/dist/application/formatting/compact-table.js +0 -49
  91. package/dist/application/media/video-operation-poller.d.ts +0 -5
  92. package/dist/application/media/video-operation-poller.js +0 -42
  93. package/dist/application/model/cached-model-catalog.d.ts +0 -13
  94. package/dist/application/model/cached-model-catalog.js +0 -31
  95. package/dist/application/model/initial-model-selection.d.ts +0 -10
  96. package/dist/application/model/initial-model-selection.js +0 -11
  97. package/dist/application/model/model-catalog-service.d.ts +0 -6
  98. package/dist/application/model/model-catalog-service.js +0 -13
  99. package/dist/application/model/model-context-window.d.ts +0 -3
  100. package/dist/application/model/model-context-window.js +0 -23
  101. package/dist/application/orchestration/cli-subagent-service.d.ts +0 -70
  102. package/dist/application/orchestration/cli-subagent-service.js +0 -328
  103. package/dist/application/orchestration/cli-turn-event-projector.d.ts +0 -12
  104. package/dist/application/orchestration/cli-turn-event-projector.js +0 -81
  105. package/dist/application/orchestration/cli-turn-events.d.ts +0 -76
  106. package/dist/application/orchestration/cli-turn-events.js +0 -39
  107. package/dist/application/orchestration/cli-turn-persistence.d.ts +0 -6
  108. package/dist/application/orchestration/cli-turn-persistence.js +0 -14
  109. package/dist/application/orchestration/goal-evaluator.d.ts +0 -18
  110. package/dist/application/orchestration/goal-evaluator.js +0 -88
  111. package/dist/application/orchestration/goal-input.d.ts +0 -3
  112. package/dist/application/orchestration/goal-input.js +0 -19
  113. package/dist/application/orchestration/goal-output.d.ts +0 -2
  114. package/dist/application/orchestration/goal-output.js +0 -11
  115. package/dist/application/orchestration/goal-runner.d.ts +0 -22
  116. package/dist/application/orchestration/goal-runner.js +0 -153
  117. package/dist/application/orchestration/goal-usage.d.ts +0 -9
  118. package/dist/application/orchestration/goal-usage.js +0 -19
  119. package/dist/application/orchestration/headless-agent-turn.d.ts +0 -32
  120. package/dist/application/orchestration/headless-agent-turn.js +0 -82
  121. package/dist/application/orchestration/plan-generator.d.ts +0 -7
  122. package/dist/application/orchestration/plan-generator.js +0 -34
  123. package/dist/application/orchestration/subagent-coordinator.d.ts +0 -33
  124. package/dist/application/orchestration/subagent-coordinator.js +0 -28
  125. package/dist/application/orchestration/subagent-handoff.d.ts +0 -2
  126. package/dist/application/orchestration/subagent-handoff.js +0 -68
  127. package/dist/application/orchestration/subagent-tool-executor.d.ts +0 -12
  128. package/dist/application/orchestration/subagent-tool-executor.js +0 -93
  129. package/dist/application/orchestration/task-assessment.d.ts +0 -4
  130. package/dist/application/orchestration/task-assessment.js +0 -35
  131. package/dist/application/orchestration/task-graph.d.ts +0 -13
  132. package/dist/application/orchestration/task-graph.js +0 -56
  133. package/dist/application/orchestration/task-scheduler.d.ts +0 -18
  134. package/dist/application/orchestration/task-scheduler.js +0 -88
  135. package/dist/application/project/project-trust-service.d.ts +0 -13
  136. package/dist/application/project/project-trust-service.js +0 -74
  137. package/dist/application/protocol/browser-host-tool-executor.d.ts +0 -41
  138. package/dist/application/protocol/browser-host-tool-executor.js +0 -88
  139. package/dist/application/protocol/desktop-agent-command.d.ts +0 -9
  140. package/dist/application/protocol/desktop-agent-command.js +0 -663
  141. package/dist/application/protocol/desktop-attachment-store.d.ts +0 -16
  142. package/dist/application/protocol/desktop-attachment-store.js +0 -82
  143. package/dist/application/protocol/desktop-command-catalog.d.ts +0 -2
  144. package/dist/application/protocol/desktop-command-catalog.js +0 -19
  145. package/dist/application/protocol/desktop-command-contract.d.ts +0 -22
  146. package/dist/application/protocol/desktop-command-contract.js +0 -3
  147. package/dist/application/protocol/desktop-command-executor.d.ts +0 -16
  148. package/dist/application/protocol/desktop-command-executor.js +0 -47
  149. package/dist/application/protocol/desktop-command-output.d.ts +0 -15
  150. package/dist/application/protocol/desktop-command-output.js +0 -24
  151. package/dist/application/protocol/desktop-execution-policy.d.ts +0 -17
  152. package/dist/application/protocol/desktop-execution-policy.js +0 -49
  153. package/dist/application/protocol/desktop-host-tool-executor.d.ts +0 -57
  154. package/dist/application/protocol/desktop-host-tool-executor.js +0 -53
  155. package/dist/application/protocol/desktop-orchestration-events.d.ts +0 -5
  156. package/dist/application/protocol/desktop-orchestration-events.js +0 -37
  157. package/dist/application/protocol/json-line-writer.d.ts +0 -9
  158. package/dist/application/protocol/json-line-writer.js +0 -19
  159. package/dist/application/protocol/jsonl-agent-command.d.ts +0 -3
  160. package/dist/application/protocol/jsonl-agent-command.js +0 -97
  161. package/dist/application/protocol/jsonl-protocol.d.ts +0 -52
  162. package/dist/application/protocol/jsonl-protocol.js +0 -170
  163. package/dist/application/security/desktop-tool-scope-policy.d.ts +0 -3
  164. package/dist/application/security/desktop-tool-scope-policy.js +0 -52
  165. package/dist/application/security/tool-action-risk-analyzer.d.ts +0 -13
  166. package/dist/application/security/tool-action-risk-analyzer.js +0 -64
  167. package/dist/application/security/tool-approval-service.d.ts +0 -35
  168. package/dist/application/security/tool-approval-service.js +0 -97
  169. package/dist/application/security/tool-risk-classifier.d.ts +0 -11
  170. package/dist/application/security/tool-risk-classifier.js +0 -65
  171. package/dist/application/security/workspace-permission-policy.d.ts +0 -10
  172. package/dist/application/security/workspace-permission-policy.js +0 -50
  173. package/dist/application/session/project-session-access.d.ts +0 -8
  174. package/dist/application/session/project-session-access.js +0 -19
  175. package/dist/application/session/session-compaction-service.d.ts +0 -10
  176. package/dist/application/session/session-compaction-service.js +0 -43
  177. package/dist/application/session/session-turn-lifecycle.d.ts +0 -5
  178. package/dist/application/session/session-turn-lifecycle.js +0 -31
  179. package/dist/application/workspace/workspace-file-index.d.ts +0 -15
  180. package/dist/application/workspace/workspace-file-index.js +0 -60
  181. package/dist/application/workspace/workspace-file-reference-resolver.d.ts +0 -14
  182. package/dist/application/workspace/workspace-file-reference-resolver.js +0 -123
  183. package/dist/application/workspace/workspace-instruction-loader.d.ts +0 -8
  184. package/dist/application/workspace/workspace-instruction-loader.js +0 -55
  185. package/dist/bootstrap/composition-root.d.ts +0 -6
  186. package/dist/bootstrap/composition-root.js +0 -4
  187. package/dist/bootstrap/global-cli-options.d.ts +0 -6
  188. package/dist/bootstrap/global-cli-options.js +0 -29
  189. package/dist/bootstrap/native-devtools-stub.d.ts +0 -10
  190. package/dist/bootstrap/native-devtools-stub.js +0 -10
  191. package/dist/bootstrap/native-entry.d.ts +0 -1
  192. package/dist/bootstrap/native-entry.js +0 -6
  193. package/dist/bootstrap/native-tiktoken.d.ts +0 -4
  194. package/dist/bootstrap/native-tiktoken.js +0 -5
  195. package/dist/bootstrap/runtime-factory.d.ts +0 -35
  196. package/dist/bootstrap/runtime-factory.js +0 -44
  197. package/dist/bootstrap/shutdown-manager.d.ts +0 -10
  198. package/dist/bootstrap/shutdown-manager.js +0 -14
  199. package/dist/bootstrap/startup-sequence.d.ts +0 -5
  200. package/dist/bootstrap/startup-sequence.js +0 -10
  201. package/dist/domain/auth/auth-profile.d.ts +0 -14
  202. package/dist/domain/auth/auth-profile.js +0 -39
  203. package/dist/domain/config/config-schema.d.ts +0 -17
  204. package/dist/domain/config/config-schema.js +0 -105
  205. package/dist/domain/errors/cli-command-hint.d.ts +0 -5
  206. package/dist/domain/errors/cli-command-hint.js +0 -1
  207. package/dist/domain/errors/cli-error.d.ts +0 -35
  208. package/dist/domain/errors/cli-error.js +0 -129
  209. package/dist/domain/errors/error-codes.d.ts +0 -46
  210. package/dist/domain/errors/error-codes.js +0 -45
  211. package/dist/domain/extensions/extension-scope.d.ts +0 -3
  212. package/dist/domain/extensions/extension-scope.js +0 -23
  213. package/dist/domain/extensions/extension-state.d.ts +0 -5
  214. package/dist/domain/extensions/extension-state.js +0 -11
  215. package/dist/domain/extensions/hook-manifest.d.ts +0 -10
  216. package/dist/domain/extensions/hook-manifest.js +0 -23
  217. package/dist/domain/extensions/mcp-config.d.ts +0 -18
  218. package/dist/domain/extensions/mcp-config.js +0 -111
  219. package/dist/domain/extensions/plugin-manifest.d.ts +0 -11
  220. package/dist/domain/extensions/plugin-manifest.js +0 -43
  221. package/dist/domain/extensions/skill-manifest.d.ts +0 -10
  222. package/dist/domain/extensions/skill-manifest.js +0 -51
  223. package/dist/domain/filesystem/file-change-diff.d.ts +0 -21
  224. package/dist/domain/filesystem/file-change-diff.js +0 -60
  225. package/dist/domain/media/gateway-media-contract.d.ts +0 -23
  226. package/dist/domain/media/gateway-media-contract.js +0 -163
  227. package/dist/domain/media/media-contract.d.ts +0 -28
  228. package/dist/domain/media/media-contract.js +0 -1
  229. package/dist/domain/media/media-execution-policy.d.ts +0 -9
  230. package/dist/domain/media/media-execution-policy.js +0 -31
  231. package/dist/domain/orchestration/goal.d.ts +0 -58
  232. package/dist/domain/orchestration/goal.js +0 -113
  233. package/dist/domain/orchestration/subagent-identity.d.ts +0 -2
  234. package/dist/domain/orchestration/subagent-identity.js +0 -8
  235. package/dist/domain/orchestration/subagent.d.ts +0 -33
  236. package/dist/domain/orchestration/subagent.js +0 -1
  237. package/dist/domain/orchestration/task.d.ts +0 -31
  238. package/dist/domain/orchestration/task.js +0 -1
  239. package/dist/domain/project/project-identity.d.ts +0 -6
  240. package/dist/domain/project/project-identity.js +0 -4
  241. package/dist/domain/runtime/assistant-delta-normalizer.d.ts +0 -11
  242. package/dist/domain/runtime/assistant-delta-normalizer.js +0 -19
  243. package/dist/domain/runtime/resource-limits.d.ts +0 -60
  244. package/dist/domain/runtime/resource-limits.js +0 -60
  245. package/dist/domain/session/attachment.d.ts +0 -13
  246. package/dist/domain/session/attachment.js +0 -1
  247. package/dist/domain/session/session-schema.d.ts +0 -6
  248. package/dist/domain/session/session-schema.js +0 -28
  249. package/dist/domain/session/session.d.ts +0 -27
  250. package/dist/domain/session/session.js +0 -1
  251. package/dist/domain/settings/settings-document.d.ts +0 -8
  252. package/dist/domain/settings/settings-document.js +0 -36
  253. package/dist/domain/validation/record-schema.d.ts +0 -4
  254. package/dist/domain/validation/record-schema.js +0 -9
  255. package/dist/domain/workspace/workspace-settings.d.ts +0 -12
  256. package/dist/domain/workspace/workspace-settings.js +0 -44
  257. package/dist/infrastructure/agent-sdk/agent-instance-factory.d.ts +0 -22
  258. package/dist/infrastructure/agent-sdk/agent-instance-factory.js +0 -31
  259. package/dist/infrastructure/agent-sdk/tool-calling-model-client.d.ts +0 -11
  260. package/dist/infrastructure/agent-sdk/tool-calling-model-client.js +0 -447
  261. package/dist/infrastructure/cache/cache-policy.d.ts +0 -7
  262. package/dist/infrastructure/cache/cache-policy.js +0 -18
  263. package/dist/infrastructure/cache/file-cache-store.d.ts +0 -17
  264. package/dist/infrastructure/cache/file-cache-store.js +0 -121
  265. package/dist/infrastructure/clipboard/clipboard-adapter-factory.d.ts +0 -11
  266. package/dist/infrastructure/clipboard/clipboard-adapter-factory.js +0 -98
  267. package/dist/infrastructure/clipboard/clipboard-policy.d.ts +0 -8
  268. package/dist/infrastructure/clipboard/clipboard-policy.js +0 -19
  269. package/dist/infrastructure/clipboard/clipboard-text-adapter-factory.d.ts +0 -10
  270. package/dist/infrastructure/clipboard/clipboard-text-adapter-factory.js +0 -94
  271. package/dist/infrastructure/clipboard/image-normalizer.d.ts +0 -12
  272. package/dist/infrastructure/clipboard/image-normalizer.js +0 -78
  273. package/dist/infrastructure/clipboard/windows-clipboard-adapter.d.ts +0 -7
  274. package/dist/infrastructure/clipboard/windows-clipboard-adapter.js +0 -66
  275. package/dist/infrastructure/clipboard/windows-clipboard-text-adapter.d.ts +0 -7
  276. package/dist/infrastructure/clipboard/windows-clipboard-text-adapter.js +0 -70
  277. package/dist/infrastructure/config/config-loader.d.ts +0 -19
  278. package/dist/infrastructure/config/config-loader.js +0 -76
  279. package/dist/infrastructure/config/environment-values.d.ts +0 -2
  280. package/dist/infrastructure/config/environment-values.js +0 -7
  281. package/dist/infrastructure/credentials/composite-credential-store.d.ts +0 -11
  282. package/dist/infrastructure/credentials/composite-credential-store.js +0 -32
  283. package/dist/infrastructure/credentials/encrypted-file-credential-store.d.ts +0 -17
  284. package/dist/infrastructure/credentials/encrypted-file-credential-store.js +0 -181
  285. package/dist/infrastructure/credentials/environment-credential-store.d.ts +0 -11
  286. package/dist/infrastructure/credentials/environment-credential-store.js +0 -37
  287. package/dist/infrastructure/credentials/secret-input.d.ts +0 -7
  288. package/dist/infrastructure/credentials/secret-input.js +0 -44
  289. package/dist/infrastructure/extensions/composite-mcp-config-store.d.ts +0 -9
  290. package/dist/infrastructure/extensions/composite-mcp-config-store.js +0 -10
  291. package/dist/infrastructure/extensions/extension-directory-reader.d.ts +0 -2
  292. package/dist/infrastructure/extensions/extension-directory-reader.js +0 -15
  293. package/dist/infrastructure/extensions/extension-source-resolver.d.ts +0 -6
  294. package/dist/infrastructure/extensions/extension-source-resolver.js +0 -126
  295. package/dist/infrastructure/extensions/file-mcp-config-store.d.ts +0 -15
  296. package/dist/infrastructure/extensions/file-mcp-config-store.js +0 -66
  297. package/dist/infrastructure/extensions/hook-runtime.d.ts +0 -18
  298. package/dist/infrastructure/extensions/hook-runtime.js +0 -66
  299. package/dist/infrastructure/extensions/mcp-runtime.d.ts +0 -12
  300. package/dist/infrastructure/extensions/mcp-runtime.js +0 -52
  301. package/dist/infrastructure/extensions/plugin-discovery.d.ts +0 -5
  302. package/dist/infrastructure/extensions/plugin-discovery.js +0 -52
  303. package/dist/infrastructure/extensions/plugin-manager.d.ts +0 -26
  304. package/dist/infrastructure/extensions/plugin-manager.js +0 -139
  305. package/dist/infrastructure/extensions/skill-discovery.d.ts +0 -4
  306. package/dist/infrastructure/extensions/skill-discovery.js +0 -29
  307. package/dist/infrastructure/extensions/skill-installer.d.ts +0 -8
  308. package/dist/infrastructure/extensions/skill-installer.js +0 -88
  309. package/dist/infrastructure/extensions/skill-manager.d.ts +0 -22
  310. package/dist/infrastructure/extensions/skill-manager.js +0 -67
  311. package/dist/infrastructure/extensions/skill-roots.d.ts +0 -19
  312. package/dist/infrastructure/extensions/skill-roots.js +0 -25
  313. package/dist/infrastructure/extensions/skill-tool-executor.d.ts +0 -18
  314. package/dist/infrastructure/extensions/skill-tool-executor.js +0 -53
  315. package/dist/infrastructure/filesystem/atomic-file-store.d.ts +0 -12
  316. package/dist/infrastructure/filesystem/atomic-file-store.js +0 -106
  317. package/dist/infrastructure/filesystem/bounded-file-reader.d.ts +0 -6
  318. package/dist/infrastructure/filesystem/bounded-file-reader.js +0 -24
  319. package/dist/infrastructure/filesystem/bounded-json-reader.d.ts +0 -1
  320. package/dist/infrastructure/filesystem/bounded-json-reader.js +0 -7
  321. package/dist/infrastructure/filesystem/fs-errors.d.ts +0 -2
  322. package/dist/infrastructure/filesystem/fs-errors.js +0 -6
  323. package/dist/infrastructure/filesystem/gateway-media-input-reader.d.ts +0 -12
  324. package/dist/infrastructure/filesystem/gateway-media-input-reader.js +0 -49
  325. package/dist/infrastructure/filesystem/local-filesystem-tool-executor.d.ts +0 -21
  326. package/dist/infrastructure/filesystem/local-filesystem-tool-executor.js +0 -176
  327. package/dist/infrastructure/filesystem/path-resolver.d.ts +0 -20
  328. package/dist/infrastructure/filesystem/path-resolver.js +0 -119
  329. package/dist/infrastructure/filesystem/workspace-media-artifact-store.d.ts +0 -13
  330. package/dist/infrastructure/filesystem/workspace-media-artifact-store.js +0 -152
  331. package/dist/infrastructure/logging/daily-rotating-file-writer.d.ts +0 -20
  332. package/dist/infrastructure/logging/daily-rotating-file-writer.js +0 -75
  333. package/dist/infrastructure/logging/log-redactor.d.ts +0 -2
  334. package/dist/infrastructure/logging/log-redactor.js +0 -26
  335. package/dist/infrastructure/logging/logging-policy.d.ts +0 -6
  336. package/dist/infrastructure/logging/logging-policy.js +0 -6
  337. package/dist/infrastructure/logging/structured-logger.d.ts +0 -24
  338. package/dist/infrastructure/logging/structured-logger.js +0 -40
  339. package/dist/infrastructure/network/safe-media-downloader.d.ts +0 -23
  340. package/dist/infrastructure/network/safe-media-downloader.js +0 -239
  341. package/dist/infrastructure/platform/host-platform.d.ts +0 -14
  342. package/dist/infrastructure/platform/host-platform.js +0 -23
  343. package/dist/infrastructure/platform/host-process.d.ts +0 -17
  344. package/dist/infrastructure/platform/host-process.js +0 -116
  345. package/dist/infrastructure/platform/platform-paths.d.ts +0 -25
  346. package/dist/infrastructure/platform/platform-paths.js +0 -33
  347. package/dist/infrastructure/project/file-project-trust-store.d.ts +0 -12
  348. package/dist/infrastructure/project/file-project-trust-store.js +0 -59
  349. package/dist/infrastructure/sdk/chat-completion-adapter.d.ts +0 -8
  350. package/dist/infrastructure/sdk/chat-completion-adapter.js +0 -115
  351. package/dist/infrastructure/sdk/lotagate-client-factory.d.ts +0 -3
  352. package/dist/infrastructure/sdk/lotagate-client-factory.js +0 -8
  353. package/dist/infrastructure/sdk/model-catalog-adapter.d.ts +0 -19
  354. package/dist/infrastructure/sdk/model-catalog-adapter.js +0 -28
  355. package/dist/infrastructure/sdk/sdk-media-gateway-client.d.ts +0 -20
  356. package/dist/infrastructure/sdk/sdk-media-gateway-client.js +0 -97
  357. package/dist/infrastructure/sessions/file-goal-store.d.ts +0 -21
  358. package/dist/infrastructure/sessions/file-goal-store.js +0 -160
  359. package/dist/infrastructure/sessions/file-session-store.d.ts +0 -48
  360. package/dist/infrastructure/sessions/file-session-store.js +0 -525
  361. package/dist/infrastructure/sessions/project-session-paths.d.ts +0 -17
  362. package/dist/infrastructure/sessions/project-session-paths.js +0 -41
  363. package/dist/infrastructure/sessions/session-index.d.ts +0 -16
  364. package/dist/infrastructure/sessions/session-index.js +0 -84
  365. package/dist/infrastructure/sessions/session-journal.d.ts +0 -22
  366. package/dist/infrastructure/sessions/session-journal.js +0 -137
  367. package/dist/infrastructure/sessions/subagent-journal-store.d.ts +0 -28
  368. package/dist/infrastructure/sessions/subagent-journal-store.js +0 -30
  369. package/dist/infrastructure/shell/shell-tool-executor.d.ts +0 -17
  370. package/dist/infrastructure/shell/shell-tool-executor.js +0 -115
  371. package/dist/infrastructure/tokens/tiktoken-token-estimator.d.ts +0 -18
  372. package/dist/infrastructure/tokens/tiktoken-token-estimator.js +0 -48
  373. package/dist/infrastructure/workspace/workspace-settings-store.d.ts +0 -9
  374. package/dist/infrastructure/workspace/workspace-settings-store.js +0 -75
  375. package/dist/main.d.ts +0 -7
  376. package/dist/main.js +0 -66
  377. package/dist/ports/cache-store.d.ts +0 -10
  378. package/dist/ports/cache-store.js +0 -1
  379. package/dist/ports/chat-model.d.ts +0 -30
  380. package/dist/ports/chat-model.js +0 -1
  381. package/dist/ports/clipboard-adapter.d.ts +0 -7
  382. package/dist/ports/clipboard-adapter.js +0 -1
  383. package/dist/ports/clipboard-text-adapter.d.ts +0 -3
  384. package/dist/ports/clipboard-text-adapter.js +0 -1
  385. package/dist/ports/credential-store.d.ts +0 -7
  386. package/dist/ports/credential-store.js +0 -1
  387. package/dist/ports/goal-store.d.ts +0 -12
  388. package/dist/ports/goal-store.js +0 -1
  389. package/dist/ports/logger.d.ts +0 -8
  390. package/dist/ports/logger.js +0 -1
  391. package/dist/ports/media-gateway-client.d.ts +0 -54
  392. package/dist/ports/media-gateway-client.js +0 -1
  393. package/dist/ports/model-diagnostics.d.ts +0 -17
  394. package/dist/ports/model-diagnostics.js +0 -1
  395. package/dist/ports/project-trust-store.d.ts +0 -12
  396. package/dist/ports/project-trust-store.js +0 -1
  397. package/dist/ports/session-store.d.ts +0 -58
  398. package/dist/ports/session-store.js +0 -1
  399. package/dist/ports/subagent-lifecycle.d.ts +0 -31
  400. package/dist/ports/subagent-lifecycle.js +0 -1
  401. package/dist/ports/tool-activity.d.ts +0 -13
  402. package/dist/ports/tool-activity.js +0 -1
  403. package/dist/presentation/themes/theme.d.ts +0 -19
  404. package/dist/presentation/themes/theme.js +0 -8
  405. package/dist/presentation/tui/agent-initialization-renderer.d.ts +0 -4
  406. package/dist/presentation/tui/agent-initialization-renderer.js +0 -37
  407. package/dist/presentation/tui/context-display.d.ts +0 -21
  408. package/dist/presentation/tui/context-display.js +0 -33
  409. package/dist/presentation/tui/formatters.d.ts +0 -6
  410. package/dist/presentation/tui/formatters.js +0 -60
  411. package/dist/presentation/tui/ink/choice-window.d.ts +0 -5
  412. package/dist/presentation/tui/ink/choice-window.js +0 -5
  413. package/dist/presentation/tui/ink/components/activity-entry.d.ts +0 -6
  414. package/dist/presentation/tui/ink/components/activity-entry.js +0 -16
  415. package/dist/presentation/tui/ink/components/activity-status.d.ts +0 -10
  416. package/dist/presentation/tui/ink/components/activity-status.js +0 -21
  417. package/dist/presentation/tui/ink/components/choice-modal.d.ts +0 -11
  418. package/dist/presentation/tui/ink/components/choice-modal.js +0 -29
  419. package/dist/presentation/tui/ink/components/composer.d.ts +0 -40
  420. package/dist/presentation/tui/ink/components/composer.js +0 -271
  421. package/dist/presentation/tui/ink/components/file-diff.d.ts +0 -6
  422. package/dist/presentation/tui/ink/components/file-diff.js +0 -34
  423. package/dist/presentation/tui/ink/components/modal.d.ts +0 -8
  424. package/dist/presentation/tui/ink/components/modal.js +0 -110
  425. package/dist/presentation/tui/ink/components/shimmer-text.d.ts +0 -6
  426. package/dist/presentation/tui/ink/components/shimmer-text.js +0 -9
  427. package/dist/presentation/tui/ink/components/subagent-activity.d.ts +0 -11
  428. package/dist/presentation/tui/ink/components/subagent-activity.js +0 -61
  429. package/dist/presentation/tui/ink/components/transcript.d.ts +0 -39
  430. package/dist/presentation/tui/ink/components/transcript.js +0 -121
  431. package/dist/presentation/tui/ink/components/welcome-panel.d.ts +0 -6
  432. package/dist/presentation/tui/ink/components/welcome-panel.js +0 -20
  433. package/dist/presentation/tui/ink/lotagate-tui.d.ts +0 -6
  434. package/dist/presentation/tui/ink/lotagate-tui.js +0 -136
  435. package/dist/presentation/tui/ink/markdown-inline-renderer.d.ts +0 -4
  436. package/dist/presentation/tui/ink/markdown-inline-renderer.js +0 -20
  437. package/dist/presentation/tui/ink/markdown-inline.d.ts +0 -13
  438. package/dist/presentation/tui/ink/markdown-inline.js +0 -91
  439. package/dist/presentation/tui/ink/markdown-message.d.ts +0 -6
  440. package/dist/presentation/tui/ink/markdown-message.js +0 -66
  441. package/dist/presentation/tui/ink/markdown-table.d.ts +0 -16
  442. package/dist/presentation/tui/ink/markdown-table.js +0 -77
  443. package/dist/presentation/tui/ink/tui-bridge.d.ts +0 -195
  444. package/dist/presentation/tui/ink/tui-bridge.js +0 -289
  445. package/dist/presentation/tui/terminal-capabilities.d.ts +0 -15
  446. package/dist/presentation/tui/terminal-capabilities.js +0 -7
  447. package/dist/presentation/tui/terminal-mouse.d.ts +0 -5
  448. package/dist/presentation/tui/terminal-mouse.js +0 -19
  449. package/dist/presentation/tui/terminal-screen.d.ts +0 -10
  450. package/dist/presentation/tui/terminal-screen.js +0 -23
  451. package/dist/presentation/tui/tui-agent-event-runner.d.ts +0 -24
  452. package/dist/presentation/tui/tui-agent-event-runner.js +0 -69
  453. package/dist/presentation/tui/tui-application-contract.d.ts +0 -10
  454. package/dist/presentation/tui/tui-application-contract.js +0 -8
  455. package/dist/presentation/tui/tui-application.d.ts +0 -62
  456. package/dist/presentation/tui/tui-application.js +0 -675
  457. package/dist/presentation/tui/tui-attachment-input.d.ts +0 -2
  458. package/dist/presentation/tui/tui-attachment-input.js +0 -5
  459. package/dist/presentation/tui/tui-clipboard-paste-handlers.d.ts +0 -11
  460. package/dist/presentation/tui/tui-clipboard-paste-handlers.js +0 -25
  461. package/dist/presentation/tui/tui-command-context.d.ts +0 -3
  462. package/dist/presentation/tui/tui-command-context.js +0 -1
  463. package/dist/presentation/tui/tui-command-executor.d.ts +0 -38
  464. package/dist/presentation/tui/tui-command-executor.js +0 -214
  465. package/dist/presentation/tui/tui-command-host-factory.d.ts +0 -40
  466. package/dist/presentation/tui/tui-command-host-factory.js +0 -23
  467. package/dist/presentation/tui/tui-context-compaction.d.ts +0 -5
  468. package/dist/presentation/tui/tui-context-compaction.js +0 -22
  469. package/dist/presentation/tui/tui-context-service.d.ts +0 -34
  470. package/dist/presentation/tui/tui-context-service.js +0 -126
  471. package/dist/presentation/tui/tui-file-suggestions.d.ts +0 -3
  472. package/dist/presentation/tui/tui-file-suggestions.js +0 -8
  473. package/dist/presentation/tui/tui-goal-controller.d.ts +0 -14
  474. package/dist/presentation/tui/tui-goal-controller.js +0 -52
  475. package/dist/presentation/tui/tui-initial-model.d.ts +0 -3
  476. package/dist/presentation/tui/tui-initial-model.js +0 -28
  477. package/dist/presentation/tui/tui-lifecycle-actions.d.ts +0 -13
  478. package/dist/presentation/tui/tui-lifecycle-actions.js +0 -45
  479. package/dist/presentation/tui/tui-manual-compaction.d.ts +0 -18
  480. package/dist/presentation/tui/tui-manual-compaction.js +0 -31
  481. package/dist/presentation/tui/tui-media-model-selection.d.ts +0 -12
  482. package/dist/presentation/tui/tui-media-model-selection.js +0 -38
  483. package/dist/presentation/tui/tui-prompt-dispatcher.d.ts +0 -16
  484. package/dist/presentation/tui/tui-prompt-dispatcher.js +0 -38
  485. package/dist/presentation/tui/tui-skill-controller.d.ts +0 -11
  486. package/dist/presentation/tui/tui-skill-controller.js +0 -13
  487. package/dist/presentation/tui/tui-tool-approval.d.ts +0 -22
  488. package/dist/presentation/tui/tui-tool-approval.js +0 -73
  489. package/dist/version.d.ts +0 -1
  490. package/dist/version.js +0 -1
@@ -1,82 +0,0 @@
1
- import { prepareCliAgent } from '../agent/cli-agent-execution-service.js';
2
- import { AgentRunTracker } from '../agent/agent-run-tracker.js';
3
- import { CliError } from '../../domain/errors/cli-error.js';
4
- import { CLI_ERROR_CODES } from '../../domain/errors/error-codes.js';
5
- import { writeStreamChunk } from '../commands/stream-output.js';
6
- import { CliTurnEventProjector } from './cli-turn-event-projector.js';
7
- import { persistCliTurnEvent } from './cli-turn-persistence.js';
8
- import { agentLimitNotice, classifyAgentLimit } from '../agent/agent-limit.js';
9
- export async function runHeadlessAgentTurn(options) {
10
- const tracker = new AgentRunTracker();
11
- const prepared = await prepareCliAgent({
12
- runtime: options.runtime, cwd: options.cwd, model: options.model, client: options.client, profile: 'headless-safe', approvalMode: 'auto',
13
- ...(options.goal === undefined ? {} : { goal: options.goal }),
14
- ...(options.agentSessionStore === undefined ? {} : { agentSessionStore: options.agentSessionStore }),
15
- onModelComplete: (summary) => { if (summary.usage !== undefined)
16
- options.onUsage?.({ usage: summary.usage, modelCalls: 1 }); },
17
- ...(options.onSubagentUsage === undefined ? {} : { onSubagentModelComplete: (summary) => { if (summary.usage !== undefined)
18
- options.onSubagentUsage?.({ usage: summary.usage, modelCalls: 1 }); } }),
19
- });
20
- const response = [];
21
- let limitReason;
22
- const projector = new CliTurnEventProjector();
23
- try {
24
- const inputContext = await prepared.buildInput(options.prompt);
25
- if (options.agentSessionStore !== undefined && options.sessionId !== undefined) {
26
- const history = await options.runtime.sessionStore.readHistory(options.sessionId);
27
- options.agentSessionStore.hydrate(options.sessionId, prepared.system, history.transcript, history.events, inputContext.input);
28
- }
29
- for await (const event of prepared.run({ input: inputContext.input, model: options.model, ...(options.signal === undefined ? {} : { signal: options.signal }), ...(options.sessionId === undefined ? {} : { sessionId: options.sessionId }) })) {
30
- tracker.observe(event);
31
- for (const projected of projector.observe(event)) {
32
- if (options.sessionId !== undefined) {
33
- try {
34
- await persistCliTurnEvent(options.runtime.sessionStore, options.sessionId, projected, { ...(options.turnId === undefined ? {} : { turnId: options.turnId }) });
35
- }
36
- catch (error) {
37
- options.runtime.logger.warn('Unable to persist agent lifecycle event.', { eventType: projected.type, reason: error instanceof Error ? error.message : String(error) });
38
- }
39
- }
40
- if (projected.type === 'assistant.delta')
41
- response.push(projected.content);
42
- }
43
- if (options.output !== undefined && options.json)
44
- await writeStreamChunk(options.output, `${JSON.stringify(event)}\n`);
45
- else if (options.output !== undefined && event.type === 'model.delta')
46
- await writeStreamChunk(options.output, event.content);
47
- else if (options.output !== undefined && event.type === 'session.completed' && response.length === 0) {
48
- response.push(event.content);
49
- await writeStreamChunk(options.output, event.content);
50
- }
51
- if (event.type === 'session.failed') {
52
- limitReason = classifyAgentLimit(event.error);
53
- if (limitReason === undefined)
54
- throw event.error;
55
- break;
56
- }
57
- }
58
- if (limitReason !== undefined) {
59
- const notice = agentLimitNotice(limitReason);
60
- response.push(response.length === 0 ? notice : `\n\n${notice}`);
61
- if (options.output !== undefined && !options.json)
62
- await writeStreamChunk(options.output, response.at(-1));
63
- if (options.sessionId !== undefined)
64
- options.agentSessionStore?.delete(options.sessionId);
65
- }
66
- if (response.join('').trim().length === 0) {
67
- const snapshot = tracker.snapshot();
68
- const code = snapshot.toolCalls > 0 ? CLI_ERROR_CODES.MODEL_EMPTY_FINAL : CLI_ERROR_CODES.MODEL_PROTOCOL_EMPTY_RESPONSE;
69
- throw new CliError(code, 'Agent completed without a final text response.', { category: 'model', userMessage: 'The model completed without a final text response.', retryable: true });
70
- }
71
- return response.join('');
72
- }
73
- finally {
74
- options.onSnapshot?.(tracker.snapshot());
75
- try {
76
- await prepared.close();
77
- }
78
- catch (error) {
79
- options.runtime.logger.warn('Agent cleanup failed after a completed turn.', { reason: error instanceof Error ? error.message : String(error) });
80
- }
81
- }
82
- }
@@ -1,7 +0,0 @@
1
- import type { ExecutionPlan } from '../../domain/orchestration/task.js';
2
- import { TaskAssessmentService } from './task-assessment.js';
3
- export declare class PlanGenerator {
4
- private readonly assessment;
5
- constructor(assessment?: TaskAssessmentService);
6
- generate(goal: string, requiresApproval?: boolean): ExecutionPlan;
7
- }
@@ -1,34 +0,0 @@
1
- import crypto from 'node:crypto';
2
- import { TaskAssessmentService } from './task-assessment.js';
3
- export class PlanGenerator {
4
- assessment;
5
- constructor(assessment = new TaskAssessmentService()) {
6
- this.assessment = assessment;
7
- }
8
- generate(goal, requiresApproval = true) {
9
- const assessment = this.assessment.assess(goal);
10
- const tasks = assessment.requiresPlan ? createTaskPlan(goal, assessment) : [task('execute', assessment.complexity === 'moderate' ? 'Execute the requested work' : 'Answer the request', goal)];
11
- return { id: crypto.randomUUID(), goal, tasks, requiresApproval: requiresApproval && assessment.requiresPlan, maxConcurrency: assessment.complexity === 'complex' ? 2 : 1 };
12
- }
13
- }
14
- function createTaskPlan(goal, assessment) {
15
- const intents = new Set(assessment.intents);
16
- const tasks = [];
17
- if (intents.has('change')) {
18
- tasks.push(task('inspect', 'Inspect the relevant context', 'Inspect only the files, contracts, and constraints needed for this change.'));
19
- tasks.push(task('implement', 'Apply the requested change', goal, ['inspect']));
20
- if (intents.has('verify') || intents.has('change'))
21
- tasks.push(task('verify', 'Verify the change', 'Run the focused checks required for the requested change.', ['implement']));
22
- return tasks;
23
- }
24
- if (intents.has('inspect'))
25
- tasks.push(task('inspect', 'Inspect the requested context', 'Read or list only the requested files and folders.', []));
26
- if (intents.has('verify'))
27
- tasks.push(task('verify', 'Run the requested checks', goal, tasks.length === 0 ? [] : [tasks[tasks.length - 1].id]));
28
- if (intents.has('answer'))
29
- tasks.push(task('answer', 'Summarize the result', 'Answer from the inspected evidence without making changes.', tasks.length === 0 ? [] : [tasks[tasks.length - 1].id]));
30
- return tasks.length === 0 ? [task('answer', 'Answer the request', goal)] : tasks;
31
- }
32
- function task(id, title, description, dependencies = []) {
33
- return { id, title, description, dependencies, status: 'queued' };
34
- }
@@ -1,33 +0,0 @@
1
- import type { AgentTask, ExecutionPlan, SchedulerLimits } from '../../domain/orchestration/task.js';
2
- import type { SubagentLimitReason } from '../../domain/orchestration/subagent.js';
3
- import { TaskScheduler } from './task-scheduler.js';
4
- export interface SubagentOutput {
5
- content: string;
6
- tokens?: number;
7
- tokensEstimated?: boolean;
8
- toolsUsed?: readonly string[];
9
- limitReason?: SubagentLimitReason;
10
- }
11
- export interface SubagentInstance {
12
- run(task: AgentTask, signal: AbortSignal): Promise<SubagentOutput>;
13
- close?(): Promise<void>;
14
- }
15
- export interface SubagentFactory {
16
- create(task: AgentTask): Promise<SubagentInstance>;
17
- }
18
- export interface SubagentRunResult {
19
- task: AgentTask;
20
- output: SubagentOutput;
21
- }
22
- export interface SubagentCoordinatorOptions {
23
- approvePlan?: (plan: ExecutionPlan) => boolean | Promise<boolean>;
24
- onTaskEvent?: (event: {
25
- type: 'started' | 'completed' | 'failed';
26
- task: AgentTask;
27
- }) => void | Promise<void>;
28
- }
29
- export declare class SubagentCoordinator {
30
- private readonly scheduler;
31
- constructor(scheduler?: TaskScheduler);
32
- run(plan: ExecutionPlan, factory: SubagentFactory, limits: SchedulerLimits, signal?: AbortSignal, options?: SubagentCoordinatorOptions): Promise<readonly SubagentRunResult[]>;
33
- }
@@ -1,28 +0,0 @@
1
- import { CliError } from '../../domain/errors/cli-error.js';
2
- import { CLI_ERROR_CODES } from '../../domain/errors/error-codes.js';
3
- import { TaskGraph } from './task-graph.js';
4
- import { TaskScheduler } from './task-scheduler.js';
5
- export class SubagentCoordinator {
6
- scheduler;
7
- constructor(scheduler = new TaskScheduler()) {
8
- this.scheduler = scheduler;
9
- }
10
- async run(plan, factory, limits, signal, options = {}) {
11
- if (plan.requiresApproval && !(await options.approvePlan?.(plan))) {
12
- throw new CliError(CLI_ERROR_CODES.TASK_PLAN_APPROVAL_REQUIRED, 'Plan approval was not granted.', { category: 'orchestration', userMessage: 'Plan approval is required before execution.' });
13
- }
14
- const graph = new TaskGraph(plan.tasks);
15
- const instances = new Map();
16
- try {
17
- const results = await this.scheduler.run(graph, async (task, taskSignal) => {
18
- const instance = await factory.create(task);
19
- instances.set(task.id, instance);
20
- return instance.run(task, taskSignal);
21
- }, { ...limits, maxConcurrency: Math.min(limits.maxConcurrency, plan.maxConcurrency) }, { ...(signal === undefined ? {} : { signal }), estimateTokens: (output) => output.tokens ?? 0, ...(options.onTaskEvent === undefined ? {} : { onTaskEvent: options.onTaskEvent }) });
22
- return results.map(({ task, value: output }) => ({ task, output }));
23
- }
24
- finally {
25
- await Promise.allSettled([...instances.values()].map((instance) => instance.close?.()));
26
- }
27
- }
28
- }
@@ -1,2 +0,0 @@
1
- import type { SubagentHandoff } from '../../domain/orchestration/subagent.js';
2
- export declare function parseSubagentHandoff(output: string): SubagentHandoff;
@@ -1,68 +0,0 @@
1
- import { RESOURCE_LIMITS } from '../../domain/runtime/resource-limits.js';
2
- const MAX_HANDOFF_ITEMS = 32;
3
- const MAX_ITEM_BYTES = 1_024;
4
- export function parseSubagentHandoff(output) {
5
- const bounded = boundText(output, RESOURCE_LIMITS.subagentSummaryBytes);
6
- const parsed = parseJsonObject(bounded);
7
- if (parsed === undefined) {
8
- return {
9
- summary: bounded || 'The subagent completed without a text summary.',
10
- filesInspected: [],
11
- filesChanged: [],
12
- commandsRun: [],
13
- verification: [],
14
- warnings: ['The child returned an unstructured summary; verify the result directly.'],
15
- };
16
- }
17
- return {
18
- summary: boundedString(parsed['summary']) ?? 'The subagent completed without a text summary.',
19
- filesInspected: boundedList(parsed['filesInspected']),
20
- filesChanged: boundedList(parsed['filesChanged']),
21
- commandsRun: boundedList(parsed['commandsRun']),
22
- verification: boundedList(parsed['verification']),
23
- warnings: boundedList(parsed['warnings']),
24
- };
25
- }
26
- function parseJsonObject(value) {
27
- const candidates = [value.trim(), extractJsonBlock(value)];
28
- for (const candidate of candidates) {
29
- if (candidate === undefined || candidate.length === 0)
30
- continue;
31
- try {
32
- const parsed = JSON.parse(candidate);
33
- if (parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed))
34
- return parsed;
35
- }
36
- catch { /* The child may have returned normal prose; the caller receives a warning. */ }
37
- }
38
- return undefined;
39
- }
40
- function extractJsonBlock(value) {
41
- const start = value.indexOf('{');
42
- const end = value.lastIndexOf('}');
43
- return start >= 0 && end > start ? value.slice(start, end + 1) : undefined;
44
- }
45
- function boundedList(value) {
46
- if (!Array.isArray(value))
47
- return [];
48
- return value
49
- .filter((item) => typeof item === 'string')
50
- .map((item) => boundedString(item))
51
- .filter((item) => item !== undefined)
52
- .slice(0, MAX_HANDOFF_ITEMS);
53
- }
54
- function boundedString(value) {
55
- if (typeof value !== 'string')
56
- return undefined;
57
- const trimmed = value.trim();
58
- if (trimmed.length === 0)
59
- return undefined;
60
- return Buffer.byteLength(trimmed, 'utf8') <= MAX_ITEM_BYTES
61
- ? trimmed
62
- : `${Buffer.from(trimmed, 'utf8').subarray(0, MAX_ITEM_BYTES - 3).toString('utf8')}...`;
63
- }
64
- function boundText(value, maxBytes) {
65
- const trimmed = value.trim();
66
- const bytes = Buffer.from(trimmed, 'utf8');
67
- return bytes.byteLength <= maxBytes ? trimmed : `${bytes.subarray(0, maxBytes - 16).toString('utf8')}\n[truncated]`;
68
- }
@@ -1,12 +0,0 @@
1
- import type { ToolDefinition } from '@lotagate/sdk';
2
- import type { ToolExecutionContext, ToolExecutor, ToolInfo, ToolResult } from '@lotagate/agent-sdk';
3
- import type { CliSubagentService } from './cli-subagent-service.js';
4
- /** Exposes the same orchestration capability definitions to runtime and context accounting. */
5
- export declare function subagentToolDefinitions(): readonly ToolDefinition[];
6
- export declare class SubagentToolExecutor implements ToolExecutor {
7
- private readonly service;
8
- constructor(service: CliSubagentService);
9
- listTools(): readonly ToolDefinition[];
10
- getToolInfo(toolName: string): ToolInfo | undefined;
11
- execute(toolName: string, input: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolResult>;
12
- }
@@ -1,93 +0,0 @@
1
- const TOOLS = [
2
- {
3
- type: 'function',
4
- function: {
5
- name: 'agent.spawn',
6
- description: 'Delegate one bounded side task. Research mode is read-only by default; worker mode requires an explicitly requested independent implementation task. Use background true for bounded parallel work and agent.wait for its result.',
7
- parameters: {
8
- type: 'object',
9
- properties: {
10
- task: { type: 'string', description: 'A single, specific task for the child agent.' },
11
- context: { type: 'string', description: 'Optional bounded parent-provided evidence needed to complete the task. Do not include secrets.' },
12
- model: { type: 'string', description: 'Optional model id from the allowlist; omit to inherit the parent model.' },
13
- mode: { type: 'string', enum: ['research', 'worker'], description: 'research (default) or worker for an explicitly requested implementation task.' },
14
- background: { type: 'boolean', description: 'Run without blocking the current turn. Call agent.wait with the returned id when needed.' },
15
- writeScope: { type: 'array', items: { type: 'string' }, description: 'Required for worker mode: workspace-relative files or directories the child may write.' },
16
- },
17
- required: ['task'],
18
- additionalProperties: false,
19
- },
20
- },
21
- },
22
- idTool('agent.wait', 'Wait for a background subagent owned by this session and return its structured handoff.'),
23
- idTool('agent.cancel', 'Cancel a running background subagent owned by this session.'),
24
- ];
25
- /** Exposes the same orchestration capability definitions to runtime and context accounting. */
26
- export function subagentToolDefinitions() { return TOOLS; }
27
- export class SubagentToolExecutor {
28
- service;
29
- constructor(service) {
30
- this.service = service;
31
- }
32
- listTools() { return subagentToolDefinitions(); }
33
- getToolInfo(toolName) {
34
- if (!TOOLS.some((tool) => getToolName(tool) === toolName))
35
- return undefined;
36
- return { toolName, source: 'custom', executorId: 'cli-subagent', metadata: { category: 'orchestration' } };
37
- }
38
- async execute(toolName, input, context) {
39
- try {
40
- const result = toolName === 'agent.spawn'
41
- ? await this.service.spawn(parseSpawnRequest(input), context)
42
- : toolName === 'agent.wait'
43
- ? await this.service.wait(requireId(input), context)
44
- : toolName === 'agent.cancel'
45
- ? await this.service.cancel(requireId(input), context)
46
- : undefined;
47
- if (result === undefined)
48
- return { content: `Unknown orchestration tool: ${toolName}`, isError: true };
49
- return { content: JSON.stringify(result), isError: result.status === 'failed' || result.status === 'cancelled' };
50
- }
51
- catch (error) {
52
- return { content: error instanceof Error ? error.message : String(error), isError: true };
53
- }
54
- }
55
- }
56
- function parseSpawnRequest(input) {
57
- if (typeof input['task'] !== 'string')
58
- throw new Error('agent.spawn requires a task string.');
59
- const mode = input['mode'];
60
- if (mode !== undefined && mode !== 'research' && mode !== 'worker')
61
- throw new Error('agent.spawn mode must be research or worker.');
62
- const context = input['context'];
63
- if (context !== undefined && typeof context !== 'string')
64
- throw new Error('agent.spawn context must be a string.');
65
- const model = input['model'];
66
- if (model !== undefined && typeof model !== 'string')
67
- throw new Error('agent.spawn model must be a string.');
68
- const background = input['background'];
69
- if (background !== undefined && typeof background !== 'boolean')
70
- throw new Error('agent.spawn background must be a boolean.');
71
- const writeScope = input['writeScope'];
72
- if (writeScope !== undefined && (!Array.isArray(writeScope) || writeScope.some((item) => typeof item !== 'string')))
73
- throw new Error('agent.spawn writeScope must be an array of strings.');
74
- return {
75
- task: input['task'],
76
- ...(context === undefined ? {} : { context }),
77
- ...(model === undefined ? {} : { model }),
78
- ...(mode === undefined ? {} : { mode }),
79
- ...(background === undefined ? {} : { background }),
80
- ...(writeScope === undefined ? {} : { writeScope }),
81
- };
82
- }
83
- function requireId(input) {
84
- if (typeof input['id'] !== 'string' || input['id'].trim().length === 0)
85
- throw new Error('The subagent id is required.');
86
- return input['id'].trim();
87
- }
88
- function idTool(name, description) {
89
- return { type: 'function', function: { name, description, parameters: { type: 'object', properties: { id: { type: 'string', description: 'Subagent id returned by agent.spawn.' } }, required: ['id'], additionalProperties: false } } };
90
- }
91
- function getToolName(definition) {
92
- return 'function' in definition ? definition.function.name : undefined;
93
- }
@@ -1,4 +0,0 @@
1
- import type { TaskAssessment } from '../../domain/orchestration/task.js';
2
- export declare class TaskAssessmentService {
3
- assess(prompt: string): TaskAssessment;
4
- }
@@ -1,35 +0,0 @@
1
- export class TaskAssessmentService {
2
- assess(prompt) {
3
- const normalized = prompt.trim();
4
- const reasons = [];
5
- let score = 0;
6
- if (normalized.length > 240) {
7
- score += 1;
8
- reasons.push('long prompt');
9
- }
10
- if (/(and then|sau đó|then|multiple|nhiều|từng bước|plan|kế hoạch|refactor|implement|triển khai)/iu.test(normalized)) {
11
- score += 2;
12
- reasons.push('multiple steps or implementation work');
13
- }
14
- if (/@[\w./-]+|\b(files?|folders?|repo|repository|codebase|tests?)\b/iu.test(normalized)) {
15
- score += 1;
16
- reasons.push('workspace or multiple resource references');
17
- }
18
- const intents = classifyIntents(normalized);
19
- const complexity = score >= 3 ? 'complex' : score >= 1 ? 'moderate' : 'simple';
20
- const requiresPlan = complexity === 'complex' || intents.length > 1;
21
- return { complexity, requiresPlan, estimatedTasks: requiresPlan ? Math.max(2, intents.length) : 1, reasons, intents };
22
- }
23
- }
24
- function classifyIntents(prompt) {
25
- const intents = [];
26
- if (/\b(fix|change|edit|update|implement|add|remove|create|refactor|modify|write|sửa|thêm|xóa|tạo|cập nhật|triển khai)\b/iu.test(prompt))
27
- intents.push('change');
28
- if (/\b(inspect|check|read|list|review|audit|analy[sz]e|examine|kiểm tra|đọc|liệt kê|xem|rà soát|phân tích)\b|@[\w./-]+/iu.test(prompt))
29
- intents.push('inspect');
30
- if (/\b(tests?|verify|validate|lint|typecheck|build|kiểm thử|xác minh|kiểm chứng)\b/iu.test(prompt))
31
- intents.push('verify');
32
- if (intents.length === 0 || (intents.includes('inspect') && !intents.includes('change') && !intents.includes('verify')))
33
- intents.push('answer');
34
- return intents;
35
- }
@@ -1,13 +0,0 @@
1
- import type { AgentTask, TaskStatus } from '../../domain/orchestration/task.js';
2
- export declare class TaskGraph {
3
- private readonly tasks;
4
- constructor(tasks: readonly AgentTask[]);
5
- list(): readonly AgentTask[];
6
- get(taskId: string): AgentTask | undefined;
7
- setStatus(taskId: string, status: TaskStatus): AgentTask;
8
- ready(): readonly AgentTask[];
9
- hasPending(): boolean;
10
- private validateDependencies;
11
- private assertAcyclic;
12
- private require;
13
- }
@@ -1,56 +0,0 @@
1
- import { CliError } from '../../domain/errors/cli-error.js';
2
- import { CLI_ERROR_CODES } from '../../domain/errors/error-codes.js';
3
- export class TaskGraph {
4
- tasks = new Map();
5
- constructor(tasks) {
6
- for (const task of tasks) {
7
- if (this.tasks.has(task.id))
8
- throw new CliError(CLI_ERROR_CODES.TASK_DEPENDENCY_CYCLE, `Duplicate task id: ${task.id}`, { category: 'orchestration', userMessage: 'The plan contains a duplicate task id.' });
9
- this.tasks.set(task.id, { ...task, dependencies: [...task.dependencies] });
10
- }
11
- this.validateDependencies();
12
- this.assertAcyclic();
13
- }
14
- list() { return [...this.tasks.values()]; }
15
- get(taskId) { return this.tasks.get(taskId); }
16
- setStatus(taskId, status) {
17
- const task = this.require(taskId);
18
- const updated = { ...task, status };
19
- this.tasks.set(taskId, updated);
20
- return updated;
21
- }
22
- ready() {
23
- return this.list().filter((task) => task.status === 'queued' && task.dependencies.every((dependency) => this.tasks.get(dependency)?.status === 'completed'));
24
- }
25
- hasPending() { return this.list().some((task) => task.status === 'queued' || task.status === 'running'); }
26
- validateDependencies() {
27
- for (const task of this.tasks.values())
28
- for (const dependency of task.dependencies)
29
- if (!this.tasks.has(dependency)) {
30
- throw new CliError(CLI_ERROR_CODES.TASK_DEPENDENCY_CYCLE, `Missing task dependency: ${dependency}`, { category: 'orchestration', userMessage: `The plan references a missing dependency: ${dependency}.` });
31
- }
32
- }
33
- assertAcyclic() {
34
- const visiting = new Set();
35
- const visited = new Set();
36
- const visit = (taskId) => {
37
- if (visiting.has(taskId))
38
- throw new CliError(CLI_ERROR_CODES.TASK_DEPENDENCY_CYCLE, 'Task dependency cycle detected.', { category: 'orchestration', userMessage: 'The plan contains a task dependency cycle.' });
39
- if (visited.has(taskId))
40
- return;
41
- visiting.add(taskId);
42
- for (const dependency of this.require(taskId).dependencies)
43
- visit(dependency);
44
- visiting.delete(taskId);
45
- visited.add(taskId);
46
- };
47
- for (const taskId of this.tasks.keys())
48
- visit(taskId);
49
- }
50
- require(taskId) {
51
- const task = this.tasks.get(taskId);
52
- if (task === undefined)
53
- throw new CliError(CLI_ERROR_CODES.TASK_SCHEDULER_OVERLOADED, `Task not found: ${taskId}`, { category: 'orchestration', userMessage: `Task not found: ${taskId}.` });
54
- return task;
55
- }
56
- }
@@ -1,18 +0,0 @@
1
- import type { AgentTask, SchedulerLimits } from '../../domain/orchestration/task.js';
2
- import type { TaskGraph } from './task-graph.js';
3
- export interface TaskExecutionResult<T> {
4
- task: AgentTask;
5
- value: T;
6
- tokens?: number;
7
- }
8
- export interface TaskSchedulerOptions<T> {
9
- signal?: AbortSignal;
10
- estimateTokens?: (value: T) => number;
11
- onTaskEvent?: (event: {
12
- type: 'started' | 'completed' | 'failed';
13
- task: AgentTask;
14
- }) => void | Promise<void>;
15
- }
16
- export declare class TaskScheduler {
17
- run<T>(graph: TaskGraph, execute: (task: AgentTask, signal: AbortSignal) => Promise<T>, limits: SchedulerLimits, options?: TaskSchedulerOptions<T>): Promise<readonly TaskExecutionResult<T>[]>;
18
- }
@@ -1,88 +0,0 @@
1
- import { CliError } from '../../domain/errors/cli-error.js';
2
- import { CLI_ERROR_CODES } from '../../domain/errors/error-codes.js';
3
- export class TaskScheduler {
4
- async run(graph, execute, limits, options = {}) {
5
- if (!Number.isInteger(limits.maxConcurrency) || limits.maxConcurrency < 1 || limits.maxConcurrency > 32 || limits.maxTasks < 1 || limits.maxDurationMs < 1) {
6
- throw new CliError(CLI_ERROR_CODES.TASK_SCHEDULER_OVERLOADED, 'Scheduler limits are invalid.', { category: 'orchestration', userMessage: 'Scheduler limits are invalid.' });
7
- }
8
- if (graph.list().length > limits.maxTasks)
9
- throw new CliError(CLI_ERROR_CODES.TASK_SCHEDULER_OVERLOADED, 'Plan exceeds the task limit.', { category: 'orchestration', userMessage: 'The plan exceeds the task limit.' });
10
- const results = [];
11
- const active = new Map();
12
- const startedAt = Date.now();
13
- const controller = new AbortController();
14
- const forwardAbort = () => controller.abort(options.signal?.reason);
15
- if (options.signal?.aborted)
16
- forwardAbort();
17
- else
18
- options.signal?.addEventListener('abort', forwardAbort, { once: true });
19
- const deadline = setTimeout(() => controller.abort(new Error('Task plan duration limit exceeded.')), limits.maxDurationMs);
20
- let usedTokens = 0;
21
- try {
22
- while (graph.hasPending()) {
23
- if (controller.signal.aborted)
24
- throw isDeadlineAbort(controller.signal)
25
- ? durationLimitError()
26
- : interrupted();
27
- if (Date.now() - startedAt > limits.maxDurationMs) {
28
- controller.abort();
29
- throw new CliError(CLI_ERROR_CODES.TASK_SCHEDULER_OVERLOADED, 'Plan exceeded its duration limit.', { category: 'orchestration', userMessage: 'The plan exceeded its maximum duration.' });
30
- }
31
- for (const task of graph.ready()) {
32
- if (active.size >= limits.maxConcurrency)
33
- break;
34
- graph.setStatus(task.id, 'running');
35
- await options.onTaskEvent?.({ type: 'started', task });
36
- const operation = execute(task, controller.signal).then(async (value) => {
37
- graph.setStatus(task.id, 'completed');
38
- const tokens = options.estimateTokens?.(value);
39
- if (tokens !== undefined)
40
- usedTokens += Math.max(0, tokens);
41
- if (limits.maxTokens !== undefined && usedTokens > limits.maxTokens)
42
- throw new CliError(CLI_ERROR_CODES.TASK_SCHEDULER_OVERLOADED, 'Plan exceeded its token budget.', { category: 'orchestration', userMessage: 'The plan exceeded its token budget.' });
43
- results.push({ task: graph.get(task.id) ?? task, value, ...(tokens === undefined ? {} : { tokens }) });
44
- await options.onTaskEvent?.({ type: 'completed', task: graph.get(task.id) ?? task });
45
- }).catch(async (error) => {
46
- graph.setStatus(task.id, 'failed');
47
- await options.onTaskEvent?.({ type: 'failed', task: graph.get(task.id) ?? task });
48
- throw error;
49
- }).finally(() => { active.delete(task.id); });
50
- active.set(task.id, operation);
51
- }
52
- if (active.size === 0) {
53
- if (graph.hasPending())
54
- throw new CliError(CLI_ERROR_CODES.TASK_SCHEDULER_OVERLOADED, 'No runnable task remains.', { category: 'orchestration', userMessage: 'No runnable task remains; check dependencies or task failures.' });
55
- break;
56
- }
57
- try {
58
- await Promise.race(active.values());
59
- }
60
- catch (error) {
61
- // Abort cooperative siblings before observing their cleanup. This avoids
62
- // unnecessary tool calls or provider usage after the plan has failed.
63
- controller.abort(error);
64
- await Promise.allSettled(active.values());
65
- if (isDeadlineAbort(controller.signal))
66
- throw durationLimitError();
67
- throw error;
68
- }
69
- }
70
- return results;
71
- }
72
- finally {
73
- controller.abort();
74
- clearTimeout(deadline);
75
- await Promise.allSettled(active.values());
76
- options.signal?.removeEventListener('abort', forwardAbort);
77
- }
78
- }
79
- }
80
- function isDeadlineAbort(signal) {
81
- return signal.reason instanceof Error && signal.reason.message === 'Task plan duration limit exceeded.';
82
- }
83
- function durationLimitError() {
84
- return new CliError(CLI_ERROR_CODES.TASK_SCHEDULER_OVERLOADED, 'Plan exceeded its duration limit.', { category: 'orchestration', userMessage: 'The plan exceeded its maximum duration.' });
85
- }
86
- function interrupted() {
87
- return new CliError(CLI_ERROR_CODES.INTERRUPTED, 'Task plan was cancelled.', { category: 'orchestration', userMessage: 'Task plan execution was cancelled.' });
88
- }
@@ -1,13 +0,0 @@
1
- import { type ProjectIdentity } from '../../domain/project/project-identity.js';
2
- import type { ProjectTrustStore, TrustedProject } from '../../ports/project-trust-store.js';
3
- export declare class ProjectTrustService {
4
- private readonly store;
5
- constructor(store: ProjectTrustStore);
6
- inspect(inputPath: string): Promise<ProjectIdentity>;
7
- isTrusted(identity: ProjectIdentity): Promise<boolean>;
8
- grant(identity: ProjectIdentity): Promise<TrustedProject>;
9
- revoke(identity: ProjectIdentity): Promise<boolean>;
10
- requireTrusted(identity: ProjectIdentity): Promise<void>;
11
- list(): Promise<readonly TrustedProject[]>;
12
- private canonicalize;
13
- }