@akanjs/cli 3.1.0-rc.0 → 3.1.0-rc.10

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 (100) hide show
  1. package/.build-stamp +1 -1
  2. package/{CodeAgent-q7a4srt6.js → CodeAgent-rkjyxgec.js} +2 -2
  3. package/{CodeTui-ak23dxc9.js → CodeTui-h7pyj6xa.js} +1 -1
  4. package/TunnelShare-661cxz5e.js +14 -0
  5. package/{agent.command-f3gsc1gd.js → agent.command-3qxf4xcj.js} +5 -5
  6. package/akanCode.js +2 -2
  7. package/{application.command-3v2d53gd.js → application.command-m1kcd7jf.js} +54 -42
  8. package/{applicationBuildRunner-1yaqsrdq.js → applicationBuildRunner-dj0xkrep.js} +26 -33
  9. package/buildBatch.proc.js +24 -15
  10. package/{cloud.command-kk2rwkvw.js → cloud.command-9cp1t0f5.js} +63 -65
  11. package/cloud.script-dgstqt1m.js +24 -0
  12. package/{code.command-30sca09d.js → code.command-0ad6gw2a.js} +6 -6
  13. package/{context.command-k7eqacq6.js → context.command-0qx447mb.js} +17 -13
  14. package/context.runner-1vsjztjg.js +25 -0
  15. package/{dependencyScanner-06z2dmrr.js → dependencyScanner-3afj2vt1.js} +1 -1
  16. package/{guideline.command-dtczrqpf.js → guideline.command-cv5bmrx2.js} +2 -2
  17. package/guidelines/agentRule/agentRule.instruction.md +3 -3
  18. package/guidelines/conventions/conventions.instruction.md +457 -1069
  19. package/guidelines/cssRule/cssRule.instruction.md +28 -7
  20. package/guidelines/fieldRule/fieldRule.instruction.md +62 -0
  21. package/guidelines/framework/framework.instruction.md +4 -7
  22. package/guidelines/mcpRule/mcpRule.instruction.md +48 -20
  23. package/guidelines/modelConstant/modelConstant.instruction.md +2 -1
  24. package/guidelines/modelStore/modelStore.instruction.md +9 -0
  25. package/guidelines/pageRule/pageRule.instruction.md +80 -0
  26. package/guidelines/queryRule/queryRule.instruction.md +44 -11
  27. package/guidelines/runtimeRule/runtimeRule.instruction.md +113 -17
  28. package/guidelines/ssrRule/ssrRule.instruction.md +13 -0
  29. package/guidelines/transportRule/transportRule.instruction.md +135 -13
  30. package/guidelines/workspaceOnboarding/workspaceOnboarding.instruction.md +4 -4
  31. package/guidelines/workspaceRecipes/workspaceRecipes.instruction.md +68 -7
  32. package/incrementalBuilder.proc.js +10 -7
  33. package/index-192ha4xh.js +1173 -0
  34. package/{index-c76k723e.js → index-1p98exm2.js} +2 -2
  35. package/{index-rwq3ekqc.js → index-1xj2t7cb.js} +7 -7
  36. package/{index-nz15k0b6.js → index-20bxxyvn.js} +80 -80
  37. package/{index-qt22xstj.js → index-35hc95h5.js} +5 -3
  38. package/{index-jyv387qw.js → index-4mhy6qme.js} +4 -4
  39. package/{index-ww9bhp67.js → index-4pf8g7ff.js} +1 -1
  40. package/{index-2mx692qq.js → index-5edzv8fn.js} +5 -5
  41. package/{index-k9rrten6.js → index-5nd1wtkv.js} +92 -94
  42. package/index-62md4dwy.js +260 -0
  43. package/index-665zp9rs.js +271 -0
  44. package/{index-2etcv0sc.js → index-86jt2a0e.js} +1 -1
  45. package/{index-2t4tqd1c.js → index-8fp3b47h.js} +419 -418
  46. package/{index-c2yrsxdh.js → index-9z426msb.js} +109 -328
  47. package/{index-ctanya41.js → index-awbdfcf2.js} +4 -4
  48. package/{index-3hx1z96c.js → index-bqbf654f.js} +1 -1
  49. package/{index-tn4rpqp1.js → index-bspm21y1.js} +73 -49
  50. package/index-cpb3nvma.js +667 -0
  51. package/{index-p9ystjrp.js → index-d47ypebv.js} +97 -55
  52. package/{index-0bm04n5g.js → index-d72hfmdm.js} +15 -13
  53. package/{index-e0cvze1s.js → index-fmzcs8v6.js} +4 -4
  54. package/{index-y8q31011.js → index-fyq1z6kt.js} +68 -177
  55. package/{index-kjvrq3nc.js → index-g1mbppa9.js} +331 -250
  56. package/{index-gnyf1fqy.js → index-j237xtew.js} +6 -6
  57. package/{index-fm46xrf1.js → index-j4mkhz93.js} +3 -3
  58. package/{index-6jjtnhkw.js → index-jw1zm273.js} +74 -34
  59. package/{index-q958tqqg.js → index-m9jj544v.js} +1 -1
  60. package/index-mdjc93e1.js +33 -0
  61. package/{index-c1x0be5j.js → index-pydbnfez.js} +2 -2
  62. package/{index-7bymavqk.js → index-qwa5k1j8.js} +1 -1
  63. package/{index-v29746vb.js → index-tamvyvj3.js} +3 -3
  64. package/{index-05g3jayg.js → index-trpasv9q.js} +260 -259
  65. package/{index-2ahj896a.js → index-tvehn2sp.js} +1 -1
  66. package/{index-55mynnqs.js → index-va06nr10.js} +1434 -1173
  67. package/index-vk0pa0mn.js +240 -0
  68. package/{index-aprt7pkz.js → index-w44cy4vs.js} +2271 -3369
  69. package/index.js +22 -22
  70. package/{library.command-gaga5bmq.js → library.command-erp2f56n.js} +3 -3
  71. package/{localRegistry.command-9e84e32q.js → localRegistry.command-y176p558.js} +15 -11
  72. package/{module.command-7vpf6db4.js → module.command-gs2r615e.js} +5 -5
  73. package/{package.command-twmvvf69.js → package.command-j10r76ax.js} +4 -4
  74. package/package.json +21 -21
  75. package/{page.command-5asq7fdf.js → page.command-4h4a8pnh.js} +3 -3
  76. package/{pipeline.command-d0v38572.js → pipeline.command-a2nrk26m.js} +221 -220
  77. package/{primitive.command-dyrs2fm8.js → primitive.command-w6t0asqz.js} +6 -6
  78. package/{projectTypecheck-cvtkrzp2.js → projectTypecheck-f534enqj.js} +1 -1
  79. package/{quality.command-6emsqpbg.js → quality.command-77x7vbbx.js} +4 -4
  80. package/{repair.command-8t6aegv5.js → repair.command-y6sstev7.js} +5 -5
  81. package/{scalar.command-bnggy1x7.js → scalar.command-20b8cy0k.js} +4 -4
  82. package/{subspace.command-f02j5tge.js → subspace.command-5c7yasd7.js} +424 -364
  83. package/templates/app/env/env.client.type.ts +2 -3
  84. package/templates/app/page/styles.css.template +8 -0
  85. package/templates/appSample/lib/task/Task.Util.tsx +7 -7
  86. package/templates/appSample/lib/task/Task.Zone.tsx +1 -1
  87. package/templates/appSample/ui/QuantityControl.tsx +2 -2
  88. package/templates/crudSinglePage/page.tsx +1 -1
  89. package/templates/lib/cnst.ts +0 -1
  90. package/templates/workspaceRoot/.gitignore.template +23 -52
  91. package/templates/workspaceRoot/biome.json.template +1 -1
  92. package/{tunnel.command-9x8nfn75.js → tunnel.command-2kw8vt9g.js} +8 -4
  93. package/{workflow.command-jx0wag5r.js → workflow.command-2djwmpqf.js} +10 -10
  94. package/{workspace.command-cmj6mqyk.js → workspace.command-6qfgq4b4.js} +38 -34
  95. package/TunnelShare-21mm6dr5.js +0 -9
  96. package/cloud.script-r7eyfey4.js +0 -20
  97. package/context.runner-hqd1ppqe.js +0 -21
  98. package/index-6w0rbr9d.js +0 -68
  99. package/index-n68jx79w.js +0 -120
  100. package/index-r2tpeb3n.js +0 -392
@@ -1,12 +1,12 @@
1
1
  // @bun
2
2
  import {
3
3
  script
4
- } from "./index-6jjtnhkw.js";
4
+ } from "./index-jw1zm273.js";
5
5
  import {
6
6
  AppExecutor,
7
7
  LibExecutor,
8
8
  ModuleExecutor
9
- } from "./index-55mynnqs.js";
9
+ } from "./index-va06nr10.js";
10
10
  import {
11
11
  workflowStatus,
12
12
  compactDiagnostics,
@@ -41,10 +41,10 @@ import {
41
41
  hasSignalFactoryEntry,
42
42
  insertSignalFactoryEntry,
43
43
  addFieldUiPolicyForType
44
- } from "./index-05g3jayg.js";
44
+ } from "./index-trpasv9q.js";
45
45
  import {
46
46
  ModuleScript
47
- } from "./index-e0cvze1s.js";
47
+ } from "./index-fmzcs8v6.js";
48
48
 
49
49
  // pkgs/@akanjs/cli/primitive/primitive.script.ts
50
50
  import { capitalize, lowerlize } from "akanjs/common";
@@ -26,7 +26,7 @@ class ConfigLock {
26
26
  }
27
27
  static async#take(lockPath) {
28
28
  const handle = await open(lockPath, "wx", 384).catch((error) => {
29
- if (error.code === "EEXIST")
29
+ if (error.code === "EEXIST" || process.platform === "win32" && error.code === "EPERM")
30
30
  return null;
31
31
  throw error;
32
32
  });
@@ -1,23 +1,29 @@
1
1
  // @bun
2
2
  import {
3
3
  GlobalConfig,
4
- CloudApi
5
- } from "./index-r2tpeb3n.js";
6
- import {
7
- script
8
- } from "./index-6jjtnhkw.js";
4
+ CloudApi,
5
+ CloudUpdates,
6
+ PipelineSecrets
7
+ } from "./index-cpb3nvma.js";
9
8
  import {
10
9
  PkgExecutor
11
- } from "./index-55mynnqs.js";
10
+ } from "./index-va06nr10.js";
11
+ import {
12
+ NativePublicEnv,
13
+ UpdatePackFolder
14
+ } from "./index-g1mbppa9.js";
15
+ import {
16
+ script
17
+ } from "./index-jw1zm273.js";
12
18
  import {
13
19
  ApplicationScript
14
- } from "./index-p9ystjrp.js";
20
+ } from "./index-d47ypebv.js";
15
21
  import {
16
22
  PackageScript
17
- } from "./index-gnyf1fqy.js";
23
+ } from "./index-j237xtew.js";
18
24
  import {
19
25
  CloudRunner
20
- } from "./index-y8q31011.js";
26
+ } from "./index-fyq1z6kt.js";
21
27
 
22
28
  // pkgs/@akanjs/cli/cloud/cloud.script.ts
23
29
  import { Logger } from "akanjs/common";
@@ -28,12 +34,14 @@ class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, Pack
28
34
  async logout(workspace, host) {
29
35
  await this.cloudRunner.logout(await GlobalConfig.hostFor(workspace, host));
30
36
  }
37
+ async#cloudApi(workspace, given) {
38
+ const host = await GlobalConfig.hostFor(workspace, given);
39
+ await this.login(workspace, host);
40
+ return await CloudApi.fromHost(workspace, host);
41
+ }
31
42
  async downloadEnv(workspace, workspaceId = workspace.getWorkspaceId({ allowEmpty: true }), { host: given } = {}) {
32
43
  if (workspaceId) {
33
- const host = await GlobalConfig.hostFor(workspace, given);
34
- await this.login(workspace, host);
35
- const cloudApi = await CloudApi.fromHost(workspace, host);
36
- await this.cloudRunner.downloadEnv(cloudApi, workspace, workspaceId);
44
+ await this.cloudRunner.downloadEnv(await this.#cloudApi(workspace, given), workspace, workspaceId);
37
45
  return;
38
46
  }
39
47
  await this.cloudRunner.downloadEnvByScp(workspace);
@@ -48,10 +56,7 @@ class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, Pack
48
56
  throw new Error("A scoped env upload needs a cloud workspace id \u2014 the scp target is workspace-wide.");
49
57
  const { files, path } = await this.cloudRunner.gatherEnvFiles(workspace, { scope, archivePath });
50
58
  if (workspaceId) {
51
- const host = await GlobalConfig.hostFor(workspace, given);
52
- await this.login(workspace, host);
53
- const cloudApi = await CloudApi.fromHost(workspace, host);
54
- await this.cloudRunner.uploadEnv(cloudApi, workspaceId, path);
59
+ await this.cloudRunner.uploadEnv(await this.#cloudApi(workspace, given), workspaceId, path);
55
60
  return { workspaceId, files };
56
61
  }
57
62
  await this.cloudRunner.uploadEnvByScp(workspace, path);
@@ -64,19 +69,16 @@ class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, Pack
64
69
  subspace,
65
70
  host: given
66
71
  }) {
67
- const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
72
+ PipelineSecrets.assertName(name);
73
+ PipelineSecrets.assertBranch(branch);
74
+ const devProjectId = await this.cloudRunner.projectOf(workspace, subspace);
68
75
  const value = await this.cloudRunner.readSecretValue(name, file);
69
- const host = await GlobalConfig.hostFor(workspace, given);
70
- await this.login(workspace, host);
71
- const cloudApi = await CloudApi.fromHost(workspace, host);
72
- await this.cloudRunner.uploadSecret(cloudApi, devProjectId, { name, branch, value });
76
+ await this.cloudRunner.uploadSecret(await this.#cloudApi(workspace, given), devProjectId, { name, branch, value });
73
77
  }
74
78
  async listSecrets(workspace, { branch, subspace, host: given }) {
75
- const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
76
- const host = await GlobalConfig.hostFor(workspace, given);
77
- await this.login(workspace, host);
78
- const cloudApi = await CloudApi.fromHost(workspace, host);
79
- await this.cloudRunner.listSecrets(cloudApi, devProjectId, branch);
79
+ PipelineSecrets.assertBranch(branch);
80
+ const devProjectId = await this.cloudRunner.projectOf(workspace, subspace);
81
+ await this.cloudRunner.listSecrets(await this.#cloudApi(workspace, given), devProjectId, branch);
80
82
  }
81
83
  async removeSecret(workspace, {
82
84
  name,
@@ -84,11 +86,10 @@ class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, Pack
84
86
  subspace,
85
87
  host: given
86
88
  }) {
87
- const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
88
- const host = await GlobalConfig.hostFor(workspace, given);
89
- await this.login(workspace, host);
90
- const cloudApi = await CloudApi.fromHost(workspace, host);
91
- await this.cloudRunner.removeSecret(cloudApi, devProjectId, { name, branch });
89
+ PipelineSecrets.assertName(name);
90
+ PipelineSecrets.assertBranch(branch);
91
+ const devProjectId = await this.cloudRunner.projectOf(workspace, subspace);
92
+ await this.cloudRunner.removeSecret(await this.#cloudApi(workspace, given), devProjectId, { name, branch });
92
93
  }
93
94
  async pushUpdate(workspace, app, {
94
95
  platform,
@@ -99,22 +100,43 @@ class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, Pack
99
100
  subspace,
100
101
  host: given,
101
102
  write,
102
- allowLocalRelease
103
+ allowLocalRelease,
104
+ pack: packDir,
105
+ publicEnv
103
106
  }) {
104
- const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
105
- const pack = await this.applicationScript.packUpdate(app, platform, {
106
- target,
107
- env,
108
- write,
109
- allowLocalRelease
110
- });
111
- const host = await GlobalConfig.hostFor(workspace, given);
112
- await this.login(workspace, host);
113
- return await this.cloudRunner.pushUpdate(await CloudApi.fromHost(workspace, host), devProjectId, pack, {
107
+ if (packDir && publicEnv)
108
+ throw new Error("--public-env picks what a pack is built with, and --pack uploads one already built: give one.");
109
+ const devProjectId = await this.cloudRunner.projectOf(workspace, subspace, app.name);
110
+ const pack = await this.#packToPush(app, { platform, target, env, write, allowLocalRelease, packDir, publicEnv });
111
+ const verdict = UpdatePackFolder.storeBuildVerdict(pack);
112
+ if (verdict)
113
+ throw verdict;
114
+ return await this.cloudRunner.pushUpdate(await this.#cloudApi(workspace, given), devProjectId, pack, {
114
115
  channel,
115
116
  notes
116
117
  });
117
118
  }
119
+ async#packToPush(app, {
120
+ platform,
121
+ target,
122
+ env,
123
+ write,
124
+ allowLocalRelease,
125
+ packDir,
126
+ publicEnv
127
+ }) {
128
+ if (packDir)
129
+ return await this.cloudRunner.readPack(app, packDir, { platform, target, env, allowLocalRelease });
130
+ if (!platform)
131
+ throw new Error("push-update needs --platform ios or android to pack, or --pack <dir> to upload what `akan pack-update` wrote.");
132
+ return await this.applicationScript.packUpdate(app, platform, {
133
+ target: target ?? undefined,
134
+ env: env ?? "main",
135
+ write,
136
+ allowLocalRelease,
137
+ publicEnv: publicEnv ?? undefined
138
+ });
139
+ }
118
140
  async registerBinary(workspace, app, {
119
141
  platform,
120
142
  distribution,
@@ -123,18 +145,20 @@ class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, Pack
123
145
  subspace,
124
146
  host: given,
125
147
  write,
126
- allowLocalRelease
148
+ allowLocalRelease,
149
+ publicEnv
127
150
  }) {
128
- const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
151
+ const devProjectId = await this.cloudRunner.projectOf(workspace, subspace, app.name);
152
+ const storeBundle = await CloudUpdates.storeBundlePath(app, target, platform);
153
+ const recorded = !publicEnv && await NativePublicEnv.recordedIn(storeBundle);
129
154
  const pack = await this.applicationScript.packUpdate(app, platform, {
130
155
  target,
131
156
  env,
132
157
  write,
133
- allowLocalRelease
158
+ allowLocalRelease,
159
+ publicEnv: publicEnv ?? (recorded ? storeBundle : undefined)
134
160
  });
135
- const host = await GlobalConfig.hostFor(workspace, given);
136
- await this.login(workspace, host);
137
- return await this.cloudRunner.registerBinary(await CloudApi.fromHost(workspace, host), devProjectId, app, pack, {
161
+ return await this.cloudRunner.registerBinary(await this.#cloudApi(workspace, given), devProjectId, app, pack, {
138
162
  distribution,
139
163
  env
140
164
  });