apt-mcp-agent-setup 3.5.36 → 3.5.61

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 (183) hide show
  1. package/README.md +123 -123
  2. package/bin/cli.js +1 -1
  3. package/build-input.json +302 -241
  4. package/bundle/NOTICES.md +0 -0
  5. package/bundle/core.enc +0 -0
  6. package/bundle/mcp-rules.enc +0 -0
  7. package/bundle/skills-aso.enc +0 -0
  8. package/bundle/skills-ba.enc +0 -0
  9. package/bundle/skills-base.enc +0 -0
  10. package/bundle/skills-be.enc +0 -0
  11. package/bundle/skills-design.enc +0 -0
  12. package/bundle/skills-fe.enc +0 -0
  13. package/bundle/skills-marketing.enc +0 -0
  14. package/bundle/skills-mobile.enc +0 -0
  15. package/bundle/skills-pm.enc +0 -0
  16. package/docs/technical-sources.md +7 -7
  17. package/integrity-manifest.json +183 -178
  18. package/package.json +1 -1
  19. package/release-check.js +30 -30
  20. package/src/backends/browser-tools.js +1 -1
  21. package/src/backends/index-cache-authority.js +1 -1
  22. package/src/backends/index-command.js +1 -1
  23. package/src/backends/index-contract.json +11 -11
  24. package/src/backends/index-maintenance.js +1 -1
  25. package/src/backends/index-store.js +1 -1
  26. package/src/backends/linked-worktrees.js +1 -0
  27. package/src/backends/profiles.js +1 -1
  28. package/src/backends/review_graph.py +125 -103
  29. package/src/backends/source-discovery.js +1 -1
  30. package/src/core/admission-fence.js +1 -1
  31. package/src/core/aso-import.js +1 -1
  32. package/src/core/backend-lease-recovery.js +1 -1
  33. package/src/core/boot-evidence.js +1 -1
  34. package/src/core/caller-context.js +1 -1
  35. package/src/core/catalog.js +1 -1
  36. package/src/core/claude-caller-authority.js +1 -1
  37. package/src/core/claude-invocation.js +1 -1
  38. package/src/core/claude-launch-recovery.js +1 -1
  39. package/src/core/claude-native.js +1 -1
  40. package/src/core/claude-plan.js +1 -1
  41. package/src/core/claude-transcript-scan.js +1 -1
  42. package/src/core/claude-worker-transcript.js +1 -1
  43. package/src/core/codex-host-metadata.js +1 -1
  44. package/src/core/codex-transcript-receipt.js +1 -1
  45. package/src/core/connection-inspector.js +1 -1
  46. package/src/core/content-hash-cache.js +1 -1
  47. package/src/core/context-metrics.js +1 -1
  48. package/src/core/doctor.js +1 -1
  49. package/src/core/draining-completion.js +1 -1
  50. package/src/core/execution.js +1 -1
  51. package/src/core/git-context.js +1 -1
  52. package/src/core/hook-bridge.js +1 -1
  53. package/src/core/hook-diagnostics.js +1 -1
  54. package/src/core/hook-lease.js +1 -1
  55. package/src/core/host-adapters.js +1 -1
  56. package/src/core/interrupted-boot-transport-proof.js +1 -1
  57. package/src/core/interrupted-natural-closure-proof.js +1 -1
  58. package/src/core/interrupted-operation-audit.js +1 -1
  59. package/src/core/interrupted-transport-proof.js +1 -1
  60. package/src/core/ipc-envelope.js +1 -1
  61. package/src/core/legacy-retirement-proof.js +1 -1
  62. package/src/core/memory-scope.js +1 -1
  63. package/src/core/memory-store.js +1 -1
  64. package/src/core/model-inventory.js +1 -1
  65. package/src/core/model-routing.js +1 -1
  66. package/src/core/native-dispatch.js +1 -1
  67. package/src/core/native-receipt.js +1 -1
  68. package/src/core/native-retirement.js +1 -1
  69. package/src/core/node-version.js +1 -1
  70. package/src/core/npm-cli.js +1 -1
  71. package/src/core/owned-command-child.js +1 -1
  72. package/src/core/owned-command.js +1 -1
  73. package/src/core/owned-lock.js +1 -1
  74. package/src/core/owned-process.js +1 -1
  75. package/src/core/pipeline-journal.js +1 -1
  76. package/src/core/presentations.js +1 -1
  77. package/src/core/quality-artifacts.js +1 -1
  78. package/src/core/quality.js +1 -1
  79. package/src/core/read-command.js +1 -1
  80. package/src/core/readonly-skill.js +1 -1
  81. package/src/core/recovery-archive.js +1 -1
  82. package/src/core/recovery-proof.js +1 -1
  83. package/src/core/resource-transaction.js +1 -1
  84. package/src/core/run-checkpoint.js +1 -1
  85. package/src/core/run-compatibility.js +1 -1
  86. package/src/core/run-owner.js +1 -0
  87. package/src/core/run-state-codec.js +1 -1
  88. package/src/core/runtime-authority.js +1 -1
  89. package/src/core/runtime-info.js +1 -1
  90. package/src/core/runtime-ownership.js +1 -1
  91. package/src/core/session.js +1 -1
  92. package/src/core/shared-checkout.js +1 -1
  93. package/src/core/skill-companions.js +1 -1
  94. package/src/core/skill-names.js +1 -1
  95. package/src/core/storage-retry.js +1 -1
  96. package/src/core/tool-contracts.js +1 -1
  97. package/src/core/transport-boot-contract.json +12 -12
  98. package/src/core/transport-close-contract.json +10 -10
  99. package/src/core/transport-contract.json +10 -10
  100. package/src/core/transport-pending-boot-contract.json +12 -12
  101. package/src/core/update-control.js +1 -1
  102. package/src/core/upgrade-runs.js +1 -1
  103. package/src/core/upgrade-stop.js +1 -1
  104. package/src/core/windows-job.js +1 -1
  105. package/src/core/workflow-policy.js +1 -1
  106. package/src/core/workspace-generation.js +1 -1
  107. package/src/core/workspace-path.js +1 -1
  108. package/src/installer/bounded-command.js +1 -1
  109. package/src/installer/candidate-preflight.js +1 -1
  110. package/src/installer/claude-commands.js +1 -1
  111. package/src/installer/codex-hook-trust.js +1 -0
  112. package/src/installer/connection-activation.js +1 -1
  113. package/src/installer/connection-supervisor.js +1 -1
  114. package/src/installer/deployment-draft.js +1 -1
  115. package/src/installer/gateway-context.js +1 -1
  116. package/src/installer/gateway-migration.js +1 -1
  117. package/src/installer/gateway-runtime.js +1 -1
  118. package/src/installer/global-setup.js +1 -1
  119. package/src/installer/hook-context-client.js +1 -1
  120. package/src/installer/hook-dispatcher.js +179 -179
  121. package/src/installer/host-hooks.js +1 -1
  122. package/src/installer/index-interruption-recovery.js +1 -1
  123. package/src/installer/index-recovery.js +1 -1
  124. package/src/installer/install-intent.js +1 -1
  125. package/src/installer/interrupted-operation-recovery.js +1 -1
  126. package/src/installer/legacy-prepared-plan.js +1 -1
  127. package/src/installer/legacy-registration.js +1 -1
  128. package/src/installer/managed-config.js +1 -1
  129. package/src/installer/migration-scope.js +1 -1
  130. package/src/installer/platform-config.js +1 -1
  131. package/src/installer/prerequisites.js +1 -1
  132. package/src/installer/presentations.js +1 -1
  133. package/src/installer/project-outcome.js +1 -1
  134. package/src/installer/project-setup.js +1 -1
  135. package/src/installer/recovery-backup-retention.js +1 -1
  136. package/src/installer/registration-closure.js +1 -1
  137. package/src/installer/registration-plan.js +1 -1
  138. package/src/installer/registration-receipt.js +1 -1
  139. package/src/installer/registrations.js +1 -1
  140. package/src/installer/runtime-activation.js +1 -1
  141. package/src/installer/runtime-child.js +1 -1
  142. package/src/installer/runtime-cleanup.js +1 -1
  143. package/src/installer/runtime-lock.js +1 -1
  144. package/src/installer/runtime-store.js +1 -1
  145. package/src/installer/runtime-supervisor.js +1 -1
  146. package/src/installer/setup-wizard.js +1 -1
  147. package/src/installer/stale-run-release.js +1 -1
  148. package/src/installer/uninstall.js +1 -0
  149. package/src/installer/update-addons.js +1 -1
  150. package/src/installer/update-cleanup.js +1 -1
  151. package/src/installer/update-executor.js +1 -1
  152. package/src/installer/update-history.js +1 -1
  153. package/src/installer/update-registration.js +1 -1
  154. package/src/installer/update-report.js +1 -1
  155. package/src/installer/update-request.js +1 -1
  156. package/src/installer/update-scope.js +1 -1
  157. package/src/installer/workspace-registry.js +1 -1
  158. package/src/installer/workspace-transaction.js +1 -1
  159. package/src/installer/workspace-update.js +1 -1
  160. package/src/license/crypto.js +1 -1
  161. package/src/license/fingerprint.js +1 -1
  162. package/src/license/terms.js +1 -1
  163. package/src/license/verify.js +1 -1
  164. package/src/presets/index.js +1 -1
  165. package/src/proxy/backends.js +1 -1
  166. package/src/proxy/browser-sessions.js +1 -1
  167. package/src/proxy/core-tools.js +1 -1
  168. package/src/proxy/pipeline.js +1 -1
  169. package/src/proxy/public-catalog.js +1 -1
  170. package/src/proxy/router.config.js +1 -1
  171. package/src/proxy/router.js +1 -1
  172. package/src/proxy/run-summary.js +1 -1
  173. package/src/proxy/server-instructions.js +1 -0
  174. package/src/proxy/server.js +1 -1
  175. package/src/proxy/workspace-gateway.js +1 -1
  176. package/src/templates/AGENTS.md +1 -1
  177. package/src/templates/CLAUDE.md +1 -1
  178. package/src/templates/GEMINI.md +1 -1
  179. package/src/templates/apt-runtime.md +5 -4
  180. package/src/templates/copilot-instructions.md +1 -1
  181. package/src/templates/cursorrules.mdc +1 -1
  182. package/src/templates/mcp-tools.md +4 -4
  183. package/src/templates/windsurfrules.md +1 -1
@@ -1 +1 @@
1
- 'use strict';const _0x2c4fdc=_0x109b;(function(_0x4fafb3,_0xb5e38a){const _0x69efd0=_0x109b,_0x2ebfdc=_0x4fafb3();while(!![]){try{const _0x403fec=-parseInt(_0x69efd0(0x1ac))/0x1+-parseInt(_0x69efd0(0x1b6))/0x2*(-parseInt(_0x69efd0(0x17d))/0x3)+-parseInt(_0x69efd0(0x1f2))/0x4+parseInt(_0x69efd0(0x1a5))/0x5+parseInt(_0x69efd0(0x18c))/0x6*(parseInt(_0x69efd0(0x1d7))/0x7)+parseInt(_0x69efd0(0x1be))/0x8*(parseInt(_0x69efd0(0x207))/0x9)+-parseInt(_0x69efd0(0x185))/0xa*(-parseInt(_0x69efd0(0x17a))/0xb);if(_0x403fec===_0xb5e38a)break;else _0x2ebfdc['push'](_0x2ebfdc['shift']());}catch(_0x1655c5){_0x2ebfdc['push'](_0x2ebfdc['shift']());}}}(_0x3d07,0xe321d));const crypto=require(_0x2c4fdc(0x1bd)),{WorkspaceRegistry}=require(_0x2c4fdc(0x1f5)),{gatewayCatalog}=require('./public-catalog'),{sameWorkspace}=require(_0x2c4fdc(0x1d4)),contracts=require(_0x2c4fdc(0x1bc)),fail=(_0x191ebf,_0x23a36b=_0x191ebf)=>{const _0x47dd24=_0x2c4fdc,_0x330ebc={};_0x330ebc[_0x47dd24(0x1fb)]=_0x191ebf;throw Object[_0x47dd24(0x1ef)](new Error(_0x23a36b),_0x330ebc);},content=_0x5a3ff9=>({'content':[{'type':_0x2c4fdc(0x198),'text':JSON[_0x2c4fdc(0x18b)](_0x5a3ff9)}]});function validateIdentity(_0x1cb0c9){const _0x589260=_0x2c4fdc,_0xfb77d0={};_0xfb77d0[_0x589260(0x201)]=contracts[_0x589260(0x201)],_0xfb77d0[_0x589260(0x1b4)]=contracts[_0x589260(0x1b4)],_0xfb77d0['task']=contracts[_0x589260(0x19a)],_0xfb77d0[_0x589260(0x1a6)]=contracts[_0x589260(0x1a6)];for(const [_0x14cb60,_0x4df183]of Object['entries'](_0xfb77d0)){if(_0x1cb0c9[_0x14cb60]===undefined)continue;const _0x4cc399=_0x1cb0c9[_0x14cb60];if(typeof _0x4cc399!=='string'||!_0x4cc399[_0x589260(0x1b7)]()||_0x4cc399['length']>_0x4df183['maxLength']||_0x4df183[_0x589260(0x1cc)]&&!new RegExp(_0x4df183[_0x589260(0x1cc)])['test'](_0x4cc399))fail(_0x589260(0x1f8)+_0x14cb60[_0x589260(0x200)](/([a-z])([A-Z])/g,_0x589260(0x1de))[_0x589260(0x189)](),_0x4df183[_0x589260(0x190)]);}}class WorkspaceGateway{constructor(_0x1e9aa9={}){const _0x332bf9=_0x2c4fdc;this['registry']=_0x1e9aa9[_0x332bf9(0x1c6)]||new WorkspaceRegistry(),this['runtimeFactory']=_0x1e9aa9[_0x332bf9(0x1f9)],this['host']=_0x1e9aa9[_0x332bf9(0x19f)]||null,this[_0x332bf9(0x192)]=_0x1e9aa9[_0x332bf9(0x192)]||crypto[_0x332bf9(0x1d1)](),this[_0x332bf9(0x1f3)]=new Map(),this['initializing']=new Map(),this[_0x332bf9(0x1d9)]=new Map(),this[_0x332bf9(0x1a4)]=gatewayCatalog(),this[_0x332bf9(0x1e9)]=_0x1e9aa9['onCatalogChanged']||(()=>{}),this[_0x332bf9(0x193)]=null,this['stopped']=![];}async['bind'](_0x59bede,_0x2df79f={}){const _0x28c6e7=_0x2c4fdc;_0x2df79f[_0x28c6e7(0x18a)]?.[_0x28c6e7(0x1e0)]();if(!_0x59bede[_0x28c6e7(0x201)])fail(_0x28c6e7(0x1a7),'Pass\x20the\x20same\x20nonempty\x20sessionId\x20throughout\x20this\x20chat.');const _0x25d95a=this[_0x28c6e7(0x1f3)][_0x28c6e7(0x1ff)](_0x59bede[_0x28c6e7(0x201)]);if(_0x25d95a&&!_0x59bede[_0x28c6e7(0x1ce)]&&!_0x59bede[_0x28c6e7(0x1fd)])return _0x25d95a;const _0x592363=this['initializing'][_0x28c6e7(0x1ff)](_0x59bede[_0x28c6e7(0x201)]);if(_0x592363&&!_0x59bede[_0x28c6e7(0x1ce)]&&!_0x59bede[_0x28c6e7(0x1fd)])return _0x592363['promise'];const _0x4eeeea=this[_0x28c6e7(0x1c6)][_0x28c6e7(0x181)](_0x59bede,{'host':this['host']});if(_0x59bede[_0x28c6e7(0x1cd)])this[_0x28c6e7(0x1c4)](_0x59bede[_0x28c6e7(0x1cd)],_0x4eeeea[_0x28c6e7(0x1ce)]);if(_0x25d95a){if(!sameWorkspace(_0x4eeeea[_0x28c6e7(0x1f4)],_0x25d95a['workspace']))fail(_0x28c6e7(0x203));return _0x25d95a;}if(this['initializing']['has'](_0x59bede[_0x28c6e7(0x201)])){const _0x4b9ef9=this['initializing'][_0x28c6e7(0x1ff)](_0x59bede[_0x28c6e7(0x201)]);if(!sameWorkspace(_0x4b9ef9[_0x28c6e7(0x1f4)],_0x4eeeea[_0x28c6e7(0x1f4)]))fail(_0x28c6e7(0x203));return _0x4b9ef9['promise'];}const _0x521666={};_0x521666[_0x28c6e7(0x192)]=this['connectionId'],_0x521666[_0x28c6e7(0x201)]=_0x59bede[_0x28c6e7(0x201)],_0x521666['workspace']=_0x4eeeea[_0x28c6e7(0x1f4)],_0x521666[_0x28c6e7(0x1ce)]=_0x4eeeea[_0x28c6e7(0x1ce)],_0x521666[_0x28c6e7(0x1fa)]=_0x28c6e7(0x1ea),_0x521666[_0x28c6e7(0x1d3)]=_0x28c6e7(0x1e1),_0x521666[_0x28c6e7(0x1ad)]=_0x28c6e7(0x1b9);const _0x3f241e=_0x521666,_0x13e213=((async()=>{const _0x5f227d=_0x28c6e7;if(typeof this[_0x5f227d(0x1f9)]!==_0x5f227d(0x179))fail(_0x5f227d(0x1b2));const _0x4fdcf4=_0x4eeeea['profiles']?.[this[_0x5f227d(0x19f)]]||{},_0x1b00f4=await this[_0x5f227d(0x1f9)](_0x3f241e,this[_0x5f227d(0x193)]||{},_0x4fdcf4);try{if(_0x2df79f[_0x5f227d(0x18a)])await require(_0x5f227d(0x1f7))[_0x5f227d(0x199)](_0x2df79f[_0x5f227d(0x18a)]);}catch(_0x3d912d){await _0x1b00f4[_0x5f227d(0x188)]();throw _0x3d912d;}this[_0x5f227d(0x1bb)]&&(await _0x1b00f4[_0x5f227d(0x188)](),fail(_0x5f227d(0x191)));const _0x38611f={..._0x3f241e};_0x38611f['runtime']=_0x1b00f4,_0x38611f[_0x5f227d(0x1a0)]=_0x4fdcf4;const _0x2d9b4d=_0x38611f;return _0x2df79f['lease']?.['assertCurrent'](),this[_0x5f227d(0x1f3)]['set'](_0x59bede[_0x5f227d(0x201)],_0x2d9b4d),_0x2d9b4d;})()),_0xfe0bc8={};_0xfe0bc8[_0x28c6e7(0x1f4)]=_0x4eeeea[_0x28c6e7(0x1f4)],_0xfe0bc8['promise']=_0x13e213,this[_0x28c6e7(0x1f0)][_0x28c6e7(0x1da)](_0x59bede[_0x28c6e7(0x201)],_0xfe0bc8);try{return await _0x13e213;}finally{this[_0x28c6e7(0x1f0)]['delete'](_0x59bede[_0x28c6e7(0x201)]);}}[_0x2c4fdc(0x1ed)](_0x5bdbcf){const _0x5891b9=_0x2c4fdc;for(const [_0x5b0bd7,_0x190974]of this[_0x5891b9(0x1d9)])if(_0x190974[_0x5891b9(0x1d6)]<Date[_0x5891b9(0x1ec)]())this[_0x5891b9(0x1d9)][_0x5891b9(0x19e)](_0x5b0bd7);if(this['bindingSelections'][_0x5891b9(0x1f1)]>=0x1000)fail(_0x5891b9(0x1aa));const _0x4d1f9b=this[_0x5891b9(0x192)]+'.'+crypto[_0x5891b9(0x1e6)](0x20)[_0x5891b9(0x180)]('base64url');this[_0x5891b9(0x1d9)][_0x5891b9(0x1da)](_0x4d1f9b,{'workspaceId':_0x5bdbcf['workspaceId'],'expiresAt':Date[_0x5891b9(0x1ec)]()+0xdbba0});const _0x4dfe17={};return _0x4dfe17['workspaceId']=_0x5bdbcf[_0x5891b9(0x1ce)],_0x4dfe17['workspace']=_0x5bdbcf[_0x5891b9(0x1f4)],_0x4dfe17[_0x5891b9(0x1cd)]=_0x4d1f9b,_0x4dfe17;}[_0x2c4fdc(0x1c4)](_0x407ecf,_0x42bded){const _0x4c5fbe=_0x2c4fdc,_0x12adf1=this[_0x4c5fbe(0x1d9)]['get'](_0x407ecf);if(!_0x12adf1||_0x12adf1[_0x4c5fbe(0x1d6)]<Date[_0x4c5fbe(0x1ec)]()||_0x12adf1[_0x4c5fbe(0x1ce)]!==_0x42bded)fail(_0x4c5fbe(0x202),_0x4c5fbe(0x18d));return _0x12adf1;}[_0x2c4fdc(0x1c7)](_0x29a42f){const _0x54c785=_0x2c4fdc;let _0x1f0a2a;if(_0x29a42f['sessionId'])_0x1f0a2a=this['sessions'][_0x54c785(0x1ff)](_0x29a42f[_0x54c785(0x201)]);else{if(this[_0x54c785(0x1f3)][_0x54c785(0x1f1)]===0x1)_0x1f0a2a=this[_0x54c785(0x1f3)][_0x54c785(0x1b3)]()[_0x54c785(0x194)]()[_0x54c785(0x17e)];else{if(this[_0x54c785(0x1f3)][_0x54c785(0x1f1)]>0x1)fail(_0x54c785(0x1a9),_0x54c785(0x1dc));}}if(!_0x1f0a2a)fail(_0x54c785(0x1cb),_0x54c785(0x1e3));if(_0x29a42f['workspaceId']||_0x29a42f[_0x54c785(0x1fd)]){const _0x4c2d64=this[_0x54c785(0x1c6)][_0x54c785(0x181)](_0x29a42f,{'host':this[_0x54c785(0x19f)]});if(!sameWorkspace(_0x4c2d64[_0x54c785(0x1f4)],_0x1f0a2a[_0x54c785(0x1f4)]))fail(_0x54c785(0x203));}if(_0x29a42f[_0x54c785(0x1ee)]&&!sameWorkspace(_0x29a42f[_0x54c785(0x1ee)],_0x1f0a2a[_0x54c785(0x1f4)]))fail(_0x54c785(0x203));return _0x1f0a2a;}async[_0x2c4fdc(0x1f6)](_0x22c2be){const _0x54870f=_0x2c4fdc;if(this[_0x54870f(0x1bb)])fail('GATEWAY_CLOSED');const {id:_0x519311,method:_0x54d45e,params:params={}}=_0x22c2be,_0x125b35=_0x2c9ed6=>({'jsonrpc':_0x54870f(0x196),'id':_0x519311,'result':_0x2c9ed6});if(_0x54d45e==='initialize'||_0x54d45e===_0x54870f(0x1d5)){const _0x16ef20=['2024-11-05',_0x54870f(0x1a3),'2025-06-18',_0x54870f(0x1eb)],_0x233638=_0x16ef20[_0x54870f(0x17f)](params['protocolVersion'])?params[_0x54870f(0x1dd)]:_0x16ef20['at'](-0x1),_0xb283c9={...params};_0xb283c9['protocolVersion']=_0x233638,this[_0x54870f(0x193)]=_0xb283c9;const _0x2f645d={};_0x2f645d[_0x54870f(0x1e8)]=!![];const _0x43c009={};return _0x43c009[_0x54870f(0x1a2)]=_0x2f645d,_0x125b35({'protocolVersion':_0x233638,'capabilities':_0x43c009,'serverInfo':{'name':_0x54870f(0x1ea),'version':require(_0x54870f(0x1c8))[_0x54870f(0x178)]},'instructions':_0x54870f(0x1af)});}if(_0x54d45e===_0x54870f(0x19b))return _0x125b35({'tools':structuredClone(this[_0x54870f(0x1a4)])});if(_0x54d45e===_0x54870f(0x197))return _0x125b35({});if(_0x54d45e===_0x54870f(0x1df))return null;const _0x28aa7b={};_0x28aa7b[_0x54870f(0x1fb)]=-0x7f59,_0x28aa7b['message']='Method\x20not\x20found';if(_0x54d45e!=='tools/call')return _0x519311===undefined?null:{'jsonrpc':_0x54870f(0x196),'id':_0x519311,'error':_0x28aa7b};try{const _0x4bd3be=params['arguments']||{};if(Array[_0x54870f(0x1e2)](_0x4bd3be)||typeof _0x4bd3be!==_0x54870f(0x1ca))fail(_0x54870f(0x1c3));validateIdentity(_0x4bd3be);if(params['name']!==_0x54870f(0x1c9)&&params[_0x54870f(0x1bf)]!==_0x54870f(0x186)&&require(_0x54870f(0x1c0))[_0x54870f(0x1c2)](params[_0x54870f(0x1bf)])&&!_0x4bd3be[_0x54870f(0x201)])fail(_0x54870f(0x1a7),'Mutations\x20require\x20the\x20explicitly\x20bound\x20sessionId.');const _0xfd6a86=this[_0x54870f(0x1a4)][_0x54870f(0x1fc)](_0x570698=>_0x570698[_0x54870f(0x1bf)]===params['name']);if(!_0xfd6a86){const _0x420275=require(_0x54870f(0x1d0))[_0x54870f(0x19d)](params[_0x54870f(0x1bf)]);if(_0x420275&&_0x420275[_0x54870f(0x1b8)]!=='_builtin'){const _0x74a336={};_0x74a336[_0x54870f(0x1b8)]=_0x420275[_0x54870f(0x1b8)],_0x74a336['sessionId']=_0x4bd3be['sessionId'];const _0x137f3f={};_0x137f3f[_0x54870f(0x204)]=_0x54870f(0x186),_0x137f3f['arguments']=_0x74a336;const _0x49ef82={};_0x49ef82['code']='BACKEND_CATALOG_DISCOVERY_REQUIRED',_0x49ef82[_0x54870f(0x1d8)]=_0x137f3f;const _0x3c7acd=Object[_0x54870f(0x1ef)](new Error(_0x54870f(0x206)),_0x49ef82);throw _0x3c7acd;}fail(_0x54870f(0x1db),'This\x20gateway\x20has\x20no\x20verified\x20catalog\x20for\x20that\x20tool.');}if(params[_0x54870f(0x1bf)]===_0x54870f(0x1c9))return _0x125b35(content({'workspaces':this[_0x54870f(0x1c6)]['list']()[_0x54870f(0x1c5)](_0x2295d5=>!this[_0x54870f(0x19f)]||_0x2295d5['hosts']['includes'](this[_0x54870f(0x19f)]))[_0x54870f(0x1b5)](_0xe7af18=>this[_0x54870f(0x1ed)](_0xe7af18)),'connectionId':this['connectionId']}));if(params[_0x54870f(0x1bf)]===_0x54870f(0x186)&&!_0x4bd3be['sessionId']&&!_0x4bd3be[_0x54870f(0x1b8)])return _0x125b35(content({'registration':_0x54870f(0x1ea),'connectionId':this['connectionId'],'boundSessions':this[_0x54870f(0x1f3)]['size'],'backendsStartedByDiscovery':0x0,'serving':_0x54870f(0x1a8),'version':require('../../package.json')['version']}));for(const _0x4b5092 of _0xfd6a86[_0x54870f(0x1ab)]['required']||[])if(_0x4bd3be[_0x4b5092]===undefined&&_0x4b5092!==_0x54870f(0x201))fail(_0x54870f(0x19c)+_0x4b5092[_0x54870f(0x200)](/([a-z])([A-Z])/g,_0x54870f(0x1de))[_0x54870f(0x189)](),_0x54870f(0x1e5)+_0x4b5092+'.');const _0x36f04a=params['name']===_0x54870f(0x195)?await this[_0x54870f(0x17c)](_0x4bd3be):this[_0x54870f(0x1c7)](_0x4bd3be);if(_0x36f04a[_0x54870f(0x1a0)]?.[_0x54870f(0x1a2)]?.[params[_0x54870f(0x1bf)]]?.['enabled']===![])fail(_0x54870f(0x1cf));const _0x6d5cf2={..._0x4bd3be};_0x6d5cf2[_0x54870f(0x201)]=_0x36f04a[_0x54870f(0x201)];const _0x2a2c99=_0x6d5cf2,_0x486b2b={...params};_0x486b2b[_0x54870f(0x1a1)]=_0x2a2c99;const _0xcfdcb7={..._0x22c2be};_0xcfdcb7['params']=_0x486b2b;const _0x7934ce=await _0x36f04a[_0x54870f(0x1d2)][_0x54870f(0x1ae)](_0xcfdcb7);if(params['name']===_0x54870f(0x186)&&_0x4bd3be[_0x54870f(0x1b8)]&&!_0x7934ce['isError']){const _0x3d6624={};_0x3d6624[_0x54870f(0x18f)]='tools/list',_0x3d6624['params']={};const _0x3042ff=await _0x36f04a[_0x54870f(0x1d2)][_0x54870f(0x1ae)](_0x3d6624);let _0x331bf5=![];for(const _0x5c979d of _0x3042ff[_0x54870f(0x1a2)]||[]){if(require(_0x54870f(0x1d0))['mapExposedToOriginal'](_0x5c979d['name'])?.['backend']!==_0x4bd3be[_0x54870f(0x1b8)])continue;const _0x9d675d=require('./public-catalog')['decorateGatewayTool'](structuredClone(_0x5c979d)),_0x48301c=this['catalog'][_0x54870f(0x1fc)](_0x1196af=>_0x1196af[_0x54870f(0x1bf)]===_0x9d675d[_0x54870f(0x1bf)]);if(_0x48301c&&JSON[_0x54870f(0x18b)](_0x48301c[_0x54870f(0x1ab)])!==JSON['stringify'](_0x9d675d[_0x54870f(0x1ab)]))fail('CATALOG_SCHEMA_CONFLICT');!_0x48301c&&(this['catalog'][_0x54870f(0x1ba)](_0x9d675d),_0x331bf5=!![]);}if(_0x331bf5)this[_0x54870f(0x1e9)]();}return _0x125b35(_0x7934ce);}catch(_0x1936d0){const _0x2d0417={};return _0x2d0417[_0x54870f(0x204)]=_0x54870f(0x1c9),_0x2d0417[_0x54870f(0x184)]=_0x54870f(0x195),_0x2d0417[_0x54870f(0x1e4)]=[_0x54870f(0x201),_0x54870f(0x1ce)],_0x125b35({...content({'success':![],'code':_0x1936d0[_0x54870f(0x1fb)]||_0x54870f(0x205),'error':_0x1936d0[_0x54870f(0x1fe)],'recovery':_0x1936d0['recovery']||(['WORKSPACE_BINDING_REQUIRED',_0x54870f(0x1a9),_0x54870f(0x182)]['includes'](_0x1936d0[_0x54870f(0x1fb)])?_0x2d0417:undefined)}),'isError':!![]});}}async['close'](){const _0x1f19be=_0x2c4fdc;this[_0x1f19be(0x1bb)]=!![],await Promise[_0x1f19be(0x1b1)]([...this[_0x1f19be(0x1f0)][_0x1f19be(0x1b3)]()][_0x1f19be(0x1b5)](_0x4ba5cd=>_0x4ba5cd[_0x1f19be(0x1e7)]));const _0x32f820=await Promise['allSettled']([...this[_0x1f19be(0x1f3)][_0x1f19be(0x1b3)]()][_0x1f19be(0x1b5)](_0x22f295=>_0x22f295[_0x1f19be(0x1d2)][_0x1f19be(0x188)]())),_0x2fa044=_0x32f820[_0x1f19be(0x1fc)](_0x5c7bf9=>_0x5c7bf9[_0x1f19be(0x17b)]===_0x1f19be(0x187));if(_0x2fa044)throw _0x2fa044[_0x1f19be(0x1c1)];this[_0x1f19be(0x1f3)][_0x1f19be(0x18e)]();}}const _0x34ea2a={};function _0x109b(_0x2b69a2,_0x48df43){_0x2b69a2=_0x2b69a2-0x178;const _0x3d07d3=_0x3d07();let _0x109b48=_0x3d07d3[_0x2b69a2];if(_0x109b['EMFKpr']===undefined){var _0x3004db=function(_0x532fce){const _0x1678f3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x412475='',_0x1e7bb7='';for(let _0x2590bd=0x0,_0xb4f3e9,_0x4ec249,_0x278fe7=0x0;_0x4ec249=_0x532fce['charAt'](_0x278fe7++);~_0x4ec249&&(_0xb4f3e9=_0x2590bd%0x4?_0xb4f3e9*0x40+_0x4ec249:_0x4ec249,_0x2590bd++%0x4)?_0x412475+=String['fromCharCode'](0xff&_0xb4f3e9>>(-0x2*_0x2590bd&0x6)):0x0){_0x4ec249=_0x1678f3['indexOf'](_0x4ec249);}for(let _0x3b92d3=0x0,_0x1c7584=_0x412475['length'];_0x3b92d3<_0x1c7584;_0x3b92d3++){_0x1e7bb7+='%'+('00'+_0x412475['charCodeAt'](_0x3b92d3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1e7bb7);};_0x109b['pyZSFx']=_0x3004db,_0x109b['ikqsGj']={},_0x109b['EMFKpr']=!![];}const _0x3f279b=_0x3d07d3[0x0],_0x4458de=_0x2b69a2+_0x3f279b,_0x254fbf=_0x109b['ikqsGj'][_0x4458de];return!_0x254fbf?(_0x109b48=_0x109b['pyZSFx'](_0x109b48),_0x109b['ikqsGj'][_0x4458de]=_0x109b48):_0x109b48=_0x254fbf,_0x109b48;}_0x34ea2a['WorkspaceGateway']=WorkspaceGateway,_0x34ea2a[_0x2c4fdc(0x183)]=validateIdentity,module[_0x2c4fdc(0x1b0)]=_0x34ea2a;function _0x3d07(){const _0x2917e=['C2vSzwn0zwq','lI4VlI4VCgfJA2fNzs5QC29U','D29YA3nWywnLx2XPC3q','B2jQzwn0','v09ss1nqqunfx0jjtKrjtKDFuKvrvuLsruq','Cgf0DgvYBG','yMLUzgLUz1rVA2vU','D29YA3nWywnLswq','ufjpsKvdvf9ut09mx0rju0fcteve','lI9YB3v0zxi','CMfUzg9Tvvvjra','CNvUDgLTzq','ChjVDMvUyw5Jzq','lI4Vy29Yzs93B3jRC3bHy2uTCgf0Aa','C2vYDMvYl2rPC2nVDMvY','zxHWAxjLC0f0','nJCZota0ve9vt1fu','CMvJB3zLCNK','yMLUzgLUz1nLBgvJDgLVBNm','C2v0','ve9ptf9ot1rFqvzbsuXbqKXf','ugfZCYbZzxnZAw9Uswq7ihrOAxmGy29UBMvJDgLVBIbZzxj2zxmGBxvSDgLWBguGChjVAMvJDcbZzxnZAw9UCY4','ChjVDg9JB2XwzxjZAw9U','jdfFjdi','BM90AwzPy2f0Aw9UCY9PBML0AwfSAxPLza','yxnZzxj0q3vYCMvUDa','y2fSBgvYlxnLBgvJDgvK','AxnbCNjHEq','q2fSBcb3B3jRC3bHy2vFBgLZDcWGDgHLBIbZzxnZAw9Ux2jVB3rZDhjHCcb3AxrOihnLC3nPB25jzcbHBMqGD29YA3nWywnLswqU','CMvXDwLYzwq','uMvXDwLYzwqGzMLLBgq6ia','CMfUzg9TqNL0zxm','ChjVBwLZzq','BgLZDenOyw5Nzwq','B25dyxrHBg9Nq2HHBMDLza','yxb0lw1JCc1Hz2vUDa','mJaYns0Xms0Ynq','BM93','C2vSzwn0Aw9U','ChjVAMvJDfbHDgG','yxnZAwDU','Aw5PDgLHBgL6Aw5N','C2L6zq','nJK2nJaWngTeBhL5uW','C2vZC2LVBNm','D29YA3nWywnL','lI4VAw5ZDgfSBgvYl3DVCMTZCgfJzs1YzwDPC3rYEq','AgfUzgXL','lI4Vy29Yzs9OB29RlwXLyxnL','su5wquXjrf8','CNvUDgLTzuzHy3rVCNK','CMvNAxn0CMf0Aw9U','y29Kzq','zMLUza','D29YA3nWywnLugf0Aa','BwvZC2fNzq','z2v0','CMvWBgfJzq','C2vZC2LVBKLK','r0furvDbwv9truXfq1rjt05FuKvrvuLsruq','v09ss1nqqunfx0jjtKrjtKDFq09orKXjq1q','Dg9VBa','r0furvDbwv9srvfvrvnux0zbsuXfra','vgHPCYbHzgrVBIbUzwvKCYbPBNrLBNrPB25HBcbJyxrHBg9NigrPC2nVDMvYEtSGy2fSBcbTy3bFywDLBNrFAgvHBhrOihDPDgGGAxrZigjHy2TLBMqGyw5KihnLC3nPB25jzc4','mtKWmZqXCeDQsw9p','DMvYC2LVBG','zNvUy3rPB24','mtGZmdi5ugHwBe9c','C3rHDhvZ','yMLUza','m0P0seXNEq','DMfSDwu','Aw5JBhvKzxm','Dg9tDhjPBMC','CMvZB2X2zq','v09ss1nqqunfx05pvf9sruDju1rfuKve','DMfSAwrHDgvjzgvUDgL0Eq','DgHLBG','ntbRCwLYu2i','BwnWx2fNzw50x2HLywX0Aa','CMvQzwn0zwq','y2XVC2u','Dg9vChbLCKnHC2u','BgvHC2u','C3rYAw5NAwz5','mtj2ufDyDvu','q2fSBcb3B3jRC3bHy2vFBgLZDcbVBIb0AgLZignVBM5Ly3rPB24Gyw5KihvZzsbPDhmGy3vYCMvUDcbIAw5KAw5Nvg9Rzw4U','y2XLyxi','Bwv0Ag9K','zgvZy3jPChrPB24','r0furvDbwv9dte9truq','y29UBMvJDgLVBKLK','Aw5PDgLHBgL6zq','BMv4Da','C2vZC2LVBL9IB290C3rYyxa','mI4W','CgLUzW','Dgv4Da','B2jZzxj2zuHVB2Tdyw5JzwXSyxrPB24','DgfZAW','Dg9VBhmVBgLZDa','tuLtu0Lor18','BwfWrxHWB3nLzfrVt3jPz2LUywW','zgvSzxrL','Ag9ZDa','ChjVzMLSzq','yxjNDw1LBNrZ','Dg9VBhm','mJaYns0WmY0YnG','y2f0ywXVzW','odK1mdq3mfbjywToDG','CNvUswq','u0vtu0LptL9jrf9srvfvsvjfra','z2f0zxDHEq','v09ss1nqqunfx0fnqKLhvu9vuW','r0furvDbwv9truXfq1rjt05FteLnsvq','Aw5WDxrty2HLBwe','nZaWodq3tgLzyNLV','BMf0AxzLswrLBNrPDhK','CMvXDwvZDa','t25LiefqvcbNyxrLD2f5ihnLCNzLCYbPBNn0ywXSzwqGChjVAMvJDhmUienHBgWGD29YA3nWywnLx2XPC3qSihrOzw4GC2vZC2LVBL9IB290C3rYyxaGD2L0Acb5B3vYihnLC3nPB25jzcbHBMqGDgHLihbYB2PLy3qGD29YA3nWywnLswqUiefSD2f5CYbWyxnZihrOyxqGC2vZC2LVBKLKig9Uihn1yNnLCxvLBNqGy2fSBhmUie5LDMvYigjPBMqGAg9TzsbVCIbZzwXLy3qGysbWCM9Qzwn0igzYB20GCMvJzw5JEs4','zxHWB3j0CW','ywXSu2v0DgXLza','r0furvDbwv9svu5usu1fx1voqvzbsuXbqKXf','DMfSDwvZ','CMvXDwvZDeLK','BwfW','mtG5ndyZmeLXs296DG','DhjPBq','yMfJA2vUza','Dw5JB25MAxjTzwq','ChvZAa','C3rVChbLza','lI4Vy29Yzs90B29SlwnVBNrYywn0CW','BM9KztPJCNLWDg8','mtm2vwzwD2X1','BMfTzq','lI4Vy29Yzs9JywXSzxiTy29UDgv4Da','CMvHC29U','C2vUC2L0AxzLvg9VBa','su5wquXjrf9buKDvtuvovfm','DMvYAwz5u2vSzwn0Aw9U','zMLSDgvY','CMvNAxn0CNK'];_0x3d07=function(){return _0x2917e;};return _0x3d07();}
1
+ 'use strict';const _0x59299a=_0x1d58;function _0x3a54(){const _0x560080=['CMfUzg9Tvvvjra','nJi0mLLgvgnduW','BM9KztPJCNLWDg8','BgLZDenOyw5Nzwq','mI4W','B2jQzwn0','ndm4m01Wveniwq','Dw5JB25MAxjTzwq','mtnrCeXfsu8','CMvNAxn0CMf0Aw9U','DhjPBq','BwnWx2fNzw50x2HLywX0Aa','CMvHC29U','yMfZzty0DxjS','x2j1AwX0Aw4','AgfUzgXL','lI4VAw5ZDgfSBgvYl3DVCMTZCgfJzs1YzwDPC3rYEq','v09ss1nqqunfx0jjtKrjtKDFuKvrvuLsruq','ChjVAMvJDfbHDgG','ywXSu2v0DgXLza','D29YA3nWywnLx2XPC3q','r0furvDbwv9dte9truq','qKfds0vorf9dqvrbte9hx0rju0npvKvswv9srvfvsvjfra','C2vSzwn0zwq','BwfWrxHWB3nLzfrVt3jPz2LUywW','yMLUza','r0furvDbwv9truXfq1rjt05FuKvrvuLsruq','Aw5JBhvKzxm','yxb0lw1JCc1Hz2vUDa','CNvUDgLTzuzHy3rVCNK','BwfW','Dg9vChbLCKnHC2u','ve9ptf9ot1rFqvzbsuXbqKXf','C3rYAw5NAwz5','mtm5nZmZqMXKrgPi','Dg9VBhm','BgvHC2u','DMfSDwvZ','DMfSAwrHDgvjzgvUDgL0Eq','Aw5PDgLHBgL6zq','CNvUDgLTzq','lI4VlI4VCgfJA2fNzs5QC29U','CMvQzwn0zwq','BwvZC2fNzq','y29UBMvJDgLVBKLK','DMvYC2LVBG','lI9YB3v0zxi','t25LiefqvcbNyxrLD2f5ihnLCNzLCYbPBNn0ywXSzwqGChjVAMvJDhmUienHBgWGD29YA3nWywnLx2XPC3qSihrOzw4GC2vZC2LVBL9IB290C3rYyxaGD2L0Acb5B3vYihnLC3nPB25jzcbHBMqGDgHLihbYB2PLy3qGD29YA3nWywnLswqUiefSD2f5CYbWyxnZihrOyxqGC2vZC2LVBKLKig9Uihn1yNnLCxvLBNqGy2fSBhmUie5LDMvYigjPBMqGAg9TzsbVCIbZzwXLy3qGysbWCM9Qzwn0igzYB20GCMvJzw5JEs4','Dg9tDhjPBMC','r0furvDbwv9svu5usu1fx1voqvzbsuXbqKXf','ugfZCYbZzxnZAw9Uswq7ihrOAxmGy29UBMvJDgLVBIbZzxj2zxmGBxvSDgLWBguGChjVAMvJDcbZzxnZAw9UCY4','yMLUzgLUz1nLBgvJDgLVBNm','Bwf4tgvUz3rO','lI4Vy29Yzs93B3jRC3bHy2uTCgf0Aa','mZaXnJHKBhDSD2S','DgfZAW','lI4Vy29Yzs9OB29RlwXLyxnL','ChvZAa','Aw5PDgLHBgL6Aw5N','C2vYDMvYl2rPC2nVDMvY','zw5HyMXLza','zMLSDgvY','ufjpsKvdvf9ut09mx0rju0fcteve','C2vSzwn0Aw9U','Dg9VBa','BgLZDa','C2vZC2LVBKLK','mJaZmJi2u2DXwNn4','y2f0ywXVzW','C3rVChbLza','ChjVzMLSzq','su5wquXjrf8','v09ss1nqqunfx0jjtKrjtKDFq09orKXjq1q','CMvXDwvZDeLK','D29YA3nWywnL','Cgf0DgvYBG','CMvNAxn0CNK','ChjVDg9JB2XwzxjZAw9U','zgvSzxrL','mZvyCe9IuMq','CMvXDwvZDa','tuLtu0Lor18','zxHWAxjLC0f0','su5wquXjrf9buKDvtuvovfm','mJaYns0WnI0Xoa','q2fSBcb3B3jRC3bHy2vFBgLZDcbVBIb0AgLZignVBM5Ly3rPB24Gyw5KihvZzsbPDhmGy3vYCMvUDcbIAw5KAw5Nvg9Rzw4U','mtuYDKfhBLPp','v29YA3nWywnLr2f0zxDHEq','y2XLyxi','CMvZB2X2zq','z2v0','BgvUz3rO','nte5mtmYBg5sAuDV','Dg9VBhmVy2fSBa','mti1ntm1zhHhzfDg','yxnZAwDU','BMfTzq','CMvXDwLYzwq','CMvWBgfJzq','CNvUswq','v09ss1nqqunfx0fnqKLhvu9vuW','txv0yxrPB25ZihjLCxvPCMuGDgHLigv4CgXPy2L0BhKGyM91BMqGC2vZC2LVBKLKlG','r0furvDbwv9truXfq1rjt05FteLnsvq','ChjVBwLZzq','C2v0','zNvUy3rPB24','B25dyxrHBg9Nq2HHBMDLza','y29Kzq','DMfSDwu','D29YA3nWywnLugf0Aa','yMLUzgLUz1rVA2vU','Ag9ZDa','vgHPCYbNyxrLD2f5igHHCYbUBYb2zxjPzMLLzcbJyxrHBg9NigzVCIb0Agf0ihrVB2WU','y2XVC2u','lI4Vy29Yzs9JywXSzxiTy29UDgv4Da','C3rYAw5N','zMLUza','q0fuquXpr19tq0HftufFq09orKXjq1q','D29YA3nWywnLswq','yxjNDw1LBNrZ','CMvJB3zLCNK','lI9WDwjSAwmTy2f0ywXVzW','ChjVDMvUyw5Jzq','yxnZzxj0q3vYCMvUDa','AxnbCNjHEq','q2fSBcb3B3jRC3bHy2vFBgLZDcWGDgHLBIbZzxnZAw9Ux2jVB3rZDhjHCcb3AxrOihnLC3nPB25jzcbHBMqGD29YA3nWywnLswqU','C2vZC2LVBL9IB290C3rYyxa','mJaYns0Xms0Ynq','Ag9ZDhm','CMfUzg9TqNL0zxm','Aw5WDxrty2HLBwe','lI4Vy29Yzs90B29SlwnVBNrYywn0CW','C2L6zq','yMfJA2vUza','mJaYnc0Xms0Wnq','vgHPCYbHzgrVBIbUzwvKCYbPBNrLBNrPB25HBcbJyxrHBg9NigrPC2nVDMvYEtSGy2fSBcbTy3bFywDLBNrFAgvHBhrOihDPDgGGAxrZigjHy2TLBMqGyw5KihnLC3nPB25jzc4','C3rHDhvZ','C2vZC2LVBNm','r0furvDbwv9srvfvrvnux0zbsuXfra','ndbtsg5HAee','DMvYAwz5u2vSzwn0Aw9U','jdfFjdi','mtjgqMzMqLe','mJaYns0WmY0YnG','Dg9VBhmVBgLZDa','ntf4t3z0qwS','BM93'];_0x3a54=function(){return _0x560080;};return _0x3a54();}(function(_0x4c2a0e,_0xc5f12){const _0x571b51=_0x1d58,_0x2a8076=_0x4c2a0e();while(!![]){try{const _0x1ae37c=parseInt(_0x571b51(0x25f))/0x1*(-parseInt(_0x571b51(0x262))/0x2)+-parseInt(_0x571b51(0x25c))/0x3*(-parseInt(_0x571b51(0x204))/0x4)+-parseInt(_0x571b51(0x22c))/0x5+-parseInt(_0x571b51(0x211))/0x6*(-parseInt(_0x571b51(0x21d))/0x7)+parseInt(_0x571b51(0x224))/0x8*(parseInt(_0x571b51(0x267))/0x9)+parseInt(_0x571b51(0x259))/0xa*(parseInt(_0x571b51(0x1f0))/0xb)+parseInt(_0x571b51(0x22a))/0xc*(parseInt(_0x571b51(0x269))/0xd);if(_0x1ae37c===_0xc5f12)break;else _0x2a8076['push'](_0x2a8076['shift']());}catch(_0x4fcc07){_0x2a8076['push'](_0x2a8076['shift']());}}}(_0x3a54,0x1cf2b));const crypto=require(_0x59299a(0x263)),{WorkspaceRegistry}=require(_0x59299a(0x271)),{gatewayCatalog}=require(_0x59299a(0x247)),{sameWorkspace}=require(_0x59299a(0x203)),contracts=require(_0x59299a(0x251)),fail=(_0x434f0e,_0x280df6=_0x434f0e)=>{const _0x5094f7=_0x59299a,_0x3bea8a={};_0x3bea8a[_0x5094f7(0x239)]=_0x434f0e;throw Object[_0x5094f7(0x22d)](new Error(_0x280df6),_0x3bea8a);},content=_0x732868=>({'content':[{'type':'text','text':JSON[_0x59299a(0x1ef)](_0x732868)}]});function validateIdentity(_0x40c969){const _0x5e965f=_0x59299a,_0x2334b2={};_0x2334b2[_0x5e965f(0x210)]=contracts['sessionId'],_0x2334b2[_0x5e965f(0x217)]=contracts['requestId'],_0x2334b2[_0x5e965f(0x205)]=contracts[_0x5e965f(0x205)],_0x2334b2[_0x5e965f(0x231)]=contracts['runId'];for(const [_0xc670d7,_0x4f9d68]of Object['entries'](_0x2334b2)){if(_0x40c969[_0xc670d7]===undefined)continue;const _0xe9d219=_0x40c969[_0xc670d7];if(typeof _0xe9d219!==_0x5e965f(0x241)||!_0xe9d219[_0x5e965f(0x26b)]()||_0xe9d219[_0x5e965f(0x229)]>_0x4f9d68[_0x5e965f(0x202)]||_0x4f9d68[_0x5e965f(0x219)]&&!new RegExp(_0x4f9d68[_0x5e965f(0x219)])['test'](_0xe9d219))fail(_0x5e965f(0x215)+_0xc670d7[_0x5e965f(0x230)](/([a-z])([A-Z])/g,_0x5e965f(0x25b))['toUpperCase'](),_0x4f9d68['description']);}}class WorkspaceGateway{constructor(_0xa3bee0={}){const _0x4585d6=_0x59299a;this['registry']=_0xa3bee0['registry']||new WorkspaceRegistry(),this[_0x4585d6(0x27e)]=_0xa3bee0[_0x4585d6(0x27e)],this[_0x4585d6(0x23d)]=_0xa3bee0[_0x4585d6(0x23d)]||null,this['connectionId']=_0xa3bee0['connectionId']||crypto[_0x4585d6(0x261)](),this[_0x4585d6(0x257)]=new Map(),this[_0x4585d6(0x208)]=new Map(),this[_0x4585d6(0x201)]=new Map(),this['catalog']=gatewayCatalog(),this['onCatalogChanged']=_0xa3bee0[_0x4585d6(0x238)]||(()=>{}),this[_0x4585d6(0x1f5)]=null,this[_0x4585d6(0x213)]=![];}async[_0x59299a(0x27a)](_0x2df5e4,_0x4350d3={}){const _0x533fc2=_0x59299a;_0x4350d3['lease']?.[_0x533fc2(0x249)]();if(!_0x2df5e4[_0x533fc2(0x210)])fail('SESSION_ID_REQUIRED','Pass\x20the\x20same\x20nonempty\x20sessionId\x20throughout\x20this\x20chat.');const _0x29461c=this[_0x533fc2(0x257)][_0x533fc2(0x228)](_0x2df5e4['sessionId']);if(_0x29461c&&!_0x2df5e4[_0x533fc2(0x244)]&&!_0x2df5e4['workspacePath'])return _0x29461c;const _0x24490b=this[_0x533fc2(0x208)]['get'](_0x2df5e4['sessionId']);if(_0x24490b&&!_0x2df5e4[_0x533fc2(0x244)]&&!_0x2df5e4[_0x533fc2(0x23b)])return _0x24490b[_0x533fc2(0x235)];const _0x252e4c=this[_0x533fc2(0x21a)][_0x533fc2(0x227)](_0x2df5e4,{'host':this['host']});if(_0x2df5e4['bindingToken'])this[_0x533fc2(0x25a)](_0x2df5e4[_0x533fc2(0x23c)],_0x252e4c[_0x533fc2(0x244)]);if(_0x29461c){if(!sameWorkspace(_0x252e4c[_0x533fc2(0x218)],_0x29461c[_0x533fc2(0x218)]))fail('WORKSPACE_BINDING_CONFLICT');return _0x29461c;}if(this[_0x533fc2(0x208)]['has'](_0x2df5e4[_0x533fc2(0x210)])){const _0x5018da=this[_0x533fc2(0x208)][_0x533fc2(0x228)](_0x2df5e4['sessionId']);if(!sameWorkspace(_0x5018da[_0x533fc2(0x218)],_0x252e4c[_0x533fc2(0x218)]))fail(_0x533fc2(0x216));return _0x5018da[_0x533fc2(0x235)];}const _0x2bfc6a={};_0x2bfc6a['connectionId']=this[_0x533fc2(0x1fa)],_0x2bfc6a[_0x533fc2(0x210)]=_0x2df5e4[_0x533fc2(0x210)],_0x2bfc6a[_0x533fc2(0x218)]=_0x252e4c['workspace'],_0x2bfc6a[_0x533fc2(0x244)]=_0x252e4c[_0x533fc2(0x244)],_0x2bfc6a[_0x533fc2(0x26a)]=_0x533fc2(0x27d),_0x2bfc6a[_0x533fc2(0x248)]='caller-selected',_0x2bfc6a['nativeIdentity']=_0x533fc2(0x268);const _0x392cff=_0x2bfc6a,_0x524f20=((async()=>{const _0x2f85fd=_0x533fc2;if(typeof this[_0x2f85fd(0x27e)]!==_0x2f85fd(0x237))fail(_0x2f85fd(0x1ff));const _0x5069e8=_0x252e4c['profiles']?.[this[_0x2f85fd(0x23d)]]||{},_0x3ed70b=await this[_0x2f85fd(0x27e)](_0x392cff,this[_0x2f85fd(0x1f5)]||{},_0x5069e8);try{if(_0x4350d3[_0x2f85fd(0x1f2)])await require(_0x2f85fd(0x206))['observeHookCancellation'](_0x4350d3[_0x2f85fd(0x1f2)]);}catch(_0x2b5891){await _0x3ed70b['close']();throw _0x2b5891;}this['stopped']&&(await _0x3ed70b[_0x2f85fd(0x23f)](),fail(_0x2f85fd(0x276)));const _0x52f8f5={..._0x392cff};_0x52f8f5['runtime']=_0x3ed70b,_0x52f8f5[_0x2f85fd(0x214)]=_0x5069e8;const _0x15a828=_0x52f8f5;return _0x4350d3[_0x2f85fd(0x1f2)]?.['assertCurrent'](),this['sessions'][_0x2f85fd(0x236)](_0x2df5e4[_0x2f85fd(0x210)],_0x15a828),_0x15a828;})()),_0x20fd72={};_0x20fd72[_0x533fc2(0x218)]=_0x252e4c[_0x533fc2(0x218)],_0x20fd72[_0x533fc2(0x235)]=_0x524f20,this[_0x533fc2(0x208)]['set'](_0x2df5e4[_0x533fc2(0x210)],_0x20fd72);try{return await _0x524f20;}finally{this[_0x533fc2(0x208)]['delete'](_0x2df5e4[_0x533fc2(0x210)]);}}[_0x59299a(0x20d)](_0x268d31){const _0xf7a1af=_0x59299a;for(const [_0x307f53,_0x4d6f6a]of this[_0xf7a1af(0x201)])if(_0x4d6f6a['expiresAt']<Date['now']())this['bindingSelections'][_0xf7a1af(0x21c)](_0x307f53);if(this[_0xf7a1af(0x201)][_0xf7a1af(0x252)]>=0x1000)fail(_0xf7a1af(0x234));const _0x5a59e9=this[_0xf7a1af(0x1fa)]+'.'+crypto[_0xf7a1af(0x24f)](0x20)[_0xf7a1af(0x1fe)](_0xf7a1af(0x26e));this[_0xf7a1af(0x201)][_0xf7a1af(0x236)](_0x5a59e9,{'workspaceId':_0x268d31[_0xf7a1af(0x244)],'expiresAt':Date[_0xf7a1af(0x260)]()+0xdbba0});const _0x5b9ffd={};return _0x5b9ffd['workspaceId']=_0x268d31['workspaceId'],_0x5b9ffd['workspace']=_0x268d31['workspace'],_0x5b9ffd[_0xf7a1af(0x23c)]=_0x5a59e9,_0x5b9ffd;}['verifySelection'](_0x1d839d,_0x5af516){const _0x5552f0=_0x59299a,_0x21a0d0=this[_0x5552f0(0x201)][_0x5552f0(0x228)](_0x1d839d);if(!_0x21a0d0||_0x21a0d0[_0x5552f0(0x220)]<Date['now']()||_0x21a0d0[_0x5552f0(0x244)]!==_0x5af516)fail(_0x5552f0(0x27b),_0x5552f0(0x223));return _0x21a0d0;}[_0x59299a(0x278)](_0x58dfea){const _0x420abe=_0x59299a;let _0x2face6;if(_0x58dfea['sessionId'])_0x2face6=this['sessions'][_0x420abe(0x228)](_0x58dfea['sessionId']);else{if(this[_0x420abe(0x257)]['size']===0x1)_0x2face6=this[_0x420abe(0x257)][_0x420abe(0x1f3)]()['next']()[_0x420abe(0x23a)];else{if(this[_0x420abe(0x257)][_0x420abe(0x252)]>0x1)fail(_0x420abe(0x232),_0x420abe(0x200));}}if(!_0x2face6)fail('WORKSPACE_BINDING_REQUIRED',_0x420abe(0x24b));if(_0x58dfea[_0x420abe(0x244)]||_0x58dfea[_0x420abe(0x23b)]){const _0x1be814=this[_0x420abe(0x21a)]['resolve'](_0x58dfea,{'host':this[_0x420abe(0x23d)]});if(!sameWorkspace(_0x1be814[_0x420abe(0x218)],_0x2face6['workspace']))fail('WORKSPACE_BINDING_CONFLICT');}if(_0x58dfea[_0x420abe(0x273)]&&!sameWorkspace(_0x58dfea['projectPath'],_0x2face6['workspace']))fail(_0x420abe(0x216));return _0x2face6;}async[_0x59299a(0x270)](_0x104d42){const _0x34df64=_0x59299a;if(this['stopped'])fail('GATEWAY_CLOSED');const {id:_0x2f3c58,method:_0x56f202,params:params={}}=_0x104d42,_0x5c2026=_0x4e36a8=>({'jsonrpc':_0x34df64(0x265),'id':_0x2f3c58,'result':_0x4e36a8});if(_0x56f202===_0x34df64(0x1f5)||_0x56f202===_0x34df64(0x209)){const _0x435367=[_0x34df64(0x254),_0x34df64(0x25d),_0x34df64(0x222),_0x34df64(0x24d)],_0x30e5e2=_0x435367[_0x34df64(0x27c)](params[_0x34df64(0x21b)])?params[_0x34df64(0x21b)]:_0x435367['at'](-0x1),_0x49d75b={...params};_0x49d75b[_0x34df64(0x21b)]=_0x30e5e2,this[_0x34df64(0x1f5)]=_0x49d75b;const _0x4a9dc0={};_0x4a9dc0[_0x34df64(0x264)]=!![];const _0x303fbe={};return _0x303fbe[_0x34df64(0x1f1)]=_0x4a9dc0,_0x5c2026({'protocolVersion':_0x30e5e2,'capabilities':_0x303fbe,'serverInfo':{'name':_0x34df64(0x27d),'version':require(_0x34df64(0x1f7))[_0x34df64(0x1fb)]},'instructions':_0x34df64(0x1fd)});}if(_0x56f202===_0x34df64(0x25e))return _0x5c2026({'tools':structuredClone(this[_0x34df64(0x212)])});if(_0x56f202==='ping')return _0x5c2026({});if(_0x56f202==='notifications/initialized')return null;const _0x453db0={};_0x453db0[_0x34df64(0x239)]=-0x7f59,_0x453db0[_0x34df64(0x1f9)]='Method\x20not\x20found';if(_0x56f202!==_0x34df64(0x22b))return _0x2f3c58===undefined?null:{'jsonrpc':_0x34df64(0x265),'id':_0x2f3c58,'error':_0x453db0};try{const _0x1cb1fb=params[_0x34df64(0x245)]||{};if(Array[_0x34df64(0x24a)](_0x1cb1fb)||typeof _0x1cb1fb!==_0x34df64(0x266))fail(_0x34df64(0x221));validateIdentity(_0x1cb1fb);if(params[_0x34df64(0x22e)]!==_0x34df64(0x275)&&params['name']!==_0x34df64(0x26c)&&require(_0x34df64(0x240))['sensitiveTool'](params[_0x34df64(0x22e)])&&!_0x1cb1fb[_0x34df64(0x210)])fail('SESSION_ID_REQUIRED',_0x34df64(0x233));const _0x414443=this[_0x34df64(0x212)][_0x34df64(0x242)](_0x281d96=>_0x281d96[_0x34df64(0x22e)]===params[_0x34df64(0x22e)]);if(!_0x414443){const _0xa65da9=require('./router')[_0x34df64(0x279)](params['name']);if(_0xa65da9&&_0xa65da9[_0x34df64(0x253)]!==_0x34df64(0x26f)){const _0x3443d5={};_0x3443d5['backend']=_0xa65da9[_0x34df64(0x253)],_0x3443d5[_0x34df64(0x210)]=_0x1cb1fb[_0x34df64(0x210)];const _0x22df13={};_0x22df13[_0x34df64(0x20e)]=_0x34df64(0x26c),_0x22df13[_0x34df64(0x245)]=_0x3443d5;const _0x18537b={};_0x18537b[_0x34df64(0x239)]=_0x34df64(0x277),_0x18537b[_0x34df64(0x246)]=_0x22df13;const _0x9f9777=Object[_0x34df64(0x22d)](new Error(_0x34df64(0x255)),_0x18537b);throw _0x9f9777;}fail(_0x34df64(0x1ee),_0x34df64(0x23e));}if(params[_0x34df64(0x22e)]===_0x34df64(0x275))return _0x5c2026(content({'workspaces':this[_0x34df64(0x21a)][_0x34df64(0x20f)]()[_0x34df64(0x20b)](_0x2f19df=>!this[_0x34df64(0x23d)]||_0x2f19df[_0x34df64(0x24e)]['includes'](this[_0x34df64(0x23d)]))[_0x34df64(0x1ec)](_0x2d6bb4=>this[_0x34df64(0x20d)](_0x2d6bb4)),'connectionId':this[_0x34df64(0x1fa)]}));if(params['name']===_0x34df64(0x26c)&&!_0x1cb1fb[_0x34df64(0x210)]&&!_0x1cb1fb[_0x34df64(0x253)])return _0x5c2026(content({'registration':_0x34df64(0x27d),'connectionId':this[_0x34df64(0x1fa)],'boundSessions':this[_0x34df64(0x257)][_0x34df64(0x252)],'backendsStartedByDiscovery':0x0,'serving':'gateway','version':require(_0x34df64(0x1f7))['version']}));for(const _0x43c4ec of _0x414443[_0x34df64(0x250)][_0x34df64(0x22f)]||[])if(_0x1cb1fb[_0x43c4ec]===undefined&&_0x43c4ec!=='sessionId')fail(_0x34df64(0x21f)+_0x43c4ec['replace'](/([a-z])([A-Z])/g,_0x34df64(0x25b))[_0x34df64(0x1ed)](),'Required\x20field:\x20'+_0x43c4ec+'.');const _0x2f42fb=params[_0x34df64(0x22e)]===_0x34df64(0x24c)?await this['bind'](_0x1cb1fb):this[_0x34df64(0x278)](_0x1cb1fb);if(_0x2f42fb[_0x34df64(0x214)]?.[_0x34df64(0x1f1)]?.[params[_0x34df64(0x22e)]]?.[_0x34df64(0x20a)]===![])fail(_0x34df64(0x20c));const _0xd4642c={..._0x1cb1fb};_0xd4642c[_0x34df64(0x210)]=_0x2f42fb[_0x34df64(0x210)];const _0x5bafe5=_0xd4642c,_0x5e9b77={...params};_0x5e9b77[_0x34df64(0x245)]=_0x5bafe5;const _0x54df1f={..._0x104d42};_0x54df1f['params']=_0x5e9b77;const _0x3dc889=await _0x2f42fb[_0x34df64(0x1f6)][_0x34df64(0x21e)](_0x54df1f);if(params['name']===_0x34df64(0x26c)&&_0x1cb1fb[_0x34df64(0x253)]&&!_0x3dc889['isError']){const _0x4893d8={};_0x4893d8['method']='tools/list',_0x4893d8['params']={};const _0x1b0967=await _0x2f42fb[_0x34df64(0x1f6)]['request'](_0x4893d8);let _0xf27269=![];for(const _0x3e8446 of _0x1b0967[_0x34df64(0x1f1)]||[]){if(require(_0x34df64(0x1fc))[_0x34df64(0x279)](_0x3e8446[_0x34df64(0x22e)])?.['backend']!==_0x1cb1fb[_0x34df64(0x253)])continue;const _0x56876a=require(_0x34df64(0x247))['decorateGatewayTool'](structuredClone(_0x3e8446)),_0x51e84c=this[_0x34df64(0x212)][_0x34df64(0x242)](_0x282e6f=>_0x282e6f[_0x34df64(0x22e)]===_0x56876a['name']);if(_0x51e84c&&JSON[_0x34df64(0x1ef)](_0x51e84c['inputSchema'])!==JSON[_0x34df64(0x1ef)](_0x56876a[_0x34df64(0x250)]))fail(_0x34df64(0x243));!_0x51e84c&&(this['catalog'][_0x34df64(0x207)](_0x56876a),_0xf27269=!![]);}if(_0xf27269)this[_0x34df64(0x238)]();}return _0x5c2026(_0x3dc889);}catch(_0x202b4f){const _0x5f9110={};return _0x5f9110[_0x34df64(0x20e)]=_0x34df64(0x275),_0x5f9110['then']=_0x34df64(0x24c),_0x5f9110[_0x34df64(0x22f)]=[_0x34df64(0x210),_0x34df64(0x244)],_0x5c2026({...content({'success':![],'code':_0x202b4f[_0x34df64(0x239)]||_0x34df64(0x258),'error':_0x202b4f[_0x34df64(0x1f9)],'recovery':_0x202b4f[_0x34df64(0x246)]||([_0x34df64(0x272),_0x34df64(0x232),'WORKSPACE_NOT_REGISTERED'][_0x34df64(0x27c)](_0x202b4f[_0x34df64(0x239)])?_0x5f9110:undefined)}),'isError':!![]});}}async[_0x59299a(0x23f)](){const _0x630fd3=_0x59299a;this[_0x630fd3(0x213)]=!![],await Promise[_0x630fd3(0x274)]([...this[_0x630fd3(0x208)][_0x630fd3(0x1f3)]()][_0x630fd3(0x1ec)](_0x3bbca1=>_0x3bbca1[_0x630fd3(0x235)]));const _0x339e44=await Promise[_0x630fd3(0x274)]([...this[_0x630fd3(0x257)]['values']()]['map'](_0x11a129=>_0x11a129[_0x630fd3(0x1f6)][_0x630fd3(0x23f)]())),_0xdff194=_0x339e44[_0x630fd3(0x242)](_0x300e10=>_0x300e10[_0x630fd3(0x256)]===_0x630fd3(0x1f8));if(_0xdff194)throw _0xdff194[_0x630fd3(0x26d)];this[_0x630fd3(0x257)][_0x630fd3(0x226)]();}}const _0x55c4e3={};function _0x1d58(_0x73cc3a,_0x1942e4){_0x73cc3a=_0x73cc3a-0x1ec;const _0x3a5450=_0x3a54();let _0x1d5881=_0x3a5450[_0x73cc3a];if(_0x1d58['ulfQWD']===undefined){var _0x3b0a1b=function(_0x3c8610){const _0x4b2d75='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x42dee2='',_0x2be703='';for(let _0x30a6d3=0x0,_0x269c5d,_0x5570a7,_0x46c806=0x0;_0x5570a7=_0x3c8610['charAt'](_0x46c806++);~_0x5570a7&&(_0x269c5d=_0x30a6d3%0x4?_0x269c5d*0x40+_0x5570a7:_0x5570a7,_0x30a6d3++%0x4)?_0x42dee2+=String['fromCharCode'](0xff&_0x269c5d>>(-0x2*_0x30a6d3&0x6)):0x0){_0x5570a7=_0x4b2d75['indexOf'](_0x5570a7);}for(let _0xfba786=0x0,_0x7bf1fc=_0x42dee2['length'];_0xfba786<_0x7bf1fc;_0xfba786++){_0x2be703+='%'+('00'+_0x42dee2['charCodeAt'](_0xfba786)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2be703);};_0x1d58['OUcPWY']=_0x3b0a1b,_0x1d58['nmBTGS']={},_0x1d58['ulfQWD']=!![];}const _0x2082cf=_0x3a5450[0x0],_0x5e1205=_0x73cc3a+_0x2082cf,_0x2cbc3f=_0x1d58['nmBTGS'][_0x5e1205];return!_0x2cbc3f?(_0x1d5881=_0x1d58['OUcPWY'](_0x1d5881),_0x1d58['nmBTGS'][_0x5e1205]=_0x1d5881):_0x1d5881=_0x2cbc3f,_0x1d5881;}_0x55c4e3[_0x59299a(0x225)]=WorkspaceGateway,_0x55c4e3[_0x59299a(0x1f4)]=validateIdentity,module['exports']=_0x55c4e3;
@@ -2,7 +2,7 @@
2
2
 
3
3
  At session start and after context recovery, call `session_bootstrap` for this workspace and read `docs/agents/apt-runtime.md` once per context. Read project conventions in `.agents/memory/MEMORY.md`; retrieve only relevant dynamic memory. Report unavailable backends once and use available fallbacks.
4
4
 
5
- For new or changed intent, call `route_request` with the target, stack and explicit skills. Use `skill_load` for selected skills and current-step references. Do not load the full trigger catalog or repeat rules on every tool call.
5
+ For new or changed intent, call `route_request` with the target, stack and explicit skills. Load what `pipeline_next` names: skills with `skill_load`, the specialist with `context_load`; work as it and brief workers the same. Do not load the full trigger catalog or repeat rules on every tool call.
6
6
 
7
7
  Before code changes, bind `pipeline_status` and `pipeline_start` or `pipeline_use` to an explicit task, runId and workspace. Reserve with `pipeline_next`; verify and checkpoint current code before completion. Read-only questions, review and existing tests need no code-change pipeline. Clarify only unresolved decisions.
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  At session start and after context recovery, call `session_bootstrap` for this workspace and read `docs/agents/apt-runtime.md` once per context. Read project conventions in `.agents/memory/MEMORY.md`; retrieve only relevant dynamic memory. Report unavailable backends once and use available fallbacks.
4
4
 
5
- For new or changed intent, call `route_request` with the target, stack and explicit skills. Use `skill_load` for selected skills and current-step references. Do not load the full trigger catalog or repeat rules on every tool call.
5
+ For new or changed intent, call `route_request` with the target, stack and explicit skills. Load what `pipeline_next` names: skills with `skill_load`, the specialist with `context_load`; work as it and brief workers the same. Do not load the full trigger catalog or repeat rules on every tool call.
6
6
 
7
7
  Before code changes, bind `pipeline_status` and `pipeline_start` or `pipeline_use` to an explicit task, runId and workspace. Reserve with `pipeline_next`; verify and checkpoint current code before completion. Read-only questions, review and existing tests need no code-change pipeline. Clarify only unresolved decisions.
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  At session start and after context recovery, call `session_bootstrap` for this workspace and read `docs/agents/apt-runtime.md` once per context. Read project conventions in `.agents/memory/MEMORY.md`; retrieve only relevant dynamic memory. Report unavailable backends once and use available fallbacks.
4
4
 
5
- For new or changed intent, call `route_request` with the target, stack and explicit skills. Use `skill_load` for selected skills and current-step references. Do not load the full trigger catalog or repeat rules on every tool call.
5
+ For new or changed intent, call `route_request` with the target, stack and explicit skills. Load what `pipeline_next` names: skills with `skill_load`, the specialist with `context_load`; work as it and brief workers the same. Do not load the full trigger catalog or repeat rules on every tool call.
6
6
 
7
7
  Before code changes, bind `pipeline_status` and `pipeline_start` or `pipeline_use` to an explicit task, runId and workspace. Reserve with `pipeline_next`; verify and checkpoint current code before completion. Read-only questions, review and existing tests need no code-change pipeline. Clarify only unresolved decisions.
8
8
 
@@ -4,9 +4,9 @@
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. Report `capabilities.subagents` and `capabilities.maxAgents` at bootstrap to reserve more than one worker. A writer is exclusive in its workspace unless it is confined. To write in parallel, mark work items `parallel: true` with disjoint `scope` path prefixes at the plan checkpoint, then reserve one writer per item with `pipeline_next(workItemId, actorId, role:"writer")`. The host hook denies a confined writer's file edits outside its scope; shell commands are not path-checked, so keep them inside it. Each writer ends with `action="report"`. Consume the reports and run `pipeline_verify` after every parallel writer has reported. `parallelWrite:false` reserves a parallel item exclusively when its scope proves too narrow. Workers must not start/reset/rebind the parent pipeline.
7
+ 5. Use `pipeline_next` to reserve work before dispatch, and call the native spawn tool with its `spawnArguments` as given. 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. Report `capabilities.subagents` and `capabilities.maxAgents` at bootstrap to reserve more than one worker. A writer is exclusive in its workspace unless it is confined. To write in parallel, mark work items `parallel: true` with disjoint `scope` path prefixes at the plan checkpoint, then reserve one writer per item with `pipeline_next(workItemId, actorId, role:"writer")`. The host hook denies a confined writer's file edits outside its scope; shell commands are not path-checked, so keep them inside it. Each writer ends with `action="report"`. Consume the reports and run `pipeline_verify` after every parallel writer has reported. `parallelWrite:false` reserves a parallel item exclusively when its scope proves too narrow. 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.
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. When acceptance lacks that proof, refresh the reviewer's receipts first, then reserve a reviewer at acceptance with `reviewStages` for the stage still unproven. Rerun checks after affected changes. Review-only requests produce findings, not unsolicited edits or MR comments.
10
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.
@@ -14,8 +14,9 @@
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
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
17
+ Launch writers and reviewers in the background when the host declares it: a
18
+ background reviewer is bound when its launch returns and records its review and
19
+ its report in one pass. An unbound child is read-only. For a foreground reviewer, receive findings first, link the native identity, then
19
20
  resume the same child to author its structured review and report. Complete both
20
21
  phases continuously. Do not use Codex fields or write a verdict for the child.
21
22
  An async launch or report is not native completion. Refresh receipts before
@@ -2,7 +2,7 @@
2
2
 
3
3
  At session start and after context recovery, call `session_bootstrap` for this workspace and read `docs/agents/apt-runtime.md` once per context. Read project conventions in `.agents/memory/MEMORY.md`; retrieve only relevant dynamic memory. Report unavailable backends once and use available fallbacks.
4
4
 
5
- For new or changed intent, call `route_request` with the target, stack and explicit skills. Use `skill_load` for selected skills and current-step references. Do not load the full trigger catalog or repeat rules on every tool call.
5
+ For new or changed intent, call `route_request` with the target, stack and explicit skills. Load what `pipeline_next` names: skills with `skill_load`, the specialist with `context_load`; work as it and brief workers the same. Do not load the full trigger catalog or repeat rules on every tool call.
6
6
 
7
7
  Before code changes, bind `pipeline_status` and `pipeline_start` or `pipeline_use` to an explicit task, runId and workspace. Reserve with `pipeline_next`; verify and checkpoint current code before completion. Read-only questions, review and existing tests need no code-change pipeline. Clarify only unresolved decisions.
8
8
 
@@ -7,7 +7,7 @@ alwaysApply: true
7
7
 
8
8
  At session start and after context recovery, call `session_bootstrap` for this workspace and read `docs/agents/apt-runtime.md` once per context. Read project conventions in `.agents/memory/MEMORY.md`; retrieve only relevant dynamic memory. Report unavailable backends once and use available fallbacks.
9
9
 
10
- For new or changed intent, call `route_request` with the target, stack and explicit skills. Use `skill_load` for selected skills and current-step references. Do not load the full trigger catalog or repeat rules on every tool call.
10
+ For new or changed intent, call `route_request` with the target, stack and explicit skills. Load what `pipeline_next` names: skills with `skill_load`, the specialist with `context_load`; work as it and brief workers the same. Do not load the full trigger catalog or repeat rules on every tool call.
11
11
 
12
12
  Before code changes, bind `pipeline_status` and `pipeline_start` or `pipeline_use` to an explicit task, runId and workspace. Reserve with `pipeline_next`; verify and checkpoint current code before completion. Read-only questions, review and existing tests need no code-change pipeline. Clarify only unresolved decisions.
13
13
 
@@ -4,14 +4,14 @@
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. On Claude Code, naming the tool and its model field is enough, for example `{tool:"Agent", modelField:"model"}`: APT then asks for a cheaper model per task (`haiku`, `sonnet`, or `opus` under a coordinator that ranks above it), never for a model above yours, and leaves the field unset when the task needs your model. 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
- - 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.
7
+ - Bootstrap: `session_bootstrap(sessionId, contextEpoch, host, capabilities)` identifies this context and reports resumable work. Report your worker tool in `capabilities.nativeDispatch`. Naming the tool is enough on Claude Code (`{tool:"Agent"}`); on Codex name it with the model IDs it accepts (`{tool:"spawn_agent", models:["gpt-6-luna","gpt-5.6-sol"]}`). APT knows the model, effort and fork fields of these tools, keeps model IDs you declared earlier in the session, and on Codex uses the list another session of the workspace declared when you give none. Send `selection:"inherit"` only to keep every worker on your model. Pass the model `pipeline_next` pins: a launch without it is refused with NATIVE_SELECTOR_MISMATCH. On Claude Code APT asks for a cheaper model per task (`haiku`, `sonnet`, or `opus` under a coordinator that ranks above it), never for a model above yours, and leaves the field unset when the task needs your model. 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
+ - 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. Start the run with the pipeline it returns, which follows what the request produces: research that only answers needs no run, a PRD, report, guide, translation or research write-up is `document-artifact` also when scripts build it, and only a change to code is `bugfix`, `hotfix`, `feature` or `high-risk`. A document run gets its writer, a spec review per item and the quality review of the run; give its workers the research and writing task, not code or test work.
9
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
10
  - Start: `pipeline_start(pipeline, task, workspace, acceptanceCriteria, scope, qualityPlan, productImpact, sessionId)` creates a versioned run. Give `scope` the narrowest directory prefixes the task changes, such as `docs/guide/`, never the whole workspace or a pattern: runs of other host sessions work in the same checkout at the same time only when the scopes do not overlap, and a run is confined to its scope while it shares the checkout. 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. Its `complexity` and `risk` arguments set the worker's model tier. Leave them at `normal` unless the task needs otherwise: `high` is for a change to a shared interface, to security or to stored data, and runs on the strongest model, which is often your own. A task that makes no progress twice is raised to that model without a rating. On a high-risk run every writer gets that model; reviewers and researchers keep their rating. A researcher rated `low` runs on the fastest model. 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. When a step answers `WORKSPACE_BUSY` with `waiting:true`, call `pipeline_checkpoint(action="resource-wait", reason="workspace_busy", workerStopped=true)` and retry later; do not pause the run. Reading next to an active writer of the same run needs no reservation: on Claude Code launch an `Explore` or `Plan` agent without APT markers. Writers are exclusive by default. Work items planned with `parallel: true` and disjoint `scope` prefixes reserve confined writers that run at the same time, one per item and at most four actors in total; `parallelWrite:true` confines a writer on an unmarked scoped item and `parallelWrite:false` reserves a marked item exclusively. A confined writer cannot edit files outside its scope and reports with `action="report"`; verification runs after all parallel writers have reported. A reviewer records `pipeline_checkpoint(action="review")` with `review.findings`, each `{id, message}` and optionally `severity` and `required`. When a review failed or its reviewer stopped without a verdict, consume the report with `status:"failed"` and a `blocker` to return to implementation, or reserve a new reviewer with `pipeline_next(workItemId)`.
11
+ - Execute: `pipeline_next(task, runId, sessionId, role, requestId)` reserves an attempt. A run takes the specialist and the skills per stage of the task's route; a run started without a route is routed from its task, criteria and scope. `pipeline_next` returns the step's `skills` and the run's `specialist`: whoever performs the step, you or a worker, first calls `skill_load` for each skill and `context_load(kind="agent", id=<specialist>)`, and works as that specialist. Its `spawnArguments` are the arguments of the native spawn call: pass them as given, replacing only the brief placeholder with a brief that contains `briefMarkers`. They carry the exact `nativeTaskName`, model, reasoning effort and fork mode; a spawn without them runs the worker on your own model, and the next reservation says so in `dispatchWarning`. Its `complexity` and `risk` arguments set the worker's model tier. Leave them at `normal` unless the task needs otherwise: `high` is for a change to a shared interface, to security or to stored data, and runs on the strongest model, which is often your own. A task that makes no progress twice is raised to that model without a rating. On a high-risk run every writer gets that model; reviewers and researchers keep their rating. A researcher rated `low` runs on the fastest model. 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. When a step answers `WORKSPACE_BUSY` with `waiting:true`, call `pipeline_checkpoint(action="resource-wait", reason="workspace_busy", workerStopped=true)` and retry later; do not pause the run. Reading next to an active writer of the same run needs no reservation: on Claude Code launch an `Explore` or `Plan` agent without APT markers. Writers are exclusive by default. Work items planned with `parallel: true` and disjoint `scope` prefixes reserve confined writers that run at the same time, one per item and at most four actors in total; `parallelWrite:true` confines a writer on an unmarked scoped item and `parallelWrite:false` reserves a marked item exclusively. A confined writer cannot edit files outside its scope and reports with `action="report"`; verification runs after all parallel writers have reported. A work item planned with `risk: "low"` is accepted after its spec review when the run is not high-risk and none of its changed files is sensitive (auth, permission, API, schema, migration, lock or runtime files) or changes a public contract; otherwise it keeps the quality review, and the item records why in `reviewDepth`. Mark an item low only for copy, styling or internal changes with no public surface. A reviewer records `pipeline_checkpoint(action="review")` with `review.findings`, each `{id, message}` and optionally `severity` and `required`. One reviewer covers an item: `pipeline_next` returns `requiredReview.stages` `["spec","quality"]` (only `spec` for a low-risk item or a document run), and the reviewer records `action="review"` once per stage. The last stage, or the first failed one, files its report and releases the attempt; consume it with `consume-report`, no separate `report` is needed. A later review of the item gets `reviewFocus`: the earlier findings and the files changed since the last review. The run review can be split: pass `reviewStages`, for example `["technical"]`, to `pipeline_next` for each reviewer; without it a reviewer gets every stage not yet assigned. A run started on 3.5.38 or later blocks only on findings of severity high or blocker, or with `criterionId` for a failed acceptance criterion; give security and data-loss defects severity high. Other findings stay open as the run's hardening list (`quality.hardening`, and a section of progress.md) and hold nothing; `qualityPlan.blocking:"all"` restores blocking on every required finding. A confirmed finding stays closed until a review reports it again. Writers get their item's `openFindings` and the defects fixed in other items as `siblingFindings`. Keep handoff and record files outside the scope of code items: moving files out of an accepted item reopens it. A writer that runs the checks of its item with `pipeline_verify(checkId)` before it reports spares the verify stage: `pipeline_next` then returns `currentChecks`, and the verify checkpoint takes those evidence IDs without running the checks again. Plan related packages as work items of one run rather than one run each, so the run review and acceptance happen once. When a review failed or its reviewer stopped without a verdict, consume the report with `status:"failed"` and a `blocker` to return to implementation, or reserve a new reviewer with `pipeline_next(workItemId)`. When acceptance answers `INDEPENDENT_REVIEW_REQUIRED`, call `pipeline_checkpoint(action="refresh-receipts")` for the technical reviewer's attempt and checkpoint acceptance again; if the review is still not host-observed, reserve a reviewer at acceptance with `pipeline_next(role:"reviewer", reviewStages:["technical"])`, let it record its review, and consume its report, which completes acceptance. Do not reset the run or change its criteria for this. Codex leaves an MCP server that is still starting out of a new worker's tools: a Codex worker whose tool list lacks the APT tools lists them again after a few seconds, and if they are still missing it says so and stops without a verdict.
12
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. A `reportPath` is a workspace-relative path below `.agents/runtime/`, such as `.agents/runtime/reports/<checkId>.json`, that the command writes and that does not exist yet. 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 finding raised by the review of a work item belongs to that item: it holds that item's reviews and the completion of the run, not the reviews of other items, and a change outside the item's scope does not reopen it. A failed round that leaves other findings open than the round before counts as progress. 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
13
  - Inspect: `pipeline_status` reports current criterion/check status, open findings, reviewer provenance and pending creation intents without binding sessions. `pipeline_start`, `pipeline_use`, `pipeline_reset` and `pipeline_checkpoint` answer with a summary of the run: the last evidence records, open findings without their history, and the attempts in flight. `pipeline_status(task, runId)` returns the full record. A reported attempt's own evidence is attached when its report is consumed. `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
- - After an APT update: the update pauses open runs with reason `runtime-upgrade` and keeps their steps, items, evidence and budgets. Bind the run with `pipeline_use(task, runId)` and continue it with `pipeline_checkpoint(action="resume")`; do not start a new run. A run paused by its attempt budget resumes only with `grantAttempts: true` after the user has answered in this session.
14
+ - After an APT update: the update pauses open runs with reason `runtime-upgrade` and keeps their steps, items, evidence and budgets. Bind the run with `pipeline_use(task, runId)` and continue it with `pipeline_checkpoint(action="resume")`; do not start a new run. A run paused by its attempt budget resumes only with `grantAttempts` after the user has answered in this session: `true` grants ten attempts, a number up to 100 grants that many, so ask the user how many when the work may run unattended. A user may also grant in advance, for example "allow up to 40 attempts" before leaving the work running: record it at once with `pipeline_checkpoint(action="resume", grantAttempts=40)` on the running run. It raises the limit of every item without pausing the run, and only a message of the user in this session counts. When a failed run review leaves findings of the run open, reserve a writer for the item whose code they concern with `pipeline_next(workItemId)`; that reopens the accepted item. Item reviews do not wait for findings of the run.
15
15
  - 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.
16
16
  - MCP gates cover proxied calls. Native tool gates and continuation require observed host hooks. Plan Mode and user interruption take precedence.
17
17
  - Codegraph failures permit file-search fallback. The proxy refreshes the review graph before impact analysis; it must report failure rather than use stale results.
@@ -2,7 +2,7 @@
2
2
 
3
3
  At session start and after context recovery, call `session_bootstrap` for this workspace and read `docs/agents/apt-runtime.md` once per context. Read project conventions in `.agents/memory/MEMORY.md`; retrieve only relevant dynamic memory. Report unavailable backends once and use available fallbacks.
4
4
 
5
- For new or changed intent, call `route_request` with the target, stack and explicit skills. Use `skill_load` for selected skills and current-step references. Do not load the full trigger catalog or repeat rules on every tool call.
5
+ For new or changed intent, call `route_request` with the target, stack and explicit skills. Load what `pipeline_next` names: skills with `skill_load`, the specialist with `context_load`; work as it and brief workers the same. Do not load the full trigger catalog or repeat rules on every tool call.
6
6
 
7
7
  Before code changes, bind `pipeline_status` and `pipeline_start` or `pipeline_use` to an explicit task, runId and workspace. Reserve with `pipeline_next`; verify and checkpoint current code before completion. Read-only questions, review and existing tests need no code-change pipeline. Clarify only unresolved decisions.
8
8