@myagentroam/agent 0.9.62 → 0.9.64

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 (119) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +4 -0
  3. package/dist/cli/codex-auth-file.js +268 -3
  4. package/dist/cli/main.js +427 -2
  5. package/dist/error.js +66 -2
  6. package/dist/host/contracts.js +20 -2
  7. package/dist/host/local-agent-host.js +146 -2
  8. package/dist/host/local-process-executor.js +39 -2
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.js +12 -2
  11. package/dist/model/anthropic-messages.js +474 -2
  12. package/dist/model/anthropic-thinking.js +33 -2
  13. package/dist/model/catalog-file.js +88 -2
  14. package/dist/model/configuration.js +137 -2
  15. package/dist/model/contracts.d.ts +2 -0
  16. package/dist/model/contracts.js +1 -2
  17. package/dist/model/http.js +529 -2
  18. package/dist/model/openai-responses.d.ts +2 -0
  19. package/dist/model/openai-responses.js +1602 -2
  20. package/dist/model/runtime-credential.js +35 -2
  21. package/dist/model/sse.js +199 -2
  22. package/dist/prompts/compact.js +25 -2
  23. package/dist/prompts/core.js +37 -2
  24. package/dist/prompts/execution-budget.js +10 -2
  25. package/dist/prompts/index.d.ts +3 -2
  26. package/dist/prompts/index.js +47 -2
  27. package/dist/prompts/modes.js +25 -2
  28. package/dist/prompts/output.js +1 -2
  29. package/dist/prompts/resources.d.ts +1 -1
  30. package/dist/prompts/resources.js +31 -2
  31. package/dist/prompts/subagent.d.ts +6 -0
  32. package/dist/prompts/subagent.js +29 -2
  33. package/dist/prompts/title.js +9 -2
  34. package/dist/prompts/workflow.js +32 -2
  35. package/dist/runtime/async-queue.js +62 -2
  36. package/dist/runtime/builtin-skills.js +19 -2
  37. package/dist/runtime/byted-ark-imagegen-skill.js +18 -2
  38. package/dist/runtime/codex-imagegen-skill.js +35 -2
  39. package/dist/runtime/compact.js +225 -2
  40. package/dist/runtime/context-gc-runtime.d.ts +35 -0
  41. package/dist/runtime/context-gc-runtime.js +163 -0
  42. package/dist/runtime/context-gc-tokens.d.ts +24 -0
  43. package/dist/runtime/context-gc-tokens.js +83 -0
  44. package/dist/runtime/context-gc.d.ts +66 -0
  45. package/dist/runtime/context-gc.js +909 -0
  46. package/dist/runtime/context-projection.d.ts +23 -0
  47. package/dist/runtime/context-projection.js +203 -0
  48. package/dist/runtime/environment-context.js +41 -2
  49. package/dist/runtime/execution-policy.js +13 -2
  50. package/dist/runtime/instructions.js +298 -2
  51. package/dist/runtime/normalize.js +40 -2
  52. package/dist/runtime/plan-output.js +95 -2
  53. package/dist/runtime/rollout-budget.d.ts +2 -0
  54. package/dist/runtime/rollout-budget.js +92 -2
  55. package/dist/runtime/token-budget.d.ts +2 -0
  56. package/dist/runtime/token-budget.js +44 -2
  57. package/dist/sdk/agent.js +1804 -2
  58. package/dist/sdk/types.d.ts +15 -5
  59. package/dist/sdk/types.js +1 -2
  60. package/dist/session/catalog.d.ts +5 -4
  61. package/dist/session/catalog.js +133 -2
  62. package/dist/session/context-gc-checkpoint.d.ts +148 -0
  63. package/dist/session/context-gc-checkpoint.js +665 -0
  64. package/dist/session/context-gc-replacements.d.ts +52 -0
  65. package/dist/session/context-gc-replacements.js +226 -0
  66. package/dist/session/context-gc-subagent.d.ts +43 -0
  67. package/dist/session/context-gc-subagent.js +267 -0
  68. package/dist/session/jsonl-store.d.ts +42 -4
  69. package/dist/session/jsonl-store.js +1657 -2
  70. package/dist/subagent/scheduler.d.ts +35 -2
  71. package/dist/subagent/scheduler.js +249 -2
  72. package/dist/subagent/session-controller.d.ts +94 -0
  73. package/dist/subagent/session-controller.js +675 -0
  74. package/dist/tools/agent-cancel.js +28 -2
  75. package/dist/tools/{task.d.ts → agent-message.d.ts} +2 -2
  76. package/dist/tools/agent-message.js +51 -0
  77. package/dist/tools/agent-start.js +84 -2
  78. package/dist/tools/agent-wait.js +53 -2
  79. package/dist/tools/apply-patch.js +478 -2
  80. package/dist/tools/code-mode.js +370 -2
  81. package/dist/tools/codex-image-gen.js +312 -2
  82. package/dist/tools/exec.js +455 -2
  83. package/dist/tools/execution-limits.d.ts +1 -0
  84. package/dist/tools/execution-limits.js +44 -2
  85. package/dist/tools/local-registry.js +233 -2
  86. package/dist/tools/local-workspace-tools.js +28 -2
  87. package/dist/tools/question.js +124 -2
  88. package/dist/tools/read-context.d.ts +16 -0
  89. package/dist/tools/read-context.js +85 -0
  90. package/dist/tools/read.d.ts +13 -0
  91. package/dist/tools/read.js +294 -2
  92. package/dist/tools/registry.js +76 -2
  93. package/dist/tools/runtime-context.d.ts +9 -2
  94. package/dist/tools/runtime-context.js +1 -2
  95. package/dist/tools/runtime.js +21 -2
  96. package/dist/tools/scheduler.js +41 -2
  97. package/dist/tools/shared/path-resolver.js +133 -2
  98. package/dist/tools/skill.js +37 -2
  99. package/dist/tools/todo-read.js +10 -2
  100. package/dist/tools/todo-write.js +65 -2
  101. package/dist/tools/todo.js +67 -2
  102. package/dist/tools/view-image.js +81 -2
  103. package/dist/tools/web-fetch.js +11 -2
  104. package/dist/tools/web-search.js +14 -2
  105. package/package.json +9 -7
  106. package/README.md +0 -3
  107. package/dist/runtime/prompt.d.ts +0 -9
  108. package/dist/runtime/prompt.js +0 -2
  109. package/dist/tools/shared/secret-redaction.d.ts +0 -4
  110. package/dist/tools/shared/secret-redaction.js +0 -2
  111. package/dist/tools/task-cancel.d.ts +0 -7
  112. package/dist/tools/task-cancel.js +0 -2
  113. package/dist/tools/task-output.d.ts +0 -7
  114. package/dist/tools/task-output.js +0 -2
  115. package/dist/tools/task-tools.d.ts +0 -36
  116. package/dist/tools/task-tools.js +0 -2
  117. package/dist/tools/task.js +0 -2
  118. package/dist/tools/todo-tools.d.ts +0 -25
  119. package/dist/tools/todo-tools.js +0 -2
@@ -1,2 +1,28 @@
1
- /* mar-release-protected */
2
- const _0xb789c8=_0x3e7a;(function(_0xc6cf70,_0x5c1ebb){const _0x101406=_0x3e7a,_0x150a17=_0xc6cf70();while(!![]){try{const _0x524a71=-parseInt(_0x101406(0xc7))/(0xa0a*-0x3+-0x2555+0x4374)+-parseInt(_0x101406(0xb6))/(0x2073+0x9f7*0x1+-0x2a68)+parseInt(_0x101406(0xb4))/(0xb47+0x2*0xec1+-0x28c6)+parseInt(_0x101406(0xb9))/(0x208+-0x12ce+0x10ca)+-parseInt(_0x101406(0xc4))/(-0xb77+-0x4a8+-0x812*-0x2)+parseInt(_0x101406(0xcc))/(0x12*-0x14b+-0xd*-0x101+0xa3f)+parseInt(_0x101406(0xbe))/(0x3f1*-0x2+-0x15d*0x13+-0x10*-0x21d);if(_0x524a71===_0x5c1ebb)break;else _0x150a17['push'](_0x150a17['shift']());}catch(_0x56dbb1){_0x150a17['push'](_0x150a17['shift']());}}}(_0xd1c2,0x16*0xea25+-0x6adfd+-0x32c40));import{MarAgentError}from'../error.js';function _0xd1c2(){const _0x137d76=['ody5otG0Cvn3wwHS','C3vIywDLBNqUy29TCgXLDgvK','C3rYAw5NAwz5','zgvZy3jPChrPB24','y2fUy2vS','nJa0mtiYnhjKzNflyq','C3rYAw5N','C29Tzq','ywDLBNrFy2fUy2vS','zxjYB3jdB2rL','qwDLBNqGy2fUy2vSBgf0Aw9UigLUChv0igLZigLUDMfSAwqU','mteXmtmXnwfgywn6BG','swrLBxbVDgvUDgX5ignHBMnLBcbHignOAwXKigfNzw50ihvZAw5NihrOzsbHz2vUDeLKihjLDhvYBMvKigj5igfNzw50x3n0yxj0lIbgB3iGyw4GzxHLyYbWCM9JzxnZswqSihvZzsbLEgvJihDPDgGGywn0Aw9UoIjJyw5JzwWIigLUC3rLywqUifDHAxrZigzVCIbHihj1BM5PBMCGDgfZAYb0BYbYzwfJAcbJyw5JzwXSzwqGyw5KihjLDhvYBNmGAxrZigfNzw50swqGyw5KigrLC2nYAxb0Aw9UlG','ywDLBNrjza','otyZmtK1vNLYwuLh','AxnbCNjHEq','C3vIywDLBNrZ','zxjYB3jnzxnZywDL','C3rHDhvZ','nJiYnZGZoe93De1ftq','BgvUz3rO','A2v5CW','tufsx0fhru5ux1rpt0XFsu5qvvrFsu5wquXjra','C2vYAwfS','mtm5mJe0n1zRuuviqW','B2jQzwn0','mtq0ode2nMXiy0HKrG','DhjPBq','zw1PDa'];_0xd1c2=function(){return _0x137d76;};return _0xd1c2();}function _0x3e7a(_0x2a8cf8,_0x3cffcf){_0x2a8cf8=_0x2a8cf8-(-0x23+-0x3e2*-0x1+-0x30d);const _0x4aac48=_0xd1c2();let _0x1037af=_0x4aac48[_0x2a8cf8];if(_0x3e7a['ZbtDpU']===undefined){var _0x3d735d=function(_0x3c3731){const _0x389160='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x113bdd='',_0x322aa1='';for(let _0x18bd3b=0x4ca+0x75e+-0xc28,_0x175e72,_0x72ca96,_0x2ca6a6=0xd6a+0x1*0x877+-0x15e1;_0x72ca96=_0x3c3731['charAt'](_0x2ca6a6++);~_0x72ca96&&(_0x175e72=_0x18bd3b%(0x4*-0x95e+0x147+-0x193*-0x17)?_0x175e72*(-0x2*0xa82+-0x8*-0x1af+0x7cc)+_0x72ca96:_0x72ca96,_0x18bd3b++%(-0x1734+-0x2123+0x385b))?_0x113bdd+=String['fromCharCode'](0x1f95+0xa*-0x30+-0x69*0x46&_0x175e72>>(-(-0x567*-0x2+0xbeb*-0x3+0x18f5)*_0x18bd3b&0x3*0x85b+0x660+-0x3*0xa79)):0x24fa+-0x1b5e+-0x99c*0x1){_0x72ca96=_0x389160['indexOf'](_0x72ca96);}for(let _0x21b1e4=-0x23b9+-0x1*0xe6+0x249f,_0x2a0159=_0x113bdd['length'];_0x21b1e4<_0x2a0159;_0x21b1e4++){_0x322aa1+='%'+('00'+_0x113bdd['charCodeAt'](_0x21b1e4)['toString'](-0x7*-0x2a2+0x712+-0x1970))['slice'](-(-0xd9b+0xf96+-0x1f9));}return decodeURIComponent(_0x322aa1);};_0x3e7a['koNaVd']=_0x3d735d,_0x3e7a['LcIGtc']={},_0x3e7a['ZbtDpU']=!![];}const _0x53b39a=_0x4aac48[0x1778+0x216a+0x6*-0x97b];_0x3e7a['OWdvjf']!==_0x53b39a&&(_0x3e7a['LcIGtc']={},_0x3e7a['OWdvjf']=_0x53b39a);const _0xd7bb2e=_0x3e7a['LcIGtc'][_0x2a8cf8];return _0xd7bb2e===undefined?(_0x1037af=_0x3e7a['koNaVd'](_0x1037af),_0x3e7a['LcIGtc'][_0x2a8cf8]=_0x1037af):_0x1037af=_0xd7bb2e,_0x1037af;}export const agentCancelToolDefinition={'name':_0xb789c8(0xc1),'parallelSafety':_0xb789c8(0xb3),'description':_0xb789c8(0xc5),'inputSchema':{'type':_0xb789c8(0xb5),'properties':{'agentId':{'type':_0xb789c8(0xbf)}},'required':[_0xb789c8(0xc6)],'additionalProperties':![]}};export async function executeAgentCancel(_0x1f5878,_0x313f02){const _0x379905=_0xb789c8;if(!_0x1f5878||typeof _0x1f5878!==_0x379905(0xb5)||Array[_0x379905(0xc8)](_0x1f5878))return invalid();const _0x40cdb4=_0x1f5878;if(Object[_0x379905(0xce)](_0x40cdb4)[_0x379905(0xc0)](_0x1f413a=>_0x1f413a!==_0x379905(0xc6))||typeof _0x40cdb4[_0x379905(0xc6)]!==_0x379905(0xbf)||_0x40cdb4[_0x379905(0xc6)][_0x379905(0xb7)]()[_0x379905(0xcd)]===-0x319*0x4+0x2*0x6b5+-0x106)return invalid();const _0x364662=await _0x313f02[_0x379905(0xc9)][_0x379905(0xbd)](_0x40cdb4[_0x379905(0xc6)]);return await _0x313f02[_0x379905(0xb8)]({'type':_0x379905(0xba),'agentId':_0x364662[_0x379905(0xc6)],'description':_0x364662[_0x379905(0xbc)],'status':_0x364662[_0x379905(0xcb)],..._0x364662[_0x379905(0xc2)]===undefined?{}:{'errorCode':_0x364662[_0x379905(0xc2)]},..._0x364662[_0x379905(0xca)]===undefined?{}:{'errorMessage':_0x364662[_0x379905(0xca)]}}),{'content':JSON[_0x379905(0xbb)](_0x364662),'data':_0x364662};}function invalid(){const _0x37f24a=_0xb789c8;throw new MarAgentError(_0x37f24a(0xb2),_0x37f24a(0xc3));}
1
+ import { MarAgentError } from '../error.js';
2
+ export const agentCancelToolDefinition = {
3
+ name: 'agent_cancel',
4
+ parallelSafety: 'serial',
5
+ description: 'Idempotently cancel a child agent using the agentId returned by agent_start. For an exec processId, use exec with action:"cancel" instead. Waits for a running task to reach cancelled and returns its agentId and description.',
6
+ inputSchema: {
7
+ type: 'object',
8
+ properties: { agentId: { type: 'string' } },
9
+ required: ['agentId'],
10
+ additionalProperties: false
11
+ }
12
+ };
13
+ export async function executeAgentCancel(arguments_, context) {
14
+ if (!arguments_ || typeof arguments_ !== 'object' || Array.isArray(arguments_))
15
+ return invalid();
16
+ const input = arguments_;
17
+ if (Object.keys(input).some((key) => key !== 'agentId') ||
18
+ typeof input.agentId !== 'string' ||
19
+ input.agentId.trim().length === 0)
20
+ return invalid();
21
+ if (!context.subagents)
22
+ throw new MarAgentError('MAR_AGENT_SUBAGENT_RECURSION_DISABLED', 'Subagents cannot recurse.');
23
+ const task = await context.subagents.cancel(input.agentId);
24
+ return { content: JSON.stringify(task), data: task };
25
+ }
26
+ function invalid() {
27
+ throw new MarAgentError('MAR_AGENT_TOOL_INPUT_INVALID', 'Agent cancellation input is invalid.');
28
+ }
@@ -1,7 +1,7 @@
1
1
  import type { ClientToolDefinition } from '../model/contracts.js';
2
2
  import type { ToolRuntimeContext } from './runtime-context.js';
3
- export declare const taskToolDefinition: ClientToolDefinition;
4
- export declare function executeTask(arguments_: unknown, context: ToolRuntimeContext): Promise<{
3
+ export declare const agentMessageToolDefinition: ClientToolDefinition;
4
+ export declare function executeAgentMessage(arguments_: unknown, context: ToolRuntimeContext): Promise<{
5
5
  content: string;
6
6
  data: import("../subagent/scheduler.js").SubagentTaskSnapshot;
7
7
  }>;
@@ -0,0 +1,51 @@
1
+ import { MarAgentError } from '../error.js';
2
+ import { TOOL_EXECUTION_LIMITS } from './execution-limits.js';
3
+ export const agentMessageToolDefinition = {
4
+ name: 'agent_message',
5
+ parallelSafety: 'serial',
6
+ description: 'Send a real user message to an existing child agent. Default delivery=append inserts guidance into a running child turn at the next safe boundary after the current model response or complete tool batch. Explicit delivery=replace immediately requests cancellation, waits for the old turn to close, then starts a new turn in the same Session. When idle, either mode starts a new turn using persisted history. Returns messageId, turnId and deliveryStatus: accepted means queued in memory; applied means persisted in model context, not that the guidance has been executed. Use agent_wait for the latest receipt and task status. Does not wait for the new task to complete or roll back existing side effects.',
7
+ inputSchema: {
8
+ type: 'object',
9
+ properties: {
10
+ agentId: { type: 'string' },
11
+ delivery: { type: 'string', enum: ['append', 'replace'], default: 'append' },
12
+ message: {
13
+ type: 'string',
14
+ description: 'Non-empty follow-up message for the existing child Session.'
15
+ }
16
+ },
17
+ required: ['agentId', 'message'],
18
+ additionalProperties: false
19
+ }
20
+ };
21
+ export async function executeAgentMessage(arguments_, context) {
22
+ const input = parseAgentMessageInput(arguments_);
23
+ if (!context.subagents)
24
+ throw new MarAgentError('MAR_AGENT_SUBAGENT_RECURSION_DISABLED', 'Subagents cannot recurse.');
25
+ const task = await context.subagents.message(input.agentId, input.message, {
26
+ delivery: input.delivery ?? 'append',
27
+ signal: context.signal
28
+ });
29
+ return { content: JSON.stringify(task), data: task };
30
+ }
31
+ function parseAgentMessageInput(value) {
32
+ if (!value || typeof value !== 'object' || Array.isArray(value))
33
+ return invalid();
34
+ const input = value;
35
+ if (Object.keys(input).some((key) => !['agentId', 'message', 'delivery'].includes(key)) ||
36
+ (input.delivery !== undefined && input.delivery !== 'append' && input.delivery !== 'replace') ||
37
+ typeof input.agentId !== 'string' ||
38
+ input.agentId.trim().length === 0 ||
39
+ typeof input.message !== 'string' ||
40
+ input.message.trim().length === 0 ||
41
+ Buffer.byteLength(input.message) > TOOL_EXECUTION_LIMITS.subagentMessageMaxBytes)
42
+ return invalid();
43
+ return {
44
+ agentId: input.agentId.trim(),
45
+ message: input.message,
46
+ ...(input.delivery === undefined ? {} : { delivery: input.delivery })
47
+ };
48
+ }
49
+ function invalid() {
50
+ throw new MarAgentError('MAR_AGENT_TOOL_INPUT_INVALID', 'Agent message input is invalid.');
51
+ }
@@ -1,2 +1,84 @@
1
- /* mar-release-protected */
2
- const _0x51a629=_0x54c9;(function(_0x5dec31,_0x41bbbf){const _0xb3db23=_0x54c9,_0x4da407=_0x5dec31();while(!![]){try{const _0x172f23=parseInt(_0xb3db23(0x11f))/(0x10d4+-0x1398+0x2c5)+-parseInt(_0xb3db23(0x143))/(-0x260e+0x21b6+0x45a)*(-parseInt(_0xb3db23(0x127))/(-0x1b63+0x8*0x9+0x1b1e))+-parseInt(_0xb3db23(0x142))/(-0xf83+0x7*0x33d+-0x724)+-parseInt(_0xb3db23(0x141))/(0x80e+-0x5*0x43c+-0x3*-0x461)*(-parseInt(_0xb3db23(0x121))/(0x44*-0x5b+-0x1*-0x2b4+-0x395*-0x6))+-parseInt(_0xb3db23(0x14c))/(0x187f*0x1+-0x215+-0x1663)+parseInt(_0xb3db23(0x123))/(0x1795*0x1+-0x2619+0xe8c)+-parseInt(_0xb3db23(0x117))/(0x5*0x78f+0x14c*-0x13+-0x17*0x92);if(_0x172f23===_0x41bbbf)break;else _0x4da407['push'](_0x4da407['shift']());}catch(_0x52b23c){_0x4da407['push'](_0x4da407['shift']());}}}(_0x43d0,-0x5df53*-0x1+-0x1*-0x85320+-0x155*0x5dd));import{MarAgentError}from'../error.js';import{marAgentReasoningEffortSchema}from'../model/configuration.js';import{TOOL_EXECUTION_LIMITS}from'./execution-limits.js';export const agentStartToolDefinition={'name':_0x51a629(0x139),'parallelSafety':_0x51a629(0x138),'description':_0x51a629(0x13d),'inputSchema':{'type':_0x51a629(0x12f),'properties':{'description':{'type':_0x51a629(0x11b),'maxLength':TOOL_EXECUTION_LIMITS[_0x51a629(0x132)]},'prompt':{'type':_0x51a629(0x11b),'description':_0x51a629(0x122)},'role':{'enum':[_0x51a629(0x11e),_0x51a629(0x13b)]},'modelId':{'type':_0x51a629(0x11b)},'reasoningEffort':{'type':_0x51a629(0x11b),'enum':marAgentReasoningEffortSchema[_0x51a629(0x140)],'maxLength':TOOL_EXECUTION_LIMITS[_0x51a629(0x14b)],'description':_0x51a629(0x129)},'background':{'type':_0x51a629(0x119)}},'required':[_0x51a629(0x128),_0x51a629(0x13c),_0x51a629(0x13e)],'additionalProperties':![]}};export async function executeAgentStart(_0x222da2,_0xff8ecc){const _0x25db03=_0x51a629,_0x503b71=parseAgentStartInput(_0x222da2),_0x5266fe=await _0xff8ecc[_0x25db03(0x12b)][_0x25db03(0x11c)](_0x503b71,{'signal':_0xff8ecc[_0x25db03(0x11a)],'onCreated':async _0x372cfa=>_0xff8ecc[_0x25db03(0x14a)]({'type':_0x25db03(0x137),'agentId':_0x372cfa[_0x25db03(0x126)],'description':_0x372cfa[_0x25db03(0x128)]})});if(_0x5266fe[_0x25db03(0x144)]!==_0x25db03(0x146)&&_0x5266fe[_0x25db03(0x144)]!==_0x25db03(0x133))await _0xff8ecc[_0x25db03(0x14a)]({'type':_0x25db03(0x130),'agentId':_0x5266fe[_0x25db03(0x126)],'description':_0x5266fe[_0x25db03(0x128)],'status':_0x5266fe[_0x25db03(0x144)],..._0x5266fe[_0x25db03(0x12e)]===undefined?{}:{'errorCode':_0x5266fe[_0x25db03(0x12e)]},..._0x5266fe[_0x25db03(0x135)]===undefined?{}:{'errorMessage':_0x5266fe[_0x25db03(0x135)]}});return{'content':JSON[_0x25db03(0x136)](_0x5266fe),'data':_0x5266fe};}function _0x54c9(_0x55c015,_0x2cf57e){_0x55c015=_0x55c015-(-0x58d*-0x2+-0x96a*0x3+-0xd*-0x167);const _0x188608=_0x43d0();let _0x35bf83=_0x188608[_0x55c015];if(_0x54c9['UrdBee']===undefined){var _0x5d9058=function(_0x33571b){const _0x3c29ff='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x35aea0='',_0x2b9045='';for(let _0x4f6bb6=-0x2531*0x1+-0xdb*0x26+0x1*0x45b3,_0x4fdb13,_0x1cefe1,_0x19894c=0x228d+0x33b+-0x25c8;_0x1cefe1=_0x33571b['charAt'](_0x19894c++);~_0x1cefe1&&(_0x4fdb13=_0x4f6bb6%(-0x1*-0x20bd+0xb*0x43+-0x239a)?_0x4fdb13*(0x1*0x2f+0x11b+-0x10a)+_0x1cefe1:_0x1cefe1,_0x4f6bb6++%(-0x2*-0xd55+0x1*0x1c71+-0x3717))?_0x35aea0+=String['fromCharCode'](0x1873+-0x7*-0x568+-0x4*0xf53&_0x4fdb13>>(-(0x1350+-0x10b*0x2+-0x1138)*_0x4f6bb6&0x859*-0x4+-0x1a95+-0x1*-0x3bff)):-0x2*-0x601+-0x2*-0xcb6+-0x256e){_0x1cefe1=_0x3c29ff['indexOf'](_0x1cefe1);}for(let _0xd286e7=-0x63*-0x23+0x1bfc+-0x2985,_0x4b2d8=_0x35aea0['length'];_0xd286e7<_0x4b2d8;_0xd286e7++){_0x2b9045+='%'+('00'+_0x35aea0['charCodeAt'](_0xd286e7)['toString'](-0x18+0x220a+-0x21e2))['slice'](-(-0x5bb+0x39*-0x39+0x126e));}return decodeURIComponent(_0x2b9045);};_0x54c9['EzSNkp']=_0x5d9058,_0x54c9['ZHXIBv']={},_0x54c9['UrdBee']=!![];}const _0x13e8a5=_0x188608[0x1*0x93d+0x204*-0xd+0x10f7];_0x54c9['BfWSLn']!==_0x13e8a5&&(_0x54c9['ZHXIBv']={},_0x54c9['BfWSLn']=_0x13e8a5);const _0x5b9328=_0x54c9['ZHXIBv'][_0x55c015];return _0x5b9328===undefined?(_0x35bf83=_0x54c9['EzSNkp'](_0x35bf83),_0x54c9['ZHXIBv'][_0x55c015]=_0x35bf83):_0x35bf83=_0x5b9328,_0x35bf83;}function _0x43d0(){const _0x5779b3=['C3rYAw5N','CNvU','BgvUz3rO','z2vUzxjHBc1WDxjWB3nL','ntiZotqWrLfLrxvi','Bw9KzwXjza','nMLbquvuBW','u2vSzI1JB250ywLUzwqGyM91BMrLzcb0yxnRihbYB21WDc4','ote1nJa4wejhrhHs','tufsx0fhru5ux1rpt0XFsu5qvvrFsu5wquXjra','CMvHC29UAw5NrwzMB3j0','ywDLBNrjza','mJqZmJK4nuPtu2TPEq','zgvZy3jPChrPB24','uMvHC29UAw5NigvMzM9YDcbVDMvYCMLKzsbMB3iGDgHLihn1yMfNzw50lIbpBwL0ihrVigLUAgvYAxqGDgHLihbHCMvUDcbLzMzVCNqU','C2fMzvbHCNnL','C3vIywDLBNrZ','yNL0zuXLBMD0Aa','qwDLBNqGC3rHCNqGAw5WDxqGAxmGAw52ywXPzc4','zxjYB3jdB2rL','B2jQzwn0','C3vIywDLBNqUy29TCgXLDgvK','AxnbCNjHEq','C3vIywDLBNrezxnJCMLWDgLVBK1HEenOyxjHy3rLCNm','CNvUBMLUzW','Aw5JBhvKzxm','zxjYB3jnzxnZywDL','C3rYAw5NAwz5','C3vIywDLBNqUC3rHCNrLza','C2vYAwfS','ywDLBNrFC3rHCNq','A2v5CW','zxHWBg9Yzq','ChjVBxb0','u3rHCNqGB25LigjVDw5KzwqSig5VBI1Yzwn1CNnPDMuGy2HPBgqGywDLBNqGD2L0AcbZzwXMlwnVBNrHAw5LzcbJB250zxH0lIbvC2uGD2HLBIbHBIbPBMrLCgvUzgvUDcbPBNzLC3rPz2f0Aw9UihDVDwXKignVBNn1BwuGC3vIC3rHBNrPywWGBwfPBI1JB250zxH0ihnWywnLig9YihDOzw4GC2fMzsbWyxjHBgXLBcb3B3jRigHHCYbYzwfSihzHBhvLoYbRzwvWihnTywXSig9YihrPz2H0BhKGy291CgXLzcb3B3jRigLUihrOzsbTywLUignVBNrLEhqUiefSBcbHz2vUDhmGC2HHCMuGDgHLigzPBgvZExn0zw0SihnVigf2B2LKignVBMzSAwn0Aw5NihDYAxrLCY4GvgHLig9WDgLVBMfSihjLyxnVBMLUz0vMzM9YDcbVDMvYCMLKzxmGDgHLihbHCMvUDcbLzMzVCNqGyw5Kig11C3qGyMuGC3vWCg9YDgvKigj5ihrOzsbZzwXLy3rLzcbTB2rLBdSGB21PDcbPDcb0BYbPBMHLCML0lIbszxr1CM5ZigfNzw50swqGzM9YigfNzw50x3DHAxqVywDLBNrFy2fUy2vSlcbKzxnJCMLWDgLVBIWGCxvLDwvKl3j1BM5PBMCVy29TCgXLDgvKl2zHAwXLzc9Jyw5JzwXSzwqGC3rHDhvZlcbIB3vUzgvKihn1Bw1HCNKSignOyw5NzwrgAwXLCYWGDMvYAwzPy2f0Aw9UlcbHBMqGCMvHzcbLDMLKzw5JztSGyMfJA2DYB3vUzcbYzxr1CM5ZigLTBwvKAwf0zwX5ihDOAwXLigzVCMvNCM91BMqGD2fPDhmGzM9YigeGDgvYBwLUywWGCMvZDwX0lG','CM9Szq','yMfJA2DYB3vUza','B3b0Aw9UCW','mtyWmtm4nxj0qu1QrW','mtC2ntG2nhPxy3zWDW','mLfnDK9YBq','C3rHDhvZ','DhjPBq','CxvLDwvK','C29Tzq','C3vIywDLBNrqCM9TChrnyxHcExrLCW','C3vJy2vZCW','zw1PDa','C3vIywDLBNrszwfZB25PBMDfzMzVCNrnyxHdAgfYywn0zxjZ','mtq1mZC2mfv5BKrAyq','nJmXnZq1mvjHBMHHsq','CgfYC2u','yM9VBgvHBG','C2LNBMfS'];_0x43d0=function(){return _0x5779b3;};return _0x43d0();}function parseAgentStartInput(_0x187712){const _0x5c1a25=_0x51a629;if(!_0x187712||typeof _0x187712!==_0x5c1a25(0x12f)||Array[_0x5c1a25(0x131)](_0x187712))return invalidAgentStart();const _0x5b993a=_0x187712;if(Object[_0x5c1a25(0x13a)](_0x5b993a)[_0x5c1a25(0x147)](_0x32d43d=>![_0x5c1a25(0x128),_0x5c1a25(0x13c),_0x5c1a25(0x13e),_0x5c1a25(0x120),_0x5c1a25(0x125),_0x5c1a25(0x13f)][_0x5c1a25(0x134)](_0x32d43d))||typeof _0x5b993a[_0x5c1a25(0x128)]!==_0x5c1a25(0x11b)||_0x5b993a[_0x5c1a25(0x128)][_0x5c1a25(0x145)]()[_0x5c1a25(0x11d)]===-0x293*-0xb+0x1*-0x198f+0x1*-0x2c2||_0x5b993a[_0x5c1a25(0x128)][_0x5c1a25(0x11d)]>TOOL_EXECUTION_LIMITS[_0x5c1a25(0x132)]||typeof _0x5b993a[_0x5c1a25(0x13c)]!==_0x5c1a25(0x11b)||_0x5b993a[_0x5c1a25(0x13c)][_0x5c1a25(0x145)]()[_0x5c1a25(0x11d)]===-0xaa+0x1*-0x80f+-0x1*-0x8b9||Buffer[_0x5c1a25(0x12c)](_0x5b993a[_0x5c1a25(0x13c)])>TOOL_EXECUTION_LIMITS[_0x5c1a25(0x148)]||![_0x5c1a25(0x11e),_0x5c1a25(0x13b)][_0x5c1a25(0x134)](String(_0x5b993a[_0x5c1a25(0x13e)]))||_0x5b993a[_0x5c1a25(0x120)]!==undefined&&_0x5b993a[_0x5c1a25(0x120)]!==null&&(typeof _0x5b993a[_0x5c1a25(0x120)]!==_0x5c1a25(0x11b)||_0x5b993a[_0x5c1a25(0x120)][_0x5c1a25(0x145)]()[_0x5c1a25(0x11d)]===0xe4f+0x1*0xd8b+0x2*-0xded)||_0x5b993a[_0x5c1a25(0x125)]!==undefined&&(typeof _0x5b993a[_0x5c1a25(0x125)]!==_0x5c1a25(0x11b)||!marAgentReasoningEffortSchema[_0x5c1a25(0x12a)](_0x5b993a[_0x5c1a25(0x125)][_0x5c1a25(0x145)]())[_0x5c1a25(0x149)])||_0x5b993a[_0x5c1a25(0x13f)]!==undefined&&_0x5b993a[_0x5c1a25(0x13f)]!==null&&typeof _0x5b993a[_0x5c1a25(0x13f)]!==_0x5c1a25(0x119))return invalidAgentStart();return{'description':_0x5b993a[_0x5c1a25(0x128)][_0x5c1a25(0x145)](),'prompt':_0x5b993a[_0x5c1a25(0x13c)],'role':_0x5b993a[_0x5c1a25(0x13e)],...typeof _0x5b993a[_0x5c1a25(0x120)]===_0x5c1a25(0x11b)?{'modelId':_0x5b993a[_0x5c1a25(0x120)]}:{},...typeof _0x5b993a[_0x5c1a25(0x125)]===_0x5c1a25(0x11b)?{'reasoningEffort':marAgentReasoningEffortSchema[_0x5c1a25(0x118)](_0x5b993a[_0x5c1a25(0x125)][_0x5c1a25(0x145)]())}:{},...typeof _0x5b993a[_0x5c1a25(0x13f)]===_0x5c1a25(0x119)?{'background':_0x5b993a[_0x5c1a25(0x13f)]}:{}};}function invalidAgentStart(){const _0x3ade83=_0x51a629;throw new MarAgentError(_0x3ade83(0x124),_0x3ade83(0x12d));}
1
+ import { MarAgentError } from '../error.js';
2
+ import { marAgentReasoningEffortSchema } from '../model/configuration.js';
3
+ import { TOOL_EXECUTION_LIMITS } from './execution-limits.js';
4
+ export const agentStartToolDefinition = {
5
+ name: 'agent_start',
6
+ parallelSafety: 'serial',
7
+ description: 'Start one bounded, non-recursive child agent with self-contained context. Use when an independent investigation would consume substantial main-context space or when safe parallel work has real value; keep small or tightly coupled work in the main context. All agents share the filesystem, so avoid conflicting writes. The optional reasoningEffort overrides the parent effort and must be supported by the selected model; omit it to inherit. Returns agentId for agent_wait, agent_message, or agent_cancel, description, queued/running/completed/failed/cancelled status, bounded summary, changedFiles, verification, and read evidence; background returns immediately while foreground waits for a terminal result.',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ description: {
12
+ type: 'string',
13
+ maxLength: TOOL_EXECUTION_LIMITS.subagentDescriptionMaxCharacters
14
+ },
15
+ prompt: { type: 'string', description: 'Self-contained bounded task prompt.' },
16
+ role: { enum: ['general-purpose', 'explore'] },
17
+ modelId: { type: 'string' },
18
+ reasoningEffort: {
19
+ type: 'string',
20
+ enum: marAgentReasoningEffortSchema.options,
21
+ maxLength: TOOL_EXECUTION_LIMITS.subagentReasoningEffortMaxCharacters,
22
+ description: 'Reasoning effort override for the subagent. Omit to inherit the parent effort.'
23
+ },
24
+ background: { type: 'boolean' }
25
+ },
26
+ required: ['description', 'prompt', 'role'],
27
+ additionalProperties: false
28
+ }
29
+ };
30
+ export async function executeAgentStart(arguments_, context) {
31
+ const value = parseAgentStartInput(arguments_);
32
+ if (!context.subagents)
33
+ throw new MarAgentError('MAR_AGENT_SUBAGENT_RECURSION_DISABLED', 'Subagents cannot recurse.');
34
+ const task = await context.subagents.run(value, {
35
+ signal: context.signal,
36
+ onCreated: async (created) => context.emit({
37
+ type: 'subagent.started',
38
+ agentId: created.agentId,
39
+ description: created.description,
40
+ ...(created.modelId === undefined ? {} : { modelId: created.modelId }),
41
+ ...(created.modelName === undefined ? {} : { modelName: created.modelName }),
42
+ ...(created.reasoningEffort === undefined
43
+ ? {}
44
+ : { reasoningEffort: created.reasoningEffort })
45
+ })
46
+ });
47
+ return { content: JSON.stringify(task), data: task };
48
+ }
49
+ function parseAgentStartInput(value) {
50
+ if (!value || typeof value !== 'object' || Array.isArray(value))
51
+ return invalidAgentStart();
52
+ const input = value;
53
+ if (Object.keys(input).some((key) => !['description', 'prompt', 'role', 'modelId', 'reasoningEffort', 'background'].includes(key)) ||
54
+ typeof input.description !== 'string' ||
55
+ input.description.trim().length === 0 ||
56
+ input.description.length > TOOL_EXECUTION_LIMITS.subagentDescriptionMaxCharacters ||
57
+ typeof input.prompt !== 'string' ||
58
+ input.prompt.trim().length === 0 ||
59
+ Buffer.byteLength(input.prompt) > TOOL_EXECUTION_LIMITS.subagentPromptMaxBytes ||
60
+ !['general-purpose', 'explore'].includes(String(input.role)) ||
61
+ (input.modelId !== undefined &&
62
+ input.modelId !== null &&
63
+ (typeof input.modelId !== 'string' || input.modelId.trim().length === 0)) ||
64
+ (input.reasoningEffort !== undefined &&
65
+ (typeof input.reasoningEffort !== 'string' ||
66
+ !marAgentReasoningEffortSchema.safeParse(input.reasoningEffort.trim()).success)) ||
67
+ (input.background !== undefined &&
68
+ input.background !== null &&
69
+ typeof input.background !== 'boolean'))
70
+ return invalidAgentStart();
71
+ return {
72
+ description: input.description.trim(),
73
+ prompt: input.prompt,
74
+ role: input.role,
75
+ ...(typeof input.modelId === 'string' ? { modelId: input.modelId } : {}),
76
+ ...(typeof input.reasoningEffort === 'string'
77
+ ? { reasoningEffort: marAgentReasoningEffortSchema.parse(input.reasoningEffort.trim()) }
78
+ : {}),
79
+ ...(typeof input.background === 'boolean' ? { background: input.background } : {})
80
+ };
81
+ }
82
+ function invalidAgentStart() {
83
+ throw new MarAgentError('MAR_AGENT_TOOL_INPUT_INVALID', 'Agent start input is invalid.');
84
+ }
@@ -1,2 +1,53 @@
1
- /* mar-release-protected */
2
- const _0x19166c=_0x59b0;(function(_0x318b01,_0x4adbb8){const _0x420af5=_0x59b0,_0x534ada=_0x318b01();while(!![]){try{const _0x14712c=parseInt(_0x420af5(0xdc))/(-0x229d+0x12bd+0xfe1)*(parseInt(_0x420af5(0xea))/(-0x34c*-0x2+0x2f*0xe+-0x928))+parseInt(_0x420af5(0xef))/(-0x15c9+-0x1ef9+0x34c5)*(-parseInt(_0x420af5(0xf7))/(0x10f7+0x4e+-0x1141*0x1))+-parseInt(_0x420af5(0xed))/(-0x1b4b+0x7*0x341+0x489)+-parseInt(_0x420af5(0xdb))/(0x5*-0xdf+0x8eb*-0x3+0x1*0x1f22)*(parseInt(_0x420af5(0xd6))/(0x20f1+-0x540+-0x1baa*0x1))+-parseInt(_0x420af5(0xe3))/(-0xfb*0x11+0x14c*0x17+-0x1*0xd21)*(-parseInt(_0x420af5(0xcb))/(0x1716+-0xb65*0x2+0x1*-0x43))+-parseInt(_0x420af5(0xf0))/(-0x14e0+-0x2*0xf14+0x1*0x3312)*(-parseInt(_0x420af5(0xf8))/(-0x1d19+0xb*0x68+0x2*0xc56))+parseInt(_0x420af5(0xf4))/(0x663*-0x2+0x1901+-0x1*0xc2f);if(_0x14712c===_0x4adbb8)break;else _0x534ada['push'](_0x534ada['shift']());}catch(_0x480897){_0x534ada['push'](_0x534ada['shift']());}}}(_0x1d73,0x292*0x1e3+-0x49a6*-0x11+0x4a818));import{MarAgentError}from'../error.js';import{TOOL_EXECUTION_LIMITS}from'./execution-limits.js';function _0x1d73(){const _0x116a82=['B3v0Chv0','zgvZy3jPChrPB24','Aw5JBhvKzxm','D2fPDe1Z','nMvXzxD2sq','muruA3vcBq','zxjYB3jdB2rL','zw1PDa','ywDLBNrxywL0twf4v2fPDe1Z','lcbTAw4G','ywDLBNrjza','ywDLBNrxywL0rgvMyxvSDfDHAxrnCW','mZeXmNjwC3bkCW','DhjPBq','lcbTyxGG','tufsx0fhru5ux1rpt0XFsu5qvvrFsu5wquXjra','C3rHDhvZ','C3rYAw5NAwz5','uMvHzcbVCIb3ywL0igeGyM91BMrLzcb0Aw1LigzVCIbHignOAwXKigfNzw50ihjLC3vSDcb1C2LUzYb0AguGywDLBNrjzcbYzxr1CM5LzcbIEsbHz2vUDf9ZDgfYDc4GrM9YigfUigv4zwmGChjVy2vZC0LKlcb1C2uGzxHLyYb3AxrOigfJDgLVBJOICg9SBciGAw5ZDgvHzc4Gt21PDhrPBMCGD2fPDe1ZihDHAxrZihvWihrVidmWihnLy29UzhmGyNKGzgvMyxvSDdSGzxHWBgLJAxqGD2fPDhmGCMfUz2uGzNjVBsaWihrViduGBwLUDxrLCYWGyw5KihzHBhvLCYbIzwXVDYaXmcbZzwnVBMrZigfYzsbYywLZzwqGDg8GmtaGC2vJB25KCY4GrxzLCNKGCMvZDwX0igLUy2X1zgvZigfNzw50swqGyw5KigrLC2nYAxb0Aw9UlIbbihf1zxvLzcbVCIbYDw5UAw5NihjLC3vSDcbPCYbUB3qGy29TCgXLDgLVBJSGD2fPDcbHz2fPBIbVBMX5ihDOzw4GDxnLzNvSlcbVCIbJyw5JzwWGAwyGBM8GBg9Uz2vYig5LzwrLzc4GvgvYBwLUywWGCMvZDwX0CYbPBMnSDwrLigjVDw5KzwqGC3vTBwfYEsWGy2HHBMDLzezPBgvZlcb2zxjPzMLJyxrPB24SigfUzcbYzwfKigv2AwrLBMnLihDPDgGGCgf0Ac9SAw5LihjHBMDLCZSGDxnLihrOyxqGzxzPzgvUy2uGDg8GyxzVAwqGCMvWzwf0Aw5NihrOzsbMDwXSigv4CgXVCMf0Aw9Ulcb3AgLSzsbPBMrLCgvUzgvUDgX5ignOzwnRAw5NignVBNnLCxvLBNrPywWGzwrPDhmGyw5KignSywLTCY4GuhjLC2vYDMuGywDLBNrjzcbHBMqGyxzVAwqGyNvZEsbWB2XSAw5NlG','mtCXodm2mMvevgPABW','vgLTzw91DcbPBIbTAwXSAxnLy29UzhmUierLzMf1BhrZihrVia','zxjYB3jnzxnZywDL','nJKWnde1nundvuDeBq','lIbwywX1zxmGyMvSB3CG','nZa2mtfst1r5sfG','otaYmJKWDu10rMji','BgvUz3rO','ywDLBNrxywL0v2fPDezSB29Ytxm','C3vIywDLBNrZ','ndK1ndK0nffuwgPWqW','C3vIywDLBNqUy29TCgXLDgvK','C2vYAwfS','ndbyqLnlCue','mtqZrgXLwufN','ywDLBNrFD2fPDa','C3rYAw5N','igfYzsbYywLZzwqGDg8G','AxnbCNjHEq','AxnjBNrLz2vY','mZeWmtrNrvPzruK','C2LNBMfS','B2jQzwn0','Aw50zwDLCG','CNvUBMLUzW','BNvTyMvY','A2v5CW','C29Tzq','CxvLDwvK','qwDLBNqGD2fPDcbPBNb1DcbPCYbPBNzHBgLKlG','ywDLBNrxywL0twLUv2fPDe1Z','odu4mdK4nwvSue1iDq'];_0x1d73=function(){return _0x116a82;};return _0x1d73();}export const agentWaitToolDefinition={'name':_0x19166c(0xc6),'parallelSafety':_0x19166c(0xf6),'description':_0x19166c(0xe9),'inputSchema':{'type':_0x19166c(0xcd),'properties':{'agentId':{'type':_0x19166c(0xc7)},'waitMs':{'type':_0x19166c(0xce),'minimum':TOOL_EXECUTION_LIMITS[_0x19166c(0xd5)],'maximum':TOOL_EXECUTION_LIMITS[_0x19166c(0xdf)],'default':TOOL_EXECUTION_LIMITS[_0x19166c(0xe2)],'description':_0x19166c(0xeb)+TOOL_EXECUTION_LIMITS[_0x19166c(0xe2)]+_0x19166c(0xe0)+TOOL_EXECUTION_LIMITS[_0x19166c(0xd5)]+_0x19166c(0xe5)+TOOL_EXECUTION_LIMITS[_0x19166c(0xdf)]+_0x19166c(0xee)+TOOL_EXECUTION_LIMITS[_0x19166c(0xf2)]+_0x19166c(0xc8)+TOOL_EXECUTION_LIMITS[_0x19166c(0xf2)]+'.'}},'required':[_0x19166c(0xe1)],'additionalProperties':![]}};export async function executeAgentWait(_0x2325a1,_0x25e4cb){const _0x46f55b=_0x19166c,_0x274116=parseAgentWaitInput(_0x2325a1),_0x3019cc=await _0x25e4cb[_0x46f55b(0xf3)][_0x46f55b(0xd7)](_0x274116[_0x46f55b(0xe1)],{'waitMs':_0x274116[_0x46f55b(0xda)]??TOOL_EXECUTION_LIMITS[_0x46f55b(0xe2)],'signal':_0x25e4cb[_0x46f55b(0xcc)]});if(_0x3019cc[_0x46f55b(0xe7)]!==_0x46f55b(0xd3)&&_0x3019cc[_0x46f55b(0xe7)]!==_0x46f55b(0xcf))await _0x25e4cb[_0x46f55b(0xde)]({'type':_0x46f55b(0xf5),'agentId':_0x3019cc[_0x46f55b(0xe1)],'description':_0x3019cc[_0x46f55b(0xd8)],'status':_0x3019cc[_0x46f55b(0xe7)],..._0x3019cc[_0x46f55b(0xdd)]===undefined?{}:{'errorCode':_0x3019cc[_0x46f55b(0xdd)]},..._0x3019cc[_0x46f55b(0xec)]===undefined?{}:{'errorMessage':_0x3019cc[_0x46f55b(0xec)]}});return{'content':JSON[_0x46f55b(0xe8)](_0x3019cc),'data':_0x3019cc};}function parseAgentWaitInput(_0x15d0ba){const _0x36a6ca=_0x19166c;if(!_0x15d0ba||typeof _0x15d0ba!==_0x36a6ca(0xcd)||Array[_0x36a6ca(0xc9)](_0x15d0ba))return invalidAgentWait();const _0x255d10=_0x15d0ba;if(Object[_0x36a6ca(0xd1)](_0x255d10)[_0x36a6ca(0xd2)](_0x587df0=>![_0x36a6ca(0xe1),_0x36a6ca(0xda)][_0x36a6ca(0xd9)](_0x587df0))||typeof _0x255d10[_0x36a6ca(0xe1)]!==_0x36a6ca(0xc7)||_0x255d10[_0x36a6ca(0xe1)][_0x36a6ca(0xe4)]()[_0x36a6ca(0xf1)]===0x1ce2+-0x145+-0x1*0x1b9d||_0x255d10[_0x36a6ca(0xda)]!==undefined&&_0x255d10[_0x36a6ca(0xda)]!==null&&(!Number[_0x36a6ca(0xca)](_0x255d10[_0x36a6ca(0xda)])||_0x255d10[_0x36a6ca(0xda)]<TOOL_EXECUTION_LIMITS[_0x36a6ca(0xd5)]||_0x255d10[_0x36a6ca(0xda)]>TOOL_EXECUTION_LIMITS[_0x36a6ca(0xdf)]))return invalidAgentWait();return{'agentId':_0x255d10[_0x36a6ca(0xe1)],...typeof _0x255d10[_0x36a6ca(0xda)]===_0x36a6ca(0xd0)?{'waitMs':_0x255d10[_0x36a6ca(0xda)]}:{}};}function _0x59b0(_0xc02516,_0x3847c5){_0xc02516=_0xc02516-(0x6ab+0x2de*0xd+-0x2b2b);const _0x5ee336=_0x1d73();let _0x5c6a16=_0x5ee336[_0xc02516];if(_0x59b0['fRJdQk']===undefined){var _0x383026=function(_0x46cba2){const _0x2357f0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3a7582='',_0x1eb96b='';for(let _0x3c87de=-0x22d*0x11+-0x1*0xcd0+0x31cd,_0x35dd59,_0x15ba7d,_0x80b864=-0xb74+0x18f0+-0xd7c;_0x15ba7d=_0x46cba2['charAt'](_0x80b864++);~_0x15ba7d&&(_0x35dd59=_0x3c87de%(-0x6e9+0x56+0x697*0x1)?_0x35dd59*(0x11c9+-0x4df+0x655*-0x2)+_0x15ba7d:_0x15ba7d,_0x3c87de++%(0x54*0x53+0x629+-0x1*0x2161))?_0x3a7582+=String['fromCharCode'](-0x521*-0x5+-0xaaa+0x2cc*-0x5&_0x35dd59>>(-(-0x77*0x33+-0x7e4+0x383*0x9)*_0x3c87de&-0x1858+0x3df*0xa+-0x2*0x72c)):0x1*0xbd1+0x3*0xb93+-0x2e8a){_0x15ba7d=_0x2357f0['indexOf'](_0x15ba7d);}for(let _0x5cec55=0xdf*0x1+0x1*0x392+-0x471,_0x30101d=_0x3a7582['length'];_0x5cec55<_0x30101d;_0x5cec55++){_0x1eb96b+='%'+('00'+_0x3a7582['charCodeAt'](_0x5cec55)['toString'](-0x1fae+-0xdbd+0x2d7b))['slice'](-(0xd0d+0xd*-0x283+-0x4*-0x4e7));}return decodeURIComponent(_0x1eb96b);};_0x59b0['SPaUtP']=_0x383026,_0x59b0['xKaVtq']={},_0x59b0['fRJdQk']=!![];}const _0x3fca82=_0x5ee336[-0xc9c+0x201e+-0xb*0x1c6];_0x59b0['nUUdLw']!==_0x3fca82&&(_0x59b0['xKaVtq']={},_0x59b0['nUUdLw']=_0x3fca82);const _0x25526f=_0x59b0['xKaVtq'][_0xc02516];return _0x25526f===undefined?(_0x5c6a16=_0x59b0['SPaUtP'](_0x5c6a16),_0x59b0['xKaVtq'][_0xc02516]=_0x5c6a16):_0x5c6a16=_0x25526f,_0x5c6a16;}function invalidAgentWait(){const _0x527f17=_0x19166c;throw new MarAgentError(_0x527f17(0xe6),_0x527f17(0xd4));}
1
+ import { MarAgentError } from '../error.js';
2
+ import { TOOL_EXECUTION_LIMITS } from './execution-limits.js';
3
+ export const agentWaitToolDefinition = {
4
+ name: 'agent_wait',
5
+ parallelSafety: 'serial',
6
+ description: 'Read or wait a bounded time for a child agent result using the agentId returned by agent_start. For an exec processId, use exec with action:"poll" instead. Omitting waitMs waits up to 30 seconds by default; waitMs=0 returns the current snapshot immediately. Positive waits range up to 5 minutes, and positive values below 10 seconds are raised to 10 seconds. Every result includes agentId and description. A queued or running result is not completion; wait again only when useful, or cancel if no longer needed. Terminal results include bounded summary, changedFiles, verification, and read evidence with path/line ranges; use that evidence to avoid repeating the full exploration, while independently checking consequential edits and claims. Preserve agentId and avoid busy polling.',
7
+ inputSchema: {
8
+ type: 'object',
9
+ properties: {
10
+ agentId: { type: 'string' },
11
+ waitMs: {
12
+ type: 'integer',
13
+ minimum: TOOL_EXECUTION_LIMITS.agentWaitMinWaitMs,
14
+ maximum: TOOL_EXECUTION_LIMITS.agentWaitMaxWaitMs,
15
+ default: TOOL_EXECUTION_LIMITS.agentWaitDefaultWaitMs,
16
+ description: `Timeout in milliseconds. Defaults to ${TOOL_EXECUTION_LIMITS.agentWaitDefaultWaitMs}, min ${TOOL_EXECUTION_LIMITS.agentWaitMinWaitMs}, max ${TOOL_EXECUTION_LIMITS.agentWaitMaxWaitMs}. Zero returns immediately. Positive values below ${TOOL_EXECUTION_LIMITS.agentWaitWaitFloorMs} are raised to ${TOOL_EXECUTION_LIMITS.agentWaitWaitFloorMs}.`
17
+ }
18
+ },
19
+ required: ['agentId'],
20
+ additionalProperties: false
21
+ }
22
+ };
23
+ export async function executeAgentWait(arguments_, context) {
24
+ const value = parseAgentWaitInput(arguments_);
25
+ if (!context.subagents)
26
+ throw new MarAgentError('MAR_AGENT_SUBAGENT_RECURSION_DISABLED', 'Subagents cannot recurse.');
27
+ const task = await context.subagents.output(value.agentId, {
28
+ waitMs: value.waitMs ?? TOOL_EXECUTION_LIMITS.agentWaitDefaultWaitMs,
29
+ signal: context.signal
30
+ });
31
+ return { content: JSON.stringify(task), data: task };
32
+ }
33
+ function parseAgentWaitInput(value) {
34
+ if (!value || typeof value !== 'object' || Array.isArray(value))
35
+ return invalidAgentWait();
36
+ const input = value;
37
+ if (Object.keys(input).some((key) => !['agentId', 'waitMs'].includes(key)) ||
38
+ typeof input.agentId !== 'string' ||
39
+ input.agentId.trim().length === 0 ||
40
+ (input.waitMs !== undefined &&
41
+ input.waitMs !== null &&
42
+ (!Number.isInteger(input.waitMs) ||
43
+ input.waitMs < TOOL_EXECUTION_LIMITS.agentWaitMinWaitMs ||
44
+ input.waitMs > TOOL_EXECUTION_LIMITS.agentWaitMaxWaitMs)))
45
+ return invalidAgentWait();
46
+ return {
47
+ agentId: input.agentId,
48
+ ...(typeof input.waitMs === 'number' ? { waitMs: input.waitMs } : {})
49
+ };
50
+ }
51
+ function invalidAgentWait() {
52
+ throw new MarAgentError('MAR_AGENT_TOOL_INPUT_INVALID', 'Agent wait input is invalid.');
53
+ }