@akanjs/cli 3.0.0-alpha.76 → 3.0.0-alpha.78

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 (45) hide show
  1. package/.build-stamp +1 -1
  2. package/{agent.command-j4744bct.js → agent.command-q2rgd8jz.js} +5 -5
  3. package/{application.command-1sq0zwqx.js → application.command-kd5zj0k9.js} +9 -4
  4. package/buildBatch.proc.js +1 -1
  5. package/{capacitorApp-nqnvsbv2.js → capacitorApp-szqr3cxr.js} +2 -2
  6. package/{cloud.command-ajkhg234.js → cloud.command-v60xnfdx.js} +9 -7
  7. package/commandManifest.json +1 -1
  8. package/{context.command-jxga9cc9.js → context.command-hac3x83c.js} +12 -12
  9. package/fleet.command-jv24wcae.js +793 -0
  10. package/{guideline.command-2fts4m5x.js → guideline.command-85x1tvjb.js} +2 -2
  11. package/incrementalBuilder.proc.js +1 -1
  12. package/index-19nz5chq.js +76 -0
  13. package/{index-6wsjpt7b.js → index-1szrbtj9.js} +1 -1
  14. package/{index-peg7zphh.js → index-47zynjx7.js} +4 -4
  15. package/{index-aevn8b0n.js → index-6w77v5df.js} +1 -1
  16. package/{index-3qa4f4j7.js → index-7605ykh6.js} +43 -12
  17. package/{index-5yxz0zzc.js → index-dfn0kqj7.js} +3 -3
  18. package/{index-85rdqkfx.js → index-dz1q44m8.js} +3 -3
  19. package/{index-120pzxb2.js → index-egng0kc4.js} +3 -3
  20. package/{index-qhy7zdmz.js → index-ffrhjdwd.js} +2 -2
  21. package/index-jn9b717k.js +109 -0
  22. package/{index-v6p94mz1.js → index-pj3hk9kt.js} +7 -7
  23. package/{index-qgzzz44h.js → index-psx0z6hb.js} +5 -5
  24. package/{index-0zabybjx.js → index-pzsryyjv.js} +13 -13
  25. package/{index-j8rp2kdv.js → index-qwfwk8be.js} +3 -3
  26. package/{index-2j5xrm1c.js → index-ta1mk0xh.js} +5 -5
  27. package/{index-aczwndks.js → index-w0g7hcr7.js} +2 -2
  28. package/{index-mk1x6sad.js → index-yz8988we.js} +1 -1
  29. package/{index-mpka7dq4.js → index-zec5gcx0.js} +1 -1
  30. package/{index-004ah39s.js → index-zkrzv21w.js} +11 -1
  31. package/{index-yzsp0jgb.js → index-zp0cmfgd.js} +17 -4
  32. package/index.js +19 -18
  33. package/{library.command-tfkfhbcb.js → library.command-nvp0wetm.js} +7 -3
  34. package/{localRegistry.command-rhn2mh9j.js → localRegistry.command-dnefn893.js} +8 -6
  35. package/{module.command-29xg1kzr.js → module.command-xs6ded4j.js} +6 -6
  36. package/{package.command-j6yn5c7h.js → package.command-af8sxhff.js} +3 -3
  37. package/package.json +2 -2
  38. package/{page.command-vgxetvga.js → page.command-gr6rbz17.js} +3 -3
  39. package/{primitive.command-k85cvm2z.js → primitive.command-qjf4mbth.js} +7 -7
  40. package/{quality.command-9dsv2jw7.js → quality.command-9xhaxzm1.js} +2 -2
  41. package/{repair.command-mzdh4yby.js → repair.command-a2z4d5a0.js} +5 -5
  42. package/{scalar.command-0cgq46dj.js → scalar.command-ax8taqh1.js} +5 -5
  43. package/templates/workspaceRoot/.gitignore.template +0 -1
  44. package/{workflow.command-2yxpvpg3.js → workflow.command-gwkw0jae.js} +10 -10
  45. package/{workspace.command-42yrde58.js → workspace.command-53qpkgzp.js} +20 -18
@@ -10,8 +10,8 @@ import {
10
10
  command,
11
11
  runner,
12
12
  script
13
- } from "./index-6wsjpt7b.js";
14
- import"./index-004ah39s.js";
13
+ } from "./index-1szrbtj9.js";
14
+ import"./index-zkrzv21w.js";
15
15
  import"./index-dp66vwr6.js";
16
16
  import"./index-mxvakhsm.js";
17
17
  import {
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  AppExecutor,
18
18
  WorkspaceExecutor
19
- } from "./index-004ah39s.js";
19
+ } from "./index-zkrzv21w.js";
20
20
  import"./index-dp66vwr6.js";
21
21
  import"./index-mxvakhsm.js";
22
22
  import"./index-1577bej2.js";
@@ -0,0 +1,76 @@
1
+ // @bun
2
+ // pkgs/@akanjs/devkit/libSource.ts
3
+ class LibSource {
4
+ static manifestKey = "akan";
5
+ static unhashedDirs = ["env"];
6
+ #lib;
7
+ constructor(lib) {
8
+ this.#lib = lib;
9
+ }
10
+ get #prefix() {
11
+ return `libs/${this.#lib.name}/`;
12
+ }
13
+ #isHashed(file) {
14
+ const relative = file.slice(this.#prefix.length);
15
+ return !LibSource.unhashedDirs.includes(relative.split("/")[0] ?? "");
16
+ }
17
+ async#hashableContent(file) {
18
+ const content = await this.#lib.workspace.readFile(file);
19
+ if (file !== `${this.#prefix}package.json`)
20
+ return content;
21
+ const manifest = JSON.parse(content);
22
+ delete manifest[LibSource.manifestKey];
23
+ return JSON.stringify(manifest);
24
+ }
25
+ async computeHash() {
26
+ const files = (await this.#lib.workspace.listGitFiles([`libs/${this.#lib.name}`], { untracked: true })).filter((file) => this.#isHashed(file));
27
+ const hasher = new Bun.CryptoHasher("sha256");
28
+ for (const file of files) {
29
+ hasher.update(file);
30
+ hasher.update("\x00");
31
+ hasher.update(await this.#hashableContent(file));
32
+ hasher.update("\x00");
33
+ }
34
+ return hasher.digest("hex").slice(0, 32);
35
+ }
36
+ async read() {
37
+ const manifest = await this.#lib.getPackageJson();
38
+ const akan = manifest[LibSource.manifestKey];
39
+ return akan?.source ?? null;
40
+ }
41
+ async write({ origin, sha }) {
42
+ const [manifest, hash] = await Promise.all([this.#lib.getPackageJson(), this.computeHash()]);
43
+ const akan = manifest[LibSource.manifestKey] ?? {};
44
+ const stamp = { origin, sha, hash, syncedAt: new Date().toISOString() };
45
+ await this.#lib.setPackageJson({ ...manifest, [LibSource.manifestKey]: { ...akan, source: stamp } });
46
+ return stamp;
47
+ }
48
+ async syncStamp({ origin, sha }) {
49
+ const [current, hash] = await Promise.all([this.read(), this.computeHash()]);
50
+ if (current?.origin === origin && current.sha === sha && current.hash === hash)
51
+ return { stamp: current, changed: false };
52
+ return { stamp: await this.write({ origin, sha }), changed: true };
53
+ }
54
+ async status() {
55
+ const [stamp, hash] = await Promise.all([this.read(), this.computeHash()]);
56
+ const drift = !stamp ? "unstamped" : stamp.hash === hash ? "clean" : "drifted";
57
+ return { lib: this.#lib.name, drift, stamp, hash };
58
+ }
59
+ }
60
+ function formatLibStatuses(statuses) {
61
+ const marks = { clean: "clean ", drifted: "DRIFTED ", unstamped: "unstamped" };
62
+ const sections = [
63
+ "Akan Library Source Status",
64
+ "",
65
+ ...statuses.map((status) => {
66
+ const origin = status.stamp ? `${status.stamp.origin}@${status.stamp.sha}` : "no akan.source in package.json";
67
+ return ` ${marks[status.drift]} libs/${status.lib} ${origin}`;
68
+ }),
69
+ "",
70
+ `drifted: ${statuses.filter((status) => status.drift === "drifted").length} / ${statuses.length}`
71
+ ];
72
+ return sections.join(`
73
+ `);
74
+ }
75
+
76
+ export { LibSource, formatLibStatuses };
@@ -6,7 +6,7 @@ import {
6
6
  ModuleExecutor,
7
7
  PkgExecutor,
8
8
  WorkspaceExecutor
9
- } from "./index-004ah39s.js";
9
+ } from "./index-zkrzv21w.js";
10
10
  import {
11
11
  getDirname
12
12
  } from "./index-1577bej2.js";
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  ModuleScript
4
- } from "./index-v6p94mz1.js";
4
+ } from "./index-pj3hk9kt.js";
5
5
  import {
6
6
  addFieldUiPolicyForType,
7
7
  coerceFieldDefault,
@@ -34,15 +34,15 @@ import {
34
34
  sourceFile,
35
35
  validationCommandsForTarget,
36
36
  viaBuilderParameterName
37
- } from "./index-aevn8b0n.js";
37
+ } from "./index-6w77v5df.js";
38
38
  import {
39
39
  script
40
- } from "./index-6wsjpt7b.js";
40
+ } from "./index-1szrbtj9.js";
41
41
  import {
42
42
  AppExecutor,
43
43
  LibExecutor,
44
44
  ModuleExecutor
45
- } from "./index-004ah39s.js";
45
+ } from "./index-zkrzv21w.js";
46
46
 
47
47
  // pkgs/@akanjs/cli/primitive/primitive.script.ts
48
48
  import { capitalize } from "akanjs/common";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  AppExecutor,
4
4
  LibExecutor
5
- } from "./index-004ah39s.js";
5
+ } from "./index-zkrzv21w.js";
6
6
 
7
7
  // pkgs/@akanjs/devkit/workflow/utils.ts
8
8
  var jsonText = (value, { trailingNewline = true } = {}) => `${JSON.stringify(value, null, 2)}${trailingNewline ? `
@@ -1,13 +1,20 @@
1
1
  // @bun
2
+ import {
3
+ LibSource,
4
+ formatLibStatuses
5
+ } from "./index-19nz5chq.js";
2
6
  import {
3
7
  runner,
4
8
  script
5
- } from "./index-6wsjpt7b.js";
9
+ } from "./index-1szrbtj9.js";
6
10
  import {
7
11
  LibExecutor
8
- } from "./index-004ah39s.js";
12
+ } from "./index-zkrzv21w.js";
13
+
14
+ // pkgs/@akanjs/cli/library/library.script.ts
15
+ import { Logger } from "akanjs/common";
9
16
 
10
- // pkgs/@akanjs/cli/semver.ts
17
+ // pkgs/@akanjs/devkit/semver.ts
11
18
  var stripRangeOperator = (version) => version.replace(/^[\s^~>=<v]+/, "").trim();
12
19
  var parseVersion = (version) => {
13
20
  return version.replace(/^[^\d]*/, "").split(/[.-]/).map((part) => Number.parseInt(part, 10)).map((part) => Number.isFinite(part) ? part : 0);
@@ -33,6 +40,7 @@ var compareSemver = (a, b) => {
33
40
 
34
41
  // pkgs/@akanjs/cli/library/library.runner.ts
35
42
  class LibraryRunner extends runner("library") {
43
+ static libraryRepository = "https://github.com/akan-team/akanjs.git";
36
44
  async createLibrary(libName, workspace) {
37
45
  await workspace.mkdir(`libs/${libName}`);
38
46
  await workspace.applyTemplate({ basePath: `libs/${libName}`, template: "libRoot", dict: { libName } });
@@ -45,24 +53,40 @@ class LibraryRunner extends runner("library") {
45
53
  async#copyInstalledLibrary(workspace, libName) {
46
54
  const installedPackageJson = `node_modules/akanjs/libs/${libName}/package.json`;
47
55
  if (!await workspace.exists(installedPackageJson))
48
- return false;
56
+ return null;
49
57
  await workspace.cp(`node_modules/akanjs/libs/${libName}`, `libs/${libName}`);
50
- return true;
58
+ return { origin: "akanjs", sha: await this.#installedAkanVersion(workspace) };
59
+ }
60
+ async#installedAkanVersion(workspace) {
61
+ const manifestPath = "node_modules/akanjs/package.json";
62
+ if (!await workspace.exists(manifestPath))
63
+ return "unknown";
64
+ const { version } = await workspace.readJson(manifestPath);
65
+ return version ?? "unknown";
51
66
  }
52
67
  async#copyLibraryFromRepository(workspace, libName) {
53
68
  await workspace.mkdir("node_modules/.akan");
54
69
  if (await workspace.exists("node_modules/.akan/akanjs"))
55
70
  await workspace.removeDir("node_modules/.akan/akanjs");
56
- await workspace.exec(`cd node_modules/.akan && git clone https://github.com/akan-team/akanjs.git`);
71
+ await workspace.exec(`cd node_modules/.akan && git clone ${LibraryRunner.libraryRepository}`);
57
72
  await workspace.cp(`node_modules/.akan/akanjs/libs/${libName}`, `libs/${libName}`);
73
+ const sha = await workspace.spawn("git", ["-C", "node_modules/.akan/akanjs", "rev-parse", "HEAD"]);
74
+ return { origin: LibraryRunner.libraryRepository, sha: sha.trim().slice(0, 12) };
58
75
  }
59
76
  async installLibrary(workspace, libName) {
60
- const copiedFromInstalledPackage = await this.#copyInstalledLibrary(workspace, libName);
61
- if (!copiedFromInstalledPackage)
62
- await this.#copyLibraryFromRepository(workspace, libName);
63
- await workspace.cp(`libs/${libName}/env/env.server.example.ts`, `libs/${libName}/env/env.server.testing.ts`);
64
- await workspace.commit(`Add ${libName} library`);
65
- return LibExecutor.from(workspace, libName);
77
+ const source = await this.#copyInstalledLibrary(workspace, libName) ?? await this.#copyLibraryFromRepository(workspace, libName);
78
+ const testingEnv = `libs/${libName}/env/env.server.testing.ts`;
79
+ if (!await workspace.exists(testingEnv))
80
+ await workspace.cp(`libs/${libName}/env/env.server.example.ts`, testingEnv);
81
+ const lib = LibExecutor.from(workspace, libName);
82
+ const stamp = await new LibSource(lib).write(source);
83
+ if (await workspace.hasChanges())
84
+ await workspace.commit(`Install ${libName} library from ${stamp.origin}`);
85
+ return lib;
86
+ }
87
+ async libraryStatuses(workspace) {
88
+ const libNames = await workspace.getLibs();
89
+ return await Promise.all(libNames.map((libName) => new LibSource(LibExecutor.from(workspace, libName)).status()));
66
90
  }
67
91
  async mergeLibraryDependencies(lib) {
68
92
  const libPackageJson = await lib.getPackageJson();
@@ -109,6 +133,13 @@ class LibraryScript extends script("library", [LibraryRunner]) {
109
133
  await this.libraryRunner.removeLibrary(lib);
110
134
  spinner.succeed(`Library ${lib.name} (libs/${lib.name}) is removed`);
111
135
  }
136
+ async libraryStatus(workspace, format = "text") {
137
+ const spinner = workspace.spinning("Checking library sources...");
138
+ const statuses = await this.libraryRunner.libraryStatuses(workspace);
139
+ const drifted = statuses.filter((status) => status.drift === "drifted").length;
140
+ spinner.succeed(`Checked ${statuses.length} libraries (${drifted} drifted)`);
141
+ Logger.rawLog(format === "json" ? JSON.stringify(statuses, null, 2) : formatLibStatuses(statuses));
142
+ }
112
143
  async installLibrary(workspace, libName) {
113
144
  const installSpinner = workspace.spinning(`Installing ${libName} library`);
114
145
  const lib = await this.libraryRunner.installLibrary(workspace, libName);
@@ -1,14 +1,14 @@
1
1
  // @bun
2
2
  import {
3
3
  AkanContextAnalyzer
4
- } from "./index-aczwndks.js";
4
+ } from "./index-w0g7hcr7.js";
5
5
  import {
6
6
  Prompter
7
7
  } from "./index-k7731a4v.js";
8
8
  import {
9
9
  runner,
10
10
  script
11
- } from "./index-6wsjpt7b.js";
11
+ } from "./index-1szrbtj9.js";
12
12
  import {
13
13
  AGENT_BLOCK_END,
14
14
  AGENT_BLOCK_START,
@@ -19,7 +19,7 @@ import {
19
19
  renderRecipeEntries,
20
20
  stampBlockVersion,
21
21
  upsertAgentBlock
22
- } from "./index-004ah39s.js";
22
+ } from "./index-zkrzv21w.js";
23
23
  import {
24
24
  collectRecipeSources,
25
25
  scanRecipes
@@ -7,14 +7,14 @@ import {
7
7
  } from "./index-safgeq9a.js";
8
8
  import {
9
9
  openBrowser
10
- } from "./index-yzsp0jgb.js";
10
+ } from "./index-zp0cmfgd.js";
11
11
  import {
12
12
  runner
13
- } from "./index-6wsjpt7b.js";
13
+ } from "./index-1szrbtj9.js";
14
14
  import {
15
15
  AppExecutor,
16
16
  WorkspaceExecutor
17
- } from "./index-004ah39s.js";
17
+ } from "./index-zkrzv21w.js";
18
18
 
19
19
  // pkgs/@akanjs/cli/npmRegistry.ts
20
20
  var defaultNpmRegistry = "https://registry.npmjs.org";
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  AkanContextAnalyzer
4
- } from "./index-aczwndks.js";
4
+ } from "./index-w0g7hcr7.js";
5
5
  import {
6
6
  WorkflowExecutor,
7
7
  compactWorkflowInputs,
@@ -23,10 +23,10 @@ import {
23
23
  workflowCommandsForPlan,
24
24
  workflowPlanApproval,
25
25
  writeWorkflowRunArtifact
26
- } from "./index-aevn8b0n.js";
26
+ } from "./index-6w77v5df.js";
27
27
  import {
28
28
  runner
29
- } from "./index-6wsjpt7b.js";
29
+ } from "./index-1szrbtj9.js";
30
30
 
31
31
  // pkgs/@akanjs/cli/workflow/workflow.runner.ts
32
32
  import { mkdir, readFile, writeFile } from "fs/promises";
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  runner,
4
4
  script
5
- } from "./index-6wsjpt7b.js";
5
+ } from "./index-1szrbtj9.js";
6
6
  import {
7
7
  PkgExecutor
8
- } from "./index-004ah39s.js";
8
+ } from "./index-zkrzv21w.js";
9
9
  import {
10
10
  TypeScriptDependencyScanner
11
11
  } from "./index-h5sr2nnj.js";
@@ -0,0 +1,109 @@
1
+ // @bun
2
+ import {
3
+ AppInfo
4
+ } from "./index-zkrzv21w.js";
5
+
6
+ // pkgs/@akanjs/devkit/slicePlanner.ts
7
+ class SlicePlanner {
8
+ static memberDirs = ["apps", "libs", "pkgs"];
9
+ static toolchainDependencies = [
10
+ "@akanjs/cli",
11
+ "@akanjs/devkit",
12
+ "@biomejs/biome",
13
+ "@types/bun",
14
+ "akanjs",
15
+ "typescript"
16
+ ];
17
+ #app;
18
+ constructor(app) {
19
+ this.#app = app;
20
+ }
21
+ async#trackedFiles(paths) {
22
+ return await this.#app.workspace.listGitFiles(paths);
23
+ }
24
+ async#untrackedFiles(paths) {
25
+ const [tracked, all] = await Promise.all([
26
+ this.#app.workspace.listGitFiles(paths),
27
+ this.#app.workspace.listGitFiles(paths, { untracked: true })
28
+ ]);
29
+ const trackedSet = new Set(tracked);
30
+ return all.filter((file) => !trackedSet.has(file));
31
+ }
32
+ #isMemberFile(file) {
33
+ return SlicePlanner.memberDirs.includes(file.split("/")[0] ?? "");
34
+ }
35
+ static #requiredDependencies(appInfo) {
36
+ const scanResults = [
37
+ appInfo.getScanResult(),
38
+ ...[...appInfo.getLibInfos().values()].map((lib) => lib.getScanResult())
39
+ ];
40
+ return new Set([
41
+ ...SlicePlanner.toolchainDependencies,
42
+ ...scanResults.flatMap((scanResult) => [
43
+ ...scanResult.dependencies,
44
+ ...scanResult.devDependencies,
45
+ ...scanResult.pkgDeps
46
+ ])
47
+ ]);
48
+ }
49
+ async#patchWarnings(packageJson) {
50
+ const patchedDependencies = packageJson.patchedDependencies ?? {};
51
+ const missing = (await Promise.all(Object.entries(patchedDependencies).map(async ([spec, patchPath]) => await this.#app.workspace.exists(patchPath) ? null : `${spec} -> ${patchPath}`))).filter((entry) => !!entry);
52
+ return missing.length ? [`patchedDependencies references a missing patch file: ${missing.join(", ")}`] : [];
53
+ }
54
+ async plan() {
55
+ const appInfo = await AppInfo.fromExecutor(this.#app);
56
+ const libs = appInfo.getLibs();
57
+ const slicePaths = [`apps/${this.#app.name}`, ...libs.map((lib) => `libs/${lib}`)];
58
+ const [appFiles, allTracked, untracked, rootPackageJson] = await Promise.all([
59
+ this.#trackedFiles([`apps/${this.#app.name}`]),
60
+ this.#trackedFiles(["."]),
61
+ this.#untrackedFiles(slicePaths),
62
+ this.#app.workspace.getPackageJson()
63
+ ]);
64
+ const libFiles = Object.fromEntries(await Promise.all(libs.map(async (lib) => [lib, await this.#trackedFiles([`libs/${lib}`])])));
65
+ const rootFiles = allTracked.filter((file) => !this.#isMemberFile(file));
66
+ const required = SlicePlanner.#requiredDependencies(appInfo);
67
+ const rootDependencies = { ...rootPackageJson.dependencies, ...rootPackageJson.devDependencies };
68
+ const unusedDependencies = Object.keys(rootDependencies).filter((dep) => !required.has(dep)).sort();
69
+ const { workspaces: _workspaces, ...slicePackageJson } = rootPackageJson;
70
+ const warnings = [
71
+ ...untracked.length ? [`${untracked.length} untracked file(s) under the slice paths: ${untracked.join(", ")}`] : [],
72
+ ...rootPackageJson.workspaces ? ["root `workspaces` dropped \u2014 a slice consumes akanjs from the registry"] : [],
73
+ ...await this.#patchWarnings(rootPackageJson)
74
+ ];
75
+ return {
76
+ app: this.#app.name,
77
+ libs,
78
+ appFiles,
79
+ libFiles,
80
+ rootFiles,
81
+ packageJson: slicePackageJson,
82
+ unusedDependencies,
83
+ warnings
84
+ };
85
+ }
86
+ }
87
+ var rootEntriesOf = (rootFiles) => [...new Set(rootFiles.map((file) => file.split("/")[0] ?? file))].sort();
88
+ function formatSlicePlan(plan) {
89
+ const libCounts = Object.entries(plan.libFiles).map(([lib, files]) => ` - libs/${lib}: ${files.length} files`);
90
+ const sections = [
91
+ "Akan Slice Plan",
92
+ `app: ${plan.app} (apps/${plan.app}: ${plan.appFiles.length} files)`,
93
+ `libs: ${plan.libs.length ? plan.libs.join(", ") : "(none)"}`,
94
+ ...libCounts,
95
+ `workspace shell: ${plan.rootFiles.length} files across ${rootEntriesOf(plan.rootFiles).join(", ")}`,
96
+ "",
97
+ `Unused root dependencies (${plan.unusedDependencies.length}) \u2014 prune candidates, not pruned:`,
98
+ "",
99
+ ...plan.unusedDependencies.length ? plan.unusedDependencies.map((dep) => ` - ${dep}`) : [" (none)"],
100
+ "",
101
+ `Warnings (${plan.warnings.length}):`,
102
+ "",
103
+ ...plan.warnings.length ? plan.warnings.map((warning) => ` - ${warning}`) : [" (none)"]
104
+ ];
105
+ return sections.join(`
106
+ `);
107
+ }
108
+
109
+ export { SlicePlanner, formatSlicePlan };
@@ -4,10 +4,13 @@ import {
4
4
  } from "./index-ss469dec.js";
5
5
  import {
6
6
  PageScript
7
- } from "./index-mk1x6sad.js";
7
+ } from "./index-yz8988we.js";
8
8
  import {
9
9
  AiSession
10
10
  } from "./index-safgeq9a.js";
11
+ import {
12
+ Prompter
13
+ } from "./index-k7731a4v.js";
11
14
  import {
12
15
  bilingualDescriptionForField,
13
16
  bilingualLabelForField,
@@ -15,17 +18,14 @@ import {
15
18
  generatedFilesForSync,
16
19
  moduleSourcePaths,
17
20
  sourceFile
18
- } from "./index-aevn8b0n.js";
19
- import {
20
- Prompter
21
- } from "./index-k7731a4v.js";
21
+ } from "./index-6w77v5df.js";
22
22
  import {
23
23
  runner,
24
24
  script
25
- } from "./index-6wsjpt7b.js";
25
+ } from "./index-1szrbtj9.js";
26
26
  import {
27
27
  ModuleExecutor
28
- } from "./index-004ah39s.js";
28
+ } from "./index-zkrzv21w.js";
29
29
  import {
30
30
  FileSys
31
31
  } from "./index-67546d0j.js";
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  CloudRunner
4
- } from "./index-85rdqkfx.js";
4
+ } from "./index-dz1q44m8.js";
5
5
  import {
6
6
  PackageScript
7
- } from "./index-qhy7zdmz.js";
7
+ } from "./index-ffrhjdwd.js";
8
8
  import {
9
9
  AiSession,
10
10
  CloudApi,
@@ -12,13 +12,13 @@ import {
12
12
  } from "./index-safgeq9a.js";
13
13
  import {
14
14
  ApplicationScript
15
- } from "./index-yzsp0jgb.js";
15
+ } from "./index-zp0cmfgd.js";
16
16
  import {
17
17
  script
18
- } from "./index-6wsjpt7b.js";
18
+ } from "./index-1szrbtj9.js";
19
19
  import {
20
20
  PkgExecutor
21
- } from "./index-004ah39s.js";
21
+ } from "./index-zkrzv21w.js";
22
22
 
23
23
  // pkgs/@akanjs/cli/cloud/cloud.script.ts
24
24
  import { Logger } from "akanjs/common";
@@ -1,22 +1,22 @@
1
1
  // @bun
2
2
  import {
3
3
  RepairRunner
4
- } from "./index-j8rp2kdv.js";
4
+ } from "./index-qwfwk8be.js";
5
5
  import {
6
6
  WorkflowRunner
7
- } from "./index-120pzxb2.js";
7
+ } from "./index-egng0kc4.js";
8
8
  import {
9
9
  ScalarScript
10
- } from "./index-2j5xrm1c.js";
10
+ } from "./index-ta1mk0xh.js";
11
11
  import {
12
12
  PrimitiveScript
13
- } from "./index-peg7zphh.js";
13
+ } from "./index-47zynjx7.js";
14
14
  import {
15
15
  ModuleScript
16
- } from "./index-v6p94mz1.js";
16
+ } from "./index-pj3hk9kt.js";
17
17
  import {
18
18
  isPlaceholderAppId
19
- } from "./index-mpka7dq4.js";
19
+ } from "./index-zec5gcx0.js";
20
20
  import {
21
21
  AkanContextAnalyzer,
22
22
  akanMcpInstallConfigPaths,
@@ -27,17 +27,17 @@ import {
27
27
  createAkanMcpServer,
28
28
  renderDoctorText,
29
29
  upsertCodexMcpServerBlock
30
- } from "./index-aczwndks.js";
30
+ } from "./index-w0g7hcr7.js";
31
+ import {
32
+ Prompter
33
+ } from "./index-k7731a4v.js";
31
34
  import {
32
35
  buildAkanModuleContextIndex,
33
36
  createWorkflowBaselineSummary,
34
37
  createWorkflowStepRegistry,
35
38
  jsonText,
36
39
  toolingRolloutGate
37
- } from "./index-aevn8b0n.js";
38
- import {
39
- Prompter
40
- } from "./index-k7731a4v.js";
40
+ } from "./index-6w77v5df.js";
41
41
  import {
42
42
  getMobileTargets
43
43
  } from "./index-76rn3g2c.js";
@@ -45,10 +45,10 @@ import {
45
45
  CommandContainer,
46
46
  runner,
47
47
  script
48
- } from "./index-6wsjpt7b.js";
48
+ } from "./index-1szrbtj9.js";
49
49
  import {
50
50
  AppExecutor
51
- } from "./index-004ah39s.js";
51
+ } from "./index-zkrzv21w.js";
52
52
 
53
53
  // pkgs/@akanjs/cli/context/context.script.ts
54
54
  import { Logger } from "akanjs/common";
@@ -1,17 +1,17 @@
1
1
  // @bun
2
2
  import {
3
3
  AkanContextAnalyzer
4
- } from "./index-aczwndks.js";
4
+ } from "./index-w0g7hcr7.js";
5
5
  import {
6
6
  createRepairReport,
7
7
  generatedFilePathsForTarget,
8
8
  renderRepairReport,
9
9
  writeGeneratedSyncState,
10
10
  writeWorkflowRunArtifact
11
- } from "./index-aevn8b0n.js";
11
+ } from "./index-6w77v5df.js";
12
12
  import {
13
13
  runner
14
- } from "./index-6wsjpt7b.js";
14
+ } from "./index-1szrbtj9.js";
15
15
 
16
16
  // pkgs/@akanjs/cli/repair/repair.runner.ts
17
17
  var commandForShell = (command) => command.startsWith("akan ") ? `bun run ${command}` : command;
@@ -5,18 +5,18 @@ import {
5
5
  import {
6
6
  AiSession
7
7
  } from "./index-safgeq9a.js";
8
+ import {
9
+ Prompter
10
+ } from "./index-k7731a4v.js";
8
11
  import {
9
12
  createPassedPrimitiveReport,
10
13
  generatedFilesForSync,
11
14
  scalarChangedFiles
12
- } from "./index-aevn8b0n.js";
13
- import {
14
- Prompter
15
- } from "./index-k7731a4v.js";
15
+ } from "./index-6w77v5df.js";
16
16
  import {
17
17
  runner,
18
18
  script
19
- } from "./index-6wsjpt7b.js";
19
+ } from "./index-1szrbtj9.js";
20
20
 
21
21
  // pkgs/@akanjs/cli/scalar/scalar.prompt.ts
22
22
  import { input } from "@inquirer/prompts";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  workflowRunArtifactPath,
4
4
  workflowSyncDir
5
- } from "./index-aevn8b0n.js";
5
+ } from "./index-6w77v5df.js";
6
6
  import {
7
7
  AppExecutor,
8
8
  LibExecutor,
@@ -11,7 +11,7 @@ import {
11
11
  readDevkitVersion,
12
12
  rootAllowedDirs,
13
13
  rootAllowedFiles
14
- } from "./index-004ah39s.js";
14
+ } from "./index-zkrzv21w.js";
15
15
  import {
16
16
  collectRecipeSources,
17
17
  findInlineRecipeDuplicates,
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  runner,
4
4
  script
5
- } from "./index-6wsjpt7b.js";
5
+ } from "./index-1szrbtj9.js";
6
6
 
7
7
  // pkgs/@akanjs/cli/page/page.runner.ts
8
8
  class PageRunner extends runner("page") {
@@ -5,7 +5,7 @@ import {
5
5
  } from "./index-76rn3g2c.js";
6
6
  import {
7
7
  CommandExecutionError
8
- } from "./index-004ah39s.js";
8
+ } from "./index-zkrzv21w.js";
9
9
 
10
10
  // pkgs/@akanjs/devkit/capacitorApp.ts
11
11
  import { cp, mkdir, readFile, rm, writeFile } from "fs/promises";