@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.
- package/CHANGELOG.md +8 -0
- package/README.md +15 -13
- package/dist/agent/agent-loop.d.ts +10 -1
- package/dist/agent/agent-loop.d.ts.map +1 -1
- package/dist/agent/agent-loop.js +221 -103
- package/dist/agent/agent-loop.js.map +1 -1
- package/dist/agent/backend-model-policy.d.ts +9 -0
- package/dist/agent/backend-model-policy.d.ts.map +1 -0
- package/dist/agent/backend-model-policy.js +21 -0
- package/dist/agent/backend-model-policy.js.map +1 -0
- package/dist/agent/backend-model-runner-factory.d.ts +27 -0
- package/dist/agent/backend-model-runner-factory.d.ts.map +1 -0
- package/dist/agent/backend-model-runner-factory.js +85 -0
- package/dist/agent/backend-model-runner-factory.js.map +1 -0
- package/dist/agent/cline-cli-adapter.d.ts +124 -0
- package/dist/agent/cline-cli-adapter.d.ts.map +1 -0
- package/dist/agent/cline-cli-adapter.js +1040 -0
- package/dist/agent/cline-cli-adapter.js.map +1 -0
- package/dist/agent/cline-native-tool-policy.d.ts +3 -0
- package/dist/agent/cline-native-tool-policy.d.ts.map +1 -0
- package/dist/agent/cline-native-tool-policy.js +50 -0
- package/dist/agent/cline-native-tool-policy.js.map +1 -0
- package/dist/agent/code-act/constants.d.ts +1 -1
- package/dist/agent/code-act/constants.d.ts.map +1 -1
- package/dist/agent/code-act/constants.js +13 -1
- package/dist/agent/code-act/constants.js.map +1 -1
- package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
- package/dist/agent/code-act/host-bridge.js +35 -74
- package/dist/agent/code-act/host-bridge.js.map +1 -1
- package/dist/agent/codex-app-server-process.d.ts +5 -0
- package/dist/agent/codex-app-server-process.d.ts.map +1 -1
- package/dist/agent/codex-app-server-process.js +30 -0
- package/dist/agent/codex-app-server-process.js.map +1 -1
- package/dist/agent/codex-auxiliary-tools.d.ts +17 -0
- package/dist/agent/codex-auxiliary-tools.d.ts.map +1 -0
- package/dist/agent/codex-auxiliary-tools.js +267 -0
- package/dist/agent/codex-auxiliary-tools.js.map +1 -0
- package/dist/agent/codex-home.d.ts.map +1 -1
- package/dist/agent/codex-home.js +1 -0
- package/dist/agent/codex-home.js.map +1 -1
- package/dist/agent/gateway-tool-catalog.d.ts +14 -0
- package/dist/agent/gateway-tool-catalog.d.ts.map +1 -0
- package/dist/agent/gateway-tool-catalog.js +41 -0
- package/dist/agent/gateway-tool-catalog.js.map +1 -0
- package/dist/agent/gateway-tool-executor.d.ts +12 -1
- package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
- package/dist/agent/gateway-tool-executor.js +149 -15
- package/dist/agent/gateway-tool-executor.js.map +1 -1
- package/dist/agent/gateway-tools.md +5 -7
- package/dist/agent/managed-agent-runtime-sync.d.ts.map +1 -1
- package/dist/agent/managed-agent-runtime-sync.js +17 -3
- package/dist/agent/managed-agent-runtime-sync.js.map +1 -1
- package/dist/agent/managed-agent-validation.js +1 -1
- package/dist/agent/managed-agent-validation.js.map +1 -1
- package/dist/agent/model-runner.d.ts +11 -1
- package/dist/agent/model-runner.d.ts.map +1 -1
- package/dist/agent/model-runner.js +12 -1
- package/dist/agent/model-runner.js.map +1 -1
- package/dist/agent/session-pool.d.ts +10 -9
- package/dist/agent/session-pool.d.ts.map +1 -1
- package/dist/agent/session-pool.js +12 -47
- package/dist/agent/session-pool.js.map +1 -1
- package/dist/agent/tool-registry.d.ts +6 -4
- package/dist/agent/tool-registry.d.ts.map +1 -1
- package/dist/agent/tool-registry.js +62 -30
- package/dist/agent/tool-registry.js.map +1 -1
- package/dist/agent/types.d.ts +36 -4
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/graph-api.d.ts.map +1 -1
- package/dist/api/graph-api.js +15 -5
- package/dist/api/graph-api.js.map +1 -1
- package/dist/api/index.d.ts +10 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +7 -16
- package/dist/api/index.js.map +1 -1
- package/dist/cli/commands/connector.d.ts +6 -1
- package/dist/cli/commands/connector.d.ts.map +1 -1
- package/dist/cli/commands/connector.js +61 -45
- package/dist/cli/commands/connector.js.map +1 -1
- package/dist/cli/commands/init.d.ts +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +43 -10
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +12 -0
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +22 -0
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +79 -28
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/start.d.ts +13 -9
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +190 -97
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +4 -0
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/config/config-manager.d.ts.map +1 -1
- package/dist/cli/config/config-manager.js +63 -14
- package/dist/cli/config/config-manager.js.map +1 -1
- package/dist/cli/config/types.d.ts +12 -5
- package/dist/cli/config/types.d.ts.map +1 -1
- package/dist/cli/config/types.js +3 -4
- package/dist/cli/config/types.js.map +1 -1
- package/dist/cli/index.js +6 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/runtime/agent-loop-init.d.ts +1 -1
- package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
- package/dist/cli/runtime/agent-loop-init.js +8 -3
- package/dist/cli/runtime/agent-loop-init.js.map +1 -1
- package/dist/cli/runtime/api-routes-init.d.ts +38 -1
- package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
- package/dist/cli/runtime/api-routes-init.js +150 -30
- package/dist/cli/runtime/api-routes-init.js.map +1 -1
- package/dist/cli/runtime/api-server-init.d.ts +4 -0
- package/dist/cli/runtime/api-server-init.d.ts.map +1 -1
- package/dist/cli/runtime/api-server-init.js +3 -1
- package/dist/cli/runtime/api-server-init.js.map +1 -1
- package/dist/cli/runtime/connector-bootstrap.d.ts +8 -0
- package/dist/cli/runtime/connector-bootstrap.d.ts.map +1 -0
- package/dist/cli/runtime/connector-bootstrap.js +14 -0
- package/dist/cli/runtime/connector-bootstrap.js.map +1 -0
- package/dist/cli/runtime/connector-init.d.ts +4 -1
- package/dist/cli/runtime/connector-init.d.ts.map +1 -1
- package/dist/cli/runtime/connector-init.js +2 -8
- package/dist/cli/runtime/connector-init.js.map +1 -1
- package/dist/cli/runtime/envelope-bootstrap.d.ts +2 -1
- package/dist/cli/runtime/envelope-bootstrap.d.ts.map +1 -1
- package/dist/cli/runtime/envelope-bootstrap.js +7 -15
- package/dist/cli/runtime/envelope-bootstrap.js.map +1 -1
- package/dist/cli/runtime/gateway-init.d.ts +1 -1
- package/dist/cli/runtime/gateway-init.d.ts.map +1 -1
- package/dist/cli/runtime/gateway-init.js.map +1 -1
- package/dist/cli/runtime/mama-core-init.d.ts +10 -2
- package/dist/cli/runtime/mama-core-init.d.ts.map +1 -1
- package/dist/cli/runtime/mama-core-init.js +52 -68
- package/dist/cli/runtime/mama-core-init.js.map +1 -1
- package/dist/cli/runtime/memory-agent-init.d.ts.map +1 -1
- package/dist/cli/runtime/memory-agent-init.js +18 -5
- package/dist/cli/runtime/memory-agent-init.js.map +1 -1
- package/dist/cli/runtime/scheduler-init.d.ts +4 -0
- package/dist/cli/runtime/scheduler-init.d.ts.map +1 -1
- package/dist/cli/runtime/scheduler-init.js +24 -3
- package/dist/cli/runtime/scheduler-init.js.map +1 -1
- package/dist/cli/runtime/shutdown.d.ts +4 -0
- package/dist/cli/runtime/shutdown.d.ts.map +1 -1
- package/dist/cli/runtime/shutdown.js +30 -6
- package/dist/cli/runtime/shutdown.js.map +1 -1
- package/dist/cli/runtime/utilities.d.ts +2 -0
- package/dist/cli/runtime/utilities.d.ts.map +1 -1
- package/dist/cli/runtime/utilities.js +33 -0
- package/dist/cli/runtime/utilities.js.map +1 -1
- package/dist/connectors/index.d.ts +4 -1
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +3 -2
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/private-connector-policy.d.ts +150 -0
- package/dist/connectors/private-connector-policy.d.ts.map +1 -0
- package/dist/connectors/private-connector-policy.js +289 -0
- package/dist/connectors/private-connector-policy.js.map +1 -0
- package/dist/connectors/private-prompt-overlay.d.ts +17 -0
- package/dist/connectors/private-prompt-overlay.d.ts.map +1 -0
- package/dist/connectors/private-prompt-overlay.js +156 -0
- package/dist/connectors/private-prompt-overlay.js.map +1 -0
- package/dist/db/migrations/operator-task-external-lifecycle.d.ts +8 -0
- package/dist/db/migrations/operator-task-external-lifecycle.d.ts.map +1 -0
- package/dist/db/migrations/operator-task-external-lifecycle.js +169 -0
- package/dist/db/migrations/operator-task-external-lifecycle.js.map +1 -0
- package/dist/envelope/enforcer.js +8 -7
- package/dist/envelope/enforcer.js.map +1 -1
- package/dist/envelope/reactive-config.d.ts.map +1 -1
- package/dist/envelope/reactive-config.js +2 -1
- package/dist/envelope/reactive-config.js.map +1 -1
- package/dist/envelope/tool-connector-scope.d.ts.map +1 -1
- package/dist/envelope/tool-connector-scope.js +4 -0
- package/dist/envelope/tool-connector-scope.js.map +1 -1
- package/dist/gateways/discord.d.ts.map +1 -1
- package/dist/gateways/discord.js +11 -6
- package/dist/gateways/discord.js.map +1 -1
- package/dist/gateways/image-analyzer.d.ts +5 -0
- package/dist/gateways/image-analyzer.d.ts.map +1 -1
- package/dist/gateways/image-analyzer.js +8 -0
- package/dist/gateways/image-analyzer.js.map +1 -1
- package/dist/gateways/message-router.d.ts +11 -1
- package/dist/gateways/message-router.d.ts.map +1 -1
- package/dist/gateways/message-router.js +146 -52
- package/dist/gateways/message-router.js.map +1 -1
- package/dist/gateways/slack.d.ts.map +1 -1
- package/dist/gateways/slack.js +6 -2
- package/dist/gateways/slack.js.map +1 -1
- package/dist/gateways/telegram-message-ledger.d.ts +8 -1
- package/dist/gateways/telegram-message-ledger.d.ts.map +1 -1
- package/dist/gateways/telegram-message-ledger.js +141 -24
- package/dist/gateways/telegram-message-ledger.js.map +1 -1
- package/dist/gateways/telegram.d.ts +2 -0
- package/dist/gateways/telegram.d.ts.map +1 -1
- package/dist/gateways/telegram.js +19 -12
- package/dist/gateways/telegram.js.map +1 -1
- package/dist/gateways/types.d.ts +1 -1
- package/dist/gateways/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/multi-agent/agent-process-manager.d.ts +14 -4
- package/dist/multi-agent/agent-process-manager.d.ts.map +1 -1
- package/dist/multi-agent/agent-process-manager.js +144 -47
- package/dist/multi-agent/agent-process-manager.js.map +1 -1
- package/dist/multi-agent/dashboard-agent-persona.d.ts +3 -3
- package/dist/multi-agent/dashboard-agent-persona.d.ts.map +1 -1
- package/dist/multi-agent/dashboard-agent-persona.js +10 -13
- package/dist/multi-agent/dashboard-agent-persona.js.map +1 -1
- package/dist/multi-agent/memory-agent-persona.d.ts +1 -1
- package/dist/multi-agent/memory-agent-persona.d.ts.map +1 -1
- package/dist/multi-agent/memory-agent-persona.js +1 -1
- package/dist/multi-agent/runtime-process.d.ts +3 -0
- package/dist/multi-agent/runtime-process.d.ts.map +1 -1
- package/dist/multi-agent/runtime-process.js +10 -2
- package/dist/multi-agent/runtime-process.js.map +1 -1
- package/dist/multi-agent/types.d.ts +12 -2
- package/dist/multi-agent/types.d.ts.map +1 -1
- package/dist/multi-agent/types.js.map +1 -1
- package/dist/multi-agent/wiki-agent-persona.d.ts +2 -2
- package/dist/multi-agent/wiki-agent-persona.js +2 -2
- package/dist/multi-agent/workflow-types.d.ts +1 -1
- package/dist/multi-agent/workflow-types.d.ts.map +1 -1
- package/dist/onboarding/complete-autonomous-prompt.d.ts +1 -1
- package/dist/onboarding/complete-autonomous-prompt.d.ts.map +1 -1
- package/dist/onboarding/complete-autonomous-prompt.js +9 -9
- package/dist/operator/board-slot-instructions.d.ts +1 -1
- package/dist/operator/board-slot-instructions.js +2 -2
- package/dist/operator/board-slot-instructions.js.map +1 -1
- package/dist/operator/briefs.d.ts +3 -0
- package/dist/operator/briefs.d.ts.map +1 -1
- package/dist/operator/briefs.js +64 -3
- package/dist/operator/briefs.js.map +1 -1
- package/dist/operator/console-brief.d.ts +6 -3
- package/dist/operator/console-brief.d.ts.map +1 -1
- package/dist/operator/console-brief.js +39 -9
- package/dist/operator/console-brief.js.map +1 -1
- package/dist/operator/external-lifecycle-candidates.d.ts +56 -0
- package/dist/operator/external-lifecycle-candidates.d.ts.map +1 -0
- package/dist/operator/external-lifecycle-candidates.js +415 -0
- package/dist/operator/external-lifecycle-candidates.js.map +1 -0
- package/dist/operator/external-lifecycle.d.ts +82 -0
- package/dist/operator/external-lifecycle.d.ts.map +1 -0
- package/dist/operator/external-lifecycle.js +27 -0
- package/dist/operator/external-lifecycle.js.map +1 -0
- package/dist/operator/file-coordination.d.ts +7 -0
- package/dist/operator/file-coordination.d.ts.map +1 -0
- package/dist/operator/file-coordination.js +84 -0
- package/dist/operator/file-coordination.js.map +1 -0
- package/dist/operator/operator-trigger-loop.d.ts +19 -4
- package/dist/operator/operator-trigger-loop.d.ts.map +1 -1
- package/dist/operator/operator-trigger-loop.js +151 -23
- package/dist/operator/operator-trigger-loop.js.map +1 -1
- package/dist/operator/pending-report-store.d.ts +62 -3
- package/dist/operator/pending-report-store.d.ts.map +1 -1
- package/dist/operator/pending-report-store.js +297 -40
- package/dist/operator/pending-report-store.js.map +1 -1
- package/dist/operator/report-carry-delivery.d.ts +35 -0
- package/dist/operator/report-carry-delivery.d.ts.map +1 -0
- package/dist/operator/report-carry-delivery.js +55 -0
- package/dist/operator/report-carry-delivery.js.map +1 -0
- package/dist/operator/report-carry.d.ts +50 -30
- package/dist/operator/report-carry.d.ts.map +1 -1
- package/dist/operator/report-carry.js +323 -71
- package/dist/operator/report-carry.js.map +1 -1
- package/dist/operator/situation-report.d.ts +30 -11
- package/dist/operator/situation-report.d.ts.map +1 -1
- package/dist/operator/situation-report.js +79 -35
- package/dist/operator/situation-report.js.map +1 -1
- package/dist/operator/task-ledger.d.ts +101 -0
- package/dist/operator/task-ledger.d.ts.map +1 -1
- package/dist/operator/task-ledger.js +599 -124
- package/dist/operator/task-ledger.js.map +1 -1
- package/dist/operator/temporal-runtime.d.ts.map +1 -1
- package/dist/operator/temporal-runtime.js +3 -1
- package/dist/operator/temporal-runtime.js.map +1 -1
- package/dist/operator/temporal-worker.js +1 -1
- package/dist/operator/trigger-author.d.ts +13 -1
- package/dist/operator/trigger-author.d.ts.map +1 -1
- package/dist/operator/trigger-author.js +35 -0
- package/dist/operator/trigger-author.js.map +1 -1
- package/dist/operator/worker-run.d.ts +1 -1
- package/dist/operator/worker-run.d.ts.map +1 -1
- package/dist/operator/worker-run.js +27 -9
- package/dist/operator/worker-run.js.map +1 -1
- package/dist/operator/workorder-consumer.d.ts +12 -1
- package/dist/operator/workorder-consumer.d.ts.map +1 -1
- package/dist/operator/workorder-consumer.js +125 -6
- package/dist/operator/workorder-consumer.js.map +1 -1
- package/dist/operator/workorder-hooks.d.ts +7 -2
- package/dist/operator/workorder-hooks.d.ts.map +1 -1
- package/dist/operator/workorder-hooks.js +22 -0
- package/dist/operator/workorder-hooks.js.map +1 -1
- package/dist/operator/workorder-publishers.d.ts +9 -2
- package/dist/operator/workorder-publishers.d.ts.map +1 -1
- package/dist/operator/workorder-publishers.js +167 -5
- package/dist/operator/workorder-publishers.js.map +1 -1
- package/dist/scheduler/cron-worker.d.ts +8 -4
- package/dist/scheduler/cron-worker.d.ts.map +1 -1
- package/dist/scheduler/cron-worker.js +56 -39
- package/dist/scheduler/cron-worker.js.map +1 -1
- package/dist/setup/setup-actions.d.ts +26 -0
- package/dist/setup/setup-actions.d.ts.map +1 -0
- package/dist/setup/setup-actions.js +371 -0
- package/dist/setup/setup-actions.js.map +1 -0
- package/dist/setup/setup-prompt.d.ts +1 -1
- package/dist/setup/setup-prompt.d.ts.map +1 -1
- package/dist/setup/setup-prompt.js +28 -33
- package/dist/setup/setup-prompt.js.map +1 -1
- package/dist/setup/setup-server.d.ts +6 -1
- package/dist/setup/setup-server.d.ts.map +1 -1
- package/dist/setup/setup-server.js +55 -9
- package/dist/setup/setup-server.js.map +1 -1
- package/dist/setup/setup-websocket.d.ts +14 -2
- package/dist/setup/setup-websocket.d.ts.map +1 -1
- package/dist/setup/setup-websocket.js +121 -37
- package/dist/setup/setup-websocket.js.map +1 -1
- package/package.json +2 -2
- package/public/setup.html +9 -6
- package/public/viewer/js/modules/agents.js +5 -4
- package/public/viewer/js/modules/settings.js +34 -10
- package/public/viewer/src/modules/agents.ts +5 -4
- package/public/viewer/src/modules/settings.ts +49 -11
- package/public/viewer/src/utils/api.ts +3 -2
- 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?:
|
|
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
|
|
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
|
|
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;
|
|
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
|
|
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
|
|
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
|
|
295
|
-
if (!this.isEphemeralAgent(
|
|
296
|
-
this.personaCache.delete(
|
|
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'
|
|
330
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
523
|
-
|
|
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(
|
|
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(
|
|
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
|
|
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
|
-
|
|
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
|
|
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 ===
|
|
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
|
-
|
|
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.
|
|
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.
|
|
1098
|
+
this.clearAgentPersonaCache(agentId);
|
|
1002
1099
|
// Stop all processes for this agent to force reload
|
|
1003
1100
|
this.stopAgentProcesses(agentId);
|
|
1004
1101
|
}
|