@jungjaehoon/mama-os 0.35.0 → 0.36.0
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/dist/agent/backend-model-policy.d.ts +28 -0
- package/dist/agent/backend-model-policy.d.ts.map +1 -1
- package/dist/agent/backend-model-policy.js +87 -2
- package/dist/agent/backend-model-policy.js.map +1 -1
- package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
- package/dist/agent/code-act/host-bridge.js +40 -0
- package/dist/agent/code-act/host-bridge.js.map +1 -1
- package/dist/agent/gateway-tool-executor.d.ts +3 -1
- package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
- package/dist/agent/gateway-tool-executor.js +117 -0
- package/dist/agent/gateway-tool-executor.js.map +1 -1
- package/dist/agent/gateway-tools.md +5 -0
- package/dist/agent/managed-agent-runtime-sync.d.ts.map +1 -1
- package/dist/agent/managed-agent-runtime-sync.js +37 -8
- package/dist/agent/managed-agent-runtime-sync.js.map +1 -1
- package/dist/agent/role-manager.d.ts.map +1 -1
- package/dist/agent/role-manager.js +4 -5
- package/dist/agent/role-manager.js.map +1 -1
- package/dist/agent/tool-registry.d.ts.map +1 -1
- package/dist/agent/tool-registry.js +50 -0
- package/dist/agent/tool-registry.js.map +1 -1
- package/dist/agent/types.d.ts +40 -2
- 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 +68 -4
- package/dist/api/graph-api.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +10 -9
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/start.d.ts +6 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +25 -2
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/config/config-manager.d.ts.map +1 -1
- package/dist/cli/config/config-manager.js +34 -14
- package/dist/cli/config/config-manager.js.map +1 -1
- package/dist/cli/config/types.d.ts.map +1 -1
- package/dist/cli/config/types.js +5 -0
- package/dist/cli/config/types.js.map +1 -1
- package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
- package/dist/cli/runtime/agent-loop-init.js +0 -8
- package/dist/cli/runtime/agent-loop-init.js.map +1 -1
- package/dist/cli/runtime/gateway-init.d.ts +6 -1
- package/dist/cli/runtime/gateway-init.d.ts.map +1 -1
- package/dist/cli/runtime/gateway-init.js +4 -1
- package/dist/cli/runtime/gateway-init.js.map +1 -1
- package/dist/cli/runtime/owner-backfill.d.ts +24 -0
- package/dist/cli/runtime/owner-backfill.d.ts.map +1 -0
- package/dist/cli/runtime/owner-backfill.js +24 -0
- package/dist/cli/runtime/owner-backfill.js.map +1 -0
- package/dist/envelope/reactive-config.js +1 -1
- package/dist/envelope/reactive-config.js.map +1 -1
- package/dist/gateways/discord.d.ts +8 -0
- package/dist/gateways/discord.d.ts.map +1 -1
- package/dist/gateways/discord.js +8 -2
- package/dist/gateways/discord.js.map +1 -1
- package/dist/gateways/member-candidate-store.d.ts +26 -0
- package/dist/gateways/member-candidate-store.d.ts.map +1 -0
- package/dist/gateways/member-candidate-store.js +90 -0
- package/dist/gateways/member-candidate-store.js.map +1 -0
- package/dist/gateways/message-router.d.ts.map +1 -1
- package/dist/gateways/message-router.js +4 -1
- package/dist/gateways/message-router.js.map +1 -1
- package/dist/gateways/principal.d.ts +11 -1
- package/dist/gateways/principal.d.ts.map +1 -1
- package/dist/gateways/principal.js +22 -3
- package/dist/gateways/principal.js.map +1 -1
- package/dist/gateways/slack.d.ts +8 -0
- package/dist/gateways/slack.d.ts.map +1 -1
- package/dist/gateways/slack.js +6 -1
- package/dist/gateways/slack.js.map +1 -1
- package/dist/gateways/telegram.d.ts +7 -0
- package/dist/gateways/telegram.d.ts.map +1 -1
- package/dist/gateways/telegram.js +20 -1
- package/dist/gateways/telegram.js.map +1 -1
- package/dist/observability/code-audit.d.ts.map +1 -1
- package/dist/observability/code-audit.js +11 -3
- package/dist/observability/code-audit.js.map +1 -1
- package/package.json +1 -1
- package/public/viewer/sw.js +2 -2
package/dist/api/graph-api.js
CHANGED
|
@@ -2437,6 +2437,7 @@ async function handleUpdateConfigRequest(req, res, options = {}) {
|
|
|
2437
2437
|
}));
|
|
2438
2438
|
return;
|
|
2439
2439
|
}
|
|
2440
|
+
const modelPolicyEntries = rescopeModelsForConfigSave(updatedConfig);
|
|
2440
2441
|
const errors = validateConfigUpdate(updatedConfig);
|
|
2441
2442
|
if (errors.length > 0) {
|
|
2442
2443
|
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
@@ -2447,6 +2448,10 @@ async function handleUpdateConfigRequest(req, res, options = {}) {
|
|
|
2447
2448
|
}));
|
|
2448
2449
|
return;
|
|
2449
2450
|
}
|
|
2451
|
+
(0, backend_model_policy_js_1.emitBackendModelWarnings)([
|
|
2452
|
+
...modelPolicyEntries.changes,
|
|
2453
|
+
...modelPolicyEntries.warnings,
|
|
2454
|
+
]);
|
|
2450
2455
|
saveMAMAConfig(updatedConfig);
|
|
2451
2456
|
if (updatedConfig.multi_agent && options.applyMultiAgentConfig) {
|
|
2452
2457
|
try {
|
|
@@ -2473,6 +2478,63 @@ async function handleUpdateConfigRequest(req, res, options = {}) {
|
|
|
2473
2478
|
}));
|
|
2474
2479
|
}
|
|
2475
2480
|
}
|
|
2481
|
+
function rescopeModelsForConfigSave(config) {
|
|
2482
|
+
if (!isRecord(config.agent) || typeof config.agent.backend !== 'string') {
|
|
2483
|
+
return { changes: [], warnings: [] };
|
|
2484
|
+
}
|
|
2485
|
+
const backend = config.agent.backend.toLowerCase();
|
|
2486
|
+
if (!supportedManagedBackends.includes(backend)) {
|
|
2487
|
+
return { changes: [], warnings: [] };
|
|
2488
|
+
}
|
|
2489
|
+
const roles = isRecord(config.roles) ? config.roles : undefined;
|
|
2490
|
+
const definitions = roles && isRecord(roles.definitions) ? roles.definitions : {};
|
|
2491
|
+
const roleModels = Object.fromEntries(Object.entries(definitions)
|
|
2492
|
+
.filter((entry) => isRecord(entry[1]))
|
|
2493
|
+
.map(([name, definition]) => [
|
|
2494
|
+
name,
|
|
2495
|
+
typeof definition.model === 'string' ? definition.model : undefined,
|
|
2496
|
+
]));
|
|
2497
|
+
const scopedModels = (0, backend_model_policy_js_1.rescopeConfigModels)({
|
|
2498
|
+
backend: backend,
|
|
2499
|
+
agentModel: typeof config.agent.model === 'string' ? config.agent.model : undefined,
|
|
2500
|
+
roleModels,
|
|
2501
|
+
});
|
|
2502
|
+
config.agent.model = scopedModels.agentModel;
|
|
2503
|
+
for (const [name, model] of Object.entries(scopedModels.roleModels)) {
|
|
2504
|
+
const definition = definitions[name];
|
|
2505
|
+
if (isRecord(definition)) {
|
|
2506
|
+
definition.model = model;
|
|
2507
|
+
}
|
|
2508
|
+
}
|
|
2509
|
+
const changes = [...scopedModels.changes];
|
|
2510
|
+
const warnings = [...(scopedModels.warnings ?? [])];
|
|
2511
|
+
const multiAgent = isRecord(config.multi_agent) ? config.multi_agent : undefined;
|
|
2512
|
+
const managedAgents = multiAgent && isRecord(multiAgent.agents) ? multiAgent.agents : {};
|
|
2513
|
+
for (const [agentId, agentConfig] of Object.entries(managedAgents)) {
|
|
2514
|
+
if (!isRecord(agentConfig)) {
|
|
2515
|
+
continue;
|
|
2516
|
+
}
|
|
2517
|
+
const effectiveBackend = typeof agentConfig.backend === 'string' ? agentConfig.backend.toLowerCase() : backend;
|
|
2518
|
+
if (!supportedManagedBackends.includes(effectiveBackend)) {
|
|
2519
|
+
continue;
|
|
2520
|
+
}
|
|
2521
|
+
const configuredModel = typeof agentConfig.model === 'string' ? agentConfig.model.trim() : undefined;
|
|
2522
|
+
const target = `multi_agent.agents.${agentId}.model`;
|
|
2523
|
+
const resolvedModel = (0, backend_model_policy_js_1.resolveBackendScopedModel)({
|
|
2524
|
+
backend: effectiveBackend,
|
|
2525
|
+
model: configuredModel,
|
|
2526
|
+
inheritedBackend: backend,
|
|
2527
|
+
inheritedModel: scopedModels.agentModel,
|
|
2528
|
+
warningTarget: target,
|
|
2529
|
+
onWarning: (warning) => warnings.push(warning),
|
|
2530
|
+
});
|
|
2531
|
+
agentConfig.model = resolvedModel;
|
|
2532
|
+
if (configuredModel && configuredModel !== resolvedModel) {
|
|
2533
|
+
changes.push({ target, from: configuredModel, to: resolvedModel });
|
|
2534
|
+
}
|
|
2535
|
+
}
|
|
2536
|
+
return { changes, warnings };
|
|
2537
|
+
}
|
|
2476
2538
|
function maskToken(token) {
|
|
2477
2539
|
if (!token || token.length < 4) {
|
|
2478
2540
|
return '***[redacted]***';
|
|
@@ -2697,10 +2759,11 @@ function validateConfigUpdate(config) {
|
|
|
2697
2759
|
if (config.agent.backend && config.agent.model && typeof config.agent.model === 'string') {
|
|
2698
2760
|
const backend = String(config.agent.backend).toLowerCase();
|
|
2699
2761
|
const model = config.agent.model;
|
|
2700
|
-
|
|
2762
|
+
const modelBackend = (0, backend_model_policy_js_1.backendForModel)(model);
|
|
2763
|
+
if (backend === 'claude' && modelBackend !== null && modelBackend !== 'claude') {
|
|
2701
2764
|
errors.push('agent.model must be a Claude model when agent.backend is "claude"');
|
|
2702
2765
|
}
|
|
2703
|
-
if (isCodexFamilyBackend(backend) &&
|
|
2766
|
+
if (isCodexFamilyBackend(backend) && modelBackend !== null && modelBackend !== 'codex') {
|
|
2704
2767
|
errors.push(`agent.model must be a Codex/OpenAI model when agent.backend is "${backend}"`);
|
|
2705
2768
|
}
|
|
2706
2769
|
}
|
|
@@ -2730,10 +2793,11 @@ function validateConfigUpdate(config) {
|
|
|
2730
2793
|
continue;
|
|
2731
2794
|
}
|
|
2732
2795
|
if (typeof modelRaw === 'string' && modelRaw.trim()) {
|
|
2733
|
-
|
|
2796
|
+
const modelBackend = (0, backend_model_policy_js_1.backendForModel)(modelRaw);
|
|
2797
|
+
if (backend === 'claude' && modelBackend !== null && modelBackend !== 'claude') {
|
|
2734
2798
|
errors.push(`multi_agent.agents.${agentId}.model must be a Claude model when backend is "claude"`);
|
|
2735
2799
|
}
|
|
2736
|
-
if (isCodexFamilyBackend(backend) &&
|
|
2800
|
+
if (isCodexFamilyBackend(backend) && modelBackend !== null && modelBackend !== 'codex') {
|
|
2737
2801
|
errors.push(`multi_agent.agents.${agentId}.model must be a Codex/OpenAI model when backend is "${backend}"`);
|
|
2738
2802
|
}
|
|
2739
2803
|
}
|