@automaton-labs/aib 0.0.3 → 0.0.5

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 (134) hide show
  1. package/dist/bin/cli.js +2 -2
  2. package/dist/commands/config-command.js +1 -3
  3. package/dist/commands/config-output.js +8 -0
  4. package/dist/commands/help-command.js +7 -3
  5. package/dist/commands/init-workspace.js +1 -3
  6. package/dist/commands/inspect-tree.js +3 -3
  7. package/dist/commands/reveal-command.js +5 -0
  8. package/dist/commands/session-workspace.js +4 -4
  9. package/dist/commands/sync-command.js +2 -2
  10. package/dist/config/local-config.js +3 -3
  11. package/dist/config/resolve-command-alias.js +1 -1
  12. package/dist/config/tsconfig-discovery.js +1 -0
  13. package/dist/config/workspace-root.js +3 -3
  14. package/dist/config/workspace-state.js +1 -1
  15. package/dist/dsl/aib-dsl.js +1 -1
  16. package/dist/help/bootstrap.md +108 -94
  17. package/dist/help/docs/config-setup.aliases.md +56 -0
  18. package/dist/help/docs/config-setup.excludes.md +45 -0
  19. package/dist/help/docs/config-setup.import-normalize.md +86 -0
  20. package/dist/help/docs/config-setup.import-rules.md +96 -0
  21. package/dist/help/docs/config-setup.tsconfigs.md +33 -0
  22. package/dist/help/docs/first-setup.md +292 -0
  23. package/dist/help/docs/help-protocol.md +26 -0
  24. package/dist/help/docs/inspect.cycles.md +38 -0
  25. package/dist/help/docs/inspect.md +1 -0
  26. package/dist/help/docs/inspect.tree.md +8 -6
  27. package/dist/help/docs/modulePlan.md +3 -0
  28. package/dist/help/docs/move.md +3 -0
  29. package/dist/help/docs/mutation.md +3 -0
  30. package/dist/help/docs/patterns.md +16 -118
  31. package/dist/help/docs/qr.md +6 -2
  32. package/dist/help/docs/quick-map.md +30 -0
  33. package/dist/help/docs/reveal.md +30 -0
  34. package/dist/help/dsl/bootstrap.md +108 -94
  35. package/dist/help/dsl/docs/config-setup.aliases.md +56 -0
  36. package/dist/help/dsl/docs/config-setup.excludes.md +45 -0
  37. package/dist/help/dsl/docs/config-setup.import-normalize.md +86 -0
  38. package/dist/help/dsl/docs/config-setup.import-rules.md +96 -0
  39. package/dist/help/dsl/docs/config-setup.tsconfigs.md +33 -0
  40. package/dist/help/dsl/docs/first-setup.md +292 -0
  41. package/dist/help/dsl/docs/help-protocol.md +26 -0
  42. package/dist/help/dsl/docs/inspect.cycles.md +38 -0
  43. package/dist/help/dsl/docs/inspect.md +1 -0
  44. package/dist/help/dsl/docs/inspect.tree.md +8 -6
  45. package/dist/help/dsl/docs/modulePlan.md +3 -0
  46. package/dist/help/dsl/docs/move.md +3 -0
  47. package/dist/help/dsl/docs/mutation.md +3 -0
  48. package/dist/help/dsl/docs/patterns.md +16 -118
  49. package/dist/help/dsl/docs/qr.md +6 -2
  50. package/dist/help/dsl/docs/quick-map.md +30 -0
  51. package/dist/help/dsl/docs/reveal.md +30 -0
  52. package/dist/help/dsl/full.md +108 -94
  53. package/dist/help/dsl/topics/config-setup.aliases.md +54 -0
  54. package/dist/help/dsl/topics/config-setup.excludes.md +43 -0
  55. package/dist/help/dsl/topics/config-setup.import-normalize.md +84 -0
  56. package/dist/help/dsl/topics/config-setup.import-rules.md +94 -0
  57. package/dist/help/dsl/topics/config-setup.tsconfigs.md +31 -0
  58. package/dist/help/dsl/topics/first-setup.md +290 -0
  59. package/dist/help/dsl/topics/help-protocol.md +24 -0
  60. package/dist/help/dsl/topics/inspect.cycles.md +36 -0
  61. package/dist/help/dsl/topics/inspect.md +1 -0
  62. package/dist/help/dsl/topics/inspect.tree.md +8 -6
  63. package/dist/help/dsl/topics/modulePlan.md +3 -0
  64. package/dist/help/dsl/topics/move.md +3 -0
  65. package/dist/help/dsl/topics/mutation.md +3 -0
  66. package/dist/help/dsl/topics/patterns.md +16 -118
  67. package/dist/help/dsl/topics/qr.md +6 -2
  68. package/dist/help/dsl/topics/quick-map.md +28 -0
  69. package/dist/help/dsl/topics/reveal.md +28 -0
  70. package/dist/help/full.md +108 -94
  71. package/dist/help/help-meta.json +57 -17
  72. package/dist/help/index.md +60 -0
  73. package/dist/help/json/bootstrap.md +108 -94
  74. package/dist/help/json/docs/config-setup.aliases.md +56 -0
  75. package/dist/help/json/docs/config-setup.excludes.md +45 -0
  76. package/dist/help/json/docs/config-setup.import-normalize.md +86 -0
  77. package/dist/help/json/docs/config-setup.import-rules.md +96 -0
  78. package/dist/help/json/docs/config-setup.tsconfigs.md +33 -0
  79. package/dist/help/json/docs/first-setup.md +292 -0
  80. package/dist/help/json/docs/help-protocol.md +26 -0
  81. package/dist/help/json/docs/inspect.cycles.md +38 -0
  82. package/dist/help/json/docs/inspect.md +1 -0
  83. package/dist/help/json/docs/inspect.tree.md +8 -6
  84. package/dist/help/json/docs/modulePlan.md +3 -0
  85. package/dist/help/json/docs/move.md +3 -0
  86. package/dist/help/json/docs/mutation.md +3 -0
  87. package/dist/help/json/docs/patterns.md +16 -118
  88. package/dist/help/json/docs/qr.md +6 -2
  89. package/dist/help/json/docs/quick-map.md +30 -0
  90. package/dist/help/json/docs/reveal.md +30 -0
  91. package/dist/help/json/full.md +108 -94
  92. package/dist/help/json/topics/config-setup.aliases.md +54 -0
  93. package/dist/help/json/topics/config-setup.excludes.md +43 -0
  94. package/dist/help/json/topics/config-setup.import-normalize.md +84 -0
  95. package/dist/help/json/topics/config-setup.import-rules.md +94 -0
  96. package/dist/help/json/topics/config-setup.tsconfigs.md +31 -0
  97. package/dist/help/json/topics/first-setup.md +290 -0
  98. package/dist/help/json/topics/help-protocol.md +24 -0
  99. package/dist/help/json/topics/inspect.cycles.md +36 -0
  100. package/dist/help/json/topics/inspect.md +1 -0
  101. package/dist/help/json/topics/inspect.tree.md +8 -6
  102. package/dist/help/json/topics/modulePlan.md +3 -0
  103. package/dist/help/json/topics/move.md +3 -0
  104. package/dist/help/json/topics/mutation.md +3 -0
  105. package/dist/help/json/topics/patterns.md +16 -118
  106. package/dist/help/json/topics/qr.md +6 -2
  107. package/dist/help/json/topics/quick-map.md +28 -0
  108. package/dist/help/json/topics/reveal.md +28 -0
  109. package/dist/help/topics/config-setup.aliases.md +54 -0
  110. package/dist/help/topics/config-setup.excludes.md +43 -0
  111. package/dist/help/topics/config-setup.import-normalize.md +84 -0
  112. package/dist/help/topics/config-setup.import-rules.md +94 -0
  113. package/dist/help/topics/config-setup.tsconfigs.md +31 -0
  114. package/dist/help/topics/first-setup.md +290 -0
  115. package/dist/help/topics/help-protocol.md +24 -0
  116. package/dist/help/topics/inspect.cycles.md +36 -0
  117. package/dist/help/topics/inspect.md +1 -0
  118. package/dist/help/topics/inspect.tree.md +8 -6
  119. package/dist/help/topics/modulePlan.md +3 -0
  120. package/dist/help/topics/move.md +3 -0
  121. package/dist/help/topics/mutation.md +3 -0
  122. package/dist/help/topics/patterns.md +16 -118
  123. package/dist/help/topics/qr.md +6 -2
  124. package/dist/help/topics/quick-map.md +28 -0
  125. package/dist/help/topics/reveal.md +28 -0
  126. package/dist/runtime/run-command.js +1 -1
  127. package/dist/session/server.js +3 -3
  128. package/dist/shared/diagnostic-catalog.js +1 -1
  129. package/dist/shared/errors.js +6 -5
  130. package/extension/vscode-refactor-bridge-extension.vsix +0 -0
  131. package/package.json +1 -1
  132. package/runtimes/launcher/win-x64/aib.exe +0 -0
  133. package/scripts/install-windows-launcher.cjs +1 -0
  134. package/scripts/provision-runtime.cjs +99 -41
package/dist/bin/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var O=exports&&exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const F=O(require("node:fs")),Z=O(require("node:path")),W=require("../payloads/read-stdin-json"),ee=require("../commands/doctor"),te=require("../commands/init-workspace"),j=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/result-view"),fe=require("../commands/quick-read"),q=require("../commands/captured-input"),G=require("../commands/session-workspace"),U=require("../commands/session-workspace"),$=require("../config/path-aliases"),g=require("../session/client"),pe=require("../session/server"),me=require("../commands/module-plan-cache"),H=require("../config/resolve-command-alias"),_e=require("../config/auto-start-ide"),o=require("../config/env-vars"),B=require("../client/transport-options"),v=require("../shared/errors"),C=require("../shared/metrics"),J=require("../shared/presentation"),K=require("../tracing/config"),z=require("../tracing/trace"),Q=require("../runtime/input-source");function Ce(e){return e.ok===!1}let L=null,V=Date.now();function Ie(e){const t=[];let i=process.cwd(),r,E,N=process.env[o.CLI_ENV.metrics]==="1",p=(0,B.parseExtensionTransport)(process.env[o.CLI_ENV.transport])??void 0,m,y,I;for(let l=0;l<e.length;l+=1){const f=e[l];if(f){if(f==="--cwd"){const c=e[l+1];if(!c)throw new v.CliError("MISSING_FLAG_VALUE","Expected a value after --cwd.");i=c,l+=1;continue}if(f==="--instance"){const c=e[l+1];if(!c)throw new v.CliError("MISSING_FLAG_VALUE","Expected a value after --instance.");r=c,l+=1;continue}if(f==="--session"||f==="-s"){const c=e[l+1];if(!c)throw new v.CliError("MISSING_FLAG_VALUE",`Expected a value after ${f}.`);E=c,l+=1;continue}if(f==="--metrics"){N=!0;continue}if(f==="--dsl"||f==="--force-dsl"){I="dsl";continue}if(f==="--stdin-format"){const c=e[l+1];if(c!=="auto"&&c!=="dsl")throw new v.CliError("INVALID_STDIN_FORMAT","Expected --stdin-format to be auto or dsl.");I=c,l+=1;continue}if(f==="--trace-dir"){const c=e[l+1];if(!c)throw new v.CliError("MISSING_FLAG_VALUE","Expected a value after --trace-dir.");y=c,l+=1;continue}if(f==="--auto-start-ide"){m="serve-web";continue}if(f==="--no-auto-start-ide"){m="off";continue}if(f==="--transport"){const c=e[l+1],u=(0,B.parseExtensionTransport)(c);if(!u)throw new v.CliError("INVALID_TRANSPORT","Expected --transport to be either http or websocket.");p=u,l+=1;continue}t.push(f)}}const h=process.env[o.CLI_ENV.traceDir];return{commandArgs:t,cwd:i,instanceId:r,sessionId:E,metricsEnabled:N,transport:p,autoStartIde:(0,_e.resolveAutoStartIdePolicy)(m),trace:(0,K.resolveTraceConfig)(i,{...y!==void 0?{flagTraceDir:y}:{},...h!==void 0?{envTraceDir:h}:{}}),...I!==void 0?{stdinFormat:I}:{}}}async function Ee(){V=Date.now();const e=(0,C.metricsNow)(),t=[],{commandArgs:i,cwd:r,instanceId:E,sessionId:N,metricsEnabled:p,transport:m,autoStartIde:y,trace:I,stdinFormat:h}=Ie(process.argv.slice(2));await(0,U.runWithSessionOverride)(N,async()=>{const[l,...f]=i,c=(0,W.stripStdinFormatFlags)(f),u=c.restArgs,X=(0,C.metricsNow)(),s=await(0,H.resolveCanonicalCommandAlias)(l??"ping",r,E,y);if(p&&(0,C.recordSpan)(t,"cli.aliasResolution",X),(0,H.isRemovedAgentCommand)(s))throw new v.CliError("UNKNOWN_COMMAND",`Unknown command: ${s}`,{availableCommands:["doctor","diagnostics","listInstances","ping","runtimeInfo","printConfig","init-skill-usage","init","help","generate-docs","config","qr","sync","inspect","imports","view","execution","move","rename","refactor","modulePlan","session","runtime","trace","observability","feedback","note"]});if(s==="session"&&(u[0]??"status")==="serve"){await(0,pe.runSessionServerCli)();return}if(s==="trace"){const n=(0,K.runTraceCommand)(r,u,I);d(n);return}if(s==="diagnostics"){await(0,se.runDiagnosticsCommand)(u);return}if(s==="observability"){x(r,s,u,I);const n=(0,ae.runObservabilityCommand)(r,u);d(n);return}if(s==="feedback"||s==="note"){x(r,s,u,I);const n=(0,oe.runFeedbackCommand)(r,u,s);d(n);return}if(s==="init"){const n=(0,te.runInitWorkspace)(r,u);d(n);return}if(s==="help"){const n=(0,ue.runHelpCommand)(u);d(n);return}if(s==="generate-docs"){const n=(0,ce.runGenerateDocsCommand)(r,u);d(n);return}if(s==="config"){x(r,s,u,I);const n=(0,ne.runConfigCommand)(r,u);d(n);return}if(s==="runtime"){const n=await(0,de.runRuntimeCommand)(r,u);n.ok===!1&&(process.exitCode=1),d(n);return}if(s==="qr"){x(r,s,u,I);const n=await(0,fe.runQuickReadCommand)(r,u);n.ok===!1&&(process.exitCode=1),d(n);return}const D=ye(s,u),P=D?(0,U.readEffectiveSessionPathAliases)(r):{},a=D?(0,$.expandPathAliasesInArgs)(r,u,P):u,A=await(0,Q.resolveCommandInputSource)({command:s,cwd:r,restArgs:a,readStdinInput:()=>(0,W.readStdinPayloadWithSource)({command:s,restArgs:a,...c.format!==void 0||h!==void 0?{format:c.format??h}:{}})}),_=D?(0,$.expandPathAliasesInJson)(r,A.payload,P):A.payload;if(L=(0,z.startTrace)({cwd:r,argv:process.argv.slice(2),command:s,restArgs:a,...I.absoluteTraceDir!==void 0?{traceDir:I.absoluteTraceDir}:I.traceDir!==void 0?{traceDir:I.traceDir}:{},..._!==void 0?{stdinPayload:_}:{},startedAtMs:V}),s==="session"){const n=a[0]??"status";if(n==="init"||n==="clear"||n==="where"||n==="read"||n==="write"||n==="prefs"||n==="aliases"||n==="list"||n==="use"){const S=(0,G.runSessionWorkspaceCommand)(r,a,_);d(S);return}if(n==="status"){const S=(0,G.runSessionWorkspaceCommand)(r,a,_),b=await(0,g.getSessionStatus)();d({...S,runtime:Ae(b)});return}if(n==="start"){const S=await(0,g.startSession)();d(S);return}if(n==="stop"){const S=await(0,g.stopSession)();d(S);return}throw new v.CliError("UNKNOWN_SESSION_COMMAND",`Unknown aib session command: ${n}`)}if(s==="imports"&&a[0]==="normalize"){const n=(0,q.attachCapturedInput)(r,"imports",_,await(0,re.runImportsCommand)(r,a,_,{...E!==void 0?{explicitInstanceId:E}:{},autoStartIde:y,...m!==void 0?{transport:m}:{},...p?{metricsEnabled:!0}:{}},p?t:void 0),A.source);d(n);return}if(s==="execution"){const n=(0,ie.runExecutionCommand)(r,a);d(n);return}if(s==="view"){const n=(0,le.runResultViewCommand)(r,a,_);d(n);return}if(s==="doctor"){const n=await(0,ee.runDoctor)({cwd:r,runtime:a.includes("--runtime"),verbose:a.includes("--verbose"),json:a.includes("--json")});n.ok===!1&&(process.exitCode=1),d(n);return}if(s==="inspect"&&(a[0]==="graph"||a[0]==="tree"||a[0]==="cycles")){const n=(0,C.metricsNow)(),S=a[0]==="tree"?"tree":a[0]==="cycles"?"cycles":"graph",b=(0,q.attachCapturedInput)(r,S,_,await(0,j.runInspect)(r,a,_,{...E!==void 0?{explicitInstanceId:E}:{},autoStartIde:y,...m!==void 0?{transport:m}:{},...p?{metricsEnabled:!0}:{}}),A.source);p&&((0,C.recordSpan)(t,"cli.inspectGraph",n),(0,C.recordSpan)(t,"cli.total",e)),d(p?(0,C.appendMetrics)(b,t):b,m);return}if(s==="inspect"&&a.includes("--stdin")&&Ne(_)){const n=(0,C.metricsNow)(),S=(0,q.attachCapturedInput)(r,he(_),_,await(0,j.runInspect)(r,a,_,{...E!==void 0?{explicitInstanceId:E}:{},autoStartIde:y,...m!==void 0?{transport:m}:{},...p?{metricsEnabled:!0}:{}}),A.source);p&&((0,C.recordSpan)(t,"cli.inspectLocal",n),(0,C.recordSpan)(t,"cli.total",e)),d(p?(0,C.appendMetrics)(S,t):S,m);return}if((0,Q.commandRequiresPayload)(s,a,A))throw new v.CliError("STDIN_REQUIRED",`${s} currently expects a payload on stdin or --from.`);const w={command:s,restArgs:a,cwd:r},M=we(s,a);M&&(w.modulePlanExecutionId=M),N!==void 0&&(w.sessionId=N),E!==void 0&&(w.instanceId=E),_!==void 0&&(w.stdinPayload=_),A.source!==void 0&&(w.stdinInputSource=A.source),p&&(w.metricsEnabled=!0),m&&(w.transport=m),w.autoStartIde=y.mode;const k=Se();Object.keys(k).length>0&&(w.env=k);const Y=(0,C.metricsNow)(),T=await(0,g.callSession)(w,p?t:void 0);p&&((0,C.recordSpan)(t,"cli.callSession",Y),(0,C.recordSpan)(t,"cli.total",e));const R=p?(0,C.appendMetrics)(T,t):T;Ce(R)&&(process.exitCode=1),d(R,m)})}function Se(){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],t={};for(const i of e){const r=process.env[i];r!==void 0&&(t[i]=r)}return t}function we(e,t){if(e!=="modulePlan")return null;const i=t[0]??"";return i!=="execute"&&i!=="apply"?null:ve()??(0,me.buildModulePlanExecutionId)()}function ve(){const e=process.env.AIB_MODULE_PLAN_EXECUTION_ID;return e&&/^exec_[a-z0-9_-]+$/i.test(e)?e:null}function x(e,t,i,r){L=(0,z.startTrace)({cwd:e,argv:process.argv.slice(2),command:t,restArgs:i,...r.absoluteTraceDir!==void 0?{traceDir:r.absoluteTraceDir}:r.traceDir!==void 0?{traceDir:r.traceDir}:{},startedAtMs:V})}function ye(e,t){return e==="session"||e==="execution"||e==="observability"||e==="doctor"||e==="view"||e==="imports"&&t[0]==="normalize"||e==="inspect"&&(t[0]==="graph"||t[0]==="tree"||t[0]==="cycles"||t[0]==="imports"||t.includes("--stdin"))}function Ae(e){if(e.running===!0){const t=e.session&&typeof e.session=="object"&&!Array.isArray(e.session)?e.session:{},i=typeof t.pid=="number"?` pid ${t.pid}`:"",r=typeof t.port=="number"?` port ${t.port}`:"";return`running${i}${r}`.trim()}return e.processAlive===!0&&e.healthy===!1?"unhealthy":"stopped"}function Ne(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(t=>t&&typeof t=="object"&&!Array.isArray(t)&&(t.op==="tree"||t.op==="cycles"||t.op==="imports"))}function he(e){if(!e||typeof e!="object"||Array.isArray(e))return"inspect";const t=Array.isArray(e.requests)?e.requests.filter(i=>i&&typeof i=="object"&&!Array.isArray(i)):[e];return t.every(i=>i.op==="cycles")?"cycles":t.every(i=>i.op==="tree")?"tree":t.every(i=>i.op==="imports")?"imports":"inspect"}Ee().catch(e=>{const t=(0,v.errorPayload)(e);d(t),process.exitCode=1});function d(e,t){const i=(0,J.createCliPresentationEnvelope)(e);L?.enabled&&L.complete({output:i.tracePayload,exitCode:e.ok===!1?1:be(process.exitCode),durationMs:Date.now()-V,...t?{transport:t}:{}});const r=process.env.AIB_CANONICAL_JSON_PATH;r&&(F.default.mkdirSync(Z.default.dirname(r),{recursive:!0}),F.default.writeFileSync(r,`${JSON.stringify(i.tracePayload,null,2)}
3
- `)),process.stdout.write((0,J.presentCliEnvelope)(i,process.env.AIB_FORCE_JSON==="1"?"json":"agent"))}function be(e){return typeof e=="number"?e:0}
2
+ "use strict";var O=exports&&exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const F=O(require("node:fs")),Z=O(require("node:path")),W=require("../payloads/read-stdin-json"),ee=require("../commands/doctor"),te=require("../commands/init-workspace"),j=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"),q=require("../commands/captured-input"),G=require("../commands/session-workspace"),U=require("../commands/session-workspace"),$=require("../config/path-aliases"),L=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"),B=require("../client/transport-options"),w=require("../shared/errors"),I=require("../shared/metrics"),J=require("../shared/presentation"),K=require("../tracing/config"),z=require("../tracing/trace"),Q=require("../runtime/input-source");function Ie(e){return e.ok===!1}let V=null,x=Date.now();function Ee(e){const t=[];let i=process.cwd(),r,E,N=process.env[o.CLI_ENV.metrics]==="1",p=(0,B.parseExtensionTransport)(process.env[o.CLI_ENV.transport])??void 0,m,y,_;for(let l=0;l<e.length;l+=1){const f=e[l];if(f){if(f==="--cwd"){const d=e[l+1];if(!d)throw new w.CliError("MISSING_FLAG_VALUE","Expected a value after --cwd.");i=d,l+=1;continue}if(f==="--instance"){const d=e[l+1];if(!d)throw new w.CliError("MISSING_FLAG_VALUE","Expected a value after --instance.");r=d,l+=1;continue}if(f==="--session"||f==="-s"){const d=e[l+1];if(!d)throw new w.CliError("MISSING_FLAG_VALUE",`Expected a value after ${f}.`);E=d,l+=1;continue}if(f==="--metrics"){N=!0;continue}if(f==="--dsl"||f==="--force-dsl"){_="dsl";continue}if(f==="--stdin-format"){const d=e[l+1];if(d!=="auto"&&d!=="dsl")throw new w.CliError("INVALID_STDIN_FORMAT","Expected --stdin-format to be auto or dsl.");_=d,l+=1;continue}if(f==="--trace-dir"){const d=e[l+1];if(!d)throw new w.CliError("MISSING_FLAG_VALUE","Expected a value after --trace-dir.");y=d,l+=1;continue}if(f==="--auto-start-ide"){m="serve-web";continue}if(f==="--no-auto-start-ide"){m="off";continue}if(f==="--transport"){const d=e[l+1],c=(0,B.parseExtensionTransport)(d);if(!c)throw new w.CliError("INVALID_TRANSPORT","Expected --transport to be either http or websocket.");p=c,l+=1;continue}t.push(f)}}const h=process.env[o.CLI_ENV.traceDir];return{commandArgs:t,cwd:i,instanceId:r,sessionId:E,metricsEnabled:N,transport:p,autoStartIde:(0,Ce.resolveAutoStartIdePolicy)(m),trace:(0,K.resolveTraceConfig)(i,{...y!==void 0?{flagTraceDir:y}:{},...h!==void 0?{envTraceDir:h}:{}}),..._!==void 0?{stdinFormat:_}:{}}}async function Se(){x=Date.now();const e=(0,I.metricsNow)(),t=[],{commandArgs:i,cwd:r,instanceId:E,sessionId:N,metricsEnabled:p,transport:m,autoStartIde:y,trace:_,stdinFormat:h}=Ee(process.argv.slice(2));await(0,U.runWithSessionOverride)(N,async()=>{const[l,...f]=i,d=(0,W.stripStdinFormatFlags)(f),c=d.restArgs,X=(0,I.metricsNow)(),s=await(0,H.resolveCanonicalCommandAlias)(l??"ping",r,E,y);if(p&&(0,I.recordSpan)(t,"cli.aliasResolution",X),(0,H.isRemovedAgentCommand)(s))throw new w.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 n=(0,K.runTraceCommand)(r,c,_);u(n);return}if(s==="diagnostics"){await(0,se.runDiagnosticsCommand)(c);return}if(s==="observability"){b(r,s,c,_);const n=(0,ae.runObservabilityCommand)(r,c);u(n);return}if(s==="feedback"||s==="note"){b(r,s,c,_);const n=(0,oe.runFeedbackCommand)(r,c,s);u(n);return}if(s==="init"){const n=(0,te.runInitWorkspace)(r,c);u(n);return}if(s==="help"){const n=(0,ue.runHelpCommand)(c);u(n);return}if(s==="generate-docs"){const n=(0,ce.runGenerateDocsCommand)(r,c);u(n);return}if(s==="config"){b(r,s,c,_);const n=(0,ne.runConfigCommand)(r,c);u(n);return}if(s==="runtime"){const n=await(0,de.runRuntimeCommand)(r,c);n.ok===!1&&(process.exitCode=1),u(n);return}if(s==="reveal"){b(r,s,c,_);const n=(0,le.runRevealCommand)(r,c);u(n);return}if(s==="qr"){b(r,s,c,_);const n=await(0,pe.runQuickReadCommand)(r,c);n.ok===!1&&(process.exitCode=1),u(n);return}const D=Ae(s,c),P=D?(0,U.readEffectiveSessionPathAliases)(r):{},a=D?(0,$.expandPathAliasesInArgs)(r,c,P):c,A=await(0,Q.resolveCommandInputSource)({command:s,cwd:r,restArgs:a,readStdinInput:()=>(0,W.readStdinPayloadWithSource)({command:s,restArgs:a,...d.format!==void 0||h!==void 0?{format:d.format??h}:{}})}),C=D?(0,$.expandPathAliasesInJson)(r,A.payload,P):A.payload;if(V=(0,z.startTrace)({cwd:r,argv:process.argv.slice(2),command:s,restArgs:a,..._.absoluteTraceDir!==void 0?{traceDir:_.absoluteTraceDir}:_.traceDir!==void 0?{traceDir:_.traceDir}:{},...C!==void 0?{stdinPayload:C}:{},startedAtMs:x}),s==="session"){const n=a[0]??"status";if(n==="init"||n==="clear"||n==="where"||n==="read"||n==="write"||n==="prefs"||n==="aliases"||n==="list"||n==="use"){const S=(0,G.runSessionWorkspaceCommand)(r,a,C);u(S);return}if(n==="status"){const S=(0,G.runSessionWorkspaceCommand)(r,a,C),g=await(0,L.getSessionStatus)();u({...S,runtime:Ne(g)});return}if(n==="start"){const S=await(0,L.startSession)();u(S);return}if(n==="stop"){const S=await(0,L.stopSession)();u(S);return}throw new w.CliError("UNKNOWN_SESSION_COMMAND",`Unknown aib session command: ${n}`)}if(s==="imports"&&a[0]==="normalize"){const n=(0,q.attachCapturedInput)(r,"imports",C,await(0,re.runImportsCommand)(r,a,C,{...E!==void 0?{explicitInstanceId:E}:{},autoStartIde:y,...m!==void 0?{transport:m}:{},...p?{metricsEnabled:!0}:{}},p?t:void 0),A.source);u(n);return}if(s==="execution"){const n=(0,ie.runExecutionCommand)(r,a);u(n);return}if(s==="view"){const n=(0,fe.runResultViewCommand)(r,a,C);u(n);return}if(s==="doctor"){const n=await(0,ee.runDoctor)({cwd:r,runtime:a.includes("--runtime"),verbose:a.includes("--verbose"),json:a.includes("--json")});n.ok===!1&&(process.exitCode=1),u(n);return}if(s==="inspect"&&(a[0]==="graph"||a[0]==="tree"||a[0]==="cycles")){const n=(0,I.metricsNow)(),S=a[0]==="tree"?"tree":a[0]==="cycles"?"cycles":"graph",g=(0,q.attachCapturedInput)(r,S,C,await(0,j.runInspect)(r,a,C,{...E!==void 0?{explicitInstanceId:E}:{},autoStartIde:y,...m!==void 0?{transport:m}:{},...p?{metricsEnabled:!0}:{}}),A.source);p&&((0,I.recordSpan)(t,"cli.inspectGraph",n),(0,I.recordSpan)(t,"cli.total",e)),u(p?(0,I.appendMetrics)(g,t):g,m);return}if(s==="inspect"&&a.includes("--stdin")&&he(C)){const n=(0,I.metricsNow)(),S=(0,q.attachCapturedInput)(r,be(C),C,await(0,j.runInspect)(r,a,C,{...E!==void 0?{explicitInstanceId:E}:{},autoStartIde:y,...m!==void 0?{transport:m}:{},...p?{metricsEnabled:!0}:{}}),A.source);p&&((0,I.recordSpan)(t,"cli.inspectLocal",n),(0,I.recordSpan)(t,"cli.total",e)),u(p?(0,I.appendMetrics)(S,t):S,m);return}if((0,Q.commandRequiresPayload)(s,a,A))throw new w.CliError("STDIN_REQUIRED",`${s} currently expects a payload on stdin or --from.`);const v={command:s,restArgs:a,cwd:r},M=we(s,a);M&&(v.modulePlanExecutionId=M),N!==void 0&&(v.sessionId=N),E!==void 0&&(v.instanceId=E),C!==void 0&&(v.stdinPayload=C),A.source!==void 0&&(v.stdinInputSource=A.source),p&&(v.metricsEnabled=!0),m&&(v.transport=m),v.autoStartIde=y.mode;const k=ve();Object.keys(k).length>0&&(v.env=k);const Y=(0,I.metricsNow)(),T=await(0,L.callSession)(v,p?t:void 0);p&&((0,I.recordSpan)(t,"cli.callSession",Y),(0,I.recordSpan)(t,"cli.total",e));const R=p?(0,I.appendMetrics)(T,t):T;Ie(R)&&(process.exitCode=1),u(R,m)})}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],t={};for(const i of e){const r=process.env[i];r!==void 0&&(t[i]=r)}return t}function we(e,t){if(e!=="modulePlan")return null;const i=t[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 b(e,t,i,r){V=(0,z.startTrace)({cwd:e,argv:process.argv.slice(2),command:t,restArgs:i,...r.absoluteTraceDir!==void 0?{traceDir:r.absoluteTraceDir}:r.traceDir!==void 0?{traceDir:r.traceDir}:{},startedAtMs:x})}function Ae(e,t){return e==="session"||e==="execution"||e==="observability"||e==="doctor"||e==="reveal"||e==="view"||e==="imports"&&t[0]==="normalize"||e==="inspect"&&(t[0]==="graph"||t[0]==="tree"||t[0]==="cycles"||t[0]==="imports"||t.includes("--stdin"))}function Ne(e){if(e.running===!0){const t=e.session&&typeof e.session=="object"&&!Array.isArray(e.session)?e.session:{},i=typeof t.pid=="number"?` pid ${t.pid}`:"",r=typeof t.port=="number"?` port ${t.port}`:"";return`running${i}${r}`.trim()}return e.processAlive===!0&&e.healthy===!1?"unhealthy":"stopped"}function he(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(t=>t&&typeof t=="object"&&!Array.isArray(t)&&(t.op==="tree"||t.op==="cycles"||t.op==="imports"))}function be(e){if(!e||typeof e!="object"||Array.isArray(e))return"inspect";const t=Array.isArray(e.requests)?e.requests.filter(i=>i&&typeof i=="object"&&!Array.isArray(i)):[e];return t.every(i=>i.op==="cycles")?"cycles":t.every(i=>i.op==="tree")?"tree":t.every(i=>i.op==="imports")?"imports":"inspect"}Se().catch(e=>{const t=(0,w.errorPayload)(e);u(t),process.exitCode=1});function u(e,t){const i=(0,J.createCliPresentationEnvelope)(e);V?.enabled&&V.complete({output:i.tracePayload,exitCode:e.ok===!1?1:ge(process.exitCode),durationMs:Date.now()-x,...t?{transport:t}:{}});const r=process.env.AIB_CANONICAL_JSON_PATH;r&&(F.default.mkdirSync(Z.default.dirname(r),{recursive:!0}),F.default.writeFileSync(r,`${JSON.stringify(i.tracePayload,null,2)}
3
+ `)),process.stdout.write((0,J.presentCliEnvelope)(i,process.env.AIB_FORCE_JSON==="1"?"json":"agent"))}function ge(e){return typeof e=="number"?e:0}
@@ -1,3 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runConfigCommand=A;const p=require("../shared/agent-text"),f=require("../shared/errors"),g=require("../config/import-rules"),d=require("../config/path-aliases"),$=require("../config/local-config"),m=require("../config/workspace-root"),C=require("./session-workspace"),x=require("./normalize-imports");function A(e,n=[]){const o=b(n,"--session-dir");if(o)return _(e,o);if(n.length>0)throw new f.CliError("CONFIG_USAGE","Usage: aib config [--session-dir .tmp/aib]");const s=(0,m.resolveRequiredWorkspaceRoot)(e),i=(0,d.readConfigPathAliases)(e),t=(0,C.readSessionPathAliasOverrides)(e),r=(0,d.effectivePathAliases)(e,t),l=(0,g.readConfigImportRules)(e),u=(0,x.readWorkspaceNormalizeImportRules)(e),a=(0,$.resolveLocalCliConfig)(e),h={ok:!0,root:s.root,configPath:s.configPath,pathAliases:r,configPathAliases:i,sessionPathAliases:t,importRules:(0,g.importRulesToJson)(l),importNormalize:u.rules.map(S),importNormalizeSources:u.sources,graphExclude:a.config.inspect.graph.exclude,tree:a.config.inspect.tree,graphConfigSources:a.sources};return(0,p.attachAgentText)(h,I({root:s.root,configPath:s.configPath,aliases:r,configAliases:i,sessionAliases:t,importRules:l,importNormalize:u.rules,graphExclude:a.config.inspect.graph.exclude,tree:a.config.inspect.tree}))}function _(e,n){const o=(0,m.updateWorkspaceConfig)(e,{sessionDir:n}),i={ok:!0,config:"aib.json",...(0,m.workspaceConfigSummary)(o),next:"Create sessions without --dir: aib session init --name <name>"};return(0,p.attachAgentText)(i,y(i))}function b(e,n){let o=null;for(let s=0;s<e.length;s+=1){if(e[s]!==n)throw new f.CliError("CONFIG_USAGE","Usage: aib config [--session-dir .tmp/aib]");if(o!==null)throw new f.CliError("CONFIG_USAGE",`${n} can be provided only once.`);const t=e[s+1];if(!t||t.startsWith("--"))throw new f.CliError("MISSING_FLAG_VALUE",`Expected a value after ${n}.`);o=t,s+=1}return o}function y(e){const n=String(e.sessionDir??".tmp/aib"),o=typeof e["session.ttlCleanMinutes"]=="number"?e["session.ttlCleanMinutes"]:60,s=typeof e["runtime.managedIdeTtlMinutes"]=="number"?e["runtime.managedIdeTtlMinutes"]:15;return["aib session defaults configured","","config: aib.json",`workspace.root: ${String(e["workspace.root"]??".")}`,`sessionDir: ${n}`,`new sessions: ${n.replace(/[\\/]+$/,"")}/<name>/**`,`session cleanup: after ${o} minutes of inactivity`,`runtime cleanup: after ${s} minutes of inactivity`,"","Create sessions without --dir:","aib session init --name <name>"].join(`
2
- `)}function S(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 I(e){const n=[{name:"pathAliases",lines:P(e.aliases,e.configAliases,e.sessionAliases)},{name:"importRules",lines:N(e.importRules)},{name:"importNormalize",lines:w(e.importNormalize)},{name:"inspect.graph.exclude",lines:c(e.graphExclude)},{name:"inspect.tree.onlyDirs.include",lines:c(e.tree.onlyDirs.include)},{name:"inspect.tree.onlyDirs.exclude",lines:c(e.tree.onlyDirs.exclude)},{name:"inspect.tree.files.include",lines:c(e.tree.files.include)},{name:"inspect.tree.files.exclude",lines:c(e.tree.files.exclude)}],o=[`config: ${e.configPath}`,`root: ${e.root}`],s=[];for(const i of n){if(i.lines.length===0){s.push(i.name);continue}o.push("",`${i.name}:`,...i.lines)}return s.length>0&&o.push("","not set:",...s.map(i=>` ${i}`)),o.join(`
3
- `)}function P(e,n,o){const s=Object.entries(e).sort(([i],[t])=>i.localeCompare(t));return s.length===0?[]:s.map(([i,t])=>{const r=Object.prototype.hasOwnProperty.call(o,i),l=Object.prototype.hasOwnProperty.call(n,i);return` @${i} -> ${t}${r&&l?" (session overrides config)":r?" (session)":""}`})}function N(e){return e.length===0?[]:e.map(n=>{const o=[n.specifier?`specifier=${n.specifier}`:null,n.ending?`ending=${n.ending}`:null,n.builtin?`builtin=${n.builtin}`:null,n.unusedImports?`unusedImports=${n.unusedImports}`:null].filter(s=>s!==null);return` ${n.scope}: ${o.length>0?o.join(" "):"defaults"}`})}function w(e){return e.length===0?[]:e.map(n=>{const o=[n.mode?`to=${n.mode}`:null,n.preferAlias?`preferAlias=${n.preferAlias}`:null,n.exclude.length>0?`exclude=${n.exclude.join(" ")}`:null].filter(s=>s!==null);return` ${n.scope??"*"}: ${o.length>0?o.join(" "):"defaults"}`})}function c(e){return e.map(n=>` ${n}`)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runConfigCommand=A,exports.readConfigTextInput=c;const p=require("../shared/agent-text"),l=require("../shared/errors"),m=require("../config/import-rules"),d=require("../config/path-aliases"),h=require("../config/local-config"),u=require("../config/workspace-root"),C=require("./session-workspace"),x=require("./normalize-imports"),r=require("./config-output");function A(e,o=[]){const t=T(o,"--session-dir");if(t)return _(e,t);const n=y(o);if(!n)throw new l.CliError("CONFIG_USAGE","Usage: aib config [all|aliases|rules|session] [--session-dir .tmp/aib]");const s=c(e),i={ok:!0,root:s.root,configPath:s.configPath,view:n,pathAliases:s.aliases,configPathAliases:s.configAliases,sessionPathAliases:s.sessionAliases,importRules:(0,m.importRulesToJson)(s.importRules),importNormalize:s.importNormalize.map(D),graphExclude:[...s.graphExclude],tree:{onlyDirs:{exclude:[...s.tree.onlyDirs.exclude]},files:{exclude:[...s.tree.files.exclude]}},sync:{tsconfig:{exclude:[...s.sync.tsconfig.exclude]}},session:(0,r.configSessionPayload)(s)};return(0,p.attachAgentText)(i,M(s,n))}function _(e,o){const t=c(e),n=(0,u.updateWorkspaceConfig)(e,{sessionDir:o}),s=c(e),i=(0,u.workspaceConfigSummary)(n),a=t.sessionDir!==s.sessionDir,f={ok:!0,config:"aib.json",status:a?"updated":"unchanged",root:s.root,configPath:s.configPath,...i};return(0,p.attachAgentText)(f,(0,r.formatSessionDirMutationText)(s,a))}function y(e){if(e.length===0)return"default";if(e.length!==1)return null;const o=e[0];return o==="all"||o==="aliases"||o==="rules"||o==="session"?o:null}function T(e,o){if(!e.includes(o))return null;let t=null;for(let n=0;n<e.length;n+=1){if(e[n]!==o)throw new l.CliError("CONFIG_USAGE","Usage: aib config [--session-dir .tmp/aib]");if(t!==null)throw new l.CliError("CONFIG_USAGE",`${o} can be provided only once.`);const i=e[n+1];if(!i||i.startsWith("--"))throw new l.CliError("MISSING_FLAG_VALUE",`Expected a value after ${o}.`);t=i,n+=1}return t}function D(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 o=(0,u.resolveRequiredWorkspaceRoot)(e),t=(0,u.workspaceConfigSummary)(o.config),n=(0,d.readConfigPathAliases)(e),s=(0,C.readSessionPathAliasOverrides)(e),i=(0,d.effectivePathAliases)(e,s),a=(0,m.readConfigImportRules)(e),f=(0,x.readWorkspaceNormalizeImportRules)(e),g=(0,h.resolveLocalCliConfig)(e);return{root:o.root,configPath:o.configPath,workspaceRoot:String(t["workspace.root"]??"."),sessionDir:typeof t.sessionDir=="string"?t.sessionDir:null,aliases:i,configAliases:n,sessionAliases:s,importRules:a,importNormalize:f.rules,graphExclude:g.config.inspect.graph.exclude,tree:g.config.inspect.tree,sync:g.config.sync,sessionAutoClean:t["session.autoClean"]!==!1,sessionTtlCleanMinutes:typeof t["session.ttlCleanMinutes"]=="number"?t["session.ttlCleanMinutes"]:60,sessionAutoDelete:t["session.autoDelete"]!==!1,sessionTtlDeleteMinutes:typeof t["session.ttlDeleteMinutes"]=="number"?t["session.ttlDeleteMinutes"]:60,runtimeAutoStopManagedIde:t["runtime.autoStopManagedIde"]!==!1,runtimeManagedIdeTtlMinutes:typeof t["runtime.managedIdeTtlMinutes"]=="number"?t["runtime.managedIdeTtlMinutes"]:15}}function M(e,o){switch(o){case"all":return(0,r.formatConfigAllText)(e);case"aliases":return(0,r.formatConfigAliasesText)(e);case"rules":return(0,r.formatConfigRulesText)(e);case"session":return(0,r.formatConfigSessionText)(e);case"default":return(0,r.formatConfigDefaultText)(e)}}
@@ -0,0 +1,8 @@
1
+ "use strict";var S=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]})),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(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"&&S(n,t,o[s]);return A(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.CONFIG_SECTION_NAMES=void 0,exports.formatConfigDefaultText=_,exports.formatConfigAllText=T,exports.formatConfigAliasesText=M,exports.formatConfigRulesText=$,exports.formatConfigSessionText=D,exports.formatInitText=I,exports.formatSessionDirMutationText=N,exports.configSessionPayload=b;const i=O(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 _(e){return[...a(e),...c(e,exports.CONFIG_SECTION_NAMES)].join(`
2
+ `)}function T(e){return[...a(e),...l(e),...c(e,exports.CONFIG_SECTION_NAMES)].join(`
3
+ `)}function M(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 $(e){const t=exports.CONFIG_SECTION_NAMES.filter(n=>n!=="pathAliases");return x(c(e,t)).join(`
5
+ `)}function D(e){return[...a(e),...l(e)].join(`
6
+ `)}function I(e,t){return[t==="created"?"aib workspace initialized":t==="unchanged"?"aib config unchanged":"aib config updated","",...a(e),...l(e),...c(e,exports.CONFIG_SECTION_NAMES)].join(`
7
+ `)}function N(e,t){return[t?"aib config updated":"aib config unchanged","",...a(e),...l(e),"","other config fields preserved"].join(`
8
+ `)}function b(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: ${C(e.root,e.configPath)}`,`sessionDir: ${w(e)}`]}function l(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 c(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 x(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 j(e.importRules);case"importNormalize":return y(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),p=Object.prototype.hasOwnProperty.call(t,s);return` @${s} -> ${r}${d&&p?" (session overrides config)":d?" (session)":""}`})}function j(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 y(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 C(e,t){const n=i.resolve(e),o=i.resolve(t);if(E(n,o))return"<root>";const s=i.relative(n,o);return s&&!s.startsWith("..")&&!i.isAbsolute(s)?`<root>/${P(s)}`:o}function w(e){if(!e.sessionDir)return"not set";const t=i.isAbsolute(e.sessionDir)?e.sessionDir:i.resolve(e.root,e.sessionDir);return C(e.root,t)}function u(e,t){return e?`after ${t} minutes of inactivity`:"disabled"}function E(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function P(e){return e.replace(/\\/g,"/")}
@@ -1,3 +1,7 @@
1
- "use strict";var m=exports&&exports.__createBinding||(Object.create?(function(t,e,n,i){i===void 0&&(i=n);var s=Object.getOwnPropertyDescriptor(e,n);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,i,s)}):(function(t,e,n,i){i===void 0&&(i=n),t[i]=e[n]})),g=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),u=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var i=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[i.length]=s);return i},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var i=t(e),s=0;s<i.length;s++)i[s]!=="default"&&m(n,e,i[s]);return g(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runHelpCommand=v,exports.resolveHelpRoot=l;const r=u(require("node:fs")),c=u(require("node:path")),a=require("../content/content-bundle"),p=require("../shared/agent-text"),y=require("../shared/errors"),_=new Map([["inspect file","inspect.file"],["inspect imports","inspect.imports"],["inspect exports","inspect.exports"],["inspect members","inspect.members"],["inspect code","inspect.code"],["inspect deps","inspect.deps"],["inspect dependencies","inspect.deps"],["inspect usages","inspect.usages"],["inspect usage","inspect.usages"],["inspect graph","inspect.graph"],["inspect tree","inspect.tree"],["inspect duplicates","inspect.duplicates"],["inspect duplicate","inspect.duplicates"],["refactor batch","refactor.batch"],["module plan","modulePlan"],["moduleplan","modulePlan"]]),d=["help-format","basics","dsl","patterns","session","prefs","selectors","inspect","inspect file","inspect imports","inspect exports","inspect members","inspect code","inspect deps","inspect usages","inspect graph","inspect tree","inspect duplicates","mutation","imports normalize","rename","move","modulePlan","refactor batch","view","qr"];function v(t){if(O(t))return C();const e=j(t);if(!e)return H();const n=l(),i=c.join(n.dir,e.file);if(!r.existsSync(i))throw new y.CliError("HELP_TOPIC_NOT_FOUND",`Help topic not found: ${e.id}`,{topic:e.id,helpRoot:n.dir,available:d});const s=r.readFileSync(i,"utf8").trim();return(0,p.attachAgentText)({operation:"help",topic:e.id,source:n.source},s)}function O(t){const e=t.filter(n=>n!=="help");return e.length===1&&e[0]==="status"}function H(){const t=["Start here if this is your first AIB pass:","aib help bootstrap","","Help conventions:","aib help help-format","","Recommended after context compaction:","aib help basics","aib help patterns","","Use focused help when you only need one area:","aib help session","aib help prefs","aib help selectors","aib help dsl","aib help inspect","aib help mutation","","Feature help:","aib help inspect file","aib help inspect imports","aib help inspect exports","aib help inspect members","aib help inspect code","aib help inspect deps","aib help inspect usages","aib help inspect graph","aib help inspect tree","aib help inspect duplicates","aib help imports normalize","aib help rename","aib help move","aib help modulePlan","aib help refactor batch","aib help view","aib help qr"].join(`
2
- `);return(0,p.attachAgentText)({operation:"help",topic:"index",available:d},t)}function j(t){const e=t.filter(s=>s!=="help");if(e.length===0)return null;if(e.includes("--full"))return{id:"full",file:"full.md"};const n=e.filter(s=>!s.startsWith("--")).join(" ").trim();if(!n)return null;if(n==="bootstrap")return{id:"bootstrap",file:"bootstrap.md"};const i=_.get(n.toLowerCase())??n.replace(/\s+/g,".");return{id:i,file:c.join("topics",`${i}.md`)}}function C(){const t=l(),e=S(t.dir),n=(0,a.collectContentCandidates)(),i=e&&f(e.topics)?Object.keys(e.topics).length:$(t.dir),s=typeof e?.contentHash=="string"?e.contentHash:void 0,h=["aib help status","",`source: ${t.source}`,`path: ${t.dir}`,`assets: ${(0,a.directoryHasHelp)(t.dir)?"ok":"missing"}`,`metadata: ${e?"ok":"missing help-meta.json"}`,...typeof e?.helpVersion=="string"?[`version: ${e.helpVersion}`]:[],...typeof e?.generatedAt=="string"?[`generatedAt: ${e.generatedAt}`]:[],...typeof e?.sourceCommit=="string"?[`sourceCommit: ${e.sourceCommit}`]:[],...s?[`contentHash: ${P(s)}`]:[],`topics: ${i}`,"","checked:",...n.map(o=>{const b=o.valid?"ok":`skip (${o.reason??"invalid"})`;return`${o.source}: ${b} ${o.dir}`})].join(`
3
- `);return(0,p.attachAgentText)({operation:"help.status",source:t.source,path:t.dir,assetsOk:(0,a.directoryHasHelp)(t.dir),metadataOk:e!==null,topicCount:i,meta:e??null,candidates:n},h)}function l(){return(0,a.resolveContentRoot)()}function S(t){const e=c.join(t,"help-meta.json");if(!r.existsSync(e))return null;try{const n=JSON.parse(r.readFileSync(e,"utf8"));return f(n)?n:null}catch{return null}}function $(t){const e=c.join(t,"topics");return r.existsSync(e)?r.readdirSync(e).filter(n=>n.endsWith(".md")).length:0}function P(t){return t.replace(/^sha256:/,"sha256:").slice(0,19)}function f(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}
1
+ "use strict";var w=exports&&exports.__createBinding||(Object.create?(function(e,t,n,i){i===void 0&&(i=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,i,s)}):(function(e,t,n,i){i===void 0&&(i=n),e[i]=t[n]})),v=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(n){var i=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[i.length]=s);return i},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var i=e(t),s=0;s<i.length;s++)i[s]!=="default"&&w(n,t,i[s]);return v(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runHelpCommand=_,exports.resolveHelpRoot=d;const c=m(require("node:fs")),o=m(require("node:path")),p=require("../content/content-bundle"),u=require("../shared/agent-text"),j=require("../shared/errors"),h=new Map([["inspect file","inspect.file"],["inspect imports","inspect.imports"],["inspect exports","inspect.exports"],["inspect members","inspect.members"],["inspect code","inspect.code"],["inspect deps","inspect.deps"],["inspect dependencies","inspect.deps"],["inspect usages","inspect.usages"],["inspect usage","inspect.usages"],["inspect graph","inspect.graph"],["inspect tree","inspect.tree"],["inspect duplicates","inspect.duplicates"],["inspect duplicate","inspect.duplicates"],["inspect cycles","inspect.cycles"],["inspect cycle","inspect.cycles"],["refactor batch","refactor.batch"],["module plan","modulePlan"],["moduleplan","modulePlan"]]),g=["help-protocol","quick-map","help-format","basics","dsl","patterns","config-setup.aliases","config-setup.excludes","config-setup.import-normalize","config-setup.import-rules","config-setup.tsconfigs","session","prefs","selectors","inspect","inspect.file","inspect.imports","inspect.exports","inspect.members","inspect.code","inspect.deps","inspect.usages","inspect.graph","inspect.tree","inspect.duplicates","inspect.cycles","mutation","imports.normalize","rename","move","modulePlan","refactor.batch","view","qr","reveal"];function _(e){if(O(e))return C();const t=$(e);if(t.length===0)return f();const n=d(),i=H(t,n);if(i.targets.length===0&&i.unknown.length===0)return f();const s=i.targets.map(r=>{const a=o.join(n.dir,r.file);return c.existsSync(a)?{target:r,text:c.readFileSync(a,"utf8").trim()}:null}).filter(r=>r!==null);if(s.length===1&&i.unknown.length===0){const r=s[0];return r?(0,u.attachAgentText)({operation:"help",topic:r.target.id,source:n.source},r.text):f()}const l=[...s.map(r=>`// ${r.target.id}
2
+ ${r.text}`),...i.unknown.length>0?[["Unknown help topics:",...i.unknown].join(`
3
+ `)]:[]].join(`
4
+
5
+ `);if(i.unknown.length>0)throw new j.CliError("HELP_TOPIC_NOT_FOUND",l,{topics:s.map(r=>r.target.id),unknown:i.unknown,helpRoot:n.dir,available:g});return(0,u.attachAgentText)({operation:"help",topics:s.map(r=>r.target.id),source:n.source},l)}function O(e){const t=e.filter(n=>n!=="help");return t.length===1&&t[0]==="status"}function f(){const e=["Run as: aib help <topic...>","","Start here if this is your first AIB pass:"," bootstrap","","Always after context compaction:"," aib help help-protocol quick-map"," aib config aliases","","Help conventions:"," help-format","","Refresh workflow model:"," basics patterns","","Core focused topics:"," session"," prefs"," selectors"," dsl"," inspect"," mutation","","Feature topics:"," inspect.file"," inspect.imports"," inspect.exports"," inspect.members"," inspect.code"," inspect.deps"," inspect.usages"," inspect.graph"," inspect.tree"," inspect.duplicates"," inspect.cycles"," rename"," move"," modulePlan"," refactor.batch"," imports.normalize"," view"," qr"," reveal"].join(`
6
+ `);return(0,u.attachAgentText)({operation:"help",topic:"index",available:g},e)}function $(e){return e.filter(t=>t!=="help")}function H(e,t){if(e.length===0)return{targets:[],unknown:[]};if(e.includes("--full"))return{targets:[{id:"full",input:"--full",file:"full.md"}],unknown:[]};const n=S(e,t);if(n)return{targets:[n],unknown:[]};const i=[],s=[];for(const l of e.filter(r=>!r.startsWith("--"))){const r=l.trim(),a=x(r,t);if(a){i.push(a);continue}s.push(r)}return{targets:i,unknown:s}}function S(e,t){const n=e.join(" ").trim();if(!n)return null;if(n==="bootstrap")return{id:"bootstrap",input:n,file:"bootstrap.md"};const i=h.get(n.toLowerCase());if(i)return{id:i,input:n,file:o.join("topics",`${i}.md`)};const s=n.replace(/\s+/g,".");return b(t,s)?{id:s,input:n,file:o.join("topics",`${s}.md`)}:null}function x(e,t){if(!e)return null;if(e==="bootstrap")return{id:"bootstrap",input:e,file:"bootstrap.md"};if(e==="full")return{id:"full",input:e,file:"full.md"};const n=h.get(e.toLowerCase());if(n)return{id:n,input:e,file:o.join("topics",`${n}.md`)};if(b(t,e))return{id:e,input:e,file:o.join("topics",`${e}.md`)};const i=T(t,e);return i?{id:i,input:e,file:o.join("topics",`${i}.md`)}:null}function C(){const e=d(),t=k(e.dir),n=(0,p.collectContentCandidates)(),i=t&&y(t.topics)?Object.keys(t.topics).length:P(e.dir),s=typeof t?.contentHash=="string"?t.contentHash:void 0,l=["aib help status","",`source: ${e.source}`,`path: ${e.dir}`,`assets: ${(0,p.directoryHasHelp)(e.dir)?"ok":"missing"}`,`metadata: ${t?"ok":"missing help-meta.json"}`,...typeof t?.helpVersion=="string"?[`version: ${t.helpVersion}`]:[],...typeof t?.generatedAt=="string"?[`generatedAt: ${t.generatedAt}`]:[],...typeof t?.sourceCommit=="string"?[`sourceCommit: ${t.sourceCommit}`]:[],...s?[`contentHash: ${q(s)}`]:[],`topics: ${i}`,"","checked:",...n.map(r=>{const a=r.valid?"ok":`skip (${r.reason??"invalid"})`;return`${r.source}: ${a} ${r.dir}`})].join(`
7
+ `);return(0,u.attachAgentText)({operation:"help.status",source:e.source,path:e.dir,assetsOk:(0,p.directoryHasHelp)(e.dir),metadataOk:t!==null,topicCount:i,meta:t??null,candidates:n},l)}function d(){return(0,p.resolveContentRoot)()}function k(e){const t=o.join(e,"help-meta.json");if(!c.existsSync(t))return null;try{const n=JSON.parse(c.readFileSync(t,"utf8"));return y(n)?n:null}catch{return null}}function P(e){const t=o.join(e,"topics");return c.existsSync(t)?c.readdirSync(t).filter(n=>n.endsWith(".md")).length:0}function b(e,t){return c.existsSync(o.join(e.dir,"topics",`${t}.md`))}function T(e,t){const n=A(e.dir),i=t.toLowerCase(),s=n.filter(l=>{const r=l.toLowerCase();return r.endsWith(`.${i}`)||r===i});return s.length===1?s[0]??null:null}function A(e){const t=o.join(e,"topics");return c.existsSync(t)?c.readdirSync(t).filter(n=>n.endsWith(".md")).map(n=>n.replace(/\.md$/,"")).sort():[]}function q(e){return e.replace(/^sha256:/,"sha256:").slice(0,19)}function y(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}
@@ -1,3 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runInitWorkspace=c;const o=require("../shared/errors"),r=require("../shared/agent-text"),a=require("../config/workspace-root");function c(e,t){const n=u(t),i=(0,a.initWorkspaceRoot)(e,n);return(0,r.attachAgentText)(i,f(i))}function u(e){const t={};for(let n=0;n<e.length;n+=1){if(e[n]==="--session-dir"){const s=e[n+1];if(!s||s.startsWith("--"))throw new o.CliError("MISSING_FLAG_VALUE","Expected a value after --session-dir.");t.sessionDir=s,n+=1;continue}throw new o.CliError("INIT_USAGE","Usage: aib init [--session-dir .tmp/aib]")}return t}function f(e){const t=typeof e.sessionDir=="string"?e.sessionDir:null,n=typeof e["session.ttlCleanMinutes"]=="number"?e["session.ttlCleanMinutes"]:60,i=typeof e["runtime.managedIdeTtlMinutes"]=="number"?e["runtime.managedIdeTtlMinutes"]:15;return t?["aib session defaults configured","","config: aib.json",`workspace.root: ${String(e["workspace.root"]??".")}`,`sessionDir: ${t}`,`new sessions: ${t.replace(/[\\/]+$/,"")}/<name>/**`,`session cleanup: after ${n} minutes of inactivity`,`runtime cleanup: after ${i} minutes of inactivity`,"","Create sessions without --dir:","aib session init --name <name>"].join(`
2
- `):["aib config created","","created: aib.json",`workspace.root: ${String(e["workspace.root"]??".")}`,"","Set the default session directory:","aib config --session-dir .tmp/aib"].join(`
3
- `)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runInitWorkspace=_;const i=require("../shared/errors"),s=require("../shared/agent-text"),c=require("../config/workspace-root"),u=require("./config-output"),a=require("./config-command");function _(e,r){const t=p(r),n=(0,c.initWorkspaceRoot)(e,t);return(0,s.attachAgentText)(n,(0,u.formatInitText)((0,a.readConfigTextInput)(e),String(n.status??"created")))}function p(e){const r={};for(let t=0;t<e.length;t+=1){if(e[t]==="--session-dir"){const o=e[t+1];if(!o||o.startsWith("--"))throw new i.CliError("MISSING_FLAG_VALUE","Expected a value after --session-dir.");r.sessionDir=o,t+=1;continue}throw new i.CliError("INIT_USAGE","Usage: aib init [--session-dir .tmp/aib]")}return r}
@@ -1,5 +1,5 @@
1
- "use strict";var V=exports&&exports.__createBinding||(Object.create?(function(t,e,n,i){i===void 0&&(i=n);var r=Object.getOwnPropertyDescriptor(e,n);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,i,r)}):(function(t,e,n,i){i===void 0&&(i=n),t[i]=e[n]})),H=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),C=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var i=[];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(i[i.length]=r);return i},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var i=t(e),r=0;r<i.length;r++)i[r]!=="default"&&V(n,e,i[r]);return H(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.isInspectTreeRequest=K,exports.runInspectTree=G,exports.buildInspectTreeResult=J;const I=C(require("node:fs")),d=C(require("node:path")),Q=require("../shared/agent-text"),h=require("../shared/errors"),g=require("../config/path-display"),R=require("../config/local-config"),A=require("./session-workspace"),X=2,w=80,O=["node_modules/**","**/node_modules/**",".git/**","**/.git/**","dist/**","**/dist/**","build/**","**/build/**","out/**","**/out/**",".tmp/**","**/.tmp/**"];function K(t,e){if(t[0]==="tree")return!0;if(!t.includes("--stdin")||!b(e))return!1;const n=v(e);return n.length>0&&n.some(i=>m(i.op)==="tree")}function G(t,e,n){const i=(0,g.buildDisplayPathAliases)(t,(0,A.readEffectiveSessionPathAliases)(t)),r=(0,R.resolveLocalCliConfig)(t),o=Y(t,e,n,i).map(u=>$(t,u,i,r.config.inspect.tree)),l=o.length===1?o[0]:{results:o};return(0,Q.attachAgentText)(l,re(l))}function J(t,e){const n=(0,g.buildDisplayPathAliases)(t,e.aliases??(0,A.readEffectiveSessionPathAliases)(t)),i={scope:e.scope,include:e.include??[],exclude:e.exclude??[],onlyDirs:e.onlyDirs??!1};e.displayScope!==void 0&&(i.displayScope=e.displayScope),e.depth!==void 0&&(i.depth=e.depth),e.minDepth!==void 0&&(i.minDepth=e.minDepth),e.limit!==void 0&&(i.limit=e.limit);const r=x(t,i);return $(t,r,n,(0,R.resolveLocalCliConfig)(t).config.inspect.tree)}function Y(t,e,n,i){if(e[0]==="tree")return[Z(t,e.slice(1),i)];if(!e.includes("--stdin")||!b(n))throw new h.CliError("INSPECT_TREE_SCOPE_REQUIRED","inspect tree expects a file or directory scope.");const r=v(n);if(r.some(s=>m(s.op)!=="tree"))throw new h.CliError("INSPECT_TREE_MIXED_BATCH_UNSUPPORTED","inspect tree --stdin expects only tree requests.");return r.map((s,o)=>k(t,s,o,i))}function Z(t,e,n){const r=e.filter(s=>!s.startsWith("--")&&!ue(e,s))[0];if(!r)throw new h.CliError("INSPECT_TREE_SCOPE_REQUIRED","inspect tree expects a file or directory scope.");return x(t,{scope:r,depth:B(e,"--depth"),minDepth:U(e,"--min-depth")??U(e,"--minDepth"),limit:B(e,"--limit"),include:[..._(e,"--include"),..._(e,"--includes")],exclude:[..._(e,"--exclude"),..._(e,"--excludes")],onlyDirs:e.includes("--only-dirs")||e.includes("--onlyDirs")},n)}function k(t,e,n,i){const r=m(e.scope)??m(e.file)??m(e.dir)??m(e.directory);if(!r)throw new h.CliError("INSPECT_TREE_SCOPE_REQUIRED",`Inspect tree request at index ${n} requires scope.`);return x(t,{scope:r,depth:N(e.depth),minDepth:S(e.minDepth)??S(e.min_depth),limit:N(e.limit),include:E(e.include)??E(e.includes)??[],exclude:E(e.exclude)??E(e.excludes)??[],onlyDirs:W(e.onlyDirs)??W(e.only_dirs)??!1},i)}function x(t,e,n=[]){const i=e.depth??X,r=e.minDepth??0,s=ce(t,e.scope);if(r>i)throw new h.CliError("INSPECT_TREE_DEPTH_INVALID","inspect tree minDepth must be <= depth.");return{scope:s,displayScope:e.displayScope??(0,g.compactDisplayPath)(t,s,n),depth:i,minDepth:r,limit:e.limit??w,include:e.include,exclude:e.exclude,onlyDirs:e.onlyDirs}}function $(t,e,n=[],i={onlyDirs:{exclude:[],include:[]},files:{exclude:[],include:[]}}){const r=le(e.scope);if(!r)throw new h.CliError("INSPECT_TREE_SCOPE_NOT_FOUND","inspect tree scope was not found.",{scope:F(t,e.scope)});const s=r.isDirectory()?e.scope:d.dirname(e.scope),o=e.displayScope??(0,g.compactDisplayPath)(t,e.scope,n),l=e.onlyDirs?i.onlyDirs:i.files,u=q(e,l),c=u.include.map(D),f=[...O,...u.exclude].map(D),a=M(t,s,e.depth,f).filter(p=>e.onlyDirs?p.kind==="dir":p.kind==="file").filter(p=>c.length===0||P(c,p.relative)).filter(p=>p.depth>=e.minDepth),y=a.slice(0,e.limit),z=ee(t,e,s,o,y,u);return{ok:!0,op:"tree",scope:o,depth:e.depth,minDepth:e.minDepth,onlyDirs:e.onlyDirs,[e.onlyDirs?"dirs":"files"]:a.length,shown:y.length,...e.include.length>0?{include:e.include}:{},...e.exclude.length>0?{exclude:e.exclude}:{},...a.length>y.length?{hidden:a.length-y.length}:{},lines:z}}function q(t,e){return{include:t.include.length>0?t.include:e.include,exclude:oe([...e.exclude,...t.exclude])}}function M(t,e,n,i){const r=[],s=(o,l)=>{if(l>n)return;const u=I.readdirSync(o,{withFileTypes:!0}).filter(c=>!c.name.startsWith(".")||c.name===".github").sort((c,f)=>Number(f.isDirectory())-Number(c.isDirectory())||c.name.localeCompare(f.name));for(const c of u){const f=d.join(o,c.name),T=F(t,f),a=c.isDirectory()?"dir":"file";P(i,T)||(r.push({absolute:f,relative:T,depth:l,kind:a}),c.isDirectory()&&s(f,l+1))}};return s(e,1),r}function ee(t,e,n,i,r,s){const o=[`tree ${i.replace(/\\/g,"/")}`];if(e.minDepth>0&&o.push(`depth: ${e.minDepth}..${e.depth}`),e.include.length>0&&o.push(`include: ${e.include.join(", ")}`),e.exclude.length>0&&o.push(`exclude: ${e.exclude.join(", ")}`),e.onlyDirs&&o.push("onlyDirs: true"),o.push(""),r.length===0)return o.push("no matching paths"),o;if(te(o,i,n,r),typeof e.limit=="number"&&e.limit>0&&r.length===e.limit){const l=ie(t,e,n,s);l>r.length&&o.push(`+ ${l-r.length} more paths`)}return o}function te(t,e,n,i){const r=ne(n,i);t.push(`${e.replace(/\\/g,"/").replace(/\/?$/,"/")}`),j(t,r," ")}function ne(t,e){const n=new Map;for(const i of e){const r=d.relative(t,i.absolute).replace(/\\/g,"/").split("/").filter(Boolean);let s=n;for(let o=0;o<r.length;o+=1){const l=r[o];if(o===r.length-1)s.get(l)instanceof Map||s.set(l,i.kind);else{let c=s.get(l);c instanceof Map||(c=new Map,s.set(l,c)),s=c}}}return n}function j(t,e,n){for(const[i,r]of Array.from(e.entries()).sort(([s,o],[l,u])=>+(u instanceof Map)-+(o instanceof Map)||s.localeCompare(l)))r instanceof Map?(t.push(`${n}${i}/`),j(t,r,`${n} `)):r==="dir"?t.push(`${n}${i}/`):t.push(`${n}${i}`)}function ie(t,e,n,i){const r=i.include.map(D),s=[...O,...i.exclude].map(D);return M(t,n,e.depth,s).filter(o=>e.onlyDirs?o.kind==="dir":o.kind==="file").filter(o=>r.length===0||P(r,o.relative)).filter(o=>o.depth>=e.minDepth).length}function re(t){if(Array.isArray(t.results)){const e=t.results.filter(b).map(n=>Array.isArray(n.lines)?n.lines.filter(i=>typeof i=="string").join(`
1
+ "use strict";var V=exports&&exports.__createBinding||(Object.create?(function(n,e,t,i){i===void 0&&(i=t);var o=Object.getOwnPropertyDescriptor(e,t);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,i,o)}):(function(n,e,t,i){i===void 0&&(i=t),n[i]=e[t]})),H=exports&&exports.__setModuleDefault||(Object.create?(function(n,e){Object.defineProperty(n,"default",{enumerable:!0,value:e})}):function(n,e){n.default=e}),I=exports&&exports.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(t){var i=[];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(i[i.length]=o);return i},n(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=n(e),o=0;o<i.length;o++)i[o]!=="default"&&V(t,e,i[o]);return H(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.isInspectTreeRequest=G,exports.runInspectTree=J,exports.buildInspectTreeResult=Y;const R=I(require("node:fs")),d=I(require("node:path")),Q=require("../shared/agent-text"),y=require("../shared/errors"),E=require("../config/path-display"),A=require("../config/local-config"),O=require("./session-workspace"),X=2,K=80,$=["node_modules/**","**/node_modules/**",".git/**","**/.git/**","dist/**","**/dist/**","build/**","**/build/**","out/**","**/out/**",".tmp/**","**/.tmp/**"];function G(n,e){if(n[0]==="tree")return!0;if(!n.includes("--stdin")||!x(e))return!1;const t=F(e);return t.length>0&&t.some(i=>m(i.op)==="tree")}function J(n,e,t){const i=(0,E.buildDisplayPathAliases)(n,(0,O.readEffectiveSessionPathAliases)(n)),o=(0,A.resolveLocalCliConfig)(n),r=Z(n,e,t,i).map(u=>M(n,u,i,o.config.inspect.tree)),s=r.length===1?r[0]:{results:r};return(0,Q.attachAgentText)(s,oe(s))}function Y(n,e){const t=(0,E.buildDisplayPathAliases)(n,e.aliases??(0,O.readEffectiveSessionPathAliases)(n)),i={scope:e.scope,only:e.only??[],exclude:e.exclude??[],onlyDirs:e.onlyDirs??!1,noDefaultExclude:!1,noConfigExclude:!1};e.displayScope!==void 0&&(i.displayScope=e.displayScope),e.depth!==void 0&&(i.depth=e.depth),e.minDepth!==void 0&&(i.minDepth=e.minDepth),e.limit!==void 0&&(i.limit=e.limit);const o=b(n,i);return M(n,o,t,(0,A.resolveLocalCliConfig)(n).config.inspect.tree)}function Z(n,e,t,i){if(e[0]==="tree")return[k(n,e.slice(1),i)];if(!e.includes("--stdin")||!x(t))throw new y.CliError("INSPECT_TREE_SCOPE_REQUIRED","inspect tree expects a file or directory scope.");const o=F(t);if(o.some(l=>m(l.op)!=="tree"))throw new y.CliError("INSPECT_TREE_MIXED_BATCH_UNSUPPORTED","inspect tree --stdin expects only tree requests.");return o.map((l,r)=>w(n,l,r,i))}function k(n,e,t){const o=e.filter(l=>!l.startsWith("--")&&!ue(e,l))[0];if(!o)throw new y.CliError("INSPECT_TREE_SCOPE_REQUIRED","inspect tree expects a file or directory scope.");return b(n,{scope:o,depth:U(e,"--depth"),minDepth:W(e,"--min-depth")??W(e,"--minDepth"),limit:U(e,"--limit"),only:C(e,"--only"),exclude:[...C(e,"--exclude"),...C(e,"--excludes")],onlyDirs:e.includes("--only-dirs")||e.includes("--onlyDirs"),noDefaultExclude:e.includes("--no-default-exclude")||e.includes("--noDefaultExclude")||e.includes("--ned"),noConfigExclude:e.includes("--no-config-exclude")||e.includes("--noConfigExclude")||e.includes("--nec")},t)}function w(n,e,t,i){const o=m(e.scope)??m(e.file)??m(e.dir)??m(e.directory);if(!o)throw new y.CliError("INSPECT_TREE_SCOPE_REQUIRED",`Inspect tree request at index ${t} requires scope.`);return b(n,{scope:o,depth:P(e.depth),minDepth:N(e.minDepth)??N(e.min_depth),limit:P(e.limit),only:S(e.only)??[],exclude:S(e.exclude)??S(e.excludes)??[],onlyDirs:a(e.onlyDirs)??a(e.only_dirs)??!1,noDefaultExclude:a(e.noDefaultExclude)??a(e.no_default_exclude)??a(e.ned)??!1,noConfigExclude:a(e.noConfigExclude)??a(e.no_config_exclude)??a(e.nec)??!1},i)}function b(n,e,t=[]){const i=e.depth??X,o=e.minDepth??0,l=ce(n,e.scope);if(o>i)throw new y.CliError("INSPECT_TREE_DEPTH_INVALID","inspect tree minDepth must be <= depth.");return{scope:l,displayScope:e.displayScope??(0,E.compactDisplayPath)(n,l,t),depth:i,minDepth:o,limit:e.limit??K,only:e.only,exclude:e.exclude,onlyDirs:e.onlyDirs,noDefaultExclude:e.noDefaultExclude,noConfigExclude:e.noConfigExclude}}function M(n,e,t=[],i={onlyDirs:{exclude:[]},files:{exclude:[]}}){const o=se(e.scope);if(!o)throw new y.CliError("INSPECT_TREE_SCOPE_NOT_FOUND","inspect tree scope was not found.",{scope:L(n,e.scope)});const l=o.isDirectory()?e.scope:d.dirname(e.scope),r=e.displayScope??(0,E.compactDisplayPath)(n,e.scope,t),s=e.onlyDirs?i.onlyDirs:i.files,u=q(e,s),c=u.only.map(D),f=[...e.noDefaultExclude?[]:$,...u.exclude].map(D),p=j(n,l,e.depth,f).filter(h=>e.onlyDirs?h.kind==="dir":h.kind==="file").filter(h=>c.length===0||T(c,h.relative)).filter(h=>h.depth>=e.minDepth),g=p.slice(0,e.limit),z=ee(n,e,l,r,g,u);return{ok:!0,op:"tree",scope:r,depth:e.depth,minDepth:e.minDepth,onlyDirs:e.onlyDirs,[e.onlyDirs?"dirs":"files"]:p.length,shown:g.length,...e.only.length>0?{only:e.only}:{},...e.exclude.length>0?{exclude:e.exclude}:{},...e.noDefaultExclude?{noDefaultExclude:!0}:{},...e.noConfigExclude?{noConfigExclude:!0}:{},...p.length>g.length?{hidden:p.length-g.length}:{},lines:z}}function q(n,e){return{only:n.only,exclude:re([...n.noConfigExclude?[]:e.exclude,...n.exclude])}}function j(n,e,t,i){const o=[],l=(r,s)=>{if(s>t)return;const u=R.readdirSync(r,{withFileTypes:!0}).sort((c,f)=>Number(f.isDirectory())-Number(c.isDirectory())||c.name.localeCompare(f.name));for(const c of u){const f=d.join(r,c.name),_=L(n,f),p=c.isDirectory()?"dir":"file";T(i,_)||(o.push({absolute:f,relative:_,depth:s,kind:p}),c.isDirectory()&&l(f,s+1))}};return l(e,1),o}function ee(n,e,t,i,o,l){const r=[`tree ${i.replace(/\\/g,"/")}`];if(e.minDepth>0&&r.push(`depth: ${e.minDepth}..${e.depth}`),e.only.length>0&&r.push(`only: ${e.only.join(", ")}`),e.exclude.length>0&&r.push(`exclude: ${e.exclude.join(", ")}`),e.noDefaultExclude&&r.push("noDefaultExclude: true"),e.noConfigExclude&&r.push("noConfigExclude: true"),e.onlyDirs&&r.push("onlyDirs: true"),r.push(""),o.length===0)return r.push("no matching paths"),r;if(ne(r,i,t,o),typeof e.limit=="number"&&e.limit>0&&o.length===e.limit){const s=ie(n,e,t,l);s>o.length&&r.push(`+ ${s-o.length} more paths`)}return r}function ne(n,e,t,i){const o=te(t,i);n.push(`${e.replace(/\\/g,"/").replace(/\/?$/,"/")}`),v(n,o," ")}function te(n,e){const t=new Map;for(const i of e){const o=d.relative(n,i.absolute).replace(/\\/g,"/").split("/").filter(Boolean);let l=t;for(let r=0;r<o.length;r+=1){const s=o[r];if(r===o.length-1)l.get(s)instanceof Map||l.set(s,i.kind);else{let c=l.get(s);c instanceof Map||(c=new Map,l.set(s,c)),l=c}}}return t}function v(n,e,t){for(const[i,o]of Array.from(e.entries()).sort(([l,r],[s,u])=>+(u instanceof Map)-+(r instanceof Map)||l.localeCompare(s)))o instanceof Map?(n.push(`${t}${i}/`),v(n,o,`${t} `)):o==="dir"?n.push(`${t}${i}/`):n.push(`${t}${i}`)}function ie(n,e,t,i){const o=i.only.map(D),l=[...e.noDefaultExclude?[]:$,...i.exclude].map(D);return j(n,t,e.depth,l).filter(r=>e.onlyDirs?r.kind==="dir":r.kind==="file").filter(r=>o.length===0||T(o,r.relative)).filter(r=>r.depth>=e.minDepth).length}function oe(n){if(Array.isArray(n.results)){const e=n.results.filter(x).map(t=>Array.isArray(t.lines)?t.lines.filter(i=>typeof i=="string").join(`
2
2
  `):"").filter(Boolean);return e.length>0?e.join(`
3
3
 
4
- `):null}return Array.isArray(t.lines)?t.lines.filter(e=>typeof e=="string").join(`
5
- `):null}function v(t){return Array.isArray(t.requests)?t.requests.filter(b):[t]}function D(t){const e=t.replace(/\\/g,"/").replace(/^\.?\//,"");let n="";for(let i=0;i<e.length;i+=1){const r=e[i];if(r==="*"){e[i+1]==="*"?(n+=".*",i+=1):n+="[^/]*";continue}n+=se(r)}return new RegExp(`^${n}$`)}function P(t,e){return t.some(n=>n.test(e)||n.test(`${e}/`))}function oe(t){return Array.from(new Set(t))}function se(t){return t.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")}function le(t){try{return I.statSync(t)}catch{return null}}function ce(t,e){return d.normalize(d.isAbsolute(e)?e:d.resolve(t,e))}function F(t,e){const n=d.relative(t,e);return(n&&!n.startsWith("..")&&!d.isAbsolute(n)?n:e).replace(/\\/g,"/")}function L(t,e){const n=t.indexOf(e);if(n<0)return null;const i=t[n+1];return i&&!i.startsWith("--")?i:null}function _(t,e){const n=[];for(let i=0;i<t.length;i+=1){if(t[i]!==e)continue;const r=t[i+1];r&&!r.startsWith("--")&&(n.push(...r.split(",").map(s=>s.trim()).filter(Boolean)),i+=1)}return n}function ue(t,e){const n=t.indexOf(e);return n>0&&t[n-1]?.startsWith("--")===!0}function B(t,e){return N(L(t,e))}function U(t,e){return S(L(t,e))}function N(t){const e=typeof t=="number"?t:typeof t=="string"?Number(t):NaN;return Number.isInteger(e)&&e>0?e:null}function S(t){const e=typeof t=="number"?t:typeof t=="string"?Number(t):NaN;return Number.isInteger(e)&&e>=0?e:null}function m(t){return typeof t=="string"&&t.length>0?t:null}function E(t){return typeof t=="string"&&t.length>0?t.split(",").map(e=>e.trim()).filter(Boolean):Array.isArray(t)?t.filter(e=>typeof e=="string"&&e.length>0):null}function W(t){if(typeof t=="boolean")return t;if(typeof t!="string")return null;const e=t.trim().toLowerCase();return e==="true"?!0:e==="false"?!1:null}function b(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}
4
+ `):null}return Array.isArray(n.lines)?n.lines.filter(e=>typeof e=="string").join(`
5
+ `):null}function F(n){return Array.isArray(n.requests)?n.requests.filter(x):[n]}function D(n){const e=n.replace(/\\/g,"/").replace(/^\.?\//,"");let t="";for(let i=0;i<e.length;i+=1){const o=e[i];if(o==="*"){e[i+1]==="*"?(t+=".*",i+=1):t+="[^/]*";continue}t+=le(o)}return new RegExp(`^${t}$`)}function T(n,e){return n.some(t=>t.test(e)||t.test(`${e}/`))}function re(n){return Array.from(new Set(n))}function le(n){return n.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")}function se(n){try{return R.statSync(n)}catch{return null}}function ce(n,e){return d.normalize(d.isAbsolute(e)?e:d.resolve(n,e))}function L(n,e){const t=d.relative(n,e);return(t&&!t.startsWith("..")&&!d.isAbsolute(t)?t:e).replace(/\\/g,"/")}function B(n,e){const t=n.indexOf(e);if(t<0)return null;const i=n[t+1];return i&&!i.startsWith("--")?i:null}function C(n,e){const t=[];for(let i=0;i<n.length;i+=1){if(n[i]!==e)continue;const o=n[i+1];o&&!o.startsWith("--")&&(t.push(...o.split(",").map(l=>l.trim()).filter(Boolean)),i+=1)}return t}function ue(n,e){const t=n.indexOf(e);return t>0&&n[t-1]?.startsWith("--")===!0}function U(n,e){return P(B(n,e))}function W(n,e){return N(B(n,e))}function P(n){const e=typeof n=="number"?n:typeof n=="string"?Number(n):NaN;return Number.isInteger(e)&&e>0?e:null}function N(n){const e=typeof n=="number"?n:typeof n=="string"?Number(n):NaN;return Number.isInteger(e)&&e>=0?e:null}function m(n){return typeof n=="string"&&n.length>0?n:null}function S(n){return typeof n=="string"&&n.length>0?n.split(",").map(e=>e.trim()).filter(Boolean):Array.isArray(n)?n.filter(e=>typeof e=="string"&&e.length>0):null}function a(n){if(typeof n=="boolean")return n;if(typeof n!="string")return null;const e=n.trim().toLowerCase();return e==="true"?!0:e==="false"?!1:null}function x(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}
@@ -0,0 +1,5 @@
1
+ "use strict";var j=exports&&exports.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var l=Object.getOwnPropertyDescriptor(t,n);(!l||("get"in l?!t.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,l)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),I=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),v=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(r[r.length]=l);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),l=0;l<r.length;l++)r[l]!=="default"&&j(n,t,r[l]);return I(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runRevealCommand=S;const m=v(require("node:fs")),d=v(require("node:path")),E=require("../shared/agent-text"),x=require("../shared/errors"),p=require("../config/tsconfig-discovery"),R=require("../config/workspace-root");function S(e,t){const[n,...r]=t;if(n!=="tsconfigs"&&n!=="tsaliases")throw new x.CliError("REVEAL_USAGE","Usage: aib reveal tsconfigs|tsaliases [+all] [+nec] [+ned] [--limit N]");const l=U(r),s=(0,R.resolveRequiredWorkspaceRoot)(e),i=(0,p.discoverTsconfigFiles)(s.root,{includeConfigExcluded:l.includeConfigExcluded,includeDefaultExcluded:l.includeDefaultExcluded});if(n==="tsconfigs"){const a={ok:!0,topic:n,root:i.root,visible:i.visible.map(h=>(0,p.toRepoRelative)(i.root,h)),configExcluded:i.configExcluded.map(h=>(0,p.toRepoRelative)(i.root,h)),defaultExcludesIgnored:i.defaultExcludesIgnored,configExcludesIgnored:i.configExcludesIgnored,configExcludePatterns:i.configExcludePatterns};return(0,E.attachAgentText)(a,T(i,l))}const o=i.visible.map(a=>C(i.root,a)).filter(a=>a!==null),f=i.configExcluded.map(a=>C(i.root,a)).filter(a=>a!==null),c={ok:!0,topic:n,root:i.root,configsWithPaths:o.length,aliasPatterns:o.reduce((a,h)=>a+h.paths.length,0),inheritedPathConfigs:o.filter(a=>a.pathsMode==="inherited").length,duplicatedInheritedPathConfigs:o.filter(a=>a.pathsMode==="local-duplicates-inherited").length,overriddenInheritedPathConfigs:o.filter(a=>a.pathsMode==="local-overrides-inherited").length,visible:o.map(F),configExcludedWithPaths:f.map(F),defaultExcludesIgnored:i.defaultExcludesIgnored,configExcludesIgnored:i.configExcludesIgnored,configExcludePatterns:i.configExcludePatterns};return(0,E.attachAgentText)(c,y(i,o,f,l))}function U(e){let t=!1,n=!1,r=!1,l=40;for(let s=0;s<e.length;s+=1){const i=e[s];if(i==="+all"||i==="--all"){t=!0;continue}if(i==="+nec"||i==="--no-config-exclude"){n=!0;continue}if(i==="+ned"||i==="--no-default-exclude"){r=!0;continue}if(i==="--limit"||i==="limit"){const f=e[s+1],c=Number(f);if(!Number.isInteger(c)||c<1)throw new x.CliError("INVALID_LIMIT","Expected positive integer after --limit.");l=c,s+=1;continue}const o=i?.match(/^limit=(\d+)$/);if(o){l=Number(o[1]);continue}throw new x.CliError("REVEAL_USAGE",`Unknown reveal option: ${i}`)}return{all:t,includeConfigExcluded:n,includeDefaultExcluded:r,limit:l}}function T(e,t){const n=e.visible.length,r=e.configExcluded.length,s=["tsconfigs",r>0&&!e.configExcludesIgnored?`${n} visible, ${r} excluded`:e.configExcludesIgnored?`${n} visible, config excludes ignored`:`${n} visible`,""];return s.push(...A(e.root,e.visible,t)),r>0&&!e.configExcludesIgnored&&s.push("","excluded:",..._(e.root,e.configExcluded)),e.defaultExcludesIgnored&&s.push("","default excludes ignored"),s.join(`
2
+ `)}function y(e,t,n,r){const l=t.reduce((u,g)=>u+g.paths.length,0),s=t.filter(u=>u.pathsMode==="inherited").length,i=t.filter(u=>u.pathsMode==="local-duplicates-inherited").length,o=t.filter(u=>u.pathsMode==="local-overrides-inherited").length,f=n.length>0&&!e.configExcludesIgnored?`, ${n.length} alias configs excluded`:e.configExcludesIgnored?", config excludes ignored":"",c=["tsaliases",`${t.length} configs with paths, ${l} alias patterns${f}`],a=[s>0?`${s} inherited`:null,i>0?`${i} duplicate inherited`:null,o>0?`${o} override inherited`:null].filter(u=>u!==null);a.length>0&&c.push(a.join(", "));const h=r.all?t:t.slice(0,r.limit);for(const u of h){c.push("",u.relativeFile),u.extendsValue&&c.push(`extends: ${u.extendsValue}`),c.push(`baseUrl: ${u.baseUrl}`,`paths: ${V(u)}`);for(const g of u.paths)c.push(`${g.alias} -> ${g.targets.join(" ")}`)}return!r.all&&t.length>h.length&&c.push("",`+ ${t.length-h.length} more configs with aliases`),n.length>0&&!e.configExcludesIgnored&&c.push("","excluded alias configs:",..._(e.root,n.map(u=>u.file))),e.defaultExcludesIgnored&&c.push("","default excludes ignored"),c.join(`
3
+ `)}function A(e,t,n){if(t.length===0)return["none"];const r=n.all?t:t.slice(0,n.limit),l=w(r.map(i=>(0,p.toRepoRelative)(e,i))),s=$(l);return!n.all&&t.length>r.length&&s.push(`+ ${t.length-r.length} more`),s}function w(e){const t={dirs:new Map,files:[]};for(const n of e){const r=n.split("/").filter(Boolean);let l=t;for(let s=0;s<r.length;s+=1){const i=r[s]??"";if(s===r.length-1){l.files.push(i);continue}let o=l.dirs.get(i);o||(o={dirs:new Map,files:[]},l.dirs.set(i,o)),l=o}}return t}function $(e,t=""){const n=[];for(const r of e.files.sort((l,s)=>l.localeCompare(s)))n.push(`${t}${r}`);for(const[r,l]of Array.from(e.dirs.entries()).sort(([s],[i])=>s.localeCompare(i)))n.push(`${t}${r}/`),n.push(...$(l,`${t} `));return n}function _(e,t){const n=new Map;for(const r of t){const l=(0,p.toRepoRelative)(e,r),[s]=l.split("/"),i=s&&s!==l?`${s}/**`:l;n.set(i,(n.get(i)??0)+1)}return Array.from(n.entries()).sort(([r],[l])=>r.localeCompare(l)).map(([r,l])=>`${r} x${l}`)}function C(e,t){const n=M(t,new Map);if(!n)return null;const r=O(n);if(!r.paths)return null;const l=Object.entries(r.paths).map(([s,i])=>({alias:s,targets:i})).filter(s=>s.targets.length>0).sort((s,i)=>s.alias.localeCompare(i.alias));return l.length===0?null:{file:t,relativeFile:(0,p.toRepoRelative)(e,t),...n.extendsValue?{extendsValue:n.extendsValue}:{},...n.extendsFile?{extendsFile:(0,p.toRepoRelative)(e,n.extendsFile)}:{},baseUrl:D(t,r.baseUrl),pathsMode:r.pathsMode,...r.pathsSourceFile?{pathsSourceFile:(0,p.toRepoRelative)(e,r.pathsSourceFile)}:{},paths:l}}function F(e){return{file:e.relativeFile,...e.extendsValue?{extends:e.extendsValue}:{},...e.extendsFile?{extendsFile:e.extendsFile}:{},baseUrl:e.baseUrl,pathsMode:e.pathsMode,...e.pathsSourceFile?{pathsSourceFile:e.pathsSourceFile}:{},paths:Object.fromEntries(e.paths.map(t=>[t.alias,t.targets]))}}function V(e){switch(e.pathsMode){case"inherited":return`inherited from ${e.pathsSourceFile??"extended config"}`;case"local-duplicates-inherited":return"local, duplicates inherited";case"local-overrides-inherited":return"local, overrides inherited";case"local":return"local"}}function M(e,t){const n=d.resolve(e);if(t.has(n))return t.get(n)??null;const r=J(n),l=b(r.compilerOptions)?r.compilerOptions:{},s=typeof r.extends=="string"&&r.extends.trim().length>0?r.extends.trim():void 0,i=s?N(n,s):null,o=i?M(i,t):null,f=B(l.paths),c={file:n,...s?{extendsValue:s}:{},...i?{extendsFile:i}:{},...typeof l.baseUrl=="string"?{localBaseUrl:l.baseUrl}:{},...f?{localPaths:f}:{},...o?{parent:o}:{}};return t.set(n,c),c}function O(e){const t=e.parent?O(e.parent):null,n=e.localBaseUrl?d.resolve(d.dirname(e.file),e.localBaseUrl):t?.baseUrl??d.dirname(e.file);if(e.localPaths){const r=t?.paths??null,l=r?q(e.localPaths,r)?"local-duplicates-inherited":"local-overrides-inherited":"local";return{baseUrl:n,paths:e.localPaths,pathsMode:l,pathsSourceFile:e.file}}return t?.paths?{baseUrl:n,paths:t.paths,pathsMode:"inherited",...t.pathsSourceFile?{pathsSourceFile:t.pathsSourceFile}:{}}:{baseUrl:n,paths:null,pathsMode:"local"}}function N(e,t){const n=t.startsWith(".")||d.isAbsolute(t)?d.resolve(d.dirname(e),t):d.resolve(d.dirname(e),"node_modules",t);return(d.extname(n)?[n]:[`${n}.json`,d.join(n,"tsconfig.json")]).find(l=>m.existsSync(l)&&m.statSync(l).isFile())??null}function B(e){if(!b(e))return null;const t=Object.entries(e).map(([n,r])=>[n,Array.isArray(r)?r.filter(l=>typeof l=="string"):[]]).filter(([,n])=>n.length>0);return t.length>0?Object.fromEntries(t):null}function q(e,t){return JSON.stringify(P(e))===JSON.stringify(P(t))}function P(e){return Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>[t,[...n]]))}function D(e,t){const n=d.relative(d.dirname(e),t).replace(/\\/g,"/");return n.length===0?".":n}function J(e){try{const t=m.readFileSync(e,"utf8"),n=JSON.parse(L(t).replace(/,\s*([}\]])/g,"$1"));return b(n)?n:{}}catch{return{}}}function L(e){let t="",n=!1,r=!1;for(let l=0;l<e.length;l+=1){const s=e[l]??"",i=e[l+1]??"";if(n){t+=s,r?r=!1:s==="\\"?r=!0:s==='"'&&(n=!1);continue}if(s==='"'){n=!0,t+=s;continue}if(s==="/"&&i==="/"){for(;l<e.length&&e[l]!==`
4
+ `;)l+=1;t+=`
5
+ `;continue}if(s==="/"&&i==="*"){for(l+=2;l<e.length&&!(e[l]==="*"&&e[l+1]==="/");)l+=1;l+=1;continue}t+=s}return t}function b(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}
@@ -1,4 +1,4 @@
1
- "use strict";var De=exports&&exports.__createBinding||(Object.create?(function(e,t,n,s){s===void 0&&(s=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,s,i)}):(function(e,t,n,s){s===void 0&&(s=n),e[s]=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}),ie=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var s=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(s[s.length]=i);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var s=e(t),i=0;i<s.length;i++)s[i]!=="default"&&De(n,t,s[i]);return $e(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.isSessionHandle=M,exports.runWithSessionOverride=Ue,exports.runSessionWorkspaceCommand=Fe,exports.resolveSessionFileArgument=B,exports.saveSessionOutputJson=qe,exports.saveSessionOutputText=et,exports.saveSessionResultJson=tt,exports.saveSessionResultViewJson=nt,exports.readSessionResultViewJson=st,exports.readSessionResultJson=it,exports.captureSessionInputJson=rt,exports.captureSessionInput=ae,exports.sessionWorkspaceExists=ot,exports.useSessionGuidance=ue,exports.readSessionBooleanPref=at,exports.readSessionNumberPref=ut,exports.readSessionStringPref=ct,exports.readEffectiveSessionPathAliases=lt,exports.readSessionPathAliasOverrides=ft,exports.tryResolveCurrentSessionId=Ut;const l=ie(require("node:fs")),c=ie(require("node:path")),xe=require("node:async_hooks"),E=require("../config/env-vars"),N=require("../config/workspace-root"),b=require("../config/path-aliases"),m=require("../shared/agent-text"),u=require("../shared/errors"),je=c.join(".tmp","aib"),U="sessionDir",Ce="session.json",we="active.json",Re="aib:",Le="s_",Pe="last",Te="_last.json",F=new xe.AsyncLocalStorage,ke=["graph","inspect","code","slice","members","exports","deps","usages","duplicates","execution","rename","move","refactor","modulePlan","imports"],We=["inspect","graph","rename","move","refactor","modulePlan","imports","generic"],O={"guidance.nextLimit":{type:"number",default:2,min:0,max:100,hidden:!0},"diagnostics.hintLimit":{type:"number",default:2,min:0,max:100,hidden:!0},"inspect.code.show":{type:"boolean",default:!0,hidden:!0},"inspect.code.maxNonEmptyLines":{type:"number",default:120,min:1,max:1e4},"inspect.code.meta":{type:"boolean",default:!0,hidden:!0},"inspect.members.maxItems":{type:"number",default:20,min:1,max:1e3},"inspect.members.all":{type:"boolean",default:!1,hidden:!0},"inspect.exports.ranges":{type:"boolean",default:!1,hidden:!0},"inspect.exports.resolveStar":{type:"boolean",default:!1,hidden:!0},"inspect.graph.hubs":{type:"boolean",default:!0},"inspect.graph.entrypoints":{type:"boolean",default:!0},"inspect.graph.leaves":{type:"boolean",default:!0},"inspect.graph.edges":{type:"boolean",default:!0},"inspect.graph.symbols":{type:"boolean",default:!1,hidden:!0},"inspect.graph.symbolUsage":{type:"boolean",default:!1},"inspect.usages.detail":{type:"string",default:"locations",values:["summary","locations","code"],hidden:!0},"inspect.usages.maxLocations":{type:"number",default:12,min:1,max:1e4},"inspect.usages.maxCodeBlocks":{type:"number",default:8,min:1,max:1e4},"inspect.usages.excludeTarget":{type:"boolean",default:!1,hidden:!0}};function M(e){return e.startsWith(Re)}function Ue(e,t){return e?F.run(e,t):t()}function Fe(e,t,n){const s=t[0]??"status",i=(0,N.resolveWorkspaceRoot)(e);if(!i){if(s==="status")return(0,m.attachAgentText)({initialized:!1,active:null,source:"none",available:[],next:"Run aib init"},["session not ready","","No aib.json was found.","Run:","aib init"].join(`
1
+ "use strict";var De=exports&&exports.__createBinding||(Object.create?(function(e,t,n,s){s===void 0&&(s=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,s,i)}):(function(e,t,n,s){s===void 0&&(s=n),e[s]=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}),ie=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var s=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(s[s.length]=i);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var s=e(t),i=0;i<s.length;i++)s[i]!=="default"&&De(n,t,s[i]);return $e(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.isSessionHandle=M,exports.runWithSessionOverride=Ue,exports.runSessionWorkspaceCommand=Fe,exports.resolveSessionFileArgument=B,exports.saveSessionOutputJson=qe,exports.saveSessionOutputText=et,exports.saveSessionResultJson=tt,exports.saveSessionResultViewJson=nt,exports.readSessionResultViewJson=st,exports.readSessionResultJson=it,exports.captureSessionInputJson=rt,exports.captureSessionInput=ae,exports.sessionWorkspaceExists=ot,exports.useSessionGuidance=ue,exports.readSessionBooleanPref=at,exports.readSessionNumberPref=ut,exports.readSessionStringPref=ct,exports.readEffectiveSessionPathAliases=lt,exports.readSessionPathAliasOverrides=ft,exports.tryResolveCurrentSessionId=Ut;const l=ie(require("node:fs")),c=ie(require("node:path")),xe=require("node:async_hooks"),E=require("../config/env-vars"),N=require("../config/workspace-root"),b=require("../config/path-aliases"),m=require("../shared/agent-text"),u=require("../shared/errors"),je=c.join(".tmp","aib"),U="sessionDir",Ce="session.json",we="active.json",Re="aib:",Le="s_",Pe="last",Te="_last.json",F=new xe.AsyncLocalStorage,ke=["graph","inspect","code","slice","members","exports","deps","usages","duplicates","execution","rename","move","refactor","modulePlan","imports"],We=["inspect","graph","rename","move","refactor","modulePlan","imports","generic"],O={"guidance.nextLimit":{type:"number",default:2,min:0,max:100,hidden:!0},"diagnostics.hintLimit":{type:"number",default:2,min:0,max:100,hidden:!0},"inspect.code.show":{type:"boolean",default:!0,hidden:!0},"inspect.code.maxNonEmptyLines":{type:"number",default:120,min:1,max:1e4},"inspect.code.meta":{type:"boolean",default:!0,hidden:!0},"inspect.members.maxItems":{type:"number",default:20,min:1,max:1e3},"inspect.members.all":{type:"boolean",default:!1,hidden:!0},"inspect.exports.ranges":{type:"boolean",default:!1,hidden:!0},"inspect.exports.resolveStar":{type:"boolean",default:!1,hidden:!0},"inspect.graph.hubs":{type:"boolean",default:!0},"inspect.graph.entrypoints":{type:"boolean",default:!0},"inspect.graph.leaves":{type:"boolean",default:!0},"inspect.graph.edges":{type:"boolean",default:!0},"inspect.graph.symbols":{type:"boolean",default:!1,hidden:!0},"inspect.graph.symbolUsage":{type:"boolean",default:!1},"inspect.usages.detail":{type:"string",default:"locations",values:["summary","locations","code"],hidden:!0},"inspect.usages.maxLocations":{type:"number",default:12,min:1,max:1e4},"inspect.usages.maxCodeBlocks":{type:"number",default:8,min:1,max:1e4},"inspect.usages.excludeTarget":{type:"boolean",default:!1,hidden:!0}};function M(e){return e.startsWith(Re)}function Ue(e,t){return e?F.run(e,t):t()}function Fe(e,t,n){const s=t[0]??"status",i=(0,N.resolveWorkspaceRoot)(e);if(!i){if(s==="status")return(0,m.attachAgentText)({initialized:!1,active:null,source:"none",available:[],next:"Run aib help first-setup"},["session not ready","","No aib.json was found.","","If you are a user:","ask your agent to set up AIB for this repo:","aib help first-setup","","If you are an agent:","run:","aib help first-setup","","Then follow the setup from the intended repository root."].join(`
2
2
  `));(0,N.resolveRequiredWorkspaceRoot)(e)}const r=i?.root??e;if(Rt(r),s==="init")return dt(r,t.slice(1));if(s==="status")return Dt(r);if(s==="list")return St(r);if(s==="use")return ht(r,t.slice(1));if(s==="where")return mt(r,t.slice(1));if(s==="read")return It(r,t.slice(1),n);if(s==="write")return Je(r,t.slice(1),n);if(s==="prefs")return Be(r,t.slice(1),n);if(s==="aliases")return Me(r,t.slice(1),n);if(s==="clear")return Ct(r);throw new u.CliError("UNKNOWN_SESSION_WORKSPACE_COMMAND",`Unknown session workspace command: ${s}`)}function Me(e,t,n){const s=t[0]??"get";if(s==="get"){const i=A(e),r=(0,b.readConfigPathAliases)(e),o=(0,b.normalizePathAliasMap)(i.pathAliases??{},"session path aliases"),a={aliases:(0,b.effectivePathAliases)(e,o),config:r,session:o};return(0,m.attachAgentText)(a,V(a))}if(s==="set"){const i=A(e),r=t.includes("--stdin")?Ve(n):ze(t.slice(1)),o=(0,b.normalizePathAliasMap)(i.pathAliases??{},"session path aliases"),a={};for(const[d,p]of Object.entries(r)){const S=(0,b.normalizePathAliasName)(d,"session path aliases");if(typeof p!="string"||p.trim()==="")throw new u.CliError("INVALID_PATH_ALIAS_TARGET",`session path alias ${d} must be a non-empty path string.`);o[S]=p.trim().replace(/\\/g,"/"),a[S]=o[S]}i.pathAliases=o,g(e,i);const f={updated:a,aliases:(0,b.effectivePathAliases)(e,o)};return(0,m.attachAgentText)(f,V(f))}if(s==="clear"){const i=A(e),r=t.slice(1).filter(d=>!d.startsWith("--")),o=(0,b.normalizePathAliasMap)(i.pathAliases??{},"session path aliases"),a=[];if(r.length===0)a.push(...Object.keys(o).sort()),delete i.pathAliases;else{for(const d of r){const p=(0,b.normalizePathAliasName)(d,"session path aliases");Object.prototype.hasOwnProperty.call(o,p)&&(a.push(p),delete o[p])}Object.keys(o).length>0?i.pathAliases=o:delete i.pathAliases}g(e,i);const f={cleared:a,aliases:(0,b.effectivePathAliases)(e,i.pathAliases??{})};return(0,m.attachAgentText)(f,V(f))}throw new u.CliError("UNKNOWN_SESSION_ALIASES_COMMAND",`Unknown session aliases command: ${s}`,{expected:"aib session aliases get | set | clear"})}function Ve(e){if(!y(e))throw new u.CliError("INVALID_SESSION_ALIASES_STDIN","session aliases set --stdin expects a JSON object.");const t=y(e.aliases)?e.aliases:e,n={};for(const[s,i]of Object.entries(t))typeof i=="string"&&(n[s]=i);return n}function ze(e){if(e.length===0||e.length%2!==0)throw new u.CliError("SESSION_ALIASES_SET_USAGE","Usage: aib session aliases set <name> <path> [<name> <path>...] or session aliases set --stdin");const t={};for(let n=0;n<e.length;n+=2)t[e[n]??""]=e[n+1]??"";return t}function V(e){if(y(e.updated))return re("aliases.updated",e.updated);if(Array.isArray(e.cleared)){const t=e.cleared.filter(n=>typeof n=="string");return t.length>0?["aliases.cleared",...t].join(`
3
3
  `):"aliases.cleared none"}if(y(e.aliases)){const t=re("aliases",e.aliases).split(`
4
4
  `);return t.length===1&&t.push("none"),t.join(`
@@ -8,7 +8,7 @@
8
8
  `);return t.length===1&&t.push("no overrides"),typeof e.defaults=="string"&&t.push(e.defaults),t.join(`
9
9
  `)}return y(e.prefs)?J("prefs",e.prefs):null}function J(e,t){const n=[e];for(const[s,i]of Object.entries(t).sort(([r],[o])=>r.localeCompare(o)))n.push(`${s}=${String(i)}`);return n.join(`
10
10
  `)}function He(e){if(!y(e))throw new u.CliError("INVALID_SESSION_PREFS_STDIN","session prefs set --stdin expects a JSON object.");const t=y(e.prefs)?e.prefs:e,n={};for(const[s,i]of Object.entries(t))n[s]=i;return n}function Ge(e){if(e.length===0||e.length%2!==0)throw new u.CliError("SESSION_PREFS_SET_USAGE","Usage: aib session prefs set <key> <value> [<key> <value>...] or session prefs set --stdin");const t={};for(let n=0;n<e.length;n+=2){const s=e[n]??"",i=e[n+1]??"";t[s]=i}return t}function oe(e){if(Object.prototype.hasOwnProperty.call(O,e))return e;throw new u.CliError("UNKNOWN_SESSION_PREF",`Unknown session preference: ${e}`,{available:Object.keys(O)})}function Qe(e,t){const n=O[e];if(n.type==="boolean"){if(typeof t=="boolean")return t;if(typeof t=="string"){const i=t.trim().toLowerCase();if(i==="true")return!0;if(i==="false")return!1}throw new u.CliError("INVALID_SESSION_PREF_VALUE",`${e} expects true or false.`)}if(n.type==="string"){if(typeof t!="string")throw new u.CliError("INVALID_SESSION_PREF_VALUE",`${e} expects one of: ${n.values.join(", ")}.`);const i=t.trim();if(!n.values.includes(i))throw new u.CliError("INVALID_SESSION_PREF_VALUE",`${e} expects one of: ${n.values.join(", ")}.`);return i}const s=typeof t=="number"?t:typeof t=="string"?Number(t):NaN;if(!Number.isInteger(s)||s<n.min||s>n.max)throw new u.CliError("INVALID_SESSION_PREF_VALUE",`${e} expects an integer from ${n.min} to ${n.max}.`);return s}function Ye(e){const t={};for(const n of Object.keys(O)){const s=O[n];"hidden"in s&&s.hidden||(s.type==="boolean"?t[n]=ce(e,n,s.default):s.type==="number"?t[n]=K(e,n,s.default):t[n]=le(e,n,s.default))}return t}function Ze(e){const t={};for(const[n,s]of Object.entries(e))Xe(n)||(t[n]=s);return t}function Xe(e){if(!Object.prototype.hasOwnProperty.call(O,e))return!1;const t=O[e];return"hidden"in t&&t.hidden===!0}function B(e,t){if(!M(t))return t;const n=A(e),s=Oe(t),i=s.scope==="input"?n.inputs:n.outputs,r=s.scope==="input"?s.kind:s.scope,o=i[r],a=s.name==="last"?o?.last:s.name,f=a?o?.items[a]:void 0;if(!f)throw new u.CliError("SESSION_HANDLE_NOT_FOUND",`Session handle not found: ${t}`,{handle:t,sessionDir:h(e,n.rootDir)});return f.file}function qe(e,t,n,s){const i=A(e),r=Ae(i,t,n,".json");l.mkdirSync(c.dirname(r),{recursive:!0}),l.writeFileSync(r,`${JSON.stringify(s,null,2)}
11
- `);const o=C(i,"outputs",t,n,r);return g(e,i),{saved:o.handle,last:`aib:${t}:last`,file:h(e,r)}}function et(e,t,n,s,i=".txt"){const r=A(e),o=Ae(r,t,n,i);l.mkdirSync(c.dirname(o),{recursive:!0}),l.writeFileSync(o,s);const a=C(r,"outputs",t,n,o);return g(e,r),{saved:a.handle,last:`aib:${t}:last`,file:h(e,o)}}function tt(e,t,n,s){const i=v(e);if(!i)return null;const r=I(t),o=I(n),a=c.join(i.rootDir,"outputs","result",r,`${o}.json`);return x(a,s),{saved:`aib:result:${r}:${o}`,file:h(e,a)}}function nt(e,t,n){const s=v(e);if(!s)return null;const i=I(t),r=c.join(s.rootDir,"outputs","result",`${i}.json`);return x(r,n),{saved:`aib:${i}`,file:h(e,r)}}function st(e,t){const n=A(e),s=I(t),i=c.join(n.rootDir,"outputs","result",`${s}.json`);if(!l.existsSync(i))throw new u.CliError("SESSION_RESULT_NOT_FOUND",`Result handle not found: aib:${s}`,{handle:`aib:${s}`,sessionDir:h(e,n.rootDir)});const r=JSON.parse(l.readFileSync(i,"utf8"));if(!r||typeof r!="object"||Array.isArray(r))throw new u.CliError("INVALID_SESSION_RESULT",`Result artifact is not a JSON object: aib:${s}`);return r}function it(e,t,n){const s=A(e),i=I(t),r=I(n),o=c.join(s.rootDir,"outputs","result",i,`${r}.json`);if(!l.existsSync(o))throw new u.CliError("SESSION_RESULT_NOT_FOUND",`Result handle not found: aib:result:${i}:${r}`,{handle:`aib:result:${i}:${r}`,sessionDir:h(e,s.rootDir)});const a=JSON.parse(l.readFileSync(o,"utf8"));if(!a||typeof a!="object"||Array.isArray(a))throw new u.CliError("INVALID_SESSION_RESULT",`Result artifact is not a JSON object: aib:result:${i}:${r}`);return a}function rt(e,t,n,s){return ae(e,t,n,s,{format:"json",text:JSON.stringify(s,null,2)})}function ae(e,t,n,s,i){const r=v(e);if(!r)return null;const o=i??{format:"json",text:JSON.stringify(s,null,2)},a=o.format==="dsl"?Z(r,t,n,".dsl"):Z(r,t,n,".json");o.format==="dsl"?(_e(a,o.text),x(Ft(r,t,n),s)):x(a,s);const f=C(r,"inputs",t,n,a);return Ne(r,t,s,o),g(e,r),{handle:f.handle,file:h(e,a)}}function ot(e){return l.existsSync(L(e))}function ue(e,t,n,s=-1){const i=v(e);if(!i)return n;const r=s>=0?s:K(i,"guidance.nextLimit",2),o=i.guidance??{},a=o[t]??{shown:0,limit:r};if(a.limit=r,a.shown>=a.limit){o[t]=a,i.guidance=o,g(e,i);return}return a.shown+=1,o[t]=a,i.guidance=o,g(e,i),n}function at(e,t,n){const s=v(e),i=O[t],r=typeof n=="boolean"?n:i.type==="boolean"?i.default:!1;return s?ce(s,t,r):r}function ut(e,t,n){const s=v(e),i=O[t],r=typeof n=="number"?n:i.type==="number"?i.default:0;return s?K(s,t,r):r}function ct(e,t,n){const s=v(e),i=O[t],r=typeof n=="string"?n:i.type==="string"?i.default:"";return s?le(s,t,r):r}function lt(e){try{const t=v(e);return(0,b.effectivePathAliases)(e,t?.pathAliases??{})}catch(t){if(t instanceof u.CliError&&t.code==="MULTIPLE_AIB_SESSIONS")return(0,b.effectivePathAliases)(e,{});throw t}}function ft(e){try{const t=v(e);return(0,b.normalizePathAliasMap)(t?.pathAliases??{},"session path aliases")}catch(t){if(t instanceof u.CliError&&t.code==="MULTIPLE_AIB_SESSIONS")return{};throw t}}function ce(e,t,n){const s=e.prefs?.[t];return typeof s=="boolean"?s:n}function K(e,t,n){const s=e.prefs?.[t];return typeof s=="number"&&Number.isFinite(s)?s:n}function le(e,t,n){const s=e.prefs?.[t];return typeof s=="string"?s:n}function dt(e,t){const n=w(t,"--dir"),s=Q(e,n,!0),i=w(t,"--name"),r=$(i??Y()??Jt()),o=c.join(s.rootDir,r),a=new Date().toISOString(),d=R(e,r)??{version:1,sessionId:r,cwd:c.resolve(e),rootDir:o,createdAt:a,updatedAt:a,outputs:{},inputs:{},guidance:{}};d.sessionId=r,d.rootDir=o,d.updatedAt=a,me(d),g(e,d),be(e,d,!0);const p=D(e),S=p?Object.keys(p.sessions).length:1,_={session:r,dir:h(e,d.rootDir),sessionDir:h(e,s.rootDir),sessionDirSource:s.source,sessionCount:S,bind:`${E.CLI_ENV.session}=${r}`,next:S===1?"Run AIB commands without -s for now. AIB will tell you if multiple sessions exist.":`Use aib -s ${r} <command> or set ${E.CLI_ENV.session}=${r}.`};return s.ignoredRequestedDir&&(_.note=`${U} from aib.json is in effect; --dir was ignored.`,_.requestedDir=s.ignoredRequestedDir),(0,m.attachAgentText)(_,pt(_))}function pt(e){const t=String(e.session??""),n=String(e.dir??""),s=typeof e.sessionCount=="number"?e.sessionCount:1,i=[`session ready: ${t}`,""];typeof e.note=="string"&&e.note&&(i.push("aib.json sessionDir is in effect; --dir was ignored."),i.push("Next time do not use --dir when creating a session."),i.push(""));const r=n.replace(/[\\/]+$/,"");return i.push(`outputs: ${r}/outputs`),i.push(`inputs: ${r}/inputs`),i.push(""),s===1?(i.push("Only one AIB session exists in this repo."),i.push("You can run AIB commands without -s for now."),i.push("AIB will tell you if multiple sessions exist and you need to choose one.")):(i.push("Multiple AIB sessions exist in this repo."),i.push("Use this session explicitly:"),i.push(`aib -s ${t} <command>`),i.push(""),i.push("Or bind it in this shell:"),i.push(`${E.CLI_ENV.session}=${t}`)),i.join(`
11
+ `);const o=C(i,"outputs",t,n,r);return g(e,i),{saved:o.handle,last:`aib:${t}:last`,file:h(e,r)}}function et(e,t,n,s,i=".txt"){const r=A(e),o=Ae(r,t,n,i);l.mkdirSync(c.dirname(o),{recursive:!0}),l.writeFileSync(o,s);const a=C(r,"outputs",t,n,o);return g(e,r),{saved:a.handle,last:`aib:${t}:last`,file:h(e,o)}}function tt(e,t,n,s){const i=v(e);if(!i)return null;const r=I(t),o=I(n),a=c.join(i.rootDir,"outputs","result",r,`${o}.json`);return x(a,s),{saved:`aib:result:${r}:${o}`,file:h(e,a)}}function nt(e,t,n){const s=v(e);if(!s)return null;const i=I(t),r=c.join(s.rootDir,"outputs","result",`${i}.json`);return x(r,n),{saved:`aib:${i}`,file:h(e,r)}}function st(e,t){const n=A(e),s=I(t),i=c.join(n.rootDir,"outputs","result",`${s}.json`);if(!l.existsSync(i))throw new u.CliError("SESSION_RESULT_NOT_FOUND",`Result handle not found: aib:${s}`,{handle:`aib:${s}`,sessionDir:h(e,n.rootDir)});const r=JSON.parse(l.readFileSync(i,"utf8"));if(!r||typeof r!="object"||Array.isArray(r))throw new u.CliError("INVALID_SESSION_RESULT",`Result artifact is not a JSON object: aib:${s}`);return r}function it(e,t,n){const s=A(e),i=I(t),r=I(n),o=c.join(s.rootDir,"outputs","result",i,`${r}.json`);if(!l.existsSync(o))throw new u.CliError("SESSION_RESULT_NOT_FOUND",`Result handle not found: aib:result:${i}:${r}`,{handle:`aib:result:${i}:${r}`,sessionDir:h(e,s.rootDir)});const a=JSON.parse(l.readFileSync(o,"utf8"));if(!a||typeof a!="object"||Array.isArray(a))throw new u.CliError("INVALID_SESSION_RESULT",`Result artifact is not a JSON object: aib:result:${i}:${r}`);return a}function rt(e,t,n,s){return ae(e,t,n,s,{format:"json",text:JSON.stringify(s,null,2)})}function ae(e,t,n,s,i){const r=v(e);if(!r)return null;const o=i??{format:"json",text:JSON.stringify(s,null,2)},a=o.format==="dsl"?Z(r,t,n,".dsl"):Z(r,t,n,".json");o.format==="dsl"?(_e(a,o.text),x(Ft(r,t,n),s)):x(a,s);const f=C(r,"inputs",t,n,a);return Ne(r,t,s,o),g(e,r),{handle:f.handle,file:h(e,a)}}function ot(e){return l.existsSync(L(e))}function ue(e,t,n,s=-1){const i=v(e);if(!i)return n;const r=s>=0?s:K(i,"guidance.nextLimit",2),o=i.guidance??{},a=o[t]??{shown:0,limit:r};if(a.limit=r,a.shown>=a.limit){o[t]=a,i.guidance=o,g(e,i);return}return a.shown+=1,o[t]=a,i.guidance=o,g(e,i),n}function at(e,t,n){const s=v(e),i=O[t],r=typeof n=="boolean"?n:i.type==="boolean"?i.default:!1;return s?ce(s,t,r):r}function ut(e,t,n){const s=v(e),i=O[t],r=typeof n=="number"?n:i.type==="number"?i.default:0;return s?K(s,t,r):r}function ct(e,t,n){const s=v(e),i=O[t],r=typeof n=="string"?n:i.type==="string"?i.default:"";return s?le(s,t,r):r}function lt(e){try{const t=v(e);return(0,b.effectivePathAliases)(e,t?.pathAliases??{})}catch(t){if(t instanceof u.CliError&&t.code==="MULTIPLE_AIB_SESSIONS")return(0,b.effectivePathAliases)(e,{});throw t}}function ft(e){try{const t=v(e);return(0,b.normalizePathAliasMap)(t?.pathAliases??{},"session path aliases")}catch(t){if(t instanceof u.CliError&&t.code==="MULTIPLE_AIB_SESSIONS")return{};throw t}}function ce(e,t,n){const s=e.prefs?.[t];return typeof s=="boolean"?s:n}function K(e,t,n){const s=e.prefs?.[t];return typeof s=="number"&&Number.isFinite(s)?s:n}function le(e,t,n){const s=e.prefs?.[t];return typeof s=="string"?s:n}function dt(e,t){const n=w(t,"--dir"),s=Q(e,n,!0),i=w(t,"--name"),r=$(i??Y()??Jt()),o=c.join(s.rootDir,r),a=new Date().toISOString(),d=R(e,r)??{version:1,sessionId:r,cwd:c.resolve(e),rootDir:o,createdAt:a,updatedAt:a,outputs:{},inputs:{},guidance:{}};d.sessionId=r,d.rootDir=o,d.updatedAt=a,me(d),g(e,d),be(e,d,!0);const p=D(e),S=p?Object.keys(p.sessions).length:1,_={session:r,dir:h(e,d.rootDir),sessionDir:h(e,s.rootDir),sessionDirSource:s.source,sessionCount:S,bind:`${E.CLI_ENV.session}=${r}`,next:S===1?"Run AIB commands without -s for now. AIB will tell you if multiple sessions exist.":`Use aib -s ${r} <command> or set ${E.CLI_ENV.session}=${r}.`};return s.ignoredRequestedDir&&(_.note=`${U} from aib.json is in effect; --dir was ignored.`,_.requestedDir=s.ignoredRequestedDir),(0,m.attachAgentText)(_,pt(_))}function pt(e){const t=String(e.session??""),n=typeof e.sessionCount=="number"?e.sessionCount:1,s=[`session ready: ${t}`,""];return typeof e.note=="string"&&e.note&&(s.push("aib.json sessionDir is in effect; --dir was ignored."),s.push("")),n===1?(s.push("Only one AIB session exists in this repo."),s.push("You can run AIB commands without -s for now."),s.push("AIB will tell you if multiple sessions exist and you need to choose one.")):(s.push("Multiple AIB sessions exist in this repo."),s.push("Use this session explicitly:"),s.push(`aib -s ${t} <command>`),s.push(""),s.push("Or bind it in this shell:"),s.push(`${E.CLI_ENV.session}=${t}`)),s.join(`
12
12
  `)}function St(e){const t=D(e),n=k(e);return{active:n.sessionId??t?.activeSessionId??null,source:n.source,sessions:t?Object.values(t.sessions).sort((s,i)=>s.sessionId.localeCompare(i.sessionId)).map(s=>`${s.sessionId} -> ${h(e,s.rootDir)}`):[]}}function ht(e,t){const n=t[0]??"";if(!n)throw new u.CliError("SESSION_USE_ID_REQUIRED","Usage: aib session use <sessionId>");const s=$(n),i=D(e),r=i?.sessions[s];if(!r)throw new u.CliError("SESSION_NOT_FOUND",`Session not found: ${s}`,{available:i?Object.keys(i.sessions).sort():[]});return T(e,{...i??ge(e),activeSessionId:s}),{session:s,dir:h(e,r.rootDir),bind:`${E.CLI_ENV.session}=${s}`,next:`Use aib -s ${s} <command> or set ${E.CLI_ENV.session}=${s}.`}}function mt(e,t){const n=t[0]??"";if(!n)throw new u.CliError("SESSION_WHERE_HANDLE_REQUIRED","Usage: aib session where <handle>");const s=B(e,n),i={handle:n,file:h(e,s)};return(0,m.attachAgentText)(i,[n,i.file].join(`
13
13
  `))}function It(e,t,n){if(t.includes("--stdin")){if(!y(n))throw new u.CliError("INVALID_SESSION_READ_STDIN","session read --stdin expects a JSON object payload.");const r=yt(n);if(r.length===1){const a=H(e,r[0]);return(0,m.attachAgentText)(a,G(a))}const o={reads:r.map(a=>gt(e,a))};return(0,m.attachAgentText)(o,G(o))}const s=t[0]??"";if(!s)throw new u.CliError("SESSION_READ_HANDLE_REQUIRED","Usage: aib session read <handle> [--head <n> | --offset <n> --limit <n>]");const i=H(e,{handle:s,...vt(t.slice(1))});return(0,m.attachAgentText)(i,G(i))}function yt(e){if(Array.isArray(e.reads))return e.reads.map((t,n)=>{if(typeof t=="string"){if(!M(t))throw new u.CliError("INVALID_SESSION_READ_ROW",`session read row at index ${n} must be an aib: handle string or an object.`);return{handle:t}}if(!y(t))throw new u.CliError("INVALID_SESSION_READ_ROW",`session read row at index ${n} must be an aib: handle string or an object.`);return fe(t,n)});if(typeof e.handle=="string"||typeof e.read=="string")return[fe(e,0)];throw new u.CliError("INVALID_SESSION_READ_STDIN","Expected { reads: [{ handle }] } or { handle }.")}function fe(e,t){const n=X(e.handle)??X(e.read);if(!n)throw new u.CliError("SESSION_READ_HANDLE_REQUIRED",`session read row at index ${t} requires handle.`);return{handle:n,...e.rawInput===!0?{rawInput:!0}:{},...pe(e,t)}}function gt(e,t){try{return H(e,t)}catch(n){if(n instanceof u.CliError){const s=y(n.details)?n.details:{};return{read:t.handle,error:n.code,...typeof s.next=="string"?{next:s.next}:{}}}return{read:t.handle,error:"UNEXPECTED_ERROR"}}}function H(e,t){Ot(t);const n=Oe(t.handle),s=B(e,t.handle);if(n.scope==="input"&&!t.rawInput){const r=Nt(n.kind,t.handle);return{read:t.handle,file:h(e,s),next:r?`Edit file, then rerun: ${r}`:"Edit file, then rerun the command with --from <handle>."}}if(n.scope==="graph"||n.scope==="usages"){const r=n.scope==="graph"?`aib inspect graph --from-file ${t.handle} --focus <file>`:`aib inspect usages --from-file ${t.handle} --focus <name>`;throw new u.CliError("SESSION_ARTIFACT_NOT_READABLE",`${n.scope} artifacts are reusable indexes, not agent-readable context.`,{handle:t.handle,kind:n.scope,next:r})}if(n.scope==="duplicates"){const r=l.readFileSync(s,"utf8");return{read:t.handle,content:bt(e,t.handle,s,r,t)}}const i=l.readFileSync(s,"utf8");return{read:t.handle,content:At(s,i,t)}}function bt(e,t,n,s,i){const r=Et(e,t,n,s);return i.head!==void 0||i.offset!==void 0||i.limit!==void 0?Se(r,i):r}function Et(e,t,n,s){let i;try{i=JSON.parse(s)}catch{return de(t,n,s)}if(!y(i))return de(t,n,s);const r=[],o=Array.isArray(i.targetPaths)?i.targetPaths.filter(S=>typeof S=="string"&&S!==""):[],a=o.length===1?h(e,o[0]):o.length>1?`${o.length} scopes`:"";r.push(a?`duplicates ${a}`:"duplicates");const f=typeof i.summary=="string"?i.summary:`${j(i.itemCount)} ${te(j(i.itemCount),"name")}`;r.push(f);const d=Array.isArray(i.items)?i.items.filter(y):[];for(const S of d){const _=typeof S.name=="string"?S.name:"",ve=j(S.declarationCount),ne=j(S.variantCount),se=j(S.exactCopyCount);_&&r.push(`${_} x${ve}, ${ne} ${te(ne,"variant")}${se>0?`, exact x${se}`:""}`)}const p=j(i.hiddenItemCount);return p>0&&r.push(`+ ${p} ${te(p,"name")}`),r.push(`raw: aib session where ${t}`),r.join(`
14
14
  `)}function de(e,t,n){return[`saved artifact ${e}`,`${n.length} bytes`,`raw: ${t}`].join(`
@@ -16,12 +16,12 @@
16
16
  `)}function _t(e){return typeof e=="string"?e:e===void 0?null:JSON.stringify(e,null,2)}function Nt(e,t){return e==="inspect"?`aib inspect --from ${t}`:e==="graph"?`aib inspect graph --from ${t}`:e==="rename"?`aib rename preview --from ${t}`:e==="move"?`aib move toFile preview --from ${t}`:e==="refactor"?`aib refactor batch preview --from ${t}`:e==="modulePlan"?`aib modulePlan preview --from ${t}`:e==="imports"?`aib imports normalize preview --from ${t}`:null}function Ot(e){if(e.head!==void 0&&(e.offset!==void 0||e.limit!==void 0))throw new u.CliError("SESSION_READ_RANGE_CONFLICT","Use either head or offset/limit, not both.")}function vt(e){const t={},n=w(e,"--head"),s=w(e,"--offset"),i=w(e,"--limit");return n!==void 0&&(t.head=n),s!==void 0&&(t.offset=s),i!==void 0&&(t.limit=i),{...e.includes("--raw-input")?{rawInput:!0}:{},...pe(t,0)}}function pe(e,t){const n=q(e.head,`session read row at index ${t} has invalid head.`),s=q(e.offset,`session read row at index ${t} has invalid offset.`),i=zt(e.limit,`session read row at index ${t} has invalid limit.`);return{...n!==void 0?{head:n}:{},...s!==void 0?{offset:s}:{},...i!==void 0?{limit:i}:{}}}function Se(e,t){if(t.head===void 0&&t.offset===void 0&&t.limit===void 0)return e;const n=e.split(/\r?\n/),s=t.head!==void 0?0:t.offset??0,i=t.head!==void 0?t.head:t.limit!==void 0?s+t.limit:void 0;return n.slice(s,i).join(`
17
17
  `)}function Dt(e){const t=D(e),n=k(e),s=t?Object.keys(t.sessions).sort():[];if(n.source==="ambiguous")return(0,m.attachAgentText)({ok:!1,code:"MULTIPLE_AIB_SESSIONS",error:"Multiple AIB sessions exist. Select one explicitly.",available:s,next:`Use aib -s <session> <command> or set ${E.CLI_ENV.session}=<session>.`},jt(s));const i=n.sessionId?R(e,n.sessionId):null;if(!i){const o={initialized:!1,active:n.sessionId??null,source:n.source,available:s,next:n.sessionId?`Run aib session init --name ${n.sessionId}`:"Run aib session init --name <name>"};return(0,m.attachAgentText)(o,$t(o))}g(e,i);const r={initialized:!0,session:i.sessionId??n.sessionId,active:i.sessionId??n.sessionId,source:n.source,available:s,sessionDir:h(e,i.rootDir),aliases:(0,b.effectivePathAliases)(e,i.pathAliases??{}),latest:Mt(i),dirs:Vt(e,i)};return(0,m.attachAgentText)(r,xt(r))}function $t(e){const t=typeof e.active=="string"&&e.active?e.active:null;return t?["session not ready","",`Session ${t} was not found.`,"Create it:",`aib session init --name ${t}`].join(`
18
18
  `):["session not ready","","No AIB sessions exist in this repo.","Create one:","aib session init --name <name>"].join(`
19
- `)}function xt(e){const t=String(e.session??""),n=e.dirs&&typeof e.dirs=="object"&&!Array.isArray(e.dirs)?e.dirs:{},s=e.aliases&&typeof e.aliases=="object"&&!Array.isArray(e.aliases)?e.aliases:{},i=[`session: ${t}`,`outputs: ${String(n.outputs??"")}`,`inputs: ${String(n.inputs??"")}`],r=Object.entries(s).filter(([,o])=>typeof o=="string"&&o.trim()!=="").sort(([o],[a])=>o.localeCompare(a)).map(([o,a])=>`@${o} -> ${String(a)}`);return r.length>0&&i.push("","aliases:",...r),e.source==="single"&&i.push("","Only one AIB session exists in this repo.","You can run AIB commands without -s."),i.join(`
19
+ `)}function xt(e){const t=String(e.session??""),n=e.aliases&&typeof e.aliases=="object"&&!Array.isArray(e.aliases)?e.aliases:{},s=[`session: ${t}`],i=Object.entries(n).filter(([,r])=>typeof r=="string"&&r.trim()!=="").sort(([r],[o])=>r.localeCompare(o)).map(([r,o])=>`@${r} -> ${String(o)}`);return i.length>0&&s.push("","aliases:",...i),e.source==="single"&&s.push("","Only one AIB session exists in this repo.","You can run AIB commands without -s."),s.join(`
20
20
  `)}function jt(e){return["multiple AIB sessions","","available:",...e,"","Choose one:","aib -s <session> <command>","","Or bind it in this shell:",`${E.CLI_ENV.session}=<session>`,"","If none of these sessions is yours, create a new one:","aib session init --name <name>"].join(`
21
21
  `)}function Ct(e){const t=k(e),n=D(e),s=n?Object.keys(n.sessions).sort():[];if(t.source==="ambiguous")return(0,m.attachAgentText)({ok:!1,code:"MULTIPLE_AIB_SESSIONS",error:"Multiple AIB sessions exist. Select one explicitly.",available:s,next:"Use aib -s <session> session clear."},wt(s));const i=t.sessionId?R(e,t.sessionId):null;if(!i)return(0,m.attachAgentText)({cleared:!1,reason:"session-not-initialized"},["No AIB sessions exist in this repo.","","Create one:","aib session init --name <name>"].join(`
22
22
  `));he(i,{touch:!0}),g(e,i);const r=i.sessionId??t.sessionId??"";return(0,m.attachAgentText)({cleared:!0,session:r,dir:h(e,i.rootDir)},[`session cleared: ${r}`,"","Inputs and outputs were pruned.","You can keep using this session."].join(`
23
23
  `))}function he(e,t){l.rmSync(c.join(e.rootDir,"inputs"),{recursive:!0,force:!0}),l.rmSync(c.join(e.rootDir,"outputs"),{recursive:!0,force:!0}),e.inputs={},e.outputs={},e.guidance={},t.touch&&(e.updatedAt=new Date().toISOString()),me(e)}function wt(e){return["multiple AIB sessions","","available:",...e,"","Clear one explicitly only if it is yours:","aib -s <session> session clear","","If none of these sessions is yours, create a new one:","aib session init --name <name>"].join(`
24
- `)}function Rt(e){const t=Lt(e),n=D(e);if(!n)return;const s=Date.now();let i=!1;for(const[r,o]of Object.entries(n.sessions)){const a=P(o.rootDir);if(!l.existsSync(a)){delete n.sessions[r],i=!0,n.activeSessionId===r&&delete n.activeSessionId;continue}const f=Date.parse(o.updatedAt);if(!Number.isFinite(f))continue;const d=s-f;if(t.autoDelete&&t.ttlDeleteMs>0&&d>t.ttlDeleteMs){l.rmSync(o.rootDir,{recursive:!0,force:!0}),delete n.sessions[r],i=!0,n.activeSessionId===r&&delete n.activeSessionId;continue}if(t.autoClean&&t.ttlCleanMs>0&&d>t.ttlCleanMs){const p=Ie(e,o.rootDir,r);p&&(he(p,{touch:!1}),Pt(p))}}if(i){if(!n.activeSessionId){const r=Object.keys(n.sessions).sort()[0];r&&(n.activeSessionId=r)}T(e,n)}}function Lt(e){const t=(0,N.readWorkspaceNumberConfig)(e,"session.ttlMinutes",60),n=(0,N.readWorkspaceNumberConfig)(e,"session.ttlDeleteMinutes",t),s=(0,N.readWorkspaceNumberConfig)(e,"session.ttlCleanMinutes",t);return{autoDelete:(0,N.readWorkspaceBooleanConfig)(e,"session.autoDelete",!0),ttlDeleteMs:n>0?n*6e4:0,autoClean:(0,N.readWorkspaceBooleanConfig)(e,"session.autoClean",!0),ttlCleanMs:s>0?s*6e4:0}}function me(e){for(const t of ke)l.mkdirSync(c.join(e.rootDir,"outputs",t),{recursive:!0});for(const t of We)l.mkdirSync(c.join(e.rootDir,"inputs",t),{recursive:!0})}function R(e,t){const s=D(e)?.sessions[t];return s?Ie(e,s.rootDir,t):null}function v(e){const t=Ee(e);return t.sessionId?R(e,t.sessionId):null}function Ie(e,t,n){try{const s=JSON.parse(l.readFileSync(P(t),"utf8"));if(!s||typeof s!="object"||Array.isArray(s))return null;const i=s;return i.version!==1||typeof i.rootDir!="string"?null:(i.sessionId=i.sessionId??n,i)}catch{return null}}function A(e){const t=v(e);if(!t)throw new u.CliError("SESSION_WORKSPACE_NOT_INITIALIZED","Session workspace is not initialized.",{session:Y()??null,next:"Run aib session init --dir .tmp/aib"});return g(e,t),t}function g(e,t){t.updatedAt=new Date().toISOString(),l.mkdirSync(t.rootDir,{recursive:!0}),l.writeFileSync(P(t.rootDir),`${JSON.stringify(t,null,2)}
24
+ `)}function Rt(e){const t=Lt(e),n=D(e);if(!n)return;const s=Date.now();let i=!1;for(const[r,o]of Object.entries(n.sessions)){const a=P(o.rootDir);if(!l.existsSync(a)){delete n.sessions[r],i=!0,n.activeSessionId===r&&delete n.activeSessionId;continue}const f=Date.parse(o.updatedAt);if(!Number.isFinite(f))continue;const d=s-f;if(t.autoDelete&&t.ttlDeleteMs>0&&d>t.ttlDeleteMs){l.rmSync(o.rootDir,{recursive:!0,force:!0}),delete n.sessions[r],i=!0,n.activeSessionId===r&&delete n.activeSessionId;continue}if(t.autoClean&&t.ttlCleanMs>0&&d>t.ttlCleanMs){const p=Ie(e,o.rootDir,r);p&&(he(p,{touch:!1}),Pt(p))}}if(i){if(!n.activeSessionId){const r=Object.keys(n.sessions).sort()[0];r&&(n.activeSessionId=r)}T(e,n)}}function Lt(e){const t=(0,N.readWorkspaceNumberConfig)(e,"session.ttlMinutes",60),n=(0,N.readWorkspaceNumberConfig)(e,"session.ttlDeleteMinutes",t),s=(0,N.readWorkspaceNumberConfig)(e,"session.ttlCleanMinutes",t);return{autoDelete:(0,N.readWorkspaceBooleanConfig)(e,"session.autoDelete",!0),ttlDeleteMs:n>0?n*6e4:0,autoClean:(0,N.readWorkspaceBooleanConfig)(e,"session.autoClean",!0),ttlCleanMs:s>0?s*6e4:0}}function me(e){for(const t of ke)l.mkdirSync(c.join(e.rootDir,"outputs",t),{recursive:!0});for(const t of We)l.mkdirSync(c.join(e.rootDir,"inputs",t),{recursive:!0})}function R(e,t){const s=D(e)?.sessions[t];return s?Ie(e,s.rootDir,t):null}function v(e){const t=Ee(e);return t.sessionId?R(e,t.sessionId):null}function Ie(e,t,n){try{const s=JSON.parse(l.readFileSync(P(t),"utf8"));if(!s||typeof s!="object"||Array.isArray(s))return null;const i=s;return i.version!==1||typeof i.rootDir!="string"?null:(i.sessionId=i.sessionId??n,i)}catch{return null}}function A(e){const t=v(e);if(!t)throw new u.CliError("SESSION_WORKSPACE_NOT_INITIALIZED","Session workspace is not initialized.",{session:Y()??null,next:"Run aib session init --name <name>",help:"aib help session"});return g(e,t),t}function g(e,t){t.updatedAt=new Date().toISOString(),l.mkdirSync(t.rootDir,{recursive:!0}),l.writeFileSync(P(t.rootDir),`${JSON.stringify(t,null,2)}
25
25
  `),be(e,t,!1)}function Pt(e){l.mkdirSync(e.rootDir,{recursive:!0}),l.writeFileSync(P(e.rootDir),`${JSON.stringify(e,null,2)}
26
26
  `)}function Q(e,t,n=!1){const s=(0,N.resolveWorkspaceRoot)(e),i=s?.root??e,r=s?X(s.config[U]):void 0;if(r)return{rootDir:ye(i,r),source:"aib.json",...t?{ignoredRequestedDir:t}:{}};const a=ye(i,t??je);return n&&s&&(0,N.updateWorkspaceConfig)(i,{[U]:Tt(i,a)}),{rootDir:a,source:t?"request":"default"}}function ye(e,t){const n=c.resolve(e,t);return c.basename(n).toLowerCase()==="aib"?n:c.join(n,"aib")}function Tt(e,t){const n=c.relative(e,t);return n&&!n.startsWith("..")&&!c.isAbsolute(n)?n.replace(/\\/g,"/"):t.replace(/\\/g,"/")}function L(e){return c.join(Q(e).rootDir,Ce)}function kt(e){return c.join(Q(e).rootDir,we)}function P(e){return c.join(e,"session.json")}function D(e){try{const t=JSON.parse(l.readFileSync(L(e),"utf8"));if(!t||typeof t!="object"||Array.isArray(t))return null;const n=t;return n.version!==1||!n.sessions||typeof n.sessions!="object"?null:{version:1,cwd:typeof n.cwd=="string"?n.cwd:c.resolve(e),...typeof n.activeSessionId=="string"?{activeSessionId:n.activeSessionId}:{},sessions:n.sessions}}catch{return null}}function T(e,t){t.cwd=c.resolve((0,N.resolveWorkspaceRoot)(e)?.root??e),l.mkdirSync(c.dirname(L(e)),{recursive:!0}),l.writeFileSync(L(e),`${JSON.stringify(t,null,2)}
27
27
  `),Wt(e,t.activeSessionId)}function ge(e){return{version:1,cwd:c.resolve(e),sessions:{}}}function Wt(e,t){const n=kt(e);if(l.mkdirSync(c.dirname(n),{recursive:!0}),!t){l.rmSync(n,{force:!0});return}l.writeFileSync(n,`${JSON.stringify({sessionId:t,updatedAt:new Date().toISOString()},null,2)}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runSyncCommand=u;const i=require("../shared/agent-text"),r=require("../config/workspace-state");function u(s,n){const t=n.includes("--status"),e=t?(0,r.workspaceStateStatus)(s):(0,r.syncWorkspaceState)(s),o=e?{ok:!0,synced:!t,state:(0,r.formatWorkspaceStateSummary)(e)}:{ok:!0,synced:!1,state:null};return(0,i.attachAgentText)(o,y(o))}function y(s){const n=s.state;if(!n||typeof n!="object"||Array.isArray(n))return"sync not initialized";const t=n,e=Object.keys(c(t.aliases)?t.aliases:{}).length,o=String(t.tsconfigCount??0),a=s.synced===!1?["sync status",`root: ${String(t.root??"")}`,`config: ${String(t.config??"")}`,`AIB path aliases: ${e}`,`TypeScript configs: ${o}`,`watchers: ${String(t.watchers??"")}`]:["sync ok","config loaded",`AIB path aliases: ${e===0?"none":e}`,`TypeScript configs: ${o}`];return s.synced!==!1&&e===0&&a.push("","If you repeatedly use long paths, add pathAliases to aib.json."),c(t.lastError)&&a.push(`lastError: ${String(t.lastError.code??"SYNC_ERROR")}`),a.join(`
2
- `)}function c(s){return!!s&&typeof s=="object"&&!Array.isArray(s)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runSyncCommand=f;const l=require("../shared/agent-text"),a=require("../config/workspace-state");function f(e,n){const t=n.includes("--status"),s=t?(0,a.workspaceStateStatus)(e):(0,a.syncWorkspaceState)(e),o=s?{ok:!0,synced:!t,state:(0,a.formatWorkspaceStateSummary)(s)}:{ok:!0,synced:!1,state:null};return(0,l.attachAgentText)(o,y(o))}function y(e){const n=e.state;if(!n||typeof n!="object"||Array.isArray(n))return"sync not initialized";const t=n,s=Object.keys(u(t.aliases)?t.aliases:{}).length,o=Number(t.tsconfigCount??0),c=Number(t.excludedTsconfigCount??0),i=c>0?`${o} visible, ${c} excluded`:String(o),r=e.synced===!1?["sync status",`root: ${String(t.root??"")}`,`config: ${String(t.config??"")}`,`AIB path aliases: ${s}`,`TypeScript configs: ${i}`,`watchers: ${String(t.watchers??"")}`]:["sync ok","config loaded",`AIB path aliases: ${s===0?"none":s}`,`TypeScript configs: ${i}`];return e.synced!==!1&&s===0&&r.push("","If you repeatedly use long paths, add pathAliases to aib.json."),u(t.lastError)&&r.push(`lastError: ${String(t.lastError.code??"SYNC_ERROR")}`),r.join(`
2
+ `)}function u(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}
@@ -1,3 +1,3 @@
1
- "use strict";var A=exports&&exports.__createBinding||(Object.create?(function(e,n,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(n,t);(!i||("get"in i?!n.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return n[t]}}),Object.defineProperty(e,r,i)}):(function(e,n,t,r){r===void 0&&(r=t),e[r]=n[t]})),D=exports&&exports.__setModuleDefault||(Object.create?(function(e,n){Object.defineProperty(e,"default",{enumerable:!0,value:n})}):function(e,n){e.default=n}),L=exports&&exports.__importStar||(function(){var e=function(n){return e=Object.getOwnPropertyNames||function(t){var r=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(r[r.length]=i);return r},e(n)};return function(n){if(n&&n.__esModule)return n;var t={};if(n!=null)for(var r=e(n),i=0;i<r.length;i++)r[i]!=="default"&&A(t,n,r[i]);return D(t,n),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_LOCAL_CLI_CONFIG=exports.LOCAL_CLI_CONFIG_FILE_NAMES=void 0,exports.resolveLocalCliConfig=F;const _=L(require("node:fs")),p=L(require("node:path"));exports.LOCAL_CLI_CONFIG_FILE_NAMES=["aib.json"],exports.DEFAULT_LOCAL_CLI_CONFIG={inspect:{graph:{exclude:[]},tree:{onlyDirs:{exclude:[],include:[]},files:{exclude:[],include:[]}}}};function F(e){const n=x(e);let t=E();const r=[];for(const i of n)for(const c of exports.LOCAL_CLI_CONFIG_FILE_NAMES){const l=p.join(i,c),o=I(l);o&&(t=N(t,o),r.push(l))}return{config:t,sources:r}}function x(e){const n=[];let t=p.resolve(e);const r=p.parse(t).root;for(;n.push(t),t!==r;){const i=p.dirname(t);if(i===t)break;t=i}return n.reverse()}function I(e){if(!_.existsSync(e)||!_.statSync(e).isFile())return null;try{const n=S(_.readFileSync(e,"utf8"));return b(n)}catch{return null}}function b(e){const n=d(e.aib)?e.aib:{},t=d(e.inspect)?e.inspect:void 0,r=d(n.inspect)?n.inspect:void 0,i=t&&d(t.graph)?t.graph:void 0,c=r&&d(r.graph)?r.graph:void 0,l=t&&d(t.tree)?t.tree:void 0,o=r&&d(r.tree)?r.tree:void 0,C=u(e["inspect.graph.exclude"]),h=i?u(i.exclude):[],O=c?u(c.exclude):[],g=f([...h,...O,...C]),a={onlyDirs:{exclude:f([...u(e["inspect.tree.onlyDirs.exclude"]),...u(e["inspect.tree.only_dirs.exclude"]),...s(l,"onlyDirs","exclude"),...s(l,"only_dirs","exclude"),...s(o,"onlyDirs","exclude"),...s(o,"only_dirs","exclude")]),include:f([...u(e["inspect.tree.onlyDirs.include"]),...u(e["inspect.tree.only_dirs.include"]),...s(l,"onlyDirs","include"),...s(l,"only_dirs","include"),...s(o,"onlyDirs","include"),...s(o,"only_dirs","include")])},files:{exclude:f([...u(e["inspect.tree.files.exclude"]),...s(l,"files","exclude"),...s(o,"files","exclude")]),include:f([...u(e["inspect.tree.files.include"]),...s(l,"files","include"),...s(o,"files","include")])}};return g.length===0&&a.onlyDirs.exclude.length===0&&a.onlyDirs.include.length===0&&a.files.exclude.length===0&&a.files.include.length===0?null:{inspect:{graph:{exclude:g},tree:a}}}function s(e,n,t){if(!e)return[];const r=d(e[n])?e[n]:void 0;return r?u(r[t]):[]}function y(e,n){return{exclude:f([...e.exclude,...n?.exclude??[]]),include:f([...e.include,...n?.include??[]])}}function N(e,n){return{inspect:{graph:{exclude:f([...e.inspect.graph.exclude,...n.inspect?.graph?.exclude??[]])},tree:{onlyDirs:y(e.inspect.tree.onlyDirs,n.inspect?.tree?.onlyDirs),files:y(e.inspect.tree.files,n.inspect?.tree?.files)}}}}function E(){return{inspect:{graph:{exclude:[...exports.DEFAULT_LOCAL_CLI_CONFIG.inspect.graph.exclude]},tree:{onlyDirs:{exclude:[...exports.DEFAULT_LOCAL_CLI_CONFIG.inspect.tree.onlyDirs.exclude],include:[...exports.DEFAULT_LOCAL_CLI_CONFIG.inspect.tree.onlyDirs.include]},files:{exclude:[...exports.DEFAULT_LOCAL_CLI_CONFIG.inspect.tree.files.exclude],include:[...exports.DEFAULT_LOCAL_CLI_CONFIG.inspect.tree.files.include]}}}}}function S(e){const n=v(e),t=JSON.parse(n.replace(/,\s*([}\]])/g,"$1"));return d(t)?t:{}}function v(e){let n="",t=!1,r=!1;for(let i=0;i<e.length;i+=1){const c=e[i]??"",l=e[i+1]??"";if(t){n+=c,r?r=!1:c==="\\"?r=!0:c==='"'&&(t=!1);continue}if(c==='"'){t=!0,n+=c;continue}if(c==="/"&&l==="/"){for(;i<e.length&&e[i]!==`
2
- `;)i+=1;n+=`
3
- `;continue}if(c==="/"&&l==="*"){for(i+=2;i<e.length&&!(e[i]==="*"&&e[i+1]==="/");)i+=1;i+=1;continue}n+=c}return n}function u(e){return Array.isArray(e)?e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0):[]}function f(e){return Array.from(new Set(e))}function d(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}
1
+ "use strict";var I=exports&&exports.__createBinding||(Object.create?(function(e,n,t,r){r===void 0&&(r=t);var c=Object.getOwnPropertyDescriptor(n,t);(!c||("get"in c?!n.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return n[t]}}),Object.defineProperty(e,r,c)}):(function(e,n,t,r){r===void 0&&(r=t),e[r]=n[t]})),N=exports&&exports.__setModuleDefault||(Object.create?(function(e,n){Object.defineProperty(e,"default",{enumerable:!0,value:n})}):function(e,n){e.default=n}),A=exports&&exports.__importStar||(function(){var e=function(n){return e=Object.getOwnPropertyNames||function(t){var r=[];for(var c in t)Object.prototype.hasOwnProperty.call(t,c)&&(r[r.length]=c);return r},e(n)};return function(n){if(n&&n.__esModule)return n;var t={};if(n!=null)for(var r=e(n),c=0;c<r.length;c++)r[c]!=="default"&&I(t,n,r[c]);return N(t,n),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_LOCAL_CLI_CONFIG=exports.LOCAL_CLI_CONFIG_FILE_NAMES=void 0,exports.resolveLocalCliConfig=E;const _=A(require("node:fs")),a=A(require("node:path"));exports.LOCAL_CLI_CONFIG_FILE_NAMES=["aib.json"],exports.DEFAULT_LOCAL_CLI_CONFIG={inspect:{graph:{exclude:[]},tree:{onlyDirs:{exclude:[]},files:{exclude:[]}}},sync:{tsconfig:{exclude:[]}}};function E(e){const n=S(e);let t=T();const r=[];for(const c of n)for(const i of exports.LOCAL_CLI_CONFIG_FILE_NAMES){const u=a.join(c,i),f=m(u);f&&(t=j(t,f),r.push(u))}return{config:t,sources:r}}function S(e){const n=[];let t=a.resolve(e);const r=a.parse(t).root;for(;n.push(t),t!==r;){const c=a.dirname(t);if(c===t)break;t=c}return n.reverse()}function m(e){if(!_.existsSync(e)||!_.statSync(e).isFile())return null;try{const n=M(_.readFileSync(e,"utf8"));return v(n)}catch{return null}}function v(e){const n=s(e.aib)?e.aib:{},t=s(e.inspect)?e.inspect:void 0,r=s(n.inspect)?n.inspect:void 0,c=t&&s(t.graph)?t.graph:void 0,i=r&&s(r.graph)?r.graph:void 0,u=t&&s(t.tree)?t.tree:void 0,f=r&&s(r.tree)?r.tree:void 0,g=s(e.sync)?e.sync:void 0,p=s(n.sync)?n.sync:void 0,h=g&&s(g.tsconfig)?g.tsconfig:void 0,C=p&&s(p.tsconfig)?p.tsconfig:void 0,F=o(e["inspect.graph.exclude"]),b=c?o(c.exclude):[],D=i?o(i.exclude):[],L=l([...b,...D,...F]),y={onlyDirs:{exclude:l([...o(e["inspect.tree.onlyDirs.exclude"]),...o(e["inspect.tree.only_dirs.exclude"]),...d(u,"onlyDirs","exclude"),...d(u,"only_dirs","exclude"),...d(f,"onlyDirs","exclude"),...d(f,"only_dirs","exclude")])},files:{exclude:l([...o(e["inspect.tree.files.exclude"]),...d(u,"files","exclude"),...d(f,"files","exclude")])}},x=l([...o(e["sync.tsconfig.exclude"]),...h?o(h.exclude):[],...C?o(C.exclude):[]]);return L.length===0&&y.onlyDirs.exclude.length===0&&y.files.exclude.length===0&&x.length===0?null:{inspect:{graph:{exclude:L},tree:y},sync:{tsconfig:{exclude:x}}}}function d(e,n,t){if(!e)return[];const r=s(e[n])?e[n]:void 0;return r?o(r[t]):[]}function O(e,n){return{exclude:l([...e.exclude,...n?.exclude??[]])}}function j(e,n){return{inspect:{graph:{exclude:l([...e.inspect.graph.exclude,...n.inspect?.graph?.exclude??[]])},tree:{onlyDirs:O(e.inspect.tree.onlyDirs,n.inspect?.tree?.onlyDirs),files:O(e.inspect.tree.files,n.inspect?.tree?.files)}},sync:{tsconfig:{exclude:l([...e.sync.tsconfig.exclude,...n.sync?.tsconfig?.exclude??[]])}}}}function T(){return{inspect:{graph:{exclude:[...exports.DEFAULT_LOCAL_CLI_CONFIG.inspect.graph.exclude]},tree:{onlyDirs:{exclude:[...exports.DEFAULT_LOCAL_CLI_CONFIG.inspect.tree.onlyDirs.exclude]},files:{exclude:[...exports.DEFAULT_LOCAL_CLI_CONFIG.inspect.tree.files.exclude]}}},sync:{tsconfig:{exclude:[...exports.DEFAULT_LOCAL_CLI_CONFIG.sync.tsconfig.exclude]}}}}function M(e){const n=G(e),t=JSON.parse(n.replace(/,\s*([}\]])/g,"$1"));return s(t)?t:{}}function G(e){let n="",t=!1,r=!1;for(let c=0;c<e.length;c+=1){const i=e[c]??"",u=e[c+1]??"";if(t){n+=i,r?r=!1:i==="\\"?r=!0:i==='"'&&(t=!1);continue}if(i==='"'){t=!0,n+=i;continue}if(i==="/"&&u==="/"){for(;c<e.length&&e[c]!==`
2
+ `;)c+=1;n+=`
3
+ `;continue}if(i==="/"&&u==="*"){for(c+=2;c<e.length&&!(e[c]==="*"&&e[c+1]==="/");)c+=1;c+=1;continue}n+=i}return n}function o(e){return Array.isArray(e)?e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0):[]}function l(e){return Array.from(new Set(e))}function s(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isRemovedAgentCommand=h,exports.resolveCanonicalCommandAlias=p;const r=require("../commands/shared"),c=require("../shared/errors"),M=require("../shared/types"),d=new Set(["doctor","diagnostics","init","runtime","session","sync","trace","observability","feedback","note","generate-docs","config","view","qr"]),a=new Set(M.CANONICAL_METHOD_IDS),l=new Set(["applyModulePlan","validateModulePlan","findImporters","findUnusedImports","moveToFile","renameEntities","refactorBatch","normalizeImports","input"]);function h(e){return l.has(e)}function v(e){const s=new Map;for(const[i,t]of Object.entries(e)){if(!a.has(i)||!t)continue;const n=s.get(t)??[];n.push(i),s.set(t,n)}return s}async function p(e,s,i,t){if(l.has(e)||d.has(e)||a.has(e))return e;try{const n={};i!==void 0&&(n.explicitInstanceId=i),t!==void 0&&(n.autoStartIde=t);const f=await(0,r.resolveTargetInstance)(s,n),u=await(0,r.fetchEffectiveConfig)(f.entry),o=v(u.methodAliases).get(e);if(!o||o.length===0)return e;if(o.length>1)throw new c.CliError("AMBIGUOUS_COMMAND_ALIAS",`Alias "${e}" resolves to multiple commands.`,{alias:e,canonicalCommands:o});const[A]=o;return A??e}catch(n){if(n instanceof c.CliError&&n.code==="AMBIGUOUS_COMMAND_ALIAS")throw n;return e}}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isRemovedAgentCommand=h,exports.resolveCanonicalCommandAlias=p;const r=require("../commands/shared"),c=require("../shared/errors"),M=require("../shared/types"),d=new Set(["doctor","diagnostics","init","runtime","session","sync","reveal","trace","observability","feedback","note","generate-docs","config","view","qr"]),a=new Set(M.CANONICAL_METHOD_IDS),l=new Set(["applyModulePlan","validateModulePlan","findImporters","findUnusedImports","moveToFile","renameEntities","refactorBatch","normalizeImports","input"]);function h(e){return l.has(e)}function v(e){const s=new Map;for(const[i,t]of Object.entries(e)){if(!a.has(i)||!t)continue;const n=s.get(t)??[];n.push(i),s.set(t,n)}return s}async function p(e,s,i,t){if(l.has(e)||d.has(e)||a.has(e))return e;try{const n={};i!==void 0&&(n.explicitInstanceId=i),t!==void 0&&(n.autoStartIde=t);const f=await(0,r.resolveTargetInstance)(s,n),u=await(0,r.fetchEffectiveConfig)(f.entry),o=v(u.methodAliases).get(e);if(!o||o.length===0)return e;if(o.length>1)throw new c.CliError("AMBIGUOUS_COMMAND_ALIAS",`Alias "${e}" resolves to multiple commands.`,{alias:e,canonicalCommands:o});const[A]=o;return A??e}catch(n){if(n instanceof c.CliError&&n.code==="AMBIGUOUS_COMMAND_ALIAS")throw n;return e}}
@@ -0,0 +1 @@
1
+ "use strict";var _=exports&&exports.__createBinding||(Object.create?(function(n,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,i,r)}):(function(n,e,t,i){i===void 0&&(i=t),n[i]=e[t]})),h=exports&&exports.__setModuleDefault||(Object.create?(function(n,e){Object.defineProperty(n,"default",{enumerable:!0,value:e})}):function(n,e){n.default=e}),a=exports&&exports.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},n(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=n(e),r=0;r<i.length;r++)i[r]!=="default"&&_(t,e,i[r]);return h(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.discoverTsconfigFiles=p,exports.toRepoRelative=O;const b=a(require("node:fs")),u=a(require("node:path")),d=require("./glob-match"),E=require("./local-config"),y=new Set(["node_modules",".git",".tmp","dist","build","out"]);function p(n,e={}){const t=u.resolve(n),i=e.includeDefaultExcluded===!0,r=e.includeConfigExcluded===!0,c=(0,E.resolveLocalCliConfig)(t).config.sync.tsconfig.exclude,v=j(t,{includeDefaultExcluded:i}),s=[],f=[];for(const o of v){const l=D(u.relative(t,o));if(!r&&(0,d.matchesAnyGlob)(l,c)){f.push(o);continue}s.push(o)}return{root:t,visible:s.sort((o,l)=>o.localeCompare(l)),configExcluded:f.sort((o,l)=>o.localeCompare(l)),defaultExcludesIgnored:i,configExcludesIgnored:r,configExcludePatterns:[...c]}}function O(n,e){const t=u.relative(u.resolve(n),u.resolve(e));return(0,d.normalizeGlobPath)(t||".")}function j(n,e){const t=[];return g(n,0,t,e),t}function g(n,e,t,i){if(e>5)return;let r;try{r=b.readdirSync(n,{withFileTypes:!0})}catch{return}for(const c of r){if(c.isDirectory()){if(!i.includeDefaultExcluded&&y.has(c.name))continue;g(u.join(n,c.name),e+1,t,i);continue}c.isFile()&&/^tsconfig(?:\..+)?\.json$/i.test(c.name)&&t.push(u.join(n,c.name))}}function D(n){return n.replace(/\\/g,"/")}
@@ -1,3 +1,3 @@
1
- "use strict";var b=exports&&exports.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),v=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),m=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var n=[];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(n[n.length]=o);return n},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var n=t(e),o=0;o<n.length;o++)n[o]!=="default"&&b(r,e,n[o]);return v(r,e),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.AIB_CONFIG_FILE_NAME=void 0,exports.initWorkspaceRoot=O,exports.resolveWorkspaceRoot=f,exports.resolveRequiredWorkspaceRoot=M,exports.readWorkspaceNumberConfig=w,exports.readWorkspaceBooleanConfig=h,exports.readWorkspaceStringConfig=S,exports.updateWorkspaceConfig=k,exports.workspaceConfigSummary=D,exports.isPathInsideOrEqual=E;const u=m(require("node:fs")),s=m(require("node:path")),N=require("./env-vars"),I=require("../shared/errors");exports.AIB_CONFIG_FILE_NAME="aib.json";function O(t,e={}){const r=s.join(s.resolve(t),exports.AIB_CONFIG_FILE_NAME),n=u.existsSync(r)?_(r):{},o=a(e.sessionDir)??a(n.sessionDir),d=i(n["session.ttlMinutes"]),g=i(n["session.ttlCleanMinutes"])??d??60,l=i(n["session.ttlDeleteMinutes"])??d??60,c={...n,"workspace.root":a(n["workspace.root"])??".",...o?{sessionDir:o}:{},"session.autoDelete":p(n["session.autoDelete"])??!0,"session.ttlDeleteMinutes":l,"session.autoClean":p(n["session.autoClean"])??!0,"session.ttlCleanMinutes":g,"runtime.managedIdeTtlMinutes":i(n["runtime.managedIdeTtlMinutes"])??15,"runtime.managedIdeWatchdogIntervalMs":i(n["runtime.managedIdeWatchdogIntervalMs"])??3e4,"runtime.autoStopManagedIde":p(n["runtime.autoStopManagedIde"])??!0};u.writeFileSync(r,`${JSON.stringify(c,null,2)}
2
- `,"utf8");const C=i(c["session.ttlCleanMinutes"])??60,y=i(c["runtime.managedIdeTtlMinutes"])??15;return{created:exports.AIB_CONFIG_FILE_NAME,"workspace.root":a(c["workspace.root"])??".",...o?{sessionDir:o}:{},"session.ttlCleanMinutes":C,"session.ttlDeleteMinutes":i(c["session.ttlDeleteMinutes"])??60,"runtime.managedIdeTtlMinutes":y,next:o?"Now create a session without --dir: aib session init --name <name>":"Set the default session directory: aib config --session-dir .tmp/aib"}}function f(t){const e=a(process.env[N.CLI_ENV.workspaceRoot]);if(e){const g=s.resolve(t,e),l=s.join(g,exports.AIB_CONFIG_FILE_NAME),c=u.existsSync(l)?_(l):{"workspace.root":"."};return{root:g,configPath:l,config:c}}const r=W(t);if(!r)return null;const n=_(r),o=s.dirname(r),d=a(n["workspace.root"])??".";return{root:s.resolve(o,d),configPath:r,config:n}}function M(t){const e=f(t);if(e)return e;const r=A(t,".git");throw new I.CliError("WORKSPACE_ROOT_NOT_INITIALIZED","Workspace root is not initialized.",{cwd:s.resolve(t),...r?{detectedGitRoot:r}:{},next:"Go to your repo root and run: aib init"})}function w(t,e,r){const n=f(t);return(n?i(n.config[e]):null)??r}function h(t,e,r){const n=f(t);return(n?p(n.config[e]):null)??r}function S(t,e,r){const n=f(t);return(n?a(n.config[e]):null)??r}function k(t,e){const r=M(t),n={...r.config,...e};return u.writeFileSync(r.configPath,`${JSON.stringify(n,null,2)}
3
- `,"utf8"),n}function D(t){const e=i(t["session.ttlMinutes"]);return{"workspace.root":a(t["workspace.root"])??".",...a(t.sessionDir)?{sessionDir:a(t.sessionDir)}:{},"session.ttlCleanMinutes":i(t["session.ttlCleanMinutes"])??e??60,"session.ttlDeleteMinutes":i(t["session.ttlDeleteMinutes"])??e??60,"runtime.managedIdeTtlMinutes":i(t["runtime.managedIdeTtlMinutes"])??15}}function E(t,e){const r=s.resolve(t).toLowerCase(),n=s.resolve(e).toLowerCase();return n===r||n.startsWith(`${r}${s.sep}`)}function W(t){let e=s.resolve(t);const r=s.parse(e).root;for(;;){const n=s.join(e,exports.AIB_CONFIG_FILE_NAME);if(u.existsSync(n)&&u.statSync(n).isFile())return n;if(e===r)break;const o=s.dirname(e);if(o===e)break;e=o}return null}function A(t,e){let r=s.resolve(t);const n=s.parse(r).root;for(;;){if(u.existsSync(s.join(r,e)))return r;if(r===n)break;const o=s.dirname(r);if(o===r)break;r=o}return null}function _(t){try{const e=JSON.parse(u.readFileSync(t,"utf8"));return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}catch(e){throw new I.CliError("AIB_CONFIG_INVALID","aib.json must be valid JSON.",{file:t,error:e instanceof Error?e.message:String(e)})}}function a(t){return typeof t=="string"&&t.trim()?t.trim():null}function i(t){if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"&&t.trim()){const e=Number(t);return Number.isFinite(e)?e:null}return null}function p(t){if(typeof t=="boolean")return t;if(typeof t!="string")return null;const e=t.trim().toLowerCase();return["1","true","yes","on"].includes(e)?!0:["0","false","no","off"].includes(e)?!1:null}
1
+ "use strict";var S=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]})),O=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),_=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"&&S(n,t,r[o]);return O(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.AIB_CONFIG_FILE_NAME=void 0,exports.initWorkspaceRoot=h,exports.resolveWorkspaceRoot=g,exports.resolveRequiredWorkspaceRoot=C,exports.readWorkspaceNumberConfig=D,exports.readWorkspaceBooleanConfig=w,exports.readWorkspaceStringConfig=k,exports.updateWorkspaceConfig=E,exports.workspaceConfigSummary=W,exports.isPathInsideOrEqual=A;const c=_(require("node:fs")),s=_(require("node:path")),N=require("./env-vars"),M=require("../shared/errors");exports.AIB_CONFIG_FILE_NAME="aib.json";function h(e,t={}){const n=s.join(s.resolve(e),exports.AIB_CONFIG_FILE_NAME),r=c.existsSync(n),o=r?I(n):{},f=a(t.sessionDir)??a(o.sessionDir),d=i(o["session.ttlMinutes"]),p=i(o["session.ttlCleanMinutes"])??d??60,m=i(o["session.ttlDeleteMinutes"])??d??60,l={...o,"workspace.root":a(o["workspace.root"])??".",...f?{sessionDir:f}:{},"session.autoDelete":u(o["session.autoDelete"])??!0,"session.ttlDeleteMinutes":m,"session.autoClean":u(o["session.autoClean"])??!0,"session.ttlCleanMinutes":p,"runtime.managedIdeTtlMinutes":i(o["runtime.managedIdeTtlMinutes"])??15,"runtime.managedIdeWatchdogIntervalMs":i(o["runtime.managedIdeWatchdogIntervalMs"])??3e4,"runtime.autoStopManagedIde":u(o["runtime.autoStopManagedIde"])??!0};c.writeFileSync(n,`${JSON.stringify(l,null,2)}
2
+ `,"utf8");const y=i(l["session.ttlCleanMinutes"])??60,v=i(l["runtime.managedIdeTtlMinutes"])??15,b=!r||JSON.stringify(o)!==JSON.stringify(l);return{status:r?b?"updated":"unchanged":"created",...r?{}:{created:exports.AIB_CONFIG_FILE_NAME},configPath:n,root:s.resolve(e),"workspace.root":a(l["workspace.root"])??".",...f?{sessionDir:f}:{},"session.autoClean":u(l["session.autoClean"])??!0,"session.ttlCleanMinutes":y,"session.autoDelete":u(l["session.autoDelete"])??!0,"session.ttlDeleteMinutes":i(l["session.ttlDeleteMinutes"])??60,"runtime.autoStopManagedIde":u(l["runtime.autoStopManagedIde"])??!0,"runtime.managedIdeTtlMinutes":v,...f?{}:{next:"Set the default session directory: aib config --session-dir .tmp/aib"}}}function g(e){const t=a(process.env[N.CLI_ENV.workspaceRoot]);if(t){const d=s.resolve(e,t),p=s.join(d,exports.AIB_CONFIG_FILE_NAME),m=c.existsSync(p)?I(p):{"workspace.root":"."};return{root:d,configPath:p,config:m}}const n=F(e);if(!n)return null;const r=I(n),o=s.dirname(n),f=a(r["workspace.root"])??".";return{root:s.resolve(o,f),configPath:n,config:r}}function C(e){const t=g(e);if(t)return t;const n=R(e,".git");throw new M.CliError("WORKSPACE_ROOT_NOT_INITIALIZED","Workspace root is not initialized.",{cwd:s.resolve(e),...n?{detectedGitRoot:n}:{},next:"Run aib help first-setup from the intended repository root."})}function D(e,t,n){const r=g(e);return(r?i(r.config[t]):null)??n}function w(e,t,n){const r=g(e);return(r?u(r.config[t]):null)??n}function k(e,t,n){const r=g(e);return(r?a(r.config[t]):null)??n}function E(e,t){const n=C(e),r={...n.config,...t};return c.writeFileSync(n.configPath,`${JSON.stringify(r,null,2)}
3
+ `,"utf8"),r}function W(e){const t=i(e["session.ttlMinutes"]);return{"workspace.root":a(e["workspace.root"])??".",...a(e.sessionDir)?{sessionDir:a(e.sessionDir)}:{},"session.autoClean":u(e["session.autoClean"])??!0,"session.ttlCleanMinutes":i(e["session.ttlCleanMinutes"])??t??60,"session.autoDelete":u(e["session.autoDelete"])??!0,"session.ttlDeleteMinutes":i(e["session.ttlDeleteMinutes"])??t??60,"runtime.autoStopManagedIde":u(e["runtime.autoStopManagedIde"])??!0,"runtime.managedIdeTtlMinutes":i(e["runtime.managedIdeTtlMinutes"])??15}}function A(e,t){const n=s.resolve(e).toLowerCase(),r=s.resolve(t).toLowerCase();return r===n||r.startsWith(`${n}${s.sep}`)}function F(e){let t=s.resolve(e);const n=s.parse(t).root;for(;;){const r=s.join(t,exports.AIB_CONFIG_FILE_NAME);if(c.existsSync(r)&&c.statSync(r).isFile())return r;if(t===n)break;const o=s.dirname(t);if(o===t)break;t=o}return null}function R(e,t){let n=s.resolve(e);const r=s.parse(n).root;for(;;){if(c.existsSync(s.join(n,t)))return n;if(n===r)break;const o=s.dirname(n);if(o===n)break;n=o}return null}function I(e){try{const t=JSON.parse(c.readFileSync(e,"utf8"));return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch(t){throw new M.CliError("AIB_CONFIG_INVALID","aib.json must be valid JSON.",{file:e,error:t instanceof Error?t.message:String(t)})}}function a(e){return typeof e=="string"&&e.trim()?e.trim():null}function i(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e.trim()){const t=Number(e);return Number.isFinite(t)?t:null}return null}function u(e){if(typeof e=="boolean")return e;if(typeof e!="string")return null;const t=e.trim().toLowerCase();return["1","true","yes","on"].includes(t)?!0:["0","false","no","off"].includes(t)?!1:null}
@@ -1 +1 @@
1
- "use strict";var k=exports&&exports.__createBinding||(Object.create?(function(e,t,r,o){o===void 0&&(o=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,n)}):(function(e,t,r,o){o===void 0&&(o=r),e[o]=t[r]})),A=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),_=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var o=[];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(o[o.length]=n);return o},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var o=e(t),n=0;n<o.length;n++)o[n]!=="default"&&k(r,t,o[n]);return A(r,t),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.ensureWorkspaceState=M,exports.syncWorkspaceState=d,exports.workspaceStateStatus=q,exports.workspaceStateSummary=F,exports.formatWorkspaceStateSummary=v;const f=_(require("node:fs")),s=_(require("node:path")),E=require("./env-vars"),b=require("./import-rules"),C=require("./mutation-comments"),j=require("./path-aliases"),m=require("./workspace-root"),D=require("../shared/errors"),a=new Map,p=new Map;function M(e){const t=O(e),r=a.get(l(t.root));return r?S(r):R(t)}function d(e){const t=(0,m.resolveRequiredWorkspaceRoot)(e);return g(e,t),R(t)}function R(e){const t=s.resolve(e.root),r=l(t),o=a.get(r);try{const n=(0,j.normalizePathAliasMap)(e.config.pathAliases,"aib.json pathAliases"),h=(0,b.normalizeImportRules)(t,e.config.importRules),u=(0,C.normalizeMutationCommentsPolicy)(e.config.mutationComments),y=K(t),c=process.env[E.CLI_ENV.disableWatchers]==="1",i={root:t,configPath:e.configPath,config:e.config,pathAliases:n,importRules:h,mutationComments:u,tsconfigs:y,lastSyncAt:new Date().toISOString(),watchersStarted:o?.watchersStarted===!0&&o.watchersDisabled===c,watchersDisabled:c,watchers:o?.watchers??[]};return a.set(r,i),g(t,e),!c&&!i.watchersStarted&&L(i),c&&o&&o.watchers.length>0&&(W(o),i.watchers=[],i.watchersStarted=!1),S(i)}catch(n){throw o&&(o.lastError=T(n)),n}}function q(e){const t=O(e),r=a.get(l(t.root));return r?S(r):null}function F(e){const t=d(e);return v(t)}function v(e){return{root:e.root,config:e.configPath,aliases:e.pathAliases,importRules:(0,b.importRulesToJson)(e.importRules),mutationComments:(0,C.mutationCommentsPolicyToJson)(e.mutationComments),tsconfigCount:e.tsconfigs.length,watchers:e.watchersDisabled?"disabled":e.watchersStarted?"started":"not-started",lastSyncAt:e.lastSyncAt,...e.lastError?{lastError:e.lastError}:{}}}function L(e){W(e);const t=[e.configPath,...e.tsconfigs].filter(r=>f.existsSync(r));e.watchers=t.flatMap(r=>{try{return[f.watch(r,{persistent:!1},()=>N(e.root))]}catch{return[]}}),e.watchersStarted=e.watchers.length>0}function W(e){for(const t of e.watchers)try{t.close()}catch{}e.watchers=[],e.watchersStarted=!1,e.debounceTimer&&(clearTimeout(e.debounceTimer),delete e.debounceTimer)}function N(e){const t=a.get(l(e));t&&(t.debounceTimer&&clearTimeout(t.debounceTimer),t.debounceTimer=setTimeout(()=>{const r=a.get(l(e));if(r)try{d(e)}catch(o){r.lastError=T(o)}},100),t.debounceTimer.unref())}function O(e){const t=w(e),r=p.get(t);if(r&&!I(e,r.configPath))return r;const o=(0,m.resolveRequiredWorkspaceRoot)(e);return g(e,o),o}function I(e,t){const r=s.resolve(t).toLowerCase(),o=s.dirname(r);let n=s.resolve(e);const h=s.parse(n).root;for(;;){const u=s.join(n,m.AIB_CONFIG_FILE_NAME);if(f.existsSync(u)&&f.statSync(u).isFile())return s.resolve(u).toLowerCase()!==r;if(n.toLowerCase()===o||n===h)return!1;const c=s.dirname(n);if(c===n)return!1;n=c}}function g(e,t){p.set(w(e),t),p.set(w(t.root),t)}function l(e){return s.resolve(e).toLowerCase()}function w(e){return s.resolve(e).toLowerCase()}function K(e){const t=[];return P(e,0,t),t.sort((r,o)=>r.localeCompare(o))}function P(e,t,r){if(t>5)return;let o;try{o=f.readdirSync(e,{withFileTypes:!0})}catch{return}for(const n of o){if(n.isDirectory()){if(z(n.name))continue;P(s.join(e,n.name),t+1,r);continue}n.isFile()&&/^tsconfig(?:\..+)?\.json$/i.test(n.name)&&r.push(s.join(e,n.name))}}function z(e){return e==="node_modules"||e===".git"||e===".tmp"||e==="dist"||e==="build"||e==="out"}function S(e){return{root:e.root,configPath:e.configPath,config:e.config,pathAliases:e.pathAliases,importRules:[...e.importRules],mutationComments:{...e.mutationComments},tsconfigs:[...e.tsconfigs],lastSyncAt:e.lastSyncAt,watchersStarted:e.watchersStarted,watchersDisabled:e.watchersDisabled,...e.lastError?{lastError:e.lastError}:{}}}function T(e){return e instanceof D.CliError?{code:e.code,message:e.message,...e.details?{details:JSON.parse(JSON.stringify(e.details))}:{}}:{code:"SYNC_ERROR",message:e instanceof Error?e.message:String(e)}}
1
+ "use strict";var E=exports&&exports.__createBinding||(Object.create?(function(e,t,r,o){o===void 0&&(o=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,n)}):(function(e,t,r,o){o===void 0&&(o=r),e[o]=t[r]})),A=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),b=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var o=[];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(o[o.length]=n);return o},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var o=e(t),n=0;n<o.length;n++)o[n]!=="default"&&E(r,t,o[n]);return A(r,t),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.ensureWorkspaceState=j,exports.syncWorkspaceState=w,exports.workspaceStateStatus=L,exports.workspaceStateSummary=N,exports.formatWorkspaceStateSummary=T;const h=b(require("node:fs")),s=b(require("node:path")),k=require("./env-vars"),C=require("./import-rules"),v=require("./mutation-comments"),M=require("./path-aliases"),q=require("./tsconfig-discovery"),g=require("./workspace-root"),D=require("../shared/errors"),i=new Map,p=new Map;function j(e){const t=O(e),r=i.get(u(t.root));return r?_(r):R(t)}function w(e){const t=(0,g.resolveRequiredWorkspaceRoot)(e);return S(e,t),R(t)}function R(e){const t=s.resolve(e.root),r=u(t),o=i.get(r);try{const n=(0,M.normalizePathAliasMap)(e.config.pathAliases,"aib.json pathAliases"),m=(0,C.normalizeImportRules)(t,e.config.importRules),a=(0,v.normalizeMutationCommentsPolicy)(e.config.mutationComments),d=(0,q.discoverTsconfigFiles)(t),l=d.visible,f=process.env[k.CLI_ENV.disableWatchers]==="1",c={root:t,configPath:e.configPath,config:e.config,pathAliases:n,importRules:m,mutationComments:a,tsconfigs:l,excludedTsconfigCount:d.configExcluded.length,lastSyncAt:new Date().toISOString(),watchersStarted:o?.watchersStarted===!0&&o.watchersDisabled===f,watchersDisabled:f,watchers:o?.watchers??[]};return i.set(r,c),S(t,e),!f&&!c.watchersStarted&&F(c),f&&o&&o.watchers.length>0&&(W(o),c.watchers=[],c.watchersStarted=!1),_(c)}catch(n){throw o&&(o.lastError=P(n)),n}}function L(e){const t=O(e),r=i.get(u(t.root));return r?_(r):null}function N(e){const t=w(e);return T(t)}function T(e){return{root:e.root,config:e.configPath,aliases:e.pathAliases,importRules:(0,C.importRulesToJson)(e.importRules),mutationComments:(0,v.mutationCommentsPolicyToJson)(e.mutationComments),tsconfigCount:e.tsconfigs.length,excludedTsconfigCount:e.excludedTsconfigCount,watchers:e.watchersDisabled?"disabled":e.watchersStarted?"started":"not-started",lastSyncAt:e.lastSyncAt,...e.lastError?{lastError:e.lastError}:{}}}function F(e){W(e);const t=[e.configPath,...e.tsconfigs].filter(r=>h.existsSync(r));e.watchers=t.flatMap(r=>{try{return[h.watch(r,{persistent:!1},()=>I(e.root))]}catch{return[]}}),e.watchersStarted=e.watchers.length>0}function W(e){for(const t of e.watchers)try{t.close()}catch{}e.watchers=[],e.watchersStarted=!1,e.debounceTimer&&(clearTimeout(e.debounceTimer),delete e.debounceTimer)}function I(e){const t=i.get(u(e));t&&(t.debounceTimer&&clearTimeout(t.debounceTimer),t.debounceTimer=setTimeout(()=>{const r=i.get(u(e));if(r)try{w(e)}catch(o){r.lastError=P(o)}},100),t.debounceTimer.unref())}function O(e){const t=y(e),r=p.get(t);if(r&&!K(e,r.configPath))return r;const o=(0,g.resolveRequiredWorkspaceRoot)(e);return S(e,o),o}function K(e,t){const r=s.resolve(t).toLowerCase(),o=s.dirname(r);let n=s.resolve(e);const m=s.parse(n).root;for(;;){const a=s.join(n,g.AIB_CONFIG_FILE_NAME);if(h.existsSync(a)&&h.statSync(a).isFile())return s.resolve(a).toLowerCase()!==r;if(n.toLowerCase()===o||n===m)return!1;const l=s.dirname(n);if(l===n)return!1;n=l}}function S(e,t){p.set(y(e),t),p.set(y(t.root),t)}function u(e){return s.resolve(e).toLowerCase()}function y(e){return s.resolve(e).toLowerCase()}function _(e){return{root:e.root,configPath:e.configPath,config:e.config,pathAliases:e.pathAliases,importRules:[...e.importRules],mutationComments:{...e.mutationComments},tsconfigs:[...e.tsconfigs],excludedTsconfigCount:e.excludedTsconfigCount,lastSyncAt:e.lastSyncAt,watchersStarted:e.watchersStarted,watchersDisabled:e.watchersDisabled,...e.lastError?{lastError:e.lastError}:{}}}function P(e){return e instanceof D.CliError?{code:e.code,message:e.message,...e.details?{details:JSON.parse(JSON.stringify(e.details))}:{}}:{code:"SYNC_ERROR",message:e instanceof Error?e.message:String(e)}}