@akanjs/cli 3.0.0-beta.9 → 3.0.0

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 (224) hide show
  1. package/.build-stamp +1 -1
  2. package/CodeAgent-2vmp9qe0.js +9 -0
  3. package/CodeAgentRpcHost-p7h6n2hp.js +7 -0
  4. package/CodeAgentRpcListener-7p7z5dd7.js +97 -0
  5. package/CodeTui-5ed6bg2a.js +1457 -0
  6. package/README.ko.md +83 -28
  7. package/README.md +70 -27
  8. package/TunnelShare-cwh9ezsm.js +9 -0
  9. package/{agent.command-0q17pnrs.js → agent.command-gn73rhe7.js} +8 -9
  10. package/akanCode.js +102 -0
  11. package/application.command-e968t0hw.js +246 -0
  12. package/{applicationBuildRunner-kxwbssgn.js → applicationBuildRunner-64taxseg.js} +121 -77
  13. package/buildBatch.proc.js +120 -32
  14. package/cloud.command-0jm301rr.js +95 -0
  15. package/cloud.script-nemnzjpv.js +20 -0
  16. package/code.command-18kcm7hq.js +154 -0
  17. package/commandManifest.json +1 -1
  18. package/consoleToStderr-h5bryj94.js +7 -0
  19. package/context.command-trd9bn18.js +48 -0
  20. package/context.runner-y5hwh673.js +21 -0
  21. package/{dependencyScanner-shs82ynp.js → dependencyScanner-06z2dmrr.js} +2 -2
  22. package/{devTui-m1atgkc9.js → devTui-q7k7bakd.js} +122 -40
  23. package/fileSys-wzzrntkw.js +9 -0
  24. package/guideline.command-bdmdn2de.js +42 -0
  25. package/guidelines/agentRule/agentRule.instruction.md +154 -26
  26. package/guidelines/conventions/conventions.instruction.md +134 -48
  27. package/guidelines/mcpRule/mcpRule.instruction.md +7 -5
  28. package/guidelines/queryRule/queryRule.instruction.md +21 -7
  29. package/guidelines/runtimeRule/runtimeRule.instruction.md +291 -6
  30. package/guidelines/ssrRule/ssrRule.instruction.md +4 -2
  31. package/guidelines/transportRule/transportRule.instruction.md +10 -8
  32. package/guidelines/workspaceOnboarding/workspaceOnboarding.instruction.md +20 -0
  33. package/guidelines/workspaceRecipes/workspaceRecipes.instruction.md +66 -3
  34. package/incrementalBuilder.proc.js +564 -109
  35. package/index-0wpybxtr.js +2729 -0
  36. package/{index-kcxmv48c.js → index-2ahj896a.js} +45 -79
  37. package/index-2wc41k5w.js +49 -0
  38. package/index-3hx1z96c.js +87 -0
  39. package/{index-2tv3fdx4.js → index-3w94e7n3.js} +1228 -1458
  40. package/{index-hwkygn9s.js → index-48k96p55.js} +325 -36
  41. package/index-4npz05nm.js +187 -0
  42. package/{index-q0y2jq9j.js → index-52w0fvh8.js} +21 -4
  43. package/index-6he6gvfg.js +4300 -0
  44. package/index-7md2g9vw.js +6 -0
  45. package/{index-04bk599g.js → index-93j60em0.js} +10 -17
  46. package/index-94s080qm.js +266 -0
  47. package/index-9dp031by.js +12 -0
  48. package/{index-ktb5njgy.js → index-9z771ptz.js} +49 -99
  49. package/{index-y6n8nmny.js → index-abxpehf8.js} +75 -203
  50. package/{index-3d9y066c.js → index-bjwxs904.js} +9 -8
  51. package/{index-9077wzd2.js → index-by9pxkr0.js} +43 -26
  52. package/index-c6eggbee.js +123 -0
  53. package/index-d2242ksy.js +99 -0
  54. package/index-drehwpdt.js +1119 -0
  55. package/{index-92zztqy1.js → index-dy0jx9ay.js} +2 -17
  56. package/{index-ffvk10zz.js → index-f3c78nd6.js} +107 -241
  57. package/index-gbggbqcp.js +1058 -0
  58. package/{index-by5gpp8x.js → index-hj6w4ka1.js} +2 -1
  59. package/index-hsmtysz4.js +53 -0
  60. package/{index-j9yhg404.js → index-jmrn54tt.js} +4 -7
  61. package/{index-a64esmtb.js → index-kcdj1z5v.js} +523 -1022
  62. package/{index-d43r08tf.js → index-kqabytj7.js} +77 -150
  63. package/{index-vyvre9en.js → index-mbxbhay5.js} +6 -2
  64. package/{index-vxtad5bd.js → index-mgxpx3f2.js} +5 -8
  65. package/index-p6pbz9n5.js +25 -0
  66. package/{index-sj5vxr8f.js → index-p993efkq.js} +981 -897
  67. package/{index-2xp0kfkt.js → index-pmhqttv3.js} +37 -25
  68. package/index-tqm7jjcn.js +700 -0
  69. package/{index-0g7r8xz3.js → index-vpj42xwt.js} +114 -232
  70. package/index-wa5jbxj1.js +760 -0
  71. package/{index-k2j1hc4r.js → index-wprnsjms.js} +12 -12
  72. package/{index-gyd220p2.js → index-y3mphr1m.js} +554 -577
  73. package/index-yg7jhz8x.js +69 -0
  74. package/{index-h7yw2z9n.js → index-zzvvc845.js} +8 -14
  75. package/index.js +23 -22
  76. package/{library.command-qzzbj6d8.js → library.command-9h749a1x.js} +4 -5
  77. package/{localRegistry.command-vyrgg4xw.js → localRegistry.command-2bqqhxyz.js} +23 -43
  78. package/{module.command-rq5hq3ax.js → module.command-nv8nzgft.js} +8 -12
  79. package/{package.command-d9hd6v9n.js → package.command-mq4bggp6.js} +6 -7
  80. package/package.json +15 -7
  81. package/{page.command-126d56te.js → page.command-j639n707.js} +4 -5
  82. package/{primitive.command-taxd1538.js → primitive.command-kz6849th.js} +9 -23
  83. package/prompter-76k56b37.js +8 -0
  84. package/{quality.command-6gsna0a3.js → quality.command-4hyabwkb.js} +205 -377
  85. package/{recipeScanner-fpagtgc1.js → recipeScanner-4b69ybe0.js} +1 -1
  86. package/{repair.command-tq2dgy72.js → repair.command-a9awpbqr.js} +11 -35
  87. package/{routeSourceValidator-apyqw7wk.js → routeSourceValidator-7ycnfz0e.js} +0 -6
  88. package/{scalar.command-3bcmrrkv.js → scalar.command-ma4fpm9m.js} +7 -11
  89. package/skills/akan-code/SKILL.md +130 -0
  90. package/skills/akan-debug/SKILL.md +42 -0
  91. package/skills/akan-deps/SKILL.md +50 -0
  92. package/skills/akan-err/SKILL.md +39 -0
  93. package/skills/akan-module/SKILL.md +45 -0
  94. package/skills/akan-scaffold/SKILL.md +76 -0
  95. package/skills/akan-scalar/SKILL.md +52 -0
  96. package/skills/akan-service/SKILL.md +34 -0
  97. package/skills/akan-store/SKILL.md +67 -0
  98. package/skills/akan-ui/SKILL.md +63 -0
  99. package/skills/akan-validate/SKILL.md +44 -0
  100. package/{subspace.command-eddzqpx3.js → subspace.command-3k2pmrs4.js} +53 -62
  101. package/templates/__scalar/__model__/__model__.abstract.md.template +8 -0
  102. package/templates/app/page/_index.tsx +257 -258
  103. package/templates/app/page/_layout.tsx +5 -1
  104. package/templates/app/page/_overrides.tsx +12 -0
  105. package/templates/app/page/styles.css.template +316 -14
  106. package/templates/app/public/apple-touch-icon.png +0 -0
  107. package/templates/app/public/favicon.ico +0 -0
  108. package/templates/app/public/jelly/cloud.webp +0 -0
  109. package/templates/app/public/jelly/comet.webp +0 -0
  110. package/templates/app/public/jelly/moon.webp +0 -0
  111. package/templates/app/public/jelly/planet.webp +0 -0
  112. package/templates/app/public/jelly/rocket.webp +0 -0
  113. package/templates/app/public/jelly/star.webp +0 -0
  114. package/templates/app/public/jelly/sugar.webp +0 -0
  115. package/templates/app/public/logo.png +0 -0
  116. package/templates/app/ui/Recipe/index.ts +9 -0
  117. package/templates/app/ui/Recipe/jellyButton.ts +63 -0
  118. package/templates/appSample/lib/__scalar/workHistory/workHistory.abstract.ts +8 -39
  119. package/templates/appSample/lib/_noti/noti.abstract.ts +6 -29
  120. package/templates/appSample/lib/task/Task.Unit.tsx +1 -1
  121. package/templates/appSample/lib/task/Task.Util.tsx +10 -13
  122. package/templates/appSample/lib/task/Task.View.tsx +2 -2
  123. package/templates/appSample/lib/task/Task.Zone.tsx +5 -2
  124. package/templates/appSample/lib/task/task.abstract.ts +12 -32
  125. package/templates/appSample/lib/task/task.signal.spec.ts +1 -15
  126. package/templates/appSample/lib/task/task.signal.test.ts +15 -1
  127. package/templates/appSample/lib/task/task.signal.ts +10 -8
  128. package/templates/appSample/page/task/[taskId]/_index.tsx +6 -6
  129. package/templates/appSample/page/task/[taskId]/edit.tsx +5 -4
  130. package/templates/appSample/page/task/_index.tsx +4 -3
  131. package/templates/appSample/page/task/_layout.tsx +1 -1
  132. package/templates/appSample/page/task/new.tsx +5 -4
  133. package/templates/appSample/srvkit/{AuthGuard.ts → guards.ts} +7 -4
  134. package/templates/appSample/srvkit/{SessionInternalArg.ts → internalArgs.ts} +6 -4
  135. package/templates/appSample/ui/GlobalLoading.tsx +2 -1
  136. package/templates/appSample/ui/QuantityControl.tsx +3 -3
  137. package/templates/client.ts +7 -30
  138. package/templates/crudPages/[__model__Id]/edit/page.tsx +2 -1
  139. package/templates/crudPages/[__model__Id]/page.tsx +2 -1
  140. package/templates/crudPages/new/page.tsx +2 -1
  141. package/templates/crudPages/page.tsx +2 -1
  142. package/templates/crudSinglePage/page.tsx +2 -1
  143. package/templates/lib/__lib/lib.dictionary.ts +0 -2
  144. package/templates/lib/__lib/lib.document.ts +0 -2
  145. package/templates/lib/sig.ts +8 -30
  146. package/templates/localDev/docker-compose.yaml.template +3 -14
  147. package/templates/module/__model__.signal.ts +12 -4
  148. package/templates/pkgRoot/tsconfig.json.template +2 -7
  149. package/templates/server.ts +1 -3
  150. package/templates/service/__model__.abstract.md.template +8 -0
  151. package/templates/workspaceRoot/.gitignore.template +0 -1
  152. package/templates/workspaceRoot/AGENTS.md.template +6 -0
  153. package/templates/workspaceRoot/package.json.template +1 -3
  154. package/tunnel.command-xwr46b66.js +129 -0
  155. package/{typeChecker-3xgrzc2v.js → typeChecker-px49mezc.js} +1 -1
  156. package/typecheck.proc.js +1 -1
  157. package/workflow.command-t7wqe4h7.js +79 -0
  158. package/{workspace.command-06wvstgr.js → workspace.command-4derhzrh.js} +79 -109
  159. package/abstractCompactor-gmkc0z8j.js +0 -102
  160. package/application.command-18y0s485.js +0 -204
  161. package/applicationReleasePackager-4yasxwv9.js +0 -244
  162. package/capacitorApp-36rbr858.js +0 -12
  163. package/cloud.command-av97ndh6.js +0 -94
  164. package/cloud.script-cm11xjdz.js +0 -20
  165. package/context.command-5v37ef3n.js +0 -81
  166. package/devTuiView-0hc2emhe.js +0 -9
  167. package/getDirname-dr3jz1xg.js +0 -7
  168. package/guideline.command-4pz9g1rt.js +0 -360
  169. package/guidelines/agentRule/agentRule.generate.json +0 -31
  170. package/guidelines/componentRule/componentRule.generate.json +0 -31
  171. package/guidelines/conventions/conventions.generate.json +0 -25
  172. package/guidelines/cssRule/cssRule.generate.json +0 -31
  173. package/guidelines/docPageRule/docPageRule.generate.json +0 -31
  174. package/guidelines/docPageRule/docPageRule.instruction.md +0 -25
  175. package/guidelines/docSyncRule/docSyncRule.generate.json +0 -31
  176. package/guidelines/docSyncRule/docSyncRule.instruction.md +0 -25
  177. package/guidelines/enumConstant/enumConstant.generate.json +0 -31
  178. package/guidelines/enumConstant/enumConstant.instruction.md +0 -28
  179. package/guidelines/fieldRule/fieldRule.generate.json +0 -31
  180. package/guidelines/framework/framework.generate.json +0 -32
  181. package/guidelines/mcpRule/mcpRule.generate.json +0 -35
  182. package/guidelines/modelConstant/modelConstant.generate.json +0 -32
  183. package/guidelines/modelDictionary/modelDictionary.generate.json +0 -32
  184. package/guidelines/modelDocument/modelDocument.generate.json +0 -31
  185. package/guidelines/modelService/modelService.generate.json +0 -31
  186. package/guidelines/modelSignal/modelSignal.generate.json +0 -31
  187. package/guidelines/modelStore/modelStore.generate.json +0 -31
  188. package/guidelines/modelTemplate/modelTemplate.generate.json +0 -31
  189. package/guidelines/modelUnit/modelUnit.generate.json +0 -31
  190. package/guidelines/modelUtil/modelUtil.generate.json +0 -31
  191. package/guidelines/modelView/modelView.generate.json +0 -31
  192. package/guidelines/modelZone/modelZone.generate.json +0 -31
  193. package/guidelines/moduleCodegen/moduleCodegen.generate.json +0 -31
  194. package/guidelines/moduleCodegen/moduleCodegen.instruction.md +0 -28
  195. package/guidelines/moduleOverview/moduleOverview.generate.json +0 -31
  196. package/guidelines/queryRule/queryRule.generate.json +0 -31
  197. package/guidelines/recipeRule/recipeRule.generate.json +0 -31
  198. package/guidelines/runtimeRule/runtimeRule.generate.json +0 -25
  199. package/guidelines/scalarConstant/scalarConstant.generate.json +0 -32
  200. package/guidelines/scalarDictionary/scalarDictionary.generate.json +0 -32
  201. package/guidelines/scalarModule/scalarModule.generate.json +0 -31
  202. package/guidelines/sharedUiUsage/sharedUiUsage.generate.json +0 -31
  203. package/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +0 -25
  204. package/guidelines/ssrRule/ssrRule.generate.json +0 -31
  205. package/guidelines/transportRule/transportRule.generate.json +0 -31
  206. package/guidelines/utilUiUsage/utilUiUsage.generate.json +0 -31
  207. package/guidelines/utilUiUsage/utilUiUsage.instruction.md +0 -25
  208. package/guidelines/workspaceOnboarding/workspaceOnboarding.generate.json +0 -24
  209. package/guidelines/workspaceRecipes/workspaceRecipes.generate.json +0 -33
  210. package/index-47pj3aee.js +0 -76
  211. package/index-5ystnsd5.js +0 -841
  212. package/index-6wwzs1bc.js +0 -7
  213. package/index-a17x49vg.js +0 -229
  214. package/index-m0xccmmm.js +0 -228
  215. package/index-meh558jy.js +0 -65
  216. package/index-rtxxan88.js +0 -471
  217. package/index-te54x9zm.js +0 -338
  218. package/index-w8kmx1b6.js +0 -2176
  219. package/index-wt7qrtd4.js +0 -1516
  220. package/templates/__scalar/__model__/__model__.abstract.md +0 -28
  221. package/templates/module/__model__.abstract.md +0 -28
  222. package/templates/service/__model__.abstract.md +0 -28
  223. package/templates/workspaceRoot/patches/react-dom@19.2.7.patch.template +0 -62
  224. package/workflow.command-gtdnzvbz.js +0 -108
@@ -0,0 +1,69 @@
1
+ // @bun
2
+ import {
3
+ jsonText
4
+ } from "./index-y3mphr1m.js";
5
+ import {
6
+ akanMcpInstallTargets
7
+ } from "./index-9z771ptz.js";
8
+ import {
9
+ script
10
+ } from "./index-vpj42xwt.js";
11
+ import {
12
+ ContextRunner2
13
+ } from "./index-abxpehf8.js";
14
+
15
+ // pkgs/@akanjs/cli/context/context.script.ts
16
+ import { Logger } from "akanjs/common";
17
+ var resolveMcpInstallTargets = (target) => {
18
+ if (!target || target === "all")
19
+ return [...akanMcpInstallTargets];
20
+ if (akanMcpInstallTargets.includes(target))
21
+ return [target];
22
+ throw new Error(`Unknown MCP install target: ${target}. Use cursor, claude, codex, or all.`);
23
+ };
24
+ var mcpTargetLabels = {
25
+ cursor: "Cursor",
26
+ claude: "Claude Code",
27
+ codex: "Codex"
28
+ };
29
+
30
+ class ContextScript extends script("context", [ContextRunner2]) {
31
+ async context(workspace, options = {}) {
32
+ Logger.rawLog(await this.contextRunner.getContext(workspace, options));
33
+ }
34
+ async doctor(workspace, options = {}) {
35
+ Logger.rawLog(await this.contextRunner.doctor(workspace, options));
36
+ }
37
+ async mcpInstall(workspace, target, { force = false, mode = "apply" } = {}) {
38
+ const targets = resolveMcpInstallTargets(target);
39
+ const written = [];
40
+ for (const t of targets) {
41
+ const configPath = await this.contextRunner.installMcp(workspace, t, { force, mode });
42
+ written.push(`${mcpTargetLabels[t]}: ${configPath}`);
43
+ }
44
+ Logger.rawLog(`Akan MCP server installed (${mode} mode):
45
+ ${written.map((line) => `- ${line}`).join(`
46
+ `)}`);
47
+ }
48
+ async mcp(workspace, { mode = "apply" } = {}) {
49
+ await this.contextRunner.runMcp(workspace, { mode });
50
+ }
51
+ async mcpCall(workspace, tool, {
52
+ mode = "readonly",
53
+ args = null,
54
+ format = "json"
55
+ } = {}) {
56
+ let parsedArgs = {};
57
+ if (args) {
58
+ const parsed = JSON.parse(args);
59
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
60
+ throw new Error("MCP call args must be a JSON object.");
61
+ }
62
+ parsedArgs = parsed;
63
+ }
64
+ const result = await this.contextRunner.callMcpTool(workspace, tool, parsedArgs, { mode });
65
+ Logger.rawLog(format === "json" ? jsonText(result) : String(result));
66
+ }
67
+ }
68
+
69
+ export { ContextScript };
@@ -1,12 +1,12 @@
1
1
  // @bun
2
2
  import {
3
3
  getDirname2
4
- } from "./index-6wwzs1bc.js";
4
+ } from "./index-52w0fvh8.js";
5
5
 
6
6
  // pkgs/@akanjs/devkit/prompter.ts
7
7
  import fsPromise from "fs/promises";
8
8
  import { input, select } from "@inquirer/prompts";
9
- class Prompter {
9
+ class Prompter2 {
10
10
  static async#getGuidelineRoot() {
11
11
  const dirname = getDirname2(import.meta.url);
12
12
  const candidates = [`${dirname}/guidelines`, `${dirname}/../cli/guidelines`];
@@ -19,27 +19,21 @@ class Prompter {
19
19
  return candidates[0];
20
20
  }
21
21
  static async selectGuideline() {
22
- const guideNames = await Prompter.listGuidelines();
22
+ const guideNames = await Prompter2.listGuidelines();
23
23
  return await select({
24
24
  message: "Select a guideline",
25
25
  choices: guideNames.map((name) => ({ name, value: name }))
26
26
  });
27
27
  }
28
28
  static async listGuidelines() {
29
- const guidelineRoot = await Prompter.#getGuidelineRoot();
29
+ const guidelineRoot = await Prompter2.#getGuidelineRoot();
30
30
  return (await fsPromise.readdir(guidelineRoot)).filter((name) => !name.startsWith("_")).sort();
31
31
  }
32
- static async getGuideJson(guideName) {
33
- const guidelineRoot = await Prompter.#getGuidelineRoot();
34
- const filePath = `${guidelineRoot}/${guideName}/${guideName}.generate.json`;
35
- const guideJson = await fsPromise.readFile(filePath, "utf-8");
36
- return JSON.parse(guideJson);
37
- }
38
32
  static async getInstruction(guideName) {
39
- const guideNames = await Prompter.listGuidelines();
33
+ const guideNames = await Prompter2.listGuidelines();
40
34
  if (!guideNames.includes(guideName))
41
35
  throw new Error(`Unknown guideline "${guideName}". Available: ${guideNames.join(", ")}`);
42
- const guidelineRoot = await Prompter.#getGuidelineRoot();
36
+ const guidelineRoot = await Prompter2.#getGuidelineRoot();
43
37
  return await fsPromise.readFile(`${guidelineRoot}/${guideName}/${guideName}.instruction.md`, "utf-8");
44
38
  }
45
39
  static async getUpdateRequest(guideName) {
@@ -67,7 +61,7 @@ ${request}
67
61
  `;
68
62
  }
69
63
  async getDocumentation(guideName) {
70
- const guidelineRoot = await Prompter.#getGuidelineRoot();
64
+ const guidelineRoot = await Prompter2.#getGuidelineRoot();
71
65
  const filePath = `${guidelineRoot}/${guideName}/${guideName}.instruction.md`;
72
66
  const document = await fsPromise.readFile(filePath, "utf-8");
73
67
  return `\`\`\`markdown
@@ -77,4 +71,4 @@ ${document}
77
71
  }
78
72
  }
79
73
 
80
- export { Prompter };
74
+ export { Prompter2 };
package/index.js CHANGED
@@ -4,33 +4,34 @@ import {
4
4
  getTargetMetas,
5
5
  getTargetCommandNames,
6
6
  runCommands
7
- } from "./index-0g7r8xz3.js";
8
- import"./index-q0y2jq9j.js";
9
- import"./index-2tv3fdx4.js";
10
- import"./index-6wwzs1bc.js";
7
+ } from "./index-vpj42xwt.js";
8
+ import"./index-52w0fvh8.js";
9
+ import"./index-3w94e7n3.js";
11
10
 
12
11
  // pkgs/@akanjs/cli/commandManifest.ts
13
12
  import path from "path";
14
13
 
15
14
  // pkgs/@akanjs/cli/commandModules.ts
16
15
  var commandModules = {
17
- workspace: async () => (await import("./workspace.command-06wvstgr.js")).WorkspaceCommand,
18
- agent: async () => (await import("./agent.command-0q17pnrs.js")).AgentCommand,
19
- application: async () => (await import("./application.command-18y0s485.js")).ApplicationCommand,
20
- library: async () => (await import("./library.command-qzzbj6d8.js")).LibraryCommand,
21
- localRegistry: async () => (await import("./localRegistry.command-vyrgg4xw.js")).LocalRegistryCommand,
22
- package: async () => (await import("./package.command-d9hd6v9n.js")).PackageCommand,
23
- module: async () => (await import("./module.command-rq5hq3ax.js")).ModuleCommand,
24
- page: async () => (await import("./page.command-126d56te.js")).PageCommand,
25
- context: async () => (await import("./context.command-5v37ef3n.js")).ContextCommand,
26
- cloud: async () => (await import("./cloud.command-av97ndh6.js")).CloudCommand,
27
- subspace: async () => (await import("./subspace.command-eddzqpx3.js")).SubspaceCommand,
28
- guideline: async () => (await import("./guideline.command-4pz9g1rt.js")).GuidelineCommand,
29
- scalar: async () => (await import("./scalar.command-3bcmrrkv.js")).ScalarCommand,
30
- primitive: async () => (await import("./primitive.command-taxd1538.js")).PrimitiveCommand,
31
- quality: async () => (await import("./quality.command-6gsna0a3.js")).QualityCommand,
32
- repair: async () => (await import("./repair.command-tq2dgy72.js")).RepairCommand,
33
- workflow: async () => (await import("./workflow.command-gtdnzvbz.js")).WorkflowCommand
16
+ workspace: async () => (await import("./workspace.command-4derhzrh.js")).WorkspaceCommand,
17
+ agent: async () => (await import("./agent.command-gn73rhe7.js")).AgentCommand,
18
+ code: async () => (await import("./code.command-18kcm7hq.js")).CodeCommand,
19
+ application: async () => (await import("./application.command-e968t0hw.js")).ApplicationCommand,
20
+ library: async () => (await import("./library.command-9h749a1x.js")).LibraryCommand,
21
+ localRegistry: async () => (await import("./localRegistry.command-2bqqhxyz.js")).LocalRegistryCommand,
22
+ package: async () => (await import("./package.command-mq4bggp6.js")).PackageCommand,
23
+ module: async () => (await import("./module.command-nv8nzgft.js")).ModuleCommand,
24
+ page: async () => (await import("./page.command-j639n707.js")).PageCommand,
25
+ context: async () => (await import("./context.command-trd9bn18.js")).ContextCommand,
26
+ cloud: async () => (await import("./cloud.command-0jm301rr.js")).CloudCommand,
27
+ subspace: async () => (await import("./subspace.command-3k2pmrs4.js")).SubspaceCommand,
28
+ guideline: async () => (await import("./guideline.command-bdmdn2de.js")).GuidelineCommand,
29
+ scalar: async () => (await import("./scalar.command-ma4fpm9m.js")).ScalarCommand,
30
+ primitive: async () => (await import("./primitive.command-kz6849th.js")).PrimitiveCommand,
31
+ quality: async () => (await import("./quality.command-4hyabwkb.js")).QualityCommand,
32
+ repair: async () => (await import("./repair.command-a9awpbqr.js")).RepairCommand,
33
+ workflow: async () => (await import("./workflow.command-t7wqe4h7.js")).WorkflowCommand,
34
+ tunnel: async () => (await import("./tunnel.command-xwr46b66.js")).TunnelCommand
34
35
  };
35
36
  var commandModuleIds = Object.keys(commandModules);
36
37
 
@@ -68,4 +69,4 @@ class CommandManifest {
68
69
  // pkgs/@akanjs/cli/index.ts
69
70
  var ids = CommandManifest.resolve(await CommandManifest.read(), process.argv) ?? commandModuleIds;
70
71
  var commands = await Promise.all(ids.map(async (id) => await commandModules[id]()));
71
- runCommands(...commands);
72
+ await runCommands(...commands);
@@ -3,13 +3,12 @@ import {
3
3
  Lib,
4
4
  Workspace,
5
5
  command
6
- } from "./index-0g7r8xz3.js";
7
- import"./index-q0y2jq9j.js";
8
- import"./index-2tv3fdx4.js";
9
- import"./index-6wwzs1bc.js";
6
+ } from "./index-vpj42xwt.js";
7
+ import"./index-52w0fvh8.js";
8
+ import"./index-3w94e7n3.js";
10
9
  import {
11
10
  LibraryScript
12
- } from "./index-vxtad5bd.js";
11
+ } from "./index-mgxpx3f2.js";
13
12
 
14
13
  // pkgs/@akanjs/cli/library/library.command.ts
15
14
  class LibraryCommand extends command("library", [LibraryScript], ({ public: target }) => ({
@@ -4,28 +4,28 @@ import {
4
4
  runner,
5
5
  script,
6
6
  command
7
- } from "./index-0g7r8xz3.js";
8
- import"./index-q0y2jq9j.js";
7
+ } from "./index-vpj42xwt.js";
8
+ import"./index-52w0fvh8.js";
9
9
  import {
10
10
  PkgExecutor
11
- } from "./index-2tv3fdx4.js";
12
- import"./index-6wwzs1bc.js";
11
+ } from "./index-3w94e7n3.js";
12
+ import"./index-48k96p55.js";
13
+ import"./index-gbggbqcp.js";
14
+ import"./index-mgxpx3f2.js";
13
15
  import {
14
16
  ApplicationScript
15
- } from "./index-sj5vxr8f.js";
16
- import"./index-vxtad5bd.js";
17
- import"./index-hwkygn9s.js";
18
- import"./index-m0xccmmm.js";
19
- import"./index-te54x9zm.js";
17
+ } from "./index-p993efkq.js";
18
+ import"./index-7md2g9vw.js";
19
+ import"./index-94s080qm.js";
20
20
  import {
21
21
  getNpmRegistryUrl,
22
22
  CloudRunner
23
- } from "./index-rtxxan88.js";
24
- import"./index-kcxmv48c.js";
23
+ } from "./index-drehwpdt.js";
24
+ import"./index-2ahj896a.js";
25
25
  import {
26
26
  PackageScript
27
- } from "./index-9077wzd2.js";
28
- import"./index-j9yhg404.js";
27
+ } from "./index-by9pxkr0.js";
28
+ import"./index-jmrn54tt.js";
29
29
 
30
30
  // pkgs/@akanjs/cli/localRegistry/localRegistry.runner.ts
31
31
  import { mkdir, rm } from "fs/promises";
@@ -78,6 +78,7 @@ class LocalRegistryRunner extends runner("localRegistry") {
78
78
  const registry = this.getRegistryUrl(registryUrl);
79
79
  const smokeRoot = path.join(workspace.workspaceRoot, ".akan/e2e");
80
80
  await rm(path.join(smokeRoot, smokeRepoName), { recursive: true, force: true });
81
+ const env = { ...process.env, AKAN_NPM_REGISTRY: registry, NPM_CONFIG_REGISTRY: registry };
81
82
  await workspace.spawn(process.execPath, [
82
83
  "dist/pkgs/create-akan-workspace/index.js",
83
84
  smokeRepoName,
@@ -89,20 +90,13 @@ class LocalRegistryRunner extends runner("localRegistry") {
89
90
  "true",
90
91
  "--registry",
91
92
  registry
92
- ], {
93
- env: { ...process.env, AKAN_NPM_REGISTRY: registry, NPM_CONFIG_REGISTRY: registry },
94
- stdio: "inherit"
95
- });
96
- await workspace.spawn("akan", ["typecheck", smokeAppName], {
97
- cwd: path.join(smokeRoot, smokeRepoName),
98
- env: { ...process.env, AKAN_NPM_REGISTRY: registry, NPM_CONFIG_REGISTRY: registry },
99
- stdio: "inherit"
100
- });
101
- await workspace.spawn("akan", ["build", smokeAppName], {
102
- cwd: path.join(smokeRoot, smokeRepoName),
103
- env: { ...process.env, AKAN_NPM_REGISTRY: registry, NPM_CONFIG_REGISTRY: registry },
104
- stdio: "inherit"
105
- });
93
+ ], { env, stdio: "inherit" });
94
+ for (const command of ["typecheck", "build"])
95
+ await workspace.spawn("akan", [command, smokeAppName], {
96
+ cwd: path.join(smokeRoot, smokeRepoName),
97
+ env,
98
+ stdio: "inherit"
99
+ });
106
100
  Logger.info(`Local registry smoke test completed for ${smokeRepoName}/${smokeAppName}`);
107
101
  }
108
102
  }
@@ -128,11 +122,7 @@ class LocalRegistryScript extends script("localRegistry", [
128
122
  const registry = await this.localRegistryRunner.start(workspace, { registryUrl });
129
123
  const akanPkgs = await this.cloudRunner.getAkanPkgs(workspace);
130
124
  await this.#preparePackages(workspace, akanPkgs, { test });
131
- await this.cloudRunner.deployAkan(workspace, akanPkgs, {
132
- registryUrl: registry,
133
- confirmPublish: false,
134
- tag
135
- });
125
+ await this.cloudRunner.deployAkan(workspace, akanPkgs, { registryUrl: registry, confirmPublish: false, tag });
136
126
  await this.localRegistryRunner.smoke(workspace, { registryUrl: registry });
137
127
  }
138
128
  async#preparePackages(workspace, akanPkgs, { test = true } = {}) {
@@ -158,17 +148,7 @@ class LocalRegistryCommand extends command("local-registry", [LocalRegistryScrip
158
148
  resetRegistry: target({ devOnly: true, desc: "Stop and clear the local Verdaccio npm registry" }).with(Workspace).exec(async function(workspace) {
159
149
  await this.localRegistryScript.reset(workspace);
160
150
  }),
161
- smokeRegistry: target({ devOnly: true, desc: "Publish to local registry and build a generated workspace" }).with(Workspace).option("tag", String, {
162
- flag: "g",
163
- desc: "dist-tag for local registry publish",
164
- default: "rc"
165
- }).option("test", Boolean, {
166
- desc: "run package tests before publishing",
167
- default: true
168
- }).option("registry", String, {
169
- desc: "local npm registry URL",
170
- default: process.env.AKAN_NPM_REGISTRY
171
- }).exec(async function(workspace, tag, test, registry) {
151
+ smokeRegistry: target({ devOnly: true, desc: "Publish to local registry and build a generated workspace" }).with(Workspace).option("tag", String, { flag: "g", desc: "dist-tag for local registry publish", default: "rc" }).option("test", Boolean, { desc: "run package tests before publishing", default: true }).option("registry", String, { desc: "local npm registry URL", default: process.env.AKAN_NPM_REGISTRY }).exec(async function(workspace, tag, test, registry) {
172
152
  await this.localRegistryScript.smoke(workspace, { tag, test, registryUrl: registry });
173
153
  })
174
154
  })) {
@@ -3,27 +3,23 @@ import {
3
3
  Sys,
4
4
  Module,
5
5
  command
6
- } from "./index-0g7r8xz3.js";
7
- import"./index-q0y2jq9j.js";
8
- import"./index-2tv3fdx4.js";
9
- import"./index-6wwzs1bc.js";
6
+ } from "./index-vpj42xwt.js";
7
+ import"./index-52w0fvh8.js";
8
+ import"./index-3w94e7n3.js";
10
9
  import {
11
10
  renderPrimitiveReport
12
- } from "./index-gyd220p2.js";
13
- import"./index-m0xccmmm.js";
14
- import"./index-te54x9zm.js";
11
+ } from "./index-y3mphr1m.js";
12
+ import"./index-mbxbhay5.js";
15
13
  import {
16
14
  ModuleScript
17
- } from "./index-5ystnsd5.js";
18
- import"./index-vyvre9en.js";
19
- import"./index-h7yw2z9n.js";
15
+ } from "./index-4npz05nm.js";
20
16
 
21
17
  // pkgs/@akanjs/cli/module/module.command.ts
22
18
  import { Logger, lowerlize } from "akanjs/common";
23
19
  class ModuleCommand extends command("module", [ModuleScript], ({ public: target }) => ({
24
- createModule: target({ desc: "Create a new domain module (constant, service, signal, store, UI)" }).arg("moduleName", String, { desc: "name of module" }).with(Sys).option("page", Boolean, { desc: "create page", default: false }).option("ai", Boolean, { desc: "use ai to create module constant and dictionary", default: false }).option("format", String, { flag: "o", desc: "output format", default: "markdown", enum: ["markdown", "json"] }).exec(async function(moduleName, sys, page, ai, format) {
20
+ createModule: target({ desc: "Create a new domain module (constant, service, signal, store, UI)" }).arg("moduleName", String, { desc: "name of module" }).with(Sys).option("page", Boolean, { desc: "create page", default: false }).option("format", String, { flag: "o", desc: "output format", default: "markdown", enum: ["markdown", "json"] }).exec(async function(moduleName, sys, page, format) {
25
21
  const name = lowerlize(moduleName.replace(/ /g, ""));
26
- const report = ai ? await this.moduleScript.createModule(sys, name, { page }) : await this.moduleScript.createModuleTemplate(sys, name, { page });
22
+ const report = await this.moduleScript.createModuleTemplate(sys, name, { page });
27
23
  Logger.rawLog(renderPrimitiveReport(report, format));
28
24
  }),
29
25
  removeModule: target({ desc: "Remove a module from an app or library" }).with(Module).exec(async function(module) {
@@ -3,21 +3,20 @@ import {
3
3
  Pkg,
4
4
  Workspace,
5
5
  command
6
- } from "./index-0g7r8xz3.js";
7
- import"./index-q0y2jq9j.js";
8
- import"./index-2tv3fdx4.js";
9
- import"./index-6wwzs1bc.js";
10
- import"./index-kcxmv48c.js";
6
+ } from "./index-vpj42xwt.js";
7
+ import"./index-52w0fvh8.js";
8
+ import"./index-3w94e7n3.js";
9
+ import"./index-2ahj896a.js";
11
10
  import {
12
11
  PackageScript
13
- } from "./index-9077wzd2.js";
12
+ } from "./index-by9pxkr0.js";
14
13
 
15
14
  // pkgs/@akanjs/cli/package/package.command.ts
16
15
  class PackageCommand extends command("package", [PackageScript], ({ public: target }) => ({
17
16
  version: target({ desc: "Show version information for all packages" }).with(Workspace).exec(async function(workspace) {
18
17
  await this.packageScript.version(workspace);
19
18
  }),
20
- createPackage: target({ desc: "Create a new package in pkgs/akanjs/" }).option("name", String, { desc: "name of package" }).with(Workspace).exec(async function(name, workspace) {
19
+ createPackage: target({ desc: "Create a new package in pkgs/<name>/" }).option("name", String, { desc: "name of package" }).with(Workspace).exec(async function(name, workspace) {
21
20
  await this.packageScript.createPackage(workspace, name.toLowerCase().replace(/ /g, "-"));
22
21
  }),
23
22
  removePackage: target({ desc: "Remove a package from the workspace" }).with(Pkg).exec(async function(pkg) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akanjs/cli",
3
- "version": "3.0.0-beta.9",
3
+ "version": "3.0.0",
4
4
  "sourceType": "module",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -24,16 +24,22 @@
24
24
  "import": "./index.js",
25
25
  "default": "./index.js"
26
26
  },
27
+ "./code": {
28
+ "import": "./akanCode.js",
29
+ "default": "./akanCode.js"
30
+ },
27
31
  "./package.json": "./package.json"
28
32
  },
29
33
  "dependencies": {
34
+ "@earendil-works/chord": "0.86.1",
35
+ "@earendil-works/pi-agent-core": "0.86.1",
36
+ "@earendil-works/pi-ai": "0.86.1",
37
+ "@earendil-works/pi-coding-agent": "0.86.1",
38
+ "@earendil-works/pi-telemetry": "0.86.1",
39
+ "@earendil-works/pi-tui": "0.86.1",
30
40
  "@inquirer/prompts": "^8.4.3",
31
- "@langchain/core": "^1.1.47",
32
- "@langchain/deepseek": "^1.0.26",
33
- "@langchain/openai": "^1.4.6",
34
41
  "@tailwindcss/node": "^4.3.0",
35
- "@trapezedev/project": "^7.1.4",
36
- "akanjs": "3.0.0-beta.9",
42
+ "akanjs": "3.0.0",
37
43
  "chalk": "^5.6.2",
38
44
  "commander": "^14.0.3",
39
45
  "dayjs": "^1.11.20",
@@ -43,11 +49,13 @@
43
49
  "ink": "^6.8.0",
44
50
  "ora": "^9.4.0",
45
51
  "qrcode": "^1.5.4",
46
- "react": "19.2.7",
52
+ "react": "19.3.0",
47
53
  "ssh2": "^1.17.0",
54
+ "string-width": "^8.2.1",
48
55
  "subset-font": "^2.5.0",
49
56
  "tailwind-scrollbar": "^4.0.2",
50
57
  "tailwindcss": "^4.3.0",
58
+ "typebox": "1.1.38",
51
59
  "typescript": "^6.0.3"
52
60
  },
53
61
  "devDependencies": {},
@@ -3,13 +3,12 @@ import {
3
3
  App,
4
4
  Module,
5
5
  command
6
- } from "./index-0g7r8xz3.js";
7
- import"./index-q0y2jq9j.js";
8
- import"./index-2tv3fdx4.js";
9
- import"./index-6wwzs1bc.js";
6
+ } from "./index-vpj42xwt.js";
7
+ import"./index-52w0fvh8.js";
8
+ import"./index-3w94e7n3.js";
10
9
  import {
11
10
  PageScript
12
- } from "./index-vyvre9en.js";
11
+ } from "./index-mbxbhay5.js";
13
12
 
14
13
  // pkgs/@akanjs/cli/page/page.command.ts
15
14
  class PageCommand extends command("page", [PageScript], ({ public: target }) => ({
@@ -2,21 +2,17 @@
2
2
  import {
3
3
  Workspace,
4
4
  command
5
- } from "./index-0g7r8xz3.js";
6
- import"./index-q0y2jq9j.js";
7
- import"./index-2tv3fdx4.js";
8
- import"./index-6wwzs1bc.js";
5
+ } from "./index-vpj42xwt.js";
6
+ import"./index-52w0fvh8.js";
7
+ import"./index-3w94e7n3.js";
9
8
  import {
10
9
  renderPrimitiveReport
11
- } from "./index-gyd220p2.js";
12
- import"./index-m0xccmmm.js";
13
- import"./index-te54x9zm.js";
14
- import"./index-5ystnsd5.js";
15
- import"./index-vyvre9en.js";
16
- import"./index-h7yw2z9n.js";
10
+ } from "./index-y3mphr1m.js";
11
+ import"./index-mbxbhay5.js";
12
+ import"./index-4npz05nm.js";
17
13
  import {
18
14
  PrimitiveScript
19
- } from "./index-d43r08tf.js";
15
+ } from "./index-kqabytj7.js";
20
16
 
21
17
  // pkgs/@akanjs/cli/primitive/primitive.command.ts
22
18
  import { Logger } from "akanjs/common";
@@ -27,11 +23,7 @@ class PrimitiveCommand extends command("primitive", [PrimitiveScript], ({ public
27
23
  default: "template",
28
24
  enum: ["view", "unit", "template"]
29
25
  }).option("format", String, { flag: "o", desc: "output format", default: "markdown", enum: ["markdown", "json"] }).exec(async function(workspace, app, module, surface, format) {
30
- const report = await this.primitiveScript.createUi(workspace, {
31
- app,
32
- module,
33
- surface
34
- });
26
+ const report = await this.primitiveScript.createUi(workspace, { app, module, surface });
35
27
  Logger.rawLog(renderPrimitiveReport(report, format));
36
28
  }),
37
29
  addField: target({ desc: "Add a source-limited field to a module constant and dictionary" }).with(Workspace).option("app", String, { desc: "target app or library name", nullable: true }).option("module", String, { desc: "target module name", nullable: true }).option("field", String, { desc: "field name", nullable: true }).option("type", String, { desc: "field type or scalar name", nullable: true }).option("default", String, { desc: "default value", nullable: true }).option("format", String, { flag: "o", desc: "output format", default: "markdown", enum: ["markdown", "json"] }).exec(async function(workspace, app, module, field, typeName, defaultValue, format) {
@@ -45,13 +37,7 @@ class PrimitiveCommand extends command("primitive", [PrimitiveScript], ({ public
45
37
  Logger.rawLog(renderPrimitiveReport(report, format));
46
38
  }),
47
39
  addEnumField: target({ desc: "Add a source-limited enum field to a module constant and dictionary" }).with(Workspace).option("app", String, { desc: "target app or library name", nullable: true }).option("module", String, { desc: "target module name", nullable: true }).option("field", String, { desc: "field name", nullable: true }).option("values", String, { flag: "l", desc: "comma-separated enum values", nullable: true }).option("default", String, { desc: "default value", nullable: true }).option("format", String, { flag: "o", desc: "output format", default: "markdown", enum: ["markdown", "json"] }).exec(async function(workspace, app, module, field, values, defaultValue, format) {
48
- const report = await this.primitiveScript.addEnumField(workspace, {
49
- app,
50
- module,
51
- field,
52
- values,
53
- defaultValue
54
- });
40
+ const report = await this.primitiveScript.addEnumField(workspace, { app, module, field, values, defaultValue });
55
41
  Logger.rawLog(renderPrimitiveReport(report, format));
56
42
  })
57
43
  })) {
@@ -0,0 +1,8 @@
1
+ // @bun
2
+ import {
3
+ Prompter2
4
+ } from "./index-zzvvc845.js";
5
+ import"./index-52w0fvh8.js";
6
+ export {
7
+ Prompter2 as Prompter
8
+ };