@akanjs/cli 3.0.0-beta.24 → 3.0.0-beta.25

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 (70) hide show
  1. package/.build-stamp +1 -1
  2. package/{CodeAgent-0dh9fzzg.js → CodeAgent-p65jja35.js} +2 -2
  3. package/{CodeTui-drwdvwg9.js → CodeTui-5xr8kxx4.js} +1 -1
  4. package/TunnelShare-cwh9ezsm.js +9 -0
  5. package/{agent.command-ttn09rx3.js → agent.command-rp505zxa.js} +7 -7
  6. package/akanCode.js +2 -2
  7. package/{application.command-z7a4bdrq.js → application.command-2x9jqy0k.js} +7 -7
  8. package/{applicationBuildRunner-n6xfexaa.js → applicationBuildRunner-tm0vba5t.js} +4 -4
  9. package/buildBatch.proc.js +77 -23
  10. package/{cloud.command-j0fcz44z.js → cloud.command-j6m607bp.js} +12 -12
  11. package/cloud.script-r5t7nhee.js +20 -0
  12. package/{code.command-1jgk14tc.js → code.command-jhrjttm1.js} +7 -7
  13. package/{context.command-4vpjmg22.js → context.command-xncdvv7n.js} +14 -14
  14. package/context.runner-pjy89k2s.js +21 -0
  15. package/{dependencyScanner-ye2e6pdz.js → dependencyScanner-06z2dmrr.js} +2 -2
  16. package/{fileSys-5ngz93ga.js → fileSys-wzzrntkw.js} +1 -1
  17. package/{guideline.command-7jk47fgq.js → guideline.command-d5qmxx29.js} +4 -4
  18. package/guidelines/conventions/conventions.instruction.md +7 -5
  19. package/incrementalBuilder.proc.js +544 -72
  20. package/{index-ga6hygxr.js → index-0n9q1f23.js} +3 -3
  21. package/{index-3t7g9e4r.js → index-2ahj896a.js} +1 -1
  22. package/{index-zabxte74.js → index-2wc41k5w.js} +1 -1
  23. package/{index-khpfpcsd.js → index-48k96p55.js} +27 -7
  24. package/{index-ne50hc2m.js → index-4mgbzgb5.js} +456 -1623
  25. package/{index-2gh9sndr.js → index-50rq2qms.js} +4 -4
  26. package/{index-5b6tavv3.js → index-52w0fvh8.js} +15 -1
  27. package/{index-zbc2q6a6.js → index-56xwsgyn.js} +3 -3
  28. package/{index-rmcw8yc8.js → index-58cyna2s.js} +2 -2
  29. package/{index-1db2cw0y.js → index-5mm3g24t.js} +2 -2
  30. package/{index-wp43xrjv.js → index-6dt6zft6.js} +4 -4
  31. package/{index-vj1cwwy5.js → index-7yxndzea.js} +7 -7
  32. package/{index-q44jbw48.js → index-860zjnr1.js} +1 -1
  33. package/{index-d4mfjgm0.js → index-8k93esfr.js} +6 -6
  34. package/{index-fzd22vjh.js → index-94s080qm.js} +3 -17
  35. package/{index-yy4s1j72.js → index-d65fzxvd.js} +1 -1
  36. package/{index-m0ms3n1c.js → index-da72pfdv.js} +7 -7
  37. package/index-dt1x62ec.js +4108 -0
  38. package/{index-4dn1p115.js → index-ggfhz9ab.js} +4 -4
  39. package/{index-9629w7ns.js → index-hzy4pe24.js} +3 -3
  40. package/{index-ymgtbmf1.js → index-pb10njz7.js} +191 -58
  41. package/{index-mgfx3mfs.js → index-per2kqy9.js} +4 -4
  42. package/{index-aaz7n8s2.js → index-qm4fppfk.js} +4 -4
  43. package/{index-ya5qbmyg.js → index-t02g6dpn.js} +3 -3
  44. package/{index-hb8sgepf.js → index-tpdn30ya.js} +1 -1
  45. package/{index-rnt66vym.js → index-v4hnkqz9.js} +1 -1
  46. package/{index-pp54p5zk.js → index-xfgdmm5d.js} +2 -2
  47. package/{index-tgjy8xf3.js → index-zazvn45w.js} +4 -4
  48. package/{index-0bq14vr1.js → index-zzvvc845.js} +1 -1
  49. package/index.js +22 -22
  50. package/{library.command-ccb1cp92.js → library.command-sv6g1h2g.js} +4 -4
  51. package/{localRegistry.command-gmj1k6q8.js → localRegistry.command-4kj56531.js} +11 -11
  52. package/{module.command-5k6h407d.js → module.command-ccdeder9.js} +6 -6
  53. package/{package.command-e6ntvpez.js → package.command-xmw605b1.js} +5 -5
  54. package/package.json +3 -3
  55. package/{page.command-v4f90wb8.js → page.command-ky7vafsn.js} +4 -4
  56. package/{primitive.command-g6km57q5.js → primitive.command-bh6j8nfs.js} +7 -7
  57. package/{prompter-ptaa3nk0.js → prompter-76k56b37.js} +2 -2
  58. package/{quality.command-de3p36pz.js → quality.command-rqqrpe98.js} +3 -3
  59. package/{repair.command-d3x1javq.js → repair.command-n9nsm9qe.js} +6 -6
  60. package/{scalar.command-7ezrac2b.js → scalar.command-t09gmck8.js} +5 -5
  61. package/{subspace.command-ksenprez.js → subspace.command-ygfdqpbj.js} +6 -6
  62. package/{tunnel.command-54947jck.js → tunnel.command-4g95vhsn.js} +5 -5
  63. package/{workflow.command-z2p32nmf.js → workflow.command-b91ph8sx.js} +11 -11
  64. package/{workspace.command-tkn8g0bn.js → workspace.command-p44d21qf.js} +24 -24
  65. package/README.ko.md +0 -72
  66. package/README.md +0 -88
  67. package/TunnelShare-pemaknmd.js +0 -9
  68. package/cloud.script-g2dcnr8c.js +0 -20
  69. package/context.runner-ehjs419v.js +0 -21
  70. package/index-fgq75haa.js +0 -2084
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  getDirname2,
4
4
  FileSys2
5
- } from "./index-5b6tavv3.js";
5
+ } from "./index-52w0fvh8.js";
6
6
 
7
7
  // pkgs/@akanjs/devkit/artifact/implicitRootLayout.ts
8
8
  import { readdir, rm } from "fs/promises";
@@ -542,7 +542,7 @@ ${block}`;
542
542
  var extractBlockVersion = (content) => content.match(/<!-- akan:agent:version ([^\s]+) -->/)?.[1] ?? null;
543
543
  var readDevkitVersion = async () => {
544
544
  const { readFile } = await import("fs/promises");
545
- const { getDirname } = await import("./fileSys-5ngz93ga.js");
545
+ const { getDirname } = await import("./fileSys-wzzrntkw.js");
546
546
  try {
547
547
  const raw = await readFile(`${getDirname(import.meta.url)}/package.json`, "utf-8");
548
548
  return JSON.parse(raw).version ?? null;
@@ -1667,7 +1667,7 @@ var moduleUiFileTypes = {
1667
1667
  service: new Set(["Util", "Zone"]),
1668
1668
  scalar: new Set(["Template", "Unit"])
1669
1669
  };
1670
- var createDependencyScanner = async (exec) => (await import("./dependencyScanner-ye2e6pdz.js")).TypeScriptDependencyScanner.from(exec);
1670
+ var createDependencyScanner = async (exec) => (await import("./dependencyScanner-06z2dmrr.js")).TypeScriptDependencyScanner.from(exec);
1671
1671
  var getScanPath = (exec, relativePath) => path7.posix.join(`${exec.type}s`, exec.name, relativePath.split(path7.sep).join("/"));
1672
1672
  var getModuleNameFromPath = (kind, modulePath) => {
1673
1673
  const dirname = path7.basename(modulePath);
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  FileSys2
4
- } from "./index-5b6tavv3.js";
4
+ } from "./index-52w0fvh8.js";
5
5
 
6
6
  // pkgs/@akanjs/devkit/dependencyScanner.ts
7
7
  import { builtinModules } from "module";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  GlobalConfig,
4
4
  CloudApi
5
- } from "./index-fzd22vjh.js";
5
+ } from "./index-94s080qm.js";
6
6
 
7
7
  // pkgs/@akanjs/cli/tunnel/TunnelShare.ts
8
8
  import { TunnelAgent } from "akanjs/server/tunnel";
@@ -132,8 +132,16 @@ var isLegacyBackendFallbackFile = (file, workspaceRoot) => {
132
132
  };
133
133
  var shouldMarkBuildPhaseRecovered = (previousByPhase, status) => {
134
134
  const previous = previousByPhase.get(status.phase);
135
- return Boolean(previous && status.ok && !previous.ok && generationValue(status.generation) >= previous.generation);
135
+ if (!previous || previous.ok || !status.ok)
136
+ return false;
137
+ const generation = generationValue(status.generation);
138
+ if (status.phase === "route" && status.scope !== undefined && previous.scope !== undefined)
139
+ return status.scope === previous.scope && generation >= previous.generation;
140
+ if (generation !== previous.generation)
141
+ return generation > previous.generation;
142
+ return status.phase === "backend";
136
143
  };
144
+ var shouldKeepBuildFailure = (previousByPhase, status) => status.ok && previousByPhase.get(status.phase)?.ok === false && !shouldMarkBuildPhaseRecovered(previousByPhase, status);
137
145
  var createBackendBuildStatus = ({
138
146
  generation,
139
147
  ok,
@@ -169,7 +177,7 @@ var hasBuildFailureForGeneration = (statusByPhase, generation) => {
169
177
  if (typeof generation !== "number")
170
178
  return false;
171
179
  for (const status of statusByPhase.values()) {
172
- if (!status.ok && status.generation === generation)
180
+ if (!status.ok && status.phase !== "route" && status.generation === generation)
173
181
  return true;
174
182
  }
175
183
  return false;
@@ -230,7 +238,7 @@ var resolveIdleSuspendMs = (raw) => {
230
238
  return null;
231
239
  return Math.round(parsed);
232
240
  };
233
- var hasAnyBuildFailure = (statusByPhase) => [...statusByPhase.values()].some((status) => !status.ok);
241
+ var hasAnyBuildFailure = (statusByPhase) => [...statusByPhase.values()].some((status) => !status.ok && status.phase !== "route");
234
242
  var shouldRefreshConfigOnIdleWake = (batch) => !!batch && batch.kinds.has("config");
235
243
  var RETURNING_BUILDER_STATUSES = new Set(["starting", "recycling", "restarting"]);
236
244
  var shouldHoldForReturningBuilder = ({
@@ -567,6 +575,7 @@ class HmrWatcher {
567
575
  #index;
568
576
  #timer = null;
569
577
  #verifyTimer = null;
578
+ #windowStartedAt = null;
570
579
  #stopped = false;
571
580
  #flushing = false;
572
581
  #unreportedChanges = 0;
@@ -574,7 +583,7 @@ class HmrWatcher {
574
583
  #reportedGaps = "";
575
584
  constructor(opts) {
576
585
  this.#roots = [...new Set(opts.roots.map((r) => path5.resolve(r)))];
577
- this.#debounceMs = opts.debounceMs ?? 80;
586
+ this.#debounceMs = opts.debounceMs ?? HmrWatcher.#envDebounceMs() ?? 30;
578
587
  this.#verifyDelayMs = opts.verifyDelayMs ?? 250;
579
588
  this.#onBatch = opts.onBatch;
580
589
  this.#logger = opts.logger;
@@ -640,6 +649,7 @@ class HmrWatcher {
640
649
  this.#scheduleFlush();
641
650
  }
642
651
  #scheduleFlush() {
652
+ this.#windowStartedAt ??= Date.now();
643
653
  if (this.#flushing)
644
654
  return;
645
655
  if (this.#timer)
@@ -657,14 +667,19 @@ class HmrWatcher {
657
667
  try {
658
668
  while (!this.#stopped) {
659
669
  await this.#mergeDetectedChanges();
660
- if (this.#pending.size === 0)
670
+ if (this.#pending.size === 0) {
671
+ this.#windowStartedAt = null;
661
672
  break;
673
+ }
662
674
  const files = Array.from(this.#pending.keys());
663
675
  const kinds = new Set(this.#pending.values());
676
+ const flushAt = Date.now();
677
+ const trace = { eventAt: this.#windowStartedAt ?? flushAt, flushAt };
678
+ this.#windowStartedAt = null;
664
679
  this.#pending.clear();
665
680
  this.#hinted.clear();
666
681
  try {
667
- await this.#onBatch({ files, kinds });
682
+ await this.#onBatch({ files, kinds, trace });
668
683
  } catch (e) {
669
684
  this.#logger.error(`[hmr] onBatch error: ${e.message}`);
670
685
  }
@@ -715,6 +730,11 @@ class HmrWatcher {
715
730
  const rest = gaps.length > 3 ? ` and ${gaps.length - 3} more` : "";
716
731
  this.#logger.warn(`[hmr] cannot read ${gaps.length} path(s), so edits underneath them will not rebuild: ${shown}${rest}`);
717
732
  }
733
+ static #envDebounceMs() {
734
+ const raw = process.env.AKAN_DEV_WATCH_DEBOUNCE_MS;
735
+ const ms = raw ? Number(raw) : Number.NaN;
736
+ return Number.isInteger(ms) && ms >= 0 ? ms : null;
737
+ }
718
738
  #scheduleVerify() {
719
739
  if (this.#stopped || this.#verifyDelayMs <= 0)
720
740
  return;
@@ -807,4 +827,4 @@ class WatchRootResolver {
807
827
  }
808
828
  }
809
829
 
810
- export { ApplicationBuildReporter, BUILDER_MIN_RSS_RECYCLE_INTERVAL_MS, SOURCE_EXTS, shouldRestartBackendByDevPlan, shouldRestartBuilderByDevPlan, shouldAbandonBackendRecovery, normalizeBackendReportedGeneration, shouldRestartDevHostByDevPlan, devHostStateOf, isLegacyBackendFallbackFile, shouldMarkBuildPhaseRecovered, createBackendBuildStatus, backendRestartReasonFromMessage, mergeBackendRestartReasons, shouldReplaceLastGoodMessage, shouldQueueBuildStatusReplay, hasBuildFailureForGeneration, decideBuilderRssRecycle, decideBuilderRssSettle, decideIdleSuspend, resolveIdleSuspendMs, hasAnyBuildFailure, shouldRefreshConfigOnIdleWake, shouldHoldForReturningBuilder, shouldWarnBuilderRssCeilingTight, isRssCeilingUnreachable, shouldRelayRecycledFrontendState, mergeInvalidateMessages, buildStatusReplaySequence, filesChangedSince, HmrWatcher, WatchRootResolver };
830
+ export { ApplicationBuildReporter, BUILDER_MIN_RSS_RECYCLE_INTERVAL_MS, SOURCE_EXTS, shouldRestartBackendByDevPlan, shouldRestartBuilderByDevPlan, shouldAbandonBackendRecovery, normalizeBackendReportedGeneration, shouldRestartDevHostByDevPlan, devHostStateOf, isLegacyBackendFallbackFile, shouldMarkBuildPhaseRecovered, shouldKeepBuildFailure, createBackendBuildStatus, backendRestartReasonFromMessage, mergeBackendRestartReasons, shouldReplaceLastGoodMessage, shouldQueueBuildStatusReplay, hasBuildFailureForGeneration, decideBuilderRssRecycle, decideBuilderRssSettle, decideIdleSuspend, resolveIdleSuspendMs, hasAnyBuildFailure, shouldRefreshConfigOnIdleWake, shouldHoldForReturningBuilder, shouldWarnBuilderRssCeilingTight, isRssCeilingUnreachable, shouldRelayRecycledFrontendState, mergeInvalidateMessages, buildStatusReplaySequence, filesChangedSince, HmrWatcher, WatchRootResolver };