@jungjaehoon/mama-os 0.32.0 → 0.32.2

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 (327) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +15 -13
  3. package/dist/agent/agent-loop.d.ts +10 -1
  4. package/dist/agent/agent-loop.d.ts.map +1 -1
  5. package/dist/agent/agent-loop.js +221 -103
  6. package/dist/agent/agent-loop.js.map +1 -1
  7. package/dist/agent/backend-model-policy.d.ts +9 -0
  8. package/dist/agent/backend-model-policy.d.ts.map +1 -0
  9. package/dist/agent/backend-model-policy.js +21 -0
  10. package/dist/agent/backend-model-policy.js.map +1 -0
  11. package/dist/agent/backend-model-runner-factory.d.ts +27 -0
  12. package/dist/agent/backend-model-runner-factory.d.ts.map +1 -0
  13. package/dist/agent/backend-model-runner-factory.js +85 -0
  14. package/dist/agent/backend-model-runner-factory.js.map +1 -0
  15. package/dist/agent/cline-cli-adapter.d.ts +124 -0
  16. package/dist/agent/cline-cli-adapter.d.ts.map +1 -0
  17. package/dist/agent/cline-cli-adapter.js +1040 -0
  18. package/dist/agent/cline-cli-adapter.js.map +1 -0
  19. package/dist/agent/cline-native-tool-policy.d.ts +3 -0
  20. package/dist/agent/cline-native-tool-policy.d.ts.map +1 -0
  21. package/dist/agent/cline-native-tool-policy.js +50 -0
  22. package/dist/agent/cline-native-tool-policy.js.map +1 -0
  23. package/dist/agent/code-act/constants.d.ts +1 -1
  24. package/dist/agent/code-act/constants.d.ts.map +1 -1
  25. package/dist/agent/code-act/constants.js +13 -1
  26. package/dist/agent/code-act/constants.js.map +1 -1
  27. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  28. package/dist/agent/code-act/host-bridge.js +35 -74
  29. package/dist/agent/code-act/host-bridge.js.map +1 -1
  30. package/dist/agent/codex-app-server-process.d.ts +5 -0
  31. package/dist/agent/codex-app-server-process.d.ts.map +1 -1
  32. package/dist/agent/codex-app-server-process.js +30 -0
  33. package/dist/agent/codex-app-server-process.js.map +1 -1
  34. package/dist/agent/codex-auxiliary-tools.d.ts +17 -0
  35. package/dist/agent/codex-auxiliary-tools.d.ts.map +1 -0
  36. package/dist/agent/codex-auxiliary-tools.js +267 -0
  37. package/dist/agent/codex-auxiliary-tools.js.map +1 -0
  38. package/dist/agent/codex-home.d.ts.map +1 -1
  39. package/dist/agent/codex-home.js +1 -0
  40. package/dist/agent/codex-home.js.map +1 -1
  41. package/dist/agent/gateway-tool-catalog.d.ts +14 -0
  42. package/dist/agent/gateway-tool-catalog.d.ts.map +1 -0
  43. package/dist/agent/gateway-tool-catalog.js +41 -0
  44. package/dist/agent/gateway-tool-catalog.js.map +1 -0
  45. package/dist/agent/gateway-tool-executor.d.ts +12 -1
  46. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  47. package/dist/agent/gateway-tool-executor.js +149 -15
  48. package/dist/agent/gateway-tool-executor.js.map +1 -1
  49. package/dist/agent/gateway-tools.md +5 -7
  50. package/dist/agent/managed-agent-runtime-sync.d.ts.map +1 -1
  51. package/dist/agent/managed-agent-runtime-sync.js +17 -3
  52. package/dist/agent/managed-agent-runtime-sync.js.map +1 -1
  53. package/dist/agent/managed-agent-validation.js +1 -1
  54. package/dist/agent/managed-agent-validation.js.map +1 -1
  55. package/dist/agent/model-runner.d.ts +11 -1
  56. package/dist/agent/model-runner.d.ts.map +1 -1
  57. package/dist/agent/model-runner.js +12 -1
  58. package/dist/agent/model-runner.js.map +1 -1
  59. package/dist/agent/session-pool.d.ts +10 -9
  60. package/dist/agent/session-pool.d.ts.map +1 -1
  61. package/dist/agent/session-pool.js +12 -47
  62. package/dist/agent/session-pool.js.map +1 -1
  63. package/dist/agent/tool-registry.d.ts +6 -4
  64. package/dist/agent/tool-registry.d.ts.map +1 -1
  65. package/dist/agent/tool-registry.js +62 -30
  66. package/dist/agent/tool-registry.js.map +1 -1
  67. package/dist/agent/types.d.ts +36 -4
  68. package/dist/agent/types.d.ts.map +1 -1
  69. package/dist/agent/types.js.map +1 -1
  70. package/dist/api/graph-api.d.ts.map +1 -1
  71. package/dist/api/graph-api.js +15 -5
  72. package/dist/api/graph-api.js.map +1 -1
  73. package/dist/api/index.d.ts +10 -0
  74. package/dist/api/index.d.ts.map +1 -1
  75. package/dist/api/index.js +7 -16
  76. package/dist/api/index.js.map +1 -1
  77. package/dist/cli/commands/connector.d.ts +6 -1
  78. package/dist/cli/commands/connector.d.ts.map +1 -1
  79. package/dist/cli/commands/connector.js +61 -45
  80. package/dist/cli/commands/connector.js.map +1 -1
  81. package/dist/cli/commands/init.d.ts +1 -1
  82. package/dist/cli/commands/init.d.ts.map +1 -1
  83. package/dist/cli/commands/init.js +43 -10
  84. package/dist/cli/commands/init.js.map +1 -1
  85. package/dist/cli/commands/run.d.ts.map +1 -1
  86. package/dist/cli/commands/run.js +12 -0
  87. package/dist/cli/commands/run.js.map +1 -1
  88. package/dist/cli/commands/setup.d.ts +22 -0
  89. package/dist/cli/commands/setup.d.ts.map +1 -1
  90. package/dist/cli/commands/setup.js +79 -28
  91. package/dist/cli/commands/setup.js.map +1 -1
  92. package/dist/cli/commands/start.d.ts +13 -9
  93. package/dist/cli/commands/start.d.ts.map +1 -1
  94. package/dist/cli/commands/start.js +190 -97
  95. package/dist/cli/commands/start.js.map +1 -1
  96. package/dist/cli/commands/status.d.ts.map +1 -1
  97. package/dist/cli/commands/status.js +4 -0
  98. package/dist/cli/commands/status.js.map +1 -1
  99. package/dist/cli/config/config-manager.d.ts.map +1 -1
  100. package/dist/cli/config/config-manager.js +63 -14
  101. package/dist/cli/config/config-manager.js.map +1 -1
  102. package/dist/cli/config/types.d.ts +12 -5
  103. package/dist/cli/config/types.d.ts.map +1 -1
  104. package/dist/cli/config/types.js +3 -4
  105. package/dist/cli/config/types.js.map +1 -1
  106. package/dist/cli/index.js +6 -4
  107. package/dist/cli/index.js.map +1 -1
  108. package/dist/cli/runtime/agent-loop-init.d.ts +1 -1
  109. package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
  110. package/dist/cli/runtime/agent-loop-init.js +8 -3
  111. package/dist/cli/runtime/agent-loop-init.js.map +1 -1
  112. package/dist/cli/runtime/api-routes-init.d.ts +38 -1
  113. package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
  114. package/dist/cli/runtime/api-routes-init.js +150 -30
  115. package/dist/cli/runtime/api-routes-init.js.map +1 -1
  116. package/dist/cli/runtime/api-server-init.d.ts +4 -0
  117. package/dist/cli/runtime/api-server-init.d.ts.map +1 -1
  118. package/dist/cli/runtime/api-server-init.js +3 -1
  119. package/dist/cli/runtime/api-server-init.js.map +1 -1
  120. package/dist/cli/runtime/connector-bootstrap.d.ts +8 -0
  121. package/dist/cli/runtime/connector-bootstrap.d.ts.map +1 -0
  122. package/dist/cli/runtime/connector-bootstrap.js +14 -0
  123. package/dist/cli/runtime/connector-bootstrap.js.map +1 -0
  124. package/dist/cli/runtime/connector-init.d.ts +4 -1
  125. package/dist/cli/runtime/connector-init.d.ts.map +1 -1
  126. package/dist/cli/runtime/connector-init.js +2 -8
  127. package/dist/cli/runtime/connector-init.js.map +1 -1
  128. package/dist/cli/runtime/envelope-bootstrap.d.ts +2 -1
  129. package/dist/cli/runtime/envelope-bootstrap.d.ts.map +1 -1
  130. package/dist/cli/runtime/envelope-bootstrap.js +7 -15
  131. package/dist/cli/runtime/envelope-bootstrap.js.map +1 -1
  132. package/dist/cli/runtime/gateway-init.d.ts +1 -1
  133. package/dist/cli/runtime/gateway-init.d.ts.map +1 -1
  134. package/dist/cli/runtime/gateway-init.js.map +1 -1
  135. package/dist/cli/runtime/mama-core-init.d.ts +10 -2
  136. package/dist/cli/runtime/mama-core-init.d.ts.map +1 -1
  137. package/dist/cli/runtime/mama-core-init.js +52 -68
  138. package/dist/cli/runtime/mama-core-init.js.map +1 -1
  139. package/dist/cli/runtime/memory-agent-init.d.ts.map +1 -1
  140. package/dist/cli/runtime/memory-agent-init.js +18 -5
  141. package/dist/cli/runtime/memory-agent-init.js.map +1 -1
  142. package/dist/cli/runtime/scheduler-init.d.ts +4 -0
  143. package/dist/cli/runtime/scheduler-init.d.ts.map +1 -1
  144. package/dist/cli/runtime/scheduler-init.js +24 -3
  145. package/dist/cli/runtime/scheduler-init.js.map +1 -1
  146. package/dist/cli/runtime/shutdown.d.ts +4 -0
  147. package/dist/cli/runtime/shutdown.d.ts.map +1 -1
  148. package/dist/cli/runtime/shutdown.js +30 -6
  149. package/dist/cli/runtime/shutdown.js.map +1 -1
  150. package/dist/cli/runtime/utilities.d.ts +2 -0
  151. package/dist/cli/runtime/utilities.d.ts.map +1 -1
  152. package/dist/cli/runtime/utilities.js +33 -0
  153. package/dist/cli/runtime/utilities.js.map +1 -1
  154. package/dist/connectors/index.d.ts +4 -1
  155. package/dist/connectors/index.d.ts.map +1 -1
  156. package/dist/connectors/index.js +3 -2
  157. package/dist/connectors/index.js.map +1 -1
  158. package/dist/connectors/private-connector-policy.d.ts +150 -0
  159. package/dist/connectors/private-connector-policy.d.ts.map +1 -0
  160. package/dist/connectors/private-connector-policy.js +289 -0
  161. package/dist/connectors/private-connector-policy.js.map +1 -0
  162. package/dist/connectors/private-prompt-overlay.d.ts +17 -0
  163. package/dist/connectors/private-prompt-overlay.d.ts.map +1 -0
  164. package/dist/connectors/private-prompt-overlay.js +156 -0
  165. package/dist/connectors/private-prompt-overlay.js.map +1 -0
  166. package/dist/db/migrations/operator-task-external-lifecycle.d.ts +8 -0
  167. package/dist/db/migrations/operator-task-external-lifecycle.d.ts.map +1 -0
  168. package/dist/db/migrations/operator-task-external-lifecycle.js +169 -0
  169. package/dist/db/migrations/operator-task-external-lifecycle.js.map +1 -0
  170. package/dist/envelope/enforcer.js +8 -7
  171. package/dist/envelope/enforcer.js.map +1 -1
  172. package/dist/envelope/reactive-config.d.ts.map +1 -1
  173. package/dist/envelope/reactive-config.js +2 -1
  174. package/dist/envelope/reactive-config.js.map +1 -1
  175. package/dist/envelope/tool-connector-scope.d.ts.map +1 -1
  176. package/dist/envelope/tool-connector-scope.js +4 -0
  177. package/dist/envelope/tool-connector-scope.js.map +1 -1
  178. package/dist/gateways/discord.d.ts.map +1 -1
  179. package/dist/gateways/discord.js +11 -6
  180. package/dist/gateways/discord.js.map +1 -1
  181. package/dist/gateways/image-analyzer.d.ts +5 -0
  182. package/dist/gateways/image-analyzer.d.ts.map +1 -1
  183. package/dist/gateways/image-analyzer.js +8 -0
  184. package/dist/gateways/image-analyzer.js.map +1 -1
  185. package/dist/gateways/message-router.d.ts +11 -1
  186. package/dist/gateways/message-router.d.ts.map +1 -1
  187. package/dist/gateways/message-router.js +146 -52
  188. package/dist/gateways/message-router.js.map +1 -1
  189. package/dist/gateways/slack.d.ts.map +1 -1
  190. package/dist/gateways/slack.js +6 -2
  191. package/dist/gateways/slack.js.map +1 -1
  192. package/dist/gateways/telegram-message-ledger.d.ts +8 -1
  193. package/dist/gateways/telegram-message-ledger.d.ts.map +1 -1
  194. package/dist/gateways/telegram-message-ledger.js +141 -24
  195. package/dist/gateways/telegram-message-ledger.js.map +1 -1
  196. package/dist/gateways/telegram.d.ts +2 -0
  197. package/dist/gateways/telegram.d.ts.map +1 -1
  198. package/dist/gateways/telegram.js +19 -12
  199. package/dist/gateways/telegram.js.map +1 -1
  200. package/dist/gateways/types.d.ts +1 -1
  201. package/dist/gateways/types.d.ts.map +1 -1
  202. package/dist/index.d.ts +1 -1
  203. package/dist/index.js +1 -1
  204. package/dist/multi-agent/agent-process-manager.d.ts +14 -4
  205. package/dist/multi-agent/agent-process-manager.d.ts.map +1 -1
  206. package/dist/multi-agent/agent-process-manager.js +144 -47
  207. package/dist/multi-agent/agent-process-manager.js.map +1 -1
  208. package/dist/multi-agent/dashboard-agent-persona.d.ts +3 -3
  209. package/dist/multi-agent/dashboard-agent-persona.d.ts.map +1 -1
  210. package/dist/multi-agent/dashboard-agent-persona.js +10 -13
  211. package/dist/multi-agent/dashboard-agent-persona.js.map +1 -1
  212. package/dist/multi-agent/memory-agent-persona.d.ts +1 -1
  213. package/dist/multi-agent/memory-agent-persona.d.ts.map +1 -1
  214. package/dist/multi-agent/memory-agent-persona.js +1 -1
  215. package/dist/multi-agent/runtime-process.d.ts +3 -0
  216. package/dist/multi-agent/runtime-process.d.ts.map +1 -1
  217. package/dist/multi-agent/runtime-process.js +10 -2
  218. package/dist/multi-agent/runtime-process.js.map +1 -1
  219. package/dist/multi-agent/types.d.ts +12 -2
  220. package/dist/multi-agent/types.d.ts.map +1 -1
  221. package/dist/multi-agent/types.js.map +1 -1
  222. package/dist/multi-agent/wiki-agent-persona.d.ts +2 -2
  223. package/dist/multi-agent/wiki-agent-persona.js +2 -2
  224. package/dist/multi-agent/workflow-types.d.ts +1 -1
  225. package/dist/multi-agent/workflow-types.d.ts.map +1 -1
  226. package/dist/onboarding/complete-autonomous-prompt.d.ts +1 -1
  227. package/dist/onboarding/complete-autonomous-prompt.d.ts.map +1 -1
  228. package/dist/onboarding/complete-autonomous-prompt.js +9 -9
  229. package/dist/operator/board-slot-instructions.d.ts +1 -1
  230. package/dist/operator/board-slot-instructions.js +2 -2
  231. package/dist/operator/board-slot-instructions.js.map +1 -1
  232. package/dist/operator/briefs.d.ts +3 -0
  233. package/dist/operator/briefs.d.ts.map +1 -1
  234. package/dist/operator/briefs.js +64 -3
  235. package/dist/operator/briefs.js.map +1 -1
  236. package/dist/operator/console-brief.d.ts +6 -3
  237. package/dist/operator/console-brief.d.ts.map +1 -1
  238. package/dist/operator/console-brief.js +39 -9
  239. package/dist/operator/console-brief.js.map +1 -1
  240. package/dist/operator/external-lifecycle-candidates.d.ts +56 -0
  241. package/dist/operator/external-lifecycle-candidates.d.ts.map +1 -0
  242. package/dist/operator/external-lifecycle-candidates.js +415 -0
  243. package/dist/operator/external-lifecycle-candidates.js.map +1 -0
  244. package/dist/operator/external-lifecycle.d.ts +82 -0
  245. package/dist/operator/external-lifecycle.d.ts.map +1 -0
  246. package/dist/operator/external-lifecycle.js +27 -0
  247. package/dist/operator/external-lifecycle.js.map +1 -0
  248. package/dist/operator/file-coordination.d.ts +7 -0
  249. package/dist/operator/file-coordination.d.ts.map +1 -0
  250. package/dist/operator/file-coordination.js +84 -0
  251. package/dist/operator/file-coordination.js.map +1 -0
  252. package/dist/operator/operator-trigger-loop.d.ts +19 -4
  253. package/dist/operator/operator-trigger-loop.d.ts.map +1 -1
  254. package/dist/operator/operator-trigger-loop.js +151 -23
  255. package/dist/operator/operator-trigger-loop.js.map +1 -1
  256. package/dist/operator/pending-report-store.d.ts +62 -3
  257. package/dist/operator/pending-report-store.d.ts.map +1 -1
  258. package/dist/operator/pending-report-store.js +297 -40
  259. package/dist/operator/pending-report-store.js.map +1 -1
  260. package/dist/operator/report-carry-delivery.d.ts +35 -0
  261. package/dist/operator/report-carry-delivery.d.ts.map +1 -0
  262. package/dist/operator/report-carry-delivery.js +55 -0
  263. package/dist/operator/report-carry-delivery.js.map +1 -0
  264. package/dist/operator/report-carry.d.ts +50 -30
  265. package/dist/operator/report-carry.d.ts.map +1 -1
  266. package/dist/operator/report-carry.js +323 -71
  267. package/dist/operator/report-carry.js.map +1 -1
  268. package/dist/operator/situation-report.d.ts +30 -11
  269. package/dist/operator/situation-report.d.ts.map +1 -1
  270. package/dist/operator/situation-report.js +79 -35
  271. package/dist/operator/situation-report.js.map +1 -1
  272. package/dist/operator/task-ledger.d.ts +101 -0
  273. package/dist/operator/task-ledger.d.ts.map +1 -1
  274. package/dist/operator/task-ledger.js +599 -124
  275. package/dist/operator/task-ledger.js.map +1 -1
  276. package/dist/operator/temporal-runtime.d.ts.map +1 -1
  277. package/dist/operator/temporal-runtime.js +3 -1
  278. package/dist/operator/temporal-runtime.js.map +1 -1
  279. package/dist/operator/temporal-worker.js +1 -1
  280. package/dist/operator/trigger-author.d.ts +13 -1
  281. package/dist/operator/trigger-author.d.ts.map +1 -1
  282. package/dist/operator/trigger-author.js +35 -0
  283. package/dist/operator/trigger-author.js.map +1 -1
  284. package/dist/operator/worker-run.d.ts +1 -1
  285. package/dist/operator/worker-run.d.ts.map +1 -1
  286. package/dist/operator/worker-run.js +27 -9
  287. package/dist/operator/worker-run.js.map +1 -1
  288. package/dist/operator/workorder-consumer.d.ts +12 -1
  289. package/dist/operator/workorder-consumer.d.ts.map +1 -1
  290. package/dist/operator/workorder-consumer.js +125 -6
  291. package/dist/operator/workorder-consumer.js.map +1 -1
  292. package/dist/operator/workorder-hooks.d.ts +7 -2
  293. package/dist/operator/workorder-hooks.d.ts.map +1 -1
  294. package/dist/operator/workorder-hooks.js +22 -0
  295. package/dist/operator/workorder-hooks.js.map +1 -1
  296. package/dist/operator/workorder-publishers.d.ts +9 -2
  297. package/dist/operator/workorder-publishers.d.ts.map +1 -1
  298. package/dist/operator/workorder-publishers.js +167 -5
  299. package/dist/operator/workorder-publishers.js.map +1 -1
  300. package/dist/scheduler/cron-worker.d.ts +8 -4
  301. package/dist/scheduler/cron-worker.d.ts.map +1 -1
  302. package/dist/scheduler/cron-worker.js +56 -39
  303. package/dist/scheduler/cron-worker.js.map +1 -1
  304. package/dist/setup/setup-actions.d.ts +26 -0
  305. package/dist/setup/setup-actions.d.ts.map +1 -0
  306. package/dist/setup/setup-actions.js +371 -0
  307. package/dist/setup/setup-actions.js.map +1 -0
  308. package/dist/setup/setup-prompt.d.ts +1 -1
  309. package/dist/setup/setup-prompt.d.ts.map +1 -1
  310. package/dist/setup/setup-prompt.js +28 -33
  311. package/dist/setup/setup-prompt.js.map +1 -1
  312. package/dist/setup/setup-server.d.ts +6 -1
  313. package/dist/setup/setup-server.d.ts.map +1 -1
  314. package/dist/setup/setup-server.js +55 -9
  315. package/dist/setup/setup-server.js.map +1 -1
  316. package/dist/setup/setup-websocket.d.ts +14 -2
  317. package/dist/setup/setup-websocket.d.ts.map +1 -1
  318. package/dist/setup/setup-websocket.js +121 -37
  319. package/dist/setup/setup-websocket.js.map +1 -1
  320. package/package.json +2 -2
  321. package/public/setup.html +9 -6
  322. package/public/viewer/js/modules/agents.js +5 -4
  323. package/public/viewer/js/modules/settings.js +34 -10
  324. package/public/viewer/src/modules/agents.ts +5 -4
  325. package/public/viewer/src/modules/settings.ts +49 -11
  326. package/public/viewer/src/utils/api.ts +3 -2
  327. package/scripts/generate-gateway-tools.ts +13 -3
@@ -7,12 +7,17 @@
7
7
  * Channel key format: {source}:{channelId}:{agentId}
8
8
  * Example: "discord:123456789:developer"
9
9
  */
10
+ export { projectClineNativeTools } from '../agent/cline-native-tool-policy.js';
10
11
  import { EventEmitter } from 'events';
11
12
  import { PersistentProcessPool, type PersistentProcessOptions } from '../agent/persistent-cli-process.js';
12
13
  import type { MultiAgentConfig, MultiAgentRuntimeOptions } from './types.js';
13
14
  import { type AgentRuntimeProcess } from './runtime-process.js';
14
15
  import type { EphemeralAgentDef } from './workflow-types.js';
15
16
  import type { GatewayToolExecutor } from '../agent/gateway-tool-executor.js';
17
+ import { type PrivateConnectorPolicy } from '../connectors/private-connector-policy.js';
18
+ type PrivateAwareMultiAgentRuntimeOptions = MultiAgentRuntimeOptions & {
19
+ privateConnectorPolicy?: PrivateConnectorPolicy;
20
+ };
16
21
  /**
17
22
  * Agent Process Manager
18
23
  *
@@ -31,6 +36,7 @@ export declare class AgentProcessManager extends EventEmitter {
31
36
  private codexShutdowns;
32
37
  private permissionManager;
33
38
  private runtimeOptions;
39
+ private readonly privateConnectorPolicy;
34
40
  private gatewayToolExecutor;
35
41
  private readonly tracePromptMs;
36
42
  private readonly dumpConductorPrompt;
@@ -42,7 +48,7 @@ export declare class AgentProcessManager extends EventEmitter {
42
48
  private mentionDelegationEnabled;
43
49
  /** Default options for all processes */
44
50
  private defaultOptions;
45
- constructor(config: MultiAgentConfig, defaultOptions?: Partial<PersistentProcessOptions>, runtimeOptions?: MultiAgentRuntimeOptions);
51
+ constructor(config: MultiAgentConfig, defaultOptions?: Partial<PersistentProcessOptions>, runtimeOptions?: PrivateAwareMultiAgentRuntimeOptions);
46
52
  /**
47
53
  * Update configuration (for hot reload)
48
54
  */
@@ -61,6 +67,9 @@ export declare class AgentProcessManager extends EventEmitter {
61
67
  */
62
68
  setMentionDelegation(enabled: boolean): void;
63
69
  private isEphemeralAgent;
70
+ private personaCacheKey;
71
+ private personaCacheAgentId;
72
+ private clearAgentPersonaCache;
64
73
  private clearPersonaCache;
65
74
  /**
66
75
  * Build channel key for process pool
@@ -97,11 +106,12 @@ export declare class AgentProcessManager extends EventEmitter {
97
106
  * Codex runners are created here as standalone instances.
98
107
  */
99
108
  private createCodexRunner;
100
- private createCodexCodeActRunner;
109
+ private createClineRunner;
110
+ private createManagedCodeActRunner;
101
111
  /**
102
112
  * Load persona system prompt for an agent
103
113
  */
104
- loadPersona(agentId: string): Promise<string>;
114
+ loadPersona(agentId: string, resolvedModel?: string): Promise<string>;
105
115
  /**
106
116
  * Build system prompt with persona content
107
117
  */
@@ -114,7 +124,7 @@ export declare class AgentProcessManager extends EventEmitter {
114
124
  /**
115
125
  * Resolve the preferred model ID for a given backend from config.
116
126
  * Scans registered agents to find the first model matching the backend.
117
- * Falls back to runtimeOptions.model for claude, 'unknown' otherwise.
127
+ * Falls back to the configured backend default when no registered agent provides one.
118
128
  */
119
129
  resolveModelForBackend(backend: string): string;
120
130
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"agent-process-manager.d.ts","sourceRoot":"","sources":["../../src/multi-agent/agent-process-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EACL,qBAAqB,EACrB,KAAK,wBAAwB,EAC9B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAsB,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEjG,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAS7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAqK7E;;;;;;;;;;GAUG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,gBAAgB,CAA+C;IACvE,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,iBAAiB,CAAwB;IACjD,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2D;IACzF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA6D;IAEjG,yDAAyD;IACzD,OAAO,CAAC,YAAY,CAAkC;IAEtD,6EAA6E;IAC7E,OAAO,CAAC,YAAY,CAAkC;IAEtD,kDAAkD;IAClD,OAAO,CAAC,wBAAwB,CAAS;IAEzC,wCAAwC;IACxC,OAAO,CAAC,cAAc,CAAoC;gBAGxD,MAAM,EAAE,gBAAgB,EACxB,cAAc,GAAE,OAAO,CAAC,wBAAwB,CAAM,EACtD,cAAc,GAAE,wBAA6B;IAU/C;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAoB5C,yEAAyE;IACzE,sBAAsB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAI3D,OAAO,CAAC,eAAe;IAcvB;;;OAGG;IACH,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAK/C;;;OAGG;IACH,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAK5C,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAazB;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAI3E;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAa3F;;OAEG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GACtC,OAAO,CAAC,mBAAmB,CAAC;IA4I/B;;;;;;OAMG;IACG,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GACtC,OAAO,CAAC,mBAAmB,CAAC;IAI/B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,wBAAwB;IA6EhC;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2FnD;;OAEG;YACW,iBAAiB;IA8H/B,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,yBAAyB;IA+BjC,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,qBAAqB;IAkC7B;;;;OAIG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAgB/C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,sBAAsB;IAiB9B;;;OAGG;YACW,cAAc;IAc5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAUrE;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAoB7D;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAoBzC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;;OAGG;IACH,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAkCrC;;;OAGG;IACG,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxE;;OAEG;IACH,yBAAyB,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAQ/D;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMpC;;OAEG;IACH,iBAAiB,IAAI,IAAI;IASzB,OAAO,CAAC,kBAAkB;YAoBZ,oBAAoB;IAIlC;;OAEG;IACH,cAAc,IAAI,qBAAqB;IAIvC;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ7E;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;CA8BtE"}
1
+ {"version":3,"file":"agent-process-manager.d.ts","sourceRoot":"","sources":["../../src/multi-agent/agent-process-manager.ts"],"names":[],"mappings":"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"}
@@ -42,12 +42,17 @@ var __importStar = (this && this.__importStar) || (function () {
42
42
  };
43
43
  })();
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.AgentProcessManager = void 0;
45
+ exports.AgentProcessManager = exports.projectClineNativeTools = void 0;
46
46
  const promises_1 = require("fs/promises");
47
47
  const fs_1 = require("fs");
48
48
  const path_1 = require("path");
49
49
  const agent_loop_js_1 = require("../agent/agent-loop.js");
50
- const tool_registry_js_1 = require("../agent/tool-registry.js");
50
+ const cline_cli_adapter_js_1 = require("../agent/cline-cli-adapter.js");
51
+ const cline_native_tool_policy_js_1 = require("../agent/cline-native-tool-policy.js");
52
+ const backend_model_policy_js_1 = require("../agent/backend-model-policy.js");
53
+ var cline_native_tool_policy_js_2 = require("../agent/cline-native-tool-policy.js");
54
+ Object.defineProperty(exports, "projectClineNativeTools", { enumerable: true, get: function () { return cline_native_tool_policy_js_2.projectClineNativeTools; } });
55
+ const gateway_tool_catalog_js_1 = require("../agent/gateway-tool-catalog.js");
51
56
  const skill_loader_js_1 = require("../agent/skill-loader.js");
52
57
  const os_1 = require("os");
53
58
  const events_1 = require("events");
@@ -58,9 +63,15 @@ const runtime_process_js_1 = require("./runtime-process.js");
58
63
  const bmad_templates_js_1 = require("./bmad-templates.js");
59
64
  const index_js_1 = require("../agent/code-act/index.js");
60
65
  const host_bridge_js_1 = require("../agent/code-act/host-bridge.js");
66
+ const private_connector_policy_js_1 = require("../connectors/private-connector-policy.js");
67
+ const DEFAULT_PRIVATE_CONNECTOR_POLICY = (0, private_connector_policy_js_1.resolvePrivateConnectorPolicy)({
68
+ ok: true,
69
+ config: {},
70
+ enabledNames: [],
71
+ });
61
72
  const { DebugLogger } = debugLogger;
62
73
  const processManagerLogger = new DebugLogger('AgentProcessManager');
63
- class ManagedCodexCodeActProcess extends events_1.EventEmitter {
74
+ class ManagedCodeActProcess extends events_1.EventEmitter {
64
75
  loop;
65
76
  sessionKey;
66
77
  source;
@@ -215,6 +226,7 @@ class AgentProcessManager extends events_1.EventEmitter {
215
226
  codexShutdowns = new Map();
216
227
  permissionManager;
217
228
  runtimeOptions;
229
+ privateConnectorPolicy;
218
230
  gatewayToolExecutor = null;
219
231
  tracePromptMs = globalThis.process.env.MAMA_CONDUCTOR_PROMPT_MS === '1';
220
232
  dumpConductorPrompt = globalThis.process.env.MAMA_DUMP_CONDUCTOR_PROMPT === '1';
@@ -231,6 +243,8 @@ class AgentProcessManager extends events_1.EventEmitter {
231
243
  this.config = config;
232
244
  this.defaultOptions = defaultOptions;
233
245
  this.runtimeOptions = runtimeOptions;
246
+ this.privateConnectorPolicy =
247
+ runtimeOptions.privateConnectorPolicy ?? DEFAULT_PRIVATE_CONNECTOR_POLICY;
234
248
  this.processPool = new persistent_cli_process_js_1.PersistentProcessPool(defaultOptions);
235
249
  this.permissionManager = new tool_permission_manager_js_1.ToolPermissionManager();
236
250
  }
@@ -263,7 +277,7 @@ class AgentProcessManager extends events_1.EventEmitter {
263
277
  const backend = agentConfig.backend ?? this.runtimeOptions.backend;
264
278
  if (!backend) {
265
279
  throw new Error(`No backend configured for agent${agentId ? ` '${agentId}'` : ''}. ` +
266
- `Set 'backend' in agent config or global agent.backend. Valid: 'claude' | 'codex'`);
280
+ `Set 'backend' in agent config or global agent.backend. Valid: 'claude' | 'codex' | 'cline'`);
267
281
  }
268
282
  return backend;
269
283
  }
@@ -286,14 +300,27 @@ class AgentProcessManager extends events_1.EventEmitter {
286
300
  isEphemeralAgent(agentId) {
287
301
  return this.config.agents[agentId]?.persona_file === '';
288
302
  }
303
+ personaCacheKey(agentId, model) {
304
+ return `${this.privateConnectorPolicy.fingerprint}\u0000${agentId}\u0000${model ?? ''}`;
305
+ }
306
+ personaCacheAgentId(cacheKey) {
307
+ return cacheKey.split('\u0000')[1] ?? '';
308
+ }
309
+ clearAgentPersonaCache(agentId) {
310
+ for (const cacheKey of this.personaCache.keys()) {
311
+ if (this.personaCacheAgentId(cacheKey) === agentId) {
312
+ this.personaCache.delete(cacheKey);
313
+ }
314
+ }
315
+ }
289
316
  clearPersonaCache(preserveEphemeral = false) {
290
317
  if (!preserveEphemeral) {
291
318
  this.personaCache.clear();
292
319
  return;
293
320
  }
294
- for (const agentId of this.personaCache.keys()) {
295
- if (!this.isEphemeralAgent(agentId)) {
296
- this.personaCache.delete(agentId);
321
+ for (const cacheKey of this.personaCache.keys()) {
322
+ if (!this.isEphemeralAgent(this.personaCacheAgentId(cacheKey))) {
323
+ this.personaCache.delete(cacheKey);
297
324
  }
298
325
  }
299
326
  }
@@ -326,10 +353,18 @@ class AgentProcessManager extends events_1.EventEmitter {
326
353
  const channelKey = this.buildChannelKey(source, channelId, agentId);
327
354
  const agentConfig = this.config.agents[agentId];
328
355
  const agentBackend = this.getAgentBackend(agentConfig, agentId);
329
- if (agentBackend === 'codex' && agentConfig?.useCodeAct && !this.gatewayToolExecutor) {
330
- throw new Error(`Managed Codex Code-Act agent "${agentId}" cannot start: shared GatewayToolExecutor is not wired`);
356
+ if ((agentBackend === 'codex' || agentBackend === 'cline') &&
357
+ agentConfig?.useCodeAct &&
358
+ !this.gatewayToolExecutor) {
359
+ throw new Error(`Managed ${agentBackend} Code-Act agent "${agentId}" cannot start: shared GatewayToolExecutor is not wired`);
331
360
  }
332
- const systemPrompt = await this.loadPersona(agentId);
361
+ const model = (0, backend_model_policy_js_1.resolveBackendScopedModel)({
362
+ backend: agentBackend,
363
+ model: agentConfig?.model,
364
+ inheritedBackend: this.runtimeOptions.backend,
365
+ inheritedModel: this.runtimeOptions.model ?? this.defaultOptions.model,
366
+ });
367
+ const systemPrompt = await this.loadPersona(agentId, model);
333
368
  const tier = agentConfig?.tier ?? 1;
334
369
  const options = {
335
370
  ...this.defaultOptions,
@@ -339,9 +374,7 @@ class AgentProcessManager extends events_1.EventEmitter {
339
374
  this.runtimeOptions.requestTimeout ??
340
375
  900000,
341
376
  };
342
- if (agentConfig?.model) {
343
- options.model = agentConfig.model;
344
- }
377
+ options.model = model;
345
378
  const effort = agentConfig?.effort || this.runtimeOptions.effort;
346
379
  if (effort) {
347
380
  options.effort = effort;
@@ -351,7 +384,7 @@ class AgentProcessManager extends events_1.EventEmitter {
351
384
  // natively from AgentLoop and must not also load the retired MCP wrapper.
352
385
  const mcpConfigPath = (0, path_1.resolve)((0, os_1.homedir)(), '.mama', 'mama-mcp-config.json');
353
386
  if ((0, fs_1.existsSync)(mcpConfigPath)) {
354
- if (agentConfig?.useCodeAct && agentBackend !== 'codex') {
387
+ if (agentConfig?.useCodeAct && agentBackend === 'claude') {
355
388
  // Claude Code-Act agents: only provide code-act MCP server
356
389
  const codeActOnlyConfig = (0, path_1.resolve)((0, os_1.homedir)(), '.mama', `code-act-only-mcp-config-${safeConfigId(agentId)}.json`);
357
390
  try {
@@ -376,7 +409,7 @@ class AgentProcessManager extends events_1.EventEmitter {
376
409
  throw new Error(`Code-Act MCP config unavailable for agent "${agentId}" at ${mcpConfigPath}: ${message}`);
377
410
  }
378
411
  }
379
- else if (!agentConfig?.useCodeAct) {
412
+ else if (!agentConfig?.useCodeAct && agentBackend === 'claude') {
380
413
  options.mcpConfigPath = mcpConfigPath;
381
414
  }
382
415
  }
@@ -395,6 +428,9 @@ class AgentProcessManager extends events_1.EventEmitter {
395
428
  if (!permissions.allowed.includes('*')) {
396
429
  options.allowedTools = permissions.allowed;
397
430
  }
431
+ else if (agentBackend === 'cline') {
432
+ options.allowedTools = ['*'];
433
+ }
398
434
  if (permissions.blocked.length > 0) {
399
435
  options.disallowedTools = permissions.blocked;
400
436
  }
@@ -406,12 +442,25 @@ class AgentProcessManager extends events_1.EventEmitter {
406
442
  return existing;
407
443
  }
408
444
  const runner = agentConfig.useCodeAct
409
- ? this.createCodexCodeActRunner(options, channelKey, source, channelId, agentId, agentConfig, this.gatewayToolExecutor)
445
+ ? this.createManagedCodeActRunner('codex', options, channelKey, source, channelId, agentId, agentConfig, this.gatewayToolExecutor)
410
446
  : this.createCodexRunner(options, channelKey);
411
447
  this.codexProcessPool.set(channelKey, runner);
412
448
  this.emit('process-created', { agentId, process: runner });
413
449
  return runner;
414
450
  }
451
+ if (agentBackend === 'cline') {
452
+ await this.waitForCodexShutdown(channelKey);
453
+ const existing = this.codexProcessPool.get(channelKey);
454
+ if (existing) {
455
+ return existing;
456
+ }
457
+ const runner = agentConfig.useCodeAct
458
+ ? this.createManagedCodeActRunner('cline', options, channelKey, source, channelId, agentId, agentConfig, this.gatewayToolExecutor)
459
+ : this.createClineRunner(options, channelKey, agentConfig);
460
+ this.codexProcessPool.set(channelKey, runner);
461
+ this.emit('process-created', { agentId, process: runner });
462
+ return runner;
463
+ }
415
464
  // Claude backend
416
465
  const { process, created } = await this.processPool.getProcessWithStatus(channelKey, options);
417
466
  if (created) {
@@ -449,7 +498,27 @@ class AgentProcessManager extends events_1.EventEmitter {
449
498
  mcpConfigPath: options.mcpConfigPath,
450
499
  });
451
500
  }
452
- createCodexCodeActRunner(options, sessionKey, source, channelId, agentId, agentConfig, executor) {
501
+ createClineRunner(options, sessionKey, agentConfig) {
502
+ const allowedTools = (0, cline_native_tool_policy_js_1.projectClineNativeTools)(options.allowedTools);
503
+ const disallowedTools = (0, cline_native_tool_policy_js_1.projectClineNativeTools)(options.disallowedTools);
504
+ const canDelegate = (agentConfig.tier ?? 1) === 1 && agentConfig.can_delegate === true;
505
+ return new cline_cli_adapter_js_1.ClineCLIAdapter({
506
+ command: this.runtimeOptions.clineCommand,
507
+ provider: this.runtimeOptions.clineProvider ?? 'cline',
508
+ model: options.model || this.runtimeOptions.model,
509
+ systemPrompt: options.systemPrompt,
510
+ cwd: this.runtimeOptions.clineCwd ? resolvePath(this.runtimeOptions.clineCwd) : process.cwd(),
511
+ dataDir: this.runtimeOptions.clineDataDir,
512
+ requestTimeout: options.requestTimeout,
513
+ env: options.env,
514
+ sessionId: sessionKey,
515
+ allowedTools,
516
+ disallowedTools,
517
+ allowSpawnAgent: canDelegate,
518
+ allowAgentTeams: canDelegate,
519
+ });
520
+ }
521
+ createManagedCodeActRunner(backend, options, sessionKey, source, channelId, agentId, agentConfig, executor) {
453
522
  const allowedTools = this.deriveCodeActAllowedTools(agentConfig) ?? ['*'];
454
523
  const blockedTools = codeActBlockedTools(agentConfig) ?? [];
455
524
  const outerAllowedTools = [
@@ -485,10 +554,11 @@ class AgentProcessManager extends events_1.EventEmitter {
485
554
  capabilities,
486
555
  limitations: blockedTools.map((tool) => `Cannot use ${tool}`),
487
556
  tier: agentConfig.tier ?? 1,
488
- backend: 'codex',
557
+ backend,
489
558
  };
559
+ const canDelegate = (agentConfig.tier ?? 1) === 1 && agentConfig.can_delegate === true;
490
560
  const loop = new agent_loop_js_1.AgentLoop(null, {
491
- backend: 'codex',
561
+ backend,
492
562
  model: options.model ?? this.runtimeOptions.model,
493
563
  systemPrompt: options.systemPrompt,
494
564
  maxTurns: agentConfig.max_turns,
@@ -498,6 +568,20 @@ class AgentProcessManager extends events_1.EventEmitter {
498
568
  agentContext,
499
569
  toolsConfig: { gateway: ['*'], mcp: [] },
500
570
  executor,
571
+ ...(backend === 'cline'
572
+ ? {
573
+ clineCwd: this.runtimeOptions.clineCwd
574
+ ? resolvePath(this.runtimeOptions.clineCwd)
575
+ : undefined,
576
+ clineCommand: this.runtimeOptions.clineCommand,
577
+ clineProvider: this.runtimeOptions.clineProvider,
578
+ clineDataDir: this.runtimeOptions.clineDataDir,
579
+ clineNativeAllowedTools: (0, cline_native_tool_policy_js_1.projectClineNativeTools)(options.allowedTools),
580
+ clineNativeDisallowedTools: (0, cline_native_tool_policy_js_1.projectClineNativeTools)(options.disallowedTools),
581
+ clineAllowSpawnAgent: canDelegate,
582
+ clineAllowAgentTeams: canDelegate,
583
+ }
584
+ : {}),
501
585
  codexCwd: this.runtimeOptions.codexCwd
502
586
  ? resolvePath(this.runtimeOptions.codexCwd)
503
587
  : undefined,
@@ -507,20 +591,21 @@ class AgentProcessManager extends events_1.EventEmitter {
507
591
  codexIsolatedHome: this.runtimeOptions.codexIsolatedHome,
508
592
  codexRegistryRoot: this.runtimeOptions.codexRegistryRoot,
509
593
  });
510
- return new ManagedCodexCodeActProcess(loop, sessionKey, source, channelId, agentContext, options.model ?? this.runtimeOptions.model);
594
+ return new ManagedCodeActProcess(loop, sessionKey, source, channelId, agentContext, options.model ?? this.runtimeOptions.model);
511
595
  }
512
596
  /**
513
597
  * Load persona system prompt for an agent
514
598
  */
515
- async loadPersona(agentId) {
599
+ async loadPersona(agentId, resolvedModel) {
516
600
  const shouldTrace = this.shouldTracePrompt(agentId);
517
601
  const traceCacheKey = agentId.toLowerCase() === 'conductor' ? 'conductor' : agentId;
518
602
  // Check if a skill rules file exists for this agent (allows hot-reload)
519
603
  const skillPath = (0, path_1.resolve)((0, os_1.homedir)(), '.mama', 'skills', `${agentId}-rules.md`);
520
604
  const hasSkillFile = (0, fs_1.existsSync)(skillPath);
521
605
  // Check cache first — skip cache if skill file exists to allow hot-reload
522
- if (this.personaCache.has(agentId) && !hasSkillFile) {
523
- const cachedPrompt = this.personaCache.get(agentId);
606
+ const cacheKey = this.personaCacheKey(agentId, resolvedModel);
607
+ if (this.personaCache.has(cacheKey) && !hasSkillFile) {
608
+ const cachedPrompt = this.personaCache.get(cacheKey);
524
609
  if (shouldTrace) {
525
610
  processManagerLogger.debug(`[Conductor] system prompt cache HIT | key=${traceCacheKey} len=${cachedPrompt.length}`);
526
611
  }
@@ -537,7 +622,7 @@ class AgentProcessManager extends events_1.EventEmitter {
537
622
  console.warn(`[AgentProcessManager] Persona file not found: ${personaPath}`);
538
623
  // Return default persona
539
624
  const defaultPersona = this.buildDefaultPersona(agentId, agentConfig);
540
- this.personaCache.set(agentId, defaultPersona);
625
+ this.personaCache.set(cacheKey, defaultPersona);
541
626
  if (shouldTrace) {
542
627
  processManagerLogger.warn(`[Conductor] persona file missing (${traceCacheKey}), using default in ${Date.now() - loadStart}ms`);
543
628
  }
@@ -551,7 +636,7 @@ class AgentProcessManager extends events_1.EventEmitter {
551
636
  processManagerLogger.debug(`[Conductor] persona read complete key=${traceCacheKey} path=${personaPath} read_ms=${readDuration} bytes=${personaContent.length}`);
552
637
  }
553
638
  const buildStart = Date.now();
554
- let systemPrompt = await this.buildSystemPrompt(agentId, agentConfig, personaContent);
639
+ let systemPrompt = await this.buildSystemPrompt(agentId, agentConfig, personaContent, resolvedModel);
555
640
  if (shouldTrace) {
556
641
  processManagerLogger.debug(`[Conductor] system prompt built key=${traceCacheKey} build_ms=${Date.now() - buildStart} total_ms=${Date.now() - loadStart} len=${systemPrompt.length}`);
557
642
  }
@@ -570,7 +655,7 @@ class AgentProcessManager extends events_1.EventEmitter {
570
655
  // Non-fatal: skill file read error
571
656
  }
572
657
  }
573
- this.personaCache.set(agentId, systemPrompt);
658
+ this.personaCache.set(cacheKey, systemPrompt);
574
659
  if (shouldTrace && this.dumpConductorPrompt) {
575
660
  processManagerLogger.debug(`[Conductor] system prompt content:\n${systemPrompt}`);
576
661
  }
@@ -585,7 +670,7 @@ class AgentProcessManager extends events_1.EventEmitter {
585
670
  /**
586
671
  * Build system prompt with persona content
587
672
  */
588
- async buildSystemPrompt(agentId, agentConfig, personaContent) {
673
+ async buildSystemPrompt(agentId, agentConfig, personaContent, resolvedModel) {
589
674
  const agent = { id: agentId, ...agentConfig };
590
675
  const buildStart = Date.now();
591
676
  // Replace @mentions in persona with platform-specific <@userId>
@@ -611,7 +696,7 @@ class AgentProcessManager extends events_1.EventEmitter {
611
696
  }
612
697
  }
613
698
  // Replace model placeholders with actual config values
614
- const actualModel = agentConfig.model || this.runtimeOptions.model;
699
+ const actualModel = resolvedModel || agentConfig.model || this.runtimeOptions.model;
615
700
  if (!actualModel) {
616
701
  throw new Error(`No model configured for agent '${agentId}'. ` +
617
702
  `Set 'model' in agent config or global agent.model`);
@@ -681,28 +766,34 @@ ${skillsPrompt}## Guidelines
681
766
  }
682
767
  buildToolsSection(agentConfig) {
683
768
  const tier = agentConfig.tier ?? 1;
769
+ const allowedTools = agentConfig.useCodeAct
770
+ ? (this.deriveCodeActAllowedTools(agentConfig) ?? ['*'])
771
+ : (agentConfig.tool_permissions?.allowed ?? ['*']);
772
+ const blockedTools = agentConfig.useCodeAct
773
+ ? codeActBlockedTools(agentConfig)
774
+ : agentConfig.tool_permissions?.blocked;
775
+ const catalog = (0, gateway_tool_catalog_js_1.buildGatewayToolCatalog)({
776
+ surface: 'multi-agent-generic',
777
+ allowedTools,
778
+ blockedTools,
779
+ privateConnectorPolicy: this.privateConnectorPolicy,
780
+ });
684
781
  // Code-Act mode: replace tool_call instructions with Code-Act JS execution
685
782
  if (agentConfig.useCodeAct && tier !== 3) {
686
- const allowedTools = this.deriveCodeActAllowedTools(agentConfig);
687
783
  const policy = (0, index_js_1.projectCodeActToolPolicy)({
688
784
  tier: tier,
689
- role: { allowedTools },
785
+ role: { allowedTools: [...catalog.toolNames], blockedTools: [] },
690
786
  });
691
787
  const typeDefs = index_js_1.TypeDefinitionGenerator.generate(policy);
692
788
  const backend = agentConfig.backend ?? this.runtimeOptions.backend ?? 'claude';
693
- const codeActBackend = backend === 'codex' ? 'codex' : 'claude';
789
+ const codeActBackend = backend;
694
790
  return ((0, index_js_1.getCodeActInstructions)(codeActBackend, policy.names) +
695
791
  '\n```typescript\n' +
696
792
  typeDefs +
697
793
  '\n```\n');
698
794
  }
699
795
  // Per-agent tool filtering via ToolRegistry (STORY-018)
700
- const allowedTools = agentConfig.tool_permissions?.allowed;
701
- if (allowedTools && !allowedTools.includes('*')) {
702
- return tool_registry_js_1.ToolRegistry.generatePrompt(allowedTools);
703
- }
704
- // Default: full gateway tools from gateway-tools.md
705
- return (0, agent_loop_js_1.getGatewayToolsPrompt)();
796
+ return catalog.prompt;
706
797
  }
707
798
  deriveCodeActAllowedTools(agentConfig) {
708
799
  const explicitGatewayAllowed = agentConfig.gateway_tool_permissions?.allowed;
@@ -726,10 +817,16 @@ ${skillsPrompt}## Guidelines
726
817
  return undefined;
727
818
  }
728
819
  filterCodeActAllowedTools(allowedTools, blockedTools) {
820
+ const catalog = (0, gateway_tool_catalog_js_1.buildGatewayToolCatalog)({
821
+ surface: 'multi-agent-generic',
822
+ allowedTools,
823
+ blockedTools,
824
+ privateConnectorPolicy: this.privateConnectorPolicy,
825
+ });
729
826
  return [
730
827
  ...(0, index_js_1.projectCodeActToolPolicy)({
731
828
  tier: 1,
732
- role: { allowedTools, blockedTools },
829
+ role: { allowedTools: [...catalog.toolNames], blockedTools: [] },
733
830
  }).names,
734
831
  ];
735
832
  }
@@ -764,7 +861,7 @@ ${skillsPrompt}## Guidelines
764
861
  /**
765
862
  * Resolve the preferred model ID for a given backend from config.
766
863
  * Scans registered agents to find the first model matching the backend.
767
- * Falls back to runtimeOptions.model for claude, 'unknown' otherwise.
864
+ * Falls back to the configured backend default when no registered agent provides one.
768
865
  */
769
866
  resolveModelForBackend(backend) {
770
867
  for (const [, cfg] of Object.entries(this.config.agents)) {
@@ -773,13 +870,13 @@ ${skillsPrompt}## Guidelines
773
870
  return cfg.model;
774
871
  }
775
872
  }
776
- if (backend === 'claude') {
777
- if (!this.runtimeOptions.model) {
778
- throw new Error(`No model configured for claude backend. Set agent.model in config.yaml`);
779
- }
873
+ if (backend === this.runtimeOptions.backend && this.runtimeOptions.model) {
780
874
  return this.runtimeOptions.model;
781
875
  }
782
- return 'unknown';
876
+ if (backend === 'claude' || backend === 'codex' || backend === 'cline') {
877
+ return (0, backend_model_policy_js_1.defaultModelForBackend)(backend);
878
+ }
879
+ throw new Error(`Unsupported backend: ${backend}`);
783
880
  }
784
881
  /**
785
882
  * Build installed skills prompt section
@@ -982,7 +1079,7 @@ Respond to messages in a helpful and professional manner.
982
1079
  this.config.agents[agentDef.id] = agentConfig;
983
1080
  // Build full system prompt (with gateway tools, permissions, etc.)
984
1081
  const fullPrompt = await this.buildSystemPrompt(agentDef.id, agentConfig, agentDef.system_prompt);
985
- this.personaCache.set(agentDef.id, fullPrompt);
1082
+ this.personaCache.set(this.personaCacheKey(agentDef.id, agentDef.model), fullPrompt);
986
1083
  }
987
1084
  /**
988
1085
  * Unregister ephemeral agents and clean up their processes.
@@ -990,7 +1087,7 @@ Respond to messages in a helpful and professional manner.
990
1087
  unregisterEphemeralAgents(agentDefs) {
991
1088
  for (const { id: agentId } of agentDefs) {
992
1089
  this.stopAgentProcesses(agentId);
993
- this.personaCache.delete(agentId);
1090
+ this.clearAgentPersonaCache(agentId);
994
1091
  delete this.config.agents[agentId];
995
1092
  }
996
1093
  }
@@ -998,7 +1095,7 @@ Respond to messages in a helpful and professional manner.
998
1095
  * Reload persona for an agent (clears cache)
999
1096
  */
1000
1097
  reloadPersona(agentId) {
1001
- this.personaCache.delete(agentId);
1098
+ this.clearAgentPersonaCache(agentId);
1002
1099
  // Stop all processes for this agent to force reload
1003
1100
  this.stopAgentProcesses(agentId);
1004
1101
  }