@akanjs/cli 3.0.0-beta.17 → 3.0.0-beta.18

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 (133) hide show
  1. package/.build-stamp +1 -1
  2. package/{CodeAgent-gjqnc2mg.js → CodeAgent-0035exh3.js} +2 -2
  3. package/{CodeTui-nd9hqvrw.js → CodeTui-eweg1hep.js} +205 -34
  4. package/{agent.command-n664dtcv.js → agent.command-65zqfkg0.js} +6 -6
  5. package/akanCode.js +5 -3
  6. package/{application.command-t5542jte.js → application.command-2wcj5da3.js} +18 -11
  7. package/{applicationBuildRunner-x4gbfn7y.js → applicationBuildRunner-m0hhgwsx.js} +6 -5
  8. package/{applicationReleasePackager-z61ep017.js → applicationReleasePackager-vykfzgx3.js} +1 -1
  9. package/buildBatch.proc.js +2 -2
  10. package/{capacitorApp-shv3ajh5.js → capacitorApp-2daqhb5h.js} +2 -2
  11. package/{cloud.command-dk5tj39k.js → cloud.command-960bgbf4.js} +8 -8
  12. package/{cloud.script-ch3xrw3s.js → cloud.script-qhcnqt1n.js} +8 -8
  13. package/{code.command-88sebgnn.js → code.command-4feh3ef7.js} +6 -6
  14. package/{context.command-pqsm5jrk.js → context.command-kzehkx48.js} +14 -14
  15. package/context.runner-z0rrcz7b.js +22 -0
  16. package/{devTui-gy6mendg.js → devTui-ffjsarqa.js} +3 -3
  17. package/{devTuiView-y1548wy6.js → devTuiView-1q1mdgrv.js} +1 -1
  18. package/{guideline.command-rpc2emw8.js → guideline.command-3w2g20x4.js} +8 -13
  19. package/guidelines/conventions/conventions.instruction.md +37 -22
  20. package/guidelines/queryRule/queryRule.instruction.md +1 -1
  21. package/guidelines/ssrRule/ssrRule.instruction.md +4 -2
  22. package/guidelines/transportRule/transportRule.instruction.md +10 -8
  23. package/guidelines/workspaceRecipes/workspaceRecipes.instruction.md +4 -3
  24. package/incrementalBuilder.proc.js +1 -1
  25. package/{index-bzakk0c2.js → index-14zrtgfa.js} +5 -3
  26. package/{index-57p9p179.js → index-3hpxeys1.js} +6 -5
  27. package/{index-sn7dnzq4.js → index-4r42ext5.js} +1 -1
  28. package/{index-3mg4h788.js → index-6q589y9t.js} +2 -2
  29. package/index-9dp031by.js +12 -0
  30. package/{index-p4p9t45x.js → index-bwxpk2cj.js} +4 -18
  31. package/{index-g9zghs4h.js → index-cjw1sj1x.js} +12 -12
  32. package/{index-te0y1c0m.js → index-d9fjz06h.js} +12 -7
  33. package/{index-4n4821gp.js → index-dw943k93.js} +4 -4
  34. package/{index-4cvpzkq6.js → index-ef228gzf.js} +3 -3
  35. package/{index-3cymrzsb.js → index-erfc1x40.js} +17 -3
  36. package/{index-ns128c4q.js → index-h94faz96.js} +13 -20
  37. package/index-jd01kj5r.js +656 -0
  38. package/{index-2sq06vv0.js → index-jwexzh42.js} +200 -54
  39. package/{index-kvzjda3v.js → index-m41ptvat.js} +5 -5
  40. package/{index-qh7brn20.js → index-mt2154s2.js} +6 -2
  41. package/{index-xjc7gg65.js → index-pn8mhpps.js} +23 -33
  42. package/{index-vpx68e4x.js → index-q9c3c0hy.js} +2 -2
  43. package/{index-v17gj504.js → index-rpgxs245.js} +2 -2
  44. package/{index-twq9p2sp.js → index-s5rhm04y.js} +0 -6
  45. package/{index-p0tew3fq.js → index-sbfk9daf.js} +8 -3
  46. package/{index-n8kt2wh6.js → index-wcg582a8.js} +5 -5
  47. package/{index-6na0sd2b.js → index-ycy302an.js} +5 -2
  48. package/{index-qhtj9y6j.js → index-yw6g3bbv.js} +74 -21
  49. package/{index-2pm1j01n.js → index-zmj143x7.js} +4 -4
  50. package/{index-zn8qgeqx.js → index-zq0mr3hh.js} +1 -1
  51. package/index.js +21 -21
  52. package/{library.command-m8p2r1dh.js → library.command-fp0nhr62.js} +3 -3
  53. package/{localRegistry.command-yppdqrxv.js → localRegistry.command-8y0ecxb9.js} +7 -7
  54. package/{module.command-mfzvqt0n.js → module.command-kqkn48t2.js} +5 -5
  55. package/{package.command-cgp2p2v5.js → package.command-qverjh22.js} +4 -4
  56. package/package.json +2 -2
  57. package/{page.command-taenb02b.js → page.command-94bwhd0g.js} +3 -3
  58. package/{primitive.command-7kpncmkk.js → primitive.command-2ydvtah2.js} +6 -6
  59. package/{prompter-9mn3kp36.js → prompter-1f8d9pcc.js} +1 -1
  60. package/{quality.command-1ar94hrw.js → quality.command-fa0gth4p.js} +3 -4
  61. package/{repair.command-n08t6j8p.js → repair.command-4qng2hpm.js} +5 -5
  62. package/{routeSourceValidator-apyqw7wk.js → routeSourceValidator-7ycnfz0e.js} +0 -6
  63. package/{scalar.command-mq8qfp4t.js → scalar.command-pb2y95sh.js} +4 -4
  64. package/skills/akan-code/SKILL.md +122 -0
  65. package/skills/akan-module/SKILL.md +2 -2
  66. package/skills/akan-store/SKILL.md +6 -2
  67. package/{subspace.command-jqv5n79w.js → subspace.command-vkxmwp74.js} +4 -4
  68. package/templates/__scalar/__model__/__model__.abstract.md.template +8 -0
  69. package/templates/appSample/lib/__scalar/workHistory/workHistory.abstract.ts +8 -39
  70. package/templates/appSample/lib/_noti/noti.abstract.ts +6 -29
  71. package/templates/appSample/lib/task/task.abstract.ts +12 -32
  72. package/templates/appSample/lib/task/task.signal.spec.ts +15 -18
  73. package/templates/appSample/lib/task/task.signal.test.ts +14 -0
  74. package/templates/appSample/lib/task/task.signal.ts +1 -1
  75. package/templates/appSample/srvkit/AuthGuard.ts +4 -1
  76. package/templates/appSample/srvkit/SessionInternalArg.ts +3 -1
  77. package/templates/crudPages/[__model__Id]/edit/page.tsx +2 -1
  78. package/templates/crudPages/[__model__Id]/page.tsx +2 -1
  79. package/templates/crudPages/new/page.tsx +2 -1
  80. package/templates/crudPages/page.tsx +2 -1
  81. package/templates/crudSinglePage/page.tsx +2 -1
  82. package/templates/module/__model__.signal.ts +12 -4
  83. package/templates/pkgRoot/tsconfig.json.template +2 -7
  84. package/templates/service/__model__.abstract.md.template +8 -0
  85. package/{tunnel.command-ht2es78c.js → tunnel.command-02cvp9nf.js} +2 -2
  86. package/{workflow.command-tvz4nm9n.js → workflow.command-132txnrh.js} +9 -9
  87. package/{workspace.command-txv1yv5e.js → workspace.command-d5wkswek.js} +21 -21
  88. package/context.runner-bys6ykcp.js +0 -22
  89. package/guidelines/agentRule/agentRule.generate.json +0 -31
  90. package/guidelines/componentRule/componentRule.generate.json +0 -31
  91. package/guidelines/conventions/conventions.generate.json +0 -25
  92. package/guidelines/cssRule/cssRule.generate.json +0 -31
  93. package/guidelines/docPageRule/docPageRule.generate.json +0 -31
  94. package/guidelines/docPageRule/docPageRule.instruction.md +0 -25
  95. package/guidelines/docSyncRule/docSyncRule.generate.json +0 -31
  96. package/guidelines/docSyncRule/docSyncRule.instruction.md +0 -25
  97. package/guidelines/enumConstant/enumConstant.generate.json +0 -31
  98. package/guidelines/enumConstant/enumConstant.instruction.md +0 -28
  99. package/guidelines/fieldRule/fieldRule.generate.json +0 -31
  100. package/guidelines/framework/framework.generate.json +0 -32
  101. package/guidelines/mcpRule/mcpRule.generate.json +0 -35
  102. package/guidelines/modelConstant/modelConstant.generate.json +0 -32
  103. package/guidelines/modelDictionary/modelDictionary.generate.json +0 -32
  104. package/guidelines/modelDocument/modelDocument.generate.json +0 -31
  105. package/guidelines/modelService/modelService.generate.json +0 -31
  106. package/guidelines/modelSignal/modelSignal.generate.json +0 -31
  107. package/guidelines/modelStore/modelStore.generate.json +0 -31
  108. package/guidelines/modelTemplate/modelTemplate.generate.json +0 -31
  109. package/guidelines/modelUnit/modelUnit.generate.json +0 -31
  110. package/guidelines/modelUtil/modelUtil.generate.json +0 -31
  111. package/guidelines/modelView/modelView.generate.json +0 -31
  112. package/guidelines/modelZone/modelZone.generate.json +0 -31
  113. package/guidelines/moduleCodegen/moduleCodegen.generate.json +0 -31
  114. package/guidelines/moduleCodegen/moduleCodegen.instruction.md +0 -28
  115. package/guidelines/moduleOverview/moduleOverview.generate.json +0 -31
  116. package/guidelines/queryRule/queryRule.generate.json +0 -31
  117. package/guidelines/recipeRule/recipeRule.generate.json +0 -31
  118. package/guidelines/runtimeRule/runtimeRule.generate.json +0 -25
  119. package/guidelines/scalarConstant/scalarConstant.generate.json +0 -32
  120. package/guidelines/scalarDictionary/scalarDictionary.generate.json +0 -32
  121. package/guidelines/scalarModule/scalarModule.generate.json +0 -31
  122. package/guidelines/sharedUiUsage/sharedUiUsage.generate.json +0 -31
  123. package/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +0 -25
  124. package/guidelines/ssrRule/ssrRule.generate.json +0 -31
  125. package/guidelines/transportRule/transportRule.generate.json +0 -31
  126. package/guidelines/utilUiUsage/utilUiUsage.generate.json +0 -31
  127. package/guidelines/utilUiUsage/utilUiUsage.instruction.md +0 -25
  128. package/guidelines/workspaceOnboarding/workspaceOnboarding.generate.json +0 -24
  129. package/guidelines/workspaceRecipes/workspaceRecipes.generate.json +0 -34
  130. package/index-qt8dqgnf.js +0 -250
  131. package/templates/__scalar/__model__/__model__.abstract.md +0 -28
  132. package/templates/module/__model__.abstract.md +0 -28
  133. package/templates/service/__model__.abstract.md +0 -28
@@ -1141,13 +1141,6 @@ export async function generateHead(props: PageProps) {
1141
1141
  return inheritedLayout.head;
1142
1142
  }
1143
1143
 
1144
- export async function generateMetadata(props: PageProps) {
1145
- if (userLayout.generateMetadata) return userLayout.generateMetadata(props);
1146
- if (userLayout.metadata !== undefined) return userLayout.metadata;
1147
- if (inheritedLayout.generateMetadata) return inheritedLayout.generateMetadata(props);
1148
- return inheritedLayout.metadata;
1149
- }
1150
-
1151
1144
  export const NotFound = userLayout.NotFound ?? inheritedLayout.NotFound;
1152
1145
  export const Error = userLayout.Error ?? inheritedLayout.Error;
1153
1146
  export const pageConfig = userLayout.pageConfig ?? inheritedLayout.pageConfig;
@@ -1164,7 +1157,6 @@ ${layoutBinding} return (
1164
1157
  theme={userLayout.theme ?? inheritedLayout.theme}
1165
1158
  fonts={loadFonts(userFonts)}
1166
1159
  className={defaultFontClassName}
1167
- gaTrackingId={userLayout.gaTrackingId ?? inheritedLayout.gaTrackingId}
1168
1160
  layoutStyle={userLayout.layoutStyle ?? inheritedLayout.layoutStyle}
1169
1161
  reconnect={userLayout.reconnect ?? inheritedLayout.reconnect ?? false}
1170
1162
  wsConnect={userLayout.wsConnect ?? inheritedLayout.wsConnect ?? true}
@@ -1185,13 +1177,6 @@ export async function generateHead(props: PageProps) {
1185
1177
  return inheritedLayout.head;
1186
1178
  }
1187
1179
 
1188
- export async function generateMetadata(props: PageProps) {
1189
- if (userLayout.generateMetadata) return userLayout.generateMetadata(props);
1190
- if (userLayout.metadata !== undefined) return userLayout.metadata;
1191
- if (inheritedLayout.generateMetadata) return inheritedLayout.generateMetadata(props);
1192
- return inheritedLayout.metadata;
1193
- }
1194
-
1195
1180
  export const NotFound = userLayout.NotFound ?? inheritedLayout.NotFound;
1196
1181
  export const Error = userLayout.Error ?? inheritedLayout.Error;
1197
1182
  export const pageConfig = userLayout.pageConfig ?? inheritedLayout.pageConfig;
@@ -2139,11 +2124,12 @@ class PkgInfo {
2139
2124
  const [tsconfig, rootPackageJson] = await Promise.all([exec.getTsConfig(), exec.workspace.getPackageJson()]);
2140
2125
  const scanner = await createDependencyScanner(exec);
2141
2126
  const npmSet = new Set(Object.keys({ ...rootPackageJson.dependencies, ...rootPackageJson.devDependencies }));
2142
- const pkgPathSet = new Set(Object.keys(tsconfig.compilerOptions.paths ?? {}).filter((path) => tsconfig.compilerOptions.paths?.[path]?.some((resolve) => resolve.startsWith("pkgs/"))).map((path) => path.replace("/*", "")));
2127
+ const workspacePathOf = (resolve) => resolve.replace(/^\.\//, "");
2128
+ const pkgPathSet = new Set(Object.keys(tsconfig.compilerOptions.paths ?? {}).filter((path) => tsconfig.compilerOptions.paths?.[path]?.some((resolve) => workspacePathOf(resolve).startsWith("pkgs/"))).map((path) => path.replace("/*", "")));
2143
2129
  const [npmDepSet, pkgPathDepSet] = await scanner.getImportSets([npmSet, pkgPathSet]);
2144
2130
  const pkgDeps = [...pkgPathDepSet].map((path) => {
2145
2131
  const pathSplitLength = path.split("/").length;
2146
- return (tsconfig.compilerOptions.paths?.[path]?.[0] ?? "*").split("/").slice(1, 1 + pathSplitLength).join("/");
2132
+ return workspacePathOf(tsconfig.compilerOptions.paths?.[path]?.[0] ?? "*").split("/").slice(1, 1 + pathSplitLength).join("/");
2147
2133
  }).filter((pkg) => pkg !== exec.name);
2148
2134
  const pkgScanResult = {
2149
2135
  name: exec.name,
@@ -3255,7 +3241,7 @@ class SysExecutor extends Executor {
3255
3241
  class AppExecutor extends SysExecutor {
3256
3242
  static #routeSourceValidator = null;
3257
3243
  static async#getRouteSourceValidator() {
3258
- AppExecutor.#routeSourceValidator ??= (await import("./routeSourceValidator-apyqw7wk.js")).RouteSourceValidator;
3244
+ AppExecutor.#routeSourceValidator ??= (await import("./routeSourceValidator-7ycnfz0e.js")).RouteSourceValidator;
3259
3245
  return AppExecutor.#routeSourceValidator;
3260
3246
  }
3261
3247
  dist;
@@ -1,14 +1,14 @@
1
1
  // @bun
2
2
  import {
3
3
  AppExecutor
4
- } from "./index-p4p9t45x.js";
4
+ } from "./index-bwxpk2cj.js";
5
5
  import {
6
6
  jsonText,
7
7
  createWorkflowBaselineSummary,
8
8
  buildAkanModuleContextIndex,
9
9
  createWorkflowStepRegistry,
10
10
  toolingRolloutGate
11
- } from "./index-qhtj9y6j.js";
11
+ } from "./index-yw6g3bbv.js";
12
12
  import {
13
13
  buildResourceList,
14
14
  codexMcpConfigPath,
@@ -18,32 +18,32 @@ import {
18
18
  upsertCodexMcpServerBlock,
19
19
  renderDoctorText,
20
20
  AkanContextAnalyzer
21
- } from "./index-v17gj504.js";
21
+ } from "./index-rpgxs245.js";
22
22
  import {
23
23
  isPlaceholderAppId2
24
- } from "./index-3cymrzsb.js";
24
+ } from "./index-erfc1x40.js";
25
25
  import {
26
26
  CommandContainer,
27
27
  runner
28
- } from "./index-6na0sd2b.js";
28
+ } from "./index-ycy302an.js";
29
29
  import {
30
30
  Prompter2
31
- } from "./index-twq9p2sp.js";
31
+ } from "./index-s5rhm04y.js";
32
32
  import {
33
33
  RepairRunner
34
- } from "./index-4cvpzkq6.js";
34
+ } from "./index-ef228gzf.js";
35
35
  import {
36
36
  WorkflowRunner
37
- } from "./index-2pm1j01n.js";
37
+ } from "./index-zmj143x7.js";
38
38
  import {
39
39
  ModuleScript
40
- } from "./index-xjc7gg65.js";
40
+ } from "./index-pn8mhpps.js";
41
41
  import {
42
42
  PrimitiveScript
43
- } from "./index-te0y1c0m.js";
43
+ } from "./index-d9fjz06h.js";
44
44
  import {
45
45
  ScalarScript
46
- } from "./index-vpx68e4x.js";
46
+ } from "./index-q9c3c0hy.js";
47
47
  import {
48
48
  getMobileTargets
49
49
  } from "./index-47pj3aee.js";
@@ -1021,7 +1021,7 @@ ${payload}`);
1021
1021
  test: "`akan test <app-or-lib-or-pkg>` prepares the target and runs its tests.",
1022
1022
  build: "`akan build <app-name>` creates a production build after preparing generated files.",
1023
1023
  doctor: "`akan doctor --strict --format json` reports agent-readable workspace convention diagnostics and validation hints.",
1024
- "guideline show": "`akan guideline show <name>` prints an Akan codegen guideline instruction.",
1024
+ "guideline show": "`akan guideline show <name>` prints an Akan guideline instruction.",
1025
1025
  workflow: "`akan workflow list|explain|plan|apply|validate|report` lists, plans, applies, validates, and reports agent-readable Akan workflows.",
1026
1026
  "workflow list": "`akan workflow list` lists parseable read-only workflow specs.",
1027
1027
  "workflow explain": "`akan workflow explain <workflow>` explains inputs, optional surfaces, steps, and validation.",
@@ -1,12 +1,12 @@
1
1
  // @bun
2
2
  import {
3
3
  script
4
- } from "./index-6na0sd2b.js";
4
+ } from "./index-ycy302an.js";
5
5
  import {
6
6
  AppExecutor,
7
7
  LibExecutor,
8
8
  ModuleExecutor
9
- } from "./index-p4p9t45x.js";
9
+ } from "./index-bwxpk2cj.js";
10
10
  import {
11
11
  compactDiagnostics,
12
12
  createPrimitiveWriteReport,
@@ -18,6 +18,8 @@ import {
18
18
  nextActionsForTarget,
19
19
  lowerlize,
20
20
  normalizeFieldType,
21
+ ensureNamedImport,
22
+ ensureBaseImport,
21
23
  ensureBaseTypeImport,
22
24
  coerceFieldDefault,
23
25
  fieldExpression,
@@ -39,10 +41,10 @@ import {
39
41
  hasSignalFactoryEntry,
40
42
  insertSignalFactoryEntry,
41
43
  addFieldUiPolicyForType
42
- } from "./index-qhtj9y6j.js";
44
+ } from "./index-yw6g3bbv.js";
43
45
  import {
44
46
  ModuleScript
45
- } from "./index-xjc7gg65.js";
47
+ } from "./index-pn8mhpps.js";
46
48
 
47
49
  // pkgs/@akanjs/cli/primitive/primitive.script.ts
48
50
  import { capitalize } from "akanjs/common";
@@ -210,6 +212,8 @@ class PrimitiveScript extends script("primitive", [ModuleScript]) {
210
212
  if (defaultCoercion.diagnostic)
211
213
  diagnostics.push(defaultCoercion.diagnostic);
212
214
  constantContent = ensureBaseTypeImport(constantContent, input.type);
215
+ if (input.type === "Date" && defaultCoercion.expression)
216
+ constantContent = ensureBaseImport(constantContent, "dayjs");
213
217
  }
214
218
  if (enumValues) {
215
219
  const defaultCoercion = coerceFieldDefault("enum", input.defaultValue, { enumValues });
@@ -353,7 +357,7 @@ class PrimitiveScript extends script("primitive", [ModuleScript]) {
353
357
  signal: name ? {
354
358
  className: `${moduleClassName}Endpoint`,
355
359
  entryLine: [
356
- `${name}: mutation(Boolean)`,
360
+ `${name}: mutation(Boolean, { guards: [None] })`,
357
361
  ` .exec(async function () {`,
358
362
  ` return await this.${serviceRef}Service.${name}();`,
359
363
  ` }),`
@@ -388,7 +392,7 @@ class PrimitiveScript extends script("primitive", [ModuleScript]) {
388
392
  signal: name && queryName ? {
389
393
  className: `${moduleClassName}Slice`,
390
394
  entryLine: [
391
- `${name}: init()`,
395
+ `${name}: init({ guards: [None] })`,
392
396
  ` .exec(function () {`,
393
397
  ` return this.${serviceRef}Service.${queryName}();`,
394
398
  ` }),`
@@ -476,7 +480,8 @@ class PrimitiveScript extends script("primitive", [ModuleScript]) {
476
480
  });
477
481
  }
478
482
  const nextServiceContent = serviceMethodExists ? serviceContent : insertClassMethod(serviceContent, serviceClassName, spec.serviceMethod.block);
479
- const nextSignalContent = insertSignalFactoryEntry(signalContent, spec.signal.className, spec.entryName, spec.signal.entryLine, spec.signal.param);
483
+ const insertedSignalContent = insertSignalFactoryEntry(signalContent, spec.signal.className, spec.entryName, spec.signal.entryLine, spec.signal.param);
484
+ const nextSignalContent = insertedSignalContent ? ensureNamedImport(insertedSignalContent, "akanjs/signal", "None") : insertedSignalContent;
480
485
  if (!nextServiceContent) {
481
486
  diagnostics.push({
482
487
  severity: "error",
@@ -1,16 +1,16 @@
1
1
  // @bun
2
2
  import {
3
3
  jsonText
4
- } from "./index-qhtj9y6j.js";
4
+ } from "./index-yw6g3bbv.js";
5
5
  import {
6
6
  akanMcpInstallTargets
7
- } from "./index-v17gj504.js";
7
+ } from "./index-rpgxs245.js";
8
8
  import {
9
9
  script
10
- } from "./index-6na0sd2b.js";
10
+ } from "./index-ycy302an.js";
11
11
  import {
12
12
  ContextRunner2
13
- } from "./index-g9zghs4h.js";
13
+ } from "./index-cjw1sj1x.js";
14
14
 
15
15
  // pkgs/@akanjs/cli/context/context.script.ts
16
16
  import { Logger } from "akanjs/common";
@@ -5,13 +5,13 @@ import {
5
5
  writeGeneratedSyncState,
6
6
  createRepairReport,
7
7
  renderRepairReport
8
- } from "./index-qhtj9y6j.js";
8
+ } from "./index-yw6g3bbv.js";
9
9
  import {
10
10
  AkanContextAnalyzer
11
- } from "./index-v17gj504.js";
11
+ } from "./index-rpgxs245.js";
12
12
  import {
13
13
  runner
14
- } from "./index-6na0sd2b.js";
14
+ } from "./index-ycy302an.js";
15
15
 
16
16
  // pkgs/@akanjs/cli/repair/repair.runner.ts
17
17
  var commandForShell = (command) => command.startsWith("akan ") ? `bun run ${command}` : command;
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  CommandExecutionError
4
- } from "./index-p4p9t45x.js";
4
+ } from "./index-bwxpk2cj.js";
5
5
  import {
6
6
  resolveMobilePath,
7
7
  targetHtmlFilename
@@ -450,7 +450,7 @@ function classifyIosRunFailure(log) {
450
450
  return {
451
451
  kind: "unknown",
452
452
  title: "iOS native run failed.",
453
- detail: "Review the xcodebuild/devicectl output above. You can retry with --noAllowProvisioningUpdates to use the conservative path."
453
+ detail: "Review the xcodebuild/devicectl output above. You can retry with --no-allow-provisioning-updates to use the conservative path."
454
454
  };
455
455
  }
456
456
  function formatIosRunFailureMessage(input) {
@@ -528,6 +528,20 @@ function raiseGradleMinSdkVersion(content, floor = ANDROID_MIN_SDK_VERSION) {
528
528
  return null;
529
529
  return content.replace(/(minSdkVersion\s*=\s*)\d+/, `$1${floor}`);
530
530
  }
531
+ var iosUsageDescriptionKeys = {
532
+ cameraUsageDescription: ["NSCameraUsageDescription"],
533
+ photoAddUsageDescription: ["NSPhotoLibraryAddUsageDescription"],
534
+ photoUsageDescription: ["NSPhotoLibraryUsageDescription"],
535
+ contactsUsageDescription: ["NSContactsUsageDescription"],
536
+ locationAlwaysUsageDescription: ["NSLocationAlwaysAndWhenInUseUsageDescription", "NSLocationAlwaysUsageDescription"],
537
+ locationWhenInUseUsageDescription: ["NSLocationWhenInUseUsageDescription"],
538
+ microphoneUsageDescription: ["NSMicrophoneUsageDescription"],
539
+ speechRecognitionUsageDescription: ["NSSpeechRecognitionUsageDescription"]
540
+ };
541
+ var toIosInfoPlistUsageDescriptions = (descriptions) => Object.fromEntries(Object.entries(descriptions).flatMap(([key, value]) => {
542
+ const plistKeys = Object.hasOwn(iosUsageDescriptionKeys, key) ? iosUsageDescriptionKeys[key] : [`NS${capitalize(key)}`];
543
+ return plistKeys.map((plistKey) => [plistKey, value]);
544
+ }));
531
545
  var mergeAllowNavigation = (configured, localIp) => {
532
546
  const values = Array.isArray(configured) ? configured.filter((value) => typeof value === "string") : [];
533
547
  if (localIp)
@@ -1329,7 +1343,7 @@ ${error.message}`;
1329
1343
  await editor.setContent(next).save();
1330
1344
  }
1331
1345
  async#setPermissionInIos(permissions) {
1332
- const updateNs = Object.fromEntries(Object.entries(permissions).map(([key, value]) => [`NS${capitalize(key)}`, value]));
1346
+ const updateNs = toIosInfoPlistUsageDescriptions(permissions);
1333
1347
  await Promise.all([
1334
1348
  this.project.ios.updateInfoPlist(this.iosTargetName, "Debug", updateNs),
1335
1349
  this.project.ios.updateInfoPlist(this.iosTargetName, "Release", updateNs)
@@ -2,16 +2,16 @@
2
2
  import {
3
3
  runner,
4
4
  script
5
- } from "./index-6na0sd2b.js";
5
+ } from "./index-ycy302an.js";
6
6
  import {
7
7
  WorkspaceExecutor,
8
8
  AppExecutor,
9
9
  LibExecutor,
10
10
  PkgExecutor
11
- } from "./index-p4p9t45x.js";
11
+ } from "./index-bwxpk2cj.js";
12
12
  import {
13
13
  LibraryScript
14
- } from "./index-3mg4h788.js";
14
+ } from "./index-6q589y9t.js";
15
15
  import {
16
16
  HmrWatcher,
17
17
  WatchRootResolver
@@ -22,20 +22,13 @@ import {
22
22
  import {
23
23
  SlicePlanner,
24
24
  formatSlicePlan
25
- } from "./index-sn7dnzq4.js";
25
+ } from "./index-4r42ext5.js";
26
26
  import {
27
27
  resolveMobileTargets
28
28
  } from "./index-47pj3aee.js";
29
-
30
- // pkgs/@akanjs/cli/openBrowser.ts
31
- import { spawn } from "child_process";
32
- function openBrowser(url) {
33
- const command = process.platform === "darwin" ? ["open", url] : process.platform === "win32" ? ["cmd", "/c", "start", "", url] : ["xdg-open", url];
34
- const child = spawn(command[0], command.slice(1), { detached: true, stdio: "ignore" });
35
- child.on("error", () => {});
36
- child.unref();
37
- return Promise.resolve();
38
- }
29
+ import {
30
+ openBrowser
31
+ } from "./index-9dp031by.js";
39
32
 
40
33
  // pkgs/@akanjs/devkit/applicationBuildReporter.ts
41
34
  import { Logger } from "akanjs/common";
@@ -1966,9 +1959,9 @@ ${uniqueCandidates.map((candidate) => ` - ${candidate}`).join(`
1966
1959
 
1967
1960
  // pkgs/@akanjs/cli/application/application.runner.ts
1968
1961
  import { Logger as Logger4 } from "akanjs/common";
1969
- var loadBuildRunner = async () => (await import("./applicationBuildRunner-x4gbfn7y.js")).ApplicationBuildRunner;
1970
- var loadReleasePackager = async () => (await import("./applicationReleasePackager-z61ep017.js")).ApplicationReleasePackager;
1971
- var loadCapacitorApp = async () => (await import("./capacitorApp-shv3ajh5.js")).CapacitorApp;
1962
+ var loadBuildRunner = async () => (await import("./applicationBuildRunner-m0hhgwsx.js")).ApplicationBuildRunner;
1963
+ var loadReleasePackager = async () => (await import("./applicationReleasePackager-vykfzgx3.js")).ApplicationReleasePackager;
1964
+ var loadCapacitorApp = async () => (await import("./capacitorApp-2daqhb5h.js")).CapacitorApp;
1972
1965
  var loadPrompts = async () => await import("@inquirer/prompts");
1973
1966
 
1974
1967
  class ApplicationRunner extends runner("application") {
@@ -2083,7 +2076,7 @@ const serverModule = await import(${JSON.stringify(serverPath)});
2083
2076
  const { assertAkanConsoleAllowed, startAkanConsole } = await import("akanjs/server");
2084
2077
  const server = serverModule.server;
2085
2078
  if (!server?.start) throw new Error("server.ts must export server with start()");
2086
- assertAkanConsoleAllowed(server.env);
2079
+ assertAkanConsoleAllowed();
2087
2080
  await server.start({ listen: false, web: false });
2088
2081
  try {
2089
2082
  await startAkanConsole(server, {
@@ -3226,7 +3219,7 @@ class ApplicationScript extends script("application", [ApplicationRunner, Librar
3226
3219
  throw new Error("No app selected to start");
3227
3220
  const startedDatabase = dbup ? await this.#prepareSharedDatabase(apps) : false;
3228
3221
  const supervisor = new DevSupervisor({ apps, mode, concurrency, open, write, shares });
3229
- const view = mode === "tui" ? await (await import("./devTuiView-y1548wy6.js")).createDevTuiView(supervisor) : new DevStreamView(apps.map((app) => app.name));
3222
+ const view = mode === "tui" ? await (await import("./devTuiView-1q1mdgrv.js")).createDevTuiView(supervisor) : new DevStreamView(apps.map((app) => app.name));
3230
3223
  await supervisor.run(view);
3231
3224
  if (startedDatabase)
3232
3225
  await this.#stopDatabase(workspace);
@@ -3385,4 +3378,4 @@ class ApplicationScript extends script("application", [ApplicationRunner, Librar
3385
3378
  }
3386
3379
  }
3387
3380
 
3388
- export { openBrowser, ApplicationScript };
3381
+ export { ApplicationScript };