@akanjs/cli 3.1.0-rc.1 → 3.1.0-rc.11

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 (98) hide show
  1. package/.build-stamp +1 -1
  2. package/{CodeAgent-kyprmy06.js → CodeAgent-rkjyxgec.js} +2 -2
  3. package/{CodeTui-21mtze3j.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-5s780vnz.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-yj6xb2a7.js → cloud.command-9cp1t0f5.js} +60 -67
  11. package/cloud.script-dgstqt1m.js +24 -0
  12. package/{code.command-3wkn4ja5.js → code.command-0ad6gw2a.js} +6 -6
  13. package/{context.command-9jjn3gcw.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 -1071
  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 +43 -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-rtct7d43.js → index-20bxxyvn.js} +80 -80
  37. package/{index-qt22xstj.js → index-35hc95h5.js} +5 -3
  38. package/{index-8r4d7cmt.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-krq7btbt.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-rc5rwyps.js → index-bspm21y1.js} +71 -60
  50. package/index-cpb3nvma.js +667 -0
  51. package/{index-jx4bzvwg.js → index-d47ypebv.js} +97 -55
  52. package/{index-ae5pwhgs.js → index-d72hfmdm.js} +15 -13
  53. package/{index-e0cvze1s.js → index-fmzcs8v6.js} +4 -4
  54. package/{index-8ggztp8k.js → index-fyq1z6kt.js} +68 -201
  55. package/{index-1w2qaee2.js → index-g1mbppa9.js} +331 -259
  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-56d2g8ms.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-vsreyy42.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-md2teygq.js → subspace.command-5c7yasd7.js} +424 -364
  83. package/templates/appSample/lib/task/Task.Util.tsx +7 -7
  84. package/templates/appSample/lib/task/Task.Zone.tsx +1 -1
  85. package/templates/appSample/ui/QuantityControl.tsx +2 -2
  86. package/templates/crudSinglePage/page.tsx +1 -1
  87. package/templates/lib/cnst.ts +0 -1
  88. package/templates/workspaceRoot/.gitignore.template +23 -52
  89. package/templates/workspaceRoot/biome.json.template +1 -1
  90. package/{tunnel.command-jx3tdm2d.js → tunnel.command-2kw8vt9g.js} +8 -4
  91. package/{workflow.command-jx0wag5r.js → workflow.command-2djwmpqf.js} +10 -10
  92. package/{workspace.command-yxd7rr7g.js → workspace.command-6qfgq4b4.js} +38 -34
  93. package/TunnelShare-q4jq08qg.js +0 -9
  94. package/cloud.script-h6pvcpa2.js +0 -20
  95. package/context.runner-atcrzz5b.js +0 -21
  96. package/index-6w0rbr9d.js +0 -68
  97. package/index-n68jx79w.js +0 -120
  98. package/index-pgj2rt78.js +0 -404
@@ -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,26 +1,29 @@
1
1
  // @bun
2
2
  import {
3
3
  GlobalConfig,
4
- CloudApi
5
- } from "./index-pgj2rt78.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";
12
11
  import {
13
- NativeApp
14
- } from "./index-1w2qaee2.js";
12
+ NativePublicEnv,
13
+ UpdatePackFolder
14
+ } from "./index-g1mbppa9.js";
15
+ import {
16
+ script
17
+ } from "./index-jw1zm273.js";
15
18
  import {
16
19
  ApplicationScript
17
- } from "./index-jx4bzvwg.js";
20
+ } from "./index-d47ypebv.js";
18
21
  import {
19
22
  PackageScript
20
- } from "./index-gnyf1fqy.js";
23
+ } from "./index-j237xtew.js";
21
24
  import {
22
25
  CloudRunner
23
- } from "./index-8ggztp8k.js";
26
+ } from "./index-fyq1z6kt.js";
24
27
 
25
28
  // pkgs/@akanjs/cli/cloud/cloud.script.ts
26
29
  import { Logger } from "akanjs/common";
@@ -31,12 +34,14 @@ class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, Pack
31
34
  async logout(workspace, host) {
32
35
  await this.cloudRunner.logout(await GlobalConfig.hostFor(workspace, host));
33
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
+ }
34
42
  async downloadEnv(workspace, workspaceId = workspace.getWorkspaceId({ allowEmpty: true }), { host: given } = {}) {
35
43
  if (workspaceId) {
36
- const host = await GlobalConfig.hostFor(workspace, given);
37
- await this.login(workspace, host);
38
- const cloudApi = await CloudApi.fromHost(workspace, host);
39
- await this.cloudRunner.downloadEnv(cloudApi, workspace, workspaceId);
44
+ await this.cloudRunner.downloadEnv(await this.#cloudApi(workspace, given), workspace, workspaceId);
40
45
  return;
41
46
  }
42
47
  await this.cloudRunner.downloadEnvByScp(workspace);
@@ -51,10 +56,7 @@ class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, Pack
51
56
  throw new Error("A scoped env upload needs a cloud workspace id \u2014 the scp target is workspace-wide.");
52
57
  const { files, path } = await this.cloudRunner.gatherEnvFiles(workspace, { scope, archivePath });
53
58
  if (workspaceId) {
54
- const host = await GlobalConfig.hostFor(workspace, given);
55
- await this.login(workspace, host);
56
- const cloudApi = await CloudApi.fromHost(workspace, host);
57
- await this.cloudRunner.uploadEnv(cloudApi, workspaceId, path);
59
+ await this.cloudRunner.uploadEnv(await this.#cloudApi(workspace, given), workspaceId, path);
58
60
  return { workspaceId, files };
59
61
  }
60
62
  await this.cloudRunner.uploadEnvByScp(workspace, path);
@@ -67,19 +69,16 @@ class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, Pack
67
69
  subspace,
68
70
  host: given
69
71
  }) {
70
- 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);
71
75
  const value = await this.cloudRunner.readSecretValue(name, file);
72
- const host = await GlobalConfig.hostFor(workspace, given);
73
- await this.login(workspace, host);
74
- const cloudApi = await CloudApi.fromHost(workspace, host);
75
- await this.cloudRunner.uploadSecret(cloudApi, devProjectId, { name, branch, value });
76
+ await this.cloudRunner.uploadSecret(await this.#cloudApi(workspace, given), devProjectId, { name, branch, value });
76
77
  }
77
78
  async listSecrets(workspace, { branch, subspace, host: given }) {
78
- const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
79
- const host = await GlobalConfig.hostFor(workspace, given);
80
- await this.login(workspace, host);
81
- const cloudApi = await CloudApi.fromHost(workspace, host);
82
- 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);
83
82
  }
84
83
  async removeSecret(workspace, {
85
84
  name,
@@ -87,11 +86,10 @@ class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, Pack
87
86
  subspace,
88
87
  host: given
89
88
  }) {
90
- const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
91
- const host = await GlobalConfig.hostFor(workspace, given);
92
- await this.login(workspace, host);
93
- const cloudApi = await CloudApi.fromHost(workspace, host);
94
- 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 });
95
93
  }
96
94
  async pushUpdate(workspace, app, {
97
95
  platform,
@@ -103,31 +101,42 @@ class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, Pack
103
101
  host: given,
104
102
  write,
105
103
  allowLocalRelease,
106
- pack: packDir
104
+ pack: packDir,
105
+ publicEnv
107
106
  }) {
108
- const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
109
- const pack = packDir ? await NativeApp.readPack(packDir) : await this.applicationScript.packUpdate(app, platform, {
110
- target,
111
- env,
112
- write,
113
- allowLocalRelease
114
- });
115
- if (pack.app !== app.name || pack.platform !== platform || target && pack.target !== target)
116
- throw new Error(`The pack in ${pack.out} is ${pack.app} ${pack.target} ${pack.platform}, not ${app.name} ${target ?? pack.target} ${platform}.`);
117
- if (pack.compat && !pack.compat.compatible) {
118
- Logger.error(`The pack in ${pack.out} needs a new store build; it differs from the one ${pack.compat.against} came from:
119
- - ${pack.compat.problems.join(`
120
- - `)}`);
121
- process.exitCode = 2;
122
- return null;
123
- }
124
- const host = await GlobalConfig.hostFor(workspace, given);
125
- await this.login(workspace, host);
126
- 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, {
127
115
  channel,
128
116
  notes
129
117
  });
130
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
+ }
131
140
  async registerBinary(workspace, app, {
132
141
  platform,
133
142
  distribution,
@@ -136,18 +145,20 @@ class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, Pack
136
145
  subspace,
137
146
  host: given,
138
147
  write,
139
- allowLocalRelease
148
+ allowLocalRelease,
149
+ publicEnv
140
150
  }) {
141
- 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);
142
154
  const pack = await this.applicationScript.packUpdate(app, platform, {
143
155
  target,
144
156
  env,
145
157
  write,
146
- allowLocalRelease
158
+ allowLocalRelease,
159
+ publicEnv: publicEnv ?? (recorded ? storeBundle : undefined)
147
160
  });
148
- const host = await GlobalConfig.hostFor(workspace, given);
149
- await this.login(workspace, host);
150
- 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, {
151
162
  distribution,
152
163
  env
153
164
  });