@akanjs/cli 3.0.0-beta.9 → 3.0.1

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-zfab7pkn.js +9 -0
  3. package/CodeAgentRpcHost-p7h6n2hp.js +7 -0
  4. package/CodeAgentRpcListener-7p7z5dd7.js +97 -0
  5. package/CodeTui-0zhnr0pw.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-aja6z9mn.js} +8 -9
  10. package/akanCode.js +102 -0
  11. package/application.command-049ehgx3.js +246 -0
  12. package/{applicationBuildRunner-kxwbssgn.js → applicationBuildRunner-75n5rpwp.js} +121 -77
  13. package/buildBatch.proc.js +120 -32
  14. package/cloud.command-gw4kqxt8.js +95 -0
  15. package/cloud.script-c723cpcb.js +20 -0
  16. package/code.command-x9t6z5nw.js +154 -0
  17. package/commandManifest.json +1 -1
  18. package/consoleToStderr-h5bryj94.js +7 -0
  19. package/context.command-yfbe1rtd.js +48 -0
  20. package/context.runner-erfe68j5.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-kq9gp690.js +42 -0
  25. package/guidelines/agentRule/agentRule.instruction.md +154 -26
  26. package/guidelines/conventions/conventions.instruction.md +138 -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-2tv3fdx4.js → index-150s07n8.js} +1230 -1459
  36. package/{index-vyvre9en.js → index-25fvrxmy.js} +6 -2
  37. package/{index-kcxmv48c.js → index-2ahj896a.js} +45 -79
  38. package/index-2wc41k5w.js +49 -0
  39. package/index-3hx1z96c.js +87 -0
  40. package/{index-q0y2jq9j.js → index-52w0fvh8.js} +21 -4
  41. package/{index-04bk599g.js → index-5g4rkrvt.js} +10 -17
  42. package/index-5pvxf7z0.js +53 -0
  43. package/index-5q14pwzd.js +69 -0
  44. package/{index-vxtad5bd.js → index-66yspb67.js} +5 -8
  45. package/index-7md2g9vw.js +6 -0
  46. package/index-7p4c0yer.js +1058 -0
  47. package/{index-d43r08tf.js → index-8b639zes.js} +77 -150
  48. package/{index-ktb5njgy.js → index-8kvy8qb4.js} +49 -99
  49. package/index-94s080qm.js +266 -0
  50. package/index-9dp031by.js +12 -0
  51. package/{index-0g7r8xz3.js → index-a37by9hn.js} +114 -232
  52. package/{index-k2j1hc4r.js → index-b95yhqjr.js} +12 -12
  53. package/{index-3d9y066c.js → index-bjwxs904.js} +9 -8
  54. package/{index-2xp0kfkt.js → index-br8pkrk1.js} +37 -25
  55. package/index-c14nsvnv.js +700 -0
  56. package/index-c6eggbee.js +123 -0
  57. package/index-d2242ksy.js +99 -0
  58. package/{index-92zztqy1.js → index-dy0jx9ay.js} +2 -17
  59. package/{index-a64esmtb.js → index-fkvb79qe.js} +523 -1022
  60. package/index-h54yj9wr.js +1119 -0
  61. package/{index-by5gpp8x.js → index-hj6w4ka1.js} +2 -1
  62. package/{index-y6n8nmny.js → index-kn5d4jmg.js} +75 -203
  63. package/index-m3xsb1ms.js +4300 -0
  64. package/{index-gyd220p2.js → index-mb59b8x0.js} +554 -577
  65. package/{index-j9yhg404.js → index-mzjb6zp4.js} +4 -7
  66. package/index-p6pbz9n5.js +25 -0
  67. package/{index-sj5vxr8f.js → index-qe71g4ze.js} +983 -898
  68. package/index-rfcz04w9.js +187 -0
  69. package/{index-hwkygn9s.js → index-senscydg.js} +331 -36
  70. package/{index-ffvk10zz.js → index-vs8mefhy.js} +107 -241
  71. package/index-wa5jbxj1.js +760 -0
  72. package/index-y5ga5w9t.js +2729 -0
  73. package/{index-9077wzd2.js → index-y7hx1ygz.js} +43 -26
  74. package/{index-h7yw2z9n.js → index-zzvvc845.js} +8 -14
  75. package/index.js +23 -22
  76. package/{library.command-qzzbj6d8.js → library.command-keqjevpp.js} +4 -5
  77. package/{localRegistry.command-vyrgg4xw.js → localRegistry.command-pydeq5zf.js} +23 -43
  78. package/{module.command-rq5hq3ax.js → module.command-dkrnqx3v.js} +8 -12
  79. package/{package.command-d9hd6v9n.js → package.command-wmc0ys5y.js} +6 -7
  80. package/package.json +15 -7
  81. package/{page.command-126d56te.js → page.command-tf3erhrv.js} +4 -5
  82. package/{primitive.command-taxd1538.js → primitive.command-7hqpegj4.js} +9 -23
  83. package/prompter-76k56b37.js +8 -0
  84. package/{quality.command-6gsna0a3.js → quality.command-8122axq3.js} +205 -377
  85. package/{recipeScanner-fpagtgc1.js → recipeScanner-4b69ybe0.js} +1 -1
  86. package/{repair.command-tq2dgy72.js → repair.command-mcy12h0n.js} +11 -35
  87. package/{routeSourceValidator-apyqw7wk.js → routeSourceValidator-7ycnfz0e.js} +0 -6
  88. package/{scalar.command-3bcmrrkv.js → scalar.command-vvvbzttc.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-pzvqfy5h.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-82zz5xnq.js +129 -0
  155. package/{typeChecker-3xgrzc2v.js → typeChecker-px49mezc.js} +1 -1
  156. package/typecheck.proc.js +1 -1
  157. package/workflow.command-y8x3kgjv.js +79 -0
  158. package/{workspace.command-06wvstgr.js → workspace.command-jvsb7brc.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
@@ -1,24 +1,33 @@
1
1
  // @bun
2
2
  import {
3
+ ApplicationBuildReporter
4
+ } from "./index-senscydg.js";
5
+ import {
6
+ resolveSsrPageEntriesForApp,
3
7
  WorkspaceExecutor,
4
8
  AppExecutor
5
- } from "./index-2tv3fdx4.js";
6
- import"./index-q0y2jq9j.js";
7
- import"./index-6wwzs1bc.js";
9
+ } from "./index-150s07n8.js";
8
10
  import {
9
- CssCompiler,
11
+ computeRouteSeedIndex,
12
+ saveRouteSeedIndex,
13
+ ServerGraphFile,
10
14
  PagesBundleBuilder,
15
+ CsrDevBundler,
16
+ SsrDevBundler
17
+ } from "./index-m3xsb1ms.js";
18
+ import"./index-52w0fvh8.js";
19
+ import {
11
20
  CsrArtifactBuilder,
21
+ CssCompiler,
12
22
  FontOptimizer,
13
23
  SsrBaseArtifactBuilder
14
- } from "./index-a64esmtb.js";
15
- import"./index-w8kmx1b6.js";
16
- import"./index-hwkygn9s.js";
24
+ } from "./index-fkvb79qe.js";
17
25
  import"./index-n68jx79w.js";
18
26
 
19
27
  // pkgs/@akanjs/devkit/incrementalBuilder/buildBatch.proc.ts
20
28
  import path from "path";
21
29
  import { Logger } from "akanjs/common";
30
+ import { resolveDevCsrMode } from "akanjs/server/hmr/csrDevManifest";
22
31
 
23
32
  class BuildBatch {
24
33
  #logger = new Logger("BuildBatch");
@@ -35,15 +44,23 @@ class BuildBatch {
35
44
  await this.#buildBase();
36
45
  if (this.#request.needs.includes("csr"))
37
46
  await this.#buildCsr();
38
- if (this.#request.needs.includes("pages"))
39
- await this.#buildPages();
47
+ if (this.#request.needs.includes("ssr"))
48
+ await this.#buildSsrRegistry();
40
49
  if (this.#request.needs.includes("css"))
41
50
  await this.#buildCss();
51
+ if (this.#request.needs.includes("pages"))
52
+ await this.#buildPages();
42
53
  return this.#result;
43
54
  }
44
55
  #emit(message) {
45
56
  process.send?.(message);
46
57
  }
58
+ #sentTrace() {
59
+ if (!this.#request.trace)
60
+ return;
61
+ const now = Date.now();
62
+ return { ...this.#request.trace, patchAt: now, sentAt: now };
63
+ }
47
64
  #emitStatus(phase, message) {
48
65
  this.#emit({
49
66
  type: "build-status",
@@ -56,6 +73,13 @@ class BuildBatch {
56
73
  }
57
74
  });
58
75
  }
76
+ #fail(need, label, err) {
77
+ const message = ApplicationBuildReporter.formatError(err, this.#request.workspaceRoot);
78
+ this.#logger.error(`${label} failed: ${message}`);
79
+ this.#result.errors[need] = message;
80
+ if (need !== "base")
81
+ this.#emitStatus(need, message);
82
+ }
59
83
  async#buildBase() {
60
84
  const started = Date.now();
61
85
  try {
@@ -64,44 +88,106 @@ class BuildBatch {
64
88
  this.#result.optimizedFonts = optimizedFonts;
65
89
  this.#logger.verbose(`base-artifact ok buildId=${artifact.pagesBundleBuildId} (${Date.now() - started}ms)`);
66
90
  } catch (err) {
67
- const message = err instanceof Error ? err.message : String(err);
68
- this.#logger.error(`base-artifact failed: ${message}`);
69
- this.#result.errors.base = message;
91
+ this.#fail("base", "base-artifact", err);
70
92
  }
71
93
  }
72
94
  async#buildCsr() {
73
95
  const started = Date.now();
74
96
  try {
75
- await new CsrArtifactBuilder(this.#app).build();
76
- this.#logger.verbose(`csr-rebundle ok (${Date.now() - started}ms)`);
97
+ if (resolveDevCsrMode() === "registry")
98
+ await this.#updateCsrRegistry(started);
99
+ else
100
+ await this.#rebuildCsrArtifact(started);
77
101
  this.#emitStatus("csr");
78
102
  } catch (err) {
79
- const message = err instanceof Error ? err.message : String(err);
80
- this.#logger.error(`csr-rebundle failed: ${message}`);
81
- this.#result.errors.csr = message;
82
- this.#emitStatus("csr", message);
103
+ this.#fail("csr", "csr-rebundle", err);
104
+ }
105
+ }
106
+ async#rebuildCsrArtifact(started) {
107
+ await new CsrArtifactBuilder(this.#app).build();
108
+ this.#logger.verbose(`csr-rebundle ok (${Date.now() - started}ms)`);
109
+ if (this.#request.changedFiles.length === 0)
110
+ return;
111
+ this.#emit({
112
+ type: "csr-updated",
113
+ data: { generation: Date.now(), mode: "artifact", reload: true, reason: "the CSR artifact was rebuilt" }
114
+ });
115
+ }
116
+ async#updateCsrRegistry(started) {
117
+ const update = await new CsrDevBundler(this.#app).update(this.#request.changedFiles, {
118
+ announce: (announced) => this.#emit({
119
+ type: "csr-updated",
120
+ data: {
121
+ generation: announced.generation,
122
+ mode: "registry",
123
+ reload: announced.reload,
124
+ reason: announced.reason,
125
+ patchUrl: announced.patchUrl,
126
+ changedIds: announced.changedIds,
127
+ trace: this.#sentTrace()
128
+ }
129
+ })
130
+ });
131
+ if (!update) {
132
+ this.#logger.verbose(`csr-dev unchanged (${Date.now() - started}ms)`);
133
+ return;
134
+ }
135
+ this.#logger.verbose(`csr-dev generation=${update.generation} ${update.reload ? `reload (${update.reason})` : `patch modules=${update.changedIds.length}`} graph=${update.moduleCount} (${Date.now() - started}ms)`);
136
+ }
137
+ async#buildSsrRegistry() {
138
+ const started = Date.now();
139
+ try {
140
+ const bundler = new SsrDevBundler(this.#app);
141
+ const hold = await ServerGraphFile.touches(await ServerGraphFile.read(this.#request.artifactDir), this.#request.changedFiles, (file) => ServerGraphFile.clientExportsOf(file));
142
+ const update = await bundler.update(this.#request.changedFiles, {
143
+ roots: await bundler.clientEntries(),
144
+ announce: (announced) => this.#emit({
145
+ type: "ssr-updated",
146
+ data: {
147
+ generation: announced.generation,
148
+ reload: announced.reload,
149
+ reason: announced.reason,
150
+ patchUrl: announced.patchUrl,
151
+ changedIds: announced.changedIds,
152
+ trace: this.#sentTrace(),
153
+ ...announced.epoch !== undefined ? { epoch: announced.epoch } : {},
154
+ ...announced.first ? { first: true } : {},
155
+ ...hold && this.#request.changedFiles.length > 0 ? { hold, batchGeneration: this.#request.generation } : {}
156
+ }
157
+ })
158
+ });
159
+ this.#emitStatus("ssr");
160
+ this.#logger.verbose(update ? `ssr-dev generation=${update.generation} ${update.reload ? `reload (${update.reason})` : `patch modules=${update.changedIds.length}`} graph=${update.moduleCount} (${Date.now() - started}ms)` : `ssr-dev unchanged (${Date.now() - started}ms)`);
161
+ } catch (err) {
162
+ this.#fail("ssr", "ssr-dev", err);
83
163
  }
84
164
  }
85
165
  async#buildPages() {
86
166
  const started = Date.now();
87
167
  try {
88
- const next = await new PagesBundleBuilder(this.#app).build();
168
+ const pageEntries = await resolveSsrPageEntriesForApp(this.#app, await this.#app.getPageKeys());
169
+ const seedIndex = computeRouteSeedIndex(pageEntries);
170
+ const previousGraph = await ServerGraphFile.read(this.#request.artifactDir);
171
+ const next = await new PagesBundleBuilder(this.#app, "start", pageEntries).build();
172
+ await saveRouteSeedIndex(this.#request.artifactDir, seedIndex);
173
+ const nextGraph = await ServerGraphFile.read(this.#request.artifactDir);
174
+ const serverTouched = await ServerGraphFile.touches(previousGraph, [...this.#request.changedFiles, ...previousGraph?.carried ?? []], (file) => nextGraph?.clientExports[file] ?? null, nextGraph);
89
175
  this.#emit({
90
176
  type: "pages-updated",
91
177
  data: {
92
178
  bundlePath: next.bundlePath,
93
179
  buildId: next.buildId,
94
180
  generation: this.#request.generation,
95
- changedFiles: this.#request.changedFiles
181
+ changedFiles: this.#request.changedFiles,
182
+ trace: this.#sentTrace(),
183
+ serverTouched
96
184
  }
97
185
  });
98
186
  this.#emitStatus("pages");
99
187
  this.#logger.verbose(`pages-rebundle ok buildId=${next.buildId} (${Date.now() - started}ms)`);
100
188
  } catch (err) {
101
- const message = err instanceof Error ? err.message : String(err);
102
- this.#logger.error(`pages-rebundle failed: ${message}`);
103
- this.#result.errors.pages = message;
104
- this.#emitStatus("pages", message);
189
+ this.#fail("pages", "pages-rebundle", err);
190
+ await ServerGraphFile.carry(this.#request.artifactDir, this.#request.changedFiles).catch((carryError) => this.#logger.warn(`server graph carry failed; the next save may skip its RSC refresh: ${String(carryError)}`));
105
191
  }
106
192
  }
107
193
  async#buildCss() {
@@ -143,10 +229,7 @@ ${cssText}`).toString(36);
143
229
  });
144
230
  this.#logger.verbose(`css-compile ok assets=${Object.keys(cssAssets).length} (${Date.now() - started}ms)`);
145
231
  } catch (err) {
146
- const message = err instanceof Error ? err.message : String(err);
147
- this.#logger.error(`css-rebuild failed: ${message}`);
148
- this.#result.errors.css = message;
149
- this.#emitStatus("css", message);
232
+ this.#fail("css", "css-rebuild", err);
150
233
  }
151
234
  }
152
235
  async#optimizeFonts() {
@@ -162,8 +245,6 @@ ${cssText}`).toString(36);
162
245
  return optimizedFonts;
163
246
  }
164
247
  static #shouldReoptimizeFonts(previous, changedFiles) {
165
- if (changedFiles.length === 0)
166
- return false;
167
248
  return changedFiles.some((file) => {
168
249
  const normalized = path.resolve(file);
169
250
  if (/\.(woff2?|ttf|otf)$/i.test(normalized))
@@ -175,7 +256,11 @@ ${cssText}`).toString(36);
175
256
  const raw = process.argv[2];
176
257
  if (!raw)
177
258
  throw new Error("[build-batch] missing request argument");
178
- const request = JSON.parse(raw);
259
+ const parsed = JSON.parse(raw);
260
+ const request = parsed.trace ? {
261
+ ...parsed,
262
+ trace: { ...parsed.trace, workerStartAt: Math.round(performance.timeOrigin), workerAt: Date.now() }
263
+ } : parsed;
179
264
  const workspace = WorkspaceExecutor.fromRoot({
180
265
  workspaceRoot: request.workspaceRoot,
181
266
  repoName: request.repoName
@@ -183,11 +268,14 @@ ${cssText}`).toString(36);
183
268
  const app = AppExecutor.from(workspace, request.appName);
184
269
  if (request.pageKeys)
185
270
  app.setPageKeys(request.pageKeys);
271
+ const orphaned = () => process.exit(1);
272
+ process.on("disconnect", orphaned);
186
273
  const result = await new BuildBatch(request, app).run();
187
274
  process.send?.({ type: "build-batch-result", data: result });
275
+ process.off("disconnect", orphaned);
188
276
  }
189
277
  }
190
- BuildBatch.main().catch((err) => {
278
+ await BuildBatch.main().catch((err) => {
191
279
  console.error(err);
192
280
  process.exit(1);
193
281
  });
@@ -0,0 +1,95 @@
1
+ // @bun
2
+ import"./index-52w0fvh8.js";
3
+ import {
4
+ GlobalConfig
5
+ } from "./index-94s080qm.js";
6
+ import {
7
+ Workspace,
8
+ command
9
+ } from "./index-a37by9hn.js";
10
+ import"./index-150s07n8.js";
11
+ import {
12
+ PlatformTestRun
13
+ } from "./index-h54yj9wr.js";
14
+ import"./index-senscydg.js";
15
+ import"./index-7p4c0yer.js";
16
+ import"./index-66yspb67.js";
17
+ import"./index-qe71g4ze.js";
18
+ import"./index-7md2g9vw.js";
19
+ import"./index-2ahj896a.js";
20
+ import"./index-y7hx1ygz.js";
21
+ import {
22
+ CloudScript2
23
+ } from "./index-br8pkrk1.js";
24
+ import"./index-mzjb6zp4.js";
25
+
26
+ // pkgs/@akanjs/cli/cloud/cloud.command.ts
27
+ var localRegistryUrl = () => process.env.AKAN_NPM_REGISTRY ?? "http://127.0.0.1:4873";
28
+ var resolveRegistryUrl = (registry) => registry === "local" ? localRegistryUrl() : undefined;
29
+
30
+ class CloudCommand extends command("cloud", [CloudScript2], ({ public: target }) => ({
31
+ login: target({ desc: "Login to Akan Cloud services" }).option("host", String, { desc: "host of the cloud", default: GlobalConfig.akanCloudHost }).with(Workspace).exec(async function(host, workspace) {
32
+ await this.cloudScript.login(workspace, host);
33
+ }),
34
+ logout: target({ desc: "Logout from Akan Cloud services" }).option("host", String, { desc: "host of the cloud", default: GlobalConfig.akanCloudHost }).with(Workspace).exec(async function(host, workspace) {
35
+ await this.cloudScript.logout(workspace, host);
36
+ }),
37
+ deployAkan: target({ devOnly: true, desc: "Deploy Akan.js framework to cloud (internal use)" }).option("test", Boolean, { desc: "test the deployment", default: true }).option("registry", String, {
38
+ desc: "registry target for publishing Akan packages",
39
+ ask: "Select a registry target",
40
+ enum: [
41
+ { label: "local", value: "local" },
42
+ { label: "npm", value: "npm" }
43
+ ]
44
+ }).option("platforms", String, {
45
+ desc: "platforms to test on besides this machine, comma-separated: linux, windows (none to skip)",
46
+ default: "linux,windows"
47
+ }).with(Workspace).exec(async function(test, registry, platforms, workspace) {
48
+ await this.cloudScript.deployAkan(workspace, {
49
+ test,
50
+ registryUrl: resolveRegistryUrl(registry),
51
+ platforms: PlatformTestRun.parsePlatforms(platforms)
52
+ });
53
+ }),
54
+ testPlatforms: target({
55
+ devOnly: true,
56
+ desc: "Run the Akan package suites on Linux (Docker) and Windows (SSH) against a snapshot of this tree"
57
+ }).option("platforms", String, {
58
+ desc: "platforms to test on, comma-separated: linux, windows",
59
+ default: "linux,windows"
60
+ }).option("pkgs", String, {
61
+ flag: "k",
62
+ desc: "packages to test, comma-separated (default: every Akan package)",
63
+ nullable: true
64
+ }).with(Workspace).exec(async function(platforms, pkgs, workspace) {
65
+ await this.cloudScript.testPlatforms(workspace, {
66
+ platforms: PlatformTestRun.parsePlatforms(platforms),
67
+ pkgs: pkgs?.split(",").map((pkg) => pkg.trim()).filter(Boolean)
68
+ });
69
+ }),
70
+ update: target({ desc: "Update Akan.js framework to the latest version" }).with(Workspace).option("tag", String, {
71
+ desc: "tag of the update",
72
+ default: "latest",
73
+ enum: ["latest", "dev", "canary", "beta", "rc", "alpha"]
74
+ }).option("registry", String, {
75
+ desc: "registry target for resolving Akan packages",
76
+ ask: "Select a registry target",
77
+ enum: [
78
+ { label: "npm", value: "npm" },
79
+ { label: "local", value: "local" }
80
+ ],
81
+ default: process.env.USE_AKANJS_PKGS === "true" ? undefined : "npm"
82
+ }).exec(async function(workspace, tag, registry) {
83
+ await this.cloudScript.update(workspace, tag, { registryUrl: resolveRegistryUrl(registry) });
84
+ }),
85
+ downloadEnv: target({ desc: "Download environment variables from cloud or SCP server" }).option("host", String, { desc: "host of the cloud to target", default: GlobalConfig.akanCloudHost }).with(Workspace).exec(async function(host, workspace) {
86
+ await this.cloudScript.downloadEnv(workspace, undefined, { host });
87
+ }),
88
+ uploadEnv: target({ desc: "Upload environment variables to cloud or SCP server" }).option("host", String, { desc: "host of the cloud to target", default: GlobalConfig.akanCloudHost }).with(Workspace).exec(async function(host, workspace) {
89
+ await this.cloudScript.uploadEnv(workspace, { host });
90
+ })
91
+ })) {
92
+ }
93
+ export {
94
+ CloudCommand
95
+ };
@@ -0,0 +1,20 @@
1
+ // @bun
2
+ import {
3
+ CloudScript2
4
+ } from "./index-br8pkrk1.js";
5
+ import"./index-h54yj9wr.js";
6
+ import"./index-y7hx1ygz.js";
7
+ import"./index-qe71g4ze.js";
8
+ import"./index-mzjb6zp4.js";
9
+ import"./index-66yspb67.js";
10
+ import"./index-7p4c0yer.js";
11
+ import"./index-94s080qm.js";
12
+ import"./index-a37by9hn.js";
13
+ import"./index-7md2g9vw.js";
14
+ import"./index-senscydg.js";
15
+ import"./index-150s07n8.js";
16
+ import"./index-2ahj896a.js";
17
+ import"./index-52w0fvh8.js";
18
+ export {
19
+ CloudScript2 as CloudScript
20
+ };
@@ -0,0 +1,154 @@
1
+ // @bun
2
+ import {
3
+ Workspace,
4
+ runner,
5
+ script,
6
+ command
7
+ } from "./index-a37by9hn.js";
8
+ import"./index-52w0fvh8.js";
9
+ import"./index-150s07n8.js";
10
+ import {
11
+ akanCodeDefaultModel2,
12
+ CodeAgentStreamPrinter2
13
+ } from "./index-c6eggbee.js";
14
+
15
+ // pkgs/@akanjs/cli/code/code.runner.ts
16
+ import { codeAgentPresets, isCodeAgentPresetName } from "akanjs/common";
17
+
18
+ class CodeRunner extends runner("code") {
19
+ async serve(options, listen) {
20
+ await import("./consoleToStderr-h5bryj94.js");
21
+ const [{ CodeAgent }, { CodeAgentRpcHost }, { CodeAgentRpcListener }] = await Promise.all([
22
+ import("./CodeAgent-zfab7pkn.js"),
23
+ import("./CodeAgentRpcHost-p7h6n2hp.js"),
24
+ import("./CodeAgentRpcListener-7p7z5dd7.js")
25
+ ]);
26
+ const address = listen ? CodeAgentRpcListener.parse(listen) : null;
27
+ const agent = await CodeAgent.create({ ...await CodeRunner.#agentOptions(options, true), mode: "rpc" });
28
+ if (!address)
29
+ return await new CodeAgentRpcHost(agent).serve();
30
+ const listener = new CodeAgentRpcListener(new CodeAgentRpcHost(agent, null), address).listen();
31
+ process.stderr.write(`akan code rpc listening on ${"unix" in address ? address.unix : `${address.hostname}:${listener.port}`}
32
+ `);
33
+ await listener.serve();
34
+ }
35
+ async tui(options, seed) {
36
+ const [{ CodeAgent }, { CodeTui }] = await Promise.all([
37
+ import("./CodeAgent-zfab7pkn.js"),
38
+ import("./CodeTui-0zhnr0pw.js")
39
+ ]);
40
+ const agentOptions = await CodeRunner.#agentOptions(options, false);
41
+ let resume = options.resume;
42
+ let prompt = seed;
43
+ let notice;
44
+ for (;; ) {
45
+ const agent = await CodeAgent.create({ ...agentOptions, mode: "tui", ...resume ? { resume } : {} });
46
+ let next;
47
+ try {
48
+ next = await new CodeTui(agent, {
49
+ thinking: options.thinking,
50
+ ...notice ? { notice } : {}
51
+ }).run(prompt);
52
+ } finally {
53
+ agent.dispose();
54
+ }
55
+ if (!next)
56
+ return;
57
+ resume = next.id;
58
+ notice = next.notice;
59
+ prompt = "";
60
+ }
61
+ }
62
+ async run(prompt, options) {
63
+ const { CodeAgent } = await import("./CodeAgent-zfab7pkn.js");
64
+ const agent = await CodeAgent.create(await CodeRunner.#agentOptions(options, false));
65
+ const printer = new CodeAgentStreamPrinter2({ json: options.json, thinking: options.thinking });
66
+ agent.on((event) => printer.print(event));
67
+ agent.announce();
68
+ try {
69
+ await agent.prompt(prompt);
70
+ await agent.waitForIdle();
71
+ } finally {
72
+ printer.finish();
73
+ agent.dispose();
74
+ }
75
+ }
76
+ static async#agentOptions(options, hostAttached) {
77
+ const profile = CodeRunner.profileOf(options, { hostAttached });
78
+ return {
79
+ workspace: options.workspace,
80
+ cwd: profile.paths.root,
81
+ profile,
82
+ apps: options.app ? [options.app] : await options.workspace.getApps(),
83
+ model: CodeRunner.modelOf(options.model)
84
+ };
85
+ }
86
+ static profileOf(options, { hostAttached }) {
87
+ if (!isCodeAgentPresetName(options.profile))
88
+ throw new Error(`Unknown profile: ${options.profile}. Use local, pod, review, or web.`);
89
+ const root = options.app ? `${options.workspace.workspaceRoot}/apps/${options.app}` : options.workspace.workspaceRoot;
90
+ const profile = codeAgentPresets[options.profile](root);
91
+ return { ...profile, ui: { ...profile.ui, canPrompt: CodeRunner.canPrompt(profile, hostAttached) } };
92
+ }
93
+ static canPrompt(profile, hostAttached) {
94
+ const forced = process.env.AKAN_CODE_CAN_PROMPT;
95
+ if (forced === "1")
96
+ return true;
97
+ if (forced === "0")
98
+ return false;
99
+ return hostAttached || profile.ui.canPrompt;
100
+ }
101
+ static modelOf(model) {
102
+ if (!model)
103
+ return;
104
+ const [provider, ...rest] = model.split("/");
105
+ if (!provider || !rest.length)
106
+ throw new Error(`Model must be "<provider>/<id>", e.g. ${akanCodeDefaultModel2.provider}/${akanCodeDefaultModel2.id}`);
107
+ return { provider, id: rest.join("/") };
108
+ }
109
+ }
110
+
111
+ // pkgs/@akanjs/cli/code/code.script.ts
112
+ class CodeScript extends script("code", [CodeRunner]) {
113
+ async run(workspace, prompt, options) {
114
+ const run = {
115
+ workspace,
116
+ ...options.app ? { app: options.app } : {},
117
+ profile: options.profile,
118
+ ...options.model ? { model: options.model } : {},
119
+ json: options.json,
120
+ thinking: options.thinking,
121
+ ...options.resume ? { resume: options.resume } : {}
122
+ };
123
+ if (options.rpcListen)
124
+ return await this.codeRunner.serve(run, options.rpcListen);
125
+ if (options.rpc)
126
+ return await this.codeRunner.serve(run);
127
+ const interactive = options.interactive || !prompt.trim() && !options.json && !!process.stdout.isTTY;
128
+ if (interactive)
129
+ return await this.codeRunner.tui(run, prompt);
130
+ if (!prompt.trim())
131
+ throw new Error('akan code needs a prompt when it has no terminal: akan code "add a comment module"');
132
+ await this.codeRunner.run(prompt, run);
133
+ }
134
+ }
135
+
136
+ // pkgs/@akanjs/cli/code/code.command.ts
137
+ class CodeCommand extends command("code", [CodeScript], ({ public: target }) => ({
138
+ code: target({ desc: "Run the akan coding agent on a prompt" }).arg("prompt", String, { desc: "what the agent should do", nullable: true }).option("app", String, { desc: "narrow the agent to one app instead of the whole repo", nullable: true }).option("profile", String, { desc: "local, pod, review, or web", default: "local" }).option("model", String, { desc: "<provider>/<id>, e.g. deepseek/deepseek-flash", nullable: true }).option("json", Boolean, { desc: "print one event per line as JSON", default: false }).option("thinking", Boolean, { desc: "print the model's reasoning", default: false }).option("rpc", Boolean, { desc: "serve the agent over stdio for another process to drive", default: false }).option("rpcListen", String, {
139
+ desc: "serve the RPC wire on unix:<path> or tcp:[host:]<port> instead of stdio",
140
+ flag: "L",
141
+ nullable: true
142
+ }).option("resume", String, { desc: "continue a stored session by id", flag: "R", nullable: true }).option("interactive", Boolean, {
143
+ desc: "open the full-screen session even when a prompt is given",
144
+ flag: "i",
145
+ default: false
146
+ }).with(Workspace).exec(async function(prompt, app, profile, model, json, thinking, rpc, rpcListen, resume, interactive, workspace) {
147
+ const options = { app, profile, model, json, thinking, rpc, rpcListen, interactive, resume };
148
+ await this.codeScript.run(workspace, prompt ?? "", options);
149
+ })
150
+ })) {
151
+ }
152
+ export {
153
+ CodeCommand
154
+ };
@@ -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","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
+ {"byCommand":{"create-workspace":"workspace","generate-agent-rules":"workspace","lint":"workspace","lint-all":"workspace","sync-all":"workspace","init":"workspace","agent":"agent","code":"code","create-application":"application","remove-application":"application","plan-slice":"application","sync":"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","build-desktop":"application","bd":"application","start":"application","s":"application","start-ios":"application","si":"application","start-android":"application","sa":"application","start-desktop":"application","sd":"application","release-ios":"application","release-android":"application","pack-update":"application","update-keygen":"application","publish-update":"application","dbup":"application","db-export":"application","db-import":"application","dbdown":"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","deploy-akan":"cloud","test-platforms":"cloud","update":"cloud","download-env":"cloud","upload-env":"cloud","subspace":"subspace","guideline":"guideline","create-scalar":"scalar","remove-scalar":"scalar","create-ui":"primitive","add-field":"primitive","add-enum-field":"primitive","quality":"quality","repair":"repair","workflow":"workflow","tunnel":"tunnel"}}
@@ -0,0 +1,7 @@
1
+ // @bun
2
+ // pkgs/@akanjs/devkit/codeAgent/agent/consoleToStderr.ts
3
+ import { Console } from "console";
4
+ globalThis.console = new Console({
5
+ stdout: process.stderr,
6
+ stderr: process.stderr
7
+ });
@@ -0,0 +1,48 @@
1
+ // @bun
2
+ import {
3
+ Workspace,
4
+ command
5
+ } from "./index-a37by9hn.js";
6
+ import"./index-52w0fvh8.js";
7
+ import"./index-150s07n8.js";
8
+ import"./index-hj6w4ka1.js";
9
+ import"./index-mb59b8x0.js";
10
+ import"./index-8kvy8qb4.js";
11
+ import"./index-kn5d4jmg.js";
12
+ import"./index-7p4c0yer.js";
13
+ import"./index-zzvvc845.js";
14
+ import"./index-5g4rkrvt.js";
15
+ import"./index-25fvrxmy.js";
16
+ import"./index-rfcz04w9.js";
17
+ import"./index-8b639zes.js";
18
+ import"./index-5pvxf7z0.js";
19
+ import"./index-vs8mefhy.js";
20
+ import {
21
+ ContextScript
22
+ } from "./index-5q14pwzd.js";
23
+
24
+ // pkgs/@akanjs/cli/context/context.command.ts
25
+ class ContextCommand extends command("context", [ContextScript], ({ public: target }) => ({
26
+ context: target({ desc: "Print agent-readable Akan workspace context" }).option("format", String, { desc: "output format", default: "markdown", enum: ["markdown", "json"] }).option("app", String, { desc: "app name to include", nullable: true }).option("module", String, { desc: "module name to include with abstract content", nullable: true }).with(Workspace).exec(async function(format, app, module, workspace) {
27
+ await this.contextScript.context(workspace, { format, app, module });
28
+ }),
29
+ doctor: target({ desc: "Report Akan workspace convention diagnostics" }).option("format", String, { desc: "output format", default: "text", enum: ["text", "json"] }).option("strict", Boolean, { desc: "treat recommended conventions as errors", default: false }).option("ios", Boolean, {
30
+ desc: "report iOS/native config diagnostics (placeholder bundle ids, etc.)",
31
+ default: false
32
+ }).with(Workspace).exec(async function(format, strict, ios, workspace) {
33
+ await this.contextScript.doctor(workspace, { format, strict, ios });
34
+ }),
35
+ mcpInstall: target({ desc: "Install the Akan MCP server config for Cursor, Claude Code, and Codex" }).arg("target", String, { desc: "cursor, claude, codex, or all", nullable: true }).option("force", Boolean, { desc: "overwrite an existing Akan MCP server entry", default: false }).option("mode", String, { desc: "MCP permission mode", default: "apply", enum: ["readonly", "plan", "apply"] }).with(Workspace).exec(async function(targetName, force, mode, workspace) {
36
+ await this.contextScript.mcpInstall(workspace, targetName, { force, mode });
37
+ }),
38
+ mcp: target({ desc: "Start the Akan MCP server over stdio", stdio: true }).option("mode", String, { desc: "MCP permission mode", default: "readonly", enum: ["readonly", "plan", "apply"] }).with(Workspace).exec(async function(mode, workspace) {
39
+ await this.contextScript.mcp(workspace, { mode });
40
+ }),
41
+ mcpCall: target({ desc: "Call one Akan MCP tool for debugging without stdio JSON-RPC" }).arg("tool", String, { desc: "MCP tool name" }).option("mode", String, { desc: "MCP permission mode", default: "readonly", enum: ["readonly", "plan", "apply"] }).option("args", String, { desc: "JSON object to pass as MCP tool arguments", nullable: true }).option("format", String, { desc: "output format", default: "json", enum: ["json"] }).with(Workspace).exec(async function(tool, mode, args, format, workspace) {
42
+ await this.contextScript.mcpCall(workspace, tool, { mode, args, format });
43
+ })
44
+ })) {
45
+ }
46
+ export {
47
+ ContextCommand
48
+ };
@@ -0,0 +1,21 @@
1
+ // @bun
2
+ import {
3
+ ContextRunner2
4
+ } from "./index-kn5d4jmg.js";
5
+ import"./index-vs8mefhy.js";
6
+ import"./index-5pvxf7z0.js";
7
+ import"./index-8b639zes.js";
8
+ import"./index-5g4rkrvt.js";
9
+ import"./index-rfcz04w9.js";
10
+ import"./index-25fvrxmy.js";
11
+ import"./index-7p4c0yer.js";
12
+ import"./index-8kvy8qb4.js";
13
+ import"./index-mb59b8x0.js";
14
+ import"./index-zzvvc845.js";
15
+ import"./index-a37by9hn.js";
16
+ import"./index-150s07n8.js";
17
+ import"./index-hj6w4ka1.js";
18
+ import"./index-52w0fvh8.js";
19
+ export {
20
+ ContextRunner2 as ContextRunner
21
+ };
@@ -1,8 +1,8 @@
1
1
  // @bun
2
2
  import {
3
3
  TypeScriptDependencyScanner2
4
- } from "./index-kcxmv48c.js";
5
- import"./index-q0y2jq9j.js";
4
+ } from "./index-2ahj896a.js";
5
+ import"./index-52w0fvh8.js";
6
6
  export {
7
7
  TypeScriptDependencyScanner2 as TypeScriptDependencyScanner
8
8
  };