@akanjs/cli 3.0.0-alpha.9 → 3.0.0-alpha.91

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 (135) hide show
  1. package/.build-stamp +1 -1
  2. package/README.ko.md +1 -1
  3. package/README.md +1 -1
  4. package/{abstractCompactor-e5yq60qz.js → abstractCompactor-cefxzggj.js} +3 -5
  5. package/{agent.command-f0gqkfgz.js → agent.command-r93wmq7m.js} +11 -13
  6. package/{application.command-x903m2qq.js → application.command-5nqfqgdn.js} +62 -38
  7. package/{applicationBuildRunner-ha3y8ew8.js → applicationBuildRunner-b21m07fs.js} +23 -20
  8. package/{applicationReleasePackager-gg8ccbeh.js → applicationReleasePackager-3wh58n2m.js} +8 -9
  9. package/buildBatch.proc.js +12 -14
  10. package/capacitorApp-gzcx6txb.js +12 -0
  11. package/{cloud.command-zs6kyf83.js → cloud.command-g0pk0k60.js} +15 -18
  12. package/commandManifest.json +1 -1
  13. package/{context.command-fmepgjzg.js → context.command-qd8kqrnh.js} +19 -23
  14. package/dependencyScanner-shs82ynp.js +8 -0
  15. package/devTui-2xf0meaq.js +552 -0
  16. package/devTuiView-7jy8f30g.js +9 -0
  17. package/getDirname-dr3jz1xg.js +7 -0
  18. package/{guideline.command-n6sw0a0c.js → guideline.command-f38x8jhw.js} +16 -18
  19. package/guidelines/agentRule/agentRule.generate.json +31 -0
  20. package/guidelines/agentRule/agentRule.instruction.md +533 -0
  21. package/guidelines/conventions/conventions.instruction.md +406 -197
  22. package/guidelines/cssRule/cssRule.instruction.md +7 -0
  23. package/guidelines/framework/framework.generate.json +3 -2
  24. package/guidelines/framework/framework.instruction.md +1 -9
  25. package/guidelines/mcpRule/mcpRule.generate.json +25 -0
  26. package/guidelines/mcpRule/mcpRule.instruction.md +217 -0
  27. package/guidelines/modelStore/modelStore.instruction.md +12 -0
  28. package/guidelines/modelTemplate/modelTemplate.instruction.md +5 -0
  29. package/guidelines/queryRule/queryRule.generate.json +31 -0
  30. package/guidelines/queryRule/queryRule.instruction.md +143 -0
  31. package/guidelines/runtimeRule/runtimeRule.generate.json +25 -0
  32. package/guidelines/runtimeRule/runtimeRule.instruction.md +213 -0
  33. package/guidelines/ssrRule/ssrRule.instruction.md +49 -5
  34. package/guidelines/transportRule/transportRule.generate.json +31 -0
  35. package/guidelines/transportRule/transportRule.instruction.md +60 -0
  36. package/guidelines/workspaceOnboarding/workspaceOnboarding.instruction.md +51 -760
  37. package/guidelines/workspaceRecipes/workspaceRecipes.generate.json +33 -0
  38. package/guidelines/workspaceRecipes/workspaceRecipes.instruction.md +402 -0
  39. package/incrementalBuilder.proc.js +26 -25
  40. package/{index-774gcx29.js → index-0emb9eat.js} +41 -34
  41. package/index-3d9y066c.js +76 -0
  42. package/{index-3vta1tqa.js → index-3vvbv974.js} +32 -32
  43. package/{index-76rn3g2c.js → index-47pj3aee.js} +4 -4
  44. package/{index-y4vkyhvv.js → index-5xdqxbn9.js} +14 -14
  45. package/{index-1577bej2.js → index-6wwzs1bc.js} +2 -2
  46. package/{index-wnp7hwq7.js → index-92zztqy1.js} +7 -7
  47. package/{index-jhpa13zj.js → index-9bwhxrqf.js} +57 -57
  48. package/{index-bjpxzr6s.js → index-9wtbw98m.js} +6 -3
  49. package/{index-fgc8r6dj.js → index-a5vmm6x4.js} +3 -1
  50. package/{index-xys926f2.js → index-by5gpp8x.js} +4 -4
  51. package/{index-kdh76j26.js → index-cezy7yb3.js} +100 -32
  52. package/{index-62955kn5.js → index-d61rcfa2.js} +758 -127
  53. package/{index-82jrh4hj.js → index-deekbtkj.js} +13 -13
  54. package/{index-rxkpk7n4.js → index-e82dyeqy.js} +4 -4
  55. package/{index-qzdjd4ct.js → index-h759vjfa.js} +18 -18
  56. package/{index-j37qq1f2.js → index-h7yw2z9n.js} +7 -7
  57. package/{index-qb61h0k7.js → index-jydtyzva.js} +1098 -1360
  58. package/{index-46tjzh6s.js → index-kcxmv48c.js} +29 -29
  59. package/{index-4m0bphac.js → index-kfnr6c19.js} +31 -30
  60. package/{index-xmmzf150.js → index-mpmyqm1y.js} +1 -1
  61. package/{index-xjd3rqzj.js → index-n68jx79w.js} +6 -15
  62. package/{index-0cj2zxbm.js → index-n85fer99.js} +12 -11
  63. package/{index-779ske1y.js → index-pgsswppj.js} +27 -27
  64. package/index-pvb4vdwr.js +159 -0
  65. package/{index-67546d0j.js → index-q0y2jq9j.js} +14 -2
  66. package/{index-z8ptfkzv.js → index-q8sn827n.js} +969 -240
  67. package/{index-5sn5w2mt.js → index-r50qen0z.js} +94 -61
  68. package/{index-eyyf2149.js → index-rntcdss1.js} +36 -37
  69. package/{index-gcv8ncfh.js → index-sjak5v5b.js} +16 -12
  70. package/{index-j9cxndc0.js → index-w8kmx1b6.js} +20 -11
  71. package/{index-jf2ya7r2.js → index-y74k5anj.js} +8 -8
  72. package/{index-d43t8af2.js → index-zkvpaggp.js} +58 -25
  73. package/index.js +22 -25
  74. package/{library.command-cv9gdbmg.js → library.command-em103wtn.js} +11 -10
  75. package/{localRegistry.command-d8fg36zc.js → localRegistry.command-gz8apn4y.js} +20 -23
  76. package/{module.command-qyr1s9cn.js → module.command-451pztkc.js} +13 -16
  77. package/{package.command-wsjx0k47.js → package.command-rfhyf38t.js} +8 -10
  78. package/package.json +5 -7
  79. package/{page.command-rdzg65rm.js → page.command-kt19da5g.js} +7 -9
  80. package/{primitive.command-89g38b53.js → primitive.command-pgy69ere.js} +13 -16
  81. package/{quality.command-0cs2z92d.js → quality.command-gpe2vqb5.js} +226 -105
  82. package/recipeScanner-fpagtgc1.js +11 -0
  83. package/{repair.command-6fphxfwj.js → repair.command-2sbrz187.js} +12 -14
  84. package/{routeSourceValidator-e4jmbfcx.js → routeSourceValidator-ze6x894c.js} +0 -2
  85. package/{scalar.command-xfer69s6.js → scalar.command-jcf4e5sv.js} +11 -14
  86. package/subspace.command-kqzqtk0p.js +755 -0
  87. package/templates/app/env/env.client.debug.ts.template +1 -5
  88. package/templates/app/env/env.client.develop.ts.template +1 -5
  89. package/templates/app/env/env.client.local.ts.template +1 -5
  90. package/templates/app/env/env.client.main.ts.template +1 -5
  91. package/templates/app/env/env.client.testing.ts.template +1 -5
  92. package/templates/app/env/env.client.type.ts +2 -6
  93. package/templates/app/env/env.server.debug.ts.template +1 -5
  94. package/templates/app/env/env.server.develop.ts.template +1 -5
  95. package/templates/app/env/env.server.local.ts.template +1 -5
  96. package/templates/app/env/env.server.main.ts.template +1 -5
  97. package/templates/app/main.ts +3 -1
  98. package/templates/appSample/lib/task/task.signal.ts +11 -6
  99. package/templates/appSample/srvkit/AuthGuard.ts +9 -5
  100. package/templates/appSample/srvkit/SessionInternalArg.ts +4 -3
  101. package/templates/crudPages/[__model__Id]/edit/page.tsx +5 -5
  102. package/templates/crudPages/[__model__Id]/page.tsx +10 -13
  103. package/templates/crudPages/new/page.tsx +5 -5
  104. package/templates/crudPages/page.tsx +9 -9
  105. package/templates/crudSinglePage/page.tsx +11 -7
  106. package/templates/env/_env.server.type.ts +7 -5
  107. package/templates/lib/db.ts +1 -1
  108. package/templates/lib/dict.ts +1 -1
  109. package/templates/lib/sig.ts +1 -1
  110. package/templates/lib/srv.ts +6 -2
  111. package/templates/module/__model__.dictionary.ts +4 -1
  112. package/templates/module/__model__.signal.ts +2 -3
  113. package/templates/module/__model__.store.ts +1 -2
  114. package/templates/workspaceRoot/.gitignore.template +0 -1
  115. package/templates/workspaceRoot/.husky/pre-commit.template +16 -0
  116. package/templates/workspaceRoot/.vscode/settings.json.template +1 -1
  117. package/templates/workspaceRoot/AGENTS.md.template +4 -0
  118. package/templates/workspaceRoot/CLAUDE.md.template +19 -0
  119. package/templates/workspaceRoot/biome.json.template +2 -1
  120. package/templates/workspaceRoot/docs/AI-DEVELOPMENT.md.template +10 -14
  121. package/templates/workspaceRoot/docs/GENERATED.md.template +12 -10
  122. package/templates/workspaceRoot/package.json.template +2 -4
  123. package/typeChecker-3xgrzc2v.js +7 -0
  124. package/typecheck.proc.js +4 -5
  125. package/{workflow.command-2ygfqt4f.js → workflow.command-m4z25a2p.js} +22 -25
  126. package/{workspace.command-88m0zs64.js → workspace.command-dqgj9zbk.js} +96 -81
  127. package/capacitorApp-9xswcgx7.js +0 -61
  128. package/dependencyScanner-f6grrep3.js +0 -9
  129. package/getDirname-m9s0cmhq.js +0 -8
  130. package/index-mxvakhsm.js +0 -66
  131. package/index-r24hmh0q.js +0 -4
  132. package/recipeScanner-tghkzrrt.js +0 -12
  133. package/typeChecker-kravn7ns.js +0 -8
  134. /package/{index-0wae5ebk.js → index-meh558jy.js} +0 -0
  135. /package/{index-ss469dec.js → index-nz8prx9g.js} +0 -0
package/.build-stamp CHANGED
@@ -1 +1 @@
1
- 6b7642e0cc9a9f32e14e948f3e4bf2486a5102e37f62f3c7c15cd3eb62cde674
1
+ 4555f9639a8471059ce45bf265787ab7caf5278c8509bf865e1d92e7193e66a0
package/README.ko.md CHANGED
@@ -64,7 +64,7 @@ metadata를 검증합니다.
64
64
 
65
65
  ## 요구사항
66
66
 
67
- - [Bun](https://bun.sh) `>=1.3.13`
67
+ - [Bun](https://bun.sh) `>=1.4.0`
68
68
  - TypeScript 기반 Akan 워크스페이스
69
69
 
70
70
  ## 라이선스
package/README.md CHANGED
@@ -77,7 +77,7 @@ artifact is built last and is not overwritten by the root `akan` bootstrap scrip
77
77
 
78
78
  ## Requirements
79
79
 
80
- - [Bun](https://bun.sh) `>=1.3.13`
80
+ - [Bun](https://bun.sh) `>=1.4.0`
81
81
  - A TypeScript Akan workspace
82
82
 
83
83
  ## License
@@ -1,13 +1,11 @@
1
1
  // @bun
2
+ import"./index-q0y2jq9j.js";
2
3
  import {
3
4
  AiSession
4
- } from "./index-0cj2zxbm.js";
5
+ } from "./index-n85fer99.js";
5
6
  import {
6
7
  AbstractDoc
7
- } from "./index-0wae5ebk.js";
8
- import"./index-mxvakhsm.js";
9
- import"./index-67546d0j.js";
10
- import"./index-r24hmh0q.js";
8
+ } from "./index-meh558jy.js";
11
9
 
12
10
  // pkgs/@akanjs/devkit/abstractCompactor.ts
13
11
  import { Logger } from "akanjs/common";
@@ -1,20 +1,18 @@
1
1
  // @bun
2
- import {
3
- AgentScript
4
- } from "./index-eyyf2149.js";
5
- import"./index-774gcx29.js";
6
- import"./index-rxkpk7n4.js";
7
- import"./index-j37qq1f2.js";
8
2
  import {
9
3
  Workspace,
10
4
  command
11
- } from "./index-kdh76j26.js";
12
- import"./index-z8ptfkzv.js";
13
- import"./index-mxvakhsm.js";
14
- import"./index-xys926f2.js";
15
- import"./index-1577bej2.js";
16
- import"./index-67546d0j.js";
17
- import"./index-r24hmh0q.js";
5
+ } from "./index-cezy7yb3.js";
6
+ import"./index-q0y2jq9j.js";
7
+ import"./index-q8sn827n.js";
8
+ import"./index-6wwzs1bc.js";
9
+ import"./index-by5gpp8x.js";
10
+ import"./index-e82dyeqy.js";
11
+ import"./index-0emb9eat.js";
12
+ import"./index-h7yw2z9n.js";
13
+ import {
14
+ AgentScript
15
+ } from "./index-rntcdss1.js";
18
16
 
19
17
  // pkgs/@akanjs/cli/agent/agent.command.ts
20
18
  class AgentCommand extends command("agent", [AgentScript], ({ public: target }) => ({
@@ -1,32 +1,30 @@
1
1
  // @bun
2
- import {
3
- AbstractDoc
4
- } from "./index-0wae5ebk.js";
5
- import {
6
- ApplicationScript
7
- } from "./index-62955kn5.js";
8
- import"./index-d43t8af2.js";
9
- import {
10
- getMobileTargetChoices
11
- } from "./index-76rn3g2c.js";
12
2
  import {
13
3
  App,
14
- Exec,
4
+ Apps,
15
5
  Sys,
6
+ Exec,
16
7
  Workspace,
17
8
  command
18
- } from "./index-kdh76j26.js";
19
- import"./index-fgc8r6dj.js";
20
- import"./index-bjpxzr6s.js";
21
- import"./index-z8ptfkzv.js";
22
- import"./index-mxvakhsm.js";
23
- import"./index-1577bej2.js";
24
- import"./index-67546d0j.js";
25
- import"./index-r24hmh0q.js";
9
+ } from "./index-cezy7yb3.js";
10
+ import"./index-q0y2jq9j.js";
11
+ import"./index-q8sn827n.js";
12
+ import"./index-6wwzs1bc.js";
13
+ import {
14
+ ApplicationScript
15
+ } from "./index-d61rcfa2.js";
16
+ import"./index-zkvpaggp.js";
17
+ import"./index-9wtbw98m.js";
18
+ import {
19
+ AbstractDoc
20
+ } from "./index-meh558jy.js";
21
+ import"./index-pvb4vdwr.js";
22
+ import {
23
+ getMobileTargetChoices
24
+ } from "./index-47pj3aee.js";
26
25
 
27
26
  // pkgs/@akanjs/cli/application/application.command.ts
28
27
  import { select } from "@inquirer/prompts";
29
- var asMobileEnv = (env) => env;
30
28
  var mobileTargetOption = {
31
29
  desc: "mobile target name or all",
32
30
  ask: "Select mobile target",
@@ -40,6 +38,9 @@ class ApplicationCommand extends command("application", [ApplicationScript], ({
40
38
  removeApplication: target({ desc: "Remove an application from the workspace" }).with(App).exec(async function(app) {
41
39
  await this.applicationScript.removeApplication(app);
42
40
  }),
41
+ planSlice: target({ desc: "List the exact files an app needs to live in a workspace of its own" }).with(App).option("format", String, { desc: "output format", default: "text", enum: ["text", "json"] }).exec(async function(app, format) {
42
+ await this.applicationScript.planSlice(app, format);
43
+ }),
43
44
  sync: target({ desc: "Sync dependencies and configuration for an app or library" }).with(Sys).exec(async function(sys) {
44
45
  await this.applicationScript.sync(sys);
45
46
  }),
@@ -56,6 +57,29 @@ class ApplicationCommand extends command("application", [ApplicationScript], ({
56
57
  console: target({ desc: "Open an interactive server console for the application" }).with(App).exec(async function(app) {
57
58
  await this.applicationScript.console(app);
58
59
  }),
60
+ logs: target({ desc: "Tail the running application's logs, filtered (attaches to akan-control.sock)" }).with(App).option("level", String, { desc: "minimum level: trace, verbose, debug, info, warn, error", nullable: true }).option("grep", String, { desc: "substring the message must contain", nullable: true }).option("endpoint", String, {
61
+ desc: "endpoint glob(s), comma-separated: mutation:*, query:userList",
62
+ nullable: true
63
+ }).option("trace", String, { desc: "one request's traceId", nullable: true }).option("child", String, { desc: "replica index(es), comma-separated", nullable: true }).option("role", String, { flag: "R", desc: "process role(s): gateway, all, batch, rsc-worker", nullable: true }).option("origin", String, { desc: "call origin(s): http, websocket, mcp, internal, page", nullable: true }).option("since", String, { desc: "only records newer than this: 5m, 30s, or epoch ms", nullable: true }).option("replay", Number, { flag: "n", desc: "records to replay from the buffer before following", default: 0 }).option("json", Boolean, { desc: "print NDJSON records instead of rendered lines", default: false }).option("follow", Boolean, { desc: "keep streaming; pass --follow false for history only", default: true }).option("runtimeDir", String, {
64
+ flag: "d",
65
+ desc: "runtime dir holding akan-control.sock (default: local/apps/<app>/runtime)",
66
+ nullable: true
67
+ }).exec(async function(app, level, grep, endpoint, trace, child, role, origin, since, replay, json, follow, runtimeDir) {
68
+ await this.applicationScript.logs(app, {
69
+ level,
70
+ grep,
71
+ endpoint,
72
+ trace,
73
+ child,
74
+ role,
75
+ origin,
76
+ since,
77
+ replay,
78
+ json,
79
+ follow,
80
+ runtimeDir
81
+ });
82
+ }),
59
83
  build: target({ short: true, desc: "Build the application for production (frontend + backend)" }).with(App).option("write", Boolean, { desc: "write code generation", default: true }).option("fast", Boolean, { desc: "fast build", default: false }).option("quiet", Boolean, { desc: "hide build progress output", default: false }).exec(async function(app, write, fast, quiet) {
60
84
  await this.applicationScript.build(app, { write, fast, quiet });
61
85
  }),
@@ -69,18 +93,18 @@ class ApplicationCommand extends command("application", [ApplicationScript], ({
69
93
  enum: ["local", "debug", "develop", "main"],
70
94
  desc: "backend environment",
71
95
  default: "debug"
72
- }).option("write", Boolean, { desc: "write code generation", default: true }).option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false }).exec(async function(app, target2, env, write, regenerate) {
73
- await this.applicationScript.buildIos(app, { target: target2, env: asMobileEnv(env), write, regenerate });
96
+ }).option("write", Boolean, { desc: "write code generation", default: true }).option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false }).exec(async function(app, target, env, write, regenerate) {
97
+ await this.applicationScript.buildIos(app, { target, env, write, regenerate });
74
98
  }),
75
99
  buildAndroid: target({ short: true, desc: "Build Android app with Capacitor" }).with(App).option("target", String, mobileTargetOption).option("env", String, {
76
100
  enum: ["local", "debug", "develop", "main"],
77
101
  desc: "backend environment",
78
102
  default: "debug"
79
- }).option("write", Boolean, { desc: "write code generation", default: true }).option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false }).exec(async function(app, target2, env, write, regenerate) {
80
- await this.applicationScript.buildAndroid(app, { target: target2, env: asMobileEnv(env), write, regenerate });
103
+ }).option("write", Boolean, { desc: "write code generation", default: true }).option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false }).exec(async function(app, target, env, write, regenerate) {
104
+ await this.applicationScript.buildAndroid(app, { target, env, write, regenerate });
81
105
  }),
82
- start: target({ short: true, desc: "Start development server (frontend SSR + backend)" }).with(App).option("open", Boolean, { desc: "open web browser?", default: false }).option("write", Boolean, { desc: "write code generation", default: true }).exec(async function(app, open, write) {
83
- await this.applicationScript.start(app, { open, write });
106
+ start: target({ short: true, desc: "Start development server(s) (frontend SSR + backend)" }).with(Apps).option("plain", Boolean, { desc: "print prefixed lines instead of the full-screen view", default: false }).option("kill", Boolean, { flag: "k", desc: "free the dev ports first, whoever is holding them", default: false }).option("concurrency", Number, { desc: "apps to boot at a time", default: 1 }).option("dbup", Boolean, { desc: "start the local database first", default: true }).option("open", Boolean, { desc: "open web browser?", default: false }).option("write", Boolean, { desc: "write code generation", default: true }).exec(async function(apps, plain, kill, concurrency, dbup, open, write) {
107
+ await this.applicationScript.start(apps, { plain, kill, concurrency, dbup, open, write });
84
108
  }),
85
109
  startIos: target({ short: true, desc: "Start iOS app in simulator or device" }).with(App).option("target", String, mobileTargetOption).option("env", String, {
86
110
  enum: ["local", "debug", "develop", "main"],
@@ -92,10 +116,10 @@ class ApplicationCommand extends command("application", [ApplicationScript], ({
92
116
  }).option("device", String, {
93
117
  desc: "run target to select non-interactively: udid, device name, or runtime (e.g. 'iPhone 16' or 'iOS 18')",
94
118
  default: ""
95
- }).exec(async function(app, target2, env, open, release, write, regenerate, noAllowProvisioningUpdates, device) {
119
+ }).exec(async function(app, target, env, open, release, write, regenerate, noAllowProvisioningUpdates, device) {
96
120
  await this.applicationScript.startIos(app, {
97
- target: target2,
98
- env: asMobileEnv(env),
121
+ target,
122
+ env,
99
123
  open,
100
124
  operation: release ? "release" : "local",
101
125
  write,
@@ -108,10 +132,10 @@ class ApplicationCommand extends command("application", [ApplicationScript], ({
108
132
  enum: ["local", "debug", "develop", "main"],
109
133
  desc: "backend environment",
110
134
  default: "local"
111
- }).option("release", Boolean, { desc: "release mode", default: false }).option("open", Boolean, { desc: "open android simulator", default: false }).option("write", Boolean, { desc: "write code generation", default: true }).option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false }).exec(async function(app, target2, env, release, open, write, regenerate) {
135
+ }).option("release", Boolean, { desc: "release mode", default: false }).option("open", Boolean, { desc: "open android simulator", default: false }).option("write", Boolean, { desc: "write code generation", default: true }).option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false }).exec(async function(app, target, env, release, open, write, regenerate) {
112
136
  await this.applicationScript.startAndroid(app, {
113
- target: target2,
114
- env: asMobileEnv(env),
137
+ target,
138
+ env,
115
139
  open,
116
140
  operation: release ? "release" : "local",
117
141
  write,
@@ -122,10 +146,10 @@ class ApplicationCommand extends command("application", [ApplicationScript], ({
122
146
  enum: ["debug", "develop", "main", "local"],
123
147
  desc: "backend environment",
124
148
  default: "main"
125
- }).option("write", Boolean, { desc: "write code generation", default: true }).option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false }).option("allowLocalRelease", Boolean, { flag: "l", desc: "allow release with --env local", default: false }).exec(async function(app, target2, env, write, regenerate, allowLocalRelease) {
149
+ }).option("write", Boolean, { desc: "write code generation", default: true }).option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false }).option("allowLocalRelease", Boolean, { flag: "l", desc: "allow release with --env local", default: false }).exec(async function(app, target, env, write, regenerate, allowLocalRelease) {
126
150
  await this.applicationScript.releaseIos(app, {
127
- target: target2,
128
- env: asMobileEnv(env),
151
+ target,
152
+ env,
129
153
  write,
130
154
  regenerate,
131
155
  allowLocalRelease
@@ -135,10 +159,10 @@ class ApplicationCommand extends command("application", [ApplicationScript], ({
135
159
  enum: ["debug", "develop", "main", "local"],
136
160
  desc: "backend environment",
137
161
  default: "main"
138
- }).option("write", Boolean, { desc: "write code generation", default: true }).option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false }).option("allowLocalRelease", Boolean, { flag: "l", desc: "allow release with --env local", default: false }).exec(async function(app, assembleType, target2, env, write, regenerate, allowLocalRelease) {
162
+ }).option("write", Boolean, { desc: "write code generation", default: true }).option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false }).option("allowLocalRelease", Boolean, { flag: "l", desc: "allow release with --env local", default: false }).exec(async function(app, assembleType, target, env, write, regenerate, allowLocalRelease) {
139
163
  await this.applicationScript.releaseAndroid(app, assembleType, {
140
- target: target2,
141
- env: asMobileEnv(env),
164
+ target,
165
+ env,
142
166
  write,
143
167
  regenerate,
144
168
  allowLocalRelease
@@ -1,17 +1,18 @@
1
1
  // @bun
2
+ import {
3
+ Spinner
4
+ } from "./index-q8sn827n.js";
2
5
  import {
3
6
  AllRoutesBuilder,
4
7
  CsrArtifactBuilder,
5
- SsrBaseArtifactBuilder,
6
- precompressArtifacts
7
- } from "./index-qb61h0k7.js";
8
- import"./index-xjd3rqzj.js";
9
- import"./index-j9cxndc0.js";
10
- import"./index-bjpxzr6s.js";
11
- import {
12
- Spinner
13
- } from "./index-mxvakhsm.js";
14
- import"./index-r24hmh0q.js";
8
+ FontPruner,
9
+ precompressArtifacts,
10
+ SsrBaseArtifactBuilder
11
+ } from "./index-jydtyzva.js";
12
+ import"./index-w8kmx1b6.js";
13
+ import"./index-q0y2jq9j.js";
14
+ import"./index-9wtbw98m.js";
15
+ import"./index-n68jx79w.js";
15
16
 
16
17
  // pkgs/@akanjs/devkit/applicationBuildRunner.ts
17
18
  import { mkdir, rm } from "fs/promises";
@@ -22,6 +23,7 @@ var BUILD_PHASE_EMOJIS = {
22
23
  backend: "\uD83D\uDCE6",
23
24
  ssr: "\uD83E\uDDED",
24
25
  csr: "\uD83C\uDFA8",
26
+ assets: "\u2702\uFE0F",
25
27
  compress: "\uD83D\uDDDC\uFE0F",
26
28
  metadata: "\uD83D\uDCDD"
27
29
  };
@@ -39,7 +41,6 @@ var SSR_RENDER_EXTERNALS = [
39
41
  var AKAN_OPTIONAL_BACKEND_EXTERNALS = [
40
42
  "@libsql/client",
41
43
  "bullmq",
42
- "croner",
43
44
  "ioredis",
44
45
  "postgres",
45
46
  "protobufjs"
@@ -58,14 +59,16 @@ class ApplicationBuildRunner {
58
59
  }
59
60
  async build({ spinner = false } = {}) {
60
61
  const phaseOptions = { spinner };
62
+ const { web, assets } = await this.#app.getConfig();
61
63
  await this.#runPhase("prepare", "Preparing output directory", () => this.#app.prepareCommand("build"), undefined, {
62
64
  spinner
63
65
  });
64
66
  if (!this.#fast)
65
67
  await this.#runPhase("typecheck", "Typechecking", () => this.typecheck(), undefined, phaseOptions);
66
68
  await this.#runPhase("backend", "Compiling backend", () => this.#buildBackend(), (result) => `${result.entrypoints} entrypoints, ${result.outputs} outputs`, phaseOptions);
67
- await this.#runPhase("ssr", "Building SSR route artifacts", () => this.#buildSsr(), (result) => result ? `${result.allRoutes.manifest.routeIds.length} routes, ${result.allRoutes.manifest.knownEntries.length} entries` : "skipped", phaseOptions);
68
- await this.#runPhase("csr", "Building CSR assets", () => this.#buildCsr(), (result) => result?.outputDir ?? "skipped", phaseOptions);
69
+ await this.#runPhase("ssr", "Building SSR route artifacts", async () => web.ssr ? await this.#buildSsr() : null, (result) => result ? `${result.allRoutes.manifest.routeIds.length} routes, ${result.allRoutes.manifest.knownEntries.length} entries` : web.ssr ? "skipped" : "disabled by akan.config.ts web.ssr", phaseOptions);
70
+ await this.#runPhase("csr", "Building CSR assets", async () => web.csr ? await this.#buildCsr() : null, (result) => result?.outputDir ?? (web.csr ? "skipped" : "disabled by akan.config.ts web.csr"), phaseOptions);
71
+ await this.#runPhase("assets", "Trimming unread static assets", async () => assets.pruneFonts ? await new FontPruner(this.#app, assets).prune() : null, (result) => result ? `${result.removed.length} font file(s) dropped, ${ApplicationBuildRunner.formatBytes(result.freedBytes)} freed; ${result.kept.length} kept` : "disabled by akan.config.ts assets.pruneFonts", phaseOptions);
69
72
  await this.#runPhase("compress", "Compressing static assets", () => precompressArtifacts(this.#app), (result) => result.files > 0 ? `${result.files} files, ${ApplicationBuildRunner.formatBytes(result.inputBytes)} -> gzip ${ApplicationBuildRunner.formatBytes(result.outputBytes)} / br ${ApplicationBuildRunner.formatBytes(result.brotliBytes)}` : "no files", phaseOptions);
70
73
  await this.#runPhase("metadata", "Writing production metadata", () => this.#buildAppMeta(), undefined, {
71
74
  spinner
@@ -107,7 +110,7 @@ class ApplicationBuildRunner {
107
110
  const akanConfig = await this.#app.getConfig();
108
111
  await Promise.all([
109
112
  this.#app.dist.writeJson("package.json", akanConfig.getProductionPackageJson()),
110
- this.#app.dist.writeFile(`${this.#app.dist.cwdPath}/Dockerfile`, akanConfig.docker.content)
113
+ this.#app.dist.writeFile(`${this.#app.dist.cwdPath}/Dockerfile`, akanConfig.dockerfile)
111
114
  ]);
112
115
  }
113
116
  async#buildBackend() {
@@ -115,6 +118,7 @@ class ApplicationBuildRunner {
115
118
  const backendExternals = [
116
119
  ...new Set([...akanConfig.externalLibs, ...SSR_RENDER_EXTERNALS, ...AKAN_OPTIONAL_BACKEND_EXTERNALS])
117
120
  ];
121
+ const { web } = akanConfig;
118
122
  const backendEntryPoints = [`${this.#app.cwdPath}/main.ts`, `${this.#app.cwdPath}/server.ts`];
119
123
  for (const entrypoint of backendEntryPoints) {
120
124
  if (!await Bun.file(entrypoint).exists())
@@ -129,7 +133,7 @@ class ApplicationBuildRunner {
129
133
  define: { "process.env.NODE_ENV": JSON.stringify("production") },
130
134
  plugins: backendExternals.length > 0 ? [this.#createExternalSpecifiersPlugin(backendExternals)] : []
131
135
  });
132
- const rscWorkerResult = await this.#buildOrThrow("rsc-worker", {
136
+ const rscWorkerResult = web.ssr ? await this.#buildOrThrow("rsc-worker", {
133
137
  entrypoints: [this.#resolveRscWorkerBuildEntry()],
134
138
  outdir: this.#app.dist.cwdPath,
135
139
  target: "bun",
@@ -138,7 +142,7 @@ class ApplicationBuildRunner {
138
142
  conditions: ["react-server"],
139
143
  define: { "process.env.NODE_ENV": JSON.stringify("production") },
140
144
  plugins: backendExternals.length > 0 ? [this.#createExternalSpecifiersPlugin(backendExternals)] : []
141
- });
145
+ }) : null;
142
146
  const consoleRuntimeResult = await this.#buildOrThrow("console-runtime", {
143
147
  entrypoints: [this.#resolveConsoleRuntimeBuildEntry()],
144
148
  outdir: this.#app.dist.cwdPath,
@@ -149,8 +153,8 @@ class ApplicationBuildRunner {
149
153
  });
150
154
  await this.#writeConsoleShim();
151
155
  return {
152
- entrypoints: backendEntryPoints.length + 2,
153
- outputs: backendResult.outputs.length + rscWorkerResult.outputs.length + consoleRuntimeResult.outputs.length + 1
156
+ entrypoints: backendEntryPoints.length + (rscWorkerResult ? 2 : 1),
157
+ outputs: backendResult.outputs.length + (rscWorkerResult?.outputs.length ?? 0) + consoleRuntimeResult.outputs.length + 1
154
158
  };
155
159
  }
156
160
  async#writeConsoleShim() {
@@ -287,6 +291,5 @@ void run().catch((error) => {
287
291
  }
288
292
  }
289
293
  export {
290
- ApplicationBuildRunner,
291
- AKAN_OPTIONAL_BACKEND_EXTERNALS
294
+ ApplicationBuildRunner
292
295
  };
@@ -1,18 +1,17 @@
1
1
  // @bun
2
- import {
3
- Spinner
4
- } from "./index-mxvakhsm.js";
5
2
  import {
6
3
  FileSys
7
- } from "./index-67546d0j.js";
8
- import"./index-r24hmh0q.js";
4
+ } from "./index-q0y2jq9j.js";
5
+ import {
6
+ Spinner
7
+ } from "./index-q8sn827n.js";
9
8
 
10
9
  // pkgs/@akanjs/devkit/applicationReleasePackager.ts
11
10
  import { cp, mkdir, rm } from "fs/promises";
12
11
  import path from "path";
13
12
 
14
13
  // pkgs/@akanjs/devkit/uploadRelease.ts
15
- import { HttpClient, Logger } from "akanjs/common";
14
+ import { Logger, RestClient } from "akanjs/common";
16
15
  var spinning = (message) => {
17
16
  const spinner = new Spinner(message, { prefix: message, enableSpin: true }).start();
18
17
  return spinner;
@@ -27,7 +26,7 @@ var uploadRelease = async (appName, {
27
26
  }) => {
28
27
  const logger = new Logger("uploadRelease");
29
28
  const basePath = local ? "http://localhost:8282/backend" : "https://cloud.akanjs.com/backend";
30
- const httpClient = new HttpClient(basePath);
29
+ const httpClient = new RestClient(basePath);
31
30
  const buildPath = `${workspaceRoot}/releases/builds/${appName}-release.tar.gz`;
32
31
  const appBuildPath = `${workspaceRoot}/releases/builds/${appName}-appBuild.zip`;
33
32
  const sourcePath = `${workspaceRoot}/releases/sources/${appName}-source.tar.gz`;
@@ -54,7 +53,7 @@ var uploadRelease = async (appName, {
54
53
  preparingFormSpinner.succeed("Preparing form data... done");
55
54
  try {
56
55
  const uploadingFilesSpinner = spinning("Uploading files to server...");
57
- const [buildFile2, sourceFile2, appBuildFile2] = await httpClient.post("/file/addFiles", formData);
56
+ const [buildFile, sourceFile, appBuildFile] = await httpClient.post("/file/addFiles", formData);
58
57
  uploadingFilesSpinner.succeed("Uploading files to server... done");
59
58
  const fetchingAppSpinner = spinning(`Fetching dev app information for ${appName}...`);
60
59
  const major = platformVersion ? parseInt(platformVersion.split(".")[0]) : 1;
@@ -63,7 +62,7 @@ var uploadRelease = async (appName, {
63
62
  const devApp = await httpClient.get(`/devApp/devAppInName/${appName}`);
64
63
  fetchingAppSpinner.succeed(`Fetching dev app information for ${appName}... done`);
65
64
  const pushingReleaseSpinner = spinning(`Pushing release to ${environment} environment...`);
66
- const release = await httpClient.post(`/release/pushRelease/${devApp.id}/${environment}/${major}/${minor}/${patch}/${sourceFile2.id}/${buildFile2.id}/${appBuildFile2.id}${os ? `/${os}` : ""}`);
65
+ const release = await httpClient.post(`/release/pushRelease/${devApp.id}/${environment}/${major}/${minor}/${patch}/${sourceFile.id}/${buildFile.id}/${appBuildFile.id}${os ? `/${os}` : ""}`);
67
66
  pushingReleaseSpinner.succeed(`Pushing release to ${environment} environment... done`);
68
67
  new Spinner(`Successfully pushed release to ${appName}-${environment} server. `, {
69
68
  prefix: `Successfully pushed release to ${appName}-${environment} server. `,
@@ -1,22 +1,20 @@
1
1
  // @bun
2
2
  import {
3
- CsrArtifactBuilder,
3
+ WorkspaceExecutor,
4
+ AppExecutor
5
+ } from "./index-q8sn827n.js";
6
+ import"./index-q0y2jq9j.js";
7
+ import"./index-6wwzs1bc.js";
8
+ import {
4
9
  CssCompiler,
5
- FontOptimizer,
6
10
  PagesBundleBuilder,
11
+ CsrArtifactBuilder,
12
+ FontOptimizer,
7
13
  SsrBaseArtifactBuilder
8
- } from "./index-qb61h0k7.js";
9
- import"./index-xjd3rqzj.js";
10
- import"./index-j9cxndc0.js";
11
- import"./index-bjpxzr6s.js";
12
- import {
13
- AppExecutor,
14
- WorkspaceExecutor
15
- } from "./index-z8ptfkzv.js";
16
- import"./index-mxvakhsm.js";
17
- import"./index-1577bej2.js";
18
- import"./index-67546d0j.js";
19
- import"./index-r24hmh0q.js";
14
+ } from "./index-jydtyzva.js";
15
+ import"./index-w8kmx1b6.js";
16
+ import"./index-9wtbw98m.js";
17
+ import"./index-n68jx79w.js";
20
18
 
21
19
  // pkgs/@akanjs/devkit/incrementalBuilder/buildBatch.proc.ts
22
20
  import path from "path";
@@ -0,0 +1,12 @@
1
+ // @bun
2
+ import {
3
+ isPlaceholderAppId2,
4
+ CapacitorApp2
5
+ } from "./index-pgsswppj.js";
6
+ import"./index-q8sn827n.js";
7
+ import"./index-6wwzs1bc.js";
8
+ import"./index-q0y2jq9j.js";
9
+ export {
10
+ CapacitorApp2 as CapacitorApp,
11
+ isPlaceholderAppId2 as isPlaceholderAppId
12
+ };
@@ -1,27 +1,24 @@
1
1
  // @bun
2
- import {
3
- CloudScript
4
- } from "./index-82jrh4hj.js";
5
- import"./index-4m0bphac.js";
6
- import"./index-gcv8ncfh.js";
2
+ import"./index-q0y2jq9j.js";
7
3
  import {
8
4
  GlobalConfig
9
- } from "./index-0cj2zxbm.js";
10
- import"./index-62955kn5.js";
11
- import"./index-d43t8af2.js";
12
- import"./index-76rn3g2c.js";
5
+ } from "./index-n85fer99.js";
13
6
  import {
14
7
  Workspace,
15
8
  command
16
- } from "./index-kdh76j26.js";
17
- import"./index-fgc8r6dj.js";
18
- import"./index-bjpxzr6s.js";
19
- import"./index-z8ptfkzv.js";
20
- import"./index-mxvakhsm.js";
21
- import"./index-1577bej2.js";
22
- import"./index-46tjzh6s.js";
23
- import"./index-67546d0j.js";
24
- import"./index-r24hmh0q.js";
9
+ } from "./index-cezy7yb3.js";
10
+ import"./index-q8sn827n.js";
11
+ import"./index-6wwzs1bc.js";
12
+ import"./index-d61rcfa2.js";
13
+ import"./index-zkvpaggp.js";
14
+ import"./index-9wtbw98m.js";
15
+ import"./index-kcxmv48c.js";
16
+ import"./index-sjak5v5b.js";
17
+ import"./index-kfnr6c19.js";
18
+ import {
19
+ CloudScript
20
+ } from "./index-deekbtkj.js";
21
+ import"./index-pvb4vdwr.js";
25
22
 
26
23
  // pkgs/@akanjs/cli/cloud/cloud.command.ts
27
24
  var localRegistryUrl = () => process.env.AKAN_NPM_REGISTRY ?? "http://127.0.0.1:4873";
@@ -1 +1 @@
1
- {"byCommand":{"create-workspace":"workspace","generate-agent-rules":"workspace","lint":"workspace","lint-all":"workspace","sync-all":"workspace","init":"workspace","agent":"agent","create-application":"application","remove-application":"application","sync":"application","compact":"application","script":"application","console":"application","build":"application","b":"application","typecheck":"application","t":"application","test":"application","build-ios":"application","bi":"application","build-android":"application","ba":"application","start":"application","s":"application","start-ios":"application","si":"application","start-android":"application","sa":"application","release-ios":"application","release-android":"application","release-source":"application","codepush":"application","dbup":"application","dbdown":"application","configure-app":"application","create-library":"library","remove-library":"library","sync-library":"library","install-library":"library","start-registry":"localRegistry","reset-registry":"localRegistry","smoke-registry":"localRegistry","version":"package","create-package":"package","remove-package":"package","sync-package":"package","build-package":"package","verify-dist-package":"package","verify-akan-publish-packages":"package","create-module":"module","remove-module":"module","create-service":"module","create-view":"module","create-unit":"module","create-template":"module","create-crud-page":"page","context":"context","doctor":"context","mcp-install":"context","mcp":"context","mcp-call":"context","login":"cloud","logout":"cloud","set-llm":"cloud","reset-llm":"cloud","ask":"cloud","deploy-akan":"cloud","update":"cloud","download-env":"cloud","upload-env":"cloud","guideline":"guideline","generate-instruction":"guideline","update-instruction":"guideline","generate-document":"guideline","reapply-instruction":"guideline","create-scalar":"scalar","remove-scalar":"scalar","create-ui":"primitive","add-field":"primitive","add-enum-field":"primitive","quality":"quality","repair":"repair","workflow":"workflow"}}
1
+ {"byCommand":{"create-workspace":"workspace","generate-agent-rules":"workspace","lint":"workspace","lint-all":"workspace","sync-all":"workspace","init":"workspace","agent":"agent","create-application":"application","remove-application":"application","plan-slice":"application","sync":"application","compact":"application","script":"application","console":"application","logs":"application","build":"application","b":"application","typecheck":"application","t":"application","test":"application","build-ios":"application","bi":"application","build-android":"application","ba":"application","start":"application","s":"application","start-ios":"application","si":"application","start-android":"application","sa":"application","release-ios":"application","release-android":"application","release-source":"application","codepush":"application","dbup":"application","dbdown":"application","configure-app":"application","create-library":"library","remove-library":"library","sync-library":"library","library-status":"library","install-library":"library","start-registry":"localRegistry","reset-registry":"localRegistry","smoke-registry":"localRegistry","version":"package","create-package":"package","remove-package":"package","sync-package":"package","build-package":"package","verify-dist-package":"package","verify-akan-publish-packages":"package","create-module":"module","remove-module":"module","create-service":"module","create-view":"module","create-unit":"module","create-template":"module","create-crud-page":"page","context":"context","doctor":"context","mcp-install":"context","mcp":"context","mcp-call":"context","login":"cloud","logout":"cloud","set-llm":"cloud","reset-llm":"cloud","ask":"cloud","deploy-akan":"cloud","update":"cloud","download-env":"cloud","upload-env":"cloud","subspace":"subspace","guideline":"guideline","generate-instruction":"guideline","update-instruction":"guideline","generate-document":"guideline","reapply-instruction":"guideline","create-scalar":"scalar","remove-scalar":"scalar","create-ui":"primitive","add-field":"primitive","add-enum-field":"primitive","quality":"quality","repair":"repair","workflow":"workflow"}}
@@ -1,30 +1,26 @@
1
1
  // @bun
2
- import {
3
- ContextScript
4
- } from "./index-5sn5w2mt.js";
5
- import"./index-jf2ya7r2.js";
6
- import"./index-qzdjd4ct.js";
7
- import"./index-y4vkyhvv.js";
8
- import"./index-3vta1tqa.js";
9
- import"./index-jhpa13zj.js";
10
- import"./index-ss469dec.js";
11
- import"./index-xmmzf150.js";
12
- import"./index-779ske1y.js";
13
- import"./index-0cj2zxbm.js";
14
- import"./index-774gcx29.js";
15
- import"./index-rxkpk7n4.js";
16
- import"./index-j37qq1f2.js";
17
- import"./index-76rn3g2c.js";
18
2
  import {
19
3
  Workspace,
20
4
  command
21
- } from "./index-kdh76j26.js";
22
- import"./index-z8ptfkzv.js";
23
- import"./index-mxvakhsm.js";
24
- import"./index-xys926f2.js";
25
- import"./index-1577bej2.js";
26
- import"./index-67546d0j.js";
27
- import"./index-r24hmh0q.js";
5
+ } from "./index-cezy7yb3.js";
6
+ import"./index-q0y2jq9j.js";
7
+ import"./index-q8sn827n.js";
8
+ import"./index-6wwzs1bc.js";
9
+ import"./index-by5gpp8x.js";
10
+ import"./index-e82dyeqy.js";
11
+ import"./index-0emb9eat.js";
12
+ import {
13
+ ContextScript
14
+ } from "./index-r50qen0z.js";
15
+ import"./index-pgsswppj.js";
16
+ import"./index-h7yw2z9n.js";
17
+ import"./index-y74k5anj.js";
18
+ import"./index-h759vjfa.js";
19
+ import"./index-n85fer99.js";
20
+ import"./index-9bwhxrqf.js";
21
+ import"./index-mpmyqm1y.js";
22
+ import"./index-3vvbv974.js";
23
+ import"./index-5xdqxbn9.js";
28
24
 
29
25
  // pkgs/@akanjs/cli/context/context.command.ts
30
26
  class ContextCommand extends command("context", [ContextScript], ({ public: target }) => ({
@@ -0,0 +1,8 @@
1
+ // @bun
2
+ import {
3
+ TypeScriptDependencyScanner2
4
+ } from "./index-kcxmv48c.js";
5
+ import"./index-q0y2jq9j.js";
6
+ export {
7
+ TypeScriptDependencyScanner2 as TypeScriptDependencyScanner
8
+ };