@myagentroam/node 0.9.62 → 0.9.65

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 (161) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +4 -0
  3. package/dist/capabilities.js +110 -2
  4. package/dist/claude-agent-sdk.js +330 -2
  5. package/dist/claude-channel.js +44 -2
  6. package/dist/codex-app-server.js +510 -2
  7. package/dist/config.js +106 -2
  8. package/dist/connector/node-connector-options.js +1 -2
  9. package/dist/connector/node-operation-router.js +22 -2
  10. package/dist/connector.js +1736 -2
  11. package/dist/control-outbound-scheduler.js +153 -2
  12. package/dist/database.js +639 -2
  13. package/dist/fake-runner.js +129 -2
  14. package/dist/git-askpass.js +12 -0
  15. package/dist/git-execution-helper.js +266 -0
  16. package/dist/health.js +3 -2
  17. package/dist/main.js +57 -2
  18. package/dist/mcp-installation-model.js +1 -2
  19. package/dist/migrations/v004.js +55 -3
  20. package/dist/migrations/v005.js +13 -3
  21. package/dist/migrations/v006.js +90 -3
  22. package/dist/migrations/v007.js +22 -3
  23. package/dist/migrations/v008.js +18 -3
  24. package/dist/migrations/v009.js +70 -4
  25. package/dist/migrations/v010.js +43 -3
  26. package/dist/migrations/v011.js +20 -3
  27. package/dist/migrations/v012.js +8 -0
  28. package/dist/native-jsonl-reader.js +186 -2
  29. package/dist/native-session-history.js +1143 -2
  30. package/dist/opencode-runtime.js +80 -2
  31. package/dist/opencode-server.js +259 -2
  32. package/dist/operational.js +122 -2
  33. package/dist/process-tree.js +18 -2
  34. package/dist/ripgrep-binary.js +31 -2
  35. package/dist/rotating-log.js +67 -2
  36. package/dist/runner/abstract-runner.js +260 -2
  37. package/dist/runner/claude/managed-run-controller.js +355 -2
  38. package/dist/runner/claude/tool-normalizer.js +120 -2
  39. package/dist/runner/claude-code-runner.js +303 -2
  40. package/dist/runner/codex/composer-image-markers.js +8 -2
  41. package/dist/runner/codex/conversation-parser.js +913 -2
  42. package/dist/runner/codex/managed-run-controller.js +494 -2
  43. package/dist/runner/codex/tool-normalizer.js +214 -2
  44. package/dist/runner/codex-runner.js +585 -2
  45. package/dist/runner/fake-test-runner.js +47 -2
  46. package/dist/runner/mar-agent/conversation-normalizer.js +644 -2
  47. package/dist/runner/mar-agent/executor-stdio-client-transport.js +139 -2
  48. package/dist/runner/mar-agent/generated-images.js +41 -2
  49. package/dist/runner/mar-agent/history-projection.js +106 -2
  50. package/dist/runner/mar-agent/hosted-conversation-runtime.js +446 -2
  51. package/dist/runner/mar-agent/managed-run-controller.js +785 -2
  52. package/dist/runner/mar-agent/mcp-client-pool.js +233 -2
  53. package/dist/runner/mar-agent/runtime-model-factory.js +326 -2
  54. package/dist/runner/mar-agent-runner.js +458 -2
  55. package/dist/runner/opencode/conversation-parser.js +221 -2
  56. package/dist/runner/opencode/managed-run-controller.js +588 -2
  57. package/dist/runner/opencode/tool-normalizer.js +80 -2
  58. package/dist/runner/opencode-runner.js +426 -2
  59. package/dist/runner/runner-registry.js +87 -2
  60. package/dist/runner-command-engine.js +71 -2
  61. package/dist/runner-profiles.js +323 -2
  62. package/dist/runner-usage.js +190 -2
  63. package/dist/runtime-command-detector.js +73 -2
  64. package/dist/runtime-model.js +1 -2
  65. package/dist/runtime-state.js +1509 -2
  66. package/dist/service/attachment-domain-state.js +7 -2
  67. package/dist/service/bubblewrap-sandbox-executor.js +543 -2
  68. package/dist/service/continuous-run-coordinator.js +425 -2
  69. package/dist/service/conversation-history-service.js +552 -2
  70. package/dist/service/conversation-hosting-capability-service.js +61 -2
  71. package/dist/service/conversation-hosting-enablement-service.js +91 -2
  72. package/dist/service/conversation-hosting-maintenance-service.js +174 -2
  73. package/dist/service/conversation-segment-service.js +162 -2
  74. package/dist/service/conversation-template-node-service.js +992 -2
  75. package/dist/service/external-session-resume-service.js +152 -2
  76. package/dist/service/fake-managed-run-service.js +60 -2
  77. package/dist/service/git-execution-service.js +418 -0
  78. package/dist/service/git-operation-service.js +57 -0
  79. package/dist/service/hosted-conversation-node-service.js +1982 -2
  80. package/dist/service/hosted-conversation-store.js +1405 -2
  81. package/dist/service/managed-runner-session-service.js +35 -2
  82. package/dist/service/mar-agent-model-transport-test-service.js +88 -2
  83. package/dist/service/mcp-installation-verifier.js +87 -2
  84. package/dist/service/mcp-node-operation-service.js +90 -2
  85. package/dist/service/mission-mcp-server.js +124 -2
  86. package/dist/service/mission-mcp-stdio.js +40 -2
  87. package/dist/service/mission-runtime.js +142 -2
  88. package/dist/service/native-session-projection-service.js +274 -2
  89. package/dist/service/native-session-watch-service.js +683 -2
  90. package/dist/service/node-connection-lifecycle-service.js +88 -2
  91. package/dist/service/node-control-channel.js +85 -2
  92. package/dist/service/node-control-message-service.js +109 -2
  93. package/dist/service/node-request-service.js +62 -2
  94. package/dist/service/node-run-event-bridge.js +88 -2
  95. package/dist/service/node-terminal-channel.js +202 -2
  96. package/dist/service/node-upgrade-coordinator.js +137 -2
  97. package/dist/service/node-workspace-coordinator.js +97 -2
  98. package/dist/service/recent-run-projection-service.js +99 -2
  99. package/dist/service/run-attachment-service.js +321 -2
  100. package/dist/service/run-domain-state.js +4 -2
  101. package/dist/service/run-event-service.js +246 -2
  102. package/dist/service/run-ownership-policy.js +22 -2
  103. package/dist/service/run-workbench-service.js +120 -2
  104. package/dist/service/runner-channel-message-service.js +20 -2
  105. package/dist/service/runner-interaction-service.js +243 -2
  106. package/dist/service/runner-service.js +69 -2
  107. package/dist/service/runtime-credential-control-service.js +95 -2
  108. package/dist/service/session-catalog-service.js +404 -2
  109. package/dist/service/session-command-service.js +125 -2
  110. package/dist/service/session-context-service.js +128 -2
  111. package/dist/service/session-domain-state.js +9 -2
  112. package/dist/service/session-identity-service.js +86 -2
  113. package/dist/service/session-lifecycle-service.js +248 -2
  114. package/dist/service/session-message-service.js +270 -2
  115. package/dist/service/session-presentation-service.js +43 -2
  116. package/dist/service/session-query-service.js +82 -2
  117. package/dist/service/session-watch-slot-coordinator.js +21 -2
  118. package/dist/service/skill-directory-service.js +238 -2
  119. package/dist/service/skill-install-service.js +434 -2
  120. package/dist/service/skill-node-operation-service.js +206 -2
  121. package/dist/service/terminal-relay-state.js +3 -2
  122. package/dist/service/terminal-service.js +90 -2
  123. package/dist/service/web-search-error.js +40 -2
  124. package/dist/service/workbench-event-service.js +21 -2
  125. package/dist/service/workbench-manifest-service.js +69 -2
  126. package/dist/service/workspace-change-service.js +290 -2
  127. package/dist/service/workspace-content-search-service.js +457 -2
  128. package/dist/service/workspace-domain-state.js +41 -2
  129. package/dist/service/workspace-file-service.js +150 -2
  130. package/dist/service/workspace-git-exclude-service.js +119 -2
  131. package/dist/service/workspace-queue-workbench-service.js +176 -2
  132. package/dist/service/workspace-service.js +92 -2
  133. package/dist/service/workspace-session-service.js +154 -2
  134. package/dist/service/workspace-upload-service.js +262 -2
  135. package/dist/service/workspace-watch-controller.js +68 -2
  136. package/dist/service/workspace-watch-service.js +170 -2
  137. package/dist/service/workspace-watch-snapshot-service.js +218 -2
  138. package/dist/service/workspace-workbench-service.js +239 -2
  139. package/dist/service.js +91 -2
  140. package/dist/storage.js +32 -2
  141. package/dist/supervisor.js +136 -2
  142. package/dist/terminal.js +496 -2
  143. package/dist/util/git-credential-client.js +32 -0
  144. package/dist/util/node-operation-data.js +9 -2
  145. package/dist/util/node-operation-parsers.js +382 -2
  146. package/dist/util/personal-instructions.js +34 -2
  147. package/dist/util/runner-error.js +70 -2
  148. package/dist/util/runner-native-session-parsers.js +510 -2
  149. package/dist/util/safe-error.js +8 -2
  150. package/dist/util/secret-environment.js +25 -2
  151. package/dist/workspace.js +1793 -2
  152. package/package.json +11 -8
  153. package/vendor/ripgrep/darwin-arm64/rg +0 -0
  154. package/vendor/ripgrep/darwin-x64/rg +0 -0
  155. package/vendor/ripgrep/manifest.json +12 -0
  156. package/README.md +0 -42
  157. package/dist/event-buffer.js +0 -2
  158. package/dist/migrations/v001.js +0 -107
  159. package/dist/migrations/v002.js +0 -2
  160. package/dist/migrations/v003.js +0 -2
  161. package/dist/service/mcp-package-installer.js +0 -2
@@ -1,2 +1,239 @@
1
- /* mar-release-protected */
2
- function _0x1657(_0x5efcc1,_0x18ed79){_0x5efcc1=_0x5efcc1-(-0x137d+0xe4a+0x1*0x727);const _0xc2ffd2=_0xa545();let _0x50e065=_0xc2ffd2[_0x5efcc1];if(_0x1657['leGQia']===undefined){var _0xab6536=function(_0xe20e45){const _0x57f153='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2a2192='',_0x4454c8='';for(let _0x1cd6a1=0x139*-0x15+0x770+0x1*0x123d,_0x3fd88b,_0x4ecd3d,_0x265e21=-0x49*0x29+-0xec1+-0xa*-0x2a5;_0x4ecd3d=_0xe20e45['charAt'](_0x265e21++);~_0x4ecd3d&&(_0x3fd88b=_0x1cd6a1%(-0x48e+-0x20a+0x12*0x5e)?_0x3fd88b*(0x23*-0x101+0x4a*0x56+0xa87)+_0x4ecd3d:_0x4ecd3d,_0x1cd6a1++%(-0x12ae*-0x2+0xb24*0x1+-0x307c))?_0x2a2192+=String['fromCharCode'](0xb*0x1+0x84c*-0x3+0x19d8*0x1&_0x3fd88b>>(-(-0x20c8+0x181d*-0x1+0x7*0x821)*_0x1cd6a1&-0x3e6+-0xff2+0x13de)):0x1*0x2029+-0x1851+0x2*-0x3ec){_0x4ecd3d=_0x57f153['indexOf'](_0x4ecd3d);}for(let _0xd5aeaf=-0x154*-0x1c+-0x26f7+0x1c7,_0x1f632d=_0x2a2192['length'];_0xd5aeaf<_0x1f632d;_0xd5aeaf++){_0x4454c8+='%'+('00'+_0x2a2192['charCodeAt'](_0xd5aeaf)['toString'](-0xd*-0x116+0x9*0x11e+-0x181c))['slice'](-(0x22cf+-0x1720+-0xbad*0x1));}return decodeURIComponent(_0x4454c8);};_0x1657['QGlCXX']=_0xab6536,_0x1657['kfgrGi']={},_0x1657['leGQia']=!![];}const _0x25333a=_0xc2ffd2[-0x23ab+0x14ef+0xebc];_0x1657['fpVgre']!==_0x25333a&&(_0x1657['kfgrGi']={},_0x1657['fpVgre']=_0x25333a);const _0x5297fa=_0x1657['kfgrGi'][_0x5efcc1];return _0x5297fa===undefined?(_0x50e065=_0x1657['QGlCXX'](_0x50e065),_0x1657['kfgrGi'][_0x5efcc1]=_0x50e065):_0x50e065=_0x5297fa,_0x50e065;}const _0x26b56f=_0x1657;(function(_0x1e9c7a,_0x40ab45){const _0x503672=_0x1657,_0x1b1947=_0x1e9c7a();while(!![]){try{const _0x1f5f94=-parseInt(_0x503672(0x259))/(-0x89*-0x2f+0x183d+-0x3163)*(parseInt(_0x503672(0x1f6))/(-0x19b1*-0x1+-0x84a*0x1+-0x3d*0x49))+-parseInt(_0x503672(0x24b))/(-0x264f+-0x3*0x1cd+0x2bb9)+parseInt(_0x503672(0x24e))/(-0x1249+-0x460+0x16ad)*(-parseInt(_0x503672(0x1f5))/(0x331+-0x1cdf+-0x33*-0x81))+parseInt(_0x503672(0x21b))/(-0x4*-0x11b+-0x2*-0x456+-0x7*0x1de)+parseInt(_0x503672(0x236))/(0x73b+-0x24f4+-0x44*-0x70)+-parseInt(_0x503672(0x20a))/(-0x1*-0x1c3+-0x726+-0x49*-0x13)*(-parseInt(_0x503672(0x213))/(-0x1212+0x505*0x7+-0x1108))+-parseInt(_0x503672(0x223))/(-0x23a4+0x13b8+-0x9*-0x1c6)*(-parseInt(_0x503672(0x229))/(-0x17*-0x158+0x1148+-0x3025));if(_0x1f5f94===_0x40ab45)break;else _0x1b1947['push'](_0x1b1947['shift']());}catch(_0x9cb220){_0x1b1947['push'](_0x1b1947['shift']());}}}(_0xa545,0xa7*-0x587+0x199d1*-0x1+-0x5*-0x176fe));import{listGitHistoryRefs,readGitHistory,readGitHistoryFileDiff,readGitHistoryFileContentRange,readGitHistoryFiles,readCurrentChangeDiff,readRestrictedDiff,resolveGitRepository,resolveGitRepositoryTarget,restoreCurrentChange}from'../workspace.js';import{WorkspaceContentSearchService}from'./workspace-content-search-service.js';import{WorkspaceWatchController}from'./workspace-watch-controller.js';import{WorkspaceWatchSnapshotService}from'./workspace-watch-snapshot-service.js';export class WorkspaceWorkbenchService{[_0x26b56f(0x1fa)];[_0x26b56f(0x252)];[_0x26b56f(0x241)];[_0x26b56f(0x200)];constructor(_0x7d2b2f){const _0xbc7ed=_0x26b56f;this[_0xbc7ed(0x1fa)]=_0x7d2b2f,this[_0xbc7ed(0x252)]=new WorkspaceContentSearchService(_0x7d2b2f[_0xbc7ed(0x239)]),this[_0xbc7ed(0x241)]=new WorkspaceWatchSnapshotService(_0x7d2b2f),this[_0xbc7ed(0x200)]=new WorkspaceWatchController({'requireWorkspace':_0x7d2b2f[_0xbc7ed(0x253)],'watch':_0x7d2b2f[_0xbc7ed(0x204)],'snapshots':this[_0xbc7ed(0x241)],'nodeGeneration':_0x7d2b2f[_0xbc7ed(0x203)]});}[_0x26b56f(0x251)](){const _0x1ba082=_0x26b56f;return{...this[_0x1ba082(0x200)][_0x1ba082(0x251)](),'workspace.files.list':_0x577f0b=>this[_0x1ba082(0x257)](record(_0x577f0b)),'workspace.file.read':_0x39fd66=>this[_0x1ba082(0x228)](record(_0x39fd66)),'workspace.file.write':_0x5d142e=>this[_0x1ba082(0x240)](record(_0x5d142e)),'workspace.file.content.read':_0x213fd=>this[_0x1ba082(0x23e)](record(_0x213fd)),'workspace.files.search':_0x53a202=>this[_0x1ba082(0x234)](record(_0x53a202)),'workspace.files.mutate':_0xddc6a0=>this[_0x1ba082(0x231)](record(_0xddc6a0)),'workspace.content.search':_0xc469f4=>this[_0x1ba082(0x211)](record(_0xc469f4)),'workspace.files.upload.preflight':_0x27f197=>this[_0x1ba082(0x248)](record(_0x27f197)),'workspace.files.upload.create':_0x40eb5b=>this[_0x1ba082(0x235)](record(_0x40eb5b)),'workspace.files.upload.chunk':_0x3bf58f=>this[_0x1ba082(0x206)](record(_0x3bf58f)),'workspace.files.upload.status':_0x308e40=>({'upload':this[_0x1ba082(0x1fa)][_0x1ba082(0x20d)][_0x1ba082(0x221)](record(_0x308e40)[_0x1ba082(0x247)])}),'workspace.files.upload.complete':_0x1ef7ef=>this[_0x1ba082(0x25a)](record(_0x1ef7ef)),'workspace.files.upload.cancel':_0x3d2807=>this[_0x1ba082(0x215)](record(_0x3d2807)),'workspace.changes.current':_0x37e2c8=>this[_0x1ba082(0x217)](record(_0x37e2c8)),'workspace.change.diff':_0x72a122=>this[_0x1ba082(0x20f)](record(_0x72a122)),'workspace.change.restore':_0x5a2c7a=>this[_0x1ba082(0x224)](record(_0x5a2c7a)),'workspace.git.refs.list':_0x1376bd=>this[_0x1ba082(0x1f7)](record(_0x1376bd)),'workspace.git.history.list':_0x13833d=>this[_0x1ba082(0x208)](record(_0x13833d)),'workspace.git.commit.files':_0x1d3fb0=>this[_0x1ba082(0x21d)](record(_0x1d3fb0)),'workspace.git.commit.file.diff':_0x4ae4ee=>this[_0x1ba082(0x245)](record(_0x4ae4ee)),'workspace.git.commit.file.content.read':_0x69d398=>this[_0x1ba082(0x226)](record(_0x69d398)),'workspace.diff':_0x4283ee=>this[_0x1ba082(0x216)](record(_0x4283ee))};}[_0x26b56f(0x23a)](_0x493ce2,_0x21bf05){const _0x38f4de=_0x26b56f;return this[_0x38f4de(0x241)][_0x38f4de(0x249)](_0x493ce2,_0x21bf05);}[_0x26b56f(0x220)](_0x154b05,_0x1fc86a){const _0x5280cf=_0x26b56f;return this[_0x5280cf(0x241)][_0x5280cf(0x258)](_0x154b05,_0x1fc86a);}[_0x26b56f(0x21e)](_0x5efcc1){const _0x3fa3c3=_0x26b56f;this[_0x3fa3c3(0x241)][_0x3fa3c3(0x222)](_0x5efcc1);}[_0x26b56f(0x222)](){const _0x1a0c59=_0x26b56f;this[_0x1a0c59(0x241)][_0x1a0c59(0x23d)]();}async[_0x26b56f(0x257)](_0x18ed79){const _0x5105b9=_0x26b56f,_0xc2ffd2=this[_0x5105b9(0x1fa)][_0x5105b9(0x253)](_0x18ed79[_0x5105b9(0x254)]);if(_0x18ed79[_0x5105b9(0x20e)]!==undefined||_0x18ed79[_0x5105b9(0x210)]!==undefined&&_0x18ed79[_0x5105b9(0x210)]!=='.')return{'files':await this[_0x5105b9(0x1fa)][_0x5105b9(0x239)][_0x5105b9(0x1f4)](_0xc2ffd2,_0x18ed79)};const _0x50e065=await this[_0x5105b9(0x1fa)][_0x5105b9(0x233)](_0xc2ffd2),_0xab6536=await this[_0x5105b9(0x1fa)][_0x5105b9(0x239)][_0x5105b9(0x1f4)](_0xc2ffd2,_0x18ed79);return{'files':_0xab6536,'workspace':await this[_0x5105b9(0x1fa)][_0x5105b9(0x232)](_0xc2ffd2,_0x50e065)};}async[_0x26b56f(0x228)](_0x25333a){const _0x76a300=_0x26b56f,_0x5297fa=this[_0x76a300(0x1fa)][_0x76a300(0x253)](_0x25333a[_0x76a300(0x254)]),_0xe20e45=await this[_0x76a300(0x238)](_0x5297fa,_0x25333a);return{'file':await this[_0x76a300(0x1fa)][_0x76a300(0x239)][_0x76a300(0x246)](_0x5297fa,_0x25333a,_0xe20e45)};}async[_0x26b56f(0x240)](_0x57f153){const _0x161d99=_0x26b56f,_0x2a2192=this[_0x161d99(0x1fa)][_0x161d99(0x253)](_0x57f153[_0x161d99(0x254)]);return{'file':await this[_0x161d99(0x1fa)][_0x161d99(0x239)][_0x161d99(0x255)](_0x2a2192,_0x57f153)};}async[_0x26b56f(0x234)](_0x4454c8){const _0x4e8f41=_0x26b56f,_0x1cd6a1=this[_0x4e8f41(0x1fa)][_0x4e8f41(0x253)](_0x4454c8[_0x4e8f41(0x254)]);return{'files':await this[_0x4e8f41(0x1fa)][_0x4e8f41(0x239)][_0x4e8f41(0x22b)](_0x1cd6a1,_0x4454c8)};}async[_0x26b56f(0x231)](_0x3fd88b){const _0x4cd06f=_0x26b56f,_0x4ecd3d=this[_0x4cd06f(0x1fa)][_0x4cd06f(0x253)](_0x3fd88b[_0x4cd06f(0x254)]);return{'file':await this[_0x4cd06f(0x1fa)][_0x4cd06f(0x239)][_0x4cd06f(0x22f)](_0x4ecd3d,_0x3fd88b)};}async[_0x26b56f(0x211)](_0x265e21){const _0x3f4e24=_0x26b56f,_0xd5aeaf=this[_0x3f4e24(0x1fa)][_0x3f4e24(0x253)](_0x265e21[_0x3f4e24(0x254)]);return{'search':await this[_0x3f4e24(0x252)][_0x3f4e24(0x22b)](_0xd5aeaf,_0x265e21)};}async[_0x26b56f(0x248)](_0x1f632d){const _0xcb0d09=_0x26b56f;return{'uploads':await this[_0xcb0d09(0x1fa)][_0xcb0d09(0x20d)][_0xcb0d09(0x248)](this[_0xcb0d09(0x1fa)][_0xcb0d09(0x253)](_0x1f632d[_0xcb0d09(0x254)]),_0x1f632d)};}async[_0x26b56f(0x235)](_0x43dd7c){const _0x2e09b1=_0x26b56f;return{'upload':await this[_0x2e09b1(0x1fa)][_0x2e09b1(0x20d)][_0x2e09b1(0x22e)](this[_0x2e09b1(0x1fa)][_0x2e09b1(0x253)](_0x43dd7c[_0x2e09b1(0x254)]),_0x43dd7c)};}async[_0x26b56f(0x206)](_0x261c48){const _0x1e429f=_0x26b56f;return{'upload':await this[_0x1e429f(0x1fa)][_0x1e429f(0x20d)][_0x1e429f(0x255)](_0x261c48)};}async[_0x26b56f(0x25a)](_0x36959e){const _0x41a98f=_0x26b56f;return{'upload':await this[_0x41a98f(0x1fa)][_0x41a98f(0x20d)][_0x41a98f(0x202)](_0x36959e[_0x41a98f(0x247)])};}async[_0x26b56f(0x215)](_0x34e289){const _0x159d37=_0x26b56f;return await this[_0x159d37(0x1fa)][_0x159d37(0x20d)][_0x159d37(0x219)](_0x34e289[_0x159d37(0x247)]),{'cancelled':!![]};}async[_0x26b56f(0x217)](_0x3c75d5){const _0x2f99d7=_0x26b56f;return this[_0x2f99d7(0x1fa)][_0x2f99d7(0x24d)][_0x2f99d7(0x212)](this[_0x2f99d7(0x1fa)][_0x2f99d7(0x253)](_0x3c75d5[_0x2f99d7(0x254)]));}async[_0x26b56f(0x23e)](_0x287b17){const _0x12d405=_0x26b56f;if(typeof _0x287b17[_0x12d405(0x254)]!==_0x12d405(0x201))throw new Error(_0x12d405(0x225));const _0x1ae350=this[_0x12d405(0x1fa)][_0x12d405(0x253)](_0x287b17[_0x12d405(0x254)]),_0x3ef0a6=await this[_0x12d405(0x238)](_0x1ae350,_0x287b17);return{'file':await this[_0x12d405(0x1fa)][_0x12d405(0x239)][_0x12d405(0x22a)](_0x1ae350,_0x287b17,_0x3ef0a6)};}async[_0x26b56f(0x20f)](_0x5e36ef){const _0x5bc257=_0x26b56f;if(typeof _0x5e36ef[_0x5bc257(0x254)]!==_0x5bc257(0x201)||typeof _0x5e36ef[_0x5bc257(0x210)]!==_0x5bc257(0x201)||_0x5e36ef[_0x5bc257(0x230)]!==undefined&&typeof _0x5e36ef[_0x5bc257(0x230)]!==_0x5bc257(0x201)||_0x5e36ef[_0x5bc257(0x20b)]!==undefined&&typeof _0x5e36ef[_0x5bc257(0x20b)]!==_0x5bc257(0x201))throw new Error(_0x5bc257(0x256));const _0x53a880=this[_0x5bc257(0x24c)](_0x5e36ef[_0x5bc257(0x254)]),_0x1c8650=await resolveGitRepositoryTarget(_0x53a880[_0x5bc257(0x210)],_0x5e36ef[_0x5bc257(0x230)]??'',_0x5e36ef[_0x5bc257(0x20b)]);return{'diff':await readCurrentChangeDiff(_0x1c8650,_0x5e36ef[_0x5bc257(0x210)])};}async[_0x26b56f(0x224)](_0x2023bb){const _0x25d432=_0x26b56f;if(typeof _0x2023bb[_0x25d432(0x254)]!==_0x25d432(0x201)||typeof _0x2023bb[_0x25d432(0x210)]!==_0x25d432(0x201)||_0x2023bb[_0x25d432(0x230)]!==undefined&&typeof _0x2023bb[_0x25d432(0x230)]!==_0x25d432(0x201)||_0x2023bb[_0x25d432(0x20b)]!==undefined&&typeof _0x2023bb[_0x25d432(0x20b)]!==_0x25d432(0x201)||_0x2023bb[_0x25d432(0x21a)]!==_0x25d432(0x207)&&_0x2023bb[_0x25d432(0x21a)]!==_0x25d432(0x23f)&&_0x2023bb[_0x25d432(0x21a)]!==_0x25d432(0x1fe))throw new Error(_0x25d432(0x21c));const _0x5123b8=this[_0x25d432(0x24c)](_0x2023bb[_0x25d432(0x254)]),_0x5e7b45=await resolveGitRepositoryTarget(_0x5123b8[_0x25d432(0x210)],_0x2023bb[_0x25d432(0x230)]??'',_0x2023bb[_0x25d432(0x20b)]);return await restoreCurrentChange(_0x5e7b45,_0x2023bb[_0x25d432(0x210)],_0x2023bb[_0x25d432(0x21a)]),this[_0x25d432(0x1fa)][_0x25d432(0x249)](_0x5123b8['id']),{'restored':!![]};}async[_0x26b56f(0x244)](_0x2a6fac){const _0x3738cb=_0x26b56f;if(typeof _0x2a6fac[_0x3738cb(0x254)]!==_0x3738cb(0x201)||_0x2a6fac[_0x3738cb(0x230)]!==undefined&&typeof _0x2a6fac[_0x3738cb(0x230)]!==_0x3738cb(0x201))throw new Error(_0x3738cb(0x218));const _0x3e5b73=this[_0x3738cb(0x24c)](_0x2a6fac[_0x3738cb(0x254)]);return resolveGitRepository(_0x3e5b73[_0x3738cb(0x210)],_0x2a6fac[_0x3738cb(0x230)]??'');}async[_0x26b56f(0x238)](_0x20a268,_0x332de5){const _0x570981=_0x26b56f;if(_0x332de5[_0x570981(0x20b)]===undefined)return _0x20a268[_0x570981(0x210)];if(typeof _0x332de5[_0x570981(0x20b)]!==_0x570981(0x201))throw new Error(_0x570981(0x218));return resolveGitRepositoryTarget(_0x20a268[_0x570981(0x210)],'',_0x332de5[_0x570981(0x20b)]);}[_0x26b56f(0x20c)](_0x35e487){const _0x4dcafb=_0x26b56f;if(_0x35e487[_0x4dcafb(0x20c)]===undefined)return undefined;if(!Array[_0x4dcafb(0x22c)](_0x35e487[_0x4dcafb(0x20c)])||_0x35e487[_0x4dcafb(0x20c)][_0x4dcafb(0x22d)]>-0x16*0x1b5+0x8+-0x9d*-0x3e||_0x35e487[_0x4dcafb(0x20c)][_0x4dcafb(0x21f)](_0x1f2431=>typeof _0x1f2431!==_0x4dcafb(0x201)))throw new Error(_0x4dcafb(0x1ff));return _0x35e487[_0x4dcafb(0x20c)];}async[_0x26b56f(0x1f7)](_0x31d672){const _0x353316=_0x26b56f;return{'refs':await listGitHistoryRefs(await this[_0x353316(0x244)](_0x31d672))};}async[_0x26b56f(0x208)](_0x5a66d1){const _0x286d07=_0x26b56f,_0xafc22e=this[_0x286d07(0x20c)](_0x5a66d1);if(_0x5a66d1[_0x286d07(0x20e)]!==undefined&&typeof _0x5a66d1[_0x286d07(0x20e)]!==_0x286d07(0x201))throw new Error(_0x286d07(0x242));if(_0x5a66d1[_0x286d07(0x1f9)]!==undefined&&(typeof _0x5a66d1[_0x286d07(0x1f9)]!==_0x286d07(0x205)||!Number[_0x286d07(0x227)](_0x5a66d1[_0x286d07(0x1f9)])||_0x5a66d1[_0x286d07(0x1f9)]<-0x21b+0xef0+-0xcd4||_0x5a66d1[_0x286d07(0x1f9)]>0x29*-0x85+-0x245f+0x4*0xe84))throw new Error(_0x286d07(0x250));return readGitHistory(await this[_0x286d07(0x244)](_0x5a66d1),{..._0xafc22e===undefined?{}:{'refs':_0xafc22e},...typeof _0x5a66d1[_0x286d07(0x20e)]===_0x286d07(0x201)?{'cursor':_0x5a66d1[_0x286d07(0x20e)]}:{},...typeof _0x5a66d1[_0x286d07(0x1f9)]===_0x286d07(0x205)?{'limit':_0x5a66d1[_0x286d07(0x1f9)]}:{}});}async[_0x26b56f(0x21d)](_0x57fd92){const _0x537680=_0x26b56f;if(typeof _0x57fd92[_0x537680(0x237)]!==_0x537680(0x201))throw new Error(_0x537680(0x23c));return{'files':await readGitHistoryFiles(await this[_0x537680(0x244)](_0x57fd92),_0x57fd92[_0x537680(0x237)],this[_0x537680(0x20c)](_0x57fd92))};}async[_0x26b56f(0x245)](_0x3d7538){const _0xfed97a=_0x26b56f;if(typeof _0x3d7538[_0xfed97a(0x237)]!==_0xfed97a(0x201)||typeof _0x3d7538[_0xfed97a(0x210)]!==_0xfed97a(0x201)||_0x3d7538[_0xfed97a(0x1fb)]!==undefined&&typeof _0x3d7538[_0xfed97a(0x1fb)]!==_0xfed97a(0x201))throw new Error(_0xfed97a(0x256));return{'diff':await readGitHistoryFileDiff(await this[_0xfed97a(0x244)](_0x3d7538),_0x3d7538[_0xfed97a(0x237)],_0x3d7538[_0xfed97a(0x210)],this[_0xfed97a(0x20c)](_0x3d7538),_0x3d7538[_0xfed97a(0x1fb)])};}async[_0x26b56f(0x226)](_0x13e444){const _0x58507d=_0x26b56f;if(typeof _0x13e444[_0x58507d(0x237)]!==_0x58507d(0x201)||typeof _0x13e444[_0x58507d(0x210)]!==_0x58507d(0x201)||!Number[_0x58507d(0x243)](_0x13e444[_0x58507d(0x23b)])||_0x13e444[_0x58507d(0x23b)]<-0x25*-0x6a+0x5*0x3ab+-0x21a9*0x1||!Number[_0x58507d(0x243)](_0x13e444[_0x58507d(0x1f9)])||_0x13e444[_0x58507d(0x1f9)]<0x1121+-0x2417*-0x1+0x11bd*-0x3||_0x13e444[_0x58507d(0x1f9)]>(0x243*0x1+0x2265+-0x2494)*(0x2*-0x112a+-0x1*-0x99d+0x1cb7)*(-0x40+-0x1d3*0x5+0x15*0xa3))throw new Error(_0x58507d(0x214));return{'file':await readGitHistoryFileContentRange(await this[_0x58507d(0x244)](_0x13e444),_0x13e444[_0x58507d(0x237)],_0x13e444[_0x58507d(0x210)],_0x13e444[_0x58507d(0x23b)],_0x13e444[_0x58507d(0x1f9)],this[_0x58507d(0x20c)](_0x13e444))};}async[_0x26b56f(0x216)](_0x8ddd8){const _0x32b299=_0x26b56f;if(typeof _0x8ddd8[_0x32b299(0x254)]!==_0x32b299(0x201)||typeof _0x8ddd8[_0x32b299(0x24a)]!==_0x32b299(0x201)||typeof _0x8ddd8[_0x32b299(0x1fc)]!==_0x32b299(0x201))throw new Error(_0x32b299(0x256));const _0x1491a3=this[_0x32b299(0x24c)](_0x8ddd8[_0x32b299(0x254)]);return{'diff':await readRestrictedDiff(_0x1491a3[_0x32b299(0x210)],_0x8ddd8[_0x32b299(0x24a)],_0x8ddd8[_0x32b299(0x1fc)])};}[_0x26b56f(0x24c)](_0x182c5d){const _0x2b5e7e=_0x26b56f,_0xa689af=this[_0x2b5e7e(0x1fa)][_0x2b5e7e(0x253)](_0x182c5d);if(_0xa689af[_0x2b5e7e(0x24f)]!==_0x2b5e7e(0x1f8))throw new Error(_0x2b5e7e(0x1fd));return _0xa689af;}}function record(_0x3c67fc){const _0x1ab91c=_0x26b56f;return typeof _0x3c67fc===_0x1ab91c(0x209)&&_0x3c67fc!==null&&!Array[_0x1ab91c(0x22c)](_0x3c67fc)?_0x3c67fc:{};}function _0xa545(){const _0x53d1d1=['ngTrA3D1vW','A2LUza','r0Lux0Hju1rpuLLFteLnsvrFsu5wquXjra','B3bLCMf0Aw9UCW','y29UDgvUDfnLyxjJAa','CMvXDwLYzvDVCMTZCgfJzq','D29YA3nWywnLswq','D3jPDgu','r0Lux0rjrKzFsu5wquXjra','BgLZDezPBgvZ','zw5ZDxjLu25HChnOB3q','mJe5otKXyuHqz1ns','y29TCgXLDgvvCgXVywq','BgLZDa','nJq0nte1wurWyNHz','mMXrzNPjvq','z2L0uMvMCW','r0Lux1DpuKTtuefdrq','BgLTAxq','B3b0Aw9UCW','ChjLDMLVDxnqyxrO','Dg9szwy','v09ss1nqqunfx05pvf9hsvq','vu5uuKfds0ve','r0Lux0Hju1rpuLLFuKvgx0LovKfmsuq','D2f0y2HdB250CM9SBgvY','C3rYAw5N','y29TCgXLDgu','BM9KzuDLBMvYyxrPB24','D2f0y2G','BNvTyMvY','D3jPDgvvCgXVywq','u1rbr0ve','z2L0sgLZDg9YEq','B2jQzwn0','mtzPuMPtrvC','D29YA3rYzwvqyxrO','CMvMCW','DxbSB2fKCW','y3vYC29Y','y2HHBMDLrgLMzG','Cgf0Aa','C2vHCMnOq29UDgvUDa','y3vYCMvUDa','mta0mdyWn2PzuwHAvW','rKLmrv9squ5hrv9jtLzbteLe','y2fUy2vSvxbSB2fK','zgLMzG','y3vYCMvUDenOyw5Nzxm','r0Lux1jfue9tsvrpuLLFsu5wquXjra','y2fUy2vS','C3rHDgu','odq4nti2vxrywNjW','r0Lux0niqu5hrv9srvnut1jfx1voqvzbsuXbqKXf','z2L0q29TBwL0rMLSzxm','y2XLyxjxB3jRC3bHy2u','C29Tzq','zw5ZDxjLvg9WAwntBMfWC2HVDa','C3rHDhvZ','y2XLyxi','mtbZsKHKswC','CMvZDg9YzunOyw5Nzq','v09ss1nqqunfx05pvf9gt1vora','z2L0q29TBwL0rMLSzunVBNrLBNq','AxnjBNrLz2vY','CMvHzezPBgu','mZqXoda0mwrAsw1MuW','CMvHzenVBNrLBNq','C2vHCMnO','AxnbCNjHEq','BgvUz3rO','y3jLyxrL','Bxv0yxrL','CMvWB3nPDg9YEvbHDgG','Bxv0yxrLrMLSzq','y29TBwL0v29YA3nWywnL','Aw5ZCgvJDfDVCMTZCgfJzq','C2vHCMnOrMLSzxm','y3jLyxrLvxbSB2fK','mtq0otq5tfLrDfPZ','y29TBwL0','zMLSzvjLCg9ZAxrVCNK','zMLSzxm','Aw52ywXPzgf0zvrVCgLJ','B2zMC2v0','r0Lux0Hju1rpuLLFq09ntuLux0LovKfmsuq','y2XLyxjbBgW','CMvHzezPBgvdB250zw50','vu5tvefhruq','D3jPDgvgAwXL','C25HChnOB3rZ','r0Lux0Hju1rpuLLFq1vsu09sx0LovKfmsuq','AxntywzLsw50zwDLCG','z2L0uMvWB3nPDg9YEq','z2L0q29TBwL0rMLSzurPzMy','CMvHza','DxbSB2fKswq','ChjLzMXPz2H0','Aw52ywXPzgf0zq','zNjVBvjLzG','nJq5mZe3ChbWz0nQ','z2L0v29YA3nWywnL','y2HHBMDLCW'];_0xa545=function(){return _0x53d1d1;};return _0xa545();}
1
+ import { listGitHistoryRefs, readGitHistory, readGitHistoryFileDiff, readGitHistoryFileContentRange, readGitHistoryFiles, readCurrentChangeDiff, readRestrictedDiff, resolveGitRepository, resolveGitRepositoryTarget, restoreCurrentChange } from '../workspace.js';
2
+ import { WorkspaceContentSearchService } from './workspace-content-search-service.js';
3
+ import { WorkspaceWatchController } from './workspace-watch-controller.js';
4
+ import { WorkspaceWatchSnapshotService } from './workspace-watch-snapshot-service.js';
5
+ export class WorkspaceWorkbenchService {
6
+ options;
7
+ contentSearch;
8
+ snapshots;
9
+ watchController;
10
+ constructor(options) {
11
+ this.options = options;
12
+ this.contentSearch = new WorkspaceContentSearchService(options.files);
13
+ this.snapshots = new WorkspaceWatchSnapshotService(options);
14
+ this.watchController = new WorkspaceWatchController({
15
+ requireWorkspace: options.requireWorkspace,
16
+ watch: options.watch,
17
+ snapshots: this.snapshots,
18
+ nodeGeneration: options.nodeGeneration
19
+ });
20
+ }
21
+ operations() {
22
+ return {
23
+ ...this.watchController.operations(),
24
+ 'workspace.files.list': (data) => this.listFiles(record(data)),
25
+ 'workspace.file.read': (data) => this.readFile(record(data)),
26
+ 'workspace.file.write': (data) => this.writeFile(record(data)),
27
+ 'workspace.file.content.read': (data) => this.readFileContent(record(data)),
28
+ 'workspace.files.search': (data) => this.searchFiles(record(data)),
29
+ 'workspace.files.mutate': (data) => this.mutateFile(record(data)),
30
+ 'workspace.content.search': (data) => this.searchContent(record(data)),
31
+ 'workspace.files.upload.preflight': (data) => this.preflight(record(data)),
32
+ 'workspace.files.upload.create': (data) => this.createUpload(record(data)),
33
+ 'workspace.files.upload.chunk': (data) => this.writeUpload(record(data)),
34
+ 'workspace.files.upload.status': (data) => ({
35
+ upload: this.options.uploads.status(record(data).uploadId)
36
+ }),
37
+ 'workspace.files.upload.complete': (data) => this.completeUpload(record(data)),
38
+ 'workspace.files.upload.cancel': (data) => this.cancelUpload(record(data)),
39
+ 'workspace.changes.current': (data) => this.currentChanges(record(data)),
40
+ 'workspace.change.diff': (data) => this.changeDiff(record(data)),
41
+ 'workspace.change.restore': (data) => this.restoreChange(record(data)),
42
+ 'workspace.git.refs.list': (data) => this.gitRefs(record(data)),
43
+ 'workspace.git.history.list': (data) => this.gitHistory(record(data)),
44
+ 'workspace.git.commit.files': (data) => this.gitCommitFiles(record(data)),
45
+ 'workspace.git.commit.file.diff': (data) => this.gitCommitFileDiff(record(data)),
46
+ 'workspace.git.commit.file.content.read': (data) => this.gitCommitFileContent(record(data)),
47
+ 'workspace.diff': (data) => this.diff(record(data))
48
+ };
49
+ }
50
+ invalidateTopic(workspaceId, topic) {
51
+ return this.snapshots.invalidate(workspaceId, topic);
52
+ }
53
+ ensureTopicSnapshot(workspaceId, topic) {
54
+ return this.snapshots.ensureSnapshot(workspaceId, topic);
55
+ }
56
+ clearWorkspace(workspaceId) {
57
+ this.snapshots.clear(workspaceId);
58
+ }
59
+ clear() {
60
+ this.snapshots.clearAll();
61
+ }
62
+ async listFiles(input) {
63
+ const workspace = this.options.requireWorkspace(input.workspaceId);
64
+ if (input.cursor !== undefined || (input.path !== undefined && input.path !== '.'))
65
+ return { files: await this.options.files.list(workspace, input) };
66
+ const inspection = await this.options.inspectWorkspace(workspace);
67
+ const files = await this.options.files.list(workspace, input);
68
+ return {
69
+ files,
70
+ workspace: await this.options.commitWorkspace(workspace, inspection)
71
+ };
72
+ }
73
+ async readFile(input) {
74
+ const workspace = this.options.requireWorkspace(input.workspaceId);
75
+ const repository = await this.fileRepository(workspace, input);
76
+ return { file: await this.options.files.read(workspace, input, repository) };
77
+ }
78
+ async writeFile(input) {
79
+ const workspace = this.options.requireWorkspace(input.workspaceId);
80
+ return { file: await this.options.files.write(workspace, input) };
81
+ }
82
+ async searchFiles(input) {
83
+ const workspace = this.options.requireWorkspace(input.workspaceId);
84
+ return { files: await this.options.files.search(workspace, input) };
85
+ }
86
+ async mutateFile(input) {
87
+ const workspace = this.options.requireWorkspace(input.workspaceId);
88
+ return { file: await this.options.files.mutate(workspace, input) };
89
+ }
90
+ async searchContent(input) {
91
+ const workspace = this.options.requireWorkspace(input.workspaceId);
92
+ return { search: await this.contentSearch.search(workspace, input) };
93
+ }
94
+ async preflight(input) {
95
+ return {
96
+ uploads: await this.options.uploads.preflight(this.options.requireWorkspace(input.workspaceId), input)
97
+ };
98
+ }
99
+ async createUpload(input) {
100
+ return {
101
+ upload: await this.options.uploads.create(this.options.requireWorkspace(input.workspaceId), input)
102
+ };
103
+ }
104
+ async writeUpload(input) {
105
+ return { upload: await this.options.uploads.write(input) };
106
+ }
107
+ async completeUpload(input) {
108
+ return { upload: await this.options.uploads.complete(input.uploadId) };
109
+ }
110
+ async cancelUpload(input) {
111
+ await this.options.uploads.cancel(input.uploadId);
112
+ return { cancelled: true };
113
+ }
114
+ async currentChanges(input) {
115
+ return this.options.changes.current(this.options.requireWorkspace(input.workspaceId));
116
+ }
117
+ async readFileContent(input) {
118
+ if (typeof input.workspaceId !== 'string')
119
+ throw new Error('WORKSPACE_NOT_FOUND');
120
+ const workspace = this.options.requireWorkspace(input.workspaceId);
121
+ const repository = await this.fileRepository(workspace, input);
122
+ return {
123
+ file: await this.options.files.readContent(workspace, input, repository)
124
+ };
125
+ }
126
+ async changeDiff(input) {
127
+ if (typeof input.workspaceId !== 'string' ||
128
+ typeof input.path !== 'string' ||
129
+ (input.repositoryPath !== undefined && typeof input.repositoryPath !== 'string') ||
130
+ (input.worktreePath !== undefined && typeof input.worktreePath !== 'string'))
131
+ throw new Error('GIT_DIFF_INVALID');
132
+ const workspace = this.gitWorkspace(input.workspaceId);
133
+ const repository = await resolveGitRepositoryTarget(workspace.path, input.repositoryPath ?? '', input.worktreePath);
134
+ return { diff: await readCurrentChangeDiff(repository, input.path) };
135
+ }
136
+ async restoreChange(input) {
137
+ if (typeof input.workspaceId !== 'string' ||
138
+ typeof input.path !== 'string' ||
139
+ (input.repositoryPath !== undefined && typeof input.repositoryPath !== 'string') ||
140
+ (input.worktreePath !== undefined && typeof input.worktreePath !== 'string') ||
141
+ (input.state !== 'STAGED' && input.state !== 'UNSTAGED' && input.state !== 'UNTRACKED'))
142
+ throw new Error('GIT_CHANGE_RESTORE_UNAVAILABLE');
143
+ const workspace = this.gitWorkspace(input.workspaceId);
144
+ const repository = await resolveGitRepositoryTarget(workspace.path, input.repositoryPath ?? '', input.worktreePath);
145
+ await restoreCurrentChange(repository, input.path, input.state);
146
+ this.options.invalidate(workspace.id);
147
+ return { restored: true };
148
+ }
149
+ async gitRepository(input) {
150
+ if (typeof input.workspaceId !== 'string' ||
151
+ (input.repositoryPath !== undefined && typeof input.repositoryPath !== 'string'))
152
+ throw new Error('GIT_REPOSITORY_INVALID');
153
+ const workspace = this.gitWorkspace(input.workspaceId);
154
+ return resolveGitRepository(workspace.path, input.repositoryPath ?? '');
155
+ }
156
+ async fileRepository(workspace, input) {
157
+ if (input.worktreePath === undefined)
158
+ return workspace.path;
159
+ if (typeof input.worktreePath !== 'string')
160
+ throw new Error('GIT_REPOSITORY_INVALID');
161
+ return resolveGitRepositoryTarget(workspace.path, '', input.worktreePath);
162
+ }
163
+ refs(input) {
164
+ if (input.refs === undefined)
165
+ return undefined;
166
+ if (!Array.isArray(input.refs) ||
167
+ input.refs.length > 128 ||
168
+ input.refs.some((ref) => typeof ref !== 'string'))
169
+ throw new Error('GIT_HISTORY_REF_INVALID');
170
+ return input.refs;
171
+ }
172
+ async gitRefs(input) {
173
+ return { refs: await listGitHistoryRefs(await this.gitRepository(input)) };
174
+ }
175
+ async gitHistory(input) {
176
+ const refs = this.refs(input);
177
+ if (input.cursor !== undefined && typeof input.cursor !== 'string')
178
+ throw new Error('GIT_HISTORY_CURSOR_INVALID');
179
+ if (input.limit !== undefined &&
180
+ (typeof input.limit !== 'number' ||
181
+ !Number.isInteger(input.limit) ||
182
+ input.limit < 1 ||
183
+ input.limit > 100))
184
+ throw new Error('GIT_HISTORY_LIMIT_INVALID');
185
+ return readGitHistory(await this.gitRepository(input), {
186
+ ...(refs === undefined ? {} : { refs }),
187
+ ...(typeof input.cursor === 'string' ? { cursor: input.cursor } : {}),
188
+ ...(typeof input.limit === 'number' ? { limit: input.limit } : {})
189
+ });
190
+ }
191
+ async gitCommitFiles(input) {
192
+ if (typeof input.commit !== 'string')
193
+ throw new Error('GIT_HISTORY_COMMIT_INVALID');
194
+ return {
195
+ files: await readGitHistoryFiles(await this.gitRepository(input), input.commit, this.refs(input))
196
+ };
197
+ }
198
+ async gitCommitFileDiff(input) {
199
+ if (typeof input.commit !== 'string' ||
200
+ typeof input.path !== 'string' ||
201
+ (input.previousPath !== undefined && typeof input.previousPath !== 'string'))
202
+ throw new Error('GIT_DIFF_INVALID');
203
+ return {
204
+ diff: await readGitHistoryFileDiff(await this.gitRepository(input), input.commit, input.path, this.refs(input), input.previousPath)
205
+ };
206
+ }
207
+ async gitCommitFileContent(input) {
208
+ if (typeof input.commit !== 'string' ||
209
+ typeof input.path !== 'string' ||
210
+ !Number.isSafeInteger(input.offset) ||
211
+ input.offset < 0 ||
212
+ !Number.isSafeInteger(input.limit) ||
213
+ input.limit < 1 ||
214
+ input.limit > 20 * 1024 * 1024)
215
+ throw new Error('FILE_RANGE_INVALID');
216
+ return {
217
+ file: await readGitHistoryFileContentRange(await this.gitRepository(input), input.commit, input.path, input.offset, input.limit, this.refs(input))
218
+ };
219
+ }
220
+ async diff(input) {
221
+ if (typeof input.workspaceId !== 'string' ||
222
+ typeof input.fromRef !== 'string' ||
223
+ typeof input.toRef !== 'string')
224
+ throw new Error('GIT_DIFF_INVALID');
225
+ const workspace = this.gitWorkspace(input.workspaceId);
226
+ return { diff: await readRestrictedDiff(workspace.path, input.fromRef, input.toRef) };
227
+ }
228
+ gitWorkspace(workspaceId) {
229
+ const workspace = this.options.requireWorkspace(workspaceId);
230
+ if (workspace.kind !== 'GIT_WORKSPACE')
231
+ throw new Error('WORKSPACE_NOT_GIT');
232
+ return workspace;
233
+ }
234
+ }
235
+ function record(value) {
236
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
237
+ ? value
238
+ : {};
239
+ }
package/dist/service.js CHANGED
@@ -1,2 +1,91 @@
1
- /* mar-release-protected */
2
- const _0x49927c=_0x9e14;(function(_0x338d02,_0xbc9836){const _0x270cc9=_0x9e14,_0x4c8ea5=_0x338d02();while(!![]){try{const _0x3e4dfe=parseInt(_0x270cc9(0x1ad))/(-0xffa+0x2141+-0x5c2*0x3)*(-parseInt(_0x270cc9(0x1a0))/(0x1e80+-0x5*0x6df+0x3dd))+parseInt(_0x270cc9(0x1b7))/(-0x865*-0x2+0x161*-0x4+-0x3*0x3c1)+parseInt(_0x270cc9(0x1ae))/(0xaed*0x2+-0x170d+0x137*0x1)*(parseInt(_0x270cc9(0x1af))/(-0x854*0x4+-0xc2d*-0x3+-0x332*0x1))+parseInt(_0x270cc9(0x1b4))/(-0x4f*-0x65+-0x232*-0x6+0x2c51*-0x1)+parseInt(_0x270cc9(0x19d))/(-0x887+-0x7*0x27b+0x19eb)+-parseInt(_0x270cc9(0x1ab))/(-0x322*-0xb+-0x6da*0x1+-0x1b94)*(parseInt(_0x270cc9(0x1a8))/(0xc2d+-0x211b+0x3*0x6fd))+-parseInt(_0x270cc9(0x1a1))/(0x753*-0x5+0x475*0x7+0x576);if(_0x3e4dfe===_0xbc9836)break;else _0x4c8ea5['push'](_0x4c8ea5['shift']());}catch(_0x5b2925){_0x4c8ea5['push'](_0x4c8ea5['shift']());}}}(_0x5424,-0x4f377*0x2+0x11*-0x8c33+-0x188651*-0x1));import{chmod,mkdir,rm,writeFile}from'node:fs/promises';import{dirname,resolve}from'node:path';export function systemdUnit(_0x468222,_0x48dede,_0x14a37d,_0x4c85e2=[]){const _0xf57327=_0x9e14,_0x7f4f9b=[escapeSystemd(_0x468222),..._0x14a37d===undefined?[]:[escapeSystemd(_0x14a37d)]][_0xf57327(0x19f)]('\x20'),_0x24834b=_0x4c85e2[_0xf57327(0x1a6)](_0x137484=>escapeSystemd(resolve(_0x137484)))[_0xf57327(0x19f)]('\x20');return _0xf57327(0x19e)+(_0x24834b[_0xf57327(0x19c)]===0x5*-0x1f9+0x1*0x1795+-0xdb8*0x1?'':_0xf57327(0x1a9)+_0x24834b+'\x0a')+_0xf57327(0x1ac)+_0x7f4f9b+_0xf57327(0x1b6)+escapeSystemd(_0x48dede)+_0xf57327(0x1a4);}export function windowsServiceDefinition(_0x251074,_0x497358,_0x22a237){const _0x125575=_0x9e14;return JSON[_0x125575(0x1b2)]({'serviceName':_0x125575(0x1b0),'displayName':_0x125575(0x1b1),'binaryPath':'\x22'+_0x251074+'\x22'+(_0x22a237===undefined?'':'\x20\x22'+_0x22a237+'\x22')+_0x125575(0x1a5)+_0x497358+'\x22','startType':_0x125575(0x1b3),'account':_0x125575(0x1a3)},undefined,-0x23cf+0x2b*0x5b+-0xdb*-0x18);}export async function writeServiceDefinition(_0x2c74c8,_0x403d2a,_0xd987f5,_0x524630=process[_0x49927c(0x1b5)],_0x556354,_0x3ff3c5=[]){const _0x2d3bb0=_0x49927c,_0x237ac8=_0x524630===_0x2d3bb0(0x1a2)?systemdUnit(_0x403d2a,_0xd987f5,_0x556354,_0x3ff3c5):_0x524630===_0x2d3bb0(0x1a7)?windowsServiceDefinition(_0x403d2a,_0xd987f5,_0x556354):((()=>{const _0x516f40=_0x2d3bb0;throw new Error(_0x516f40(0x1aa));})());await mkdir(dirname(_0x2c74c8),{'recursive':!![],'mode':0x1ed}),await writeFile(_0x2c74c8,_0x237ac8,{'mode':0x1a4});if(_0x524630!==_0x2d3bb0(0x1a7))await chmod(_0x2c74c8,-0x240a+-0x667+0x2c15);}function _0x9e14(_0x1bec06,_0x21b761){_0x1bec06=_0x1bec06-(-0x345*0xa+-0x3fd*0x3+0x17*0x203);const _0x41ddf9=_0x5424();let _0x5da1a1=_0x41ddf9[_0x1bec06];if(_0x9e14['fWGehu']===undefined){var _0x7154bc=function(_0x35b403){const _0x581d92='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x53a253='',_0x4a98bb='';for(let _0x3398f9=0x1be6+0x1*0x170+0x5de*-0x5,_0x8d9eb0,_0x484c36,_0x11b55c=0xec0+0x1444+-0xbac*0x3;_0x484c36=_0x35b403['charAt'](_0x11b55c++);~_0x484c36&&(_0x8d9eb0=_0x3398f9%(-0x52*-0xc+0x12ed+-0x16c1)?_0x8d9eb0*(-0x1435+0x7f*-0x12+0x1d63)+_0x484c36:_0x484c36,_0x3398f9++%(0x17a0+-0x208e+0x8f2))?_0x53a253+=String['fromCharCode'](0x151c+-0x559*0x2+-0x96b&_0x8d9eb0>>(-(0x1ee3+0xd53*0x1+-0x2c34)*_0x3398f9&0x44*-0x26+-0x1732*-0x1+0x24*-0x5d)):-0x5*0x6f2+0x1970+-0x3a*-0x29){_0x484c36=_0x581d92['indexOf'](_0x484c36);}for(let _0x67871b=0x1594*-0x1+0x142b+0x13*0x13,_0x28cf9e=_0x53a253['length'];_0x67871b<_0x28cf9e;_0x67871b++){_0x4a98bb+='%'+('00'+_0x53a253['charCodeAt'](_0x67871b)['toString'](-0x61e+-0x24bc+-0x2aea*-0x1))['slice'](-(-0x93f+0x8a3*-0x1+0x5*0x394));}return decodeURIComponent(_0x4a98bb);};_0x9e14['iTKdsh']=_0x7154bc,_0x9e14['ALAAHZ']={},_0x9e14['fWGehu']=!![];}const _0x1d3c5e=_0x41ddf9[0x268+-0x240a+-0xcd*-0x2a];_0x9e14['UDwBDY']!==_0x1d3c5e&&(_0x9e14['ALAAHZ']={},_0x9e14['UDwBDY']=_0x1d3c5e);const _0x267a34=_0x9e14['ALAAHZ'][_0x1bec06];return _0x267a34===undefined?(_0x5da1a1=_0x9e14['iTKdsh'](_0x5da1a1),_0x9e14['ALAAHZ'][_0x1bec06]=_0x5da1a1):_0x5da1a1=_0x267a34,_0x5da1a1;}export async function removeServiceDefinition(_0x49dba0){await rm(resolve(_0x49dba0),{'force':!![]});}function _0x5424(){const _0x452211=['BgLUDxG','tg9JywXtzxj2AwnL','cLjLC3rHCNq9B24TzMfPBhvYzqOkw0LUC3rHBgXDcLDHBNrLzej5pw11BhrPlxvZzxiUDgfYz2v0cG','ihn1CgvYDMLZzsaTlwnVBMzPzYaI','BwfW','D2LUmZi','mZCZnwruvK5PDG','uMvHzfDYAxrLugf0Ahm9','tK9erv9qtefurK9stv9vtLnvufbpuLrfra','mte5otj3uKLts1a','rxHLy1n0yxj0pq','mtiXtKvzCezo','oeLcy3f6uq','odC0mdKWA3bZsLPK','txLbz2vUDfjVyw1oB2rL','txLbz2vUDfjVyw0GtM9Kzq','C3rYAw5NAwz5','yxv0BW','mJe5mJaYmNb1rfDutW','CgXHDgzVCM0','ihn1CgvYDMLZzsaTlwnVBMzPzYa','mti0mdmZnxr1Befzra','BgvUz3rO','nde5ndi4oenLtMPKDW','w1vUAxrDcKrLC2nYAxb0Aw9Upu15qwDLBNrsB2fTie5Vzgukqwz0zxi9BMv0D29YAY1VBMXPBMuUDgfYz2v0cGPBu2vYDMLJzv0kvhLWzt1ZAw1WBgukvxnLCJ1TyxiTBM9KzqPoB05LD1bYAxzPBgvNzxm9Dhj1zqPqCML2yxrLvg1WpxrYDwukuhjVDgvJDfn5C3rLBt1ZDhjPy3qk','AM9PBG','mJK3nhzIzM9dyq','ntC3ndmWmfD5DMzyCq'];_0x5424=function(){return _0x452211;};return _0x5424();}function escapeSystemd(_0x5e3a89){const _0x165abe=_0x49927c;return JSON[_0x165abe(0x1b2)](_0x5e3a89);}
1
+ import { chmod, mkdir, rm, writeFile } from 'node:fs/promises';
2
+ import { dirname, resolve } from 'node:path';
3
+ export function systemdUnit(executable, configPath, entrypoint, writablePaths = []) {
4
+ const command = [
5
+ escapeSystemd(executable),
6
+ ...(entrypoint === undefined ? [] : [escapeSystemd(entrypoint)])
7
+ ].join(' ');
8
+ const readWritePaths = writablePaths.map((path) => escapeSystemd(resolve(path))).join(' ');
9
+ return `[Unit]\nDescription=MyAgentRoam Node\nAfter=network-online.target\n\n[Service]\nType=simple\nUser=mar-node\nNoNewPrivileges=true\nPrivateTmp=true\nProtectSystem=strict\n${readWritePaths.length === 0 ? '' : `ReadWritePaths=${readWritePaths}\n`}ExecStart=${command} supervise --config ${escapeSystemd(configPath)}\nRestart=on-failure\n\n[Install]\nWantedBy=multi-user.target\n`;
10
+ }
11
+ export function windowsServiceDefinition(executable, configPath, entrypoint) {
12
+ return JSON.stringify({
13
+ serviceName: 'MyAgentRoamNode',
14
+ displayName: 'MyAgentRoam Node',
15
+ binaryPath: `"${executable}"${entrypoint === undefined ? '' : ` "${entrypoint}"`} supervise --config "${configPath}"`,
16
+ startType: 'auto',
17
+ account: 'LocalService'
18
+ }, undefined, 2);
19
+ }
20
+ export function launchdServiceDefinition(executable, configPath, entrypoint) {
21
+ const argumentsList = [
22
+ executable,
23
+ ...(entrypoint === undefined ? [] : [entrypoint]),
24
+ 'supervise',
25
+ '--config',
26
+ configPath
27
+ ]
28
+ .map((argument) => ` <string>${escapeXml(argument)}</string>`)
29
+ .join('\n');
30
+ return `<?xml version="1.0" encoding="UTF-8"?>
31
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
32
+ <plist version="1.0">
33
+ <dict>
34
+ <key>Label</key>
35
+ <string>com.myagentroam.node</string>
36
+ <key>ProgramArguments</key>
37
+ <array>
38
+ ${argumentsList}
39
+ </array>
40
+ <key>EnvironmentVariables</key>
41
+ <dict>
42
+ <key>PATH</key>
43
+ <string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
44
+ </dict>
45
+ <key>RunAtLoad</key>
46
+ <true/>
47
+ <key>KeepAlive</key>
48
+ <true/>
49
+ </dict>
50
+ </plist>
51
+ `;
52
+ }
53
+ export async function writeServiceDefinition(outputPath, executable, configPath, platform = process.platform, entrypoint, writablePaths = []) {
54
+ const contents = platform === 'linux'
55
+ ? systemdUnit(executable, configPath, entrypoint, writablePaths)
56
+ : platform === 'win32'
57
+ ? windowsServiceDefinition(executable, configPath, entrypoint)
58
+ : platform === 'darwin'
59
+ ? launchdServiceDefinition(executable, configPath, entrypoint)
60
+ : (() => {
61
+ throw new Error('NODE_PLATFORM_UNSUPPORTED');
62
+ })();
63
+ await mkdir(dirname(outputPath), { recursive: true, mode: 0o755 });
64
+ await writeFile(outputPath, contents, { mode: 0o644 });
65
+ if (platform !== 'win32')
66
+ await chmod(outputPath, 0o644);
67
+ }
68
+ export async function removeServiceDefinition(outputPath) {
69
+ await rm(resolve(outputPath), { force: true });
70
+ }
71
+ function escapeSystemd(value) {
72
+ return JSON.stringify(value);
73
+ }
74
+ function escapeXml(value) {
75
+ return value.replace(/[<>&'"]/gu, (character) => {
76
+ switch (character) {
77
+ case '<':
78
+ return '&lt;';
79
+ case '>':
80
+ return '&gt;';
81
+ case '&':
82
+ return '&amp;';
83
+ case "'":
84
+ return '&apos;';
85
+ case '"':
86
+ return '&quot;';
87
+ default:
88
+ return character;
89
+ }
90
+ });
91
+ }
package/dist/storage.js CHANGED
@@ -1,2 +1,32 @@
1
- /* mar-release-protected */
2
- const _0x4c7ee7=_0x4cbe;function _0x4cbe(_0x5e0aaa,_0x89cfcf){_0x5e0aaa=_0x5e0aaa-(-0x2068+-0x16e4*-0x1+-0x1*-0xb03);const _0x256245=_0x1305();let _0x298727=_0x256245[_0x5e0aaa];if(_0x4cbe['SOICPs']===undefined){var _0x2104e8=function(_0x52aa40){const _0x289eec='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xfcfde='',_0x7d0b8b='';for(let _0x1e2f71=0x15a*-0x3+-0xba3*0x1+0xfb1,_0x1df2fb,_0x51766f,_0x8360a=0x1a53+-0x1f03*0x1+0x4b0;_0x51766f=_0x52aa40['charAt'](_0x8360a++);~_0x51766f&&(_0x1df2fb=_0x1e2f71%(-0x14*-0x1b+-0x3f+-0x1d9)?_0x1df2fb*(-0x26de+0x1*-0x795+-0x31d*-0xf)+_0x51766f:_0x51766f,_0x1e2f71++%(0x1db+-0x1*0x1846+0x166f))?_0xfcfde+=String['fromCharCode'](-0x5*0x42e+0x6*-0x61d+0x5*0xbb7&_0x1df2fb>>(-(0x19*-0x55+-0x2f*0x47+0x1558)*_0x1e2f71&0x741+-0xd*-0x26f+-0x136f*0x2)):-0x15e+-0x21*0x7b+0x1*0x1139){_0x51766f=_0x289eec['indexOf'](_0x51766f);}for(let _0x48dffa=-0x157c+-0xf46+0x24c2,_0x5f1b77=_0xfcfde['length'];_0x48dffa<_0x5f1b77;_0x48dffa++){_0x7d0b8b+='%'+('00'+_0xfcfde['charCodeAt'](_0x48dffa)['toString'](0x2bb+0x1c8d+-0x1f38))['slice'](-(0x103f+0x683*-0x1+-0x4dd*0x2));}return decodeURIComponent(_0x7d0b8b);};_0x4cbe['cizdMT']=_0x2104e8,_0x4cbe['XXyOoK']={},_0x4cbe['SOICPs']=!![];}const _0x16baee=_0x256245[-0xcbe+0x756+0x568];_0x4cbe['RcmrKx']!==_0x16baee&&(_0x4cbe['XXyOoK']={},_0x4cbe['RcmrKx']=_0x16baee);const _0x156dd2=_0x4cbe['XXyOoK'][_0x5e0aaa];return _0x156dd2===undefined?(_0x298727=_0x4cbe['cizdMT'](_0x298727),_0x4cbe['XXyOoK'][_0x5e0aaa]=_0x298727):_0x298727=_0x156dd2,_0x298727;}(function(_0x4f9912,_0x26326d){const _0x12bcfb=_0x4cbe,_0xa84621=_0x4f9912();while(!![]){try{const _0x2c18c0=-parseInt(_0x12bcfb(0x190))/(-0x1aa9+-0x22c*-0x1+0x16*0x11d)*(-parseInt(_0x12bcfb(0x181))/(-0x1f88+-0x86*0x7+0x2334))+-parseInt(_0x12bcfb(0x193))/(-0xdff+0x57d+0x885)*(-parseInt(_0x12bcfb(0x18e))/(0x17d1*-0x1+0xdfe+0x9d7))+-parseInt(_0x12bcfb(0x186))/(0x1882+-0xfce+0x2e5*-0x3)*(-parseInt(_0x12bcfb(0x187))/(-0x62e+0x2129+-0x1*0x1af5))+-parseInt(_0x12bcfb(0x182))/(0xe*0x81+-0x13dc+0xcd5*0x1)+-parseInt(_0x12bcfb(0x189))/(-0x31*-0xd+-0x5*-0xa+-0x2a7)+parseInt(_0x12bcfb(0x194))/(0x51e*0x4+-0x16c2+-0x77*-0x5)+-parseInt(_0x12bcfb(0x184))/(0x1430+-0x2be+-0x1168)*(-parseInt(_0x12bcfb(0x18a))/(-0x184b+0xb1*-0x2b+0x3611));if(_0x2c18c0===_0x26326d)break;else _0xa84621['push'](_0xa84621['shift']());}catch(_0x18e42d){_0xa84621['push'](_0xa84621['shift']());}}}(_0x1305,0xb9720*-0x1+-0x2feb*-0x23+-0x458f*-0x29));import{stat,statfs}from'node:fs/promises';import{dirname,resolve}from'node:path';const networkTypes=new Set([0x9de8+0x16e6+-0x4b65*0x1,-0x4f4e+0xe9a+-0x1*-0x922f,0x13276b781+-0xebafcbdd+0xb88c619e,0x1*-0x62b55c69+-0x15bea1b*0x9d+-0x12240a*-0x1f39]);export function isUnsupportedSqlitePath(_0x2eb730,_0x405375=process[_0x4c7ee7(0x191)]){const _0x136f2b=_0x4c7ee7;return _0x405375===_0x136f2b(0x18b)&&/^(?:\\\\|\/\/)/[_0x136f2b(0x183)](_0x2eb730);}function _0x1305(){const _0x1e9555=['mJLgtgXWBMi','CgXHDgzVCM0','u1fmsvrfx0rbvefFreLsrunut1jzx0LovKfmsuq','mZa2s3zRwLvz','mtmZnJq0nLLtDNzetG','y29Kzq','DhLWzq','ndC0mNPcvhLREq','mtqWodaYowjtyu5Azq','DgvZDa','ntmWEfzXAMzJ','u1fmsvrfx05fvfDpuKTFrKLmrvnzu1rftv9vtLnvufbpuLrfra','mtaXnZvAzxv3C20','nMXuD2fLCq','BgLUDxG','mZi5mZeWneDrDfbPDG','mtaWnJm5uffAsxfp','D2LUmZi','AxneAxjLy3rVCNK','AgfZ','mtiWotzJCKvNDgO','ru5pru5u'];_0x1305=function(){return _0x1e9555;};return _0x1305();}export async function assertLocalSqlitePath(_0x24ca2e){const _0x365f67=_0x4c7ee7;if(isUnsupportedSqlitePath(_0x24ca2e))throw new Error(_0x365f67(0x185));if(process[_0x365f67(0x191)]!==_0x365f67(0x188))return;const _0x524b28=Number((await statfs(await existingParent(dirname(_0x24ca2e))))[_0x365f67(0x180)])>>>-0x5de+0x1d3b+-0x175d;if(networkTypes[_0x365f67(0x18d)](_0x524b28))throw new Error(_0x365f67(0x185));}async function existingParent(_0x3dd4a6){const _0x4354a8=_0x4c7ee7;let _0x591ee4=resolve(_0x3dd4a6);for(;;){try{if((await stat(_0x591ee4))[_0x4354a8(0x18c)]())return _0x591ee4;}catch(_0x258e5b){if(!(_0x258e5b instanceof Error)||!(_0x4354a8(0x17f)in _0x258e5b)||_0x258e5b[_0x4354a8(0x17f)]!==_0x4354a8(0x18f))throw _0x258e5b;}const _0x402bfa=dirname(_0x591ee4);if(_0x402bfa===_0x591ee4)throw new Error(_0x4354a8(0x192));_0x591ee4=_0x402bfa;}}
1
+ import { stat, statfs } from 'node:fs/promises';
2
+ import { dirname, resolve } from 'node:path';
3
+ const networkTypes = new Set([0x6969, 0x517b, 0xff534d42, 0xfe534d42]);
4
+ export function isUnsupportedSqlitePath(path, platform = process.platform) {
5
+ return platform === 'win32' && /^(?:\\\\|\/\/)/.test(path);
6
+ }
7
+ export async function assertLocalSqlitePath(path) {
8
+ if (isUnsupportedSqlitePath(path))
9
+ throw new Error('SQLITE_NETWORK_FILESYSTEM_UNSUPPORTED');
10
+ if (process.platform !== 'linux')
11
+ return;
12
+ const type = Number((await statfs(await existingParent(dirname(path)))).type) >>> 0;
13
+ if (networkTypes.has(type))
14
+ throw new Error('SQLITE_NETWORK_FILESYSTEM_UNSUPPORTED');
15
+ }
16
+ async function existingParent(path) {
17
+ let current = resolve(path);
18
+ for (;;) {
19
+ try {
20
+ if ((await stat(current)).isDirectory())
21
+ return current;
22
+ }
23
+ catch (error) {
24
+ if (!(error instanceof Error) || !('code' in error) || error.code !== 'ENOENT')
25
+ throw error;
26
+ }
27
+ const parent = dirname(current);
28
+ if (parent === current)
29
+ throw new Error('SQLITE_DATA_DIRECTORY_INVALID');
30
+ current = parent;
31
+ }
32
+ }
@@ -1,2 +1,136 @@
1
- /* mar-release-protected */
2
- (function(_0x18f5c7,_0x59ccbc){const _0x3e4279=_0x4f65,_0x14ed97=_0x18f5c7();while(!![]){try{const _0xdfc6fb=-parseInt(_0x3e4279(0x11e))/(0x1941+-0x13*-0xb+-0x1a11*0x1)+-parseInt(_0x3e4279(0x12d))/(0x2515+0x16f1+-0x3c04)+-parseInt(_0x3e4279(0x109))/(-0x12c9+-0x1f98+0x3264)*(-parseInt(_0x3e4279(0x123))/(-0x20bb+0x31c+0x34b*0x9))+parseInt(_0x3e4279(0x13e))/(-0x1bd5+-0x13*0xb9+0x2995)*(parseInt(_0x3e4279(0x10c))/(-0x106*0x4+0xb67+-0x5*0x175))+-parseInt(_0x3e4279(0x113))/(0xb1f+0x1d7*0x11+0x2a5f*-0x1)+parseInt(_0x3e4279(0x138))/(-0x21e5*0x1+0x2468+-0x27b)*(-parseInt(_0x3e4279(0x128))/(-0xe76+0x867+0x618))+parseInt(_0x3e4279(0x137))/(-0x1*-0x2124+-0xee3*-0x1+0x27*-0x13b);if(_0xdfc6fb===_0x59ccbc)break;else _0x14ed97['push'](_0x14ed97['shift']());}catch(_0x351298){_0x14ed97['push'](_0x14ed97['shift']());}}}(_0x4e19,0x1*-0x1f7d0+-0x10c*-0x2ea+-0x3c01*-0x3));import{spawn}from'node:child_process';import{access,mkdir,readFile,rename,rm,writeFile}from'node:fs/promises';function _0x4e19(){const _0xc9cf41=['BM9Kzq','lNrTCa','ls1WCMvMAxG','CMvIDwLSza','DxrMoa','C2LNBMfSBgvK','ls1UBY1HDwrPDa','qg15ywDLBNrYB2fTl25Vzgva','C2nOzw1HvMvYC2LVBG','mtmZndy1q3bXCvnI','A2LSBa','DgvZDa','Aw5OzxjPDa','ls1JB25MAwC','mZiWzgvVz2PI','BM9Kzs1Hy3rPDMuTzw50CNLWB2LUDa','yxjNCW','BwfPBI5QCW','ls1UBY1MDw5K','mtqZmZD1DfLrtw8','B2zM','DgfYz2v0vMvYC2LVBG','Aw5ZDgfSBa','qg15ywDLBNrYB2fT','nty4mJHNB3Llthe','ls1Pz25VCMuTC2nYAxb0CW','C3rYAw5NAwz5','zgLZDa','u1vdq0vfreve','y29Kzq','u0Lhsu5u','CNvU','tK9erv9vueDsqurfx0Lou1rbteXFsu5urvjsvvburuq','zxjYB3i','mZG1nJK3mefhB2HSDW','mte1mNbUCwvlrW','CgfYC2u','CgLK','zxHLy1bHDgG','C3rYAw5N','BM93','nwzkDxrzza','BM9Kzs12zxjZAw9UCW','rKfjteve','tK9erv9vueDsqurfx0Lou1rbteXFrKfjteve','BM9Kzs5ZDxbLCNzPC29YlMnOAwXKlwv4AxrLza','BM9Kzv9TB2r1BgvZ','y29TBwfUza','tK9erv9vueDsqurfx1jfuvvfu1rFsu5wquXjra','nJq0n0nNEKLrAG','BM9Kzs1WDhK','DhjPBq','mti0ote0zKjjwNHQ','u0Lhvevstq','AwDUB3jL','tK9erv9vueDsqurfx05bveLwrv9srujvsuXex0zbsuXfra','DxbNCMfKzs1Yzxn1BhqUANnVBG','y2XVC2u','BNbT','ndKWoteWBhzOC3nK','B25Jzq'];_0x4e19=function(){return _0xc9cf41;};return _0x4e19();}import{dirname,resolve}from'node:path';import{loadNodeConfig,nodeDatabasePath}from'./config.js';import{nodeLog,platformCliInvocation}from'./operational.js';import{nodeUpgradeRequestPath}from'./service/node-upgrade-coordinator.js';import{safeErrorCode}from'./util/safe-error.js';const UPGRADE_EXIT_CODE=0x72b*0x4+0x86*0x35+-0x12b5*0x3,STABLE_VERSION=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/u;export async function superviseNode(_0x532845,_0xd475d9){const _0x3d0541=_0x4f65,_0x1a15a0=await loadNodeConfig(_0x532845),_0x4c8e6c=dirname(nodeDatabasePath(_0x1a15a0,_0x532845)),_0x4cae71=resolve(_0x4c8e6c,_0x3d0541(0x124));let _0x109a41=await readActiveEntrypoint(_0x4cae71,_0xd475d9);for(;;){const _0x4ad3a1=await runProcess(process[_0x3d0541(0x13b)],[_0x109a41,_0x3d0541(0x134),_0x3d0541(0x122),_0x532845],!![],{...process.env,'MAR_NODE_SUPERVISED':'1'});if(_0x4ad3a1[_0x3d0541(0x11a)])return;const _0x589238=_0x4ad3a1[_0x3d0541(0x132)];if(_0x589238!==UPGRADE_EXIT_CODE){if(_0x589238===0x1192+0x1e95+0x7*-0x6e1)return;nodeLog(_0x3d0541(0x142),{'code':_0x589238}),await delay(0xd12+0x16ce+-0x42*0x7c);continue;}const _0x2fd040=nodeUpgradeRequestPath(nodeDatabasePath(_0x1a15a0,_0x532845));let _0x1bf8a9=![];try{const _0x4d2b50=JSON[_0x3d0541(0x139)](await readFile(_0x2fd040,_0x3d0541(0x119))),_0x1b9c4d=_0x4d2b50[_0x3d0541(0x12a)];if(_0x4d2b50[_0x3d0541(0x11d)]!==-0x1c22+0x773*-0x1+0x38f*0xa||typeof _0x1b9c4d!==_0x3d0541(0x13c)||!STABLE_VERSION[_0x3d0541(0x120)](_0x1b9c4d))throw new Error(_0x3d0541(0x108));const _0x518f4b=resolve(_0x4c8e6c,_0x3d0541(0x13f),_0x1b9c4d);await rm(_0x518f4b,{'recursive':!![],'force':!![]}),await mkdir(_0x518f4b,{'recursive':!![],'mode':0x1c0});const _0x10e7b3=platformCliInvocation(_0x3d0541(0x112),[_0x3d0541(0x12b),_0x3d0541(0x117),_0x518f4b,_0x3d0541(0x12e),_0x3d0541(0x11b),_0x3d0541(0x127),_0x3d0541(0x11c)+_0x1b9c4d]),_0x4fad21=await runProcess(_0x10e7b3[_0x3d0541(0x144)],_0x10e7b3[_0x3d0541(0x125)],![]);if(_0x4fad21[_0x3d0541(0x11a)]){_0x1bf8a9=!![];throw new Error(_0x3d0541(0x135));}if(_0x4fad21[_0x3d0541(0x132)]!==0x38f*0xa+-0x69*-0x5e+-0x4a24)throw new Error(_0x3d0541(0x141));const _0x28e985=platformCliInvocation(_0x3d0541(0x112),[_0x3d0541(0x118),_0x3d0541(0x117),_0x518f4b,_0x3d0541(0x10a)]),_0x56fed3=await runProcess(_0x28e985[_0x3d0541(0x144)],_0x28e985[_0x3d0541(0x125)],![]);if(_0x56fed3[_0x3d0541(0x11a)]){_0x1bf8a9=!![];throw new Error(_0x3d0541(0x135));}if(_0x56fed3[_0x3d0541(0x132)]!==-0x1791+0x1ab4+-0x323)throw new Error(_0x3d0541(0x10f));const _0x1763be=resolve(_0x518f4b,_0x3d0541(0x143),_0x3d0541(0x12c),_0x3d0541(0x115),_0x3d0541(0x130),_0x3d0541(0x126));await access(_0x1763be),await writeAtomic(_0x4cae71,_0x1763be+'\x0a'),await writeResult(_0x4c8e6c,{'state':_0x3d0541(0x131),'targetVersion':_0x1b9c4d,'updatedAt':Date[_0x3d0541(0x13d)]()}),await rm(_0x2fd040,{'force':!![]}),_0x109a41=_0x1763be;}catch(_0x1533e8){await writeResult(_0x4c8e6c,{'state':_0x3d0541(0x140),'errorCode':safeErrorCode(_0x1533e8,_0x3d0541(0x141)),'updatedAt':Date[_0x3d0541(0x13d)]()}),await rm(_0x2fd040,{'force':!![]});}if(_0x1bf8a9)return;}}async function runProcess(_0x56a1a1,_0x335f50,_0x5d77d3,_0x373f08=process.env){return new Promise(_0x14b5ab=>{const _0x5e612f=_0x4f65,_0xb9c08=spawn(_0x56a1a1,_0x335f50,{'windowsHide':!![],'stdio':_0x5d77d3?_0x5e612f(0x121):_0x5e612f(0x10e),'env':_0x373f08});let _0x220ddb=![],_0x17cc49=![];const _0x2071de=_0x409924=>{const _0x2a0bcb=_0x5e612f;_0x17cc49=!![],_0xb9c08[_0x2a0bcb(0x11f)](_0x409924);},_0x44803f=()=>_0x2071de(_0x5e612f(0x133)),_0x14fab6=()=>_0x2071de(_0x5e612f(0x10d)),_0x2026d3=_0xd83709=>{const _0x30f735=_0x5e612f;if(_0x220ddb)return;_0x220ddb=!![],process[_0x30f735(0x129)](_0x30f735(0x133),_0x44803f),process[_0x30f735(0x129)](_0x30f735(0x10d),_0x14fab6),_0x14b5ab({'code':_0xd83709,'signalled':_0x17cc49});};process[_0x5e612f(0x114)](_0x5e612f(0x133),_0x44803f),process[_0x5e612f(0x114)](_0x5e612f(0x10d),_0x14fab6),_0xb9c08[_0x5e612f(0x114)](_0x5e612f(0x136),()=>_0x2026d3(null)),_0xb9c08[_0x5e612f(0x114)](_0x5e612f(0x111),_0x2026d3);});}async function readActiveEntrypoint(_0xa3c027,_0x319191){const _0x3c9800=_0x4f65;try{const _0x5efb2c=(await readFile(_0xa3c027,_0x3c9800(0x119)))[_0x3c9800(0x10b)]();return await access(_0x5efb2c),_0x5efb2c;}catch{return _0x319191;}}async function writeResult(_0x125a14,_0x46d23d){const _0x3dd98a=_0x4f65;await writeAtomic(resolve(_0x125a14,_0x3dd98a(0x110)),JSON[_0x3dd98a(0x12f)](_0x46d23d)+'\x0a');}async function writeAtomic(_0x4d4ded,_0x11b927){const _0x194cf5=_0x4f65;await mkdir(dirname(_0x4d4ded),{'recursive':!![],'mode':0x1c0});const _0x20ffff=_0x4d4ded+'.'+process[_0x194cf5(0x13a)]+_0x194cf5(0x116);await writeFile(_0x20ffff,_0x11b927,{'mode':0x180}),await rename(_0x20ffff,_0x4d4ded);}function _0x4f65(_0x5125a8,_0x1d085f){_0x5125a8=_0x5125a8-(0x47*0x19+0xcfb+-0x12e2*0x1);const _0x14809b=_0x4e19();let _0x29e68f=_0x14809b[_0x5125a8];if(_0x4f65['hHRPMG']===undefined){var _0x52b527=function(_0xf6640){const _0xe492af='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1e4bd5='',_0x31a8d1='';for(let _0x12c111=0x79*-0x3+0x7*0x3b+0x2*-0x19,_0x47a0b1,_0x343249,_0x289766=0x1b41+0x1462*0x1+-0x2fa3;_0x343249=_0xf6640['charAt'](_0x289766++);~_0x343249&&(_0x47a0b1=_0x12c111%(0x3*-0x185+-0xda1*-0x1+-0x90e)?_0x47a0b1*(0x1484+-0x116d+-0x2d7)+_0x343249:_0x343249,_0x12c111++%(0x13d*0xb+0x1a17*0x1+0x13d9*-0x2))?_0x1e4bd5+=String['fromCharCode'](0x2346+-0x13ee+-0x1*0xe59&_0x47a0b1>>(-(-0x15b*0x11+-0x1a48+0xad*0x49)*_0x12c111&0x1*-0x1978+0x163c+-0x6*-0x8b)):-0x4*-0x6f0+-0x1939*0x1+-0x287){_0x343249=_0xe492af['indexOf'](_0x343249);}for(let _0x34e50f=0x2*0xff4+0x305+-0x22ed,_0x3fb311=_0x1e4bd5['length'];_0x34e50f<_0x3fb311;_0x34e50f++){_0x31a8d1+='%'+('00'+_0x1e4bd5['charCodeAt'](_0x34e50f)['toString'](-0xb2c+-0x1393*0x1+0x1ecf))['slice'](-(-0x23c4+0x1c00*-0x1+0x3fc6));}return decodeURIComponent(_0x31a8d1);};_0x4f65['rJUtMl']=_0x52b527,_0x4f65['TpCLht']={},_0x4f65['hHRPMG']=!![];}const _0x33ede4=_0x14809b[0x12f4+0x1844+-0x2b38];_0x4f65['hQckAc']!==_0x33ede4&&(_0x4f65['TpCLht']={},_0x4f65['hQckAc']=_0x33ede4);const _0x216744=_0x4f65['TpCLht'][_0x5125a8];return _0x216744===undefined?(_0x29e68f=_0x4f65['rJUtMl'](_0x29e68f),_0x4f65['TpCLht'][_0x5125a8]=_0x29e68f):_0x29e68f=_0x216744,_0x29e68f;}function delay(_0x1f0af4){return new Promise(_0x5125a8=>setTimeout(_0x5125a8,_0x1f0af4));}
1
+ import { spawn } from 'node:child_process';
2
+ import { access, mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
3
+ import { dirname, resolve } from 'node:path';
4
+ import { loadNodeConfig, nodeDatabasePath } from './config.js';
5
+ import { nodeLog, platformCliInvocation } from './operational.js';
6
+ import { nodeUpgradeRequestPath } from './service/node-upgrade-coordinator.js';
7
+ import { safeErrorCode } from './util/safe-error.js';
8
+ const UPGRADE_EXIT_CODE = 75;
9
+ const STABLE_VERSION = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/u;
10
+ export async function superviseNode(configPath, bootstrapEntrypoint) {
11
+ const config = await loadNodeConfig(configPath);
12
+ const dataDirectory = dirname(nodeDatabasePath(config, configPath));
13
+ const activePath = resolve(dataDirectory, 'node-active-entrypoint');
14
+ let entrypoint = await readActiveEntrypoint(activePath, bootstrapEntrypoint);
15
+ for (;;) {
16
+ const childResult = await runProcess(process.execPath, [entrypoint, 'run', '--config', configPath], true, { ...process.env, MAR_NODE_SUPERVISED: '1' });
17
+ if (childResult.signalled)
18
+ return;
19
+ const code = childResult.code;
20
+ if (code !== UPGRADE_EXIT_CODE) {
21
+ if (code === 0)
22
+ return;
23
+ nodeLog('node.supervisor.child-exited', { code });
24
+ await delay(1_000);
25
+ continue;
26
+ }
27
+ const requestPath = nodeUpgradeRequestPath(nodeDatabasePath(config, configPath));
28
+ let stopping = false;
29
+ try {
30
+ const request = JSON.parse(await readFile(requestPath, 'utf8'));
31
+ const targetVersion = request['targetVersion'];
32
+ if (request['schemaVersion'] !== 1 ||
33
+ typeof targetVersion !== 'string' ||
34
+ !STABLE_VERSION.test(targetVersion))
35
+ throw new Error('NODE_UPGRADE_REQUEST_INVALID');
36
+ const prefix = resolve(dataDirectory, 'node-versions', targetVersion);
37
+ await rm(prefix, { recursive: true, force: true });
38
+ await mkdir(prefix, { recursive: true, mode: 0o700 });
39
+ const invocation = platformCliInvocation('npm', [
40
+ 'install',
41
+ '--prefix',
42
+ prefix,
43
+ '--ignore-scripts',
44
+ '--no-audit',
45
+ '--no-fund',
46
+ `@myagentroam/node@${targetVersion}`
47
+ ]);
48
+ const installResult = await runProcess(invocation.command, invocation.args, false);
49
+ if (installResult.signalled) {
50
+ stopping = true;
51
+ throw new Error('NODE_UPGRADE_INSTALL_INTERRUPTED');
52
+ }
53
+ if (installResult.code !== 0)
54
+ throw new Error('NODE_UPGRADE_INSTALL_FAILED');
55
+ const rebuild = platformCliInvocation('npm', ['rebuild', '--prefix', prefix, 'node-pty']);
56
+ const rebuildResult = await runProcess(rebuild.command, rebuild.args, false);
57
+ if (rebuildResult.signalled) {
58
+ stopping = true;
59
+ throw new Error('NODE_UPGRADE_INSTALL_INTERRUPTED');
60
+ }
61
+ if (rebuildResult.code !== 0)
62
+ throw new Error('NODE_UPGRADE_NATIVE_REBUILD_FAILED');
63
+ const nextEntrypoint = resolve(prefix, 'node_modules', '@myagentroam', 'node', 'dist', 'main.js');
64
+ await access(nextEntrypoint);
65
+ await writeAtomic(activePath, `${nextEntrypoint}\n`);
66
+ await writeResult(dataDirectory, {
67
+ state: 'SUCCEEDED',
68
+ targetVersion,
69
+ updatedAt: Date.now()
70
+ });
71
+ await rm(requestPath, { force: true });
72
+ entrypoint = nextEntrypoint;
73
+ }
74
+ catch (error) {
75
+ await writeResult(dataDirectory, {
76
+ state: 'FAILED',
77
+ errorCode: safeErrorCode(error, 'NODE_UPGRADE_INSTALL_FAILED'),
78
+ updatedAt: Date.now()
79
+ });
80
+ await rm(requestPath, { force: true });
81
+ }
82
+ if (stopping)
83
+ return;
84
+ }
85
+ }
86
+ async function runProcess(command, args, inherit, env = process.env) {
87
+ return new Promise((resolveProcess) => {
88
+ const child = spawn(command, args, {
89
+ windowsHide: true,
90
+ stdio: inherit ? 'inherit' : 'ignore',
91
+ env
92
+ });
93
+ let settled = false;
94
+ let signalled = false;
95
+ const forward = (signal) => {
96
+ signalled = true;
97
+ child.kill(signal);
98
+ };
99
+ const onSigint = () => forward('SIGINT');
100
+ const onSigterm = () => forward('SIGTERM');
101
+ const finish = (code) => {
102
+ if (settled)
103
+ return;
104
+ settled = true;
105
+ process.off('SIGINT', onSigint);
106
+ process.off('SIGTERM', onSigterm);
107
+ resolveProcess({ code, signalled });
108
+ };
109
+ process.once('SIGINT', onSigint);
110
+ process.once('SIGTERM', onSigterm);
111
+ child.once('error', () => finish(null));
112
+ child.once('close', finish);
113
+ });
114
+ }
115
+ async function readActiveEntrypoint(path, fallback) {
116
+ try {
117
+ const value = (await readFile(path, 'utf8')).trim();
118
+ await access(value);
119
+ return value;
120
+ }
121
+ catch {
122
+ return fallback;
123
+ }
124
+ }
125
+ async function writeResult(directory, result) {
126
+ await writeAtomic(resolve(directory, 'upgrade-result.json'), `${JSON.stringify(result)}\n`);
127
+ }
128
+ async function writeAtomic(path, contents) {
129
+ await mkdir(dirname(path), { recursive: true, mode: 0o700 });
130
+ const temporary = `${path}.${process.pid}.tmp`;
131
+ await writeFile(temporary, contents, { mode: 0o600 });
132
+ await rename(temporary, path);
133
+ }
134
+ function delay(milliseconds) {
135
+ return new Promise((resolveDelay) => setTimeout(resolveDelay, milliseconds));
136
+ }