@jungjaehoon/mama-os 0.25.0 → 0.26.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.
Files changed (70) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +37 -17
  3. package/dist/agent/agent-loop.d.ts.map +1 -1
  4. package/dist/agent/agent-loop.js +2 -0
  5. package/dist/agent/agent-loop.js.map +1 -1
  6. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  7. package/dist/agent/code-act/host-bridge.js +54 -0
  8. package/dist/agent/code-act/host-bridge.js.map +1 -1
  9. package/dist/agent/code-act/tool-policy.d.ts +3 -1
  10. package/dist/agent/code-act/tool-policy.d.ts.map +1 -1
  11. package/dist/agent/code-act/tool-policy.js +3 -1
  12. package/dist/agent/code-act/tool-policy.js.map +1 -1
  13. package/dist/agent/drive-tools.d.ts +53 -0
  14. package/dist/agent/drive-tools.d.ts.map +1 -0
  15. package/dist/agent/drive-tools.js +261 -0
  16. package/dist/agent/drive-tools.js.map +1 -0
  17. package/dist/agent/gateway-tool-executor.d.ts +1 -0
  18. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  19. package/dist/agent/gateway-tool-executor.js +50 -1
  20. package/dist/agent/gateway-tool-executor.js.map +1 -1
  21. package/dist/agent/gateway-tools.md +5 -0
  22. package/dist/agent/tool-registry.d.ts.map +1 -1
  23. package/dist/agent/tool-registry.js +29 -0
  24. package/dist/agent/tool-registry.js.map +1 -1
  25. package/dist/agent/types.d.ts +20 -2
  26. package/dist/agent/types.d.ts.map +1 -1
  27. package/dist/agent/types.js.map +1 -1
  28. package/dist/cli/config/types.d.ts.map +1 -1
  29. package/dist/cli/config/types.js +7 -3
  30. package/dist/cli/config/types.js.map +1 -1
  31. package/dist/cli/runtime/envelope-bootstrap.d.ts.map +1 -1
  32. package/dist/cli/runtime/envelope-bootstrap.js +8 -1
  33. package/dist/cli/runtime/envelope-bootstrap.js.map +1 -1
  34. package/dist/connectors/drive/index.d.ts +1 -1
  35. package/dist/connectors/drive/index.d.ts.map +1 -1
  36. package/dist/connectors/drive/index.js +100 -56
  37. package/dist/connectors/drive/index.js.map +1 -1
  38. package/dist/connectors/framework/gws-utils.d.ts +3 -0
  39. package/dist/connectors/framework/gws-utils.d.ts.map +1 -1
  40. package/dist/connectors/framework/gws-utils.js +17 -0
  41. package/dist/connectors/framework/gws-utils.js.map +1 -1
  42. package/dist/envelope/enforcer.d.ts.map +1 -1
  43. package/dist/envelope/enforcer.js +18 -3
  44. package/dist/envelope/enforcer.js.map +1 -1
  45. package/dist/envelope/reactive-config.d.ts +1 -1
  46. package/dist/envelope/reactive-config.d.ts.map +1 -1
  47. package/dist/envelope/reactive-config.js +10 -2
  48. package/dist/envelope/reactive-config.js.map +1 -1
  49. package/dist/envelope/types.d.ts +1 -1
  50. package/dist/envelope/types.d.ts.map +1 -1
  51. package/dist/envelope/types.js.map +1 -1
  52. package/dist/gateways/message-router.d.ts +1 -0
  53. package/dist/gateways/message-router.d.ts.map +1 -1
  54. package/dist/gateways/message-router.js +7 -1
  55. package/dist/gateways/message-router.js.map +1 -1
  56. package/dist/gateways/telegram-media.d.ts +28 -0
  57. package/dist/gateways/telegram-media.d.ts.map +1 -0
  58. package/dist/gateways/telegram-media.js +165 -0
  59. package/dist/gateways/telegram-media.js.map +1 -0
  60. package/dist/gateways/telegram-response-presenter.d.ts +31 -0
  61. package/dist/gateways/telegram-response-presenter.d.ts.map +1 -0
  62. package/dist/gateways/telegram-response-presenter.js +153 -0
  63. package/dist/gateways/telegram-response-presenter.js.map +1 -0
  64. package/dist/gateways/telegram.d.ts +10 -3
  65. package/dist/gateways/telegram.d.ts.map +1 -1
  66. package/dist/gateways/telegram.js +174 -90
  67. package/dist/gateways/telegram.js.map +1 -1
  68. package/dist/gateways/types.d.ts +4 -2
  69. package/dist/gateways/types.d.ts.map +1 -1
  70. package/package.json +1 -1
@@ -61,6 +61,8 @@ const mama_core_1 = require("@jungjaehoon/mama-core");
61
61
  const security_monitor_js_1 = require("../security/security-monitor.js");
62
62
  const secret_filter_js_1 = require("../memory/secret-filter.js");
63
63
  const scope_context_js_1 = require("../memory/scope-context.js");
64
+ const drive_tools_js_1 = require("./drive-tools.js");
65
+ const untrusted_content_js_1 = require("../utils/untrusted-content.js");
64
66
  const types_js_1 = require("./types.js");
65
67
  const sqlite_js_1 = __importDefault(require("../sqlite.js"));
66
68
  const mama_tool_handlers_js_1 = require("./mama-tool-handlers.js");
@@ -368,6 +370,7 @@ const VALID_TOOLS = tool_registry_js_1.ToolRegistry.getValidToolNames();
368
370
  const SENSITIVE_KEYS = ['token', 'bot_token', 'app_token', 'api_token', 'api_key', 'secret'];
369
371
  const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
370
372
  class GatewayToolExecutor {
373
+ driveTools = new drive_tools_js_1.DriveToolService();
371
374
  mamaApi = null;
372
375
  mamaDbPath;
373
376
  sessionStore;
@@ -1489,6 +1492,13 @@ class GatewayToolExecutor {
1489
1492
  if (!VALID_TOOLS.includes(toolName)) {
1490
1493
  throw new types_js_1.AgentError(`Unknown tool: ${toolName}. Valid tools: ${VALID_TOOLS.join(', ')}`, 'UNKNOWN_TOOL', undefined, false);
1491
1494
  }
1495
+ if (toolName.startsWith('drive_') &&
1496
+ this.getExecutionState().agentContext?.roleName !== 'owner_console') {
1497
+ return {
1498
+ success: false,
1499
+ error: 'Permission denied: Google Drive tools are restricted to owner_console.',
1500
+ };
1501
+ }
1492
1502
  // Structurally disallowed tools are per-call policy carried by the execution
1493
1503
  // context (a shared executor serves many agents with different blocks).
1494
1504
  const activeDisallowed = this.getExecutionState()?.disallowedGatewayTools;
@@ -1538,6 +1548,31 @@ class GatewayToolExecutor {
1538
1548
  return await this.executeSlackSend(input);
1539
1549
  case 'telegram_send':
1540
1550
  return await this.executeTelegramSend(input);
1551
+ case 'drive_list_drives':
1552
+ return {
1553
+ success: true,
1554
+ result: (0, drive_tools_js_1.asUntrustedDriveEvidence)(await this.driveTools.listDrives()),
1555
+ };
1556
+ case 'drive_browse':
1557
+ return {
1558
+ success: true,
1559
+ result: (0, drive_tools_js_1.asUntrustedDriveEvidence)(await this.driveTools.browse(input)),
1560
+ };
1561
+ case 'drive_find_folder':
1562
+ return {
1563
+ success: true,
1564
+ result: (0, drive_tools_js_1.asUntrustedDriveEvidence)(await this.driveTools.findFolder(input)),
1565
+ };
1566
+ case 'drive_download':
1567
+ return {
1568
+ success: true,
1569
+ result: (0, drive_tools_js_1.asUntrustedDriveEvidence)(await this.driveTools.download(input)),
1570
+ };
1571
+ case 'drive_upload':
1572
+ return {
1573
+ success: true,
1574
+ result: (0, drive_tools_js_1.asUntrustedDriveEvidence)(await this.driveTools.upload(input)),
1575
+ };
1541
1576
  // Browser tools
1542
1577
  case 'browser_navigate':
1543
1578
  return await this.executeBrowserNavigate(input);
@@ -3475,6 +3510,7 @@ class GatewayToolExecutor {
3475
3510
  try {
3476
3511
  policy = projectCodeActToolPolicy({
3477
3512
  tier,
3513
+ roleName: state.agentContext?.roleName,
3478
3514
  role: state.agentContext?.role,
3479
3515
  disallowedTools: state.disallowedGatewayTools,
3480
3516
  requestedAllowedTools: input.allowedTools,
@@ -3497,12 +3533,25 @@ class GatewayToolExecutor {
3497
3533
  parentToolName: 'code_act',
3498
3534
  };
3499
3535
  const bridge = new HostBridge(this, this.roleManager, nestedExecutionContext);
3536
+ let usedUntrustedDriveEvidence = false;
3537
+ bridge.onToolUse = (toolName, _toolInput, result) => {
3538
+ if (result !== undefined && toolName.startsWith('drive_') && toolName !== 'drive_upload') {
3539
+ usedUntrustedDriveEvidence = true;
3540
+ }
3541
+ };
3500
3542
  bridge.injectInto(sandbox, policy.names);
3501
3543
  const result = await sandbox.execute(input.code);
3544
+ const successfulMessage = JSON.stringify({
3545
+ value: result.value,
3546
+ logs: result.logs,
3547
+ metrics: result.metrics,
3548
+ });
3502
3549
  return {
3503
3550
  success: result.success,
3504
3551
  message: result.success
3505
- ? JSON.stringify({ value: result.value, logs: result.logs, metrics: result.metrics })
3552
+ ? usedUntrustedDriveEvidence
3553
+ ? (0, untrusted_content_js_1.wrapUntrustedContent)('google-drive-code-act', successfulMessage)
3554
+ : successfulMessage
3506
3555
  : `Code-Act error: ${result.error?.message || 'Unknown error'}`,
3507
3556
  };
3508
3557
  }