@automaton-labs/aib 0.0.5 → 0.0.6

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 (38) hide show
  1. package/dist/bin/cli.js +2 -2
  2. package/dist/commands/config-command.js +2 -1
  3. package/dist/commands/config-output.js +10 -8
  4. package/dist/commands/doctor.js +2 -1
  5. package/dist/commands/help-command.js +4 -4
  6. package/dist/commands/inspect-format.js +1 -1
  7. package/dist/commands/quick-read.js +8 -8
  8. package/dist/commands/result-view.js +5 -5
  9. package/dist/commands/session-workspace.js +7 -7
  10. package/dist/config/workspace-root.js +3 -3
  11. package/dist/help/bootstrap.md +4 -7
  12. package/dist/help/docs/help-format.md +4 -7
  13. package/dist/help/dsl/bootstrap.md +4 -7
  14. package/dist/help/dsl/docs/help-format.md +4 -7
  15. package/dist/help/dsl/full.md +4 -7
  16. package/dist/help/dsl/topics/help-format.md +4 -7
  17. package/dist/help/full.md +4 -7
  18. package/dist/help/help-meta.json +5 -5
  19. package/dist/help/json/bootstrap.md +4 -7
  20. package/dist/help/json/docs/help-format.md +4 -7
  21. package/dist/help/json/full.md +4 -7
  22. package/dist/help/json/topics/help-format.md +4 -7
  23. package/dist/help/topics/help-format.md +4 -7
  24. package/dist/managed-host/serve-web-autostart.js +1 -1
  25. package/dist/managed-host/serve-web-host.cjs +193 -79
  26. package/dist/observability/config.js +1 -1
  27. package/dist/payloads/read-stdin-json.js +1 -1
  28. package/dist/runtime/managed-runtime-provisioning.js +1 -1
  29. package/dist/runtime/run-command.js +1 -1
  30. package/dist/session/server.js +7 -5
  31. package/dist/shared/errors.js +14 -13
  32. package/dist/shared/stdin-examples.js +3 -0
  33. package/dist/tracing/trace.js +5 -3
  34. package/extension/vscode-refactor-bridge-extension.vsix +0 -0
  35. package/package.json +1 -1
  36. package/runtimes/launcher/linux-x64/aib +0 -0
  37. package/runtimes/launcher/win-x64/aib.exe +0 -0
  38. package/scripts/provision-runtime.cjs +25 -1
@@ -339,21 +339,51 @@ function startLoggedCommand(commandSpec, args, options) {
339
339
  return startLoggedProcess(commandExecutable(commandSpec), commandArgs(commandSpec, args), options);
340
340
  }
341
341
 
342
- function resolvePackagedCodeServerCommand() {
343
- const nodeRuntime = resolvePackagedNodeRuntime();
344
- const entryPaths = [
345
- path.join(rootDir, "runtimes", "code-server", "node_modules", "code-server", "out", "node", "entry.js"),
346
- path.join(rootDir, "packages", "cli", "runtimes", "code-server", "node_modules", "code-server", "out", "node", "entry.js")
347
- ];
348
- for (const entryPath of entryPaths) {
349
- if (fs.existsSync(entryPath)) {
350
- return makeCommandSpec(nodeRuntime.command, [entryPath], nodeRuntime.source === "packaged-node"
351
- ? "packaged-code-server-entry-bundled-node"
352
- : "packaged-code-server-entry");
342
+ function resolvePackagedCodeServerCommand() {
343
+ const nodeRuntime = resolvePackagedNodeRuntime();
344
+ const candidates = [
345
+ {
346
+ packageRoot: rootDir,
347
+ entryPath: path.join(rootDir, "runtimes", "code-server", "node_modules", "code-server", "out", "node", "entry.js")
348
+ },
349
+ {
350
+ packageRoot: path.join(rootDir, "packages", "cli"),
351
+ entryPath: path.join(rootDir, "packages", "cli", "runtimes", "code-server", "node_modules", "code-server", "out", "node", "entry.js")
352
+ }
353
+ ];
354
+ for (const { packageRoot, entryPath } of candidates) {
355
+ if (fs.existsSync(entryPath) && managedRuntimePlatformStatus(packageRoot).ok) {
356
+ return makeCommandSpec(nodeRuntime.command, [entryPath], nodeRuntime.source === "packaged-node"
357
+ ? "packaged-code-server-entry-bundled-node"
358
+ : "packaged-code-server-entry");
353
359
  }
354
360
  }
355
- return null;
356
- }
361
+ return null;
362
+ }
363
+
364
+ function managedRuntimePlatformStatus(packageRoot) {
365
+ const markerPath = path.join(packageRoot, "runtimes", ".aib-runtime-platform.json");
366
+ const expectedPlatformKey = `${process.platform}-${process.arch}`;
367
+ if (!fs.existsSync(markerPath)) {
368
+ return { ok: true, reason: "missing", expectedPlatformKey, actualPlatformKey: null };
369
+ }
370
+ try {
371
+ const marker = JSON.parse(fs.readFileSync(markerPath, "utf8"));
372
+ const actualPlatformKey = typeof marker.platformKey === "string"
373
+ ? marker.platformKey
374
+ : typeof marker.platform === "string" && typeof marker.arch === "string"
375
+ ? `${marker.platform}-${marker.arch}`
376
+ : null;
377
+ return {
378
+ ok: actualPlatformKey === expectedPlatformKey,
379
+ reason: actualPlatformKey === expectedPlatformKey ? "ok" : "mismatch",
380
+ expectedPlatformKey,
381
+ actualPlatformKey
382
+ };
383
+ } catch {
384
+ return { ok: false, reason: "invalid", expectedPlatformKey, actualPlatformKey: null };
385
+ }
386
+ }
357
387
 
358
388
  function resolveManagedHostKind(options, commandSpec) {
359
389
  const raw = options.hostKind ?? process.env.AIB_MANAGED_HOST_KIND ?? "";
@@ -652,33 +682,108 @@ function stopProcessTree(pid) {
652
682
  }
653
683
  }
654
684
 
655
- function stopProcessesByCommandLineFragment(fragment) {
656
- if (process.platform !== "win32" || !fragment) {
657
- return {
658
- attempted: false,
659
- fragment
660
- };
661
- }
662
-
663
- const escaped = String(fragment).replace(/'/g, "''");
664
- const script = [
665
- "$fragment = '" + escaped + "'",
666
- "Get-CimInstance Win32_Process |",
667
- "Where-Object { $_.CommandLine -and $_.CommandLine.Contains($fragment) } |",
668
- "ForEach-Object { try { Stop-Process -Id $_.ProcessId -Force -ErrorAction Stop; $_.ProcessId } catch {} }"
669
- ].join(" ");
670
- const result = run("powershell.exe", ["-NoProfile", "-Command", script], { timeoutMs: 10_000 });
671
- return {
672
- attempted: true,
673
- fragment,
674
- status: result.status,
675
- error: result.error,
676
- stdoutTail: tail(result.stdout, 1000),
685
+ function stopProcessesByCommandLineFragment(fragment) {
686
+ if (!fragment) {
687
+ return {
688
+ attempted: false,
689
+ fragment
690
+ };
691
+ }
692
+ if (process.platform !== "win32") {
693
+ return stopProcessesByCommandLineFragmentUnix(fragment);
694
+ }
695
+
696
+ const escaped = String(fragment).replace(/'/g, "''");
697
+ const script = [
698
+ "$self = $PID",
699
+ "$fragment = '" + escaped + "'",
700
+ "Get-CimInstance Win32_Process |",
701
+ "Where-Object { $_.ProcessId -ne $self -and $_.CommandLine -and $_.CommandLine.Contains($fragment) } |",
702
+ "ForEach-Object { try { Stop-Process -Id $_.ProcessId -Force -ErrorAction Stop; $_.ProcessId } catch {} }"
703
+ ].join("\n");
704
+ const result = run("powershell.exe", ["-NoProfile", "-Command", script], { timeoutMs: 10_000 });
705
+ const killed = result.stdout
706
+ .split(/\r?\n/)
707
+ .map((line) => line.trim())
708
+ .filter(Boolean).length;
709
+ return {
710
+ attempted: true,
711
+ fragment,
712
+ killed,
713
+ status: result.status,
714
+ error: result.error,
715
+ stdoutTail: tail(result.stdout, 1000),
677
716
  stderrTail: tail(result.stderr, 1000)
678
- };
679
- }
680
-
681
- function stopOrphanedPackagedRuntimeProcesses(activeRunDirs = []) {
717
+ };
718
+ }
719
+
720
+ function stopProcessesByCommandLineFragmentUnix(fragment) {
721
+ const result = run("ps", ["-eo", "pid=,args="], { timeoutMs: 10_000 });
722
+ if (result.status !== 0) {
723
+ return {
724
+ attempted: true,
725
+ fragment,
726
+ killed: 0,
727
+ status: result.status,
728
+ error: result.error,
729
+ stdoutTail: tail(result.stdout, 1000),
730
+ stderrTail: tail(result.stderr, 1000)
731
+ };
732
+ }
733
+
734
+ const currentPid = process.pid;
735
+ const parentPid = process.ppid;
736
+ const pids = result.stdout
737
+ .split(/\r?\n/)
738
+ .map((line) => {
739
+ const match = line.match(/^\s*(\d+)\s+(.*)$/);
740
+ if (!match) {
741
+ return null;
742
+ }
743
+ return {
744
+ pid: Number(match[1]),
745
+ commandLine: match[2] ?? ""
746
+ };
747
+ })
748
+ .filter(Boolean)
749
+ .filter((row) => row.pid !== currentPid && row.pid !== parentPid)
750
+ .filter((row) => row.commandLine.includes(fragment))
751
+ .map((row) => row.pid);
752
+
753
+ const uniquePids = [...new Set(pids)].filter((pid) => Number.isInteger(pid) && pid > 0);
754
+ let killed = 0;
755
+ const errors = [];
756
+ for (const pid of uniquePids) {
757
+ try {
758
+ process.kill(pid, "SIGTERM");
759
+ killed += 1;
760
+ } catch (error) {
761
+ errors.push(`${pid}: ${error instanceof Error ? error.message : String(error)}`);
762
+ }
763
+ }
764
+ if (killed > 0) {
765
+ sleepSync(250);
766
+ }
767
+ for (const pid of uniquePids) {
768
+ if (!isProcessAlive(pid)) {
769
+ continue;
770
+ }
771
+ try {
772
+ process.kill(pid, "SIGKILL");
773
+ } catch (error) {
774
+ errors.push(`${pid}: ${error instanceof Error ? error.message : String(error)}`);
775
+ }
776
+ }
777
+ return {
778
+ attempted: true,
779
+ fragment,
780
+ killed,
781
+ status: errors.length === 0 ? 0 : 1,
782
+ error: errors.join("; ") || null
783
+ };
784
+ }
785
+
786
+ function stopOrphanedPackagedRuntimeProcesses(activeRunDirs = []) {
682
787
  if (process.platform !== "win32") {
683
788
  return {
684
789
  attempted: false,
@@ -962,13 +1067,16 @@ async function acquireLock(hostId, timeoutMs = 15_000, staleMs = 120_000) {
962
1067
  fs.rmSync(lockDir, { recursive: true, force: true });
963
1068
  }
964
1069
  };
965
- } catch (error) {
966
- if (error && error.code === "EEXIST") {
967
- const stat = fs.statSync(lockDir);
968
- if (Date.now() - stat.mtimeMs > staleMs) {
969
- fs.rmSync(lockDir, { recursive: true, force: true });
970
- continue;
971
- }
1070
+ } catch (error) {
1071
+ if (error && error.code === "EEXIST") {
1072
+ const owner = readJsonFile(path.join(lockDir, "owner.json"));
1073
+ const ownerPid = Number.isInteger(owner?.pid) ? owner.pid : null;
1074
+ const ownerAlive = ownerPid !== null && isProcessAlive(ownerPid);
1075
+ const stat = fs.statSync(lockDir);
1076
+ if ((ownerPid !== null && !ownerAlive) || Date.now() - stat.mtimeMs > staleMs) {
1077
+ fs.rmSync(lockDir, { recursive: true, force: true });
1078
+ continue;
1079
+ }
972
1080
  await sleep(250);
973
1081
  continue;
974
1082
  }
@@ -1130,9 +1238,10 @@ async function startManagedServeWebHost(options = {}) {
1130
1238
  return record;
1131
1239
  }
1132
1240
 
1133
- const lock = await acquireLock(hostId);
1134
- try {
1135
- if (reuse) {
1241
+ const lock = await acquireLock(hostId, Math.max(90_000, waitMs + 45_000));
1242
+ try {
1243
+ const orphanCleanup = readMetadataByHostId(hostId) ? null : stopProcessesByCommandLineFragment(hostId);
1244
+ if (reuse) {
1136
1245
  const existingStatus = await getManagedServeWebHostStatus({ fixture, hostId, vsix, ideCommand: options.ideCommand, hostKind });
1137
1246
  if (existingStatus.healthy) {
1138
1247
  const updatedMetadata = {
@@ -1156,11 +1265,12 @@ async function startManagedServeWebHost(options = {}) {
1156
1265
  runDir: existingStatus.metadata.runDir ?? runDir,
1157
1266
  logsDir: existingStatus.metadata.logsDir ?? logsDir,
1158
1267
  stepsDir: existingStatus.metadata.stepsDir ?? stepsDir,
1159
- metadata: updatedMetadata,
1160
- steps,
1161
- failures
1162
- });
1163
- }
1268
+ metadata: updatedMetadata,
1269
+ steps,
1270
+ failures,
1271
+ orphanCleanup
1272
+ });
1273
+ }
1164
1274
  if (existingStatus.metadata) {
1165
1275
  await stopManagedServeWebHost({ fixture, hostId, removeMetadataOnlyIfKnown: true });
1166
1276
  }
@@ -1221,7 +1331,7 @@ async function startManagedServeWebHost(options = {}) {
1221
1331
  };
1222
1332
  });
1223
1333
  if (failures.length > 0) {
1224
- return buildStartSummary({ ok: false, reused: false, startedAt, hostId, fixture, vsix, codeCommand, hostKind, runDir, logsDir, stepsDir, metadata, steps, failures });
1334
+ return buildStartSummary({ ok: false, reused: false, startedAt, hostId, fixture, vsix, codeCommand, hostKind, runDir, logsDir, stepsDir, metadata, steps, failures, orphanCleanup });
1225
1335
  }
1226
1336
 
1227
1337
  const port = Number.isInteger(options.port) ? options.port : await allocatePort();
@@ -1317,7 +1427,7 @@ async function startManagedServeWebHost(options = {}) {
1317
1427
  });
1318
1428
  if (failures.length > 0) {
1319
1429
  stopProcessTree(serveWebProcess?.child?.pid);
1320
- return buildStartSummary({ ok: false, reused: false, startedAt, hostId, fixture, vsix, codeCommand, hostKind, runDir, logsDir, stepsDir, metadata, steps, failures });
1430
+ return buildStartSummary({ ok: false, reused: false, startedAt, hostId, fixture, vsix, codeCommand, hostKind, runDir, logsDir, stepsDir, metadata, steps, failures, orphanCleanup });
1321
1431
  }
1322
1432
 
1323
1433
  await step("open headless browser client", async () => {
@@ -1408,7 +1518,7 @@ async function startManagedServeWebHost(options = {}) {
1408
1518
  if (failures.length > 0) {
1409
1519
  stopProcessTree(browserProcess?.pid);
1410
1520
  stopProcessTree(serveWebProcess?.child?.pid);
1411
- return buildStartSummary({ ok: false, reused: false, startedAt, hostId, fixture, vsix, codeCommand, hostKind, runDir, logsDir, stepsDir, metadata, steps, failures });
1521
+ return buildStartSummary({ ok: false, reused: false, startedAt, hostId, fixture, vsix, codeCommand, hostKind, runDir, logsDir, stepsDir, metadata, steps, failures, orphanCleanup });
1412
1522
  }
1413
1523
 
1414
1524
  const registryEntry = steps.at(-1)?.detail?.state?.entry ?? null;
@@ -1454,10 +1564,11 @@ async function startManagedServeWebHost(options = {}) {
1454
1564
  logsDir,
1455
1565
  stepsDir,
1456
1566
  metadata,
1457
- registryEntry,
1458
- steps,
1459
- failures
1460
- });
1567
+ registryEntry,
1568
+ steps,
1569
+ failures,
1570
+ orphanCleanup
1571
+ });
1461
1572
  } finally {
1462
1573
  lock.release();
1463
1574
  }
@@ -1470,18 +1581,20 @@ async function stopManagedServeWebHost(options = {}) {
1470
1581
 
1471
1582
  const fixture = path.resolve(options.fixture ?? defaultFixtureDir);
1472
1583
  const codeCommand = resolveManagedIdeCommand(options);
1473
- const hostKind = resolveManagedHostKind(options, codeCommand);
1474
- const hostId = options.hostId ?? buildHostId({ fixture, hostKind });
1475
- const metadata = readMetadataByHostId(hostId);
1476
- if (!metadata) {
1477
- return {
1478
- ok: true,
1479
- hostId,
1480
- hostKind,
1481
- stopped: false,
1482
- reason: "metadata-not-found"
1483
- };
1484
- }
1584
+ const hostKind = resolveManagedHostKind(options, codeCommand);
1585
+ const hostId = options.hostId ?? buildHostId({ fixture, hostKind });
1586
+ const metadata = readMetadataByHostId(hostId);
1587
+ if (!metadata) {
1588
+ const orphanCleanup = stopProcessesByCommandLineFragment(hostId);
1589
+ return {
1590
+ ok: true,
1591
+ hostId,
1592
+ hostKind,
1593
+ stopped: (orphanCleanup.killed ?? 0) > 0,
1594
+ reason: (orphanCleanup.killed ?? 0) > 0 ? "orphan-processes-stopped" : "metadata-not-found",
1595
+ orphanCleanup
1596
+ };
1597
+ }
1485
1598
 
1486
1599
  const stopResults = [];
1487
1600
  const watchdog = readJsonFile(getWatchdogPath(hostId));
@@ -1762,12 +1875,13 @@ function buildStartSummary(input) {
1762
1875
  runDir: input.runDir,
1763
1876
  metadata: input.metadata,
1764
1877
  registryEntry: input.registryEntry ?? null,
1765
- artifacts: {
1766
- logsDir: input.logsDir,
1767
- stepsDir: input.stepsDir,
1768
- summaryPath
1769
- },
1770
- steps: input.steps.map((record) => ({
1878
+ artifacts: {
1879
+ logsDir: input.logsDir,
1880
+ stepsDir: input.stepsDir,
1881
+ summaryPath
1882
+ },
1883
+ orphanCleanup: input.orphanCleanup ?? null,
1884
+ steps: input.steps.map((record) => ({
1771
1885
  name: record.name,
1772
1886
  ok: record.ok,
1773
1887
  durationMs: record.durationMs,
@@ -1 +1 @@
1
- "use strict";var b=exports&&exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_OBSERVABILITY_CONFIG=void 0,exports.resolveObservabilityConfig=l,exports.traceEnabled=S,exports.failureSnapshotsEnabled=v,exports.defaultTraceWorkspaceDir=h,exports.feedbackFilePath=_,exports.failureSnapshotsRoot=I,exports.observabilityStatus=R;const c=b(require("node:fs")),n=b(require("node:path")),s=require("../config/env-vars"),u=require("../config/product-storage"),y=require("./context");exports.DEFAULT_OBSERVABILITY_CONFIG={metrics:"on",mutationImpactMetrics:"on",trace:"full",failureSnapshots:"on",feedback:"on",retention:{metrics:{maxAgeDays:30,maxTotalMb:512,maxPerWorkspaceMb:128},trace:{maxAgeDays:14,maxTotalMb:512,maxPerWorkspaceMb:128},failureSnapshots:{maxAgeDays:14,maxTotalMb:512,maxPerWorkspaceMb:128,maxFileMb:2,maxFilesPerFailure:5},feedback:{cleanup:"dangerOnly"}}};function l(){const e=JSON.parse(JSON.stringify(exports.DEFAULT_OBSERVABILITY_CONFIG)),t=d(process.env[s.CLI_ENV.metrics]);t&&(e.metrics=t);const r=d(process.env[s.CLI_ENV.mutationImpactMetrics]);r&&(e.mutationImpactMetrics=r);const o=E(process.env[s.CLI_ENV.trace]);o&&(e.trace=o);const a=d(process.env[s.CLI_ENV.failureSnapshots]);return a&&(e.failureSnapshots=a),e}function S(){return l().trace!=="off"}function v(){return l().failureSnapshots==="on"&&S()}function h(e){const t=(0,y.resolveWorkspaceIdentity)(e);return n.default.join((0,u.productStorageRoot)(),"trace","workspaces",t.workspaceId,"runs",D())}function _(){return n.default.join((0,u.productStorageRoot)(),"feedback","feedback.jsonl")}function I(e){const t=(0,y.resolveWorkspaceIdentity)(e);return n.default.join((0,u.productStorageRoot)(),"failure-snapshots","workspaces",t.workspaceId)}function R(e){const t=l(),r=(0,u.productStorageRoot)(),o=h(e),a=_(),i=process.env[s.CLI_ENV.metricsDir]?.trim()?n.default.resolve(process.env[s.CLI_ENV.metricsDir]):n.default.join(r,"metrics"),f=I(e);return{ok:!0,command:"observability",action:"status",productStorageRoot:r,config:t,effective:{metrics:t.metrics,mutationImpactMetrics:t.mutationImpactMetrics,trace:t.trace,failureSnapshots:t.failureSnapshots,feedback:t.feedback},storage:{metricsDir:i,metricsFile:n.default.join(i,"metrics.jsonl"),traceDir:o,feedbackFile:a,failureSnapshotsRoot:f},counters:{metricsRows:k(n.default.join(i,"metrics.jsonl")),metricsBytes:p(n.default.join(i,"metrics.jsonl")),traceBytes:m(n.default.dirname(n.default.dirname(o))),feedbackRows:k(a),feedbackBytes:p(a),failureSnapshotBytes:m(f),failureSnapshotCount:g(f)},cleanup:{enforced:!1,dryRunAvailable:!0,note:"Retention config is visible but automatic cleanup is not enforced yet."}}}function D(){return`run_${new Date().toISOString().replace(/[:.]/g,"-")}_${process.pid}`}function d(e){if(e===void 0)return null;const t=e.trim().toLowerCase();return["0","false","off","disabled","no"].includes(t)?"off":["1","true","on","enabled","yes"].includes(t)?"on":null}function E(e){if(e===void 0)return null;const t=e.trim().toLowerCase();return["0","false","off","disabled","no"].includes(t)?"off":t==="light"?"light":["1","true","on","enabled","yes","full"].includes(t)?"full":null}function p(e){try{return c.default.statSync(e).size}catch{return 0}}function k(e){try{return c.default.readFileSync(e,"utf8").split(/\r?\n/).filter(Boolean).length}catch{return 0}}function m(e){let t=0;try{for(const r of c.default.readdirSync(e,{withFileTypes:!0})){const o=n.default.join(e,r.name);r.isDirectory()?t+=m(o):r.isFile()&&(t+=p(o))}}catch{return 0}return t}function g(e){let t=0;try{for(const r of c.default.readdirSync(e,{withFileTypes:!0}))r.isDirectory()&&(t+=1+g(n.default.join(e,r.name)))}catch{return 0}return t}
1
+ "use strict";var b=exports&&exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_OBSERVABILITY_CONFIG=void 0,exports.resolveObservabilityConfig=l,exports.traceEnabled=h,exports.failureSnapshotsEnabled=g,exports.defaultTraceWorkspaceDir=S,exports.feedbackFilePath=_,exports.failureSnapshotsRoot=k,exports.observabilityStatus=E;const c=b(require("node:fs")),n=b(require("node:path")),s=require("../config/env-vars"),u=require("../config/product-storage"),y=require("./context");exports.DEFAULT_OBSERVABILITY_CONFIG={metrics:"on",mutationImpactMetrics:"on",trace:"full",failureSnapshots:"on",feedback:"on",retention:{metrics:{maxAgeDays:30,maxTotalMb:512,maxPerWorkspaceMb:128},trace:{maxAgeDays:14,maxTotalMb:512,maxPerWorkspaceMb:128},failureSnapshots:{maxAgeDays:14,maxTotalMb:512,maxPerWorkspaceMb:128,maxFileMb:2,maxFilesPerFailure:5},feedback:{cleanup:"dangerOnly"}}};function l(){const e=JSON.parse(JSON.stringify(exports.DEFAULT_OBSERVABILITY_CONFIG)),t=d(process.env[s.CLI_ENV.metrics]);t&&(e.metrics=t);const r=d(process.env[s.CLI_ENV.mutationImpactMetrics]);r&&(e.mutationImpactMetrics=r);const o=R(process.env[s.CLI_ENV.trace]);o&&(e.trace=o);const a=d(process.env[s.CLI_ENV.failureSnapshots]);return a&&(e.failureSnapshots=a),e}function h(){return l().trace!=="off"}function g(){return l().failureSnapshots==="on"&&h()}function S(e){const t=(0,y.resolveWorkspaceIdentity)(e);return n.default.join((0,u.productStorageRoot)(),"trace","workspaces",t.workspaceId)}function _(){return n.default.join((0,u.productStorageRoot)(),"feedback","feedback.jsonl")}function k(e){const t=(0,y.resolveWorkspaceIdentity)(e);return n.default.join((0,u.productStorageRoot)(),"failure-snapshots","workspaces",t.workspaceId)}function E(e){const t=l(),r=(0,u.productStorageRoot)(),o=S(e),a=_(),i=process.env[s.CLI_ENV.metricsDir]?.trim()?n.default.resolve(process.env[s.CLI_ENV.metricsDir]):n.default.join(r,"metrics"),f=k(e);return{ok:!0,command:"observability",action:"status",productStorageRoot:r,config:t,effective:{metrics:t.metrics,mutationImpactMetrics:t.mutationImpactMetrics,trace:t.trace,failureSnapshots:t.failureSnapshots,feedback:t.feedback},storage:{metricsDir:i,metricsFile:n.default.join(i,"metrics.jsonl"),traceDir:o,feedbackFile:a,failureSnapshotsRoot:f},counters:{metricsRows:v(n.default.join(i,"metrics.jsonl")),metricsBytes:p(n.default.join(i,"metrics.jsonl")),traceBytes:m(n.default.dirname(n.default.dirname(o))),feedbackRows:v(a),feedbackBytes:p(a),failureSnapshotBytes:m(f),failureSnapshotCount:I(f)},cleanup:{enforced:!1,dryRunAvailable:!0,note:"Retention config is visible but automatic cleanup is not enforced yet."}}}function d(e){if(e===void 0)return null;const t=e.trim().toLowerCase();return["0","false","off","disabled","no"].includes(t)?"off":["1","true","on","enabled","yes"].includes(t)?"on":null}function R(e){if(e===void 0)return null;const t=e.trim().toLowerCase();return["0","false","off","disabled","no"].includes(t)?"off":t==="light"?"light":["1","true","on","enabled","yes","full"].includes(t)?"full":null}function p(e){try{return c.default.statSync(e).size}catch{return 0}}function v(e){try{return c.default.readFileSync(e,"utf8").split(/\r?\n/).filter(Boolean).length}catch{return 0}}function m(e){let t=0;try{for(const r of c.default.readdirSync(e,{withFileTypes:!0})){const o=n.default.join(e,r.name);r.isDirectory()?t+=m(o):r.isFile()&&(t+=p(o))}}catch{return 0}return t}function I(e){let t=0;try{for(const r of c.default.readdirSync(e,{withFileTypes:!0}))r.isDirectory()&&(t+=1+I(n.default.join(e,r.name)))}catch{return 0}return t}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.readStdinJson=f,exports.readStdinPayload=p,exports.readStdinPayloadWithSource=S,exports.parseStdinPayload=s,exports.parseInputPayloadWithSource=d,exports.stripStdinFormatFlags=y;const i=require("../dsl/aib-dsl"),m=require("../config/env-vars"),a=require("../shared/errors");async function f(e){const r=await u();return s(r,e??{command:"",restArgs:[]})}async function p(e){const r=await u();return s(r,e)}async function S(e){const r=await u();return d(r,e)}function s(e,r){return d(e,r).payload}function d(e,r){const t=e.replace(/^\uFEFF/,"").trim();if(!t)throw new a.CliError("EMPTY_STDIN","Expected JSON or DSL payload on stdin.");if(D(r.format)==="dsl"){const c=l(t,r);return{payload:c.payload,source:{format:"dsl",text:t,command:c.command}}}if(h(t))return{payload:w(t),source:{format:"json",text:t}};const o=l(t,r);return{payload:o.payload,source:{format:"dsl",text:t,command:o.command}}}function y(e){const r=[];let t;for(let n=0;n<e.length;n+=1){const o=e[n];if(o==="--dsl"||o==="--force-dsl"){t="dsl";continue}if(o==="--stdin-format"){const c=e[n+1];if(c!=="auto"&&c!=="dsl")throw new a.CliError("INVALID_STDIN_FORMAT","Expected --stdin-format to be auto or dsl.");t=c,n+=1;continue}o!==void 0&&r.push(o)}return{restArgs:r,...t!==void 0?{format:t}:{}}}function D(e){return e!==void 0?e:process.env[m.CLI_ENV.forceDsl]==="1"?"dsl":"auto"}async function u(){const e=[];for await(const r of process.stdin)e.push(Buffer.isBuffer(r)?r:Buffer.from(String(r)));return Buffer.concat(e).toString("utf8")}function h(e){const r=e[0];return r==="{"||r==="["}function w(e){try{const r=JSON.parse(e);if(!r||typeof r!="object"||Array.isArray(r))throw new a.CliError("INVALID_STDIN_JSON","Expected a JSON object on stdin.");return r}catch(r){throw r instanceof a.CliError?r:new a.CliError("INVALID_STDIN_JSON","Failed to parse JSON from stdin.",{cause:r instanceof Error?r.message:String(r)})}}function l(e,r){const t=I(r.command,r.restArgs);if(!t)throw new a.CliError("STDIN_DSL_UNSUPPORTED",`${r.command||"This command"} does not support DSL stdin. Use JSON for this command.`);let n;try{if(t==="inspect")try{n=(0,i.compileAibDsl)(e)}catch{n=(0,i.compileAibDsl)(e,{tolerantInspect:!0})}else n=(0,i.compileAibDsl)(e)}catch(o){throw new a.CliError("INVALID_STDIN_DSL","Failed to compile DSL from stdin.",{cause:o instanceof Error?o.message:String(o)})}if(n.command!==t&&!_(t,n.command))throw new a.CliError("STDIN_DSL_COMMAND_MISMATCH",`DSL compiles to ${n.command}, but current command expects ${t}.`);return n}function _(e,r){return e==="move.toFile"&&r==="refactor.batch"}function I(e,r){switch(e){case"inspect":return"inspect";case"rename":return"rename";case"modulePlan":return"modulePlan";case"move":return r[0]==="toFile"?"move.toFile":null;case"refactor":return r[0]==="batch"?"refactor.batch":null;case"imports":return r[0]==="normalize"?"imports.normalize":null;case"view":return"view";default:return null}}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.readStdinJson=f,exports.readStdinPayload=p,exports.readStdinPayloadWithSource=S,exports.parseStdinPayload=d,exports.parseInputPayloadWithSource=u,exports.stripStdinFormatFlags=w,exports.readRawStdinText=c;const s=require("../dsl/aib-dsl"),m=require("../config/env-vars"),a=require("../shared/errors");async function f(e){const r=await c();return d(r,e??{command:"",restArgs:[]})}async function p(e){const r=await c();return d(r,e)}async function S(e){const r=await c();return u(r,e)}function d(e,r){return u(e,r).payload}function u(e,r){const t=e.replace(/^\uFEFF/,"").trim();if(!t)throw new a.CliError("EMPTY_STDIN","Expected JSON or DSL payload on stdin.");if(y(r.format)==="dsl"){const i=l(t,r);return{payload:i.payload,source:{format:"dsl",text:t,command:i.command}}}if(D(t))return{payload:h(t),source:{format:"json",text:t}};const o=l(t,r);return{payload:o.payload,source:{format:"dsl",text:t,command:o.command}}}function w(e){const r=[];let t;for(let n=0;n<e.length;n+=1){const o=e[n];if(o==="--dsl"||o==="--force-dsl"){t="dsl";continue}if(o==="--stdin-format"){const i=e[n+1];if(i!=="auto"&&i!=="dsl")throw new a.CliError("INVALID_STDIN_FORMAT","Expected --stdin-format to be auto or dsl.");t=i,n+=1;continue}o!==void 0&&r.push(o)}return{restArgs:r,...t!==void 0?{format:t}:{}}}function y(e){return e!==void 0?e:process.env[m.CLI_ENV.forceDsl]==="1"?"dsl":"auto"}async function c(){const e=[];for await(const r of process.stdin)e.push(Buffer.isBuffer(r)?r:Buffer.from(String(r)));return Buffer.concat(e).toString("utf8")}function D(e){const r=e[0];return r==="{"||r==="["}function h(e){try{const r=JSON.parse(e);if(!r||typeof r!="object"||Array.isArray(r))throw new a.CliError("INVALID_STDIN_JSON","Expected a JSON object on stdin.");return r}catch(r){throw r instanceof a.CliError?r:new a.CliError("INVALID_STDIN_JSON","Failed to parse JSON from stdin.",{cause:r instanceof Error?r.message:String(r)})}}function l(e,r){const t=I(r.command,r.restArgs);if(!t)throw new a.CliError("STDIN_DSL_UNSUPPORTED",`${r.command||"This command"} does not support DSL stdin. Use JSON for this command.`);let n;try{if(t==="inspect")try{n=(0,s.compileAibDsl)(e)}catch{n=(0,s.compileAibDsl)(e,{tolerantInspect:!0})}else n=(0,s.compileAibDsl)(e)}catch(o){throw new a.CliError("INVALID_STDIN_DSL","Failed to compile DSL from stdin.",{cause:o instanceof Error?o.message:String(o)})}if(n.command!==t&&!_(t,n.command))throw new a.CliError("STDIN_DSL_COMMAND_MISMATCH",`DSL compiles to ${n.command}, but current command expects ${t}.`);return n}function _(e,r){return e==="move.toFile"&&r==="refactor.batch"}function I(e,r){switch(e){case"inspect":return"inspect";case"rename":return"rename";case"modulePlan":return"modulePlan";case"move":return r[0]==="toFile"?"move.toFile":null;case"refactor":return r[0]==="batch"?"refactor.batch":null;case"imports":return r[0]==="normalize"?"imports.normalize":null;case"view":return"view";default:return null}}
@@ -1 +1 @@
1
- "use strict";var l=exports&&exports.__createBinding||(Object.create?(function(e,n,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(n,t);(!r||("get"in r?!n.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return n[t]}}),Object.defineProperty(e,i,r)}):(function(e,n,t,i){i===void 0&&(i=t),e[i]=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}),c=exports&&exports.__importStar||(function(){var e=function(n){return e=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},e(n)};return function(n){if(n&&n.__esModule)return n;var t={};if(n!=null)for(var i=e(n),r=0;r<i.length;r++)i[r]!=="default"&&l(t,n,i[r]);return d(t,n),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.ensureManagedRuntimeProvisioned=p,exports.isManagedRuntimeComplete=f;const o=c(require("node:fs")),u=c(require("node:path")),m=require("node:child_process");function p(e){if(f(e))return;const n=u.join(e,"scripts","provision-runtime.cjs");o.existsSync(n)&&(0,m.spawnSync)(process.execPath,[n,"--quiet"],{cwd:e,env:process.env,encoding:"utf8",stdio:["ignore","pipe","pipe"],windowsHide:!0,timeout:6e5})}function f(e){return o.existsSync(u.join(e,"runtimes","code-server","node_modules","code-server","out","node","entry.js"))&&!!w(e)&&!!h(e)}function h(e){const n=_();if(!n)return null;const t=process.platform==="win32"?u.join(e,"runtimes","node",n,"node.exe"):u.join(e,"runtimes","node",n,"bin","node");return o.existsSync(t)?t:null}function _(){const e=process.arch;return process.platform==="win32"&&e==="x64"?"win-x64":process.platform==="linux"&&e==="x64"?"linux-x64":process.platform==="linux"&&e==="arm64"?"linux-arm64":process.platform==="darwin"&&e==="x64"?"darwin-x64":process.platform==="darwin"&&e==="arm64"?"darwin-arm64":null}function w(e){const n=[u.join(e,"runtimes","browser"),u.join(e,"runtimes","chrome"),u.join(e,"runtimes","chromium")],t=process.platform==="win32"?new Set(["chrome.exe","chromium.exe","msedge.exe"]):new Set(["chrome","chromium"]);for(const i of n){const r=a(i,t,5);if(r)return r}return null}function a(e,n,t){if(!o.existsSync(e)||t<0)return null;let i;try{i=o.readdirSync(e,{withFileTypes:!0})}catch{return null}for(const r of i){const s=u.join(e,r.name);if(r.isFile()&&n.has(r.name))return s}for(const r of i){if(!r.isDirectory())continue;const s=a(u.join(e,r.name),n,t-1);if(s)return s}return null}
1
+ "use strict";var d=exports&&exports.__createBinding||(Object.create?(function(e,n,i,r){r===void 0&&(r=i);var t=Object.getOwnPropertyDescriptor(n,i);(!t||("get"in t?!n.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:function(){return n[i]}}),Object.defineProperty(e,r,t)}):(function(e,n,i,r){r===void 0&&(r=i),e[r]=n[i]})),p=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(i){var r=[];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(r[r.length]=t);return r},e(n)};return function(n){if(n&&n.__esModule)return n;var i={};if(n!=null)for(var r=e(n),t=0;t<r.length;t++)r[t]!=="default"&&d(i,n,r[t]);return p(i,n),i}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.ensureManagedRuntimeProvisioned=h,exports.isManagedRuntimeComplete=c,exports.managedRuntimePlatformStatus=f,exports.runtimePlatformKey=l;const u=a(require("node:fs")),o=a(require("node:path")),y=require("node:child_process");function h(e){if(c(e))return;const n=o.join(e,"scripts","provision-runtime.cjs");u.existsSync(n)&&(0,y.spawnSync)(process.execPath,[n,"--quiet"],{cwd:e,env:process.env,encoding:"utf8",stdio:["ignore","pipe","pipe"],windowsHide:!0,timeout:6e5})}function c(e){return u.existsSync(o.join(e,"runtimes","code-server","node_modules","code-server","out","node","entry.js"))&&!!w(e)&&!!P(e)&&f(e).ok}function f(e){const n=o.join(e,"runtimes",".aib-runtime-platform.json"),i=l();if(!u.existsSync(n))return{ok:!0,markerPath:n,expectedPlatformKey:i,actualPlatformKey:null,reason:"missing"};try{const r=JSON.parse(u.readFileSync(n,"utf8")),t=typeof r.platformKey=="string"?r.platformKey:typeof r.platform=="string"&&typeof r.arch=="string"?`${r.platform}-${r.arch}`:null;return{ok:t===i,markerPath:n,expectedPlatformKey:i,actualPlatformKey:t,reason:t===i?"ok":"mismatch"}}catch{return{ok:!1,markerPath:n,expectedPlatformKey:i,actualPlatformKey:null,reason:"invalid"}}}function l(){return`${process.platform}-${process.arch}`}function P(e){const n=_();if(!n)return null;const i=process.platform==="win32"?o.join(e,"runtimes","node",n,"node.exe"):o.join(e,"runtimes","node",n,"bin","node");return u.existsSync(i)?i:null}function _(){const e=process.arch;return process.platform==="win32"&&e==="x64"?"win-x64":process.platform==="linux"&&e==="x64"?"linux-x64":process.platform==="linux"&&e==="arm64"?"linux-arm64":process.platform==="darwin"&&e==="x64"?"darwin-x64":process.platform==="darwin"&&e==="arm64"?"darwin-arm64":null}function w(e){const n=[o.join(e,"runtimes","browser"),o.join(e,"runtimes","chrome"),o.join(e,"runtimes","chromium")],i=process.platform==="win32"?new Set(["chrome.exe","chromium.exe","msedge.exe"]):new Set(["chrome","chromium"]);for(const r of n){const t=m(r,i,5);if(t)return t}return null}function m(e,n,i){if(!u.existsSync(e)||i<0)return null;let r;try{r=u.readdirSync(e,{withFileTypes:!0})}catch{return null}for(const t of r){const s=o.join(e,t.name);if(t.isFile()&&n.has(t.name))return s}for(const t of r){if(!t.isDirectory())continue;const s=m(o.join(e,t.name),n,i-1);if(s)return s}return null}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runCommand=z;const P=require("../commands/list-instances"),b=require("../commands/ping"),k=require("../commands/runtime-info"),S=require("../commands/print-config"),R=require("../commands/init-skill-usage"),x=require("../commands/init-workspace"),A=require("../commands/inspect"),c=require("../commands/captured-input"),E=require("../commands/module-plan-command"),D=require("../commands/rename-command"),N=require("../commands/move-command"),O=require("../commands/refactor-command"),U=require("../commands/imports-command"),W=require("../commands/execution-command"),T=require("../commands/observability-command"),M=require("../commands/help-command"),F=require("../commands/generate-docs-command"),j=require("../commands/feedback-command"),Q=require("../commands/doctor"),G=require("../commands/diagnostics-command"),H=require("../commands/session-workspace"),y=require("../commands/session-workspace"),I=require("../config/path-aliases"),J=require("../commands/runtime-command"),K=require("../commands/sync-command"),L=require("../commands/reveal-command"),p=require("../client/transport-options"),m=require("../shared/errors"),l=require("./input-source"),$=require("../config/workspace-state");async function z(n){return(0,y.runWithSessionOverride)(n.sessionId,()=>B(n))}async function B(n){const{command:o,restArgs:d,cwd:r,instanceId:_,metricsSpans:C}=n,u=V(o)?(0,$.ensureWorkspaceState)(r):null,g=u?(0,y.readSessionPathAliasOverrides)(r):{},f={...u?.pathAliases??{},...g},e=(0,I.expandPathAliasesInArgs)(r,d,f),a=await(0,l.resolveCommandInputSource)({command:o,cwd:r,restArgs:e,...n.stdinPayload!==void 0?{preResolvedPayload:(0,I.expandPathAliasesInJson)(r,n.stdinPayload,f)}:{},...n.stdinInputSource!==void 0?{preResolvedSource:n.stdinInputSource}:{}}),s=a.payload,t={};_!==void 0&&(t.explicitInstanceId=_),n.autoStartIde!==void 0&&(t.autoStartIde=n.autoStartIde),n.transport!==void 0&&(t.transport=n.transport),n.metricsEnabled===!0&&(t.metricsEnabled=!0),u&&(t.importRules=u.importRules,t.mutationComments=u.mutationComments);const w=(0,p.getPreferredTransport)();n.transport&&(0,p.setPreferredTransport)(n.transport);try{switch(o){case"doctor":return(0,Q.runDoctor)({cwd:r,runtime:e.includes("--runtime"),verbose:e.includes("--verbose"),json:e.includes("--json")});case"diagnostics":return await(0,G.runDiagnosticsCommand)(e),{ok:!0,command:"diagnostics"};case"session":return(0,H.runSessionWorkspaceCommand)(r,e,s);case"init":return(0,x.runInitWorkspace)(r,d);case"help":return(0,M.runHelpCommand)(e);case"generate-docs":return(0,F.runGenerateDocsCommand)(r,d);case"sync":return(0,K.runSyncCommand)(r,e);case"reveal":return(0,L.runRevealCommand)(r,e);case"observability":return(0,T.runObservabilityCommand)(r,e);case"feedback":case"note":return(0,j.runFeedbackCommand)(r,d,o);case"runtime":return(0,J.runRuntimeCommand)(r,e);case"imports":return(0,c.attachCapturedInput)(r,"imports",s,await(0,U.runImportsCommand)(r,e,s,t,C),a.source);case"listInstances":return(0,P.runListInstances)();case"ping":return(0,b.runPing)(r,t);case"runtimeInfo":return(0,k.runRuntimeInfo)(r,t);case"printConfig":return(0,S.runPrintConfig)(r,t);case"initSkillUsage":case"init-skill-usage":{const i=e.findIndex(h=>h==="--cli-name"),q=i>=0&&e[i+1]?e[i+1]:"aib",v={cwd:r,cliName:q??"aib"};return v.resolveOptions=t,(0,R.runInitSkillUsage)(v)}case"inspect":return(0,c.attachCapturedInput)(r,e[0]==="graph"?"graph":"inspect",s,await(0,A.runInspect)(r,e,s,t),a.source);case"modulePlan":return(0,c.attachCapturedInput)(r,"modulePlan",s,await(0,E.runModulePlanCommand)(r,e,s,t,n.modulePlanExecutionId?{executionId:n.modulePlanExecutionId}:{}),a.source);case"execution":return(0,W.runExecutionCommand)(r,e);case"rename":{if(!(e[0]==="apply"&&typeof e[1]=="string"&&!e[1].startsWith("--"))&&(0,l.commandRequiresPayload)(o,e,a))throw new m.CliError("STDIN_REQUIRED","rename preview/apply/validate expects a payload on stdin or --from, except preview-id apply/help.");return(0,c.attachCapturedInput)(r,"rename",s,await(0,D.runRenameCommand)(r,e,s,t),a.source)}case"move":{if(!(e[0]==="toFile"&&e[1]==="apply"&&typeof e[2]=="string"&&!e[2].startsWith("--"))&&(0,l.commandRequiresPayload)(o,e,a))throw new m.CliError("STDIN_REQUIRED","move toFile preview/apply/validate expects a payload on stdin or --from.");return(0,c.attachCapturedInput)(r,"move",s,await(0,N.runMoveCommand)(r,e,s,t),a.source)}case"refactor":{if(!(e[0]==="batch"&&e[1]==="apply"&&typeof e[2]=="string"&&!e[2].startsWith("--"))&&(0,l.commandRequiresPayload)(o,e,a))throw new m.CliError("STDIN_REQUIRED","refactor batch preview/apply/validate expects a payload on stdin or --from, except preview-id apply/help.");return(0,c.attachCapturedInput)(r,"refactor",s,await(0,O.runRefactorCommand)(r,e,s,t),a.source)}default:throw new m.CliError("UNKNOWN_COMMAND",`Unknown command: ${o}`,{availableCommands:["doctor","diagnostics","listInstances","ping","runtimeInfo","printConfig","init-skill-usage","init","help","generate-docs","sync","reveal","inspect","imports","execution","move","rename","refactor","modulePlan","session","runtime","trace","observability","feedback","note"]})}}finally{(0,p.setPreferredTransport)(w)}}function V(n){return n!=="init"&&n!=="help"&&n!=="generate-docs"&&n!=="observability"&&n!=="feedback"&&n!=="note"&&n!=="runtime"&&n!=="diagnostics"&&n!=="doctor"&&n!=="reveal"}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runCommand=z;const P=require("../commands/list-instances"),b=require("../commands/ping"),k=require("../commands/runtime-info"),S=require("../commands/print-config"),R=require("../commands/init-skill-usage"),x=require("../commands/init-workspace"),A=require("../commands/inspect"),c=require("../commands/captured-input"),E=require("../commands/module-plan-command"),D=require("../commands/rename-command"),N=require("../commands/move-command"),O=require("../commands/refactor-command"),U=require("../commands/imports-command"),W=require("../commands/execution-command"),T=require("../commands/observability-command"),M=require("../commands/help-command"),F=require("../commands/generate-docs-command"),j=require("../commands/feedback-command"),Q=require("../commands/doctor"),G=require("../commands/diagnostics-command"),H=require("../commands/session-workspace"),y=require("../commands/session-workspace"),I=require("../config/path-aliases"),J=require("../commands/runtime-command"),K=require("../commands/sync-command"),L=require("../commands/reveal-command"),p=require("../client/transport-options"),l=require("../shared/errors"),m=require("./input-source"),$=require("../config/workspace-state");async function z(n){return(0,y.runWithSessionOverride)(n.sessionId,()=>B(n))}async function B(n){const{command:o,restArgs:d,cwd:r,instanceId:_,metricsSpans:g}=n,u=V(o)?(0,$.ensureWorkspaceState)(r):null,C=u?(0,y.readSessionPathAliasOverrides)(r):{},f={...u?.pathAliases??{},...C},e=(0,I.expandPathAliasesInArgs)(r,d,f),a=await(0,m.resolveCommandInputSource)({command:o,cwd:r,restArgs:e,...n.stdinPayload!==void 0?{preResolvedPayload:(0,I.expandPathAliasesInJson)(r,n.stdinPayload,f)}:{},...n.stdinInputSource!==void 0?{preResolvedSource:n.stdinInputSource}:{}}),s=a.payload,t={};_!==void 0&&(t.explicitInstanceId=_),n.autoStartIde!==void 0&&(t.autoStartIde=n.autoStartIde),n.transport!==void 0&&(t.transport=n.transport),n.metricsEnabled===!0&&(t.metricsEnabled=!0),u&&(t.importRules=u.importRules,t.mutationComments=u.mutationComments);const w=(0,p.getPreferredTransport)();n.transport&&(0,p.setPreferredTransport)(n.transport);try{switch(o){case"doctor":return(0,Q.runDoctor)({cwd:r,runtime:e.includes("--runtime"),verbose:e.includes("--verbose"),json:e.includes("--json"),progress:e.includes("--progress")});case"diagnostics":return await(0,G.runDiagnosticsCommand)(e),{ok:!0,command:"diagnostics"};case"session":return(0,H.runSessionWorkspaceCommand)(r,e,s);case"init":return(0,x.runInitWorkspace)(r,d);case"help":return(0,M.runHelpCommand)(e);case"generate-docs":return(0,F.runGenerateDocsCommand)(r,d);case"sync":return(0,K.runSyncCommand)(r,e);case"reveal":return(0,L.runRevealCommand)(r,e);case"observability":return(0,T.runObservabilityCommand)(r,e);case"feedback":case"note":return(0,j.runFeedbackCommand)(r,d,o);case"runtime":return(0,J.runRuntimeCommand)(r,e);case"imports":return(0,c.attachCapturedInput)(r,"imports",s,await(0,U.runImportsCommand)(r,e,s,t,g),a.source);case"listInstances":return(0,P.runListInstances)();case"ping":return(0,b.runPing)(r,t);case"runtimeInfo":return(0,k.runRuntimeInfo)(r,t);case"printConfig":return(0,S.runPrintConfig)(r,t);case"initSkillUsage":case"init-skill-usage":{const i=e.findIndex(h=>h==="--cli-name"),q=i>=0&&e[i+1]?e[i+1]:"aib",v={cwd:r,cliName:q??"aib"};return v.resolveOptions=t,(0,R.runInitSkillUsage)(v)}case"inspect":return(0,c.attachCapturedInput)(r,e[0]==="graph"?"graph":"inspect",s,await(0,A.runInspect)(r,e,s,t),a.source);case"modulePlan":return(0,c.attachCapturedInput)(r,"modulePlan",s,await(0,E.runModulePlanCommand)(r,e,s,t,n.modulePlanExecutionId?{executionId:n.modulePlanExecutionId}:{}),a.source);case"execution":return(0,W.runExecutionCommand)(r,e);case"rename":{if(!(e[0]==="apply"&&typeof e[1]=="string"&&!e[1].startsWith("--"))&&(0,m.commandRequiresPayload)(o,e,a))throw new l.CliError("STDIN_REQUIRED","rename preview/apply/validate expects a payload on stdin or --from, except preview-id apply/help.");return(0,c.attachCapturedInput)(r,"rename",s,await(0,D.runRenameCommand)(r,e,s,t),a.source)}case"move":{if(!(e[0]==="toFile"&&e[1]==="apply"&&typeof e[2]=="string"&&!e[2].startsWith("--"))&&(0,m.commandRequiresPayload)(o,e,a))throw new l.CliError("STDIN_REQUIRED","move toFile preview/apply/validate expects a payload on stdin or --from.");return(0,c.attachCapturedInput)(r,"move",s,await(0,N.runMoveCommand)(r,e,s,t),a.source)}case"refactor":{if(!(e[0]==="batch"&&e[1]==="apply"&&typeof e[2]=="string"&&!e[2].startsWith("--"))&&(0,m.commandRequiresPayload)(o,e,a))throw new l.CliError("STDIN_REQUIRED","refactor batch preview/apply/validate expects a payload on stdin or --from, except preview-id apply/help.");return(0,c.attachCapturedInput)(r,"refactor",s,await(0,O.runRefactorCommand)(r,e,s,t),a.source)}default:throw new l.CliError("UNKNOWN_COMMAND",`Unknown command: ${o}`,{availableCommands:["doctor","diagnostics","listInstances","ping","runtimeInfo","printConfig","init-skill-usage","init","help","generate-docs","sync","reveal","inspect","imports","execution","move","rename","refactor","modulePlan","session","runtime","trace","observability","feedback","note"]})}}finally{(0,p.setPreferredTransport)(w)}}function V(n){return n!=="init"&&n!=="help"&&n!=="generate-docs"&&n!=="observability"&&n!=="feedback"&&n!=="note"&&n!=="runtime"&&n!=="diagnostics"&&n!=="doctor"&&n!=="reveal"}
@@ -1,6 +1,8 @@
1
- "use strict";var ee=exports&&exports.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=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,r,s)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),te=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),H=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),s=0;s<r.length;s++)r[s]!=="default"&&ee(n,t,r[s]);return te(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.CliSessionServer=void 0,exports.runSessionServerCli=Ce;const x=H(require("node:fs")),ne=H(require("node:http")),re=require("../shared/agent-text"),oe=require("../shared/event-loop"),g=require("../shared/errors"),P=require("../shared/metrics"),se=require("../shared/stdout"),U=require("../shared/presentation"),ie=require("../tracing/trace"),V=require("../runtime/run-command"),ae=require("../config/resolve-command-alias"),D=require("../config/auto-start-ide"),a=require("../config/env-vars"),ue=require("../client/transport-options"),N=require("./paths"),O=require("../commands/module-plan-cache"),de=require("../commands/execution-command"),R=require("../payloads/read-stdin-json"),A=require("../commands/module-plan-timeout"),d=require("../diagnostics/module-plan-timeline"),G=require("../commands/mutation-execution-cache"),ce=!1,le=!1;function me(e){x.mkdirSync((0,N.getSessionDir)(),{recursive:!0}),x.writeFileSync((0,N.getSessionInfoPath)(),JSON.stringify(e,null,2)),x.writeFileSync((0,N.getSessionUrlPath)(),`${e.url}
1
+ "use strict";var ee=exports&&exports.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=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,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),te=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),H=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&ee(n,t,r[i]);return te(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.CliSessionServer=void 0,exports.runSessionServerCli=Ce;const x=H(require("node:fs")),ne=H(require("node:http")),re=require("../shared/agent-text"),oe=require("../shared/event-loop"),g=require("../shared/errors"),S=require("../shared/metrics"),se=require("../shared/stdout"),U=require("../shared/presentation"),ie=require("../tracing/trace"),V=require("../runtime/run-command"),ae=require("../config/resolve-command-alias"),D=require("../config/auto-start-ide"),a=require("../config/env-vars"),ue=require("../client/transport-options"),N=require("./paths"),O=require("../commands/module-plan-cache"),de=require("../commands/execution-command"),R=require("../payloads/read-stdin-json"),A=require("../commands/module-plan-timeout"),d=require("../diagnostics/module-plan-timeline"),G=require("../commands/mutation-execution-cache"),ce=!1,le=!1;function me(e){x.mkdirSync((0,N.getSessionDir)(),{recursive:!0}),x.writeFileSync((0,N.getSessionInfoPath)(),JSON.stringify(e,null,2)),x.writeFileSync((0,N.getSessionUrlPath)(),`${e.url}
2
2
  `)}function fe(){x.rmSync((0,N.getSessionInfoPath)(),{force:!0}),x.rmSync((0,N.getSessionUrlPath)(),{force:!0})}async function k(e){const t=[];for await(const n of e)t.push(Buffer.isBuffer(n)?n:Buffer.from(String(n)));return Buffer.concat(t).toString("utf8")}function E(e,t,n){const r=JSON.stringify(n,null,2);e.writeHead(t,{"content-type":"application/json; charset=utf-8","content-length":Buffer.byteLength(r)}),e.end(r)}function C(e,t){if(e.destroyed||e.writableEnded)return;e.write(`${JSON.stringify(t)}
3
- `);const n=e;typeof n.flush=="function"&&n.flush()}function pe(e,t,n,r){if(e!==null)return(0,R.parseStdinPayload)(e,{command:t,restArgs:n,...r!==void 0?{format:r}:{}})}function Pe(e,t,n,r){if(e!==null)return(0,R.parseInputPayloadWithSource)(e,{command:t,restArgs:n,...r!==void 0?{format:r}:{}}).source}function Se(e){if(e==null)return;if(!e||typeof e!="object"||Array.isArray(e))throw new g.CliError("INVALID_SESSION_REQUEST","Invalid stdin input source.");const t=e;if(t.format!=="json"&&t.format!=="dsl"||typeof t.text!="string")throw new g.CliError("INVALID_SESSION_REQUEST","Invalid stdin input source.");return{format:t.format,text:t.text}}function J(e){if(e==null||e==="")return;const t=(0,ue.parseExtensionTransport)(e);if(!t)throw new g.CliError("INVALID_TRANSPORT","Expected transport to be either http or websocket.");return t}function Ie(e){if(!e||typeof e!="object"||Array.isArray(e))return{};const t=new Set([a.CLI_ENV.managedHostScript,a.CLI_ENV.managedHostKind,a.CLI_ENV.managedHostRunDir,a.CLI_ENV.codeServerPath,a.CLI_ENV.extensionVsix,a.CLI_ENV.ideCommand,a.CLI_ENV.chromePath,a.CLI_ENV.managedHostWaitMs,a.CLI_ENV.workspaceRoot,a.CLI_ENV.disableWatchers,a.CLI_ENV.trace,a.CLI_ENV.traceDir,a.CLI_ENV.failureSnapshots,a.CLI_ENV.productStorageDir,a.CLI_ENV.metrics,a.CLI_ENV.metricsDir,a.CLI_ENV.metricsTag,a.CLI_ENV.mutationImpactMetrics,a.CLI_ENV.mutationImpactStream,a.CLI_ENV.testMoveToFileFailEntity,a.CLI_ENV.testPostMutationCyclesDelayMs,a.CLI_ENV.testRefactorBatchDelayMs,a.CLI_ENV.testRenameDelayMs,a.CLI_ENV.modulePlanSyncWaitMs,a.CLI_ENV.refactorBatchSyncWaitMs,a.CLI_ENV.renameSyncWaitMs,a.CLI_ENV.modulePlanDebugTimeline]),n={};for(const[r,s]of Object.entries(e))t.has(r)&&typeof s=="string"&&(n[r]=s);return n}async function F(e,t){const n=Object.entries(e);if(n.length===0)return t();const r=new Map;for(const[s,i]of n)r.set(s,process.env[s]),process.env[s]=i;try{return await t()}finally{for(const[s,i]of r)i===void 0?delete process.env[s]:process.env[s]=i}}async function W(e,t,n){return(0,d.recordModulePlanTimeline)(e.cwd,e.modulePlanExecutionId,"session.deadline.wait.start",{deadlineMs:n}),(0,G.waitForMutationDeadline)(t.then(r=>((0,d.recordModulePlanTimeline)(e.cwd,e.modulePlanExecutionId,"session.deadline.runPromise.resolved"),r)),n,()=>(0,d.recordModulePlanTimeline)(e.cwd,e.modulePlanExecutionId,"session.deadline.timer.fired",{deadlineMs:n}))}function j(e){if(e.command!=="modulePlan")return 0;const t=e.restArgs[0]??"";return t!=="execute"&&t!=="apply"?0:(0,G.readMutationSyncWaitMs)(process.env[a.CLI_ENV.modulePlanSyncWaitMs],12e4)}async function B(e,t){const n=e.modulePlanExecutionId??"last";await(0,oe.yieldToEventLoop)();let r;try{(0,d.recordModulePlanTimeline)(e.cwd,n,"session.inProgress.status.read.start",{elapsedMs:t}),r=(0,de.runExecutionCommand)(e.cwd,["status",n]),(0,d.recordModulePlanTimeline)(e.cwd,n,"session.inProgress.status.read.end",{status:typeof r.status=="string"?r.status:null,phase:typeof r.phase=="string"?r.phase:null,summary:typeof r.summary=="string"?r.summary:null})}catch{(0,d.recordModulePlanTimeline)(e.cwd,n,"session.inProgress.status.read.failed",{elapsedMs:t}),r={operation:"execution.status",executionId:n,status:"running",summary:"in progress"}}const s=Z(e),i=s?s.estimatedDurationMs-t:null,o=ye(r,e,i);return(0,re.attachAgentText)({...r,operation:r.operation??"execution.status",executionId:n,status:r.status??"running",...i!==null?{estimatedRemainingMs:Math.max(0,i)}:{}},o)}function ye(e,t,n){const r=typeof e.executionId=="string"?e.executionId:t.modulePlanExecutionId??"last",i=[`modulePlan.${t.restArgs[0]??"execute"} ${r}`];return typeof e.summary=="string"&&e.summary.length>0&&i.push(e.summary),e.phase==="preview"&&i.push("previewing plan"),e.phase==="mutation"&&i.push("applying mutation"),e.phase==="postMutation.cycles"&&(i.push("mutation completed"),i.push("checking cycles")),i.push(`status: aib execution status ${r}`),n!==null&&i.push(n>0?`estimated remaining: ${(0,A.formatModulePlanTimeoutEstimate)(Math.max(n,5e3))}`:"estimated remaining: check status again soon"),i.join(`
4
- `)}class K{server;constructor(){this.server=ne.createServer((t,n)=>{this.handleRequest(t,n)})}async handleRequest(t,n){if(t.method==="GET"&&t.url==="/health"){E(n,200,{ok:!0,pid:process.pid});return}if(t.method==="POST"&&t.url==="/run")try{const r=await k(t),s=r?JSON.parse(r):{};if(typeof s.command!="string"||!Array.isArray(s.restArgs)||typeof s.cwd!="string")throw new g.CliError("INVALID_SESSION_REQUEST","Invalid session request payload.");const i=Se(s.stdinInputSource),o={command:s.command,restArgs:s.restArgs.filter(p=>typeof p=="string"),cwd:s.cwd,stdinPayload:s.stdinPayload,metricsEnabled:s.metricsEnabled===!0};i!==void 0&&(o.stdinInputSource=i);const u=J(s.transport),f=Ie(s.env);u&&(o.transport=u),o.autoStartIde=(0,D.autoStartIdePolicyFromSession)(s.autoStartIde)??(0,D.resolveAutoStartIdePolicy)();const c=o.metricsEnabled?[]:void 0;c&&(o.metricsSpans=c),typeof s.instanceId=="string"&&(o.instanceId=s.instanceId),typeof s.sessionId=="string"&&(o.sessionId=s.sessionId),typeof s.modulePlanExecutionId=="string"&&(o.modulePlanExecutionId=s.modulePlanExecutionId),s.suppressModulePlanStreamStart===!0&&(o.suppressModulePlanStreamStart=!0);const I=(0,P.metricsNow)(),y=F(f,()=>(0,V.runCommand)(o)).then(p=>((0,P.recordSpan)(c,"session.runCommand",I),p),p=>{throw(0,P.recordSpan)(c,"session.runCommand",I),p}),l=j(o);if(l>0){const p=await W(o,y,l);if(p.status==="deadline"){y.catch(()=>{}),(0,d.recordModulePlanTimeline)(o.cwd,o.modulePlanExecutionId,"session.run.deadline.output.start",{deadlineMs:l});const v=await B(o,l);(0,d.recordModulePlanTimeline)(o.cwd,o.modulePlanExecutionId,"session.run.response.write.start",{mode:"deadline"}),E(n,200,v),(0,d.recordModulePlanTimeline)(o.cwd,o.modulePlanExecutionId,"session.run.response.write.end",{mode:"deadline"});return}const S=p.result;(0,d.recordModulePlanTimeline)(o.cwd,o.modulePlanExecutionId,"session.run.response.write.start",{mode:"result"}),E(n,200,c?(0,P.appendMetrics)(S,c):S),(0,d.recordModulePlanTimeline)(o.cwd,o.modulePlanExecutionId,"session.run.response.write.end",{mode:"result"});return}const m=await y;(0,d.recordModulePlanTimeline)(o.cwd,o.modulePlanExecutionId,"session.run.response.write.start",{mode:"no-deadline"}),E(n,200,c?(0,P.appendMetrics)(m,c):m),(0,d.recordModulePlanTimeline)(o.cwd,o.modulePlanExecutionId,"session.run.response.write.end",{mode:"no-deadline"});return}catch(r){E(n,500,(0,g.errorPayload)(r));return}if(t.method==="POST"&&t.url==="/cli"){let r=null,s=0,i=null;try{i=await X(t),(0,d.recordModulePlanTimeline)(i.input.cwd,i.input.modulePlanExecutionId,"session.cli.request.parsed",{command:i.input.command,args:i.input.restArgs}),s=Date.now(),r=Y(i,s);const o=i.env,u=(0,P.metricsNow)();(0,d.recordModulePlanTimeline)(i.input.cwd,i.input.modulePlanExecutionId,"session.cli.runCommand.start");const f=F(o,()=>(0,V.runCommand)(i.input)).then(l=>((0,P.recordSpan)(i.spans,"session.runCommand",u),(0,d.recordModulePlanTimeline)(i.input.cwd,i.input.modulePlanExecutionId,"session.cli.runCommand.resolved"),l),l=>{throw(0,P.recordSpan)(i.spans,"session.runCommand",u),(0,d.recordModulePlanTimeline)(i.input.cwd,i.input.modulePlanExecutionId,"session.cli.runCommand.rejected",{error:l instanceof Error?l.message:String(l)}),l}),c=j(i.input);if(c>0){const l=await W(i.input,f,c);if(l.status==="deadline"){f.catch(()=>{}),(0,d.recordModulePlanTimeline)(i.input.cwd,i.input.modulePlanExecutionId,"session.cli.deadline.output.start",{deadlineMs:c});const S=h(await B(i.input,c));M(r,i,S,0,s),(0,d.recordModulePlanTimeline)(i.input.cwd,i.input.modulePlanExecutionId,"session.cli.response.write.start",{mode:"deadline"}),E(n,200,S),(0,d.recordModulePlanTimeline)(i.input.cwd,i.input.modulePlanExecutionId,"session.cli.response.write.end",{mode:"deadline"});return}const m=l.result,p=h(i.spans?(0,P.appendMetrics)(m,i.spans):m);M(r,i,p,0,s),(0,d.recordModulePlanTimeline)(i.input.cwd,i.input.modulePlanExecutionId,"session.cli.response.write.start",{mode:"result"}),E(n,200,p),(0,d.recordModulePlanTimeline)(i.input.cwd,i.input.modulePlanExecutionId,"session.cli.response.write.end",{mode:"result"});return}const I=await f,y=h(i.spans?(0,P.appendMetrics)(I,i.spans):I);M(r,i,y,0,s),E(n,200,y);return}catch(o){const u=h((0,g.errorPayload)(o));M(r,i,u,1,s),E(n,500,u);return}}if(t.method==="POST"&&t.url==="/cli/stream"){let r=null,s=null,i=0,o=null;try{if(o=await X(t,{streamGate:!0}),!Q(o.input)){n.writeHead(204),n.end();return}z(n),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cliStream.request.parsed",{command:o.input.command,args:o.input.restArgs}),i=Date.now(),s=Y(o,i),r=we(n,o.input);const u=o.env,f=(0,P.metricsNow)();(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cliStream.runCommand.start");const c=F(u,()=>(0,V.runCommand)(o.input)).then(m=>((0,P.recordSpan)(o.spans,"session.runCommand",f),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cliStream.runCommand.resolved"),m),m=>{throw(0,P.recordSpan)(o.spans,"session.runCommand",f),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cliStream.runCommand.rejected",{error:m instanceof Error?m.message:String(m)}),m}),I=j(o.input);if(I>0){const m=await W(o.input,c,I);if(m.status==="deadline"){c.catch(()=>{}),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cliStream.deadline.output.start",{deadlineMs:I});const v=h(await B(o.input,I));M(s,o,v,0,i),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cliStream.response.write.start",{mode:"deadline"}),C(n,{type:"result",payload:v}),n.end(),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cliStream.response.write.end",{mode:"deadline"});return}const p=m.result,S=h(o.spans?(0,P.appendMetrics)(p,o.spans):p);M(s,o,S,0,i),C(n,{type:"result",payload:S}),n.end();return}const y=await c,l=h(o.spans?(0,P.appendMetrics)(y,o.spans):y);M(s,o,l,0,i),C(n,{type:"result",payload:l}),n.end();return}catch(u){n.headersSent||z(n);const f=h((0,g.errorPayload)(u));M(s,o,f,1,i),C(n,{type:"error",payload:f}),n.end();return}finally{r&&clearInterval(r)}}E(n,404,{ok:!1,error:"Not found"})}async serve(){await new Promise((s,i)=>{this.server.once("error",i),this.server.listen(0,"127.0.0.1",()=>s())});const t=this.server.address();if(!t||typeof t=="string")throw new Error("Failed to determine aib session address.");me({pid:process.pid,host:"127.0.0.1",port:t.port,url:`http://127.0.0.1:${t.port}`,startedAt:new Date().toISOString()});let n=!1;const r=()=>{n||(n=!0,fe(),this.server.close(()=>{process.exit(0)}),setTimeout(()=>{process.exit(0)},1e3).unref())};process.on("SIGTERM",r),process.on("SIGINT",r),await new Promise(()=>{})}}exports.CliSessionServer=K;function Q(e){return e.command==="diagnostics"&&e.restArgs[0]==="timeout-stream"}function z(e){e.writeHead(200,{"content-type":"application/x-ndjson; charset=utf-8","cache-control":"no-cache","x-accel-buffering":"no"}),e.flushHeaders()}async function X(e,t={}){const n=await k(e),r=new URLSearchParams(n),s=r.get("command")??r.get("method")??"",i=r.get("cwd")??"",o=r.get("instanceId")??void 0,u=r.get("sessionId")??void 0,f=r.get("modulePlanExecutionId")??void 0,c=r.get("suppressModulePlanStreamStart")==="true",I=r.get("metricsEnabled")==="true",y=J(r.get("transport")),l=(0,D.autoStartIdePolicyFromSession)(r.get("autoStartIde"))??(0,D.resolveAutoStartIdePolicy)(),m=Ee(r.get("traceDir")),p=ge(r);if(!s.trim())throw new g.CliError("MISSING_COMMAND","Missing command.");if(!i.trim())throw new g.CliError("MISSING_CWD","Missing cwd.");const S=I?[]:void 0,v=(0,P.metricsNow)(),T=await(0,ae.resolveCanonicalCommandAlias)(s.trim(),i,o,l);(0,P.recordSpan)(S,"session.aliasResolution",v);const b=(0,R.stripStdinFormatFlags)(r.getAll("arg")),L=b.restArgs,w={command:T,restArgs:L,cwd:i,metricsEnabled:I,autoStartIde:l};if(y&&(w.transport=y),o&&(w.instanceId=o),u&&(w.sessionId=u),f&&(w.modulePlanExecutionId=f),c&&(w.suppressModulePlanStreamStart=!0),S&&(w.metricsSpans=S),t.streamGate===!0&&!Q(w))return{input:w,spans:S,...m!==void 0?{traceDir:m}:{},env:p};const q=Pe(r.get("stdin"),T,L,b.format),_={command:T,restArgs:L,cwd:i,stdinPayload:pe(r.get("stdin"),T,L,b.format),metricsEnabled:I,autoStartIde:l};return q!==void 0&&(_.stdinInputSource=q),y&&(_.transport=y),o&&(_.instanceId=o),u&&(_.sessionId=u),f&&(_.modulePlanExecutionId=f),c&&(_.suppressModulePlanStreamStart=!0),S&&(_.metricsSpans=S),{input:_,spans:S,...m!==void 0?{traceDir:m}:{},env:p}}function ge(e){const t={},n=[[a.CLI_ENV.metrics,e.get("metrics")??""],[a.CLI_ENV.metricsDir,e.get("metricsDir")??""],[a.CLI_ENV.metricsTag,e.get("metricsTag")??""],[a.CLI_ENV.mutationImpactMetrics,e.get("mutationImpactMetrics")??""],[a.CLI_ENV.mutationImpactStream,e.get("mutationImpactStream")??""],[a.CLI_ENV.testMoveToFileFailEntity,e.get("testMoveToFileFailEntity")??""],[a.CLI_ENV.testPostMutationCyclesDelayMs,e.get("testPostMutationCyclesDelayMs")??""],[a.CLI_ENV.testRefactorBatchDelayMs,e.get("testRefactorBatchDelayMs")??""],[a.CLI_ENV.testRenameDelayMs,e.get("testRenameDelayMs")??""],[a.CLI_ENV.modulePlanSyncWaitMs,e.get("modulePlanSyncWaitMs")??""],[a.CLI_ENV.refactorBatchSyncWaitMs,e.get("refactorBatchSyncWaitMs")??""],[a.CLI_ENV.renameSyncWaitMs,e.get("renameSyncWaitMs")??""],[a.CLI_ENV.modulePlanDebugTimeline,e.get("modulePlanDebugTimeline")??""],[a.CLI_ENV.trace,e.get("trace")??""],[a.CLI_ENV.failureSnapshots,e.get("failureSnapshots")??""],[a.CLI_ENV.productStorageDir,e.get("productStorageDir")??""]];for(const[r,s]of n){const i=s.trim();i&&(t[r]=i)}return t}function Ee(e){if(e===null)return;const t=e.trim();return t||void 0}function Y(e,t){return e.traceDir?(0,ie.startTrace)({cwd:e.input.cwd,argv:[e.input.command,...e.input.restArgs],command:e.input.command,restArgs:e.input.restArgs,...e.input.stdinPayload!==void 0?{stdinPayload:e.input.stdinPayload}:{},traceDir:e.traceDir,startedAtMs:t}):null}function M(e,t,n,r,s){if(!e?.enabled||!t)return;const i=(0,U.createCliPresentationEnvelope)(n);e.complete({output:i.tracePayload,exitCode:n.ok===!1?1:r,durationMs:Date.now()-s,...t.input.transport?{transport:t.input.transport}:{}})}function h(e){return(0,U.createCliPresentationEnvelope)(e).payload}function we(e,t){if(!Me(t))return null;const n=t.modulePlanExecutionId??(0,O.buildModulePlanExecutionId)();t.modulePlanExecutionId=n;const r=Date.now(),s=Z(t),i=s?`
5
- estimated: ${(0,A.formatModulePlanTimeoutEstimate)(s.estimatedDurationMs)}`:"";if(t.suppressModulePlanStreamStart||C(e,{type:"start",text:`modulePlan.${t.restArgs[0]??"execute"} ${n}
6
- status: aib execution status ${n}${i}`,data:{operation:`modulePlan.${t.restArgs[0]??"execute"}`,executionId:n,...s?{estimatedTimeoutMs:s.recommendedTimeoutMs,estimatedDurationMs:s.estimatedDurationMs,suggestedFirstCheckMs:s.suggestedFirstCheckMs,rowCount:s.rowCount,symbolCount:s.symbolCount}:{}}}),!le)return null;let o=r;return setInterval(()=>{try{const u=(0,O.readModulePlanExecutionStatus)(t.cwd,n),f=Date.parse(u.startedAt);if(Number.isFinite(f)&&f+1e3<r){o=$(e,o);return}if(!(u.completedRows>0||u.failedRows>0||u.filesWritten.length>0)){o=$(e,o);return}C(e,{type:"progress",text:`progress: ${u.completedRows}/${u.rowCount} rows${_e(u.completedEntities,u.entityCount)}, ${u.filesWritten.length} files`,data:{operation:u.operation,executionId:u.executionId,status:u.status,completedRows:u.completedRows,failedRows:u.failedRows,rowCount:u.rowCount,completedEntities:u.completedEntities,entityCount:u.entityCount,filesWritten:u.filesWritten.length}})}catch{o=$(e,o)}},5e3)}function $(e,t){if(!ce)return t;const n=Date.now();return n-t<3e4?t:(C(e,{type:"progress",text:"modulePlan still running",data:{operation:"modulePlan",status:"running"}}),n)}function _e(e,t){return!t||t<=0?"":`, ${Math.floor((e??0)/t*100)}% entities`}function Me(e){if(e.command!=="modulePlan")return!1;const t=e.restArgs[0]??"";return t==="execute"||t==="apply"}function Z(e){const t=e.restArgs[0]??"";if(t==="execute")return(0,A.estimateModulePlanTimeoutFromRequest)(e.stdinPayload);if(t!=="apply")return null;const n=he(e.restArgs);if(!n)return null;try{return(0,A.estimateModulePlanTimeoutFromRequest)((0,O.readModulePlanRecord)(e.cwd,n).normalizedRequest)}catch{return null}}function he(e){const t=e.indexOf("--plan");if(t>=0){const r=e[t+1];return r&&!r.startsWith("--")?r:null}return e.slice(1).find(r=>!r.startsWith("--"))??null}async function Ce(){const e=process.argv[3]||"status";if(e!=="serve"){(0,se.printJson)((0,g.errorPayload)(new g.CliError("UNKNOWN_SESSION_COMMAND",`Unknown aib session command: ${e}`))),process.exitCode=1;return}await new K().serve()}
3
+ `);const n=e;typeof n.flush=="function"&&n.flush()}function pe(e,t,n,r){if(e!==null)return(0,R.parseStdinPayload)(e,{command:t,restArgs:n,...r!==void 0?{format:r}:{}})}function Se(e,t,n,r){if(e!==null)return(0,R.parseInputPayloadWithSource)(e,{command:t,restArgs:n,...r!==void 0?{format:r}:{}}).source}function Pe(e){if(e==null)return;if(!e||typeof e!="object"||Array.isArray(e))throw new g.CliError("INVALID_SESSION_REQUEST","Invalid stdin input source.");const t=e;if(t.format!=="json"&&t.format!=="dsl"||typeof t.text!="string")throw new g.CliError("INVALID_SESSION_REQUEST","Invalid stdin input source.");return{format:t.format,text:t.text}}function J(e){if(e==null||e==="")return;const t=(0,ue.parseExtensionTransport)(e);if(!t)throw new g.CliError("INVALID_TRANSPORT","Expected transport to be either http or websocket.");return t}function Ie(e){if(!e||typeof e!="object"||Array.isArray(e))return{};const t=new Set([a.CLI_ENV.managedHostScript,a.CLI_ENV.managedHostKind,a.CLI_ENV.managedHostRunDir,a.CLI_ENV.codeServerPath,a.CLI_ENV.extensionVsix,a.CLI_ENV.ideCommand,a.CLI_ENV.chromePath,a.CLI_ENV.managedHostWaitMs,a.CLI_ENV.workspaceRoot,a.CLI_ENV.disableWatchers,a.CLI_ENV.trace,a.CLI_ENV.traceDir,a.CLI_ENV.failureSnapshots,a.CLI_ENV.productStorageDir,a.CLI_ENV.metrics,a.CLI_ENV.metricsDir,a.CLI_ENV.metricsTag,a.CLI_ENV.mutationImpactMetrics,a.CLI_ENV.mutationImpactStream,a.CLI_ENV.testMoveToFileFailEntity,a.CLI_ENV.testPostMutationCyclesDelayMs,a.CLI_ENV.testRefactorBatchDelayMs,a.CLI_ENV.testRenameDelayMs,a.CLI_ENV.modulePlanSyncWaitMs,a.CLI_ENV.refactorBatchSyncWaitMs,a.CLI_ENV.renameSyncWaitMs,a.CLI_ENV.modulePlanDebugTimeline]),n={};for(const[r,i]of Object.entries(e))t.has(r)&&typeof i=="string"&&(n[r]=i);return n}async function F(e,t){const n=Object.entries(e);if(n.length===0)return t();const r=new Map;for(const[i,o]of n)r.set(i,process.env[i]),process.env[i]=o;try{return await t()}finally{for(const[i,o]of r)o===void 0?delete process.env[i]:process.env[i]=o}}async function W(e,t,n){return(0,d.recordModulePlanTimeline)(e.cwd,e.modulePlanExecutionId,"session.deadline.wait.start",{deadlineMs:n}),(0,G.waitForMutationDeadline)(t.then(r=>((0,d.recordModulePlanTimeline)(e.cwd,e.modulePlanExecutionId,"session.deadline.runPromise.resolved"),r)),n,()=>(0,d.recordModulePlanTimeline)(e.cwd,e.modulePlanExecutionId,"session.deadline.timer.fired",{deadlineMs:n}))}function $(e){if(e.command!=="modulePlan")return 0;const t=e.restArgs[0]??"";return t!=="execute"&&t!=="apply"?0:(0,G.readMutationSyncWaitMs)(process.env[a.CLI_ENV.modulePlanSyncWaitMs],12e4)}async function j(e,t){const n=e.modulePlanExecutionId??"last";await(0,oe.yieldToEventLoop)();let r;try{(0,d.recordModulePlanTimeline)(e.cwd,n,"session.inProgress.status.read.start",{elapsedMs:t}),r=(0,de.runExecutionCommand)(e.cwd,["status",n]),(0,d.recordModulePlanTimeline)(e.cwd,n,"session.inProgress.status.read.end",{status:typeof r.status=="string"?r.status:null,phase:typeof r.phase=="string"?r.phase:null,summary:typeof r.summary=="string"?r.summary:null})}catch{(0,d.recordModulePlanTimeline)(e.cwd,n,"session.inProgress.status.read.failed",{elapsedMs:t}),r={operation:"execution.status",executionId:n,status:"running",summary:"in progress"}}const i=Z(e),o=i?i.estimatedDurationMs-t:null,s=ye(r,e,o);return(0,re.attachAgentText)({...r,operation:r.operation??"execution.status",executionId:n,status:r.status??"running",...o!==null?{estimatedRemainingMs:Math.max(0,o)}:{}},s)}function ye(e,t,n){const r=typeof e.executionId=="string"?e.executionId:t.modulePlanExecutionId??"last",o=[`modulePlan.${t.restArgs[0]??"execute"} ${r}`];return typeof e.summary=="string"&&e.summary.length>0&&o.push(e.summary),e.phase==="preview"&&o.push("previewing plan"),e.phase==="mutation"&&o.push("applying mutation"),e.phase==="postMutation.cycles"&&(o.push("mutation completed"),o.push("checking cycles")),o.push(`status: aib execution status ${r}`),n!==null&&o.push(n>0?`estimated remaining: ${(0,A.formatModulePlanTimeoutEstimate)(Math.max(n,5e3))}`:"estimated remaining: check status again soon"),o.join(`
4
+ `)}class K{server;constructor(){this.server=ne.createServer((t,n)=>{this.handleRequest(t,n)})}async handleRequest(t,n){if(t.method==="GET"&&t.url==="/health"){E(n,200,{ok:!0,pid:process.pid});return}if(t.method==="POST"&&t.url==="/run")try{const r=await k(t),i=r?JSON.parse(r):{};if(typeof i.command!="string"||!Array.isArray(i.restArgs)||typeof i.cwd!="string")throw new g.CliError("INVALID_SESSION_REQUEST","Invalid session request payload.");const o=Pe(i.stdinInputSource),s={command:i.command,restArgs:i.restArgs.filter(p=>typeof p=="string"),cwd:i.cwd,stdinPayload:i.stdinPayload,metricsEnabled:i.metricsEnabled===!0};o!==void 0&&(s.stdinInputSource=o);const u=J(i.transport),f=Ie(i.env);u&&(s.transport=u),s.autoStartIde=(0,D.autoStartIdePolicyFromSession)(i.autoStartIde)??(0,D.resolveAutoStartIdePolicy)();const c=s.metricsEnabled?[]:void 0;c&&(s.metricsSpans=c),typeof i.instanceId=="string"&&(s.instanceId=i.instanceId),typeof i.sessionId=="string"&&(s.sessionId=i.sessionId),typeof i.modulePlanExecutionId=="string"&&(s.modulePlanExecutionId=i.modulePlanExecutionId),i.suppressModulePlanStreamStart===!0&&(s.suppressModulePlanStreamStart=!0);const I=(0,S.metricsNow)(),y=F(f,()=>(0,V.runCommand)(s)).then(p=>((0,S.recordSpan)(c,"session.runCommand",I),p),p=>{throw(0,S.recordSpan)(c,"session.runCommand",I),p}),l=$(s);if(l>0){const p=await W(s,y,l);if(p.status==="deadline"){y.catch(()=>{}),(0,d.recordModulePlanTimeline)(s.cwd,s.modulePlanExecutionId,"session.run.deadline.output.start",{deadlineMs:l});const v=await j(s,l);(0,d.recordModulePlanTimeline)(s.cwd,s.modulePlanExecutionId,"session.run.response.write.start",{mode:"deadline"}),E(n,200,v),(0,d.recordModulePlanTimeline)(s.cwd,s.modulePlanExecutionId,"session.run.response.write.end",{mode:"deadline"});return}const P=p.result;(0,d.recordModulePlanTimeline)(s.cwd,s.modulePlanExecutionId,"session.run.response.write.start",{mode:"result"}),E(n,200,c?(0,S.appendMetrics)(P,c):P),(0,d.recordModulePlanTimeline)(s.cwd,s.modulePlanExecutionId,"session.run.response.write.end",{mode:"result"});return}const m=await y;(0,d.recordModulePlanTimeline)(s.cwd,s.modulePlanExecutionId,"session.run.response.write.start",{mode:"no-deadline"}),E(n,200,c?(0,S.appendMetrics)(m,c):m),(0,d.recordModulePlanTimeline)(s.cwd,s.modulePlanExecutionId,"session.run.response.write.end",{mode:"no-deadline"});return}catch(r){E(n,500,(0,g.errorPayload)(r));return}if(t.method==="POST"&&t.url==="/cli"){let r=null,i=0,o=null;try{o=await X(t),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cli.request.parsed",{command:o.input.command,args:o.input.restArgs}),i=Date.now(),r=Y(o,i);const s=o.env,u=(0,S.metricsNow)();(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cli.runCommand.start");const f=F(s,()=>(0,V.runCommand)(o.input)).then(l=>((0,S.recordSpan)(o.spans,"session.runCommand",u),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cli.runCommand.resolved"),l),l=>{throw(0,S.recordSpan)(o.spans,"session.runCommand",u),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cli.runCommand.rejected",{error:l instanceof Error?l.message:String(l)}),l}),c=$(o.input);if(c>0){const l=await W(o.input,f,c);if(l.status==="deadline"){f.catch(()=>{}),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cli.deadline.output.start",{deadlineMs:c});const P=h(await j(o.input,c));M(r,o,P,0,i),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cli.response.write.start",{mode:"deadline"}),E(n,200,P),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cli.response.write.end",{mode:"deadline"});return}const m=l.result,p=h(o.spans?(0,S.appendMetrics)(m,o.spans):m);M(r,o,p,0,i),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cli.response.write.start",{mode:"result"}),E(n,200,p),(0,d.recordModulePlanTimeline)(o.input.cwd,o.input.modulePlanExecutionId,"session.cli.response.write.end",{mode:"result"});return}const I=await f,y=h(o.spans?(0,S.appendMetrics)(I,o.spans):I);M(r,o,y,0,i),E(n,200,y);return}catch(s){const u=h((0,g.errorPayload)(s));M(r,o,u,1,i),E(n,500,u);return}}if(t.method==="POST"&&t.url==="/cli/stream"){let r=null,i=null,o=0,s=null;try{if(s=await X(t,{streamGate:!0}),!Q(s.input)){n.writeHead(204),n.end();return}z(n),(0,d.recordModulePlanTimeline)(s.input.cwd,s.input.modulePlanExecutionId,"session.cliStream.request.parsed",{command:s.input.command,args:s.input.restArgs}),o=Date.now(),i=Y(s,o),r=we(n,s.input);const u=s.env,f=(0,S.metricsNow)();(0,d.recordModulePlanTimeline)(s.input.cwd,s.input.modulePlanExecutionId,"session.cliStream.runCommand.start");const c=F(u,()=>(0,V.runCommand)(s.input)).then(m=>((0,S.recordSpan)(s.spans,"session.runCommand",f),(0,d.recordModulePlanTimeline)(s.input.cwd,s.input.modulePlanExecutionId,"session.cliStream.runCommand.resolved"),m),m=>{throw(0,S.recordSpan)(s.spans,"session.runCommand",f),(0,d.recordModulePlanTimeline)(s.input.cwd,s.input.modulePlanExecutionId,"session.cliStream.runCommand.rejected",{error:m instanceof Error?m.message:String(m)}),m}),I=$(s.input);if(I>0){const m=await W(s.input,c,I);if(m.status==="deadline"){c.catch(()=>{}),(0,d.recordModulePlanTimeline)(s.input.cwd,s.input.modulePlanExecutionId,"session.cliStream.deadline.output.start",{deadlineMs:I});const v=h(await j(s.input,I));M(i,s,v,0,o),(0,d.recordModulePlanTimeline)(s.input.cwd,s.input.modulePlanExecutionId,"session.cliStream.response.write.start",{mode:"deadline"}),C(n,{type:"result",payload:v}),n.end(),(0,d.recordModulePlanTimeline)(s.input.cwd,s.input.modulePlanExecutionId,"session.cliStream.response.write.end",{mode:"deadline"});return}const p=m.result,P=h(s.spans?(0,S.appendMetrics)(p,s.spans):p);M(i,s,P,0,o),C(n,{type:"result",payload:P}),n.end();return}const y=await c,l=h(s.spans?(0,S.appendMetrics)(y,s.spans):y);M(i,s,l,0,o),C(n,{type:"result",payload:l}),n.end();return}catch(u){n.headersSent||z(n);const f=h((0,g.errorPayload)(u));M(i,s,f,1,o),C(n,{type:"error",payload:f}),n.end();return}finally{r&&clearInterval(r)}}E(n,404,{ok:!1,error:"Not found"})}async serve(){await new Promise((i,o)=>{this.server.once("error",o),this.server.listen(0,"127.0.0.1",()=>i())});const t=this.server.address();if(!t||typeof t=="string")throw new Error("Failed to determine aib session address.");me({pid:process.pid,host:"127.0.0.1",port:t.port,url:`http://127.0.0.1:${t.port}`,startedAt:new Date().toISOString()});let n=!1;const r=()=>{n||(n=!0,fe(),this.server.close(()=>{process.exit(0)}),setTimeout(()=>{process.exit(0)},1e3).unref())};process.on("SIGTERM",r),process.on("SIGINT",r),await new Promise(()=>{})}}exports.CliSessionServer=K;function Q(e){return e.command==="diagnostics"&&e.restArgs[0]==="timeout-stream"}function z(e){e.writeHead(200,{"content-type":"application/x-ndjson; charset=utf-8","cache-control":"no-cache","x-accel-buffering":"no"}),e.flushHeaders()}async function X(e,t={}){const n=await k(e),r=new URLSearchParams(n),i=r.get("command")??r.get("method")??"",o=r.get("cwd")??"",s=r.get("instanceId")??void 0,u=r.get("sessionId")??void 0,f=r.get("modulePlanExecutionId")??void 0,c=r.get("suppressModulePlanStreamStart")==="true",I=r.get("metricsEnabled")==="true",y=J(r.get("transport")),l=(0,D.autoStartIdePolicyFromSession)(r.get("autoStartIde"))??(0,D.resolveAutoStartIdePolicy)(),m=Ee(r.get("traceDir")),p=ge(r);if(!i.trim())throw new g.CliError("MISSING_COMMAND","Missing command.");if(!o.trim())throw new g.CliError("MISSING_CWD","Missing cwd.");const P=I?[]:void 0,v=(0,S.metricsNow)(),T=await(0,ae.resolveCanonicalCommandAlias)(i.trim(),o,s,l);(0,S.recordSpan)(P,"session.aliasResolution",v);const b=(0,R.stripStdinFormatFlags)(r.getAll("arg")),L=b.restArgs,w={command:T,restArgs:L,cwd:o,metricsEnabled:I,autoStartIde:l};if(y&&(w.transport=y),s&&(w.instanceId=s),u&&(w.sessionId=u),f&&(w.modulePlanExecutionId=f),c&&(w.suppressModulePlanStreamStart=!0),P&&(w.metricsSpans=P),t.streamGate===!0&&!Q(w))return{input:w,spans:P,...m!==void 0?{traceDir:m}:{},env:p};const q=Se(r.get("stdin"),T,L,b.format),_={command:T,restArgs:L,cwd:o,stdinPayload:pe(r.get("stdin"),T,L,b.format),metricsEnabled:I,autoStartIde:l};return q!==void 0&&(_.stdinInputSource=q),y&&(_.transport=y),s&&(_.instanceId=s),u&&(_.sessionId=u),f&&(_.modulePlanExecutionId=f),c&&(_.suppressModulePlanStreamStart=!0),P&&(_.metricsSpans=P),{input:_,spans:P,...m!==void 0?{traceDir:m}:{},env:p}}function ge(e){const t={},n=[[a.CLI_ENV.metrics,e.get("metrics")??""],[a.CLI_ENV.metricsDir,e.get("metricsDir")??""],[a.CLI_ENV.metricsTag,e.get("metricsTag")??""],[a.CLI_ENV.mutationImpactMetrics,e.get("mutationImpactMetrics")??""],[a.CLI_ENV.mutationImpactStream,e.get("mutationImpactStream")??""],[a.CLI_ENV.testMoveToFileFailEntity,e.get("testMoveToFileFailEntity")??""],[a.CLI_ENV.testPostMutationCyclesDelayMs,e.get("testPostMutationCyclesDelayMs")??""],[a.CLI_ENV.testRefactorBatchDelayMs,e.get("testRefactorBatchDelayMs")??""],[a.CLI_ENV.testRenameDelayMs,e.get("testRenameDelayMs")??""],[a.CLI_ENV.modulePlanSyncWaitMs,e.get("modulePlanSyncWaitMs")??""],[a.CLI_ENV.refactorBatchSyncWaitMs,e.get("refactorBatchSyncWaitMs")??""],[a.CLI_ENV.renameSyncWaitMs,e.get("renameSyncWaitMs")??""],[a.CLI_ENV.modulePlanDebugTimeline,e.get("modulePlanDebugTimeline")??""],[a.CLI_ENV.trace,e.get("trace")??""],[a.CLI_ENV.failureSnapshots,e.get("failureSnapshots")??""],[a.CLI_ENV.productStorageDir,e.get("productStorageDir")??""]];for(const[r,i]of n){const o=i.trim();o&&(t[r]=o)}return t}function Ee(e){if(e===null)return;const t=e.trim();return t||void 0}function Y(e,t){return e.traceDir?(0,ie.startTrace)({cwd:e.input.cwd,argv:[e.input.command,...e.input.restArgs],command:e.input.command,restArgs:e.input.restArgs,...e.input.stdinPayload!==void 0?{stdinPayload:e.input.stdinPayload}:{},...e.input.stdinInputSource!==void 0?{stdinSource:e.input.stdinInputSource}:{},traceDir:e.traceDir,startedAtMs:t}):null}function M(e,t,n,r,i){if(!e?.enabled||!t)return;const o=(0,U.createCliPresentationEnvelope)(n);e.complete({output:o.tracePayload,stdoutText:o.text?`${o.text.trimEnd()}
5
+ `:`${JSON.stringify(o.tracePayload,null,2)}
6
+ `,exitCode:n.ok===!1?1:r,durationMs:Date.now()-i,...t.input.transport?{transport:t.input.transport}:{}})}function h(e){return(0,U.createCliPresentationEnvelope)(e).payload}function we(e,t){if(!Me(t))return null;const n=t.modulePlanExecutionId??(0,O.buildModulePlanExecutionId)();t.modulePlanExecutionId=n;const r=Date.now(),i=Z(t),o=i?`
7
+ estimated: ${(0,A.formatModulePlanTimeoutEstimate)(i.estimatedDurationMs)}`:"";if(t.suppressModulePlanStreamStart||C(e,{type:"start",text:`modulePlan.${t.restArgs[0]??"execute"} ${n}
8
+ status: aib execution status ${n}${o}`,data:{operation:`modulePlan.${t.restArgs[0]??"execute"}`,executionId:n,...i?{estimatedTimeoutMs:i.recommendedTimeoutMs,estimatedDurationMs:i.estimatedDurationMs,suggestedFirstCheckMs:i.suggestedFirstCheckMs,rowCount:i.rowCount,symbolCount:i.symbolCount}:{}}}),!le)return null;let s=r;return setInterval(()=>{try{const u=(0,O.readModulePlanExecutionStatus)(t.cwd,n),f=Date.parse(u.startedAt);if(Number.isFinite(f)&&f+1e3<r){s=B(e,s);return}if(!(u.completedRows>0||u.failedRows>0||u.filesWritten.length>0)){s=B(e,s);return}C(e,{type:"progress",text:`progress: ${u.completedRows}/${u.rowCount} rows${_e(u.completedEntities,u.entityCount)}, ${u.filesWritten.length} files`,data:{operation:u.operation,executionId:u.executionId,status:u.status,completedRows:u.completedRows,failedRows:u.failedRows,rowCount:u.rowCount,completedEntities:u.completedEntities,entityCount:u.entityCount,filesWritten:u.filesWritten.length}})}catch{s=B(e,s)}},5e3)}function B(e,t){if(!ce)return t;const n=Date.now();return n-t<3e4?t:(C(e,{type:"progress",text:"modulePlan still running",data:{operation:"modulePlan",status:"running"}}),n)}function _e(e,t){return!t||t<=0?"":`, ${Math.floor((e??0)/t*100)}% entities`}function Me(e){if(e.command!=="modulePlan")return!1;const t=e.restArgs[0]??"";return t==="execute"||t==="apply"}function Z(e){const t=e.restArgs[0]??"";if(t==="execute")return(0,A.estimateModulePlanTimeoutFromRequest)(e.stdinPayload);if(t!=="apply")return null;const n=he(e.restArgs);if(!n)return null;try{return(0,A.estimateModulePlanTimeoutFromRequest)((0,O.readModulePlanRecord)(e.cwd,n).normalizedRequest)}catch{return null}}function he(e){const t=e.indexOf("--plan");if(t>=0){const r=e[t+1];return r&&!r.startsWith("--")?r:null}return e.slice(1).find(r=>!r.startsWith("--"))??null}async function Ce(){const e=process.argv[3]||"status";if(e!=="serve"){(0,se.printJson)((0,g.errorPayload)(new g.CliError("UNKNOWN_SESSION_COMMAND",`Unknown aib session command: ${e}`))),process.exitCode=1;return}await new K().serve()}