apt-mcp-agent-setup 3.3.1 → 3.3.4

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 (105) hide show
  1. package/bin/cli.js +1 -1
  2. package/bundle/NOTICES.md +0 -0
  3. package/bundle/core.enc +0 -0
  4. package/bundle/mcp-rules.enc +0 -0
  5. package/bundle/skills-aso.enc +0 -0
  6. package/bundle/skills-ba.enc +0 -0
  7. package/bundle/skills-base.enc +0 -0
  8. package/bundle/skills-be.enc +0 -0
  9. package/bundle/skills-design.enc +0 -0
  10. package/bundle/skills-fe.enc +0 -0
  11. package/bundle/skills-mobile.enc +0 -0
  12. package/bundle/skills-pm.enc +0 -0
  13. package/integrity-manifest.json +105 -77
  14. package/package.json +2 -2
  15. package/release-check.js +27 -22
  16. package/src/backends/browser-tools.js +1 -1
  17. package/src/backends/index-command.js +1 -1
  18. package/src/backends/index-store.js +1 -1
  19. package/src/backends/profiles.js +1 -1
  20. package/src/core/admission-fence.js +1 -1
  21. package/src/core/aso-import.js +1 -1
  22. package/src/core/caller-context.js +1 -0
  23. package/src/core/catalog.js +1 -1
  24. package/src/core/claude-caller-authority.js +1 -0
  25. package/src/core/claude-invocation.js +1 -0
  26. package/src/core/claude-native.js +1 -0
  27. package/src/core/claude-worker-transcript.js +1 -0
  28. package/src/core/codex-host-metadata.js +1 -1
  29. package/src/core/codex-transcript-receipt.js +1 -1
  30. package/src/core/context-metrics.js +1 -1
  31. package/src/core/doctor.js +1 -1
  32. package/src/core/draining-completion.js +1 -0
  33. package/src/core/execution.js +1 -1
  34. package/src/core/hook-bridge.js +1 -1
  35. package/src/core/host-adapters.js +1 -1
  36. package/src/core/ipc-envelope.js +1 -0
  37. package/src/core/memory-store.js +1 -1
  38. package/src/core/model-inventory.js +1 -1
  39. package/src/core/model-routing.js +1 -1
  40. package/src/core/native-dispatch.js +1 -1
  41. package/src/core/node-version.js +1 -0
  42. package/src/core/npm-cli.js +1 -1
  43. package/src/core/owned-lock.js +1 -1
  44. package/src/core/presentations.js +1 -1
  45. package/src/core/quality-artifacts.js +1 -0
  46. package/src/core/quality.js +1 -1
  47. package/src/core/resource-transaction.js +1 -0
  48. package/src/core/run-compatibility.js +1 -1
  49. package/src/core/runtime-info.js +1 -1
  50. package/src/core/runtime-ownership.js +1 -0
  51. package/src/core/session.js +1 -1
  52. package/src/core/skill-companions.js +1 -0
  53. package/src/core/skill-names.js +1 -1
  54. package/src/core/tool-contracts.js +1 -0
  55. package/src/core/update-control.js +1 -0
  56. package/src/core/workspace-generation.js +1 -0
  57. package/src/core/workspace-path.js +1 -1
  58. package/src/installer/bounded-command.js +1 -1
  59. package/src/installer/candidate-preflight.js +1 -1
  60. package/src/installer/connection-activation.js +1 -1
  61. package/src/installer/connection-supervisor.js +1 -1
  62. package/src/installer/deployment-draft.js +1 -0
  63. package/src/installer/gateway-context.js +1 -0
  64. package/src/installer/gateway-migration.js +1 -0
  65. package/src/installer/gateway-runtime.js +1 -0
  66. package/src/installer/global-setup.js +1 -1
  67. package/src/installer/hook-context-client.js +1 -0
  68. package/src/installer/hook-dispatcher.js +51 -0
  69. package/src/installer/host-hooks.js +1 -1
  70. package/src/installer/managed-config.js +1 -1
  71. package/src/installer/platform-config.js +1 -1
  72. package/src/installer/prerequisites.js +1 -1
  73. package/src/installer/presentations.js +1 -1
  74. package/src/installer/project-setup.js +1 -1
  75. package/src/installer/registration-plan.js +1 -0
  76. package/src/installer/registration-receipt.js +1 -1
  77. package/src/installer/registrations.js +1 -1
  78. package/src/installer/runtime-activation.js +1 -1
  79. package/src/installer/runtime-child.js +1 -1
  80. package/src/installer/runtime-launcher.js +21 -1
  81. package/src/installer/runtime-lock.js +1 -1
  82. package/src/installer/runtime-store.js +1 -1
  83. package/src/installer/runtime-supervisor.js +1 -1
  84. package/src/installer/setup-wizard.js +1 -1
  85. package/src/installer/update-addons.js +1 -0
  86. package/src/installer/update-executor.js +1 -0
  87. package/src/installer/workspace-registry.js +1 -0
  88. package/src/installer/workspace-transaction.js +1 -0
  89. package/src/installer/workspace-update.js +1 -1
  90. package/src/license/crypto.js +1 -1
  91. package/src/license/fingerprint.js +1 -1
  92. package/src/license/terms.js +1 -1
  93. package/src/license/verify.js +1 -1
  94. package/src/presets/index.js +1 -1
  95. package/src/proxy/backends.js +1 -1
  96. package/src/proxy/browser-sessions.js +1 -1
  97. package/src/proxy/core-tools.js +1 -1
  98. package/src/proxy/pipeline.js +1 -1
  99. package/src/proxy/public-catalog.js +1 -0
  100. package/src/proxy/router.config.js +1 -1
  101. package/src/proxy/router.js +1 -1
  102. package/src/proxy/server.js +1 -1
  103. package/src/proxy/workspace-gateway.js +1 -0
  104. package/src/templates/apt-runtime.md +12 -4
  105. package/src/templates/mcp-tools.md +9 -9
@@ -0,0 +1 @@
1
+ 'use strict';const _0x4391ee=_0x5b47;(function(_0x2eeb5d,_0x5b1762){const _0x4c28c1=_0x5b47,_0x1de7c0=_0x2eeb5d();while(!![]){try{const _0x4b78a2=-parseInt(_0x4c28c1(0x19c))/0x1*(-parseInt(_0x4c28c1(0x15b))/0x2)+parseInt(_0x4c28c1(0x176))/0x3+parseInt(_0x4c28c1(0x13f))/0x4+parseInt(_0x4c28c1(0x161))/0x5+parseInt(_0x4c28c1(0x157))/0x6*(parseInt(_0x4c28c1(0x164))/0x7)+parseInt(_0x4c28c1(0x162))/0x8*(-parseInt(_0x4c28c1(0x1a1))/0x9)+-parseInt(_0x4c28c1(0x16d))/0xa;if(_0x4b78a2===_0x5b1762)break;else _0x1de7c0['push'](_0x1de7c0['shift']());}catch(_0x3f3a1a){_0x1de7c0['push'](_0x1de7c0['shift']());}}}(_0x2fce,0xb65a4));const crypto=require(_0x4391ee(0x197)),{WorkspaceRegistry}=require(_0x4391ee(0x14d)),{gatewayCatalog}=require('./public-catalog'),{sameWorkspace}=require(_0x4391ee(0x1ba)),contracts=require(_0x4391ee(0x1ac)),fail=(_0x1b3d74,_0x5dce5d=_0x1b3d74)=>{const _0x5c5d31=_0x4391ee,_0x2b1eac={};_0x2b1eac[_0x5c5d31(0x140)]=_0x1b3d74;throw Object[_0x5c5d31(0x18d)](new Error(_0x5dce5d),_0x2b1eac);},content=_0x38c219=>({'content':[{'type':'text','text':JSON[_0x4391ee(0x179)](_0x38c219)}]});function _0x5b47(_0x2ab5dd,_0x2529d6){_0x2ab5dd=_0x2ab5dd-0x12d;const _0x2fce1e=_0x2fce();let _0x5b470d=_0x2fce1e[_0x2ab5dd];if(_0x5b47['mLOScd']===undefined){var _0x37b3ca=function(_0x46d994){const _0x415cff='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x177821='',_0x2a7652='';for(let _0xe8d231=0x0,_0x53d0a3,_0x31b82c,_0x18981b=0x0;_0x31b82c=_0x46d994['charAt'](_0x18981b++);~_0x31b82c&&(_0x53d0a3=_0xe8d231%0x4?_0x53d0a3*0x40+_0x31b82c:_0x31b82c,_0xe8d231++%0x4)?_0x177821+=String['fromCharCode'](0xff&_0x53d0a3>>(-0x2*_0xe8d231&0x6)):0x0){_0x31b82c=_0x415cff['indexOf'](_0x31b82c);}for(let _0xd2502f=0x0,_0x30693a=_0x177821['length'];_0xd2502f<_0x30693a;_0xd2502f++){_0x2a7652+='%'+('00'+_0x177821['charCodeAt'](_0xd2502f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2a7652);};_0x5b47['Wnktdm']=_0x37b3ca,_0x5b47['dxqkFM']={},_0x5b47['mLOScd']=!![];}const _0x1017e6=_0x2fce1e[0x0],_0x4ab4ff=_0x2ab5dd+_0x1017e6,_0x205d10=_0x5b47['dxqkFM'][_0x4ab4ff];return!_0x205d10?(_0x5b470d=_0x5b47['Wnktdm'](_0x5b470d),_0x5b47['dxqkFM'][_0x4ab4ff]=_0x5b470d):_0x5b470d=_0x205d10,_0x5b470d;}function validateIdentity(_0x28e439){const _0x1920c7=_0x4391ee,_0x414ec5={};_0x414ec5[_0x1920c7(0x138)]=contracts[_0x1920c7(0x138)],_0x414ec5[_0x1920c7(0x1a3)]=contracts[_0x1920c7(0x1a3)],_0x414ec5[_0x1920c7(0x137)]=contracts[_0x1920c7(0x137)],_0x414ec5['runId']=contracts[_0x1920c7(0x1a7)];for(const [_0x2eece0,_0x2ff09f]of Object[_0x1920c7(0x159)](_0x414ec5)){if(_0x28e439[_0x2eece0]===undefined)continue;const _0x3e23b5=_0x28e439[_0x2eece0];if(typeof _0x3e23b5!==_0x1920c7(0x165)||!_0x3e23b5[_0x1920c7(0x1b7)]()||_0x3e23b5[_0x1920c7(0x18a)]>_0x2ff09f['maxLength']||_0x2ff09f[_0x1920c7(0x13b)]&&!new RegExp(_0x2ff09f[_0x1920c7(0x13b)])['test'](_0x3e23b5))fail(_0x1920c7(0x14f)+_0x2eece0[_0x1920c7(0x16a)](/([a-z])([A-Z])/g,_0x1920c7(0x14c))[_0x1920c7(0x1a8)](),_0x2ff09f[_0x1920c7(0x163)]);}}class WorkspaceGateway{constructor(_0x28fe13={}){const _0x5f47c3=_0x4391ee;this[_0x5f47c3(0x16c)]=_0x28fe13['registry']||new WorkspaceRegistry(),this['runtimeFactory']=_0x28fe13[_0x5f47c3(0x130)],this[_0x5f47c3(0x17a)]=_0x28fe13[_0x5f47c3(0x17a)]||null,this['connectionId']=_0x28fe13['connectionId']||crypto['randomUUID'](),this['sessions']=new Map(),this[_0x5f47c3(0x151)]=new Map(),this[_0x5f47c3(0x1a4)]=new Map(),this[_0x5f47c3(0x184)]=gatewayCatalog(),this[_0x5f47c3(0x16b)]=_0x28fe13[_0x5f47c3(0x16b)]||(()=>{}),this['initialize']=null,this[_0x5f47c3(0x1a0)]=![];}async[_0x4391ee(0x194)](_0x2e8f27){const _0x241f3c=_0x4391ee;if(!_0x2e8f27[_0x241f3c(0x138)])fail('SESSION_ID_REQUIRED',_0x241f3c(0x1b2));const _0x4beead=this[_0x241f3c(0x14b)][_0x241f3c(0x152)](_0x2e8f27[_0x241f3c(0x138)]);if(_0x4beead&&!_0x2e8f27[_0x241f3c(0x149)]&&!_0x2e8f27[_0x241f3c(0x17c)])return _0x4beead;const _0x3e8490=this[_0x241f3c(0x151)]['get'](_0x2e8f27[_0x241f3c(0x138)]);if(_0x3e8490&&!_0x2e8f27[_0x241f3c(0x149)]&&!_0x2e8f27['workspacePath'])return _0x3e8490[_0x241f3c(0x144)];const _0x24364f=this[_0x241f3c(0x16c)][_0x241f3c(0x13a)](_0x2e8f27,{'host':this[_0x241f3c(0x17a)]});if(_0x2e8f27[_0x241f3c(0x1af)])this[_0x241f3c(0x175)](_0x2e8f27['bindingToken'],_0x24364f[_0x241f3c(0x149)]);if(_0x4beead){if(!sameWorkspace(_0x24364f[_0x241f3c(0x173)],_0x4beead[_0x241f3c(0x173)]))fail('WORKSPACE_BINDING_CONFLICT');return _0x4beead;}if(this['initializing'][_0x241f3c(0x192)](_0x2e8f27[_0x241f3c(0x138)])){const _0x48c0b0=this[_0x241f3c(0x151)][_0x241f3c(0x152)](_0x2e8f27['sessionId']);if(!sameWorkspace(_0x48c0b0[_0x241f3c(0x173)],_0x24364f[_0x241f3c(0x173)]))fail('WORKSPACE_BINDING_CONFLICT');return _0x48c0b0[_0x241f3c(0x144)];}const _0x94cb92={};_0x94cb92[_0x241f3c(0x16f)]=this[_0x241f3c(0x16f)],_0x94cb92['sessionId']=_0x2e8f27['sessionId'],_0x94cb92['workspace']=_0x24364f[_0x241f3c(0x173)],_0x94cb92[_0x241f3c(0x149)]=_0x24364f['workspaceId'],_0x94cb92[_0x241f3c(0x1b1)]=_0x241f3c(0x15f),_0x94cb92['provenance']='caller-selected',_0x94cb92[_0x241f3c(0x133)]=_0x241f3c(0x167);const _0x543bf6=_0x94cb92,_0xc9c23e=((async()=>{const _0x44d2c7=_0x241f3c;if(typeof this[_0x44d2c7(0x130)]!=='function')fail(_0x44d2c7(0x160));const _0x181dac=_0x24364f['profiles']?.[this[_0x44d2c7(0x17a)]]||{},_0x533c5d=await this[_0x44d2c7(0x130)](_0x543bf6,this[_0x44d2c7(0x18f)]||{},_0x181dac);this['stopped']&&(await _0x533c5d[_0x44d2c7(0x17b)](),fail('GATEWAY_CLOSED'));const _0x3f569c={..._0x543bf6};_0x3f569c[_0x44d2c7(0x19a)]=_0x533c5d,_0x3f569c[_0x44d2c7(0x143)]=_0x181dac;const _0x59cb1b=_0x3f569c;return this[_0x44d2c7(0x14b)][_0x44d2c7(0x17f)](_0x2e8f27['sessionId'],_0x59cb1b),_0x59cb1b;})()),_0x25655c={};_0x25655c[_0x241f3c(0x173)]=_0x24364f[_0x241f3c(0x173)],_0x25655c[_0x241f3c(0x144)]=_0xc9c23e,this[_0x241f3c(0x151)][_0x241f3c(0x17f)](_0x2e8f27['sessionId'],_0x25655c);try{return await _0xc9c23e;}finally{this['initializing'][_0x241f3c(0x12f)](_0x2e8f27[_0x241f3c(0x138)]);}}[_0x4391ee(0x1b9)](_0x1499ea){const _0x9dc846=_0x4391ee;for(const [_0x10fc71,_0x1052b1]of this[_0x9dc846(0x1a4)])if(_0x1052b1[_0x9dc846(0x177)]<Date[_0x9dc846(0x153)]())this[_0x9dc846(0x1a4)][_0x9dc846(0x12f)](_0x10fc71);if(this[_0x9dc846(0x1a4)]['size']>=0x1000)fail(_0x9dc846(0x172));const _0x2b612a=this[_0x9dc846(0x16f)]+'.'+crypto[_0x9dc846(0x187)](0x20)[_0x9dc846(0x1a9)]('base64url');this[_0x9dc846(0x1a4)][_0x9dc846(0x17f)](_0x2b612a,{'workspaceId':_0x1499ea[_0x9dc846(0x149)],'expiresAt':Date[_0x9dc846(0x153)]()+0xdbba0});const _0x81c83c={};return _0x81c83c[_0x9dc846(0x149)]=_0x1499ea[_0x9dc846(0x149)],_0x81c83c['workspace']=_0x1499ea[_0x9dc846(0x173)],_0x81c83c[_0x9dc846(0x1af)]=_0x2b612a,_0x81c83c;}[_0x4391ee(0x175)](_0x66c9e0,_0x2ffb31){const _0xf40198=_0x4391ee,_0x505669=this[_0xf40198(0x1a4)][_0xf40198(0x152)](_0x66c9e0);if(!_0x505669||_0x505669[_0xf40198(0x177)]<Date[_0xf40198(0x153)]()||_0x505669[_0xf40198(0x149)]!==_0x2ffb31)fail(_0xf40198(0x148),'Call\x20workspace_list\x20on\x20this\x20connection\x20and\x20use\x20its\x20current\x20bindingToken.');return _0x505669;}[_0x4391ee(0x1b0)](_0x12f994){const _0x2dabfd=_0x4391ee;let _0x48d20c;if(_0x12f994[_0x2dabfd(0x138)])_0x48d20c=this['sessions'][_0x2dabfd(0x152)](_0x12f994[_0x2dabfd(0x138)]);else{if(this[_0x2dabfd(0x14b)][_0x2dabfd(0x12d)]===0x1)_0x48d20c=this[_0x2dabfd(0x14b)][_0x2dabfd(0x19d)]()[_0x2dabfd(0x14a)]()[_0x2dabfd(0x188)];else{if(this['sessions']['size']>0x1)fail(_0x2dabfd(0x131),_0x2dabfd(0x15d));}}if(!_0x48d20c)fail(_0x2dabfd(0x1b4),_0x2dabfd(0x135));if(_0x12f994['workspaceId']||_0x12f994[_0x2dabfd(0x17c)]){const _0x45497b=this['registry'][_0x2dabfd(0x13a)](_0x12f994,{'host':this[_0x2dabfd(0x17a)]});if(!sameWorkspace(_0x45497b[_0x2dabfd(0x173)],_0x48d20c[_0x2dabfd(0x173)]))fail('WORKSPACE_BINDING_CONFLICT');}if(_0x12f994[_0x2dabfd(0x147)]&&!sameWorkspace(_0x12f994[_0x2dabfd(0x147)],_0x48d20c[_0x2dabfd(0x173)]))fail(_0x2dabfd(0x1aa));return _0x48d20c;}async[_0x4391ee(0x13c)](_0x27fdd4){const _0x318ed3=_0x4391ee;if(this['stopped'])fail('GATEWAY_CLOSED');const {id:_0x139945,method:_0x3455fa,params:params={}}=_0x27fdd4,_0x3f348c=_0x51a532=>({'jsonrpc':_0x318ed3(0x142),'id':_0x139945,'result':_0x51a532});if(_0x3455fa===_0x318ed3(0x18f)||_0x3455fa===_0x318ed3(0x18c)){const _0x4327de=[_0x318ed3(0x1ab),_0x318ed3(0x16e),_0x318ed3(0x195),_0x318ed3(0x14e)],_0x38562b=_0x4327de[_0x318ed3(0x17e)](params[_0x318ed3(0x1b3)])?params['protocolVersion']:_0x4327de['at'](-0x1),_0x267afb={...params};_0x267afb[_0x318ed3(0x1b3)]=_0x38562b,this['initialize']=_0x267afb;const _0x296027={};_0x296027['listChanged']=!![];const _0x332c2f={};return _0x332c2f[_0x318ed3(0x178)]=_0x296027,_0x3f348c({'protocolVersion':_0x38562b,'capabilities':_0x332c2f,'serverInfo':{'name':_0x318ed3(0x15f),'version':require(_0x318ed3(0x1b6))['version']},'instructions':_0x318ed3(0x171)});}if(_0x3455fa===_0x318ed3(0x155))return _0x3f348c({'tools':structuredClone(this[_0x318ed3(0x184)])});if(_0x3455fa==='ping')return _0x3f348c({});if(_0x3455fa===_0x318ed3(0x193))return null;const _0xf44552={};_0xf44552['code']=-0x7f59,_0xf44552['message']=_0x318ed3(0x169);if(_0x3455fa!==_0x318ed3(0x145))return _0x139945===undefined?null:{'jsonrpc':_0x318ed3(0x142),'id':_0x139945,'error':_0xf44552};try{const _0x174843=params[_0x318ed3(0x146)]||{};if(Array[_0x318ed3(0x141)](_0x174843)||typeof _0x174843!==_0x318ed3(0x174))fail('INVALID_ARGUMENTS');validateIdentity(_0x174843);if(params['name']!=='workspace_list'&&params[_0x318ed3(0x13e)]!==_0x318ed3(0x1ae)&&require(_0x318ed3(0x158))[_0x318ed3(0x18b)](params[_0x318ed3(0x13e)])&&!_0x174843[_0x318ed3(0x138)])fail(_0x318ed3(0x1a6),_0x318ed3(0x186));const _0x3264f4=this['catalog'][_0x318ed3(0x185)](_0x348947=>_0x348947[_0x318ed3(0x13e)]===params[_0x318ed3(0x13e)]);if(!_0x3264f4){const _0x293176=require(_0x318ed3(0x150))['mapExposedToOriginal'](params[_0x318ed3(0x13e)]);if(_0x293176&&_0x293176['backend']!==_0x318ed3(0x180)){const _0x4ac2cf={};_0x4ac2cf[_0x318ed3(0x18e)]=_0x293176[_0x318ed3(0x18e)],_0x4ac2cf[_0x318ed3(0x138)]=_0x174843[_0x318ed3(0x138)];const _0x52bf32={};_0x52bf32['tool']=_0x318ed3(0x1ae),_0x52bf32[_0x318ed3(0x146)]=_0x4ac2cf;const _0x782f2f={};_0x782f2f['code']=_0x318ed3(0x196),_0x782f2f['recovery']=_0x52bf32;const _0x160601=Object['assign'](new Error(_0x318ed3(0x191)),_0x782f2f);throw _0x160601;}fail(_0x318ed3(0x190),'This\x20gateway\x20has\x20no\x20verified\x20catalog\x20for\x20that\x20tool.');}if(params[_0x318ed3(0x13e)]===_0x318ed3(0x199))return _0x3f348c(content({'workspaces':this[_0x318ed3(0x16c)][_0x318ed3(0x15a)]()[_0x318ed3(0x12e)](_0x112852=>!this[_0x318ed3(0x17a)]||_0x112852['hosts'][_0x318ed3(0x17e)](this[_0x318ed3(0x17a)]))['map'](_0x30eb2b=>this[_0x318ed3(0x1b9)](_0x30eb2b)),'connectionId':this['connectionId']}));if(params[_0x318ed3(0x13e)]===_0x318ed3(0x1ae)&&!_0x174843[_0x318ed3(0x138)]&&!_0x174843['backend'])return _0x3f348c(content({'registration':_0x318ed3(0x15f),'connectionId':this['connectionId'],'boundSessions':this[_0x318ed3(0x14b)][_0x318ed3(0x12d)],'backendsStartedByDiscovery':0x0,'serving':'gateway','version':require('../../package.json')[_0x318ed3(0x19b)]}));for(const _0x45edcf of _0x3264f4['inputSchema'][_0x318ed3(0x156)]||[])if(_0x174843[_0x45edcf]===undefined&&_0x45edcf!==_0x318ed3(0x138))fail(_0x318ed3(0x17d)+_0x45edcf[_0x318ed3(0x16a)](/([a-z])([A-Z])/g,_0x318ed3(0x14c))['toUpperCase'](),_0x318ed3(0x1a5)+_0x45edcf+'.');const _0x3fba03=params[_0x318ed3(0x13e)]===_0x318ed3(0x136)?await this[_0x318ed3(0x194)](_0x174843):this[_0x318ed3(0x1b0)](_0x174843);if(_0x3fba03[_0x318ed3(0x143)]?.[_0x318ed3(0x178)]?.[params[_0x318ed3(0x13e)]]?.['enabled']===![])fail(_0x318ed3(0x198));const _0x2e4ecb={..._0x174843};_0x2e4ecb[_0x318ed3(0x138)]=_0x3fba03['sessionId'];const _0x49ca92=_0x2e4ecb,_0x4f6fc6={...params};_0x4f6fc6[_0x318ed3(0x146)]=_0x49ca92;const _0x429698={..._0x27fdd4};_0x429698['params']=_0x4f6fc6;const _0x352172=await _0x3fba03[_0x318ed3(0x19a)][_0x318ed3(0x1b5)](_0x429698);if(params[_0x318ed3(0x13e)]===_0x318ed3(0x1ae)&&_0x174843[_0x318ed3(0x18e)]&&!_0x352172[_0x318ed3(0x183)]){const _0x397764={};_0x397764[_0x318ed3(0x132)]=_0x318ed3(0x155),_0x397764[_0x318ed3(0x189)]={};const _0x473ac1=await _0x3fba03[_0x318ed3(0x19a)][_0x318ed3(0x1b5)](_0x397764);let _0x4e7a2b=![];for(const _0x338df1 of _0x473ac1[_0x318ed3(0x178)]||[]){if(require('./router')[_0x318ed3(0x181)](_0x338df1[_0x318ed3(0x13e)])?.[_0x318ed3(0x18e)]!==_0x174843[_0x318ed3(0x18e)])continue;const _0x30aef6=require(_0x318ed3(0x15c))[_0x318ed3(0x1ad)](structuredClone(_0x338df1)),_0x186f5c=this[_0x318ed3(0x184)][_0x318ed3(0x185)](_0x175ba1=>_0x175ba1[_0x318ed3(0x13e)]===_0x30aef6['name']);if(_0x186f5c&&JSON[_0x318ed3(0x179)](_0x186f5c[_0x318ed3(0x1a2)])!==JSON[_0x318ed3(0x179)](_0x30aef6['inputSchema']))fail(_0x318ed3(0x15e));!_0x186f5c&&(this[_0x318ed3(0x184)]['push'](_0x30aef6),_0x4e7a2b=!![]);}if(_0x4e7a2b)this[_0x318ed3(0x16b)]();}return _0x3f348c(_0x352172);}catch(_0x26294b){const _0x2dfb69={};return _0x2dfb69[_0x318ed3(0x166)]=_0x318ed3(0x199),_0x2dfb69[_0x318ed3(0x182)]=_0x318ed3(0x136),_0x2dfb69[_0x318ed3(0x156)]=[_0x318ed3(0x138),'workspaceId'],_0x3f348c({...content({'success':![],'code':_0x26294b[_0x318ed3(0x140)]||'GATEWAY_REQUEST_FAILED','error':_0x26294b['message'],'recovery':_0x26294b[_0x318ed3(0x134)]||([_0x318ed3(0x1b4),_0x318ed3(0x131),'WORKSPACE_NOT_REGISTERED']['includes'](_0x26294b['code'])?_0x2dfb69:undefined)}),'isError':!![]});}}async[_0x4391ee(0x17b)](){const _0x3fa77b=_0x4391ee;this[_0x3fa77b(0x1a0)]=!![],await Promise[_0x3fa77b(0x170)]([...this[_0x3fa77b(0x151)][_0x3fa77b(0x19d)]()][_0x3fa77b(0x139)](_0x199972=>_0x199972[_0x3fa77b(0x144)]));const _0x1fca88=await Promise['allSettled']([...this['sessions'][_0x3fa77b(0x19d)]()][_0x3fa77b(0x139)](_0x2b338d=>_0x2b338d['runtime'][_0x3fa77b(0x17b)]())),_0x544d8d=_0x1fca88[_0x3fa77b(0x185)](_0x351a53=>_0x351a53[_0x3fa77b(0x154)]===_0x3fa77b(0x13d));if(_0x544d8d)throw _0x544d8d[_0x3fa77b(0x168)];this[_0x3fa77b(0x14b)][_0x3fa77b(0x19e)]();}}function _0x2fce(){const _0x38dbee=['AgfUzgXL','CMvQzwn0zwq','BMfTzq','mJa2mJi2nfbrr0Xcta','y29Kzq','AxnbCNjHEq','mI4W','ChjVzMLSzq','ChjVBwLZzq','Dg9VBhmVy2fSBa','yxjNDw1LBNrZ','ChjVAMvJDfbHDgG','r0furvDbwv9truXfq1rjt05FuKvrvuLsruq','D29YA3nWywnLswq','BMv4Da','C2vZC2LVBNm','jdfFjdi','lI4VAw5ZDgfSBgvYl3DVCMTZCgfJzs1YzwDPC3rYEq','mJaYns0Xms0Ynq','su5wquXjrf8','lI9YB3v0zxi','Aw5PDgLHBgL6Aw5N','z2v0','BM93','C3rHDhvZ','Dg9VBhmVBgLZDa','CMvXDwLYzwq','nZe0ody0sMHeENny','lI4Vy29Yzs9JywXSzxiTy29UDgv4Da','zw50CMLLCW','BgLZDa','nZK4swDjvg1p','lI9WDwjSAwmTy2f0ywXVzW','ugfZCYbZzxnZAw9Uswq7ihrOAxmGy29UBMvJDgLVBIbZzxj2zxmGBxvSDgLWBguGChjVAMvJDcbZzxnZAw9UCY4','q0fuquXpr19tq0HftufFq09orKXjq1q','yxb0lw1JCc1Hz2vUDa','r0furvDbwv9svu5usu1fx1voqvzbsuXbqKXf','mZm5nte1yKD3s2Lu','nZjPuwfLwxu','zgvZy3jPChrPB24','ntzoDfzcwxO','C3rYAw5N','Dg9VBa','Dw5JB25MAxjTzwq','CMvHC29U','twv0Ag9Kig5VDcbMB3vUza','CMvWBgfJzq','B25dyxrHBg9Nq2HHBMDLza','CMvNAxn0CNK','mtu1nZGZmdbrqLLougG','mJaYns0WmY0YnG','y29UBMvJDgLVBKLK','ywXSu2v0DgXLza','t25LiefqvcbNyxrLD2f5ihnLCNzLCYbPBNn0ywXSzwqGChjVAMvJDhmUienHBgWGD29YA3nWywnLx2XPC3qSihrOzw4GC2vZC2LVBL9IB290C3rYyxaGD2L0Acb5B3vYihnLC3nPB25jzcbHBMqGDgHLihbYB2PLy3qGD29YA3nWywnLswqUiefSD2f5CYbWyxnZihrOyxqGC2vZC2LVBKLKig9Uihn1yNnLCxvLBNqGy2fSBhmUie5LDMvYigjPBMqGAg9TzsbVCIbZzwXLy3qGysbWCM9Qzwn0igzYB20GCMvJzw5JEs4','r0furvDbwv9truXfq1rjt05FteLnsvq','D29YA3nWywnL','B2jQzwn0','DMvYAwz5u2vSzwn0Aw9U','mti4odm4m0jusg91vq','zxHWAxjLC0f0','Dg9VBhm','C3rYAw5NAwz5','Ag9ZDa','y2XVC2u','D29YA3nWywnLugf0Aa','tuLtu0Lor18','Aw5JBhvKzxm','C2v0','x2j1AwX0Aw4','BwfWrxHWB3nLzfrVt3jPz2LUywW','DgHLBG','AxnfCNjVCG','y2f0ywXVzW','zMLUza','txv0yxrPB25ZihjLCxvPCMuGDgHLigv4CgXPy2L0BhKGyM91BMqGC2vZC2LVBKLKlG','CMfUzg9TqNL0zxm','DMfSDwu','CgfYyw1Z','BgvUz3rO','C2vUC2L0AxzLvg9VBa','C2vYDMvYl2rPC2nVDMvY','yxnZAwDU','yMfJA2vUza','Aw5PDgLHBgL6zq','ve9ptf9ot1rFqvzbsuXbqKXf','vgHPCYbHzgrVBIbUzwvKCYbPBNrLBNrPB25HBcbJyxrHBg9NigrPC2nVDMvYEtSGy2fSBcbTy3bFywDLBNrFAgvHBhrOihDPDgGGAxrZigjHy2TLBMqGyw5KihnLC3nPB25jzc4','AgfZ','BM90AwzPy2f0Aw9UCY9PBML0AwfSAxPLza','yMLUza','mJaYns0WnI0Xoa','qKfds0vorf9dqvrbte9hx0rju0npvKvswv9srvfvsvjfra','BM9KztPJCNLWDg8','ufjpsKvdvf9ut09mx0rju0fcteve','D29YA3nWywnLx2XPC3q','CNvUDgLTzq','DMvYC2LVBG','mtK2oxzesxLOtG','DMfSDwvZ','y2XLyxi','v29YA3nWywnLr2f0zxDHEq','C3rVChbLza','ndq2oty3rMPhzgPz','Aw5WDxrty2HLBwe','CMvXDwvZDeLK','yMLUzgLUz1nLBgvJDgLVBNm','uMvXDwLYzwqGzMLLBgq6ia','u0vtu0LptL9jrf9srvfvsvjfra','CNvUswq','Dg9vChbLCKnHC2u','Dg9tDhjPBMC','v09ss1nqqunfx0jjtKrjtKDFq09orKXjq1q','mJaYnc0Xms0Wnq','lI4Vy29Yzs90B29SlwnVBNrYywn0CW','zgvJB3jHDgvhyxrLD2f5vg9VBa','BwnWx2fNzw50x2HLywX0Aa','yMLUzgLUz1rVA2vU','C2vSzwn0zwq','CMvNAxn0CMf0Aw9U','ugfZCYb0AguGC2fTzsbUB25LBxb0EsbZzxnZAw9UswqGDgHYB3vNAg91Dcb0AgLZignOyxqU','ChjVDg9JB2XwzxjZAw9U','v09ss1nqqunfx0jjtKrjtKDFuKvrvuLsruq','CMvXDwvZDa','lI4VlI4VCgfJA2fNzs5QC29U','DhjPBq','DMfSAwrHDgvjzgvUDgL0Eq','C2vSzwn0Aw9U','lI4Vy29Yzs93B3jRC3bHy2uTCgf0Aa','C2L6zq','zMLSDgvY','zgvSzxrL','CNvUDgLTzuzHy3rVCNK','v09ss1nqqunfx0fnqKLhvu9vuW','Bwv0Ag9K','BMf0AxzLswrLBNrPDhK','CMvJB3zLCNK','q2fSBcb3B3jRC3bHy2vFBgLZDcWGDgHLBIbZzxnZAw9Ux2jVB3rZDhjHCcb3AxrOihnLC3nPB25jzcbHBMqGD29YA3nWywnLswqU','C2vZC2LVBL9IB290C3rYyxa','DgfZAW','C2vZC2LVBKLK','BwfW','CMvZB2X2zq','Cgf0DgvYBG'];_0x2fce=function(){return _0x38dbee;};return _0x2fce();}const _0x3c0489={};_0x3c0489[_0x4391ee(0x19f)]=WorkspaceGateway,_0x3c0489[_0x4391ee(0x1b8)]=validateIdentity,module['exports']=_0x3c0489;
@@ -1,16 +1,24 @@
1
1
  # APT session and execution contract
2
2
 
3
- 1. Call `session_bootstrap` at session start and after context recovery. Read project conventions from `.agents/memory/MEMORY.md`; retrieve only relevant dynamic knowledge. Report unavailable backends once and use available fallbacks.
3
+ 1. Use the single canonical `apt-mcp-agent` registration. Call `workspace_list` before the first bootstrap and match the actual open project, then call `session_bootstrap` with its `workspaceId`, `bindingToken` and one consistent `sessionId`. After context recovery reuse the same binding. Do not select home, the newest project or another session. If no registered project matches, report `WORKSPACE_BINDING_REQUIRED`. Read project conventions from `.agents/memory/MEMORY.md`; retrieve only relevant dynamic knowledge. Report unavailable backends once and use available fallbacks.
4
4
  2. Call `route_request` for a new request or changed intent, including target package/stack and explicit skills. Load the selected specialist and companion skills with `skill_load`. Do not read the complete trigger catalog into the model context.
5
5
  3. Read-only questions, reviews and running existing tests do not require a code-change pipeline. Before executable changes, inspect `pipeline_status` and bind `pipeline_start` or `pipeline_use` with canonical task/run identity and an explicit workspace.
6
6
  4. Small changes use scope, fix/check and review. Features use clarification only where needed, a plan with acceptance criteria, implementation, verification, review and acceptance. Bug fixes start with diagnosis and regression coverage. Do not require three questions, a PRD or external issues when the task is already clear.
7
- 5. Use `pipeline_next` to reserve work before dispatch. Use its pinned `nativeDispatch` fields only where the native tool supports them. Codex model overrides use a fresh brief with `fork_turns:"none"` and the exact `nativeTaskName`; a follow-up cannot change an existing worker's model. Include APT attempt, actor and session markers in the brief. Delegate useful independent research and reviews to native host subagents, with at most four active actors including the coordinator. Only one writer per workspace. Workers must not start/reset/rebind the parent pipeline.
7
+ 5. Use `pipeline_next` to reserve work before dispatch. Use its pinned `nativeDispatch` fields only where the native tool supports them. Codex model overrides use a fresh brief with `fork_turns:"none"` and the exact `nativeTaskName`; a follow-up cannot change an existing worker's model. Include APT attempt, actor and session markers in the brief. Delegate useful independent research and reviews to native host subagents, with at most four active actors including the coordinator. Only one writer per workspace. Workers must not start/reset/rebind the parent pipeline.
8
8
  6. Pin a quality plan for new executable runs: stable criteria, expected outcomes, concrete check IDs, target platforms and required review roles. Use `pipeline_verify` with a supported test report and named assertions, then `pipeline_checkpoint` with the current evidence IDs. Exit code, build, screenshot or a free-form summary cannot prove functional acceptance. Missing required checks keep the run unaccepted.
9
- 7. Record separate technical and Product/UX review verdicts when the work affects a user flow. Review staged, unstaged and relevant untracked changes. Keep finding IDs open across reviews until a current fix or reasoned dismissal is confirmed by a reviewer. The native reviewer records its own structured verdict with `pipeline_checkpoint(action="review")`; nested work items use `spec`/`quality`, while run-level review uses `technical`/`product`. High-risk work needs host proof of the reviewer and verdict authorship; actor names, worker receipts alone and self-reported models do not prove it. Rerun checks after affected changes. Review-only requests produce findings, not unsolicited edits or MR comments.
10
- 8. `pipeline_verify(kind="review")` cannot satisfy a review gate and is rejected before command execution. Use the `requiredReview` returned by `pipeline_next`, then record a structured review on the reserved attempt. Stop after ten repair/check attempts per work item or three repeated outcomes without progress. Preserve budgets and blocked/paused states across resume. User interruption always wins over continuation hooks.
9
+ 7. Record separate technical and Product/UX review verdicts when the work affects a user flow. Review staged, unstaged and relevant untracked changes. Keep finding IDs open across reviews until a current fix or reasoned dismissal is confirmed by a reviewer. The native reviewer records its own structured verdict with `pipeline_checkpoint(action="review")`; nested work items use `spec`/`quality`, while run-level review uses `technical`/`product`. High-risk work needs host proof of the reviewer and verdict authorship; actor names, worker receipts alone and self-reported models do not prove it. Rerun checks after affected changes. Review-only requests produce findings, not unsolicited edits or MR comments.
10
+ 8. `pipeline_verify(kind="review")` cannot satisfy a review gate and is rejected before command execution. Use the `requiredReview` returned by `pipeline_next`, then record a structured review on the reserved attempt. Stop after ten repair/check attempts per work item or three repeated outcomes without progress. Preserve budgets and blocked/paused states across resume. User interruption always wins over continuation hooks.
11
11
  9. Native tool enforcement and automatic continuation depend on observed host capability. If unavailable, use sequential execution and state that limitation. Never claim independent review without an independent reviewer.
12
12
  10. Keep prose short and clear, reuse existing code, and load only current-step references. Strong caveman style is opt-in. Publishing, merging and external communication require authorization for those actions.
13
13
 
14
14
  `pipeline_reset(task, runId, confirm=true)` cancels a run while preserving history. Legacy runs retain their legacy definitions. Content-only documentation does not require PRD, issue or TDD steps; AGENTS.md, SKILL.md, trigger maps and runtime configuration are operational contracts.
15
15
 
16
+ Claude dispatch uses the host's declared `Agent` or `Task` schema and `prompt`.
17
+ Prefer background only when supported. An unbound child is read-only. For a
18
+ foreground reviewer, receive findings first, link the native identity, then
19
+ resume the same child to author its structured review and report. Complete both
20
+ phases continuously. Do not use Codex fields or write a verdict for the child.
21
+ An async launch or report is not native completion. Refresh receipts before
22
+ releasing a known native worker; missing stop evidence remains a blocker.
23
+
16
24
  Read `docs/agents/mcp-tools.md` for interfaces. Run `npx apt-mcp-agent-setup doctor` to inspect configuration. A registered MCP server or installed hook is not proof of successful activation. Health must show successful initialization and functional probes, not only a running process.
@@ -4,19 +4,19 @@
4
4
 
5
5
  For Figma and Stitch tool names and authentication, read `docs/agents/design-config.md` when working on design tasks.
6
6
 
7
- - Bootstrap: `session_bootstrap(sessionId, contextEpoch, host, capabilities)` identifies this context and reports resumable work. When the native tool schema is visible, describe `capabilities.nativeDispatch` with its tool, selection mode, model/effort field names, fork modes and requestable model IDs. This coordinator declaration permits a request, but is not a host-observed model receipt. An absent capability field means unknown, not a permanent denial.
7
+ - Bootstrap: `session_bootstrap(sessionId, contextEpoch, host, capabilities)` identifies this context and reports resumable work. When the native tool schema is visible, describe `capabilities.nativeDispatch` with its tool, selection mode, model/effort field names, fork modes and requestable model IDs. This coordinator declaration permits a request, but is not a host-observed model receipt. An absent capability field means unknown, not a permanent denial.
8
8
  - Route: `route_request(sessionId, requestId, prompt, target, stack, explicitSkills)` returns the workflow, specialist, review roles, platform verification requirements and phase-specific skills. Load current-step skills with `skill_load` and agent/workflow content with `context_load` for each new worker or context epoch.
9
- - Models: `model_list(sessionId, offset, limit, query)` reports advertised, requestable and eligible models with source, account scope and coverage. CLI and Codex local cache entries are reference only. Use the pinned `nativeDispatch` from `pipeline_next`; compare its selector with the actual spawn arguments, then keep the host-reported worker model separate. An `inherit` selector or a model chosen in the IDE does not confirm a child model.
10
- - Start: `pipeline_start(pipeline, task, workspace, acceptanceCriteria, scope, qualityPlan, productImpact, sessionId)` creates a versioned run. Bootstrap the session in the intended workspace first. `workspace` is a schema-valid object, such as `{mode:"current",confirmed:true}`; a string or an unbound global server cannot create a run. On Antigravity, use the workspace MCP alias. New executable runs require at least one acceptance criterion string that exactly matches `qualityPlan.criteria[].expectedOutcome`. The plan uses `criteria: [{id, expectedOutcome, source, checkIds}]`, `checks: [{id, criterionIds, format, testIds, required}]`, and `reviews: [{id, required}]`. A recent user-facing web or mobile route requires its platform check and Product review. Use `pipeline_use(task, runId)` to resume the same run.
11
- - Execute: `pipeline_next(task, runId, sessionId, role, requestId)` reserves an attempt. Pass its exact `nativeTaskName`, model/tier, reasoning effort and fork mode to the native tool where that tool supports them. Codex model overrides require `fork_turns:"none"`; put `APT_ATTEMPT_ID`, `APT_ACTOR_ID` and `APT_SESSION_ID` in the fresh worker brief. A `followup_task` keeps the existing worker's model; dispatch a new worker when a new model is required. The coordinator controls transitions. Resource and quota waits remain resumable.
12
- - Verify: `pipeline_verify` records authorized argv execution under the run workspace. For functional acceptance, pass `checkId`, supported `reportFormat` and named test IDs in the pinned plan. Zero, skipped or unreadable tests and unrelated successful commands remain unverified. `pipeline_verify(kind="review")` is rejected before running a command. Read `pipeline_next.requiredReview`: nested work items require `spec`/`quality`, while run-level gates require `technical`/`product`. The reserved reviewer records its own structured verdict with `pipeline_checkpoint(action="review")`; resolution of a persistent finding needs current evidence and later reviewer confirmation. A direct start without a bound route needs Technical `impactAssessment` before acceptance. User-flow impact requires Product review and platform checks. Missing required platform checks leave the run unaccepted.
13
- - Inspect: `pipeline_status` reports current criterion/check status, open findings, reviewer provenance and pending creation intents without binding sessions. `pipeline_reset(task, runId, sessionId, confirm:true, target:"creation")` abandons a matching unfinished intent while preserving its file. The default `target:"run"` cancels a run without deleting history. `pipeline_prepare_merge` only prepares a report.
9
+ - Models: `model_list(sessionId, offset, limit, query)` reports advertised, requestable and eligible models with source, account scope and coverage. CLI and Codex local cache entries are reference only. Use the pinned `nativeDispatch` from `pipeline_next`; compare its selector with the actual spawn arguments, then keep the host-reported worker model separate. An `inherit` selector or a model chosen in the IDE does not confirm a child model.
10
+ - Start: `pipeline_start(pipeline, task, workspace, acceptanceCriteria, scope, qualityPlan, productImpact, sessionId)` creates a versioned run. Bootstrap the session in the intended workspace first. `workspace` is a schema-valid object, such as `{mode:"current",confirmed:true}`; a string or an unbound global server cannot create a run. Use the canonical `apt-mcp-agent` gateway, selecting a registered project with `workspace_list` then `session_bootstrap(sessionId, workspaceId, bindingToken)` first. Preserve that session ID on later calls. Legacy connections keep their reported alias until migration. New executable runs require at least one acceptance criterion string that exactly matches `qualityPlan.criteria[].expectedOutcome`. The plan uses `criteria: [{id, expectedOutcome, source, checkIds}]`, `checks: [{id, criterionIds, format, testIds, required}]`, and `reviews: [{id, required}]`. A recent user-facing web or mobile route requires its platform check and Product review. Use `pipeline_use(task, runId)` to resume the same run.
11
+ - Execute: `pipeline_next(task, runId, sessionId, role, requestId)` reserves an attempt. Pass its exact `nativeTaskName`, model/tier, reasoning effort and fork mode to the native tool where that tool supports them. Codex model overrides require `fork_turns:"none"`; put `APT_ATTEMPT_ID`, `APT_ACTOR_ID` and `APT_SESSION_ID` in the fresh worker brief. A `followup_task` keeps the existing worker's model; dispatch a new worker when a new model is required. The coordinator controls transitions. Resource and quota waits remain resumable.
12
+ - Verify: `pipeline_verify` records authorized argv execution under the run workspace. For functional acceptance, pass `checkId`, supported `reportFormat` and named test IDs in the pinned plan. Zero, skipped or unreadable tests and unrelated successful commands remain unverified. `pipeline_verify(kind="review")` is rejected before running a command. Read `pipeline_next.requiredReview`: nested work items require `spec`/`quality`, while run-level gates require `technical`/`product`. The reserved reviewer records its own structured verdict with `pipeline_checkpoint(action="review")`; resolution of a persistent finding needs current evidence and later reviewer confirmation. A direct start without a bound route needs Technical `impactAssessment` before acceptance. User-flow impact requires Product review and platform checks. Missing required platform checks leave the run unaccepted.
13
+ - Inspect: `pipeline_status` reports current criterion/check status, open findings, reviewer provenance and pending creation intents without binding sessions. `pipeline_reset(task, runId, sessionId, confirm:true, target:"creation")` abandons a matching unfinished intent while preserving its file. The default `target:"run"` cancels a run without deleting history. `pipeline_prepare_merge` only prepares a report.
14
14
  - Read-only questions, review and existing test execution do not require a mutation pipeline. Scope-limited changes use the short pipeline; increased risk adds required checks.
15
15
  - MCP gates cover proxied calls. Native tool gates and continuation require observed host hooks. Plan Mode and user interruption take precedence.
16
16
  - Codegraph failures permit file-search fallback. The proxy refreshes the review graph before impact analysis; it must report failure rather than use stale results.
17
- - `mcp_agent_health` reports process, initialization and functional readiness separately. `npx apt-mcp-agent-setup doctor` performs read-only configuration inspection.
18
- - Backend catalogs are available without starting child processes. A tool call starts only its target backend. Pass `backend` to `mcp_agent_health` when a live probe is required.
19
- - Use `npx apt-mcp-agent-setup mcp registrations --json` to inspect workspace aliases and `mcp cleanup --dry-run` before reviewing legacy validation aliases. Cleanup requires a reviewed plan and preserves a backup.
17
+ - `mcp_agent_health` reports process, initialization and functional readiness separately. `npx apt-mcp-agent-setup doctor` performs read-only configuration inspection.
18
+ - Backend catalogs are available without starting child processes. A tool call starts only its target backend. Pass `backend` to `mcp_agent_health` when a live probe is required.
19
+ - Use `npx apt-mcp-agent-setup mcp registrations --json` to inspect workspace aliases and `mcp cleanup --dry-run` before reviewing legacy validation aliases. Cleanup requires a reviewed plan and preserves a backup.
20
20
  - Browser work uses the lazy `browser-local` backend when the preset has it. Pass `aptTask` and `aptWorker` on browser calls. Use snapshot and console evidence. A page load or screenshot alone is not a feature check. After an uncertain browser action, inspect state before retrying and never replay a side-effecting call automatically.
21
21
  - `presentation_prepare` returns pinned PPT Master commands for the document-artifact pipeline. It does not execute commands or overwrite a source deck. Preserve unselected slides and report `visual-unverified` when no renderer and visual review are available.
22
22
  - `aso_import` reads workspace-relative CSV/XLSX exports. Preserve nulls and source metadata. It is export intake, not a live Sensor Tower connection; do not call unregistered market-data tool names.