@automaton-labs/aib 0.0.6 → 0.0.7

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 (247) hide show
  1. package/dist/bin/cli.js +4 -2
  2. package/dist/commands/apply-module-plan.js +3 -3
  3. package/dist/commands/background-command.js +2 -0
  4. package/dist/commands/captured-input.js +1 -2
  5. package/dist/commands/config-command.js +2 -2
  6. package/dist/commands/config-output.js +10 -10
  7. package/dist/commands/control-plane-command.js +1 -0
  8. package/dist/commands/declaration-command.js +7 -0
  9. package/dist/commands/declaration-execution-cache.js +1 -0
  10. package/dist/commands/declaration-format.js +1 -0
  11. package/dist/commands/declaration-preview-cache.js +2 -0
  12. package/dist/commands/doctor.js +3 -2
  13. package/dist/commands/execution-command.js +1 -1
  14. package/dist/commands/file-command.js +1 -0
  15. package/dist/commands/file-move-to-dir-execution-cache.js +1 -0
  16. package/dist/commands/file-move-to-dir-preview-cache.js +2 -0
  17. package/dist/commands/file-move-to-dir.js +5 -0
  18. package/dist/commands/file-mutation-runtime.js +1 -0
  19. package/dist/commands/file-refactor-batch-execution-cache.js +1 -0
  20. package/dist/commands/file-refactor-batch-preview-cache.js +2 -0
  21. package/dist/commands/file-refactor-batch.js +5 -0
  22. package/dist/commands/file-rename-execution-cache.js +1 -0
  23. package/dist/commands/file-rename-preview-cache.js +2 -0
  24. package/dist/commands/file-rename.js +5 -0
  25. package/dist/commands/help-command.js +5 -5
  26. package/dist/commands/host-command.js +1 -0
  27. package/dist/commands/inspect-cycles.js +3 -3
  28. package/dist/commands/inspect-format.js +15 -15
  29. package/dist/commands/inspect-tree.js +2 -2
  30. package/dist/commands/inspect.js +12 -12
  31. package/dist/commands/move-to-file.js +2 -2
  32. package/dist/commands/ota-command.js +2 -0
  33. package/dist/commands/quick-read.js +4 -4
  34. package/dist/commands/refactor-batch.js +4 -4
  35. package/dist/commands/rename-entities.js +4 -4
  36. package/dist/commands/result-view.js +6 -5
  37. package/dist/commands/worker-command.js +1 -0
  38. package/dist/config/defaults.js +1 -1
  39. package/dist/config/env-vars.js +1 -1
  40. package/dist/config/path-aliases.js +1 -1
  41. package/dist/config/resolve-command-alias.js +1 -1
  42. package/dist/content/content-bundle.js +1 -1
  43. package/dist/dsl/aib-dsl.js +1 -1
  44. package/dist/dsl/declaration-dsl.js +1 -0
  45. package/dist/dsl/file-move-to-dir-dsl.js +1 -0
  46. package/dist/dsl/file-refactor-batch-dsl.js +1 -0
  47. package/dist/dsl/file-rename-dsl.js +1 -0
  48. package/dist/help/{json/bootstrap.md → bootstrap.bash.md} +214 -392
  49. package/dist/help/bootstrap.md +101 -137
  50. package/dist/help/{json/full.md → bootstrap.pwsh.md} +214 -392
  51. package/dist/help/docs/dsl.md +4 -3
  52. package/dist/help/docs/file.move.md +46 -0
  53. package/dist/help/docs/file.rename.md +35 -0
  54. package/dist/help/docs/inspect.code.md +5 -5
  55. package/dist/help/docs/inspect.deps.md +7 -7
  56. package/dist/help/docs/inspect.file.md +2 -1
  57. package/dist/help/docs/inspect.graph.md +3 -3
  58. package/dist/help/docs/inspect.md +5 -5
  59. package/dist/help/docs/mutation.md +23 -13
  60. package/dist/help/docs/patterns.md +1 -5
  61. package/dist/help/docs/qr.md +7 -22
  62. package/dist/help/docs/quick-map.md +1 -0
  63. package/dist/help/docs/recipe.file-layout.md +15 -0
  64. package/dist/help/docs/rg.md +22 -0
  65. package/dist/help/docs/selectors.md +3 -2
  66. package/dist/help/docs/session.md +1 -1
  67. package/dist/help/dsl/bootstrap.bash.md +907 -0
  68. package/dist/help/dsl/bootstrap.md +101 -137
  69. package/dist/help/dsl/bootstrap.pwsh.md +907 -0
  70. package/dist/help/dsl/docs/dsl.md +4 -3
  71. package/dist/help/dsl/docs/file.move.md +46 -0
  72. package/dist/help/dsl/docs/file.rename.md +35 -0
  73. package/dist/help/dsl/docs/inspect.code.md +5 -5
  74. package/dist/help/dsl/docs/inspect.deps.md +7 -7
  75. package/dist/help/dsl/docs/inspect.file.md +2 -1
  76. package/dist/help/dsl/docs/inspect.graph.md +3 -3
  77. package/dist/help/dsl/docs/inspect.md +5 -5
  78. package/dist/help/dsl/docs/mutation.md +23 -13
  79. package/dist/help/dsl/docs/patterns.md +1 -5
  80. package/dist/help/dsl/docs/qr.md +7 -22
  81. package/dist/help/dsl/docs/quick-map.md +1 -0
  82. package/dist/help/dsl/docs/recipe.file-layout.md +15 -0
  83. package/dist/help/dsl/docs/rg.md +22 -0
  84. package/dist/help/dsl/docs/selectors.md +3 -2
  85. package/dist/help/dsl/docs/session.md +1 -1
  86. package/dist/help/dsl/full.md +101 -137
  87. package/dist/help/dsl/help-index.md +44 -0
  88. package/dist/help/dsl/tokens/qr.inline.examples.md +2 -0
  89. package/dist/help/dsl/tokens/stdin.examples.bash.md +8 -0
  90. package/dist/help/dsl/tokens/stdin.examples.pwsh.md +8 -0
  91. package/dist/help/dsl/tokens/stdin.examples.with-qr.bash.md +12 -0
  92. package/dist/help/dsl/tokens/stdin.examples.with-qr.pwsh.md +12 -0
  93. package/dist/help/dsl/topics/dsl.md +4 -3
  94. package/dist/help/dsl/topics/file.move.md +44 -0
  95. package/dist/help/dsl/topics/file.rename.md +33 -0
  96. package/dist/help/dsl/topics/inspect.code.md +5 -5
  97. package/dist/help/dsl/topics/inspect.deps.md +7 -7
  98. package/dist/help/dsl/topics/inspect.file.md +2 -1
  99. package/dist/help/dsl/topics/inspect.graph.md +3 -3
  100. package/dist/help/dsl/topics/inspect.md +5 -5
  101. package/dist/help/dsl/topics/mutation.md +23 -13
  102. package/dist/help/dsl/topics/patterns.md +1 -5
  103. package/dist/help/dsl/topics/qr.md +7 -22
  104. package/dist/help/dsl/topics/quick-map.md +1 -0
  105. package/dist/help/dsl/topics/recipe.file-layout.md +13 -0
  106. package/dist/help/dsl/topics/rg.md +20 -0
  107. package/dist/help/dsl/topics/selectors.md +3 -2
  108. package/dist/help/dsl/topics/session.md +1 -1
  109. package/dist/help/full.md +101 -137
  110. package/dist/help/help-index.md +44 -0
  111. package/dist/help/help-meta.json +43 -27
  112. package/dist/help/index.md +32 -75
  113. package/dist/help/tokens/qr.inline.examples.md +2 -0
  114. package/dist/help/tokens/stdin.examples.bash.md +8 -0
  115. package/dist/help/tokens/stdin.examples.pwsh.md +8 -0
  116. package/dist/help/tokens/stdin.examples.with-qr.bash.md +12 -0
  117. package/dist/help/tokens/stdin.examples.with-qr.pwsh.md +12 -0
  118. package/dist/help/topics/dsl.md +4 -3
  119. package/dist/help/topics/file.move.md +44 -0
  120. package/dist/help/topics/file.rename.md +33 -0
  121. package/dist/help/topics/inspect.code.md +5 -5
  122. package/dist/help/topics/inspect.deps.md +7 -7
  123. package/dist/help/topics/inspect.file.md +2 -1
  124. package/dist/help/topics/inspect.graph.md +3 -3
  125. package/dist/help/topics/inspect.md +5 -5
  126. package/dist/help/topics/mutation.md +23 -13
  127. package/dist/help/topics/patterns.md +1 -5
  128. package/dist/help/topics/qr.md +7 -22
  129. package/dist/help/topics/quick-map.md +1 -0
  130. package/dist/help/topics/recipe.file-layout.md +13 -0
  131. package/dist/help/topics/rg.md +20 -0
  132. package/dist/help/topics/selectors.md +3 -2
  133. package/dist/help/topics/session.md +1 -1
  134. package/dist/host/capabilities.js +1 -0
  135. package/dist/ide-launch/common.cjs +162 -162
  136. package/dist/managed-host/extension-vsix-resolver.js +1 -1
  137. package/dist/managed-host/manage-serve-web-host.cjs +141 -141
  138. package/dist/managed-host/serve-web-autostart.js +1 -1
  139. package/dist/managed-host/serve-web-host.cjs +1781 -1570
  140. package/dist/payloads/read-stdin-json.js +1 -1
  141. package/dist/rg-wrapper/core.js +6 -0
  142. package/dist/rg-wrapper/options.js +1 -0
  143. package/dist/rtk-wrapper/core.js +2 -0
  144. package/dist/runtime/input-source.js +1 -1
  145. package/dist/runtime/run-command.js +1 -1
  146. package/dist/selectors/parse-entities.js +1 -1
  147. package/dist/session/daemon-state.js +2 -0
  148. package/dist/session/server.js +7 -8
  149. package/dist/shared/operations.js +1 -1
  150. package/dist/shared/protocol.js +1 -1
  151. package/dist/shared/routes.js +1 -1
  152. package/dist/shared/stdin-examples.js +1 -3
  153. package/dist/shared/types.js +1 -1
  154. package/dist/tool-runtime/runtime-tools.js +1 -0
  155. package/dist/workers/control-plane/aib-control-plane-worker.cjs +80 -0
  156. package/dist/workers/control-plane/client-config.default.json +3 -0
  157. package/dist/workers/product-storage.js +1 -0
  158. package/dist/workers/registry.js +1 -0
  159. package/extension/vscode-refactor-bridge-extension.vsix +0 -0
  160. package/package.json +6 -4
  161. package/runtimes/launcher/linux-x64/aib +0 -0
  162. package/runtimes/launcher/win-x64/aib.exe +0 -0
  163. package/runtimes/tools/rg/darwin-arm64/rg +0 -0
  164. package/runtimes/tools/rg/darwin-x64/rg +0 -0
  165. package/runtimes/tools/rg/linux-arm64/rg +0 -0
  166. package/runtimes/tools/rg/linux-x64/rg +0 -0
  167. package/runtimes/tools/rg/manifest.json +36 -0
  168. package/runtimes/tools/rg/win32-x64/rg.exe +0 -0
  169. package/runtimes/tools/rtk/darwin-arm64/rtk +0 -0
  170. package/runtimes/tools/rtk/darwin-x64/rtk +0 -0
  171. package/runtimes/tools/rtk/linux-arm64/rtk +0 -0
  172. package/runtimes/tools/rtk/linux-x64/rtk +0 -0
  173. package/runtimes/tools/rtk/manifest.json +36 -0
  174. package/runtimes/tools/rtk/win32-x64/rtk.exe +0 -0
  175. package/dist/help/json/docs/basics.md +0 -15
  176. package/dist/help/json/docs/config-setup.aliases.md +0 -56
  177. package/dist/help/json/docs/config-setup.excludes.md +0 -45
  178. package/dist/help/json/docs/config-setup.import-normalize.md +0 -86
  179. package/dist/help/json/docs/config-setup.import-rules.md +0 -96
  180. package/dist/help/json/docs/config-setup.tsconfigs.md +0 -33
  181. package/dist/help/json/docs/dsl.md +0 -25
  182. package/dist/help/json/docs/first-setup.md +0 -292
  183. package/dist/help/json/docs/help-format.md +0 -9
  184. package/dist/help/json/docs/help-protocol.md +0 -26
  185. package/dist/help/json/docs/imports.normalize.md +0 -47
  186. package/dist/help/json/docs/inspect.code.md +0 -41
  187. package/dist/help/json/docs/inspect.cycles.md +0 -38
  188. package/dist/help/json/docs/inspect.deps.md +0 -46
  189. package/dist/help/json/docs/inspect.duplicates.md +0 -65
  190. package/dist/help/json/docs/inspect.exports.md +0 -40
  191. package/dist/help/json/docs/inspect.file.md +0 -38
  192. package/dist/help/json/docs/inspect.graph.md +0 -139
  193. package/dist/help/json/docs/inspect.imports.md +0 -15
  194. package/dist/help/json/docs/inspect.md +0 -88
  195. package/dist/help/json/docs/inspect.members.md +0 -32
  196. package/dist/help/json/docs/inspect.tree.md +0 -32
  197. package/dist/help/json/docs/inspect.usages.md +0 -61
  198. package/dist/help/json/docs/modulePlan.md +0 -73
  199. package/dist/help/json/docs/move.md +0 -56
  200. package/dist/help/json/docs/mutation.md +0 -65
  201. package/dist/help/json/docs/patterns.md +0 -76
  202. package/dist/help/json/docs/prefs.md +0 -40
  203. package/dist/help/json/docs/qr.md +0 -37
  204. package/dist/help/json/docs/quick-map.md +0 -30
  205. package/dist/help/json/docs/refactor.batch.md +0 -72
  206. package/dist/help/json/docs/rename.md +0 -47
  207. package/dist/help/json/docs/reveal.md +0 -30
  208. package/dist/help/json/docs/selectors.md +0 -23
  209. package/dist/help/json/docs/session.md +0 -77
  210. package/dist/help/json/docs/view.md +0 -30
  211. package/dist/help/json/snippets/agents.md +0 -14
  212. package/dist/help/json/topics/basics.md +0 -13
  213. package/dist/help/json/topics/config-setup.aliases.md +0 -54
  214. package/dist/help/json/topics/config-setup.excludes.md +0 -43
  215. package/dist/help/json/topics/config-setup.import-normalize.md +0 -84
  216. package/dist/help/json/topics/config-setup.import-rules.md +0 -94
  217. package/dist/help/json/topics/config-setup.tsconfigs.md +0 -31
  218. package/dist/help/json/topics/dsl.md +0 -23
  219. package/dist/help/json/topics/first-setup.md +0 -290
  220. package/dist/help/json/topics/help-format.md +0 -7
  221. package/dist/help/json/topics/help-protocol.md +0 -24
  222. package/dist/help/json/topics/imports.normalize.md +0 -45
  223. package/dist/help/json/topics/inspect.code.md +0 -39
  224. package/dist/help/json/topics/inspect.cycles.md +0 -36
  225. package/dist/help/json/topics/inspect.deps.md +0 -44
  226. package/dist/help/json/topics/inspect.duplicates.md +0 -37
  227. package/dist/help/json/topics/inspect.exports.md +0 -38
  228. package/dist/help/json/topics/inspect.file.md +0 -36
  229. package/dist/help/json/topics/inspect.graph.md +0 -137
  230. package/dist/help/json/topics/inspect.imports.md +0 -13
  231. package/dist/help/json/topics/inspect.md +0 -86
  232. package/dist/help/json/topics/inspect.members.md +0 -30
  233. package/dist/help/json/topics/inspect.tree.md +0 -22
  234. package/dist/help/json/topics/inspect.usages.md +0 -59
  235. package/dist/help/json/topics/modulePlan.md +0 -60
  236. package/dist/help/json/topics/move.md +0 -46
  237. package/dist/help/json/topics/mutation.md +0 -63
  238. package/dist/help/json/topics/patterns.md +0 -74
  239. package/dist/help/json/topics/prefs.md +0 -38
  240. package/dist/help/json/topics/qr.md +0 -35
  241. package/dist/help/json/topics/quick-map.md +0 -28
  242. package/dist/help/json/topics/refactor.batch.md +0 -61
  243. package/dist/help/json/topics/rename.md +0 -42
  244. package/dist/help/json/topics/reveal.md +0 -28
  245. package/dist/help/json/topics/selectors.md +0 -21
  246. package/dist/help/json/topics/session.md +0 -59
  247. package/dist/help/json/topics/view.md +0 -28
package/dist/bin/cli.js CHANGED
@@ -1,3 +1,5 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var W=exports&&exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const j=W(require("node:fs")),Z=W(require("node:path")),q=require("../payloads/read-stdin-json"),ee=require("../commands/doctor"),te=require("../commands/init-workspace"),G=require("../commands/inspect"),re=require("../commands/imports-command"),ne=require("../commands/config-command"),se=require("../commands/diagnostics-command"),ie=require("../commands/execution-command"),oe=require("../commands/feedback-command"),ae=require("../commands/observability-command"),ce=require("../commands/generate-docs-command"),ue=require("../commands/help-command"),de=require("../commands/runtime-command"),le=require("../commands/reveal-command"),fe=require("../commands/result-view"),pe=require("../commands/quick-read"),P=require("../commands/captured-input"),U=require("../commands/session-workspace"),$=require("../commands/session-workspace"),B=require("../config/path-aliases"),x=require("../session/client"),me=require("../session/server"),_e=require("../commands/module-plan-cache"),H=require("../config/resolve-command-alias"),Ce=require("../config/auto-start-ide"),o=require("../config/env-vars"),J=require("../client/transport-options"),y=require("../shared/errors"),E=require("../shared/metrics"),K=require("../shared/presentation"),z=require("../tracing/config"),M=require("../tracing/trace"),Q=require("../runtime/input-source");function Ie(e){return e.ok===!1}let g=null,D=Date.now();function Se(e){const r=[];let i=process.cwd(),n,C,N=process.env[o.CLI_ENV.metrics]==="1",l=(0,J.parseExtensionTransport)(process.env[o.CLI_ENV.transport])??void 0,I,A,f;for(let m=0;m<e.length;m+=1){const _=e[m];if(_){if(_==="--cwd"){const d=e[m+1];if(!d)throw new y.CliError("MISSING_FLAG_VALUE","Expected a value after --cwd.");i=d,m+=1;continue}if(_==="--instance"){const d=e[m+1];if(!d)throw new y.CliError("MISSING_FLAG_VALUE","Expected a value after --instance.");n=d,m+=1;continue}if(_==="--session"||_==="-s"){const d=e[m+1];if(!d)throw new y.CliError("MISSING_FLAG_VALUE",`Expected a value after ${_}.`);C=d,m+=1;continue}if(_==="--metrics"){N=!0;continue}if(_==="--dsl"||_==="--force-dsl"){f="dsl";continue}if(_==="--stdin-format"){const d=e[m+1];if(d!=="auto"&&d!=="dsl")throw new y.CliError("INVALID_STDIN_FORMAT","Expected --stdin-format to be auto or dsl.");f=d,m+=1;continue}if(_==="--trace-dir"){const d=e[m+1];if(!d)throw new y.CliError("MISSING_FLAG_VALUE","Expected a value after --trace-dir.");A=d,m+=1;continue}if(_==="--auto-start-ide"){I="serve-web";continue}if(_==="--no-auto-start-ide"){I="off";continue}if(_==="--transport"){const d=e[m+1],c=(0,J.parseExtensionTransport)(d);if(!c)throw new y.CliError("INVALID_TRANSPORT","Expected --transport to be either http or websocket.");l=c,m+=1;continue}r.push(_)}}const h=process.env[o.CLI_ENV.traceDir];return{commandArgs:r,cwd:i,instanceId:n,sessionId:C,metricsEnabled:N,transport:l,autoStartIde:(0,Ce.resolveAutoStartIdePolicy)(I),trace:(0,z.resolveTraceConfig)(i,{...A!==void 0?{flagTraceDir:A}:{},...h!==void 0?{envTraceDir:h}:{}}),...f!==void 0?{stdinFormat:f}:{}}}async function Ee(){D=Date.now();const e=(0,E.metricsNow)(),r=[],{commandArgs:i,cwd:n,instanceId:C,sessionId:N,metricsEnabled:l,transport:I,autoStartIde:A,trace:f,stdinFormat:h}=Se(process.argv.slice(2));await(0,$.runWithSessionOverride)(N,async()=>{const[m,..._]=i,d=(0,q.stripStdinFormatFlags)(_),c=d.restArgs,X=(0,E.metricsNow)(),s=await(0,H.resolveCanonicalCommandAlias)(m??"ping",n,C,A);if(l&&(0,E.recordSpan)(r,"cli.aliasResolution",X),(0,H.isRemovedAgentCommand)(s))throw new y.CliError("UNKNOWN_COMMAND",`Unknown command: ${s}`,{availableCommands:["doctor","diagnostics","listInstances","ping","runtimeInfo","printConfig","init-skill-usage","init","help","generate-docs","config","qr","sync","reveal","inspect","imports","view","execution","move","rename","refactor","modulePlan","session","runtime","trace","observability","feedback","note"]});if(s==="session"&&(c[0]??"status")==="serve"){await(0,me.runSessionServerCli)();return}if(s==="trace"){const t=(0,z.runTraceCommand)(n,c,f);u(t);return}if(s==="diagnostics"){await(0,se.runDiagnosticsCommand)(c);return}if(s==="observability"){L(n,s,c,f);const t=(0,ae.runObservabilityCommand)(n,c);u(t);return}if(s==="feedback"||s==="note"){L(n,s,c,f);const t=(0,oe.runFeedbackCommand)(n,c,s);u(t);return}if(s==="init"){const t=(0,te.runInitWorkspace)(n,c);u(t);return}if(s==="help"){const t=(0,ue.runHelpCommand)(c);u(t);return}if(s==="generate-docs"){const t=(0,ce.runGenerateDocsCommand)(n,c);u(t);return}if(s==="config"){L(n,s,c,f);const t=(0,ne.runConfigCommand)(n,c);u(t);return}if(s==="runtime"){const t=await(0,de.runRuntimeCommand)(n,c);t.ok===!1&&(process.exitCode=1),u(t);return}if(s==="reveal"){L(n,s,c,f);const t=(0,le.runRevealCommand)(n,c);u(t);return}if(s==="qr"){const t=c.includes("--stdin")?await(0,q.readRawStdinText)():void 0;g=(0,M.startTrace)({cwd:n,argv:process.argv.slice(2),command:s,restArgs:c,...f.absoluteTraceDir!==void 0?{traceDir:f.absoluteTraceDir}:f.traceDir!==void 0?{traceDir:f.traceDir}:{},...t!==void 0?{stdinSource:{format:"qr",text:t}}:{},startedAtMs:D});const p=await(0,pe.runQuickReadCommand)(n,c,t!==void 0?{rawStdin:t}:{});p.ok===!1&&(process.exitCode=1),u(p);return}const V=Ae(s,c),k=V?(0,$.readEffectiveSessionPathAliases)(n):{},a=V?(0,B.expandPathAliasesInArgs)(n,c,k):c,v=await(0,Q.resolveCommandInputSource)({command:s,cwd:n,restArgs:a,readStdinInput:()=>(0,q.readStdinPayloadWithSource)({command:s,restArgs:a,...d.format!==void 0||h!==void 0?{format:d.format??h}:{}})}),S=V?(0,B.expandPathAliasesInJson)(n,v.payload,k):v.payload;if(g=(0,M.startTrace)({cwd:n,argv:process.argv.slice(2),command:s,restArgs:a,...f.absoluteTraceDir!==void 0?{traceDir:f.absoluteTraceDir}:f.traceDir!==void 0?{traceDir:f.traceDir}:{},...S!==void 0?{stdinPayload:S}:{},...v.source!==void 0?{stdinSource:v.source}:{},startedAtMs:D}),s==="session"){const t=a[0]??"status";if(t==="init"||t==="clear"||t==="where"||t==="read"||t==="write"||t==="prefs"||t==="aliases"||t==="list"||t==="use"){const p=(0,U.runSessionWorkspaceCommand)(n,a,S);u(p);return}if(t==="status"){const p=(0,U.runSessionWorkspaceCommand)(n,a,S),b=await(0,x.getSessionStatus)();u({...p,runtime:Ne(b)});return}if(t==="start"){const p=await(0,x.startSession)();u(p);return}if(t==="stop"){const p=await(0,x.stopSession)();u(p);return}throw new y.CliError("UNKNOWN_SESSION_COMMAND",`Unknown aib session command: ${t}`)}if(s==="imports"&&a[0]==="normalize"){const t=(0,P.attachCapturedInput)(n,"imports",S,await(0,re.runImportsCommand)(n,a,S,{...C!==void 0?{explicitInstanceId:C}:{},autoStartIde:A,...I!==void 0?{transport:I}:{},...l?{metricsEnabled:!0}:{}},l?r:void 0),v.source);u(t);return}if(s==="execution"){const t=(0,ie.runExecutionCommand)(n,a);u(t);return}if(s==="view"){const t=(0,fe.runResultViewCommand)(n,a,S);t.ok===!1&&(process.exitCode=1),u(t);return}if(s==="doctor"){const t=a.includes("--progress"),p=a.includes("--json"),b=await(0,ee.runDoctor)({cwd:n,runtime:a.includes("--runtime"),verbose:a.includes("--verbose"),json:p,progress:t});b.ok===!1&&(process.exitCode=1),u(b,void 0,{suppressStdout:t&&!p&&process.env.AIB_FORCE_JSON!=="1"});return}if(s==="inspect"&&(a[0]==="graph"||a[0]==="tree"||a[0]==="cycles")){const t=(0,E.metricsNow)(),p=a[0]==="tree"?"tree":a[0]==="cycles"?"cycles":"graph",b=(0,P.attachCapturedInput)(n,p,S,await(0,G.runInspect)(n,a,S,{...C!==void 0?{explicitInstanceId:C}:{},autoStartIde:A,...I!==void 0?{transport:I}:{},...l?{metricsEnabled:!0}:{}}),v.source);l&&((0,E.recordSpan)(r,"cli.inspectGraph",t),(0,E.recordSpan)(r,"cli.total",e)),u(l?(0,E.appendMetrics)(b,r):b,I);return}if(s==="inspect"&&a.includes("--stdin")&&be(S)){const t=(0,E.metricsNow)(),p=(0,P.attachCapturedInput)(n,he(S),S,await(0,G.runInspect)(n,a,S,{...C!==void 0?{explicitInstanceId:C}:{},autoStartIde:A,...I!==void 0?{transport:I}:{},...l?{metricsEnabled:!0}:{}}),v.source);l&&((0,E.recordSpan)(r,"cli.inspectLocal",t),(0,E.recordSpan)(r,"cli.total",e)),u(l?(0,E.appendMetrics)(p,r):p,I);return}if((0,Q.commandRequiresPayload)(s,a,v))throw new y.CliError("STDIN_REQUIRED",`${s} currently expects a payload on stdin or --from.`);const w={command:s,restArgs:a,cwd:n},T=we(s,a);T&&(w.modulePlanExecutionId=T),N!==void 0&&(w.sessionId=N),C!==void 0&&(w.instanceId=C),S!==void 0&&(w.stdinPayload=S),v.source!==void 0&&(w.stdinInputSource=v.source),l&&(w.metricsEnabled=!0),I&&(w.transport=I),w.autoStartIde=A.mode;const R=ve();Object.keys(R).length>0&&(w.env=R);const Y=(0,E.metricsNow)(),O=await(0,x.callSession)(w,l?r:void 0);l&&((0,E.recordSpan)(r,"cli.callSession",Y),(0,E.recordSpan)(r,"cli.total",e));const F=l?(0,E.appendMetrics)(O,r):O;Ie(F)&&(process.exitCode=1),u(F,I)})}function ve(){const e=[o.CLI_ENV.managedHostScript,o.CLI_ENV.managedHostKind,o.CLI_ENV.managedHostRunDir,o.CLI_ENV.codeServerPath,o.CLI_ENV.extensionVsix,o.CLI_ENV.ideCommand,o.CLI_ENV.chromePath,o.CLI_ENV.managedHostWaitMs,o.CLI_ENV.workspaceRoot,o.CLI_ENV.disableWatchers,o.CLI_ENV.trace,o.CLI_ENV.traceDir,o.CLI_ENV.failureSnapshots,o.CLI_ENV.productStorageDir,o.CLI_ENV.metrics,o.CLI_ENV.metricsDir,o.CLI_ENV.metricsTag,o.CLI_ENV.mutationImpactMetrics,o.CLI_ENV.mutationImpactStream,o.CLI_ENV.testPostMutationCyclesDelayMs,o.CLI_ENV.testRefactorBatchDelayMs,o.CLI_ENV.testRenameDelayMs,o.CLI_ENV.modulePlanSyncWaitMs,o.CLI_ENV.refactorBatchSyncWaitMs,o.CLI_ENV.renameSyncWaitMs],r={};for(const i of e){const n=process.env[i];n!==void 0&&(r[i]=n)}return r}function we(e,r){if(e!=="modulePlan")return null;const i=r[0]??"";return i!=="execute"&&i!=="apply"?null:ye()??(0,_e.buildModulePlanExecutionId)()}function ye(){const e=process.env.AIB_MODULE_PLAN_EXECUTION_ID;return e&&/^exec_[a-z0-9_-]+$/i.test(e)?e:null}function L(e,r,i,n){g=(0,M.startTrace)({cwd:e,argv:process.argv.slice(2),command:r,restArgs:i,...n.absoluteTraceDir!==void 0?{traceDir:n.absoluteTraceDir}:n.traceDir!==void 0?{traceDir:n.traceDir}:{},startedAtMs:D})}function Ae(e,r){return e==="session"||e==="execution"||e==="observability"||e==="doctor"||e==="reveal"||e==="view"||e==="imports"&&r[0]==="normalize"||e==="inspect"&&(r[0]==="graph"||r[0]==="tree"||r[0]==="cycles"||r[0]==="imports"||r.includes("--stdin"))}function Ne(e){if(e.running===!0){const r=e.session&&typeof e.session=="object"&&!Array.isArray(e.session)?e.session:{},i=typeof r.pid=="number"?` pid ${r.pid}`:"",n=typeof r.port=="number"?` port ${r.port}`:"";return`running${i}${n}`.trim()}return e.processAlive===!0&&e.healthy===!1?"unhealthy":"stopped"}function be(e){return!e||typeof e!="object"||Array.isArray(e)?!1:e.op==="tree"||e.op==="cycles"||e.op==="imports"?!0:Array.isArray(e.requests)&&e.requests.some(r=>r&&typeof r=="object"&&!Array.isArray(r)&&(r.op==="tree"||r.op==="cycles"||r.op==="imports"))}function he(e){if(!e||typeof e!="object"||Array.isArray(e))return"inspect";const r=Array.isArray(e.requests)?e.requests.filter(i=>i&&typeof i=="object"&&!Array.isArray(i)):[e];return r.every(i=>i.op==="cycles")?"cycles":r.every(i=>i.op==="tree")?"tree":r.every(i=>i.op==="imports")?"imports":"inspect"}Ee().catch(e=>{const r=(0,y.errorPayload)(e);u(r),process.exitCode=1});function u(e,r,i={}){const n=(0,K.createCliPresentationEnvelope)(e),C=(0,K.presentCliEnvelope)(n,process.env.AIB_FORCE_JSON==="1"?"json":"agent"),N=i.suppressStdout===!0?"":C;g?.enabled&&g.complete({output:n.tracePayload,stdoutText:N,exitCode:e.ok===!1?1:ge(process.exitCode),durationMs:Date.now()-D,...r?{transport:r}:{}});const l=process.env.AIB_CANONICAL_JSON_PATH;l&&(j.default.mkdirSync(Z.default.dirname(l),{recursive:!0}),j.default.writeFileSync(l,`${JSON.stringify(n.tracePayload,null,2)}
3
- `)),i.suppressStdout!==!0&&process.stdout.write(C)}function ge(e){return typeof e=="number"?e:0}
2
+ "use strict";var G=exports&&exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const L=G(require("node:fs")),re=G(require("node:path")),P=require("../payloads/read-stdin-json"),ne=require("../commands/doctor"),se=require("../commands/init-workspace"),U=require("../commands/inspect"),oe=require("../commands/imports-command"),ie=require("../commands/declaration-command"),ae=require("../commands/config-command"),ce=require("../commands/control-plane-command"),ue=require("../commands/background-command"),de=require("../commands/diagnostics-command"),le=require("../commands/execution-command"),fe=require("../commands/feedback-command"),pe=require("../commands/observability-command"),me=require("../commands/worker-command"),_e=require("../commands/generate-docs-command"),Ce=require("../commands/help-command"),Ie=require("../commands/runtime-command"),Ee=require("../commands/host-command"),ve=require("../commands/ota-command"),we=require("../commands/reveal-command"),Se=require("../commands/result-view"),he=require("../commands/quick-read"),V=require("../commands/captured-input"),H=require("../commands/session-workspace"),J=require("../commands/session-workspace"),K=require("../config/path-aliases"),A=require("../session/client"),ye=require("../session/server"),ge=require("../commands/module-plan-cache"),z=require("../config/resolve-command-alias"),Ne=require("../config/auto-start-ide"),o=require("../config/env-vars"),Q=require("../client/transport-options"),g=require("../shared/errors"),w=require("../shared/metrics"),X=require("../shared/presentation"),Y=require("../tracing/config"),F=require("../tracing/trace"),k=require("../rg-wrapper/core"),be=require("../rg-wrapper/options"),T=require("../rtk-wrapper/core"),Z=require("../runtime/input-source");function Le(e){return e.ok===!1}let x=null,D=Date.now();function xe(e){const n=[];let i=process.cwd(),r,p,d=process.env[o.CLI_ENV.metrics]==="1",l=(0,Q.parseExtensionTransport)(process.env[o.CLI_ENV.transport])??void 0,E,h,_;for(let C=0;C<e.length;C+=1){const f=e[C];if(f){if(f==="--"&&(n[0]==="rg"||(0,T.isRtkPassthroughCommand)(n[0]??""))){n.push(f,...e.slice(C+1));break}if(f==="--cwd"){const m=e[C+1];if(!m)throw new g.CliError("MISSING_FLAG_VALUE","Expected a value after --cwd.");i=m,C+=1;continue}if(f==="--instance"){const m=e[C+1];if(!m)throw new g.CliError("MISSING_FLAG_VALUE","Expected a value after --instance.");r=m,C+=1;continue}if(f==="--session"||f==="-s"){const m=e[C+1];if(!m)throw new g.CliError("MISSING_FLAG_VALUE",`Expected a value after ${f}.`);p=m,C+=1;continue}if(f==="--metrics"){d=!0;continue}if(f==="--dsl"||f==="--force-dsl"){_="dsl";continue}if(f==="--stdin-format"){const m=e[C+1];if(m!=="auto"&&m!=="dsl")throw new g.CliError("INVALID_STDIN_FORMAT","Expected --stdin-format to be auto or dsl.");_=m,C+=1;continue}if(f==="--trace-dir"){const m=e[C+1];if(!m)throw new g.CliError("MISSING_FLAG_VALUE","Expected a value after --trace-dir.");h=m,C+=1;continue}if(f==="--auto-start-ide"){E="serve-web";continue}if(f==="--no-auto-start-ide"){E="off";continue}if(f==="--transport"){const m=e[C+1],s=(0,Q.parseExtensionTransport)(m);if(!s)throw new g.CliError("INVALID_TRANSPORT","Expected --transport to be either http or websocket.");l=s,C+=1;continue}n.push(f)}}const b=process.env[o.CLI_ENV.traceDir];return{commandArgs:n,cwd:i,instanceId:r,sessionId:p,metricsEnabled:d,transport:l,autoStartIde:(0,Ne.resolveAutoStartIdePolicy)(E),trace:(0,Y.resolveTraceConfig)(i,{...h!==void 0?{flagTraceDir:h}:{},...b!==void 0?{envTraceDir:b}:{}}),..._!==void 0?{stdinFormat:_}:{}}}async function De(){D=Date.now();const e=(0,w.metricsNow)(),n=[],{commandArgs:i,cwd:r,instanceId:p,sessionId:d,metricsEnabled:l,transport:E,autoStartIde:h,trace:_,stdinFormat:b}=xe(process.argv.slice(2));await(0,J.runWithSessionOverride)(d,async()=>{const[C,...f]=i,m=(0,w.metricsNow)(),s=await(0,z.resolveCanonicalCommandAlias)(C??"ping",r,p,h);if(l&&(0,w.recordSpan)(n,"cli.aliasResolution",m),s==="rg"){Fe(r,f);return}if((0,T.isRtkPassthroughCommand)(s)){Te(s,r,f);return}const q=(0,P.stripStdinFormatFlags)(f),u=q.restArgs;if((0,z.isRemovedAgentCommand)(s))throw new g.CliError("UNKNOWN_COMMAND",`Unknown command: ${s}`,{availableCommands:["doctor","diagnostics","listInstances","ping","runtimeInfo","printConfig","init-skill-usage","init","help","generate-docs","config","qr","git","gh","docker","kubectl","jest","vitest","playwright","pytest","go","cargo","rake","lint","biome","tsc","next","prettier","ruff","golangci-lint","rubocop","sync","reveal","inspect","imports","view","execution","file","move","rename","refactor","modulePlan","session","runtime","host","trace","control-plane","background","worker","ota","observability","feedback","note"]});if(s==="session"&&(u[0]??"status")==="serve"){await(0,ye.runSessionServerCli)();return}if(s==="trace"){const t=(0,Y.runTraceCommand)(r,u,_);a(t);return}if(s==="control-plane"){const t=await(0,ce.runControlPlaneCommand)(r,u);t.ok===!1&&(process.exitCode=1),a(t);return}if(s==="background"){const t=(0,ue.runBackgroundCommand)(r,u);t.ok===!1&&(process.exitCode=1),a(t);return}if(s==="worker"){const t=(0,me.runWorkerCommand)(r,u);t.ok===!1&&(process.exitCode=1),a(t);return}if(s==="host"){const t=(0,Ee.runHostCommand)(u);t.ok===!1&&(process.exitCode=1),a(t);return}if(s==="ota"){const t=await(0,ve.runOtaCommand)(u);t.ok===!1&&(process.exitCode=1),a(t);return}if(s==="diagnostics"){await(0,de.runDiagnosticsCommand)(u);return}if(s==="observability"){M(r,s,u,_);const t=(0,pe.runObservabilityCommand)(r,u);a(t);return}if(s==="feedback"||s==="note"){M(r,s,u,_);const t=(0,fe.runFeedbackCommand)(r,u,s);a(t);return}if(s==="init"){const t=(0,se.runInitWorkspace)(r,u);a(t);return}if(s==="help"){const t=(0,Ce.runHelpCommand)(u);a(t);return}if(s==="generate-docs"){const t=(0,_e.runGenerateDocsCommand)(r,u);a(t);return}if(s==="config"){M(r,s,u,_);const t=(0,ae.runConfigCommand)(r,u);a(t);return}if(s==="runtime"){const t=await(0,Ie.runRuntimeCommand)(r,u);t.ok===!1&&(process.exitCode=1),a(t);return}if(s==="reveal"){M(r,s,u,_);const t=(0,we.runRevealCommand)(r,u);a(t);return}if(s==="qr"){const t=u.includes("--stdin")?await(0,P.readRawStdinText)():void 0;x=(0,F.startTrace)({cwd:r,argv:process.argv.slice(2),command:s,restArgs:u,..._.absoluteTraceDir!==void 0?{traceDir:_.absoluteTraceDir}:_.traceDir!==void 0?{traceDir:_.traceDir}:{},...t!==void 0?{stdinSource:{format:"qr",text:t}}:{},startedAtMs:D});const I=await(0,he.runQuickReadCommand)(r,u,t!==void 0?{rawStdin:t}:{});I.ok===!1&&(process.exitCode=1),a(I);return}const R=Me(s,u),O=R?(0,J.readEffectiveSessionPathAliases)(r):{},c=R?(0,K.expandPathAliasesInArgs)(r,u,O):u,S=await(0,Z.resolveCommandInputSource)({command:s,cwd:r,restArgs:c,readStdinInput:()=>(0,P.readStdinPayloadWithSource)({command:s,restArgs:c,...q.format!==void 0||b!==void 0?{format:q.format??b}:{}})}),v=R?(0,K.expandPathAliasesInJson)(r,S.payload,O):S.payload;if(x=(0,F.startTrace)({cwd:r,argv:process.argv.slice(2),command:s,restArgs:c,..._.absoluteTraceDir!==void 0?{traceDir:_.absoluteTraceDir}:_.traceDir!==void 0?{traceDir:_.traceDir}:{},...v!==void 0?{stdinPayload:v}:{},...S.source!==void 0?{stdinSource:S.source}:{},startedAtMs:D}),s==="session"){const t=c[0]??"status";if(t==="init"||t==="clear"||t==="where"||t==="read"||t==="write"||t==="prefs"||t==="aliases"||t==="list"||t==="use"){const I=(0,H.runSessionWorkspaceCommand)(r,c,v);a(I);return}if(t==="status"){const I=(0,H.runSessionWorkspaceCommand)(r,c,v),N=await(0,A.getSessionStatus)();a({...I,runtime:qe(N)});return}if(t==="start"){const I=await(0,A.startSession)();a(I);return}if(t==="stop"){const I=await(0,A.stopSession)();a(I);return}throw new g.CliError("UNKNOWN_SESSION_COMMAND",`Unknown aib session command: ${t}`)}if(s==="imports"&&c[0]==="normalize"){const t=(0,V.attachCapturedInput)(r,"imports",v,await(0,oe.runImportsCommand)(r,c,v,{...p!==void 0?{explicitInstanceId:p}:{},autoStartIde:h,...E!==void 0?{transport:E}:{},...l?{metricsEnabled:!0}:{}},l?n:void 0),S.source);a(t);return}if(s==="execution"){const t=(0,le.runExecutionCommand)(r,c);a(t);return}if(s==="view"){const t=(0,Se.runResultViewCommand)(r,c,v);t.ok===!1&&(process.exitCode=1),a(t);return}if(s==="declaration"){const t=(0,V.attachCapturedInput)(r,`declaration.${c[0]??"help"}`,v,await(0,ie.runDeclarationCommand)(r,c,v,{...p!==void 0?{explicitInstanceId:p}:{},autoStartIde:h,...E!==void 0?{transport:E}:{},...l?{metricsEnabled:!0}:{}}),S.source);t.ok===!1&&(process.exitCode=1),a(t);return}if(s==="doctor"){const t=c.includes("--progress"),I=c.includes("--json"),N=await(0,ne.runDoctor)({cwd:r,runtime:c.includes("--runtime"),verbose:c.includes("--verbose"),json:I,progress:t});N.ok===!1&&(process.exitCode=1),a(N,void 0,{suppressStdout:t&&!I&&process.env.AIB_FORCE_JSON!=="1"});return}if(s==="inspect"&&(c[0]==="graph"||c[0]==="tree"||c[0]==="cycles")){const t=(0,w.metricsNow)(),I=c[0]==="tree"?"tree":c[0]==="cycles"?"cycles":"graph",N=(0,V.attachCapturedInput)(r,I,v,await(0,U.runInspect)(r,c,v,{...p!==void 0?{explicitInstanceId:p}:{},autoStartIde:h,...E!==void 0?{transport:E}:{},...l?{metricsEnabled:!0}:{}}),S.source);l&&((0,w.recordSpan)(n,"cli.inspectGraph",t),(0,w.recordSpan)(n,"cli.total",e)),a(l?(0,w.appendMetrics)(N,n):N,E);return}if(s==="inspect"&&c.includes("--stdin")&&Re(v)){const t=(0,w.metricsNow)(),I=(0,V.attachCapturedInput)(r,Pe(v),v,await(0,U.runInspect)(r,c,v,{...p!==void 0?{explicitInstanceId:p}:{},autoStartIde:h,...E!==void 0?{transport:E}:{},...l?{metricsEnabled:!0}:{}}),S.source);l&&((0,w.recordSpan)(n,"cli.inspectLocal",t),(0,w.recordSpan)(n,"cli.total",e)),a(l?(0,w.appendMetrics)(I,n):I,E);return}if((0,Z.commandRequiresPayload)(s,c,S))throw new g.CliError("STDIN_REQUIRED",`${s} currently expects a payload on stdin or --from.`);const y={command:s,restArgs:c,cwd:r},W=Ae(s,c);W&&(y.modulePlanExecutionId=W),d!==void 0&&(y.sessionId=d),p!==void 0&&(y.instanceId=p),v!==void 0&&(y.stdinPayload=v),S.source!==void 0&&(y.stdinInputSource=S.source),l&&(y.metricsEnabled=!0),E&&(y.transport=E),y.autoStartIde=h.mode;const B=Ve();Object.keys(B).length>0&&(y.env=B);const te=(0,w.metricsNow)(),$=await(0,A.callSession)(y,l?n:void 0);l&&((0,w.recordSpan)(n,"cli.callSession",te),(0,w.recordSpan)(n,"cli.total",e));const j=l?(0,w.appendMetrics)($,n):$;Le(j)&&(process.exitCode=1),a(j,E)})}function Ve(){const e=[o.CLI_ENV.managedHostScript,o.CLI_ENV.managedHostKind,o.CLI_ENV.managedHostRunDir,o.CLI_ENV.codeServerPath,o.CLI_ENV.extensionVsix,o.CLI_ENV.ideCommand,o.CLI_ENV.chromePath,o.CLI_ENV.managedHostWaitMs,o.CLI_ENV.workspaceRoot,o.CLI_ENV.disableWatchers,o.CLI_ENV.trace,o.CLI_ENV.traceDir,o.CLI_ENV.failureSnapshots,o.CLI_ENV.productStorageDir,o.CLI_ENV.metrics,o.CLI_ENV.metricsDir,o.CLI_ENV.metricsTag,o.CLI_ENV.mutationImpactMetrics,o.CLI_ENV.mutationImpactStream,o.CLI_ENV.testPostMutationCyclesDelayMs,o.CLI_ENV.testRefactorBatchDelayMs,o.CLI_ENV.testRenameDelayMs,o.CLI_ENV.testFileMoveToDirDelayMs,o.CLI_ENV.testFileMoveToDirRowDelayMs,o.CLI_ENV.testFileMoveToDirImportsDelayMs,o.CLI_ENV.testFileMoveToDirFailImports,o.CLI_ENV.testFileRenameDelayMs,o.CLI_ENV.testFileRenameRowDelayMs,o.CLI_ENV.testFileRenameImportsDelayMs,o.CLI_ENV.testFileRenameFailImports,o.CLI_ENV.testFileRefactorBatchDelayMs,o.CLI_ENV.testFileRefactorBatchRowDelayMs,o.CLI_ENV.testFileRefactorBatchImportsDelayMs,o.CLI_ENV.testFileRefactorBatchFailImports,o.CLI_ENV.disableFileMutationImportPostProcess,o.CLI_ENV.disableFileMoveImportPostProcess,o.CLI_ENV.modulePlanSyncWaitMs,o.CLI_ENV.refactorBatchSyncWaitMs,o.CLI_ENV.renameSyncWaitMs,o.CLI_ENV.fileMoveToDirSyncWaitMs,o.CLI_ENV.fileRenameSyncWaitMs,o.CLI_ENV.fileRefactorBatchSyncWaitMs],n={};for(const i of e){const r=process.env[i];r!==void 0&&(n[i]=r)}return n}function Ae(e,n){if(e!=="modulePlan")return null;const i=n[0]??"";return i!=="execute"&&i!=="apply"?null:ke()??(0,ge.buildModulePlanExecutionId)()}function ke(){const e=process.env.AIB_MODULE_PLAN_EXECUTION_ID;return e&&/^exec_[a-z0-9_-]+$/i.test(e)?e:null}function M(e,n,i,r){x=(0,F.startTrace)({cwd:e,argv:process.argv.slice(2),command:n,restArgs:i,...r.absoluteTraceDir!==void 0?{traceDir:r.absoluteTraceDir}:r.traceDir!==void 0?{traceDir:r.traceDir}:{},startedAtMs:D})}function Me(e,n){return e==="session"||e==="execution"||e==="observability"||e==="doctor"||e==="reveal"||e==="view"||e==="declaration"||e==="imports"&&n[0]==="normalize"||e==="inspect"&&(n[0]==="graph"||n[0]==="tree"||n[0]==="cycles"||n[0]==="imports"||n.includes("--stdin"))}function qe(e){if(e.running===!0){const n=e.session&&typeof e.session=="object"&&!Array.isArray(e.session)?e.session:{},i=typeof n.pid=="number"?` pid ${n.pid}`:"",r=typeof n.port=="number"?` port ${n.port}`:"";return`running${i}${r}`.trim()}return e.processAlive===!0&&e.healthy===!1?"unhealthy":"stopped"}function Re(e){return!e||typeof e!="object"||Array.isArray(e)?!1:e.op==="tree"||e.op==="cycles"||e.op==="imports"?!0:Array.isArray(e.requests)&&e.requests.some(n=>n&&typeof n=="object"&&!Array.isArray(n)&&(n.op==="tree"||n.op==="cycles"||n.op==="imports"))}function Pe(e){if(!e||typeof e!="object"||Array.isArray(e))return"inspect";const n=Array.isArray(e.requests)?e.requests.filter(i=>i&&typeof i=="object"&&!Array.isArray(i)):[e];return n.every(i=>i.op==="cycles")?"cycles":n.every(i=>i.op==="tree")?"tree":n.every(i=>i.op==="imports")?"imports":"inspect"}De().catch(e=>{const n=(0,g.errorPayload)(e);a(n),process.exitCode=1});function Fe(e,n){const i=n[0]==="--"?n.slice(1):n,r=ee(),d=(0,k.classifyRgArgs)(i,{hasStdin:r}).mode==="optimizable"?(0,k.runBrgFormatted)({cwd:e,args:i,env:process.env},(0,be.resolveBrgFormatOptions)(e,i,process.env)):r?(0,k.runBrgRaw)({cwd:e,args:i,env:process.env,stdinText:L.default.readFileSync(0,"utf8")}):(0,k.runBrgRawInherited)({cwd:e,args:i,env:process.env,hasStdin:r});if(d.spawnError){process.stderr.write(`aib rg: failed to run rg. Install rg or set ${o.CLI_ENV.rgPath}: ${d.spawnError}
3
+ `),process.exitCode=2;return}d.stdout&&process.stdout.write(d.stdout),d.stderr&&process.stderr.write(d.stderr),process.exitCode=d.exitCode}function Te(e,n,i){const r=i[0]==="--"?i.slice(1):i,p=ee(),d=(0,T.runRtkPassthrough)({tool:e,cwd:n,args:r,env:process.env,...p?{stdinText:L.default.readFileSync(0,"utf8")}:{}});if(d.spawnError){process.stderr.write(`aib ${e}: failed to run rtk. Install rtk or set ${o.CLI_ENV.rtkPath}: ${d.spawnError}
4
+ `),process.exitCode=d.exitCode;return}d.stdout&&process.stdout.write(d.stdout),d.stderr&&process.stderr.write(d.stderr),process.exitCode=d.exitCode}function ee(){try{return!L.default.fstatSync(0).isCharacterDevice()}catch{return process.stdin.isTTY===!1}}function a(e,n,i={}){const r=(0,X.createCliPresentationEnvelope)(e),p=(0,X.presentCliEnvelope)(r,process.env.AIB_FORCE_JSON==="1"?"json":"agent"),d=i.suppressStdout===!0?"":p;x?.enabled&&x.complete({output:r.tracePayload,stdoutText:d,exitCode:e.ok===!1?1:Oe(process.exitCode),durationMs:Date.now()-D,...n?{transport:n}:{}});const l=process.env.AIB_CANONICAL_JSON_PATH;l&&(L.default.mkdirSync(re.default.dirname(l),{recursive:!0}),L.default.writeFileSync(l,`${JSON.stringify(r.tracePayload,null,2)}
5
+ `)),i.suppressStdout!==!0&&process.stdout.write(p)}function Oe(e){return typeof e=="number"?e:0}
@@ -1,3 +1,3 @@
1
- "use strict";var Oe=exports&&exports.__createBinding||(Object.create?(function(e,t,n,o){o===void 0&&(o=n);var r=Object.getOwnPropertyDescriptor(t,n);(!r||("get"in r?!t.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,r)}):(function(e,t,n,o){o===void 0&&(o=n),e[o]=t[n]})),$e=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),re=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var o=[];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(o[o.length]=r);return o},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var o=e(t),r=0;r<o.length;r++)o[r]!=="default"&&Oe(n,t,o[r]);return $e(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runApplyModulePlan=qe,exports.reviseCachedModulePlan=Be,exports.readCachedModulePlanExecution=ze;const F=re(require("node:path")),O=re(require("node:fs")),E=require("zod"),ie=require("../client/http-client"),$=require("../shared/agent-text"),k=require("../shared/errors"),se=require("../shared/routes"),le=require("./session-workspace"),ae=require("./session-workspace"),D=require("./shared"),ue=require("../shared/protocol"),ce=require("./inspect-format"),De=require("./json-file-input"),Ue=require("./move-to-file"),d=require("./module-plan-cache"),fe=require("../metrics/central-metrics"),de=require("./module-plan-timeout"),me=require("./inspect-cycles"),_=require("../config/env-vars"),H=require("../config/product-storage"),R=require("../shared/event-loop"),h=require("../diagnostics/module-plan-timeline"),je=E.z.object({targetFile:E.z.string().min(1).optional(),target:E.z.string().min(1).optional(),file:E.z.string().min(1).optional(),symbols:E.z.array(E.z.union([E.z.string().min(1),E.z.object({}).passthrough()])).optional(),entities:E.z.array(E.z.union([E.z.string().min(1),E.z.object({}).passthrough()])).optional()}).passthrough(),We=E.z.object({sourceFile:E.z.string().min(1).optional(),file:E.z.string().min(1).optional(),facadeFile:E.z.string().min(1).optional(),facade:E.z.string().min(1).optional(),modules:E.z.array(je).optional(),execute:E.z.boolean().optional(),planId:E.z.string().min(1).optional()}).passthrough();async function qe(e,t,n,o={},r={}){const s=Te(t,"--plan"),i=Te(t,"--from-json");if(i&&n!==void 0)throw new k.CliError("APPLY_MODULE_PLAN_INPUT_SOURCE_CONFLICT","Use either modulePlan --stdin or modulePlan --from-json, not both.");const u=i?(0,De.readJsonObjectFile)(e,i,"INVALID_MODULE_PLAN_JSON_FILE"):n,f=t.includes("--execute")||Ct(u),c=u===void 0?{}:We.parse(u),m=typeof c.planId=="string"?c.planId:void 0,p=s??m;if(p&&u===void 0||f&&p)return J(e,p,o,"modulePlan.apply",r.executionId);if(f&&!p){(0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.enter",{hasExecutionId:!!r.executionId});const P=Ye();if(r.executionId&&P>0){const g=Me(e,r.executionId,"modulePlan.execute",c);g.phase="preview",I(e,g),(0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.pending.persisted",{rowCount:g.rowCount,entityCount:g.entityCount,syncWaitMs:P});const l=Date.now(),C=Ke();(0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.background.schedule");const w=Ve(()=>(0,H.runWithProductStorageOverride)(C[_.CLI_ENV.productStorageDir],()=>He(C,()=>((0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.background.start"),pe(e,c,o,r,g)))));(0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.wait.start",{syncWaitMs:P});const A=await Je(w,P);return A.status==="result"?((0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.wait.result"),A.result):(w.catch(()=>{}),(0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.wait.deadline",{elapsedMs:Date.now()-l}),Ge(e,r.executionId,"modulePlan.execute",Date.now()-l))}return pe(e,c,o,r)}return ye(e,c,o)}async function pe(e,t,n,o,r){const s=r??(o.executionId?Me(e,o.executionId,"modulePlan.execute",t):void 0);s&&((0,h.recordModulePlanTimeline)(e,s.executionId,"modulePlan.executePayload.start"),s.phase="preview",I(e,s),await(0,R.yieldToEventLoop)());let i;try{(0,h.recordModulePlanTimeline)(e,s?.executionId,"modulePlan.preview.start"),i=await ye(e,t,n,"modulePlan.execute-preview"),(0,h.recordModulePlanTimeline)(e,s?.executionId,"modulePlan.preview.end",{ok:i.ok!==!1,moduleCount:typeof i.moduleCount=="number"?i.moduleCount:null})}catch(u){throw s&&(s.status="failed",s.error=u instanceof Error?u.message:String(u),I(e,s)),u}return i.ok===!1||typeof i.planId!="string"?(s&&(s.status="failed",s.planId=typeof i.planId=="string"?i.planId:s.planId,s.error="modulePlan preview failed before execute.",I(e,s)),i):(s&&(s.planId=i.planId,s.phase="mutation",I(e,s),(0,h.recordModulePlanTimeline)(e,s.executionId,"modulePlan.mutation.phase.persisted",{planId:i.planId}),await(0,R.yieldToEventLoop)()),J(e,i.planId,n,"modulePlan.execute",o.executionId))}function Be(e,t){const n=(0,d.readModulePlanRecord)(e,t),o={operation:"modulePlan.revise",fromPlanId:t,planId:t,executable:n.executable!==!1,summary:n.executable===!1?"semantic module plan still has blocking move diagnostics":"semantic module plan already executable",changes:[],resolved:[],remainingBlocking:Et(n.previewResult),next:n.executable===!1?"Fix the plan manually, then rerun modulePlan preview.":`aib modulePlan apply ${t}`};return n.executable===!1&&(o.ok=!1,o.code="MODULE_PLAN_REVISE_NOT_APPLICABLE"),(0,$.attachAgentText)(o,z(o))}function ze(e,t){const n=(0,d.readModulePlanExecutionStatus)(e,t),o=n.rows,r=n.status==="failed"?Xe(e,n.planId,o.length):[],s=[...ge(o),...r],i={operation:"execution.status",executionId:n.executionId,planId:n.planId,status:n.status,summary:Y(n),progress:`${n.completedRows}/${n.rowCount}`,entityProgress:`${n.completedEntities??0}/${n.entityCount??0}`,filesWritten:X(n.filesWritten.map(u=>(0,d.formatRelativePath)(e,u)).sort((u,f)=>u.localeCompare(f))),rows:o,...s.length>0?{notRun:s}:{},...n.remainingSource?{remainingSource:n.remainingSource}:{},...n.phase?{phase:n.phase}:{},...n.postMutation?{postMutation:n.postMutation}:{},updatedAt:n.updatedAt,...n.error?{error:n.error}:{}};return(0,$.attachAgentText)(i,z(i))}function Ve(e){return new Promise((t,n)=>{setImmediate(()=>{e().then(t,n)})})}function Ke(){const e=[_.CLI_ENV.productStorageDir,_.CLI_ENV.trace,_.CLI_ENV.traceDir,_.CLI_ENV.metrics,_.CLI_ENV.metricsDir,_.CLI_ENV.metricsTag,_.CLI_ENV.mutationImpactMetrics,_.CLI_ENV.mutationImpactStream,_.CLI_ENV.testMoveToFileFailEntity,_.CLI_ENV.testPostMutationCyclesDelayMs,_.CLI_ENV.modulePlanDebugTimeline],t={};for(const n of e)t[n]=process.env[n];return t}async function He(e,t){const n={};for(const[o,r]of Object.entries(e))n[o]=process.env[o],r===void 0?delete process.env[o]:process.env[o]=r;try{return await t()}finally{for(const[o,r]of Object.entries(n))r===void 0?delete process.env[o]:process.env[o]=r}}async function Je(e,t){let n=null;try{return await Promise.race([e.then(o=>({status:"result",result:o})),new Promise(o=>{n=setTimeout(()=>o({status:"deadline"}),t)})])}finally{n&&clearTimeout(n)}}function Ye(){const e=process.env[_.CLI_ENV.modulePlanSyncWaitMs];if(e!==void 0){const t=Number.parseInt(e,10);return!Number.isFinite(t)||t<=0?0:Math.min(t,12e4)}return 12e4}function Ge(e,t,n,o){const r=(0,d.readModulePlanExecutionStatus)(e,t),s=y(r.timeoutHint)&&typeof r.timeoutHint.estimatedDurationMs=="number"?r.timeoutHint.estimatedDurationMs:null,i=s===null?null:Math.max(0,s-o),u={operation:"execution.status",executionId:r.executionId,planId:r.planId,status:r.status,...r.phase?{phase:r.phase}:{},summary:Y(r),progress:`${r.completedRows}/${r.rowCount}`,entityProgress:`${r.completedEntities??0}/${r.entityCount??0}`,expectEmpty:r.expectEmpty===!0,filesWritten:X(r.filesWritten.map(f=>(0,d.formatRelativePath)(e,f)).sort((f,c)=>f.localeCompare(c))),rows:r.rows,updatedAt:r.updatedAt,...i!==null?{estimatedRemainingMs:i}:{}};return(0,$.attachAgentText)(u,Qe(n,r,i))}function Qe(e,t,n){const o=[`${e} ${t.executionId}`,Y(t)];return t.phase==="preview"?o.push("previewing plan"):t.phase==="mutation"?o.push("applying mutation"):t.phase==="postMutation.cycles"&&(o.push("mutation completed"),o.push("checking cycles")),o.push(`status: aib execution status ${t.executionId}`),n!==null&&o.push(n>0?`estimated remaining: ${(0,de.formatModulePlanTimeoutEstimate)(Math.max(n,5e3))}`:"estimated remaining: check status again soon"),o.join(`
2
- `)}async function ye(e,t,n,o="modulePlan.preview"){(0,h.recordModulePlanTimeline)(e,void 0,"modulePlan.preview.resolveInstance.start",{operation:o});const r=await(0,D.resolveCompatibleTargetInstance)(e,ue.CLI_COMMAND_IDS.modulePlan,n);(0,h.recordModulePlanTimeline)(e,void 0,"modulePlan.preview.resolveInstance.end",{operation:o});const s=await(0,D.fetchEffectiveConfig)(r.entry,n),i=Se(e,t),u=ct(e,t,i,s),f=(0,d.buildModulePlanId)(u),c=await Ze(e,u,n,r),m=(0,d.hashFile)(i),p=(0,d.buildModulePlanHash)(u,m,c),P={planId:f,planHash:p,createdAt:new Date().toISOString(),cwd:F.resolve(e),sourceFile:i,sourceHash:m,executable:c.ok!==!1,normalizedRequest:u,inspectPayload:{requests:[u]},previewDir:"",previewResult:c};(0,d.writeModulePlanRecord)(e,P);const g={...c.ok===!1?{ok:!1,code:"MODULE_PLAN_BLOCKED"}:{},operation:o,planId:f,executable:c.ok!==!1,summary:Ie(c,!1),...typeof c.moduleCount=="number"?{moduleCount:c.moduleCount}:{},...Array.isArray(c.targets)?{targets:c.targets}:{},...Array.isArray(c.blocking)&&c.blocking.length>0?{blocking:c.blocking}:{},next:c.ok===!1?"Fix the plan, then rerun modulePlan preview.":`aib modulePlan apply ${f}`};return(0,$.attachAgentText)(g,z(g))}function Xe(e,t,n){if(t==="pending")return[];try{const o=(0,d.readModulePlanRecord)(e,t);return he(e,Q(o.normalizedRequest),n)}catch{return[]}}async function Ze(e,t,n,o){const r=Q(t),s=a(t.sourceFile)??"",i=await et(e,o,s,r,n);if(i)return i;const u=[],f=[],c=[];for(const m of r){await(0,R.yieldToEventLoop)();const p=a(m.targetFile)??"",P=U(m);(0,h.recordModulePlanTimeline)(e,void 0,"modulePlan.preview.row.start",{target:(0,d.formatRelativePath)(e,p),entityCount:P.length});const g=await Pe(e,s,p,P,m,!1,n);(0,h.recordModulePlanTimeline)(e,void 0,"modulePlan.preview.row.end",{target:(0,d.formatRelativePath)(e,p),ok:g.ok!==!1});const l=Ce("preview",e,s,p,P,g);if(f.push(l),u.push({file:(0,d.formatRelativePath)(e,p),entities:P,...typeof l.summary=="string"?{summary:l.summary}:{}}),l.ok===!1){c.push(l);break}await(0,R.yieldToEventLoop)()}return{op:"modulePlan",ok:c.length===0,sourceFile:s,moduleCount:r.length,targets:u,rows:f,...c.length>0?{blocking:c}:{},cycles:"notChecked"}}async function et(e,t,n,o,r){const s=await(0,ie.postJson)(t.entry,se.EXTENSION_ROUTES.inspect,{requests:[{op:"file",sourceFile:n,includeRanges:!1}]},(0,D.extensionRequestOptions)(r)),i=Array.isArray(s.results)?s.results.find(y):null,u=Array.isArray(i?.symbols)?i.symbols.filter(y):[];if(u.length===0)return null;const f=[],c=[],m=[];for(const p of o){const P=a(p.targetFile)??"",g=U(p),l={target:(0,d.formatRelativePath)(e,P),entities:g,ok:!0,summary:P&&!O.existsSync(P)?"target will be created":"target ready"};for(const C of tt(p)){const w=u.filter(A=>nt(A,C));if(w.length===0){l.ok=!1,l.entity=C.raw,l.code="MODULE_PLAN_SYMBOL_NOT_FOUND",l.error=`Symbol not found: ${C.raw}`,l.source=(0,d.formatRelativePath)(e,n);break}if(!C.symbolKind&&w.length>1){l.ok=!1,l.entity=C.raw,l.code="MODULE_PLAN_SYMBOL_AMBIGUOUS",l.error=`Ambiguous symbol: ${C.raw}`,l.available=w.map(A=>`${a(A.kind)??"symbol"}:${a(A.name)??C.symbolName}`),l.source=(0,d.formatRelativePath)(e,n);break}}if(f.push(W(l)),c.push({file:(0,d.formatRelativePath)(e,P),entities:g,...typeof l.summary=="string"?{summary:l.summary}:{}}),l.ok===!1){m.push(W(l));break}}return m.length===0?null:{op:"modulePlan",ok:!1,sourceFile:n,moduleCount:o.length,targets:c,rows:f,blocking:m,cycles:"notChecked"}}function tt(e){return(Array.isArray(e.symbols)?e.symbols.filter(y):[]).map(n=>{const o=a(n.raw)??a(n.symbolName)??"",r=a(n.symbolName)??o,s=a(n.symbolKind)??void 0;return{raw:o,symbolName:r,...s?{symbolKind:s}:{}}})}function nt(e,t){return a(e.name)!==t.symbolName?!1:!t.symbolKind||a(e.kind)===t.symbolKind}async function J(e,t,n,o="modulePlan.apply",r,s){const i=(0,d.readModulePlanRecord)(e,t);if(i.executable===!1||i.previewResult.ok===!1)throw new k.CliError("APPLY_MODULE_PLAN_NOT_EXECUTABLE","Module plan has blocking move diagnostics. Fix the plan before applying.",{planId:t,next:"Fix the plan, then rerun modulePlan preview."});if((0,d.hashFile)(i.sourceFile)!==i.sourceHash)throw new k.CliError("APPLY_MODULE_PLAN_SOURCE_CHANGED","Source file changed after modulePlan preview. Rerun modulePlan preview.",{planId:t,sourceFile:(0,d.formatRelativePath)(e,i.sourceFile)});const f=Q(i.normalizedRequest),c=[],m=new Set,p=i.sourceFile,P=f.map(M=>a(M.targetFile)).filter(M=>!!M),g=Z([p,...P]),l=s??ot(e,i,o,f,r);(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.apply.start",{operation:o,rowCount:f.length,entityCount:l.entityCount});const C={executionId:l.executionId,planId:i.planId,parentOperation:o,sourceFile:(0,d.formatRelativePath)(e,p),rowCount:f.length,entityCount:l.entityCount},w=(0,fe.startCentralMetricSpan)({kind:"mutation.execution",operation:o,cwd:F.resolve(e),...C});I(e,l),(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.apply.execution.persisted"),await(0,R.yieldToEventLoop)(),(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.cycles.pre.start",{fileCount:g.length});const A=xe(e,g);(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.cycles.pre.end",{componentCount:j(A.componentCount)??null});try{for(let x=0;x<f.length;x+=1){await(0,R.yieldToEventLoop)();const S=f[x],N=a(S.targetFile)??"",K=U(S),Fe=Mt(c.filter(L=>L.ok!==!1));(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.apply.row.start",{rowIndex:x,target:(0,d.formatRelativePath)(e,N),entityCount:K.length});const oe=await Pe(e,p,N,K,S,!0,n,{onProgress:L=>it(e,l,Fe,L,Array.from(m)),metricsContext:{...C,rowIndex:x,rowTargetFile:(0,d.formatRelativePath)(e,N)}}),q=Ce("execute",e,p,N,K,oe);c.push(q),(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.apply.row.end",{rowIndex:x,target:(0,d.formatRelativePath)(e,N),ok:q.ok!==!1});for(const L of b(oe.filesWritten))m.add((0,d.resolveCliFilePath)(e,L));if(rt(e,l,q,Array.from(m)),await(0,R.yieldToEventLoop)(),q.ok===!1)break}const M=c.every(x=>x.ok!==!1);if(M){l.phase="postMutation.cycles",I(e,l),(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.cycles.phase.persisted"),await(0,R.yieldToEventLoop)(),await at();const x=Z([...g,...Array.from(m)]);(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.cycles.post.start",{fileCount:x.length});const S=xe(e,x);(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.cycles.post.end",{componentCount:j(S.componentCount)??null}),l.postMutation={cycles:st(A,S,new Set(_e(e,x)))}}l.status=M?"completed":"failed",M&&(l.phase="completed"),l.failedRows=c.filter(x=>x.ok===!1).length,l.filesWritten=Array.from(m).sort((x,S)=>x.localeCompare(S));const T=await Re(e,p,n);T&&(l.remainingSource=T),I(e,l),(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.apply.execution.final.persisted",{status:l.status,completedRows:l.completedRows,completedEntities:l.completedEntities})}catch(M){throw l.status="failed",l.error=M instanceof Error?M.message:String(M),l.filesWritten=Array.from(m).sort((T,x)=>T.localeCompare(x)),I(e,l),w.end({ok:!1,status:l.status,error:M instanceof Error?M.message:String(M),completedRows:l.completedRows,failedRows:l.failedRows,completedEntities:l.completedEntities,filesWrittenCount:l.filesWritten.length}),M}const v=c.every(M=>M.ok!==!1),ee=v?[]:he(e,f,c.length),te=v?[]:[...ge(c),...ee];Ee(e,l);const ne={...v?{}:{ok:!1,code:"MODULE_PLAN_APPLY_FAILED"},operation:o,applied:v,planId:i.planId,executionId:l.executionId,expectEmpty:i.normalizedRequest.expectEmpty===!0,summary:Ie({rows:[...c,...ee]},!0),rows:c,...te.length>0?{notRun:te}:{},remainingSource:await Re(e,p,n),...l.postMutation?{postMutation:l.postMutation}:{},...G(i.previewResult).length>0?{createdFiles:ke(G(i.previewResult),8)}:{},filesWritten:X(Array.from(m).sort((M,T)=>M.localeCompare(T)).map(M=>(0,d.formatRelativePath)(e,M))),...v?{}:{next:"Fix failed move row and rerun modulePlan preview."}};return w.end({ok:v,status:l.status,completedRows:l.completedRows,failedRows:l.failedRows,completedEntities:l.completedEntities,filesWrittenCount:l.filesWritten.length}),(0,fe.recordCentralMetric)({kind:"mutation.summary",operation:o,cwd:F.resolve(e),ok:v,status:l.status,executionId:l.executionId,planId:i.planId,rowCount:l.rowCount,completedRows:l.completedRows,failedRows:l.failedRows,entityCount:l.entityCount,completedEntities:l.completedEntities,filesWrittenCount:l.filesWritten.length}),(0,$.attachAgentText)(ne,z(ne))}function he(e,t,n){return t.slice(n).map(o=>W({target:(0,d.formatRelativePath)(e,a(o.targetFile)??""),entities:U(o)}))}function ge(e){return e.map(t=>W({target:a(t.target)??"",entities:b(t.notRunEntities)})).filter(t=>b(t.entities).length>0)}async function Pe(e,t,n,o,r,s,i,u={}){const f=await(0,Ue.runMoveToFile)(e,{sourceFile:t,targetFile:n,entities:o,execute:s},i,[],u);return f.ok!==!1,f}function ot(e,t,n,o,r){const s=new Date().toISOString(),i=r??(0,d.buildModulePlanExecutionId)(t.planId),u=we(o);return{executionId:i,planId:t.planId,operation:n,cwd:F.resolve(e),sourceFile:t.sourceFile,status:"running",phase:"mutation",startedAt:s,updatedAt:s,rowCount:o.length,completedRows:0,failedRows:0,entityCount:u,completedEntities:0,expectEmpty:t.normalizedRequest.expectEmpty===!0,filesWritten:[],rows:[],timeoutHint:ut(t.normalizedRequest),productStorageDir:(0,H.productStorageRoot)()}}function Me(e,t,n,o){const r=new Date().toISOString(),s=Array.isArray(o.modules)?o.modules.filter(y):[];return{executionId:t,planId:"pending",operation:n,cwd:F.resolve(e),sourceFile:o.sourceFile||o.file?Se(e,o):"",status:"running",phase:"mutation",startedAt:r,updatedAt:r,rowCount:s.length,completedRows:0,failedRows:0,entityCount:we(s),completedEntities:0,expectEmpty:o.expectEmpty===!0,filesWritten:[],rows:[],productStorageDir:(0,H.productStorageRoot)()}}function rt(e,t,n,o){t.rows.push(n),t.completedRows=t.rows.filter(r=>r.ok!==!1).length,t.failedRows=t.rows.filter(r=>r.ok===!1).length,t.completedEntities=dt(t.rows),t.filesWritten=o.sort((r,s)=>r.localeCompare(s)),n.ok===!1&&(t.status="failed"),I(e,t)}function it(e,t,n,o,r){t.completedEntities=n+o.completedEntities,t.filesWritten=Array.from(new Set([...r,...o.filesWritten.map(s=>(0,d.resolveCliFilePath)(e,s))])).sort((s,i)=>s.localeCompare(i)),o.ok||(t.status="failed"),I(e,t)}function I(e,t){(0,d.writeModulePlanExecutionStatus)(e,t),Ee(e,t)}function Ee(e,t){if(!(0,ae.sessionWorkspaceExists)(e))return null;try{return(0,ae.saveSessionOutputJson)(e,"execution",`modulePlan-${t.executionId}`,t)}catch{return null}}function xe(e,t){const n=_e(e,t).filter(r=>O.existsSync((0,d.resolveCliFilePath)(e,r)));if(n.length===0)return{op:"cycles",componentCount:0,components:[]};const o=["cycles"];for(const r of n)o.push("--files",r);return o.push("--detail","imports","--limit","50"),(0,me.runInspectCycles)(e,o,void 0)}function st(e,t,n){const o=new Set(B(e).map(be)),r=B(t).filter(s=>b(s.files).some(i=>n.has(i))&&!o.has(be(s)));return{status:r.length>0?"new-or-changed":"none",detail:"imports",newOrChangedCount:r.length,preComponentCount:j(e.componentCount)??B(e).length,postComponentCount:j(t.componentCount)??B(t).length,components:r}}function B(e){return(Array.isArray(e.components)?e.components:[]).filter(y).map(t=>({kind:a(t.kind)??"mixed",files:b(t.files).sort(),chain:a(t.chain)??"",...y(t.cycle)?{cycle:t.cycle}:{},imports:lt(t)}))}function lt(e){const t=y(e.cycle)?e.cycle:{};return b(t.imports)}function be(e){return`${a(e.kind)??"mixed"}:${b(e.files).sort().join("|")}`}function _e(e,t){return Z(t.map(n=>(0,d.formatRelativePath)(e,(0,d.resolveCliFilePath)(e,n))))}async function at(){const e=process.env[_.CLI_ENV.testPostMutationCyclesDelayMs],t=e?Number.parseInt(e,10):0;!Number.isFinite(t)||t<=0||await new Promise(n=>setTimeout(n,Math.min(t,6e4)))}function Y(e){const t=e.filesWritten.length,n=`${e.completedRows}/${e.rowCount}`,o=e.entityCount??0,r=e.completedEntities??0,s=o>0?`, ${Math.floor(r/o*100)}% entities`:"",i=e.status==="running"&&e.phase==="postMutation.cycles"?`${n} rows${s}`:`${e.status==="running"?"in progress":e.status}, ${n} rows${s}`;return t>0?`${i}, ${t} ${t===1?"file":"files"} written`:i}function ut(e){return(0,de.buildModulePlanTimeoutHintFromRequest)(e)??{recommendedTimeoutMs:9e4,rowCount:0,symbolCount:0,message:"If the calling agent times out, inspect progress with: aib execution status last"}}function ct(e,t,n,o){const r=t.modules??[];if(r.length===0)throw new k.CliError("MODULE_PLAN_MODULES_REQUIRED","modulePlan expects a non-empty modules array.");const s=r.map(i=>{const u=i.target??i.targetFile??i.file;if(!u)throw new k.CliError("MODULE_PLAN_TARGET_REQUIRED","Each module expects target.");const f=i.entities??i.symbols??[];if(f.length===0)throw new k.CliError("MODULE_PLAN_ENTITIES_REQUIRED","Each module expects a non-empty entities array.");return{targetFile:(0,d.resolveCliFilePath)(e,u),symbols:f.map(c=>ft(c,o))}});return{op:"modulePlan",sourceFile:n,...t.expectEmpty===!0?{expectEmpty:!0}:{},modules:s}}function ft(e,t){if(typeof e=="string"){const o=(0,ce.parseInspectSelector)(e,t);return{raw:e,symbolName:o.symbolName,...o.symbolKind?{symbolKind:o.symbolKind}:{}}}const n=a(e.entity)??a(e.selector)??a(e.raw);if(n){const o=(0,ce.parseInspectSelector)(n,t);return{raw:n,symbolName:o.symbolName,...o.symbolKind?{symbolKind:o.symbolKind}:{}}}return Ne(e)}function Ce(e,t,n,o,r,s){const i={target:(0,d.formatRelativePath)(t,o),entities:r,ok:s.ok!==!1,summary:typeof s.summary=="string"?s.summary:null};if(e==="preview"&&typeof s.previewId=="string"&&(i.movePreviewId=s.previewId),Array.isArray(s.files)&&(i.files=s.files),Array.isArray(s.filesWritten)&&(i.filesWritten=s.filesWritten),s.ok===!1){const u=pt(s),f=a(u?.entity)??r[0]??null,m=(Array.isArray(s.results)?s.results.filter(y):[]).filter(g=>g.ok!==!1).map(g=>a(g.entity)).filter(g=>!!g),p=f?r.indexOf(f):-1,P=p>=0?r.slice(p+1):[];i.appliedEntities=m,i.notRunEntities=P,i.entity=f,i.code=a(u?.code)??a(s.code)??"MOVE_TO_FILE_FAILED",i.error=yt(a(u?.error)??a(s.error)??"Move failed."),i.hint=mt(t,a(u?.code),a(u?.hint)),i.next=a(u?.next),i.source=(0,d.formatRelativePath)(t,n)}return W(i)}function dt(e){return e.reduce((t,n)=>n.ok===!1?t+b(n.appliedEntities).length:t+b(n.entities).length,0)}function mt(e,t,n){return n?t==="TS_MOVE_TO_FILE_UNSUPPORTED_BY_ENGINE"?(0,le.useSessionGuidance)(e,"modulePlan.tsMoveUnsupportedHint",n,(0,le.readSessionNumberPref)(e,"diagnostics.hintLimit",2))??null:n:null}function pt(e){return(Array.isArray(e.results)?e.results.filter(y):[]).find(n=>n.ok===!1)??null}function yt(e){return e.replace(/^TypeScript refactor failed: Debug Failure\. False expression: /,"")}function Ie(e,t){const n=Array.isArray(e.rows)?e.rows.filter(y):[],o=n.reduce((m,p)=>m+b(p.entities).length,0),r=n.filter(m=>m.ok===!1).length,s=n.length,i=t?G(e).length:n.filter(m=>Ae(m)).length,u=t?Array.from(new Set(n.flatMap(m=>b(m.filesWritten).filter(p=>!p.startsWith("+"))))).length:0;if(r>0)return`${o} ${o===1?"symbol":"symbols"}, ${r} blocked`;const f=`${o} ${o===1?"symbol":"symbols"}, ${s} ${s===1?"target":"targets"} ${t?"moved":"ready"}`,c=[];return t&&u>0&&c.push(`${u} ${u===1?"file":"files"} written`),i>0&&c.push(`${i} ${i===1?"file":"files"} ${t?"created":"will be created"}`),c.length>0?`${f}; ${c.join(", ")}`:f}function Ae(e){return typeof e.summary=="string"&&e.summary.includes("target will be created")}function G(e){return(Array.isArray(e.rows)?e.rows.filter(y):[]).filter(n=>Ae(n)).map(n=>a(n.target)).filter(n=>!!n)}function z(e){const t=[],n=a(e.operation)??"modulePlan",o=a(e.planId),r=a(e.executionId);if(n!=="execution.status"){const i=n==="modulePlan.apply"||n==="modulePlan.execute"?r??o:o;t.push(i?`${n} ${i}`:n)}e.executable===!1&&t.push("blocked"),typeof e.summary=="string"&&t.push(e.summary),n==="execution.status"&&e.status==="running"&&e.phase==="postMutation.cycles"&&(t.push("mutation completed"),t.push("checking cycles"));const s=n==="execution.status"&&e.status==="running"&&e.phase==="postMutation.cycles";if(Array.isArray(e.targets)&&e.targets.length>0){t.push("targets:");for(const i of e.targets.filter(y)){const u=a(i.file),f=b(i.entities);u&&t.push(`${u}: ${V(f,5)}`)}}if(!s&&Array.isArray(e.rows)&&e.rows.length>0){t.push("moves:");for(const i of e.rows.filter(y)){const u=a(i.target),f=i.ok===!1&&b(i.appliedEntities).length>0?b(i.appliedEntities):b(i.entities);if(u&&f.length>0&&t.push(`${u}: ${V(f,5)}`),i.ok===!1){const c=a(i.code),m=a(i.error);c&&t.push(`code: ${c}`),m&&t.push(m)}}}if(Array.isArray(e.notRun)&&e.notRun.length>0){t.push("not run:");for(const i of e.notRun.filter(y)){const u=a(i.target),f=b(i.entities);u&&t.push(`${u}: ${V(f,5)}`)}}if(y(e.remainingSource)){const i=b(e.remainingSource.symbols);i.length===0?e.remainingSource.hasNonDeclarationText===!0?(t.push("source has no declarations"),t.push("source file still has non-declaration text")):t.push("source is empty"):e.expectEmpty===!0&&(t.push("source still contains:"),t.push(V(i,15)))}if(Array.isArray(e.blocking)&&e.blocking.length>0&&ht(t,e.blocking.filter(y)),e.status!=="running"&&Array.isArray(e.filesWritten)&&e.filesWritten.length>0){t.push("filesWritten:");for(const i of e.filesWritten.filter(u=>typeof u=="string"))t.push(i)}return y(e.postMutation)&&y(e.postMutation.cycles)&&gt(t,e.postMutation.cycles),typeof e.next=="string"&&!(Array.isArray(e.blocking)&&e.blocking.length>0)&&t.push(`next: ${e.next}`),t.join(`
3
- `)}function ht(e,t){const n=t.filter(i=>a(i.code)==="MODULE_PLAN_SYMBOL_NOT_FOUND").map(i=>a(i.entity)).filter(i=>!!i),o=t.filter(i=>a(i.code)==="MODULE_PLAN_SYMBOL_AMBIGUOUS").map(i=>a(i.entity)).filter(i=>!!i),r=n.length+o.length;n.length>0&&e.push(`not found symbols: ${n.join(", ")}`),o.length>0&&e.push(`ambiguous symbols: ${o.join(", ")}`);const s=t.filter(i=>a(i.code)!=="MODULE_PLAN_SYMBOL_NOT_FOUND"&&a(i.code)!=="MODULE_PLAN_SYMBOL_AMBIGUOUS");if(!(r>0&&s.length===0)){e.push("blocking:");for(const i of s.length>0?s:t){const u=a(i.target),f=a(i.entity),c=a(i.code),m=a(i.error),p=a(i.hint),P=a(i.next);u&&e.push(u),(f||c)&&e.push([f,c].filter(Boolean).join(": ")),m&&e.push(m),p&&e.push(`hint: ${p}`),P&&e.push(`next: ${P}`)}}}function gt(e,t){e.push("cycles:");const n=j(t.newOrChangedCount)??0;if(n===0){e.push("no new/changed cycles involving touched files");return}const o=Array.isArray(t.components)?t.components.filter(y):[];e.push(Pt(n,o)),o.forEach((r,s)=>{(0,me.appendCycleComponentText)(e,r,{detail:"imports",prefix:o.length===1?"":`${s+1}. `,indent:o.length===1?"":" "})})}function Pt(e,t){const n=t.map(s=>a(s.kind)??"mixed"),o=Array.from(new Set(n)),r=o.length===1?`${o[0]} `:"";return`${e} new/changed ${r}${e===1?"cycle":"cycles"} involving touched files`}function Q(e){return Array.isArray(e.modules)?e.modules.filter(y):[]}function we(e){return e.reduce((t,n)=>{const o=U(n);if(o.length>0)return t+o.length;const r=Array.isArray(n.entities)?n.entities:[],s=Array.isArray(n.symbols)?n.symbols:[];return t+Math.max(r.length,s.length)},0)}function Mt(e){return e.reduce((t,n)=>t+b(n.entities).length,0)}function U(e){return(Array.isArray(e.symbols)?e.symbols.filter(y):[]).map(n=>a(n.raw)??a(n.selector)??a(n.entity)).filter(n=>!!n)}function Se(e,t){const n=t.sourceFile??t.file;if(!n)throw new k.CliError("MODULE_PLAN_SOURCE_REQUIRED","modulePlan expects sourceFile or file.");return(0,d.resolveCliFilePath)(e,n)}function Et(e){return Array.isArray(e.blocking)?e.blocking.filter(y):[]}function X(e){return ke(e,15)}async function Re(e,t,n){try{const o=await(0,D.resolveCompatibleTargetInstance)(e,ue.CLI_COMMAND_IDS.inspect,n),r=await(0,ie.postJson)(o.entry,se.EXTENSION_ROUTES.inspect,{requests:[{op:"file",file:t}]},(0,D.extensionRequestOptions)(n));return{file:(0,d.formatRelativePath)(e,t),symbols:bt(r),hasNonDeclarationText:xt(r,t)}}catch{return null}}function xt(e,t){const o=(Array.isArray(e.results)?e.results.filter(y):[])[0]??e;if(o.hasNonDeclarationText===!0)return!0;const r=a(o.sourceFile)??t;if(!r)return!1;try{return O.existsSync(r)&&O.statSync(r).isFile()&&O.readFileSync(r,"utf8").trim()!==""}catch{return!1}}function bt(e){const n=(Array.isArray(e.results)?e.results.filter(y):[])[0]??e;return(Array.isArray(n.symbols)?n.symbols:Array.isArray(n.items)?n.items:Array.isArray(n.declarations)?n.declarations:[]).map(_t).filter(r=>!!r)}function _t(e){if(typeof e=="string")return ve(e);if(!y(e))return null;const t=a(e.raw)??a(e.selector)??a(e.entity)??a(e.name)??a(e.label)??a(e.text);return t?ve(t):null}function ve(e){return(e.replace(/^export\s+/,"").trim().split(/\s+/)[0]??"").replace(/\(.*/,"").replace(/^[a-z]-/,"")||null}function ke(e,t){const n=e.slice(0,t),o=e.length-n.length;return o>0?[...n,`+ ${o} more`]:n}function V(e,t){const n=e.slice(0,t),o=e.length-n.length;return o>0?`${n.join(", ")}, +${o} more`:n.join(", ")}function Ct(e){return!!(e&&typeof e=="object"&&!Array.isArray(e)&&e.execute===!0)}function Te(e,t){const n=e.indexOf(t);if(n<0)return null;const o=e[n+1];return o&&!o.startsWith("--")?o:null}function a(e){return typeof e=="string"&&e.trim()!==""?e.trim():null}function j(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function b(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function Z(e){return Array.from(new Set(e)).sort((t,n)=>t.localeCompare(n))}function W(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t==null?!1:!(Array.isArray(t)&&t.length===0)))}function y(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Ne(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,Le(n)]))}function Le(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?e:Array.isArray(e)?e.map(t=>Le(t)):e&&typeof e=="object"?Ne(e):String(e)}
1
+ "use strict";var Oe=exports&&exports.__createBinding||(Object.create?(function(e,t,n,o){o===void 0&&(o=n);var r=Object.getOwnPropertyDescriptor(t,n);(!r||("get"in r?!t.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,r)}):(function(e,t,n,o){o===void 0&&(o=n),e[o]=t[n]})),$e=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),re=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var o=[];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(o[o.length]=r);return o},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var o=e(t),r=0;r<o.length;r++)o[r]!=="default"&&Oe(n,t,o[r]);return $e(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runApplyModulePlan=qe,exports.reviseCachedModulePlan=Be,exports.readCachedModulePlanExecution=ze;const F=re(require("node:path")),O=re(require("node:fs")),E=require("zod"),ie=require("../client/http-client"),$=require("../shared/agent-text"),k=require("../shared/errors"),se=require("../shared/routes"),le=require("./session-workspace"),ae=require("./session-workspace"),D=require("./shared"),ue=require("../shared/protocol"),ce=require("./inspect-format"),De=require("./json-file-input"),Ue=require("./move-to-file"),d=require("./module-plan-cache"),fe=require("../metrics/central-metrics"),de=require("./module-plan-timeout"),me=require("./inspect-cycles"),_=require("../config/env-vars"),H=require("../config/product-storage"),R=require("../shared/event-loop"),h=require("../diagnostics/module-plan-timeline"),je=E.z.object({targetFile:E.z.string().min(1).optional(),target:E.z.string().min(1).optional(),file:E.z.string().min(1).optional(),symbols:E.z.array(E.z.union([E.z.string().min(1),E.z.object({}).passthrough()])).optional(),entities:E.z.array(E.z.union([E.z.string().min(1),E.z.object({}).passthrough()])).optional()}).passthrough(),We=E.z.object({sourceFile:E.z.string().min(1).optional(),file:E.z.string().min(1).optional(),facadeFile:E.z.string().min(1).optional(),facade:E.z.string().min(1).optional(),modules:E.z.array(je).optional(),execute:E.z.boolean().optional(),planId:E.z.string().min(1).optional()}).passthrough();async function qe(e,t,n,o={},r={}){const s=Te(t,"--plan"),i=Te(t,"--from-json");if(i&&n!==void 0)throw new k.CliError("APPLY_MODULE_PLAN_INPUT_SOURCE_CONFLICT","Use either modulePlan --stdin or modulePlan --from-json, not both.");const u=i?(0,De.readJsonObjectFile)(e,i,"INVALID_MODULE_PLAN_JSON_FILE"):n,f=t.includes("--execute")||Ct(u),c=u===void 0?{}:We.parse(u),m=typeof c.planId=="string"?c.planId:void 0,p=s??m;if(p&&u===void 0||f&&p)return J(e,p,o,"modulePlan.apply",r.executionId);if(f&&!p){(0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.enter",{hasExecutionId:!!r.executionId});const P=Ye();if(r.executionId&&P>0){const g=Me(e,r.executionId,"modulePlan.execute",c);g.phase="preview",I(e,g),(0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.pending.persisted",{rowCount:g.rowCount,entityCount:g.entityCount,syncWaitMs:P});const l=Date.now(),C=Ke();(0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.background.schedule");const w=Ve(()=>(0,H.runWithProductStorageOverride)(C[_.CLI_ENV.productStorageDir],()=>He(C,()=>((0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.background.start"),pe(e,c,o,r,g)))));(0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.wait.start",{syncWaitMs:P});const A=await Je(w,P);return A.status==="result"?((0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.wait.result"),A.result):(w.catch(()=>{}),(0,h.recordModulePlanTimeline)(e,r.executionId,"modulePlan.execute.wait.deadline",{elapsedMs:Date.now()-l}),Ge(e,r.executionId,"modulePlan.execute",Date.now()-l))}return pe(e,c,o,r)}return ye(e,c,o)}async function pe(e,t,n,o,r){const s=r??(o.executionId?Me(e,o.executionId,"modulePlan.execute",t):void 0);s&&((0,h.recordModulePlanTimeline)(e,s.executionId,"modulePlan.executePayload.start"),s.phase="preview",I(e,s),await(0,R.yieldToEventLoop)());let i;try{(0,h.recordModulePlanTimeline)(e,s?.executionId,"modulePlan.preview.start"),i=await ye(e,t,n,"modulePlan.execute-preview"),(0,h.recordModulePlanTimeline)(e,s?.executionId,"modulePlan.preview.end",{ok:i.ok!==!1,moduleCount:typeof i.moduleCount=="number"?i.moduleCount:null})}catch(u){throw s&&(s.status="failed",s.error=u instanceof Error?u.message:String(u),I(e,s)),u}return i.ok===!1||typeof i.planId!="string"?(s&&(s.status="failed",s.planId=typeof i.planId=="string"?i.planId:s.planId,s.error="modulePlan preview failed before execute.",I(e,s)),i):(s&&(s.planId=i.planId,s.phase="mutation",I(e,s),(0,h.recordModulePlanTimeline)(e,s.executionId,"modulePlan.mutation.phase.persisted",{planId:i.planId}),await(0,R.yieldToEventLoop)()),J(e,i.planId,n,"modulePlan.execute",o.executionId))}function Be(e,t){const n=(0,d.readModulePlanRecord)(e,t),o={operation:"modulePlan.revise",fromPlanId:t,planId:t,executable:n.executable!==!1,summary:n.executable===!1?"semantic module plan still has blocking move diagnostics":"semantic module plan already executable",changes:[],resolved:[],remainingBlocking:Et(n.previewResult),next:n.executable===!1?"Fix the plan manually, then rerun modulePlan preview.":`aib modulePlan apply ${t}`};return n.executable===!1&&(o.ok=!1,o.code="MODULE_PLAN_REVISE_NOT_APPLICABLE"),(0,$.attachAgentText)(o,z(o))}function ze(e,t){const n=(0,d.readModulePlanExecutionStatus)(e,t),o=n.rows,r=n.status==="failed"?Xe(e,n.planId,o.length):[],s=[...ge(o),...r],i={operation:"execution.status",executionId:n.executionId,planId:n.planId,status:n.status,summary:Y(n),progress:`${n.completedRows}/${n.rowCount}`,entityProgress:`${n.completedEntities??0}/${n.entityCount??0}`,filesWritten:X(n.filesWritten.map(u=>(0,d.formatRelativePath)(e,u)).sort((u,f)=>u.localeCompare(f))),rows:o,...s.length>0?{notRun:s}:{},...n.remainingSource?{remainingSource:n.remainingSource}:{},...n.phase?{phase:n.phase}:{},...n.postMutation?{postMutation:n.postMutation}:{},updatedAt:n.updatedAt,...n.error?{error:n.error}:{}};return(0,$.attachAgentText)(i,z(i))}function Ve(e){return new Promise((t,n)=>{setImmediate(()=>{e().then(t,n)})})}function Ke(){const e=[_.CLI_ENV.productStorageDir,_.CLI_ENV.trace,_.CLI_ENV.traceDir,_.CLI_ENV.metrics,_.CLI_ENV.metricsDir,_.CLI_ENV.metricsTag,_.CLI_ENV.mutationImpactMetrics,_.CLI_ENV.mutationImpactStream,_.CLI_ENV.testMoveToFileFailEntity,_.CLI_ENV.testPostMutationCyclesDelayMs,_.CLI_ENV.modulePlanDebugTimeline],t={};for(const n of e)t[n]=process.env[n];return t}async function He(e,t){const n={};for(const[o,r]of Object.entries(e))n[o]=process.env[o],r===void 0?delete process.env[o]:process.env[o]=r;try{return await t()}finally{for(const[o,r]of Object.entries(n))r===void 0?delete process.env[o]:process.env[o]=r}}async function Je(e,t){let n=null;try{return await Promise.race([e.then(o=>({status:"result",result:o})),new Promise(o=>{n=setTimeout(()=>o({status:"deadline"}),t)})])}finally{n&&clearTimeout(n)}}function Ye(){const e=process.env[_.CLI_ENV.modulePlanSyncWaitMs];if(e!==void 0){const t=Number.parseInt(e,10);return!Number.isFinite(t)||t<=0?0:Math.min(t,12e4)}return 12e4}function Ge(e,t,n,o){const r=(0,d.readModulePlanExecutionStatus)(e,t),s=y(r.timeoutHint)&&typeof r.timeoutHint.estimatedDurationMs=="number"?r.timeoutHint.estimatedDurationMs:null,i=s===null?null:Math.max(0,s-o),u={operation:"execution.status",executionId:r.executionId,planId:r.planId,status:r.status,...r.phase?{phase:r.phase}:{},summary:Y(r),progress:`${r.completedRows}/${r.rowCount}`,entityProgress:`${r.completedEntities??0}/${r.entityCount??0}`,expectEmpty:r.expectEmpty===!0,filesWritten:X(r.filesWritten.map(f=>(0,d.formatRelativePath)(e,f)).sort((f,c)=>f.localeCompare(c))),rows:r.rows,updatedAt:r.updatedAt,...i!==null?{estimatedRemainingMs:i}:{}};return(0,$.attachAgentText)(u,Qe(n,r,i))}function Qe(e,t,n){const o=[`${e} ${t.executionId}`,Y(t)];return t.phase==="preview"?o.push("previewing plan"):t.phase==="mutation"?o.push("applying mutation"):t.phase==="postMutation.cycles"&&(o.push("mutation completed"),o.push("checking cycles")),n!==null&&o.push(n>0?`estimated remaining: ${(0,de.formatModulePlanTimeoutEstimate)(Math.max(n,5e3))}`:"estimated remaining: check status again soon"),o.join(`
2
+ `)}async function ye(e,t,n,o="modulePlan.preview"){(0,h.recordModulePlanTimeline)(e,void 0,"modulePlan.preview.resolveInstance.start",{operation:o});const r=await(0,D.resolveCompatibleTargetInstance)(e,ue.CLI_COMMAND_IDS.modulePlan,n);(0,h.recordModulePlanTimeline)(e,void 0,"modulePlan.preview.resolveInstance.end",{operation:o});const s=await(0,D.fetchEffectiveConfig)(r.entry,n),i=Se(e,t),u=ct(e,t,i,s),f=(0,d.buildModulePlanId)(u),c=await Ze(e,u,n,r),m=(0,d.hashFile)(i),p=(0,d.buildModulePlanHash)(u,m,c),P={planId:f,planHash:p,createdAt:new Date().toISOString(),cwd:F.resolve(e),sourceFile:i,sourceHash:m,executable:c.ok!==!1,normalizedRequest:u,inspectPayload:{requests:[u]},previewDir:"",previewResult:c};(0,d.writeModulePlanRecord)(e,P);const g={...c.ok===!1?{ok:!1,code:"MODULE_PLAN_BLOCKED"}:{},operation:o,planId:f,executable:c.ok!==!1,summary:Ie(c,!1),...typeof c.moduleCount=="number"?{moduleCount:c.moduleCount}:{},...Array.isArray(c.targets)?{targets:c.targets}:{},...Array.isArray(c.blocking)&&c.blocking.length>0?{blocking:c.blocking}:{},next:c.ok===!1?"Fix the plan, then rerun modulePlan preview.":`aib modulePlan apply ${f}`};return(0,$.attachAgentText)(g,z(g))}function Xe(e,t,n){if(t==="pending")return[];try{const o=(0,d.readModulePlanRecord)(e,t);return he(e,Q(o.normalizedRequest),n)}catch{return[]}}async function Ze(e,t,n,o){const r=Q(t),s=a(t.sourceFile)??"",i=await et(e,o,s,r,n);if(i)return i;const u=[],f=[],c=[];for(const m of r){await(0,R.yieldToEventLoop)();const p=a(m.targetFile)??"",P=U(m);(0,h.recordModulePlanTimeline)(e,void 0,"modulePlan.preview.row.start",{target:(0,d.formatRelativePath)(e,p),entityCount:P.length});const g=await Pe(e,s,p,P,m,!1,n);(0,h.recordModulePlanTimeline)(e,void 0,"modulePlan.preview.row.end",{target:(0,d.formatRelativePath)(e,p),ok:g.ok!==!1});const l=Ce("preview",e,s,p,P,g);if(f.push(l),u.push({file:(0,d.formatRelativePath)(e,p),entities:P,...typeof l.summary=="string"?{summary:l.summary}:{}}),l.ok===!1){c.push(l);break}await(0,R.yieldToEventLoop)()}return{op:"modulePlan",ok:c.length===0,sourceFile:s,moduleCount:r.length,targets:u,rows:f,...c.length>0?{blocking:c}:{},cycles:"notChecked"}}async function et(e,t,n,o,r){const s=await(0,ie.postJson)(t.entry,se.EXTENSION_ROUTES.inspect,{requests:[{op:"file",sourceFile:n,includeRanges:!1}]},(0,D.extensionRequestOptions)(r)),i=Array.isArray(s.results)?s.results.find(y):null,u=Array.isArray(i?.symbols)?i.symbols.filter(y):[];if(u.length===0)return null;const f=[],c=[],m=[];for(const p of o){const P=a(p.targetFile)??"",g=U(p),l={target:(0,d.formatRelativePath)(e,P),entities:g,ok:!0,summary:P&&!O.existsSync(P)?"target will be created":"target ready"};for(const C of tt(p)){const w=u.filter(A=>nt(A,C));if(w.length===0){l.ok=!1,l.entity=C.raw,l.code="MODULE_PLAN_SYMBOL_NOT_FOUND",l.error=`Symbol not found: ${C.raw}`,l.source=(0,d.formatRelativePath)(e,n);break}if(!C.symbolKind&&w.length>1){l.ok=!1,l.entity=C.raw,l.code="MODULE_PLAN_SYMBOL_AMBIGUOUS",l.error=`Ambiguous symbol: ${C.raw}`,l.available=w.map(A=>`${a(A.kind)??"symbol"}:${a(A.name)??C.symbolName}`),l.source=(0,d.formatRelativePath)(e,n);break}}if(f.push(W(l)),c.push({file:(0,d.formatRelativePath)(e,P),entities:g,...typeof l.summary=="string"?{summary:l.summary}:{}}),l.ok===!1){m.push(W(l));break}}return m.length===0?null:{op:"modulePlan",ok:!1,sourceFile:n,moduleCount:o.length,targets:c,rows:f,blocking:m,cycles:"notChecked"}}function tt(e){return(Array.isArray(e.symbols)?e.symbols.filter(y):[]).map(n=>{const o=a(n.raw)??a(n.symbolName)??"",r=a(n.symbolName)??o,s=a(n.symbolKind)??void 0;return{raw:o,symbolName:r,...s?{symbolKind:s}:{}}})}function nt(e,t){return a(e.name)!==t.symbolName?!1:!t.symbolKind||a(e.kind)===t.symbolKind}async function J(e,t,n,o="modulePlan.apply",r,s){const i=(0,d.readModulePlanRecord)(e,t);if(i.executable===!1||i.previewResult.ok===!1)throw new k.CliError("APPLY_MODULE_PLAN_NOT_EXECUTABLE","Module plan has blocking move diagnostics. Fix the plan before applying.",{planId:t,next:"Fix the plan, then rerun modulePlan preview."});if((0,d.hashFile)(i.sourceFile)!==i.sourceHash)throw new k.CliError("APPLY_MODULE_PLAN_SOURCE_CHANGED","Source file changed after modulePlan preview. Rerun modulePlan preview.",{planId:t,sourceFile:(0,d.formatRelativePath)(e,i.sourceFile)});const f=Q(i.normalizedRequest),c=[],m=new Set,p=i.sourceFile,P=f.map(M=>a(M.targetFile)).filter(M=>!!M),g=Z([p,...P]),l=s??ot(e,i,o,f,r);(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.apply.start",{operation:o,rowCount:f.length,entityCount:l.entityCount});const C={executionId:l.executionId,planId:i.planId,parentOperation:o,sourceFile:(0,d.formatRelativePath)(e,p),rowCount:f.length,entityCount:l.entityCount},w=(0,fe.startCentralMetricSpan)({kind:"mutation.execution",operation:o,cwd:F.resolve(e),...C});I(e,l),(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.apply.execution.persisted"),await(0,R.yieldToEventLoop)(),(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.cycles.pre.start",{fileCount:g.length});const A=be(e,g);(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.cycles.pre.end",{componentCount:j(A.componentCount)??null});try{for(let b=0;b<f.length;b+=1){await(0,R.yieldToEventLoop)();const S=f[b],N=a(S.targetFile)??"",K=U(S),Fe=Mt(c.filter(L=>L.ok!==!1));(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.apply.row.start",{rowIndex:b,target:(0,d.formatRelativePath)(e,N),entityCount:K.length});const oe=await Pe(e,p,N,K,S,!0,n,{onProgress:L=>it(e,l,Fe,L,Array.from(m)),metricsContext:{...C,rowIndex:b,rowTargetFile:(0,d.formatRelativePath)(e,N)}}),q=Ce("execute",e,p,N,K,oe);c.push(q),(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.apply.row.end",{rowIndex:b,target:(0,d.formatRelativePath)(e,N),ok:q.ok!==!1});for(const L of x(oe.filesWritten))m.add((0,d.resolveCliFilePath)(e,L));if(rt(e,l,q,Array.from(m)),await(0,R.yieldToEventLoop)(),q.ok===!1)break}const M=c.every(b=>b.ok!==!1);if(M){l.phase="postMutation.cycles",I(e,l),(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.cycles.phase.persisted"),await(0,R.yieldToEventLoop)(),await at();const b=Z([...g,...Array.from(m)]);(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.cycles.post.start",{fileCount:b.length});const S=be(e,b);(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.cycles.post.end",{componentCount:j(S.componentCount)??null}),l.postMutation={cycles:st(A,S,new Set(_e(e,b)))}}l.status=M?"completed":"failed",M&&(l.phase="completed"),l.failedRows=c.filter(b=>b.ok===!1).length,l.filesWritten=Array.from(m).sort((b,S)=>b.localeCompare(S));const T=await Re(e,p,n);T&&(l.remainingSource=T),I(e,l),(0,h.recordModulePlanTimeline)(e,l.executionId,"modulePlan.apply.execution.final.persisted",{status:l.status,completedRows:l.completedRows,completedEntities:l.completedEntities})}catch(M){throw l.status="failed",l.error=M instanceof Error?M.message:String(M),l.filesWritten=Array.from(m).sort((T,b)=>T.localeCompare(b)),I(e,l),w.end({ok:!1,status:l.status,error:M instanceof Error?M.message:String(M),completedRows:l.completedRows,failedRows:l.failedRows,completedEntities:l.completedEntities,filesWrittenCount:l.filesWritten.length}),M}const v=c.every(M=>M.ok!==!1),ee=v?[]:he(e,f,c.length),te=v?[]:[...ge(c),...ee];Ee(e,l);const ne={...v?{}:{ok:!1,code:"MODULE_PLAN_APPLY_FAILED"},operation:o,applied:v,planId:i.planId,executionId:l.executionId,expectEmpty:i.normalizedRequest.expectEmpty===!0,summary:Ie({rows:[...c,...ee]},!0),rows:c,...te.length>0?{notRun:te}:{},remainingSource:await Re(e,p,n),...l.postMutation?{postMutation:l.postMutation}:{},...G(i.previewResult).length>0?{createdFiles:ke(G(i.previewResult),8)}:{},filesWritten:X(Array.from(m).sort((M,T)=>M.localeCompare(T)).map(M=>(0,d.formatRelativePath)(e,M))),...v?{}:{next:"Fix failed move row and rerun modulePlan preview."}};return w.end({ok:v,status:l.status,completedRows:l.completedRows,failedRows:l.failedRows,completedEntities:l.completedEntities,filesWrittenCount:l.filesWritten.length}),(0,fe.recordCentralMetric)({kind:"mutation.summary",operation:o,cwd:F.resolve(e),ok:v,status:l.status,executionId:l.executionId,planId:i.planId,rowCount:l.rowCount,completedRows:l.completedRows,failedRows:l.failedRows,entityCount:l.entityCount,completedEntities:l.completedEntities,filesWrittenCount:l.filesWritten.length}),(0,$.attachAgentText)(ne,z(ne))}function he(e,t,n){return t.slice(n).map(o=>W({target:(0,d.formatRelativePath)(e,a(o.targetFile)??""),entities:U(o)}))}function ge(e){return e.map(t=>W({target:a(t.target)??"",entities:x(t.notRunEntities)})).filter(t=>x(t.entities).length>0)}async function Pe(e,t,n,o,r,s,i,u={}){const f=await(0,Ue.runMoveToFile)(e,{sourceFile:t,targetFile:n,entities:o,execute:s},i,[],u);return f.ok!==!1,f}function ot(e,t,n,o,r){const s=new Date().toISOString(),i=r??(0,d.buildModulePlanExecutionId)(t.planId),u=we(o);return{executionId:i,planId:t.planId,operation:n,cwd:F.resolve(e),sourceFile:t.sourceFile,status:"running",phase:"mutation",startedAt:s,updatedAt:s,rowCount:o.length,completedRows:0,failedRows:0,entityCount:u,completedEntities:0,expectEmpty:t.normalizedRequest.expectEmpty===!0,filesWritten:[],rows:[],timeoutHint:ut(t.normalizedRequest),productStorageDir:(0,H.productStorageRoot)()}}function Me(e,t,n,o){const r=new Date().toISOString(),s=Array.isArray(o.modules)?o.modules.filter(y):[];return{executionId:t,planId:"pending",operation:n,cwd:F.resolve(e),sourceFile:o.sourceFile||o.file?Se(e,o):"",status:"running",phase:"mutation",startedAt:r,updatedAt:r,rowCount:s.length,completedRows:0,failedRows:0,entityCount:we(s),completedEntities:0,expectEmpty:o.expectEmpty===!0,filesWritten:[],rows:[],productStorageDir:(0,H.productStorageRoot)()}}function rt(e,t,n,o){t.rows.push(n),t.completedRows=t.rows.filter(r=>r.ok!==!1).length,t.failedRows=t.rows.filter(r=>r.ok===!1).length,t.completedEntities=dt(t.rows),t.filesWritten=o.sort((r,s)=>r.localeCompare(s)),n.ok===!1&&(t.status="failed"),I(e,t)}function it(e,t,n,o,r){t.completedEntities=n+o.completedEntities,t.filesWritten=Array.from(new Set([...r,...o.filesWritten.map(s=>(0,d.resolveCliFilePath)(e,s))])).sort((s,i)=>s.localeCompare(i)),o.ok||(t.status="failed"),I(e,t)}function I(e,t){(0,d.writeModulePlanExecutionStatus)(e,t),Ee(e,t)}function Ee(e,t){if(!(0,ae.sessionWorkspaceExists)(e))return null;try{return(0,ae.saveSessionOutputJson)(e,"execution",`modulePlan-${t.executionId}`,t)}catch{return null}}function be(e,t){const n=_e(e,t).filter(r=>O.existsSync((0,d.resolveCliFilePath)(e,r)));if(n.length===0)return{op:"cycles",componentCount:0,components:[]};const o=["cycles"];for(const r of n)o.push("--files",r);return o.push("--detail","imports","--limit","50"),(0,me.runInspectCycles)(e,o,void 0)}function st(e,t,n){const o=new Set(B(e).map(xe)),r=B(t).filter(s=>x(s.files).some(i=>n.has(i))&&!o.has(xe(s)));return{status:r.length>0?"new-or-changed":"none",detail:"imports",newOrChangedCount:r.length,preComponentCount:j(e.componentCount)??B(e).length,postComponentCount:j(t.componentCount)??B(t).length,components:r}}function B(e){return(Array.isArray(e.components)?e.components:[]).filter(y).map(t=>({kind:a(t.kind)??"mixed",files:x(t.files).sort(),chain:a(t.chain)??"",...y(t.cycle)?{cycle:t.cycle}:{},imports:lt(t)}))}function lt(e){const t=y(e.cycle)?e.cycle:{};return x(t.imports)}function xe(e){return`${a(e.kind)??"mixed"}:${x(e.files).sort().join("|")}`}function _e(e,t){return Z(t.map(n=>(0,d.formatRelativePath)(e,(0,d.resolveCliFilePath)(e,n))))}async function at(){const e=process.env[_.CLI_ENV.testPostMutationCyclesDelayMs],t=e?Number.parseInt(e,10):0;!Number.isFinite(t)||t<=0||await new Promise(n=>setTimeout(n,Math.min(t,6e4)))}function Y(e){const t=e.filesWritten.length,n=`${e.completedRows}/${e.rowCount}`,o=e.entityCount??0,r=e.completedEntities??0,s=o>0?`, ${Math.floor(r/o*100)}% entities`:"",i=e.status==="running"&&e.phase==="postMutation.cycles"?`${n} rows${s}`:`${e.status==="running"?"in progress":e.status}, ${n} rows${s}`;return t>0?`${i}, ${t} ${t===1?"file":"files"} written`:i}function ut(e){return(0,de.buildModulePlanTimeoutHintFromRequest)(e)??{recommendedTimeoutMs:9e4,rowCount:0,symbolCount:0,message:"If the calling agent times out, inspect progress with: aib execution status last"}}function ct(e,t,n,o){const r=t.modules??[];if(r.length===0)throw new k.CliError("MODULE_PLAN_MODULES_REQUIRED","modulePlan expects a non-empty modules array.");const s=r.map(i=>{const u=i.target??i.targetFile??i.file;if(!u)throw new k.CliError("MODULE_PLAN_TARGET_REQUIRED","Each module expects target.");const f=i.entities??i.symbols??[];if(f.length===0)throw new k.CliError("MODULE_PLAN_ENTITIES_REQUIRED","Each module expects a non-empty entities array.");return{targetFile:(0,d.resolveCliFilePath)(e,u),symbols:f.map(c=>ft(c,o))}});return{op:"modulePlan",sourceFile:n,...t.expectEmpty===!0?{expectEmpty:!0}:{},modules:s}}function ft(e,t){if(typeof e=="string"){const o=(0,ce.parseInspectSelector)(e,t);return{raw:e,symbolName:o.symbolName,...o.symbolKind?{symbolKind:o.symbolKind}:{}}}const n=a(e.entity)??a(e.selector)??a(e.raw);if(n){const o=(0,ce.parseInspectSelector)(n,t);return{raw:n,symbolName:o.symbolName,...o.symbolKind?{symbolKind:o.symbolKind}:{}}}return Ne(e)}function Ce(e,t,n,o,r,s){const i={target:(0,d.formatRelativePath)(t,o),entities:r,ok:s.ok!==!1,summary:typeof s.summary=="string"?s.summary:null};if(e==="preview"&&typeof s.previewId=="string"&&(i.movePreviewId=s.previewId),Array.isArray(s.files)&&(i.files=s.files),Array.isArray(s.filesWritten)&&(i.filesWritten=s.filesWritten),s.ok===!1){const u=pt(s),f=a(u?.entity)??r[0]??null,m=(Array.isArray(s.results)?s.results.filter(y):[]).filter(g=>g.ok!==!1).map(g=>a(g.entity)).filter(g=>!!g),p=f?r.indexOf(f):-1,P=p>=0?r.slice(p+1):[];i.appliedEntities=m,i.notRunEntities=P,i.entity=f,i.code=a(u?.code)??a(s.code)??"MOVE_TO_FILE_FAILED",i.error=yt(a(u?.error)??a(s.error)??"Move failed."),i.hint=mt(t,a(u?.code),a(u?.hint)),i.next=a(u?.next),i.source=(0,d.formatRelativePath)(t,n)}return W(i)}function dt(e){return e.reduce((t,n)=>n.ok===!1?t+x(n.appliedEntities).length:t+x(n.entities).length,0)}function mt(e,t,n){return n?t==="TS_MOVE_TO_FILE_UNSUPPORTED_BY_ENGINE"?(0,le.useSessionGuidance)(e,"modulePlan.tsMoveUnsupportedHint",n,(0,le.readSessionNumberPref)(e,"diagnostics.hintLimit",2))??null:n:null}function pt(e){return(Array.isArray(e.results)?e.results.filter(y):[]).find(n=>n.ok===!1)??null}function yt(e){return e.replace(/^TypeScript refactor failed: Debug Failure\. False expression: /,"")}function Ie(e,t){const n=Array.isArray(e.rows)?e.rows.filter(y):[],o=n.reduce((m,p)=>m+x(p.entities).length,0),r=n.filter(m=>m.ok===!1).length,s=n.length,i=t?G(e).length:n.filter(m=>Ae(m)).length,u=t?Array.from(new Set(n.flatMap(m=>x(m.filesWritten).filter(p=>!p.startsWith("+"))))).length:0;if(r>0)return`${o} ${o===1?"symbol":"symbols"}, ${r} blocked`;const f=`${o} ${o===1?"symbol":"symbols"}, ${s} ${s===1?"target":"targets"} ${t?"moved":"ready"}`,c=[];return t&&u>0&&c.push(`${u} ${u===1?"file":"files"} written`),i>0&&c.push(`${i} ${i===1?"file":"files"} ${t?"created":"will be created"}`),c.length>0?`${f}; ${c.join(", ")}`:f}function Ae(e){return typeof e.summary=="string"&&e.summary.includes("target will be created")}function G(e){return(Array.isArray(e.rows)?e.rows.filter(y):[]).filter(n=>Ae(n)).map(n=>a(n.target)).filter(n=>!!n)}function z(e){const t=[],n=a(e.operation)??"modulePlan",o=a(e.planId),r=a(e.executionId);if(n!=="execution.status"){const i=n==="modulePlan.apply"||n==="modulePlan.execute"?r??o:o;t.push(i?`${n} ${i}`:n)}e.executable===!1&&t.push("blocked"),typeof e.summary=="string"&&t.push(e.summary),n==="execution.status"&&e.status==="running"&&e.phase==="postMutation.cycles"&&(t.push("mutation completed"),t.push("checking cycles"));const s=n==="execution.status"&&e.status==="running"&&e.phase==="postMutation.cycles";if(Array.isArray(e.targets)&&e.targets.length>0){t.push("targets:");for(const i of e.targets.filter(y)){const u=a(i.file),f=x(i.entities);u&&t.push(`${u}: ${V(f,5)}`)}}if(!s&&Array.isArray(e.rows)&&e.rows.length>0){t.push("moves:");for(const i of e.rows.filter(y)){const u=a(i.target),f=i.ok===!1&&x(i.appliedEntities).length>0?x(i.appliedEntities):x(i.entities);if(u&&f.length>0&&t.push(`${u}: ${V(f,5)}`),i.ok===!1){const c=a(i.code),m=a(i.error);c&&t.push(`code: ${c}`),m&&t.push(m)}}}if(Array.isArray(e.notRun)&&e.notRun.length>0){t.push("not run:");for(const i of e.notRun.filter(y)){const u=a(i.target),f=x(i.entities);u&&t.push(`${u}: ${V(f,5)}`)}}if(y(e.remainingSource)){const i=x(e.remainingSource.symbols);i.length===0?e.remainingSource.hasNonDeclarationText===!0?(t.push("source has no declarations"),t.push("source file still has non-declaration text")):t.push("source is empty"):e.expectEmpty===!0&&(t.push("source still contains:"),t.push(V(i,15)))}if(Array.isArray(e.blocking)&&e.blocking.length>0&&ht(t,e.blocking.filter(y)),e.status!=="running"&&Array.isArray(e.filesWritten)&&e.filesWritten.length>0){t.push("filesWritten:");for(const i of e.filesWritten.filter(u=>typeof u=="string"))t.push(i)}return y(e.postMutation)&&y(e.postMutation.cycles)&&gt(t,e.postMutation.cycles),typeof e.next=="string"&&!(Array.isArray(e.blocking)&&e.blocking.length>0)&&t.push(`next: ${e.next}`),t.join(`
3
+ `)}function ht(e,t){const n=t.filter(i=>a(i.code)==="MODULE_PLAN_SYMBOL_NOT_FOUND").map(i=>a(i.entity)).filter(i=>!!i),o=t.filter(i=>a(i.code)==="MODULE_PLAN_SYMBOL_AMBIGUOUS").map(i=>a(i.entity)).filter(i=>!!i),r=n.length+o.length;n.length>0&&e.push(`not found symbols: ${n.join(", ")}`),o.length>0&&e.push(`ambiguous symbols: ${o.join(", ")}`);const s=t.filter(i=>a(i.code)!=="MODULE_PLAN_SYMBOL_NOT_FOUND"&&a(i.code)!=="MODULE_PLAN_SYMBOL_AMBIGUOUS");if(!(r>0&&s.length===0)){e.push("blocking:");for(const i of s.length>0?s:t){const u=a(i.target),f=a(i.entity),c=a(i.code),m=a(i.error),p=a(i.hint),P=a(i.next);u&&e.push(u),(f||c)&&e.push([f,c].filter(Boolean).join(": ")),m&&e.push(m),p&&e.push(`hint: ${p}`),P&&e.push(`next: ${P}`)}}}function gt(e,t){e.push("cycles:");const n=j(t.newOrChangedCount)??0;if(n===0){e.push("no new/changed cycles involving touched files");return}const o=Array.isArray(t.components)?t.components.filter(y):[];e.push(Pt(n,o)),o.forEach((r,s)=>{(0,me.appendCycleComponentText)(e,r,{detail:"imports",prefix:o.length===1?"":`${s+1}. `,indent:o.length===1?"":" "})})}function Pt(e,t){const n=t.map(s=>a(s.kind)??"mixed"),o=Array.from(new Set(n)),r=o.length===1?`${o[0]} `:"";return`${e} new/changed ${r}${e===1?"cycle":"cycles"} involving touched files`}function Q(e){return Array.isArray(e.modules)?e.modules.filter(y):[]}function we(e){return e.reduce((t,n)=>{const o=U(n);if(o.length>0)return t+o.length;const r=Array.isArray(n.entities)?n.entities:[],s=Array.isArray(n.symbols)?n.symbols:[];return t+Math.max(r.length,s.length)},0)}function Mt(e){return e.reduce((t,n)=>t+x(n.entities).length,0)}function U(e){return(Array.isArray(e.symbols)?e.symbols.filter(y):[]).map(n=>a(n.raw)??a(n.selector)??a(n.entity)).filter(n=>!!n)}function Se(e,t){const n=t.sourceFile??t.file;if(!n)throw new k.CliError("MODULE_PLAN_SOURCE_REQUIRED","modulePlan expects sourceFile or file.");return(0,d.resolveCliFilePath)(e,n)}function Et(e){return Array.isArray(e.blocking)?e.blocking.filter(y):[]}function X(e){return ke(e,15)}async function Re(e,t,n){try{const o=await(0,D.resolveCompatibleTargetInstance)(e,ue.CLI_COMMAND_IDS.inspect,n),r=await(0,ie.postJson)(o.entry,se.EXTENSION_ROUTES.inspect,{requests:[{op:"file",file:t}]},(0,D.extensionRequestOptions)(n));return{file:(0,d.formatRelativePath)(e,t),symbols:xt(r),hasNonDeclarationText:bt(r,t)}}catch{return null}}function bt(e,t){const o=(Array.isArray(e.results)?e.results.filter(y):[])[0]??e;if(o.hasNonDeclarationText===!0)return!0;const r=a(o.sourceFile)??t;if(!r)return!1;try{return O.existsSync(r)&&O.statSync(r).isFile()&&O.readFileSync(r,"utf8").trim()!==""}catch{return!1}}function xt(e){const n=(Array.isArray(e.results)?e.results.filter(y):[])[0]??e;return(Array.isArray(n.symbols)?n.symbols:Array.isArray(n.items)?n.items:Array.isArray(n.declarations)?n.declarations:[]).map(_t).filter(r=>!!r)}function _t(e){if(typeof e=="string")return ve(e);if(!y(e))return null;const t=a(e.raw)??a(e.selector)??a(e.entity)??a(e.name)??a(e.label)??a(e.text);return t?ve(t):null}function ve(e){return(e.replace(/^export\s+/,"").trim().split(/\s+/)[0]??"").replace(/\(.*/,"").replace(/^[a-z]-/,"")||null}function ke(e,t){const n=e.slice(0,t),o=e.length-n.length;return o>0?[...n,`+ ${o} more`]:n}function V(e,t){const n=e.slice(0,t),o=e.length-n.length;return o>0?`${n.join(", ")}, +${o} more`:n.join(", ")}function Ct(e){return!!(e&&typeof e=="object"&&!Array.isArray(e)&&e.execute===!0)}function Te(e,t){const n=e.indexOf(t);if(n<0)return null;const o=e[n+1];return o&&!o.startsWith("--")?o:null}function a(e){return typeof e=="string"&&e.trim()!==""?e.trim():null}function j(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function x(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function Z(e){return Array.from(new Set(e)).sort((t,n)=>t.localeCompare(n))}function W(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t==null?!1:!(Array.isArray(t)&&t.length===0)))}function y(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Ne(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,Le(n)]))}function Le(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?e:Array.isArray(e)?e.map(t=>Le(t)):e&&typeof e=="object"?Ne(e):String(e)}
@@ -0,0 +1,2 @@
1
+ "use strict";var S=exports&&exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.runBackgroundCommand=j;const l=S(require("node:fs")),o=S(require("node:path")),h=require("node:child_process"),w=require("../workers/product-storage");function j(e,t){const r=C(t);return r.action==="run-once"?v(e,r):r.action==="status"?O(r):["install","enable","disable","uninstall"].includes(r.action)?V(r):{ok:!1,command:"background",error:`Unknown background action: ${r.action}`,availableActions:["run-once","status","install","enable","disable","uninstall"]}}function v(e,t){const r=Date.now(),n=R(t.configPath),c=I(),a=b(t),u=A(t.lockPath);if(u&&Date.parse(u.expiresAt)>Date.now())return{ok:!0,command:"background",action:"run-once",skipped:!0,reason:"background runner is already locked",lock:u,statusPath:t.statusPath};const g={acquiredAt:new Date().toISOString(),expiresAt:new Date(Date.now()+600*1e3).toISOString(),pid:process.pid};y(t.lockPath,g);const f=new Date().toISOString(),s=[];let k=!0;try{if(n.enabled===!1||a.enabled===!1||c?.background?.enabled===!1||c?.killSwitches?.includes("background"))return a.lastEvaluationAt=f,a.updatedAt=f,a.configVersion=n.configVersion,P(t.statusPath,t.configPath,a),{ok:!0,command:"background",action:"run-once",skipped:!0,reason:"background schedule is disabled",configVersion:n.configVersion,policyVersion:F(c?.configVersion)??null,statusPath:t.statusPath};for(const i of n.routes){const m=a.routes[i.route]??{},N=t.force||E(i,m.lastRunAt,Date.now());if(!i.enabled){s.push({route:i.route,ok:!0,skipped:!0,reason:"route disabled"});continue}if(!N){s.push({route:i.route,ok:!0,skipped:!0,reason:"not due",nextDueAt:M(i,m.lastRunAt)});continue}const d=_(e,i,t.runsDir,t.cliScriptPath);s.push(d),a.routes[i.route]={lastRunAt:f,lastStatus:typeof d.status=="number"?d.status:null,lastOk:d.ok===!0,...typeof d.error=="string"?{lastError:d.error}:{},...typeof d.artifact=="string"?{lastArtifact:d.artifact}:{}},d.ok!==!0&&(k=!1)}}finally{l.default.rmSync(t.lockPath,{force:!0})}return a.updatedAt=new Date().toISOString(),a.lastEvaluationAt=f,a.configVersion=n.configVersion,P(t.statusPath,t.configPath,a),J(t.runsDir,20),{ok:k,command:"background",action:"run-once",configVersion:n.configVersion,evaluatedRoutes:s.length,routes:s,durationMs:Date.now()-r,statusPath:t.statusPath}}function _(e,t,r,n){const c=`${new Date().toISOString().replace(/[:.]/g,"-")}-${t.route}`,a=o.default.join(r,c);l.default.mkdirSync(a,{recursive:!0});const u=o.default.join(a,"stdout.log"),g=o.default.join(a,"stderr.log"),f=o.default.join(a,"summary.json"),s=(0,h.spawnSync)(process.execPath,[n,"worker",t.route,"--",...t.args],{cwd:e,encoding:"utf8",timeout:t.timeoutSeconds*1e3,env:process.env});l.default.writeFileSync(u,s.stdout??"","utf8"),l.default.writeFileSync(g,s.stderr??"","utf8");const k=B(s.stdout),i=s.status===0&&k.ok!==!1,m={ok:i,route:t.route,status:s.status??null,signal:s.signal??null,timeoutMs:t.timeoutSeconds*1e3,stdout:u,stderr:g,payload:k};return y(f,m),{ok:i,route:t.route,status:s.status??null,artifact:f,...i?{}:{error:s.error?.message??(s.stderr?.trim()||"background route failed")}}}function O(e){const t=b(e),r=p(e.configPath),n=D(e);return{ok:!0,command:"background",action:"status",backend:"windows-scheduled-task",installed:n.installed,taskName:e.taskName,wakeCommand:n.command,configPath:e.configPath,statusPath:e.statusPath,lockPath:e.lockPath,configVersion:r?.configVersion??t.configVersion??null,routeCount:r?.routes.length??0,status:t}}function V(e){const t=D(e);if(e.dryRun)return{ok:!0,command:"background",action:e.action,dryRun:!0,backend:"windows-scheduled-task",taskName:e.taskName,wakeCommand:t.command};if(process.platform!=="win32")return{ok:!1,command:"background",action:e.action,error:"Windows Scheduled Task backend is only available on win32."};const r={install:["/Create","/F","/SC","MINUTE","/MO",String(e.wakeEveryMinutes),"/TN",e.taskName,"/TR",t.command],enable:["/Change","/TN",e.taskName,"/ENABLE"],disable:["/Change","/TN",e.taskName,"/DISABLE"],uninstall:["/Delete","/F","/TN",e.taskName]},n=(0,h.spawnSync)("schtasks.exe",r[e.action]??[],{encoding:"utf8"});return{ok:n.status===0,command:"background",action:e.action,backend:"windows-scheduled-task",taskName:e.taskName,wakeCommand:t.command,status:n.status??null,stdout:n.stdout.trim(),stderr:n.stderr.trim()}}function C(e){const t=(0,w.productStorageRoot)(),r=o.default.join(t,"background"),n={action:e[0]??"status",force:!1,dryRun:!1,configPath:o.default.join(r,"schedule-config.json"),statusPath:o.default.join(r,"status.json"),lockPath:o.default.join(r,"lock.json"),runsDir:o.default.join(r,"runs"),cliScriptPath:T(),taskName:"AIB Control Plane Background",wakeEveryMinutes:5};for(let c=1;c<e.length;c+=1){const a=e[c],u=e[c+1];if(a==="--force"){n.force=!0;continue}if(a==="--dry-run"){n.dryRun=!0;continue}if(a==="--config"&&u){n.configPath=o.default.resolve(u),c+=1;continue}if(a==="--task-name"&&u){n.taskName=u,c+=1;continue}if(a==="--cli-script"&&u){n.cliScriptPath=o.default.resolve(u),c+=1;continue}if(a==="--wake-every-minutes"&&u){n.wakeEveryMinutes=Number.parseInt(u,10),c+=1;continue}}return n}function R(e){const t=p(e);if(!t)throw new Error(`Background schedule config not found or invalid: ${e}`);return t}function p(e){try{const t=JSON.parse(l.default.readFileSync(e,"utf8"));return t&&t.schemaVersion===1&&Array.isArray(t.routes)?t:null}catch{return null}}function b(e){try{const t=JSON.parse(l.default.readFileSync(e.statusPath,"utf8"));if(t&&t.schemaVersion===1&&t.routes)return t}catch{}return{schemaVersion:1,updatedAt:new Date().toISOString(),enabled:!0,configPath:e.configPath,routes:{}}}function I(){try{const e=o.default.join((0,w.productStorageRoot)(),"control-plane","policy-config.json"),t=JSON.parse(l.default.readFileSync(e,"utf8"));return t&&typeof t=="object"&&!Array.isArray(t)?t:null}catch{return null}}function P(e,t,r){y(e,{...r,configPath:t,lock:A(o.default.join(o.default.dirname(e),"lock.json"))??void 0})}function A(e){try{const t=JSON.parse(l.default.readFileSync(e,"utf8"));return t&&typeof t=="object"?t:null}catch{return null}}function E(e,t,r){return t?r>=Date.parse(t)+e.intervalMinutes*6e4:!0}function M(e,t){return t?new Date(Date.parse(t)+e.intervalMinutes*6e4).toISOString():null}function D(e){const t=`"${process.execPath}" "${e.cliScriptPath}" background run-once`;return process.platform!=="win32"?{installed:null,command:t}:{installed:(0,h.spawnSync)("schtasks.exe",["/Query","/TN",e.taskName],{encoding:"utf8"}).status===0,command:t}}function T(){return o.default.resolve(process.argv[1]??__filename)}function B(e){try{const t=JSON.parse(e);return t&&typeof t=="object"&&!Array.isArray(t)?t:{ok:!1,error:"worker produced non-object json stdout"}}catch{return{ok:!1,error:e.trim()?`worker produced non-json stdout: ${e.trim()}`:"worker produced no stdout"}}}function F(e){return typeof e=="string"&&e.trim()?e:null}function y(e,t){l.default.mkdirSync(o.default.dirname(e),{recursive:!0}),l.default.writeFileSync(e,`${JSON.stringify(t,null,2)}
2
+ `,"utf8")}function J(e,t){try{const r=l.default.readdirSync(e,{withFileTypes:!0}).filter(n=>n.isDirectory()).map(n=>o.default.join(e,n.name)).sort().reverse();for(const n of r.slice(t))l.default.rmSync(n,{recursive:!0,force:!0})}catch{}}
@@ -1,2 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.attachCapturedInput=$;const h=require("node:crypto"),m=require("../shared/agent-text"),b=require("./session-workspace");function $(e,r,n,t,u){if(!p(n)||y(t))return t;const f=I(r,n),o=A(n,t),c=(0,b.captureSessionInput)(e,f,o,n,u);if(!c)return t;const a=l(n)?"capturedInput":"input",s=t[a]!==void 0?t:{...t,[a]:c.handle};return t.ok!==!1||d(r)?s:g(e,r,f,c,s)}function y(e){if(e.ok===!1)return!1;const r=i(e.operation);return r!==null&&r.endsWith(".execute")}function I(e,r){return e!=="inspect"?e:F(r,"modulePlan")?"modulePlan":"inspect"}function d(e){return e==="inspect"||e==="graph"||e==="modulePlan"||e==="move"||e==="refactor"}function g(e,r,n,t,u){const f=v(r,n,u.operation,t.handle),o=f?(0,b.useSessionGuidance)(e,`failureInputRecovery.${r}.${i(u.operation)??"unknown"}`,`Edit inputFile, then rerun: ${f}`):void 0,c={...u,input:t.handle,inputFile:t.file,...o?{inputNext:o}:{}},a=(0,m.readAgentText)(u);if(!a)return c;const s=[a.trimEnd(),`input: ${t.handle}`,`inputFile: ${t.file}`,...o?[`next: ${o}`]:[]];return(0,m.attachAgentText)(c,s.join(`
2
- `))}function v(e,r,n,t){const u=i(n)??"";return e==="modulePlan"?`aib modulePlan preview --from ${t}`:e==="move"?u==="move.toFile.execute"?`aib move toFile execute --from ${t}`:`aib move toFile preview --from ${t}`:e==="rename"?u==="rename.execute"?`aib rename execute --from ${t}`:`aib rename preview --from ${t}`:e==="refactor"?u==="refactor.batch.execute"?`aib refactor batch execute --from ${t}`:u==="refactor.batch.apply"?`aib refactor batch apply --from ${t}`:`aib refactor batch preview --from ${t}`:r==="modulePlan"?`aib modulePlan preview --from ${t}`:null}function A(e,r){const n=i(e.save);return n||(i(r.planId)??i(r.previewId)??x(r.results,"planId")??x(r.results,"previewId")??`req_${_(e).slice(0,12)}`)}function F(e,r){return e.op===r?!0:(Array.isArray(e.requests)?e.requests:[]).some(t=>p(t)&&t.op===r)}function l(e){return Array.isArray(e)?e.some(r=>l(r)):p(e)?e.execute===!0?!0:Object.values(e).some(r=>l(r)):!1}function _(e){return(0,h.createHash)("sha256").update(JSON.stringify(e)).digest("hex")}function i(e){return typeof e=="string"&&e.trim()!==""?e.trim():null}function x(e,r){if(!Array.isArray(e))return null;const n=e.find(p);return n?i(n[r]):null}function p(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.attachCapturedInput=m;const l=require("node:crypto"),h=require("./session-workspace");function m(t,r,e,n,a){if(!i(e)||I(n))return n;const p=y(r,e),d=A(e,n),c=(0,h.captureSessionInput)(t,p,d,e,a);if(!c)return n;const f=s(e)?"capturedInput":"input";return n[f]!==void 0?n:{...n,[f]:c.handle}}function I(t){if(t.ok===!1)return!1;const r=u(t.operation);return r!==null&&r.endsWith(".execute")}function y(t,r){return t!=="inspect"?t:_(r,"modulePlan")?"modulePlan":"inspect"}function A(t,r){const e=u(t.save);return e||(u(r.planId)??u(r.previewId)??o(r.results,"planId")??o(r.results,"previewId")??`req_${q(t).slice(0,12)}`)}function _(t,r){return t.op===r?!0:(Array.isArray(t.requests)?t.requests:[]).some(n=>i(n)&&n.op===r)}function s(t){return Array.isArray(t)?t.some(r=>s(r)):i(t)?t.execute===!0?!0:Object.values(t).some(r=>s(r)):!1}function q(t){return(0,l.createHash)("sha256").update(JSON.stringify(t)).digest("hex")}function u(t){return typeof t=="string"&&t.trim()!==""?t.trim():null}function o(t,r){if(!Array.isArray(t))return null;const e=t.find(i);return e?u(e[r]):null}function i(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}
@@ -1,2 +1,2 @@
1
- "use strict";var _=exports&&exports.__createBinding||(Object.create?(function(e,t,n,s){s===void 0&&(s=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,s,o)}):(function(e,t,n,s){s===void 0&&(s=n),e[s]=t[n]})),C=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),y=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var s=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(s[s.length]=o);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var s=e(t),o=0;o<s.length;o++)s[o]!=="default"&&_(n,t,s[o]);return C(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runConfigCommand=x,exports.readConfigTextInput=c;const d=y(require("node:fs")),p=require("../shared/agent-text"),a=require("../shared/errors"),h=require("../config/import-rules"),m=require("../config/path-aliases"),b=require("../config/local-config"),u=require("../config/workspace-root"),A=require("./session-workspace"),O=require("./normalize-imports"),i=require("./config-output");function x(e,t=[]){if(t[0]==="upgrade"){if(t.length!==1)throw new a.CliError("CONFIG_USAGE","Usage: aib config upgrade");return v(e)}const n=S(t,"--session-dir");if(n)return P(e,n);const s=D(t);if(!s)throw new a.CliError("CONFIG_USAGE","Usage: aib config [all|aliases|rules|session] [--session-dir .tmp/aib]");const o=c(e),r={ok:!0,root:o.root,configPath:o.configPath,view:s,pathAliases:o.aliases,configPathAliases:o.configAliases,sessionPathAliases:o.sessionAliases,importRules:(0,h.importRulesToJson)(o.importRules),importNormalize:o.importNormalize.map(T),graphExclude:[...o.graphExclude],tree:{onlyDirs:{exclude:[...o.tree.onlyDirs.exclude]},files:{exclude:[...o.tree.files.exclude]}},sync:{tsconfig:{exclude:[...o.sync.tsconfig.exclude]}},session:(0,i.configSessionPayload)(o)};return(0,p.attachAgentText)(r,w(o,s))}function P(e,t){const n=c(e),s=(0,u.updateWorkspaceConfig)(e,{sessionDir:t}),o=c(e),r=(0,u.workspaceConfigSummary)(s),l=n.sessionDir!==o.sessionDir,f={ok:!0,config:"aib.json",status:l?"updated":"unchanged",root:o.root,configPath:o.configPath,...r};return(0,p.attachAgentText)(f,(0,i.formatSessionDirMutationText)(o,l))}function v(e){const t=(0,u.resolveWorkspaceRoot)(e);if(!t||!d.existsSync(t.configPath))throw new a.CliError("CONFIG_UPGRADE_CONFIG_NOT_FOUND","No aib.json config was found to upgrade.",{cwd:e});const n={},s={...t.config};for(const[o,r]of Object.entries(u.MATERIALIZED_INSPECT_DEFAULTS))Object.prototype.hasOwnProperty.call(s,o)||(s[o]=r,n[o]=r);return Object.keys(n).length>0&&d.writeFileSync(t.configPath,`${JSON.stringify(s,null,2)}
2
- `,"utf8"),(0,p.attachAgentText)({ok:!0,status:Object.keys(n).length>0?"upgraded":"up-to-date",root:t.root,configPath:t.configPath,added:n,unchanged:"existing fields preserved"},(0,i.formatConfigUpgradeText)(n))}function D(e){if(e.length===0)return"default";if(e.length!==1)return null;const t=e[0];return t==="all"||t==="aliases"||t==="rules"||t==="session"?t:null}function S(e,t){if(!e.includes(t))return null;let n=null;for(let s=0;s<e.length;s+=1){if(e[s]!==t)throw new a.CliError("CONFIG_USAGE","Usage: aib config [--session-dir .tmp/aib]");if(n!==null)throw new a.CliError("CONFIG_USAGE",`${t} can be provided only once.`);const r=e[s+1];if(!r||r.startsWith("--"))throw new a.CliError("MISSING_FLAG_VALUE",`Expected a value after ${t}.`);n=r,s+=1}return n}function T(e){return{...e.scope?{scope:e.scope}:{},...e.mode?{to:e.mode}:{},...e.preferAlias?{preferAlias:e.preferAlias}:{},...e.exclude.length>0?{exclude:e.exclude}:{}}}function c(e){const t=(0,u.resolveRequiredWorkspaceRoot)(e),n=(0,u.workspaceConfigSummary)(t.config),s=(0,m.readConfigPathAliases)(e),o=(0,A.readSessionPathAliasOverrides)(e),r=(0,m.effectivePathAliases)(e,o),l=(0,h.readConfigImportRules)(e),f=(0,O.readWorkspaceNormalizeImportRules)(e),g=(0,b.resolveLocalCliConfig)(e);return{root:t.root,configPath:t.configPath,workspaceRoot:String(n["workspace.root"]??"."),sessionDir:typeof n.sessionDir=="string"?n.sessionDir:null,aliases:r,configAliases:s,sessionAliases:o,importRules:l,importNormalize:f.rules,graphExclude:g.config.inspect.graph.exclude,tree:g.config.inspect.tree,sync:g.config.sync,sessionAutoClean:n["session.autoClean"]!==!1,sessionTtlCleanMinutes:typeof n["session.ttlCleanMinutes"]=="number"?n["session.ttlCleanMinutes"]:60,sessionAutoDelete:n["session.autoDelete"]!==!1,sessionTtlDeleteMinutes:typeof n["session.ttlDeleteMinutes"]=="number"?n["session.ttlDeleteMinutes"]:60,runtimeAutoStopManagedIde:n["runtime.autoStopManagedIde"]!==!1,runtimeManagedIdeTtlMinutes:typeof n["runtime.managedIdeTtlMinutes"]=="number"?n["runtime.managedIdeTtlMinutes"]:15}}function w(e,t){switch(t){case"all":return(0,i.formatConfigAllText)(e);case"aliases":return(0,i.formatConfigAliasesText)(e);case"rules":return(0,i.formatConfigRulesText)(e);case"session":return(0,i.formatConfigSessionText)(e);case"default":return(0,i.formatConfigDefaultText)(e)}}
1
+ "use strict";var C=exports&&exports.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),y=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),b=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[r.length]=o);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),o=0;o<r.length;o++)r[o]!=="default"&&C(n,e,r[o]);return y(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runConfigCommand=x,exports.readConfigTextInput=c;const d=b(require("node:fs")),p=require("../shared/agent-text"),a=require("../shared/errors"),m=require("../config/import-rules"),h=require("../config/path-aliases"),S=require("../config/local-config"),u=require("../config/workspace-root"),A=require("./session-workspace"),O=require("./normalize-imports"),i=require("./config-output");function x(t,e=[]){if(e[0]==="upgrade"){if(e.length!==1)throw new a.CliError("CONFIG_USAGE","Usage: aib config upgrade");return D(t)}const n=w(e,"--session-dir");if(n)return P(t,n);const r=T(e);if(!r)throw new a.CliError("CONFIG_USAGE","Usage: aib config [all|aliases|rules|session] [--session-dir .tmp/aib]");const o=c(t),s={ok:!0,root:o.root,configPath:o.configPath,view:r,pathAliases:o.aliases,configPathAliases:o.configAliases,sessionPathAliases:o.sessionAliases,rg:{aliases:o.rg.aliases,trimSpaces:o.rg.trimSpaces},importRules:(0,m.importRulesToJson)(o.importRules),importNormalize:o.importNormalize.map(v),graphExclude:[...o.graphExclude],tree:{onlyDirs:{exclude:[...o.tree.onlyDirs.exclude]},files:{exclude:[...o.tree.files.exclude]}},sync:{tsconfig:{exclude:[...o.sync.tsconfig.exclude]}},session:(0,i.configSessionPayload)(o)};return(0,p.attachAgentText)(s,I(o,r))}function P(t,e){const n=c(t),r=(0,u.updateWorkspaceConfig)(t,{sessionDir:e}),o=c(t),s=(0,u.workspaceConfigSummary)(r),l=n.sessionDir!==o.sessionDir,f={ok:!0,config:"aib.json",status:l?"updated":"unchanged",root:o.root,configPath:o.configPath,...s};return(0,p.attachAgentText)(f,(0,i.formatSessionDirMutationText)(o,l))}function D(t){const e=(0,u.resolveWorkspaceRoot)(t);if(!e||!d.existsSync(e.configPath))throw new a.CliError("CONFIG_UPGRADE_CONFIG_NOT_FOUND","No aib.json config was found to upgrade.",{cwd:t});const n={},r={...e.config};for(const[o,s]of Object.entries(u.MATERIALIZED_INSPECT_DEFAULTS))Object.prototype.hasOwnProperty.call(r,o)||(r[o]=s,n[o]=s);return Object.keys(n).length>0&&d.writeFileSync(e.configPath,`${JSON.stringify(r,null,2)}
2
+ `,"utf8"),(0,p.attachAgentText)({ok:!0,status:Object.keys(n).length>0?"upgraded":"up-to-date",root:e.root,configPath:e.configPath,added:n,unchanged:"existing fields preserved"},(0,i.formatConfigUpgradeText)(n))}function T(t){if(t.length===0)return"default";if(t.length!==1)return null;const e=t[0];return e==="all"||e==="aliases"||e==="rules"||e==="session"?e:null}function w(t,e){if(!t.includes(e))return null;let n=null;for(let r=0;r<t.length;r+=1){if(t[r]!==e)throw new a.CliError("CONFIG_USAGE","Usage: aib config [--session-dir .tmp/aib]");if(n!==null)throw new a.CliError("CONFIG_USAGE",`${e} can be provided only once.`);const s=t[r+1];if(!s||s.startsWith("--"))throw new a.CliError("MISSING_FLAG_VALUE",`Expected a value after ${e}.`);n=s,r+=1}return n}function v(t){return{...t.scope?{scope:t.scope}:{},...t.mode?{to:t.mode}:{},...t.preferAlias?{preferAlias:t.preferAlias}:{},...t.exclude.length>0?{exclude:t.exclude}:{}}}function c(t){const e=(0,u.resolveRequiredWorkspaceRoot)(t),n=(0,u.workspaceConfigSummary)(e.config),r=(0,h.readConfigPathAliases)(t),o=(0,A.readSessionPathAliasOverrides)(t),s=(0,h.effectivePathAliases)(t,o),l=(0,m.readConfigImportRules)(t),f=(0,O.readWorkspaceNormalizeImportRules)(t),g=(0,S.resolveLocalCliConfig)(t);return{root:e.root,configPath:e.configPath,workspaceRoot:String(n["workspace.root"]??"."),sessionDir:typeof n.sessionDir=="string"?n.sessionDir:null,aliases:s,configAliases:r,sessionAliases:o,rg:E(e.config),importRules:l,importNormalize:f.rules,graphExclude:g.config.inspect.graph.exclude,tree:g.config.inspect.tree,sync:g.config.sync,sessionAutoClean:n["session.autoClean"]!==!1,sessionTtlCleanMinutes:typeof n["session.ttlCleanMinutes"]=="number"?n["session.ttlCleanMinutes"]:60,sessionAutoDelete:n["session.autoDelete"]!==!1,sessionTtlDeleteMinutes:typeof n["session.ttlDeleteMinutes"]=="number"?n["session.ttlDeleteMinutes"]:60,runtimeAutoStopManagedIde:n["runtime.autoStopManagedIde"]!==!1,runtimeManagedIdeTtlMinutes:typeof n["runtime.managedIdeTtlMinutes"]=="number"?n["runtime.managedIdeTtlMinutes"]:15}}function E(t){const e=_(t["rg.aliases"]),n=_(t["rg.trimSpaces"]);return{aliases:e??!0,trimSpaces:n??!1,aliasesConfigured:e!==null,trimSpacesConfigured:n!==null}}function _(t){if(typeof t=="boolean")return t;if(typeof t!="string")return null;const e=t.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"?!0:e==="0"||e==="false"||e==="no"||e==="off"?!1:null}function I(t,e){switch(e){case"all":return(0,i.formatConfigAllText)(t);case"aliases":return(0,i.formatConfigAliasesText)(t);case"rules":return(0,i.formatConfigRulesText)(t);case"session":return(0,i.formatConfigSessionText)(t);case"default":return(0,i.formatConfigDefaultText)(t)}}
@@ -1,10 +1,10 @@
1
- "use strict";var O=exports&&exports.__createBinding||(Object.create?(function(e,t,n,o){o===void 0&&(o=n);var s=Object.getOwnPropertyDescriptor(t,n);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,s)}):(function(e,t,n,o){o===void 0&&(o=n),e[o]=t[n]})),S=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),A=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var o=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(o[o.length]=s);return o},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var o=e(t),s=0;s<o.length;s++)o[s]!=="default"&&O(n,t,o[s]);return S(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.CONFIG_SECTION_NAMES=void 0,exports.formatConfigDefaultText=T,exports.formatConfigAllText=_,exports.formatConfigAliasesText=$,exports.formatConfigRulesText=b,exports.formatConfigSessionText=M,exports.formatInitText=x,exports.formatSessionDirMutationText=D,exports.formatConfigUpgradeText=I,exports.configSessionPayload=N;const i=A(require("node:path"));exports.CONFIG_SECTION_NAMES=["pathAliases","importRules","importNormalize","inspect.graph.exclude","inspect.tree.onlyDirs.exclude","inspect.tree.files.exclude","sync.tsconfig.exclude"];function T(e){return[...a(e),...l(e,exports.CONFIG_SECTION_NAMES)].join(`
2
- `)}function _(e){return[...a(e),...c(e),...l(e,exports.CONFIG_SECTION_NAMES)].join(`
3
- `)}function $(e){return[...v("pathAliases",h(e.aliases,e.configAliases,e.sessionAliases)),...g(exports.CONFIG_SECTION_NAMES.filter(t=>t!=="pathAliases"&&m(e,t).length===0))].join(`
4
- `)}function b(e){const t=exports.CONFIG_SECTION_NAMES.filter(n=>n!=="pathAliases");return j(l(e,t)).join(`
5
- `)}function M(e){return[...a(e),...c(e)].join(`
6
- `)}function x(e,t){return[t==="created"?"aib workspace initialized":t==="unchanged"?"aib config unchanged":"aib config updated","",...a(e),...c(e),...l(e,exports.CONFIG_SECTION_NAMES)].join(`
7
- `)}function D(e,t){return[t?"aib config updated":"aib config unchanged","",...a(e),...c(e),"","other config fields preserved"].join(`
8
- `)}function I(e){const t=Object.entries(e);return t.length===0?["aib config is up to date","","unchanged: existing fields preserved"].join(`
9
- `):["aib config upgraded","","added:",...t.map(([n,o])=>` ${n}: ${o}`),"","unchanged: existing fields preserved"].join(`
10
- `)}function N(e){return{"workspace.root":e.workspaceRoot,...e.sessionDir?{sessionDir:e.sessionDir}:{},"session.autoClean":e.sessionAutoClean,"session.ttlCleanMinutes":e.sessionTtlCleanMinutes,"session.autoDelete":e.sessionAutoDelete,"session.ttlDeleteMinutes":e.sessionTtlDeleteMinutes,"runtime.autoStopManagedIde":e.runtimeAutoStopManagedIde,"runtime.managedIdeTtlMinutes":e.runtimeManagedIdeTtlMinutes}}function a(e){return[`root: ${e.root}`,`workspace.root: ${e.workspaceRoot}`,`config: ${p(e.root,e.configPath)}`,`sessionDir: ${E(e)}`]}function c(e){const t=[];return e.sessionDir&&t.push("new sessions: <sessionDir>/<name>/**"),t.push(`session cleanup: ${u(e.sessionAutoClean,e.sessionTtlCleanMinutes)}`,`session deletion: ${u(e.sessionAutoDelete,e.sessionTtlDeleteMinutes)}`,`runtime cleanup: ${u(e.runtimeAutoStopManagedIde,e.runtimeManagedIdeTtlMinutes)}`),t.length>0?["",...t]:[]}function l(e,t){const n=[],o=[];for(const s of t){const r=m(e,s);if(r.length===0){o.push(s);continue}n.push("",`${s}:`,...r)}return n.push(...g(o)),n}function v(e,t){return t.length>0?[`${e}:`,...t]:[`${e}: not set`]}function g(e){return e.length>0?["","not set:",...e.map(t=>` ${t}`)]:[]}function j(e){return e[0]===""?e.slice(1):e}function m(e,t){switch(t){case"pathAliases":return h(e.aliases,e.configAliases,e.sessionAliases);case"importRules":return y(e.importRules);case"importNormalize":return w(e.importNormalize);case"inspect.graph.exclude":return f(e.graphExclude);case"inspect.tree.onlyDirs.exclude":return f(e.tree.onlyDirs.exclude);case"inspect.tree.files.exclude":return f(e.tree.files.exclude);case"sync.tsconfig.exclude":return f(e.sync.tsconfig.exclude)}}function h(e,t,n){const o=Object.entries(e).sort(([s],[r])=>s.localeCompare(r));return o.length===0?[]:o.map(([s,r])=>{const d=Object.prototype.hasOwnProperty.call(n,s),C=Object.prototype.hasOwnProperty.call(t,s);return` @${s} -> ${r}${d&&C?" (session overrides config)":d?" (session)":""}`})}function y(e){return e.length===0?[]:e.map(t=>{const n=[t.specifier?`specifier=${t.specifier}`:null,t.ending?`ending=${t.ending}`:null,t.builtin?`builtin=${t.builtin}`:null,t.unusedImports?`unusedImports=${t.unusedImports}`:null].filter(o=>o!==null);return` ${t.scope}: ${n.length>0?n.join(" "):"defaults"}`})}function w(e){return e.length===0?[]:e.map(t=>{const n=[t.mode?`to=${t.mode}`:null,t.preferAlias?`preferAlias=${t.preferAlias}`:null,t.exclude.length>0?`exclude=${t.exclude.join(" ")}`:null].filter(o=>o!==null);return` ${t.scope??"*"}: ${n.length>0?n.join(" "):"defaults"}`})}function f(e){return e.map(t=>` ${t}`)}function p(e,t){const n=i.resolve(e),o=i.resolve(t);if(P(n,o))return"<root>";const s=i.relative(n,o);return s&&!s.startsWith("..")&&!i.isAbsolute(s)?`<root>/${R(s)}`:o}function E(e){if(!e.sessionDir)return"not set";const t=i.isAbsolute(e.sessionDir)?e.sessionDir:i.resolve(e.root,e.sessionDir);return p(e.root,t)}function u(e,t){return e?`after ${t} minutes of inactivity`:"disabled"}function P(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function R(e){return e.replace(/\\/g,"/")}
1
+ "use strict";var p=exports&&exports.__createBinding||(Object.create?(function(e,t,n,s){s===void 0&&(s=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,s,o)}):(function(e,t,n,s){s===void 0&&(s=n),e[s]=t[n]})),C=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),S=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var s=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(s[s.length]=o);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var s=e(t),o=0;o<s.length;o++)s[o]!=="default"&&p(n,t,s[o]);return C(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.CONFIG_SECTION_NAMES=void 0,exports.formatConfigDefaultText=$,exports.formatConfigAllText=O,exports.formatConfigAliasesText=T,exports.formatConfigRulesText=A,exports.formatConfigSessionText=_,exports.formatInitText=b,exports.formatSessionDirMutationText=x,exports.formatConfigUpgradeText=D,exports.configSessionPayload=M;const i=S(require("node:path"));exports.CONFIG_SECTION_NAMES=["pathAliases","rg","importRules","importNormalize","inspect.graph.exclude","inspect.tree.onlyDirs.exclude","inspect.tree.files.exclude","sync.tsconfig.exclude"];function $(e){return[...a(e),...l(e,exports.CONFIG_SECTION_NAMES)].join(`
2
+ `)}function O(e){return[...a(e),...c(e),...l(e,exports.CONFIG_SECTION_NAMES)].join(`
3
+ `)}function T(e){return[...v("pathAliases",g(e.aliases,e.configAliases,e.sessionAliases))].join(`
4
+ `)}function A(e){const t=exports.CONFIG_SECTION_NAMES.filter(n=>n!=="pathAliases");return j(l(e,t)).join(`
5
+ `)}function _(e){return[...a(e),...c(e)].join(`
6
+ `)}function b(e,t){return[t==="created"?"aib workspace initialized":t==="unchanged"?"aib config unchanged":"aib config updated","",...a(e),...c(e),...l(e,exports.CONFIG_SECTION_NAMES)].join(`
7
+ `)}function x(e,t){return[t?"aib config updated":"aib config unchanged","",...a(e),...c(e),"","other config fields preserved"].join(`
8
+ `)}function D(e){const t=Object.entries(e);return t.length===0?["aib config is up to date","","unchanged: existing fields preserved"].join(`
9
+ `):["aib config upgraded","","added:",...t.map(([n,s])=>` ${n}: ${s}`),"","unchanged: existing fields preserved"].join(`
10
+ `)}function M(e){return{"workspace.root":e.workspaceRoot,...e.sessionDir?{sessionDir:e.sessionDir}:{},"session.autoClean":e.sessionAutoClean,"session.ttlCleanMinutes":e.sessionTtlCleanMinutes,"session.autoDelete":e.sessionAutoDelete,"session.ttlDeleteMinutes":e.sessionTtlDeleteMinutes,"runtime.autoStopManagedIde":e.runtimeAutoStopManagedIde,"runtime.managedIdeTtlMinutes":e.runtimeManagedIdeTtlMinutes}}function a(e){return[`root: ${e.root}`,`workspace.root: ${e.workspaceRoot}`,`config: ${m(e.root,e.configPath)}`,`sessionDir: ${E(e)}`]}function c(e){const t=[];return e.sessionDir&&t.push("new sessions: <sessionDir>/<name>/**"),t.push(`session cleanup: ${u(e.sessionAutoClean,e.sessionTtlCleanMinutes)}`,`session deletion: ${u(e.sessionAutoDelete,e.sessionTtlDeleteMinutes)}`,`runtime cleanup: ${u(e.runtimeAutoStopManagedIde,e.runtimeManagedIdeTtlMinutes)}`),t.length>0?["",...t]:[]}function l(e,t){const n=[],s=[];for(const o of t){const r=N(e,o);if(r.length===0){s.push(o);continue}n.push("",`${o}:`,...r)}return n.push(...I(s)),n}function v(e,t){return t.length>0?[`${e}:`,...t]:[`${e}: not set`]}function I(e){return e.length>0?["","not set:",...e.map(t=>` ${t}`)]:[]}function j(e){return e[0]===""?e.slice(1):e}function N(e,t){switch(t){case"pathAliases":return g(e.aliases,e.configAliases,e.sessionAliases);case"rg":return y(e.rg);case"importRules":return w(e.importRules);case"importNormalize":return P(e.importNormalize);case"inspect.graph.exclude":return f(e.graphExclude);case"inspect.tree.onlyDirs.exclude":return f(e.tree.onlyDirs.exclude);case"inspect.tree.files.exclude":return f(e.tree.files.exclude);case"sync.tsconfig.exclude":return f(e.sync.tsconfig.exclude)}}function y(e){const t=[];return e.aliasesConfigured&&t.push(` aliases: ${e.aliases}`),e.trimSpacesConfigured&&t.push(` trimSpaces: ${e.trimSpaces}`),t}function g(e,t,n){const s=Object.entries(e).sort(([o],[r])=>o.localeCompare(r));return s.length===0?[]:s.map(([o,r])=>{const d=Object.prototype.hasOwnProperty.call(n,o),h=Object.prototype.hasOwnProperty.call(t,o);return` @${o} -> ${r}${d&&h?" (session overrides config)":d?" (session)":""}`})}function w(e){return e.length===0?[]:e.map(t=>{const n=[t.specifier?`specifier=${t.specifier}`:null,t.ending?`ending=${t.ending}`:null,t.builtin?`builtin=${t.builtin}`:null,t.unusedImports?`unusedImports=${t.unusedImports}`:null].filter(s=>s!==null);return` ${t.scope}: ${n.length>0?n.join(" "):"defaults"}`})}function P(e){return e.length===0?[]:e.map(t=>{const n=[t.mode?`to=${t.mode}`:null,t.preferAlias?`preferAlias=${t.preferAlias}`:null,t.exclude.length>0?`exclude=${t.exclude.join(" ")}`:null].filter(s=>s!==null);return` ${t.scope??"*"}: ${n.length>0?n.join(" "):"defaults"}`})}function f(e){return e.map(t=>` ${t}`)}function m(e,t){const n=i.resolve(e),s=i.resolve(t);if(R(n,s))return"<root>";const o=i.relative(n,s);return o&&!o.startsWith("..")&&!i.isAbsolute(o)?`<root>/${F(o)}`:s}function E(e){if(!e.sessionDir)return"not set";const t=i.isAbsolute(e.sessionDir)?e.sessionDir:i.resolve(e.root,e.sessionDir);return m(e.root,t)}function u(e,t){return e?`after ${t} minutes of inactivity`:"disabled"}function R(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function F(e){return e.replace(/\\/g,"/")}
@@ -0,0 +1 @@
1
+ "use strict";var d=exports&&exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.runControlPlaneCommand=w;const p=d(require("node:fs")),l=d(require("node:path")),f=require("node:child_process"),g=require("../shared/errors"),h=require("./worker-command");async function w(e,r){const a=r[0]??"status";if(a!=="worker"&&a!=="upload-traces")return{ok:!1,command:"control-plane",error:`Unknown control-plane action: ${a}`,availableActions:["worker --once","upload-traces --once"]};const t=r.slice(1);if(!t.includes("--once"))return{ok:!1,command:"control-plane",action:a,error:"Control-plane work must run through the background worker path. Pass --once to run the worker once."};if(a==="upload-traces"){const u=_(e,t);if(u)return u}const n=y(e,a,t),c=E();if(!c)return{ok:!1,command:"control-plane",action:"worker-once",code:"CONTROL_PLANE_WORKER_NOT_FOUND",error:"Control-plane worker runtime was not found.",hint:"Rebuild or reinstall the AIB package so the packaged worker asset is present."};const s=(0,f.spawnSync)(process.execPath,[c.path,...n],{cwd:e,encoding:"utf8",env:{...process.env,AIB_OTA_CLI_SCRIPT:B()}}),o=v(s.stdout),i=s.status===0&&o.ok!==!1;return{ok:i,command:"control-plane",action:"worker-once",worker:{status:s.status??null,script:c.path,source:c.source},traceUpload:k(o),...o.manifest?{manifest:o.manifest}:{},...o.helpBundle?{helpBundle:o.helpBundle}:{},...o.workerBundles?{workerBundles:o.workerBundles}:{},...o.launcherPacks?{launcherPacks:o.launcherPacks}:{},...o.extensionVsixes?{extensionVsixes:o.extensionVsixes}:{},...o.cliPackages?{cliPackages:o.cliPackages}:{},...o.workerRegistry?{workerRegistry:o.workerRegistry}:{},...o.backgroundSchedule?{backgroundSchedule:o.backgroundSchedule}:{},...o.policyConfig?{policyConfig:o.policyConfig}:{},...o.otaCoordinator?{otaCoordinator:o.otaCoordinator}:{},...i?{}:{error:o.traceUpload?.error??o.manifest?.error??o.helpBundle?.error??C(o)??P(o)??m(o)??R(o)??o.workerRegistry?.error??o.backgroundSchedule?.error??o.policyConfig?.error??b(o)??(s.stderr.trim()||"control-plane worker failed"),stderr:s.stderr.trim()}}}function y(e,r,a){const t=["--cwd",e];for(const n of a)n!=="--once"&&t.push(n);return r==="upload-traces"&&!t.includes("--manifest"),t}function _(e,r){const a=r.filter(t=>t!=="--once");try{const t=(0,h.runWorkerCommand)(e,["trace-upload","--","--cwd",e,...a]),n=t.payload;return{ok:t.ok===!0,command:"control-plane",action:"upload-traces",delegatedTo:"worker:trace-upload",worker:t.worker,traceUpload:k(n),...n.manifest?{manifest:n.manifest}:{},...n.helpBundle?{helpBundle:n.helpBundle}:{},...n.workerBundles?{workerBundles:n.workerBundles}:{},...n.launcherPacks?{launcherPacks:n.launcherPacks}:{},...n.extensionVsixes?{extensionVsixes:n.extensionVsixes}:{},...n.cliPackages?{cliPackages:n.cliPackages}:{},...n.workerRegistry?{workerRegistry:n.workerRegistry}:{},...n.backgroundSchedule?{backgroundSchedule:n.backgroundSchedule}:{},...n.policyConfig?{policyConfig:n.policyConfig}:{},...n.otaCoordinator?{otaCoordinator:n.otaCoordinator}:{},...t.ok===!0?{}:{error:typeof t.error=="string"?t.error:"trace-upload worker failed",...typeof t.stderr=="string"?{stderr:t.stderr}:{}}}}catch(t){if(t instanceof g.CliError&&["WORKER_REGISTRY_NOT_FOUND","WORKER_ROUTE_NOT_FOUND"].includes(t.code))return null;throw t}}function C(e){return e.workerBundles?.find(r=>r&&r.ok===!1&&typeof r.error=="string")?.error}function P(e){return e.launcherPacks?.find(r=>r&&r.ok===!1&&typeof r.error=="string")?.error}function m(e){return e.extensionVsixes?.find(r=>r&&r.ok===!1&&typeof r.error=="string")?.error}function R(e){return e.cliPackages?.find(r=>r&&r.ok===!1&&typeof r.error=="string")?.error}function b(e){return typeof e.otaCoordinator?.error=="string"?e.otaCoordinator.error:void 0}function k(e){const r=e.traceUpload??{};return{discoveredFiles:r.discoveredFiles??0,uploadableFiles:r.uploadableFiles??0,skippedAlreadySent:r.skippedAlreadySent??0,disabled:r.disabled===!0,dryRun:r.dryRun===!0,receivedFiles:r.response?.receivedFiles??0,storedFiles:r.response?.storedFiles??0,duplicateFiles:r.response?.duplicateFiles??0,postUploadEvents:typeof r.postUploadEvents=="number"?r.postUploadEvents:0,...typeof r.postUploadEventPath=="string"?{postUploadEventPath:r.postUploadEventPath}:{}}}function v(e){try{return JSON.parse(e)}catch{return{ok:!1,traceUpload:{error:e.trim()?`worker produced non-json stdout: ${e.trim()}`:"worker produced no stdout"}}}}function E(){const e=l.default.resolve(__dirname,"..","workers","control-plane","aib-control-plane-worker.cjs");if(p.default.existsSync(e))return{path:e,source:"packaged"};const r=l.default.resolve(__dirname,"..","..","..","control-plane-worker","dist","bin","aib-control-plane-worker.js");return p.default.existsSync(r)?{path:r,source:"repo"}:null}function B(){return l.default.resolve(__dirname,"..","bin","aib.js")}
@@ -0,0 +1,7 @@
1
+ "use strict";var ie=exports&&exports.__createBinding||(Object.create?(function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}):(function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]})),oe=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),M=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var n=[];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[n.length]=i);return n},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var n=e(t),i=0;i<n.length;i++)n[i]!=="default"&&ie(r,t,n[i]);return oe(r,t),r}})(),se=exports&&exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.tryReadDeclarationExecutionStatus=void 0,exports.runDeclarationCommand=pe,exports.readCachedDeclarationExecution=ge;const ae=M(require("node:crypto")),m=M(require("node:fs")),y=M(require("node:path")),l=se(require("typescript")),$=require("../config/defaults"),V=require("../config/import-rules"),ce=require("../client/http-client"),N=require("../shared/agent-text"),R=require("../shared/errors"),le=require("../shared/protocol"),ue=require("../shared/routes"),fe=require("./session-workspace"),H=require("./shared"),b=require("./declaration-preview-cache"),C=require("./declaration-execution-cache");Object.defineProperty(exports,"tryReadDeclarationExecutionStatus",{enumerable:!0,get:function(){return C.tryReadDeclarationExecutionStatus}});const de=require("./declaration-format");async function pe(e,t,r,n={}){const[i="help",a="preview",...s]=t;if(i==="help"||i==="--help")return Z();const o=_e(i),c=a??"preview";if(c==="help"||c==="--help")return Z(o);if(c==="apply"){const f=s[0];if(!f||f.startsWith("--"))throw new R.CliError("DECLARATION_PREVIEW_ID_REQUIRED",`declaration ${o} apply expects a preview id.`,{usage:`aib declaration ${o} apply <previewId>`});return he(e,o,f,n)}if(c!=="preview"&&c!=="execute"&&c!=="validate")throw new R.CliError("UNKNOWN_DECLARATION_ACTION",`Unknown declaration ${o} action: ${c}`,{availableCommands:["preview","apply","execute","validate","help"]});const u=X(e,r,o,c==="execute");return await Q(e,u,c,n)}function ge(e,t){const r=(0,C.readDeclarationExecutionStatus)(e,t);return r.result&&typeof r.result=="object"&&!Array.isArray(r.result)?(0,N.attachAgentText)(r.result,Y(e,r.result)):(0,N.attachAgentText)(r,Ae(r))}async function he(e,t,r,n){const i=(0,b.readDeclarationPreviewRecord)(e,r);(0,b.validateDeclarationPreviewFiles)(i);const a=X(e,{...i.normalizedPayload,execute:!0},t,!0);return Q(e,a,"apply",n,r)}async function Q(e,t,r,n,i){const a=t.execute?(0,C.buildDeclarationExecutionId)():void 0,s=a?(0,C.createDeclarationExecutionStatus)(e,a,`declaration.${t.operation}.${r}`,t.files.length):void 0;s&&(0,C.writeDeclarationExecutionStatus)(e,s);const o=t.operation==="remove"?me(e,t,a,s):await ye(e,t,a,s,n),c=ve(e,t,o,r,a,i);if(!t.execute&&c.ok!==!1&&(r==="preview"||r==="validate")){const u=(0,b.buildDeclarationPreviewId)(L(t)),d=(0,b.hashFiles)(o.scannedFiles),f=(0,b.buildDeclarationPreviewHash)(L(t),d,c);(0,b.writeDeclarationPreviewRecord)(e,{previewId:u,previewHash:f,createdAt:new Date().toISOString(),cwd:y.resolve(e),normalizedPayload:L(t),fileHashes:d,previewResult:c}),c.previewId=u,c.next=`aib declaration ${t.operation} apply ${u}`}return s&&(s.status=c.ok===!1?"failed":"completed",s.phase="completed",s.completedRows=c.ok===!1?o.rows.filter(u=>u.ok).length:t.files.length,s.failedRows=o.rows.filter(u=>u.ok===!1).length,s.notRunRows=Math.max(0,t.files.length-o.rows.length),s.filesWritten=o.filesWritten,s.rows=o.rows,s.result=c,c.ok===!1&&(s.error=h(c.code)??"DECLARATION_FAILED"),(0,C.writeDeclarationExecutionStatus)(e,s)),(0,N.attachAgentText)(c,Y(e,c))}function me(e,t,r,n){const i=[],a=[],s=Object.fromEntries(t.selectors.map(o=>[o,[]]));for(const o of t.files){n&&z(e,n,i,a);const c=xe(o,t.selectors);if(i.push(c),c.ok===!1)return{rows:i,filesWritten:a,scannedFiles:t.files,removedBySelector:s,failedRow:c};const u=Array.isArray(c.removed)?c.removed.filter(E):[];for(const d of u){const f=h(d.selector);f&&s[f]&&s[f].push(d)}if(t.execute&&u.length>0){const d=m.readFileSync(o,"utf8");m.writeFileSync(o,be(d,u.map(f=>({start:D(f,"start"),end:D(f,"end"),newText:""})))),a.push(o)}}return{rows:i,filesWritten:a,scannedFiles:t.files,removedBySelector:s}}async function ye(e,t,r,n,i){const a=await(0,H.resolveCompatibleTargetInstance)(e,le.CLI_COMMAND_IDS.addMissingImports,i),s=i.importRules??(0,V.readConfigImportRules)(e),o=t.prefer.length>0?O(e,t.prefer,[],{explicitFiles:!0}):[],c=O(e,t.exclude,[]),u={mode:"declaration",files:t.files,selectors:t.selectors,preferFiles:o,excludeFiles:c,execute:t.execute,importRules:(0,V.importRulesToJson)(s)},d=await(0,ce.postJson)(a.entry,ue.EXTENSION_ROUTES.addMissingImports,u,(0,H.extensionRequestOptions)(i)),f=Array.isArray(d.rows)?d.rows.filter(E):[],x=Array.isArray(d.filesWritten)?d.filesWritten.filter(g=>typeof g=="string"):[],v=Array.isArray(d.scannedFiles)?d.scannedFiles.filter(g=>typeof g=="string"):[...t.files,...o],p={};for(const g of f){const A=Array.isArray(g.addedImports)?g.addedImports.filter(E):[];for(const _ of A.flatMap(w=>Array.isArray(w.items)?w.items.filter(E):[w])){const w=h(_.selector);w&&(p[w]=[...p[w]??[],g.file])}}n&&z(e,n,f,x);const S=f.find(g=>g.ok===!1);return{rows:f,filesWritten:x,scannedFiles:v,addedBySelector:p,...S?{failedRow:S}:{}}}function xe(e,t){if(!m.existsSync(e))return{file:e,ok:!1,code:"DECLARATION_TARGET_NOT_FOUND",error:"Target file does not exist."};if(B(e))return{file:e,ok:!1,code:"DECLARATION_TARGET_IS_DIRECTORY",error:"Target is a directory."};const r=m.readFileSync(e,"utf8"),n=l.default.createSourceFile(e,r,l.default.ScriptTarget.Latest,!0,W(e)),i=j(n),a=[],s=[];for(const o of t){const c=ke(o),u=i.filter(f=>f.selector===c.name&&(!c.kind||T(f.kind)===c.kind));if(u.length===0){s.push(o);continue}if(u.length>1)return{file:e,ok:!1,selectors:t,failedSelector:o,availableSelectors:u.map(f=>Pe(f.kind,f.selector)),code:"DECLARATION_REMOVE_AMBIGUOUS",error:`Selector matched ${u.length} declarations in one file.`,removed:a,unchangedSelectors:s};const d=u[0];a.push({selector:c.raw,file:e,line:n.getLineAndCharacterOfPosition(d.node.getStart(n)).line+1,exported:d.exported,kind:d.kind,start:d.start,end:te(r,d.end)})}return{file:e,ok:!0,selectors:t,removed:a,unchangedSelectors:s}}function Ue(e,t,r){if(!m.existsSync(e))return{file:e,ok:!1,code:"DECLARATION_TARGET_NOT_FOUND",error:"Target file does not exist."};if(B(e))return{file:e,ok:!1,code:"DECLARATION_TARGET_IS_DIRECTORY",error:"Target is a directory."};const n=m.readFileSync(e,"utf8");if(Te(e,n))return{file:e,ok:!1,code:"DECLARATION_ADD_MISSING_COMMONJS_UNSUPPORTED",error:"declaration addMissing v1 does not write CommonJS require statements."};const i=t.selectors.length>0?t.selectors:Ce(e,n),a=l.default.createSourceFile(e,n,l.default.ScriptTarget.Latest,!0,W(e)),s=Re(a),o=new Map,c=[];for(const x of i){if(s.has(x)||!$e(n,x)){c.push(x);continue}const v=r.exports.get(x);if(!v||y.resolve(v)===y.resolve(e)){c.push(x);continue}o.set(v,[...o.get(v)??[],x])}const u=Oe(n,a),d=[];let f="";for(const[x,v]of o.entries()){const p=Fe(e,x),S=`import { ${v.sort().join(", ")} } from "${p}";
2
+ `;f+=S;for(const g of v)d.push({selector:g,file:e,source:x,moduleSpecifier:p,start:u,end:u,newText:S})}return{file:e,ok:!0,selectors:i,addedImports:f?[{selector:[...o.values()].flat().join(","),file:e,start:u,end:u,newText:f,items:d}]:[],unchangedSelectors:c}}function Be(e,t){const r=t.prefer.length>0?O(e,t.prefer,[]):O(e,[t.scope??"."],t.exclude),n=new Map;for(const i of r)if(!(!m.existsSync(i)||B(i)))for(const a of we(i))n.has(a)||n.set(a,i);return{exports:n,sourceFiles:r}}function X(e,t,r,n){if(!t||typeof t!="object"||Array.isArray(t))throw new R.CliError("DECLARATION_PAYLOAD_REQUIRED",`declaration ${r} expects a JSON or DSL payload.`);const i=t,a=i.operation??r;if(a!==r)throw new R.CliError("DECLARATION_OPERATION_MISMATCH",`Payload operation is ${a}, but command expects ${r}.`);const s=q(i.selectors);if(r==="remove"&&s.length===0)throw new R.CliError("DECLARATION_REMOVE_SELECTORS_REQUIRED","declaration remove expects at least one selector.");const o=q(i.exclude),c=Array.isArray(i.files)&&i.files.length>0?O(e,i.files.filter(u=>typeof u=="string"),o,{explicitFiles:!0}):typeof i.scope=="string"&&i.scope.trim()!==""?O(e,[i.scope],o):[];if(c.length===0)throw new R.CliError("DECLARATION_TARGET_REQUIRED",`declaration ${r} expects @scope or @files with at least one source file.`);return{operation:r,...typeof i.scope=="string"?{scope:y.resolve(e,i.scope)}:{},files:c,selectors:s,exclude:o,prefer:q(i.prefer),details:i.details===!0,targetKind:Array.isArray(i.files)&&i.files.length>0?"files":"scope",execute:n||i.execute===!0}}function ve(e,t,r,n,i,a){const s=r.rows.filter(A=>A.ok===!1).length,o=Math.max(0,t.files.length-r.rows.length),c=r.filesWritten.map(A=>J(e,A)),u=Ne(t.operation,r.rows),d=`declaration.${t.operation}.${n}`,f=r.removedBySelector??{},x=r.addedBySelector??{},v=Object.values(f).reduce((A,_)=>A+_.length,0),p=Object.values(x).reduce((A,_)=>A+_.length,0),S=t.operation==="remove"?v:p,g=!t.details&&(S>0||s>0)?Se(e,t,r,i):null;return G({ok:s===0,operation:d,executionId:i,previewId:a,target:t.scope?J(e,t.scope):`${t.files.length} files`,selectorCount:t.selectors.length,fileCount:t.files.length,targetKind:t.targetKind,details:t.details===!0?!0:void 0,declarationsRemoved:t.operation==="remove"?v:void 0,importsAdded:t.operation==="addMissing"?p:void 0,plannedFilesCount:u,filesWrittenCount:r.filesWritten.length,failedCount:s>0?s:void 0,notRunCount:o>0?o:void 0,filesWritten:c.length>0?We(c,8):void 0,removed:t.operation==="remove"?re(f):void 0,added:t.operation==="addMissing"?re(x):void 0,failed:r.failedRow?Le(e,r.failedRow):void 0,view:g?.saved,detailsFile:g?.file,internal:{requestedSelectors:t.selectors,resolvedScope:t.scope,resolvedFiles:t.files,exclude:t.exclude,prefer:t.prefer,details:t.details===!0?!0:void 0,targetKind:t.targetKind,scannedFiles:r.scannedFiles,rows:r.rows,filesWritten:r.filesWritten},code:r.failedRow?.code,next:je(t,S,s,r.failedRow)})}function Se(e,t,r,n){return(0,fe.saveSessionResultViewJson)(e,`res_${ae.randomBytes(4).toString("hex")}`,{kind:"declarationMutation",operation:t.operation,executionId:n,selectors:t.selectors,scope:t.scope,files:t.files,rows:r.rows,filesWritten:r.filesWritten,scannedFiles:r.scannedFiles})}function Y(e,t){const r=[],n=h(t.operation)??"declaration",i=h(t.executionId)??h(t.previewId),a=n.includes("addMissing"),s=n.endsWith(".preview")||n.endsWith(".validate");r.push(i?`${n} ${i}`:n);const o=D(t,"selectorCount"),c=D(t,a?"importsAdded":"declarationsRemoved"),u=s?D(t,"plannedFilesCount"):D(t,"filesWrittenCount"),d=D(t,"failedCount"),f=D(t,"notRunCount"),x=a?`${c} ${F(c,"import")} ${s?"planned":"added"}`:`${c} ${F(c,"declaration")} ${s?"found":"removed"}`,v=[`${o} ${F(o,"selector")}`,x];if(f>0&&h(t.targetKind)==="files"&&v.push(`${f} ${F(f,"file")} not run`),(!s||d===0)&&v.push(`${u} ${F(u,"file")} ${s?"will be written":"written"}`),r.push(v.join(", ")),t.details===!0&&E(t.internal)){const p=Array.isArray(t.internal.rows)?t.internal.rows.filter(E):[];r.push(...(0,de.formatDeclarationMutationDetails)(e,a?"addMissing":"remove",p))}else{const p=E(t.removed)?t.removed:E(t.added)?t.added:null;if(p&&Object.keys(p).length>0){r.push(a?s?"planned imports:":"added:":s?"planned removes:":"removed:");for(const[S,g]of Object.entries(p))r.push(`${S}: ${g} ${F(Number(g),"file")}`)}else r.push(a?s?"planned imports: none":"added: none":s?"planned removes: none":"removed: none")}if(t.details!==!0&&E(t.failed)){const p=t.failed;r.push("failed:");const S=h(p.file),g=h(p.selector);S&&r.push(S),g&&h(t.code)==="DECLARATION_REMOVE_AMBIGUOUS"?r.push(`\`${g}\` is ambiguous.`):g&&r.push(g);const A=Array.isArray(p.availableSelectors)?p.availableSelectors.filter(_=>typeof _=="string"&&_.trim()!==""):[];if(A.length>0){r.push("Available selectors:");for(const _ of A)r.push(_)}else h(p.error)&&(h(t.code)&&r.push(`code: ${h(t.code)}`),r.push(h(p.error)))}return t.details!==!0&&h(t.view)&&r.push(`view: ${h(t.view)}`),h(t.next)&&r.push(`next: ${h(t.next)}`),r.join(`
3
+ `)}function Ae(e){return`${e.status}, ${e.completedRows}/${e.rowCount} rows
4
+ ${e.operation}`}function Z(e){const t=e?`aib declaration ${e} preview --stdin | aib declaration ${e} execute --stdin | aib declaration ${e} apply <previewId>`:"aib declaration remove execute --stdin | aib declaration addMissing execute --stdin";return{ok:!0,command:e?`declaration ${e}`:"declaration",usage:t}}function _e(e){if(e==="remove"||e==="addMissing")return e;if(e==="add-missing")return"addMissing";throw new R.CliError("UNKNOWN_DECLARATION_COMMAND",`Unknown declaration command: ${e}`,{availableCommands:["remove","addMissing","help"]})}function z(e,t,r,n){t.completedRows=r.filter(i=>i.ok).length,t.failedRows=r.filter(i=>i.ok===!1).length,t.filesWritten=n,t.rows=r,(0,C.writeDeclarationExecutionStatus)(e,t)}function L(e){return G({operation:e.operation,scope:e.scope,files:e.files,selectors:e.selectors,exclude:e.exclude,prefer:e.prefer,details:e.details===!0?!0:void 0,targetKind:e.targetKind})}function j(e){const t=[];for(const r of e.statements){if(l.default.isFunctionDeclaration(r)||l.default.isClassDeclaration(r)||l.default.isInterfaceDeclaration(r)||l.default.isTypeAliasDeclaration(r)||l.default.isEnumDeclaration(r)){const n=r.name?.text;n&&t.push(k(e,r,n,Ee(r)));continue}if(l.default.isVariableStatement(r)){if(r.declarationList.declarations.length!==1){for(const a of r.declarationList.declarations){const s=l.default.isIdentifier(a.name)?a.name.text:null;s&&t.push({...k(e,r,s,"variable"),kind:"variable-group"})}continue}const n=r.declarationList.declarations[0],i=l.default.isIdentifier(n.name)?n.name.text:null;i&&t.push(k(e,r,i,"variable"))}}return t}function k(e,t,r,n){return{selector:r,file:e.fileName,line:e.getLineAndCharacterOfPosition(t.getStart(e)).line+1,exported:De(t),kind:n,start:t.getFullStart(),end:t.end,node:t}}function Ee(e){return l.default.isFunctionDeclaration(e)?"function":l.default.isClassDeclaration(e)?"class":l.default.isInterfaceDeclaration(e)?"interface":l.default.isTypeAliasDeclaration(e)?"type":l.default.isEnumDeclaration(e)?"enum":"declaration"}function De(e){return!!(l.default.canHaveModifiers(e)&&l.default.getModifiers(e)?.some(t=>t.kind===l.default.SyntaxKind.ExportKeyword))}function we(e){const t=m.readFileSync(e,"utf8"),r=l.default.createSourceFile(e,t,l.default.ScriptTarget.Latest,!0,W(e)),n=[];for(const i of j(r))i.exported&&n.push(i.selector);for(const i of r.statements)if(l.default.isExportDeclaration(i)&&i.exportClause&&l.default.isNamedExports(i.exportClause)&&!i.moduleSpecifier)for(const a of i.exportClause.elements)n.push(a.name.text);return[...new Set(n)]}function Re(e){const t=new Set;for(const r of e.statements){for(const n of j(e).filter(i=>i.node===r))t.add(n.selector);if(l.default.isImportDeclaration(r)&&r.importClause){r.importClause.name&&t.add(r.importClause.name.text);const n=r.importClause.namedBindings;if(n&&l.default.isNamedImports(n))for(const i of n.elements)t.add(i.name.text);n&&l.default.isNamespaceImport(n)&&t.add(n.name.text)}}return t}function Ce(e,t){const r={allowJs:!0,checkJs:!0,jsx:l.default.JsxEmit.ReactJSX,module:l.default.ModuleKind.ESNext,target:l.default.ScriptTarget.ES2022,noEmit:!0},n=l.default.createCompilerHost(r);n.readFile=o=>y.resolve(o)===y.resolve(e)?t:m.existsSync(o)?m.readFileSync(o,"utf8"):void 0,n.fileExists=o=>y.resolve(o)===y.resolve(e)||m.existsSync(o);const i=l.default.createProgram([e],r,n),s=i.getSemanticDiagnostics(i.getSourceFile(e)).filter(o=>o.code===2304||o.code===2552).map(o=>l.default.flattenDiagnosticMessageText(o.messageText,`
5
+ `)).map(o=>o.match(/Cannot find name '([^']+)'/)?.[1]??o.match(/Did you mean '([^']+)'/)?.[1]??"").filter(Boolean);return[...new Set(s)]}function O(e,t,r,n={}){const i=Ie(e,r),a=[];for(const o of t){const c=y.resolve(e,o);if(K(o)){a.push(...P(e).filter(u=>ee(I(o)).test(I(y.relative(e,u)))));continue}if(m.existsSync(c)&&m.statSync(c).isDirectory()&&n.explicitFiles!==!0){a.push(...P(c));continue}a.push(c)}const s=[...new Set(a.filter(o=>U(o)&&!i(o)))];return n.explicitFiles===!0?s:s.sort()}function P(e){if(!m.existsSync(e))return[];const t=m.statSync(e);if(t.isFile())return U(e)?[e]:[];if(!t.isDirectory())return[];const r=[];for(const n of m.readdirSync(e,{withFileTypes:!0})){if(["node_modules",".git","dist","out","build",".tmp"].includes(n.name))continue;const i=y.join(e,n.name);n.isDirectory()?r.push(...P(i)):n.isFile()&&U(i)&&r.push(i)}return r}function Ie(e,t){const r=new Set(t.filter(i=>!K(i)).map(i=>y.resolve(e,i))),n=t.filter(K).map(i=>ee(I(i)));return i=>r.has(y.resolve(i))||n.some(a=>a.test(I(y.relative(e,i))))}function K(e){return e.includes("*")}function ee(e){const t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"__AIB_GLOBSTAR__").replace(/\*/g,"[^/]*");return new RegExp(`^${t.replace(/__AIB_GLOBSTAR__/g,".*")}$`)}function be(e,t){let r=e;const n=[...t].sort((i,a)=>a.start-i.start);for(const i of n)r=`${r.slice(0,i.start)}${i.newText}${r.slice(i.end)}`;return r}function Oe(e,t){let r=0;for(const n of t.statements){if(!l.default.isImportDeclaration(n))break;r=te(e,n.end)}return r}function te(e,t){let r=t;for(;r<e.length&&(e[r]==="\r"||e[r]===`
6
+ `)&&(r+=1,e[r-1]!==`
7
+ `););return r}function Fe(e,t){let r=I(y.relative(y.dirname(e),t));return r=r.replace(/\.(tsx?|jsx?|mjs|cjs)$/i,""),r.startsWith(".")||(r=`./${r}`),r}function W(e){return/\.tsx$/i.test(e)?l.default.ScriptKind.TSX:/\.jsx$/i.test(e)?l.default.ScriptKind.JSX:/\.[cm]?js$/i.test(e)?l.default.ScriptKind.JS:l.default.ScriptKind.TS}function U(e){return/\.(tsx?|jsx?|mjs|cjs)$/i.test(e)&&!e.endsWith(".d.ts")}function B(e){return m.existsSync(e)&&m.statSync(e).isDirectory()}function Te(e,t){return/\.cjs$/i.test(e)||/\bmodule\.exports\b|\bexports\.[A-Za-z_$]/.test(t)}function $e(e,t){return new RegExp(`\\b${Me(t)}\\b`).test(e)}function Me(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function re(e){const t={};for(const[r,n]of Object.entries(e))n.length>0&&(t[r]=n.length);return t}function Ne(e,t){return t.filter(r=>{if(r.ok===!1)return!1;const n=e==="addMissing"?r.addedImports:r.removed;return Array.isArray(n)&&n.length>0}).length}function Le(e,t){return G({file:J(e,t.file),selector:h(t.failedSelector)??(Array.isArray(t.selectors)?t.selectors[0]:void 0),availableSelectors:Array.isArray(t.availableSelectors)?t.availableSelectors:void 0,code:t.code,error:t.error})}function je(e,t,r,n){if(r>0){if(n?.code==="DECLARATION_REMOVE_AMBIGUOUS"){const i=h(n.failedSelector)??"the ambiguous selector";return e.targetKind==="scope"?`Use a qualified selector for ${i} or exclude the file, then rerun declaration remove for the scope.`:`Use a qualified selector for ${i} and rerun declaration remove for the remaining files.`}return e.operation==="remove"?"Fix failed selector/file and rerun declaration remove for remaining targets.":"Fix failed selector/source and rerun declaration addMissing for remaining targets."}return t===0?e.operation==="remove"?"Nothing removed. Check selector names or target files.":"No missing imports added. Check selectors, prefer sources, or target files.":e.operation==="remove"?"run addMissing with desired selectors":"verify affected files only if checks report an issue"}function ke(e){const t=e.trim();for(const r of[$.DEFAULT_EFFECTIVE_CONFIG.selectorSeparator,":","-"]){const n=t.indexOf(r);if(n<=0)continue;const i=Ke(t.slice(0,n)),a=t.slice(n+r.length).trim();if(i&&a)return{raw:t,name:a,kind:i}}return{raw:t,name:t,kind:null}}function Pe(e,t){const r=T(e);return`${ne(r)??r}${$.DEFAULT_EFFECTIVE_CONFIG.selectorSeparator}${t}`}function Ke(e){const t=T(e);if(ne(t)!==null)return t;const r=Object.entries($.DEFAULT_EFFECTIVE_CONFIG.entityKindAliases).find(([,n])=>n===e)?.[0];return r?T(r):null}function ne(e){const t=T(e);return t==="class"||t==="interface"||t==="type"||t==="function"||t==="variable"||t==="enum"?$.DEFAULT_EFFECTIVE_CONFIG.entityKindAliases[t]:null}function T(e){return e==="variable-group"?"variable":e}function We(e,t){return e.length<=t?e:[...e.slice(0,t),`+ ${e.length-t} more`]}function q(e){return Array.isArray(e)?[...new Set(e.filter(t=>typeof t=="string"&&t.trim()!=="").map(t=>t.trim()))]:[]}function h(e){return typeof e=="string"&&e.trim()!==""?e.trim():null}function D(e,t){const r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:0}function G(e){const t={};for(const[r,n]of Object.entries(e))n!=null&&(t[r]=n);return t}function E(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function J(e,t){const r=y.relative(e,t);return r&&!r.startsWith("..")&&!y.isAbsolute(r)?I(r):I(t)}function I(e){return e.replace(/\\/g,"/")}function F(e,t){return e===1?t:`${t}s`}
@@ -0,0 +1 @@
1
+ "use strict";var o=exports&&exports.__createBinding||(Object.create?(function(e,t,u,n){n===void 0&&(n=u);var r=Object.getOwnPropertyDescriptor(t,u);(!r||("get"in r?!t.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return t[u]}}),Object.defineProperty(e,n,r)}):(function(e,t,u,n){n===void 0&&(n=u),e[n]=t[u]})),c=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),l=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(u){var n=[];for(var r in u)Object.prototype.hasOwnProperty.call(u,r)&&(n[n.length]=r);return n},e(t)};return function(t){if(t&&t.__esModule)return t;var u={};if(t!=null)for(var n=e(t),r=0;r<n.length;r++)n[r]!=="default"&&o(u,t,n[r]);return c(u,t),u}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildDeclarationExecutionId=f,exports.createDeclarationExecutionStatus=_,exports.readDeclarationExecutionStatus=E,exports.tryReadDeclarationExecutionStatus=D,exports.writeDeclarationExecutionStatus=O;const s=l(require("node:path")),d=require("../config/product-storage"),a=require("./mutation-execution-cache");function f(){return(0,a.buildMutationExecutionId)()}function _(e,t,u,n){const r=new Date().toISOString();return{executionId:t,operation:u,cwd:s.resolve(e),status:"running",phase:"running",startedAt:r,updatedAt:r,rowCount:Math.max(1,n),completedRows:0,failedRows:0,notRunRows:0,filesWritten:[],rows:[],productStorageDir:(0,d.productStorageRoot)()}}function E(e,t){return(0,a.readMutationExecutionStatus)(e,t,i)}function D(e,t){return(0,a.tryReadMutationExecutionStatus)(e,t,i)}function O(e,t){(0,a.writeMutationExecutionStatus)(e,t,i)}const i={namespace:"declaration-executions",notFoundCode:"DECLARATION_EXECUTION_NOT_FOUND",notFoundLabel:"declaration"};
@@ -0,0 +1 @@
1
+ "use strict";var v=exports&&exports.__createBinding||(Object.create?(function(e,t,o,r){r===void 0&&(r=o);var n=Object.getOwnPropertyDescriptor(t,o);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,r,n)}):(function(e,t,o,r){r===void 0&&(r=o),e[r]=t[o]})),A=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),O=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(o){var r=[];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r[r.length]=n);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var o={};if(t!=null)for(var r=e(t),n=0;n<r.length;n++)r[n]!=="default"&&v(o,t,r[n]);return A(o,t),o}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatDeclarationMutationDetails=S;const p=O(require("node:path")),M=require("./session-workspace");function S(e,t,o){return t==="addMissing"?$(e,o):j(e,o)}function j(e,t){const o=m(e),r=new Map;for(const s of t){const l=u(s.file);if(!l)continue;const c=b(s.removed).map(i=>u(i.selector)).filter(i=>!!i);if(c.length===0)continue;const f=g(c).join(" ");r.set(f,[...r.get(f)??[],d(e,l,o)])}const n=D(r);return n.push(..._(e,t,o)),n.length>0?n:["removed: none"]}function $(e,t){const o=m(e),r=new Map;for(const s of t){const l=u(s.file);if(!l)continue;const c=new Map;for(const f of b(s.addedImports))for(const i of I(f)){const a=u(i.selector);if(!a)continue;const h=u(i.source)??u(i.moduleSpecifier)??"unknown";c.set(h,[...c.get(h)??[],a])}for(const[f,i]of c.entries()){const a=r.get(f)??new Map,h=g(i).join(" ");a.set(h,[...a.get(h)??[],d(e,l,o)]),r.set(f,a)}}const n=[];for(const[s,l]of r.entries()){n.length>0&&n.push(""),n.push(`from ${d(e,s,o)}:`);for(const[c,f]of l.entries()){n.push(` ${c}:`);for(const i of g(f))n.push(` ${i}`)}}return n.push(..._(e,t,o)),n.length>0?n:["added: none"]}function D(e){const t=[];for(const[o,r]of e.entries()){t.push(`${o}:`);for(const n of g(r))t.push(` ${n}`)}return t}function _(e,t,o){const r=t.filter(s=>s.ok===!1);if(r.length===0)return[];const n=["failed:"];for(const s of r){const l=u(s.file),c=u(s.failedSelector)??w(s.selectors);l&&n.push(` ${d(e,l,o)}`),c&&u(s.code)==="DECLARATION_REMOVE_AMBIGUOUS"?n.push(` \`${c}\` is ambiguous.`):c&&n.push(` ${c}`);const f=Array.isArray(s.availableSelectors)?s.availableSelectors.filter(i=>typeof i=="string"&&i.trim()!==""):[];if(f.length>0){n.push(" Available selectors:");for(const i of f)n.push(` ${i}`)}else{const i=u(s.code);i&&n.push(` code: ${i}`);const a=u(s.error);a&&n.push(` ${a}`)}}return n}function I(e){const t=b(e.items);return t.length>0?t:[e]}function b(e){return Array.isArray(e)?e.filter(E):[]}function w(e){return Array.isArray(e)?e.find(t=>typeof t=="string"&&t.trim()!=="")??null:null}function g(e){return[...new Set(e.filter(t=>t.trim()!==""))]}function m(e){try{return(0,M.readEffectiveSessionPathAliases)(e)}catch{return{}}}function d(e,t,o){if(!p.isAbsolute(t))return y(t);const r=P(e,t,o);if(r)return r;const n=p.relative(e,t);return n&&!n.startsWith("..")&&!p.isAbsolute(n)?y(n):y(t)}function P(e,t,o){let r=null;for(const[n,s]of Object.entries(o)){const l=p.resolve(e,s);if(!B(t,l))continue;const c=p.relative(l,t),f=c?`@${n}/${y(c)}`:`@${n}`;(!r||f.length<r.display.length||f.length===r.display.length&&l.length>r.target.length)&&(r={name:n,target:l,display:f})}return r?r.display:null}function B(e,t){const o=p.relative(t,e);return o===""||!o.startsWith("..")&&!p.isAbsolute(o)}function u(e){return typeof e=="string"&&e.trim()!==""?e.trim():null}function E(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function y(e){return e.replace(/\\/g,"/")}
@@ -0,0 +1,2 @@
1
+ "use strict";var d=exports&&exports.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),h=exports&&exports.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),o=exports&&exports.__importStar||(function(){var r=function(e){return r=Object.getOwnPropertyNames||function(t){var i=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[i.length]=n);return i},r(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=r(e),n=0;n<i.length;n++)i[n]!=="default"&&d(t,e,i[n]);return h(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildDeclarationPreviewId=y,exports.buildDeclarationPreviewHash=v,exports.readDeclarationPreviewRecord=P,exports.writeDeclarationPreviewRecord=O,exports.hashFiles=b,exports.validateDeclarationPreviewFiles=D;const w=o(require("node:crypto")),a=o(require("node:fs")),_=o(require("node:path")),s=require("../shared/errors"),p=require("./workspace-cache");function y(r){return`apply_${u(c(r)).slice(0,6)}`}function v(r,e,t){return`sha256:${u(c({normalizedPayload:r,fileHashes:e,summary:t.summary,operation:t.operation}))}`}function P(r,e){const t=l(r,e);if(!a.existsSync(t))throw new s.CliError("DECLARATION_PREVIEW_NOT_FOUND",`Declaration preview not found: ${e}`,{previewId:e,expectedPath:t});return JSON.parse(a.readFileSync(t,"utf8"))}function O(r,e){const t=l(r,e.previewId);a.mkdirSync(_.dirname(t),{recursive:!0}),a.writeFileSync(t,`${JSON.stringify(e,null,2)}
2
+ `)}function b(r){const e={};for(const t of r)e[t]=f(t);return e}function D(r){for(const[e,t]of Object.entries(r.fileHashes))if(f(e)!==t)throw new s.CliError("DECLARATION_PREVIEW_FILES_CHANGED","Files changed after declaration preview. Rerun preview.",{previewId:r.previewId,file:e})}function l(r,e){return(0,p.workspaceCachePath)(r,"declaration-previews",`${g(e)}.json`)}function f(r){return a.existsSync(r)?u(a.readFileSync(r)):null}function u(r){return w.createHash("sha256").update(r).digest("hex")}function c(r){return r===null||typeof r!="object"?JSON.stringify(r):Array.isArray(r)?`[${r.map(e=>c(e)).join(",")}]`:`{${Object.entries(r).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${JSON.stringify(e)}:${c(t)}`).join(",")}}`}function g(r){return r.replace(/[^a-z0-9_-]+/gi,"-")}
@@ -1,2 +1,3 @@
1
- "use strict";var D=exports&&exports.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),O=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),E=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[r.length]=o);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),o=0;o<r.length;o++)r[o]!=="default"&&D(n,e,r[o]);return O(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runDoctor=H;const i=E(require("node:fs")),a=E(require("node:path")),x=require("node:child_process"),d=require("../config/env-vars"),_=require("../shared/diagnostic-catalog"),u=require("../shared/hints"),j=require("../managed-host/extension-vsix-resolver"),N=require("../managed-host/serve-web-autostart"),A=require("./ping"),M=require("../shared/agent-text"),V=require("../shared/errors"),L=require("../diagnostics/readiness-text"),C=require("../runtime/bundled-node"),g=require("../runtime/managed-runtime-provisioning"),q=["code.cmd","code.exe","code"],R=["code"];function l(t,e){return t.ok||!e?t:{...t,code:e.code,...e.hints&&e.hints.length>0?{hints:e.hints}:{}}}async function H(t){const e=[],n=a.resolve(__dirname,"..",".."),r=ee(),o=t.runtime===!0,s=T(t.progress===!0);if(o){s("checking runtime files");const c=(0,g.isManagedRuntimeComplete)(n);s(c?"runtime files: ok":"provisioning runtime"),(0,g.ensureManagedRuntimeProvisioned)(n),c||s((0,g.isManagedRuntimeComplete)(n)?"runtime ready":"runtime files: missing")}e.push(m(s,"node version",W)),e.push(m(s,"package layout",()=>G(n))),e.push(m(s,"managed host assets",()=>X(n,r))),e.push(m(s,"extension VSIX",()=>U(n,r))),e.push(m(s,"bundled node",()=>J(n))),e.push(m(s,"code-server",()=>$(n))),e.push(m(s,"browser",()=>Z(n))),e.push(m(s,"platform",()=>Y(o))),o&&e.every(c=>c.severity!=="required"||c.ok)&&e.push(...await K(t.cwd,s));const p=e.filter(c=>c.severity==="required"&&!c.ok),v=e.filter(c=>c.severity==="optional"&&!c.ok),h={ok:p.length===0,command:"doctor",mode:o?"runtime-install-gate":"static",cwd:a.resolve(t.cwd),generatedAt:new Date().toISOString(),platform:{node:process.version,platform:process.platform,arch:process.arch},packageRoot:n,repoRoot:r,summary:{checkCount:e.length,passedCount:e.filter(c=>c.ok).length,failedRequiredCount:p.length,failedOptionalCount:v.length},checks:e};return t.progress===!0&&(p.length===0?(s("all checks passed"),s("you are good to go 👍")):s("checks failed")),t.json===!0?h:(0,M.attachAgentText)(h,(0,L.formatDoctorText)(h,{verbose:t.verbose===!0}))}function T(t){return t?e=>{process.stderr.write(`${e}
2
- `)}:()=>{}}function m(t,e,n){t(`checking ${e}`);const r=n();return t(`${e}: ${r.ok?"ok":"failed"}`),r}async function K(t,e){const n=[];let r=!1;try{e("starting managed runtime; please wait");const o=await(0,N.startManagedServeWebForCwd)(t);r=!0,e("managed runtime: started"),n.push({id:"managed-runtime-start",ok:!0,severity:"required",message:"Managed IDE runtime starts and activates the bridge.",details:B(o)})}catch(o){return e("managed runtime: failed"),n.push(y("managed-runtime-start","Managed IDE runtime failed to start or activate the bridge.",o)),n}try{e("pinging runtime");const o=await(0,A.runPing)(t);e("runtime ping: ok"),n.push({id:"bridge-ping",ok:!0,severity:"required",message:"Bridge ping succeeds through the managed runtime.",details:F(o)})}catch(o){e("runtime ping: failed"),n.push(y("bridge-ping","Bridge ping failed through the managed runtime.",o))}if(r)try{e("stopping managed runtime");const o=await(0,N.stopManagedServeWebForCwd)(t);e(o.stopped===!0?"managed runtime: stopped":"managed runtime: stop incomplete"),n.push({id:"managed-runtime-stop",ok:o.stopped===!0,severity:"required",message:o.stopped===!0?"Managed IDE runtime stops cleanly.":"Managed IDE runtime stop did not report a stopped runtime.",details:o})}catch(o){e("managed runtime stop: failed"),n.push(y("managed-runtime-stop","Managed IDE runtime stop failed.",o))}return n}function y(t,e,n){const r=n instanceof V.CliError?n:null;return{id:t,ok:!1,severity:"required",message:e,code:r?.code??"DOCTOR_RUNTIME_CHECK_FAILED",details:{error:n instanceof Error?n.message:String(n),...r?.details&&typeof r.details=="object"&&!Array.isArray(r.details)?{details:r.details}:{}},hints:r?.details&&typeof r.details=="object"&&!Array.isArray(r.details)&&Array.isArray(r.details.hints)?r.details.hints:(0,_.buildAutoStartHints)()}}function B(t){const e=t.metadata&&typeof t.metadata=="object"&&!Array.isArray(t.metadata)?t.metadata:{},n=t.artifacts&&typeof t.artifacts=="object"&&!Array.isArray(t.artifacts)?t.artifacts:{};return{hostId:typeof t.hostId=="string"?t.hostId:null,hostKind:typeof t.hostKind=="string"?t.hostKind:e.hostKind??null,reused:t.reused===!0,codeCommand:typeof t.codeCommand=="string"?t.codeCommand:e.codeCommand??null,codeCommandSource:typeof t.codeCommandSource=="string"?t.codeCommandSource:e.codeCommandSource??null,runDir:typeof t.runDir=="string"?t.runDir:e.runDir??null,logsDir:typeof n.logsDir=="string"?n.logsDir:e.logsDir??null,instanceId:typeof e.instanceId=="string"?e.instanceId:null,serveWebPid:typeof e.serveWebPid=="number"?e.serveWebPid:null,browserPid:typeof e.browserPid=="number"?e.browserPid:null}}function F(t){const e=t.selectedInstance&&typeof t.selectedInstance=="object"&&!Array.isArray(t.selectedInstance)?t.selectedInstance:{},n=t.response&&typeof t.response=="object"&&!Array.isArray(t.response)?t.response:{};return{instanceId:typeof e.instanceId=="string"?e.instanceId:n.instanceId??null,reason:typeof e.reason=="string"?e.reason:null,matchedWorkspace:typeof e.matchedWorkspace=="string"?e.matchedWorkspace:null,pid:typeof n.pid=="number"?n.pid:null,protocolVersion:typeof n.protocolVersion=="number"?n.protocolVersion:null,extensionVersion:typeof n.extensionVersion=="string"?n.extensionVersion:null}}function W(){const t=Number(process.versions.node.split(".")[0]??"0"),e=Number.isInteger(t)&&t>=20;return l({id:"node-version",ok:e,severity:"required",message:e?"Node.js version is supported.":"Node.js 20 or newer is required.",details:{node:process.version,required:">=20"}},{code:"DOCTOR_NODE_VERSION_UNSUPPORTED",hints:[(0,u.actionHint)("Install Node.js 20 or newer, then retry the CLI command.")]})}function G(t){const e=a.join(t,"package.json"),n=a.join(t,"dist","bin","aib.js"),r=i.existsSync(e)&&i.existsSync(n);return l({id:"cli-package-root",ok:r,severity:"required",message:r?"CLI package root looks complete.":"CLI package root is missing package metadata or the built bin.",details:{packageRoot:t,packageJsonPath:e,packageJsonExists:i.existsSync(e),binPath:n,binExists:i.existsSync(n)}},{code:"DOCTOR_CLI_PACKAGE_INCOMPLETE",hints:[(0,u.commandHint)("npm run cli:build","Build the local CLI package."),(0,u.actionHint)("For an installed package, reinstall the CLI package.")]})}function X(t,e){const n=a.join(t,"dist","managed-host","manage-serve-web-host.cjs"),r=e?a.join(e,"scripts","managed-host","manage-serve-web-host.cjs"):null,o=I(d.CLI_ENV.managedHostScript),s=!!(o&&i.existsSync(o)||i.existsSync(n)||r&&i.existsSync(r));return l({id:"managed-host-assets",ok:s,severity:"required",message:s?"Managed host assets are available.":"Managed host assets were not found.",details:{env:d.CLI_ENV.managedHostScript,envScriptPath:o,envScriptExists:o?i.existsSync(o):!1,packagedScriptPath:n,packagedScriptExists:i.existsSync(n),repoScriptPath:r,repoScriptExists:r?i.existsSync(r):!1}},{code:"DOCTOR_MANAGED_HOST_ASSETS_MISSING",hints:(0,_.buildAutoStartHints)()})}function U(t,e){try{const n=(0,j.resolveExtensionVsixPath)({packageRoot:t,repoRoot:e}),r=i.existsSync(n.path);return l({id:"extension-vsix",ok:r,severity:"required",message:r?"Extension VSIX is available.":"Extension VSIX path resolved but the file does not exist.",details:{...n,exists:r}},{code:"DOCTOR_EXTENSION_VSIX_MISSING",hints:[(0,u.configHint)(d.CLI_ENV.extensionVsix,"Point to an existing packaged VSIX artifact."),(0,u.commandHint)("npm --prefix packages/extension run package:vsix","Build a local VSIX artifact.")]})}catch(n){return{id:"extension-vsix",ok:!1,severity:"required",message:"Extension VSIX resolution failed.",code:"DOCTOR_EXTENSION_VSIX_RESOLUTION_FAILED",details:{error:n instanceof Error?n.message:String(n),code:typeof n=="object"&&n!==null&&"code"in n?String(n.code):null},hints:(0,_.buildAutoStartHints)()}}}function $(t){const e=process.env[d.CLI_ENV.ideCommand]?.trim(),n=process.env[d.CLI_ENV.managedHostKind]?.trim()||z(t),r=I(d.CLI_ENV.codeServerPath),o=a.join(t,"runtimes","code-server","node_modules","code-server","out","node","entry.js"),s=(0,g.managedRuntimePlatformStatus)(t),p=(0,C.resolveNodeRuntime)(t),v=i.existsSync(o)&&s.ok?`${p.command} ${o}`:null,h=a.join(t,"runtimes","code-server","bin",process.platform==="win32"?"code-server.cmd":"code-server"),c=[r,v,h,"code-server"].filter(f=>!!f),P=e?[e]:n==="code-server"?c:process.platform==="win32"?q:R,S=P.map(f=>({candidate:f,result:f===v?{ok:!0,path:o}:b(f)})).find(f=>f.result.ok),k=!!S;return l({id:"ide-command",ok:k,severity:"required",message:k?"VS Code CLI command is available.":"VS Code CLI command was not found.",details:{env:d.CLI_ENV.ideCommand,codeServerEnv:d.CLI_ENV.codeServerPath,hostKindEnv:d.CLI_ENV.managedHostKind,hostKind:n,explicitIdeCommand:e||null,nodeRuntimeCommand:p.command,nodeRuntimeSource:p.source,platformMarker:{ok:s.ok,reason:s.reason,expectedPlatformKey:s.expectedPlatformKey,actualPlatformKey:s.actualPlatformKey,markerPath:s.markerPath},candidates:P,resolvedCommand:S?.candidate??null,resolvedPath:S?.result.path??null}},{code:"DOCTOR_IDE_COMMAND_MISSING",hints:[(0,u.configHint)(d.CLI_ENV.ideCommand,"Set an explicit VS Code-compatible CLI command path."),(0,u.configHint)(d.CLI_ENV.codeServerPath,"Set an explicit Coder code-server executable path when using the code-server managed host."),(0,u.actionHint)("Install VS Code, install Coder code-server, or include a packaged code-server runtime.")]})}function J(t){const e=(0,C.findPackagedNodeRuntime)(t),n=(0,C.resolveNodeRuntime)(t),r=(0,g.managedRuntimePlatformStatus)(t),o=i.existsSync(a.join(t,"runtimes","code-server","node_modules","code-server","out","node","entry.js"))&&r.ok;return l({id:"managed-runtime-node",ok:!!e||!o,severity:o?"required":"optional",message:e?"Bundled Node runtime is available for managed runtime.":o?"Bundled Node runtime is missing for package-local code-server.":"Bundled Node runtime is not needed because package-local code-server is not present.",details:{env:d.CLI_ENV.nodePath,packagedNodePath:e,resolvedCommand:n.command,resolvedSource:n.source,packagedCodeServerPresent:o,platformMarker:{ok:r.ok,reason:r.reason,expectedPlatformKey:r.expectedPlatformKey,actualPlatformKey:r.actualPlatformKey,markerPath:r.markerPath}}},{code:"DOCTOR_MANAGED_RUNTIME_NODE_MISSING",hints:[(0,u.commandHint)("node scripts/runtime/provision-managed-runtimes.cjs --node","Provision the bundled Node runtime."),(0,u.actionHint)("For installed packages, reprovision or reinstall the managed runtime bundle.")]})}function z(t){const e=a.join(t,"runtimes","code-server","node_modules","code-server","out","node","entry.js");return i.existsSync(e)&&(0,g.managedRuntimePlatformStatus)(t).ok?"code-server":null}function Z(t){const e=I(d.CLI_ENV.chromePath),r=[e,Q(t),"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe","C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe","C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe","google-chrome","chromium","chromium-browser","microsoft-edge"].filter(s=>!!s).map(s=>({candidate:s,result:b(s)})).find(s=>s.result.ok),o=!!r;return l({id:"headless-browser",ok:o,severity:"required",message:o?"Headless browser command is available.":"Chrome or Edge was not found for managed serve-web activation.",details:{env:d.CLI_ENV.chromePath,explicitChromePath:e,resolvedCommand:r?.candidate??null}},{code:"DOCTOR_HEADLESS_BROWSER_MISSING",hints:[(0,u.configHint)(d.CLI_ENV.chromePath,"Set an explicit Chrome or Edge executable path."),(0,u.actionHint)("Install Chrome, Edge, Chromium, or another compatible headless browser.")]})}function Q(t){const e=[a.join(t,"runtimes","browser"),a.join(t,"runtimes","chrome"),a.join(t,"runtimes","chromium")],n=process.platform==="win32"?new Set(["chrome.exe","chromium.exe","msedge.exe"]):new Set(["chrome","chromium"]);for(const r of e){const o=w(r,n,5);if(o)return o}return null}function w(t,e,n){if(!i.existsSync(t)||n<0)return null;let r;try{r=i.readdirSync(t,{withFileTypes:!0})}catch{return null}for(const o of r){const s=a.join(t,o.name);if(o.isFile()&&e.has(o.name)&&b(s).ok)return s}for(const o of r){if(!o.isDirectory())continue;const s=w(a.join(t,o.name),e,n-1);if(s)return s}return null}function Y(t){const e=process.platform==="win32"||process.platform==="linux";return l({id:"managed-runtime-platform",ok:e||t!==!0,severity:t?"required":"optional",message:e?"Managed serve-web auto-start is supported on this platform.":"Managed serve-web auto-start is currently supported on Windows and Linux.",details:{platform:process.platform,runtimeRequested:t}},{code:"DOCTOR_MANAGED_RUNTIME_PLATFORM_UNSUPPORTED",hints:[(0,u.actionHint)("Run static doctor checks only, or use a Windows/Linux environment for managed runtime.")]})}function ee(){const t=[a.resolve(__dirname),process.cwd()];for(const e of t){let n=e;for(;;){const r=a.join(n,"scripts","managed-host","manage-serve-web-host.cjs"),o=a.join(n,"package.json");if(i.existsSync(r)&&i.existsSync(o))return n;const s=a.dirname(n);if(s===n)break;n=s}}return null}function I(t){const e=process.env[t];return e&&e.trim()?a.resolve(e.trim()):null}function b(t){if(te(t))return{ok:i.existsSync(t),status:i.existsSync(t)?0:1,error:null};const e=process.platform==="win32"?(0,x.spawnSync)("where.exe",[t],{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","pipe"]}):(0,x.spawnSync)("sh",["-lc",`command -v "${t.replace(/"/g,'\\"')}"`],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return{ok:e.status===0,status:e.status,error:e.error?e.error.message:null}}function te(t){return t.includes("\\")||t.includes("/")||/^[A-Za-z]:/.test(t)}
1
+ "use strict";var O=exports&&exports.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),j=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),P=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[r.length]=o);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),o=0;o<r.length;o++)r[o]!=="default"&&O(n,t,r[o]);return j(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runDoctor=H;const i=P(require("node:fs")),a=P(require("node:path")),A=require("node:crypto"),w=require("node:child_process"),d=require("../config/env-vars"),_=require("../shared/diagnostic-catalog"),l=require("../shared/hints"),M=require("../managed-host/extension-vsix-resolver"),x=require("../managed-host/serve-web-autostart"),L=require("./ping"),V=require("../shared/agent-text"),D=require("../shared/errors"),R=require("../diagnostics/readiness-text"),C=require("../runtime/bundled-node"),v=require("../runtime/managed-runtime-provisioning"),q=["code.cmd","code.exe","code"],T=["code"];function f(e,t){return e.ok||!t?e:{...e,code:t.code,...t.hints&&t.hints.length>0?{hints:t.hints}:{}}}async function H(e){const t=[],n=a.resolve(__dirname,"..",".."),r=ae(),o=e.runtime===!0,s=K(e.progress===!0);if(o){s("checking runtime files");const c=(0,v.isManagedRuntimeComplete)(n);s(c?"runtime files: ok":"provisioning runtime"),(0,v.ensureManagedRuntimeProvisioned)(n),c||s((0,v.isManagedRuntimeComplete)(n)?"runtime ready":"runtime files: missing")}t.push(p(s,"node version",Z)),t.push(p(s,"package layout",()=>Q(n))),t.push(p(s,"managed host assets",()=>Y(n,r))),t.push(p(s,"extension VSIX",()=>ee(n,r))),t.push(p(s,"bundled node",()=>ne(n))),t.push(p(s,"code-server",()=>te(n))),t.push(p(s,"browser",()=>oe(n))),t.push(p(s,"platform",()=>ie(o))),o&&t.every(c=>c.severity!=="required"||c.ok)&&t.push(...await F(n,e.cwd,s));const u=t.filter(c=>c.severity==="required"&&!c.ok),g=t.filter(c=>c.severity==="optional"&&!c.ok),m={ok:u.length===0,command:"doctor",mode:o?"runtime-install-gate":"static",cwd:a.resolve(e.cwd),generatedAt:new Date().toISOString(),platform:{node:process.version,platform:process.platform,arch:process.arch},packageRoot:n,repoRoot:r,summary:{checkCount:t.length,passedCount:t.filter(c=>c.ok).length,failedRequiredCount:u.length,failedOptionalCount:g.length},checks:t};return e.progress===!0&&(u.length===0?(s("all checks passed"),s("you are good to go 👍")):s("checks failed")),e.json===!0?m:(0,V.attachAgentText)(m,(0,R.formatDoctorText)(m,{verbose:e.verbose===!0}))}function K(e){return e?t=>{process.stderr.write(`${t}
2
+ `)}:()=>{}}function p(e,t,n){e(`checking ${t}`);const r=n();return e(`${t}: ${r.ok?"ok":"failed"}`),r}async function B(e,t){const n=[];let r=!1;try{t("starting managed runtime; please wait");const o=await(0,x.startManagedServeWebForCwd)(e);r=!0,t("managed runtime: started"),n.push({id:"managed-runtime-start",ok:!0,severity:"required",message:"Managed IDE runtime starts and activates the bridge.",details:J(o)})}catch(o){return t("managed runtime: failed"),n.push(S("managed-runtime-start","Managed IDE runtime failed to start or activate the bridge.",o)),n}try{t("pinging runtime");const o=await(0,L.runPing)(e);t("runtime ping: ok"),n.push({id:"bridge-ping",ok:!0,severity:"required",message:"Bridge ping succeeds through the managed runtime.",details:z(o)})}catch(o){t("runtime ping: failed"),n.push(S("bridge-ping","Bridge ping failed through the managed runtime.",o))}if(r)try{t("stopping managed runtime");const o=await(0,x.stopManagedServeWebForCwd)(e);t(o.stopped===!0?"managed runtime: stopped":"managed runtime: stop incomplete"),n.push({id:"managed-runtime-stop",ok:o.stopped===!0,severity:"required",message:o.stopped===!0?"Managed IDE runtime stops cleanly.":"Managed IDE runtime stop did not report a stopped runtime.",details:o})}catch(o){t("managed runtime stop: failed"),n.push(S("managed-runtime-stop","Managed IDE runtime stop failed.",o))}return n}async function F(e,t,n){let r=null;try{return r=await W(e,t),r.waitedMs>500&&n(`managed runtime lock: waited ${r.waitedMs}ms`),await B(t,n)}catch(o){return[S("managed-runtime-lock","Managed IDE runtime lifecycle lock failed.",o)]}finally{r?.release()}}async function W(e,t,n=18e4,r=3e5){const o=a.join(e,".tmp","doctor-runtime-locks"),s=(0,A.createHash)("sha256").update(a.resolve(t)).digest("hex").slice(0,16),u=a.join(o,s),g=Date.now();for(i.mkdirSync(o,{recursive:!0});Date.now()-g<=n;)try{return i.mkdirSync(u),i.writeFileSync(a.join(u,"owner.json"),`${JSON.stringify({pid:process.pid,cwd:a.resolve(t),acquiredAt:new Date().toISOString()},null,2)}
3
+ `,"utf8"),{waitedMs:Date.now()-g,release(){i.rmSync(u,{recursive:!0,force:!0})}}}catch(m){if(!U(m))throw m;if(X(u,r)){i.rmSync(u,{recursive:!0,force:!0});continue}await $(250)}throw new D.CliError("DOCTOR_RUNTIME_LOCK_TIMEOUT","Timed out waiting for managed runtime doctor lifecycle lock.",{lockDir:u,timeoutMs:n})}function X(e,t){try{const n=a.join(e,"owner.json"),r=i.existsSync(n)?JSON.parse(i.readFileSync(n,"utf8")):{},o=typeof r.pid=="number"?r.pid:null;return o!==null&&!G(o)?!0:Date.now()-i.statSync(e).mtimeMs>t}catch{return!0}}function G(e){try{return process.kill(e,0),!0}catch{return!1}}function U(e){return!!e&&typeof e=="object"&&e.code==="EEXIST"}function $(e){return new Promise(t=>setTimeout(t,e))}function S(e,t,n){const r=n instanceof D.CliError?n:null;return{id:e,ok:!1,severity:"required",message:t,code:r?.code??"DOCTOR_RUNTIME_CHECK_FAILED",details:{error:n instanceof Error?n.message:String(n),...r?.details&&typeof r.details=="object"&&!Array.isArray(r.details)?{details:r.details}:{}},hints:r?.details&&typeof r.details=="object"&&!Array.isArray(r.details)&&Array.isArray(r.details.hints)?r.details.hints:(0,_.buildAutoStartHints)()}}function J(e){const t=e.metadata&&typeof e.metadata=="object"&&!Array.isArray(e.metadata)?e.metadata:{},n=e.artifacts&&typeof e.artifacts=="object"&&!Array.isArray(e.artifacts)?e.artifacts:{};return{hostId:typeof e.hostId=="string"?e.hostId:null,hostKind:typeof e.hostKind=="string"?e.hostKind:t.hostKind??null,reused:e.reused===!0,codeCommand:typeof e.codeCommand=="string"?e.codeCommand:t.codeCommand??null,codeCommandSource:typeof e.codeCommandSource=="string"?e.codeCommandSource:t.codeCommandSource??null,runDir:typeof e.runDir=="string"?e.runDir:t.runDir??null,logsDir:typeof n.logsDir=="string"?n.logsDir:t.logsDir??null,instanceId:typeof t.instanceId=="string"?t.instanceId:null,serveWebPid:typeof t.serveWebPid=="number"?t.serveWebPid:null,browserPid:typeof t.browserPid=="number"?t.browserPid:null}}function z(e){const t=e.selectedInstance&&typeof e.selectedInstance=="object"&&!Array.isArray(e.selectedInstance)?e.selectedInstance:{},n=e.response&&typeof e.response=="object"&&!Array.isArray(e.response)?e.response:{};return{instanceId:typeof t.instanceId=="string"?t.instanceId:n.instanceId??null,reason:typeof t.reason=="string"?t.reason:null,matchedWorkspace:typeof t.matchedWorkspace=="string"?t.matchedWorkspace:null,pid:typeof n.pid=="number"?n.pid:null,protocolVersion:typeof n.protocolVersion=="number"?n.protocolVersion:null,extensionVersion:typeof n.extensionVersion=="string"?n.extensionVersion:null}}function Z(){const e=Number(process.versions.node.split(".")[0]??"0"),t=Number.isInteger(e)&&e>=20;return f({id:"node-version",ok:t,severity:"required",message:t?"Node.js version is supported.":"Node.js 20 or newer is required.",details:{node:process.version,required:">=20"}},{code:"DOCTOR_NODE_VERSION_UNSUPPORTED",hints:[(0,l.actionHint)("Install Node.js 20 or newer, then retry the CLI command.")]})}function Q(e){const t=a.join(e,"package.json"),n=a.join(e,"dist","bin","aib.js"),r=i.existsSync(t)&&i.existsSync(n);return f({id:"cli-package-root",ok:r,severity:"required",message:r?"CLI package root looks complete.":"CLI package root is missing package metadata or the built bin.",details:{packageRoot:e,packageJsonPath:t,packageJsonExists:i.existsSync(t),binPath:n,binExists:i.existsSync(n)}},{code:"DOCTOR_CLI_PACKAGE_INCOMPLETE",hints:[(0,l.commandHint)("npm run cli:build","Build the local CLI package."),(0,l.actionHint)("For an installed package, reinstall the CLI package.")]})}function Y(e,t){const n=a.join(e,"dist","managed-host","manage-serve-web-host.cjs"),r=t?a.join(t,"scripts","managed-host","manage-serve-web-host.cjs"):null,o=k(d.CLI_ENV.managedHostScript),s=!!(o&&i.existsSync(o)||i.existsSync(n)||r&&i.existsSync(r));return f({id:"managed-host-assets",ok:s,severity:"required",message:s?"Managed host assets are available.":"Managed host assets were not found.",details:{env:d.CLI_ENV.managedHostScript,envScriptPath:o,envScriptExists:o?i.existsSync(o):!1,packagedScriptPath:n,packagedScriptExists:i.existsSync(n),repoScriptPath:r,repoScriptExists:r?i.existsSync(r):!1}},{code:"DOCTOR_MANAGED_HOST_ASSETS_MISSING",hints:(0,_.buildAutoStartHints)()})}function ee(e,t){try{const n=(0,M.resolveExtensionVsixPath)({packageRoot:e,repoRoot:t}),r=i.existsSync(n.path);return f({id:"extension-vsix",ok:r,severity:"required",message:r?"Extension VSIX is available.":"Extension VSIX path resolved but the file does not exist.",details:{...n,exists:r}},{code:"DOCTOR_EXTENSION_VSIX_MISSING",hints:[(0,l.configHint)(d.CLI_ENV.extensionVsix,"Point to an existing packaged VSIX artifact."),(0,l.commandHint)("npm --prefix packages/extension run package:vsix","Build a local VSIX artifact.")]})}catch(n){return{id:"extension-vsix",ok:!1,severity:"required",message:"Extension VSIX resolution failed.",code:"DOCTOR_EXTENSION_VSIX_RESOLUTION_FAILED",details:{error:n instanceof Error?n.message:String(n),code:typeof n=="object"&&n!==null&&"code"in n?String(n.code):null},hints:(0,_.buildAutoStartHints)()}}}function te(e){const t=process.env[d.CLI_ENV.ideCommand]?.trim(),n=process.env[d.CLI_ENV.managedHostKind]?.trim()||re(e),r=k(d.CLI_ENV.codeServerPath),o=a.join(e,"runtimes","code-server","node_modules","code-server","out","node","entry.js"),s=(0,v.managedRuntimePlatformStatus)(e),u=(0,C.resolveNodeRuntime)(e),g=i.existsSync(o)&&s.ok?`${u.command} ${o}`:null,m=a.join(e,"runtimes","code-server","bin",process.platform==="win32"?"code-server.cmd":"code-server"),c=[r,g,m,"code-server"].filter(h=>!!h),E=t?[t]:n==="code-server"?c:process.platform==="win32"?q:T,y=E.map(h=>({candidate:h,result:h===g?{ok:!0,path:o}:I(h)})).find(h=>h.result.ok),b=!!y;return f({id:"ide-command",ok:b,severity:"required",message:b?"VS Code CLI command is available.":"VS Code CLI command was not found.",details:{env:d.CLI_ENV.ideCommand,codeServerEnv:d.CLI_ENV.codeServerPath,hostKindEnv:d.CLI_ENV.managedHostKind,hostKind:n,explicitIdeCommand:t||null,nodeRuntimeCommand:u.command,nodeRuntimeSource:u.source,platformMarker:{ok:s.ok,reason:s.reason,expectedPlatformKey:s.expectedPlatformKey,actualPlatformKey:s.actualPlatformKey,markerPath:s.markerPath},candidates:E,resolvedCommand:y?.candidate??null,resolvedPath:y?.result.path??null}},{code:"DOCTOR_IDE_COMMAND_MISSING",hints:[(0,l.configHint)(d.CLI_ENV.ideCommand,"Set an explicit VS Code-compatible CLI command path."),(0,l.configHint)(d.CLI_ENV.codeServerPath,"Set an explicit Coder code-server executable path when using the code-server managed host."),(0,l.actionHint)("Install VS Code, install Coder code-server, or include a packaged code-server runtime.")]})}function ne(e){const t=(0,C.findPackagedNodeRuntime)(e),n=(0,C.resolveNodeRuntime)(e),r=(0,v.managedRuntimePlatformStatus)(e),o=i.existsSync(a.join(e,"runtimes","code-server","node_modules","code-server","out","node","entry.js"))&&r.ok;return f({id:"managed-runtime-node",ok:!!t||!o,severity:o?"required":"optional",message:t?"Bundled Node runtime is available for managed runtime.":o?"Bundled Node runtime is missing for package-local code-server.":"Bundled Node runtime is not needed because package-local code-server is not present.",details:{env:d.CLI_ENV.nodePath,packagedNodePath:t,resolvedCommand:n.command,resolvedSource:n.source,packagedCodeServerPresent:o,platformMarker:{ok:r.ok,reason:r.reason,expectedPlatformKey:r.expectedPlatformKey,actualPlatformKey:r.actualPlatformKey,markerPath:r.markerPath}}},{code:"DOCTOR_MANAGED_RUNTIME_NODE_MISSING",hints:[(0,l.commandHint)("node scripts/runtime/provision-managed-runtimes.cjs --node","Provision the bundled Node runtime."),(0,l.actionHint)("For installed packages, reprovision or reinstall the managed runtime bundle.")]})}function re(e){const t=a.join(e,"runtimes","code-server","node_modules","code-server","out","node","entry.js");return i.existsSync(t)&&(0,v.managedRuntimePlatformStatus)(e).ok?"code-server":null}function oe(e){const t=k(d.CLI_ENV.chromePath),r=[t,se(e),"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe","C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe","C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe","google-chrome","chromium","chromium-browser","microsoft-edge"].filter(s=>!!s).map(s=>({candidate:s,result:I(s)})).find(s=>s.result.ok),o=!!r;return f({id:"headless-browser",ok:o,severity:"required",message:o?"Headless browser command is available.":"Chrome or Edge was not found for managed serve-web activation.",details:{env:d.CLI_ENV.chromePath,explicitChromePath:t,resolvedCommand:r?.candidate??null}},{code:"DOCTOR_HEADLESS_BROWSER_MISSING",hints:[(0,l.configHint)(d.CLI_ENV.chromePath,"Set an explicit Chrome or Edge executable path."),(0,l.actionHint)("Install Chrome, Edge, Chromium, or another compatible headless browser.")]})}function se(e){const t=[a.join(e,"runtimes","browser"),a.join(e,"runtimes","chrome"),a.join(e,"runtimes","chromium")],n=process.platform==="win32"?new Set(["chrome.exe","chromium.exe","msedge.exe"]):new Set(["chrome","chromium"]);for(const r of t){const o=N(r,n,5);if(o)return o}return null}function N(e,t,n){if(!i.existsSync(e)||n<0)return null;let r;try{r=i.readdirSync(e,{withFileTypes:!0})}catch{return null}for(const o of r){const s=a.join(e,o.name);if(o.isFile()&&t.has(o.name)&&I(s).ok)return s}for(const o of r){if(!o.isDirectory())continue;const s=N(a.join(e,o.name),t,n-1);if(s)return s}return null}function ie(e){const t=process.platform==="win32"||process.platform==="linux";return f({id:"managed-runtime-platform",ok:t||e!==!0,severity:e?"required":"optional",message:t?"Managed serve-web auto-start is supported on this platform.":"Managed serve-web auto-start is currently supported on Windows and Linux.",details:{platform:process.platform,runtimeRequested:e}},{code:"DOCTOR_MANAGED_RUNTIME_PLATFORM_UNSUPPORTED",hints:[(0,l.actionHint)("Run static doctor checks only, or use a Windows/Linux environment for managed runtime.")]})}function ae(){const e=[a.resolve(__dirname),process.cwd()];for(const t of e){let n=t;for(;;){const r=a.join(n,"scripts","managed-host","manage-serve-web-host.cjs"),o=a.join(n,"package.json");if(i.existsSync(r)&&i.existsSync(o))return n;const s=a.dirname(n);if(s===n)break;n=s}}return null}function k(e){const t=process.env[e];return t&&t.trim()?a.resolve(t.trim()):null}function I(e){if(ce(e))return{ok:i.existsSync(e),status:i.existsSync(e)?0:1,error:null};const t=process.platform==="win32"?(0,w.spawnSync)("where.exe",[e],{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","pipe"]}):(0,w.spawnSync)("sh",["-lc",`command -v "${e.replace(/"/g,'\\"')}"`],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return{ok:t.status===0,status:t.status,error:t.error?t.error.message:null}}function ce(e){return e.includes("\\")||e.includes("/")||/^[A-Za-z]:/.test(e)}