@akanjs/cli 3.0.0-beta.31 → 3.0.0-beta.33

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 (88) hide show
  1. package/.build-stamp +1 -1
  2. package/{CodeAgent-tbdpdjat.js → CodeAgent-2vmp9qe0.js} +2 -2
  3. package/{CodeTui-my2x5fah.js → CodeTui-5ed6bg2a.js} +1 -1
  4. package/{agent.command-vz60x05c.js → agent.command-gn73rhe7.js} +5 -5
  5. package/akanCode.js +2 -2
  6. package/{application.command-pxqfjrqm.js → application.command-e968t0hw.js} +14 -9
  7. package/{applicationBuildRunner-shnfyfdy.js → applicationBuildRunner-64taxseg.js} +3 -3
  8. package/buildBatch.proc.js +3 -3
  9. package/{cloud.command-9v9tpgps.js → cloud.command-0jm301rr.js} +9 -9
  10. package/cloud.script-nemnzjpv.js +20 -0
  11. package/{code.command-13h14j25.js → code.command-18kcm7hq.js} +6 -6
  12. package/{context.command-x1hbasm5.js → context.command-trd9bn18.js} +13 -13
  13. package/context.runner-y5hwh673.js +21 -0
  14. package/{guideline.command-vfk11hpj.js → guideline.command-bdmdn2de.js} +2 -2
  15. package/guidelines/conventions/conventions.instruction.md +5 -3
  16. package/guidelines/runtimeRule/runtimeRule.instruction.md +26 -6
  17. package/incrementalBuilder.proc.js +2 -2
  18. package/{index-ptshj7y1.js → index-0wpybxtr.js} +3 -3
  19. package/{index-e52z7psd.js → index-3w94e7n3.js} +18 -2
  20. package/{index-nhhrjvk1.js → index-4npz05nm.js} +4 -4
  21. package/{index-9s5zga3q.js → index-6he6gvfg.js} +1 -1
  22. package/{index-q9q7x4zj.js → index-93j60em0.js} +3 -3
  23. package/{index-vcdxpmsx.js → index-9z771ptz.js} +2 -2
  24. package/{index-rqxa9r98.js → index-abxpehf8.js} +7 -7
  25. package/{index-arnkqb6f.js → index-by9pxkr0.js} +2 -2
  26. package/{index-947t6zm4.js → index-drehwpdt.js} +2 -2
  27. package/{index-f50dy7yq.js → index-f3c78nd6.js} +7 -7
  28. package/{index-f8q701fb.js → index-gbggbqcp.js} +77 -22
  29. package/{index-7yf7rnjg.js → index-hsmtysz4.js} +2 -2
  30. package/{index-ksq4t16z.js → index-jmrn54tt.js} +1 -1
  31. package/{index-ew8dna9s.js → index-kcdj1z5v.js} +2 -2
  32. package/{index-cxafpw23.js → index-kqabytj7.js} +4 -4
  33. package/{index-qk9vv9hm.js → index-mbxbhay5.js} +1 -1
  34. package/{index-zvr7wfyg.js → index-mgxpx3f2.js} +2 -2
  35. package/{index-zc90rh75.js → index-p993efkq.js} +33 -18
  36. package/{index-8psse8dw.js → index-pmhqttv3.js} +5 -5
  37. package/{index-d5yn19ef.js → index-tqm7jjcn.js} +1 -1
  38. package/{index-1skctzbq.js → index-vpj42xwt.js} +1 -1
  39. package/{index-smbecayj.js → index-wprnsjms.js} +3 -3
  40. package/{index-84r80zdx.js → index-y3mphr1m.js} +1 -1
  41. package/{index-ymnqrsxm.js → index-yg7jhz8x.js} +4 -4
  42. package/index.js +21 -21
  43. package/{library.command-m52jqc0s.js → library.command-9h749a1x.js} +3 -3
  44. package/{localRegistry.command-x5vs1z43.js → localRegistry.command-2bqqhxyz.js} +8 -8
  45. package/{module.command-ty3k6rwd.js → module.command-nv8nzgft.js} +5 -5
  46. package/{package.command-hphdh4g4.js → package.command-mq4bggp6.js} +3 -3
  47. package/package.json +2 -2
  48. package/{page.command-5aq8mzvq.js → page.command-j639n707.js} +3 -3
  49. package/{primitive.command-adwj84kx.js → primitive.command-kz6849th.js} +6 -6
  50. package/{quality.command-y10kea2f.js → quality.command-4hyabwkb.js} +2 -2
  51. package/{repair.command-v7mwqvjh.js → repair.command-a9awpbqr.js} +5 -5
  52. package/{scalar.command-pg3gneer.js → scalar.command-ma4fpm9m.js} +4 -4
  53. package/{subspace.command-ejdmvbq7.js → subspace.command-3k2pmrs4.js} +4 -4
  54. package/templates/app/page/_index.tsx +257 -258
  55. package/templates/app/page/_layout.tsx +5 -1
  56. package/templates/app/page/_overrides.tsx +12 -0
  57. package/templates/app/page/styles.css.template +316 -14
  58. package/templates/app/public/apple-touch-icon.png +0 -0
  59. package/templates/app/public/favicon.ico +0 -0
  60. package/templates/app/public/jelly/cloud.webp +0 -0
  61. package/templates/app/public/jelly/comet.webp +0 -0
  62. package/templates/app/public/jelly/moon.webp +0 -0
  63. package/templates/app/public/jelly/planet.webp +0 -0
  64. package/templates/app/public/jelly/rocket.webp +0 -0
  65. package/templates/app/public/jelly/star.webp +0 -0
  66. package/templates/app/public/jelly/sugar.webp +0 -0
  67. package/templates/app/public/logo.png +0 -0
  68. package/templates/app/ui/Recipe/index.ts +9 -0
  69. package/templates/app/ui/Recipe/jellyButton.ts +63 -0
  70. package/templates/appSample/lib/task/Task.Unit.tsx +1 -1
  71. package/templates/appSample/lib/task/Task.Util.tsx +10 -13
  72. package/templates/appSample/lib/task/Task.View.tsx +2 -2
  73. package/templates/appSample/lib/task/Task.Zone.tsx +5 -2
  74. package/templates/appSample/lib/task/task.signal.spec.ts +4 -15
  75. package/templates/appSample/lib/task/task.signal.ts +9 -7
  76. package/templates/appSample/page/task/[taskId]/_index.tsx +6 -6
  77. package/templates/appSample/page/task/[taskId]/edit.tsx +5 -4
  78. package/templates/appSample/page/task/_index.tsx +4 -3
  79. package/templates/appSample/page/task/_layout.tsx +1 -1
  80. package/templates/appSample/page/task/new.tsx +5 -4
  81. package/templates/appSample/ui/GlobalLoading.tsx +2 -1
  82. package/templates/appSample/ui/QuantityControl.tsx +3 -3
  83. package/templates/workspaceRoot/AGENTS.md.template +6 -0
  84. package/{tunnel.command-rz9qf230.js → tunnel.command-xwr46b66.js} +2 -2
  85. package/{workflow.command-6r809r2z.js → workflow.command-t7wqe4h7.js} +10 -10
  86. package/{workspace.command-8g3cw7jd.js → workspace.command-4derhzrh.js} +24 -21
  87. package/cloud.script-baqdthnz.js +0 -20
  88. package/context.runner-kqbjjea1.js +0 -21
@@ -4,9 +4,10 @@ export default function getContent(scanInfo: AppInfo | LibInfo | null, dict: { a
4
4
  return {
5
5
  filename: "edit.tsx",
6
6
  content: `import { fetch, Task } from "@apps/${dict.appName}/client";
7
+ import { jellyButtonRecipe } from "@apps/${dict.appName}/ui";
7
8
  import { ID } from "akanjs/base";
8
9
  import { page } from "akanjs/client";
9
- import { Load, Link, buttonRecipe } from "akanjs/ui";
10
+ import { Link, Load } from "akanjs/ui";
10
11
 
11
12
  export default page()
12
13
  .param("taskId", ID)
@@ -16,15 +17,15 @@ export default page()
16
17
  return (
17
18
  <main className="mx-auto max-w-2xl px-6 py-8">
18
19
  <div className="mb-6">
19
- <Link href={\`/task/\${taskId}\`} className={buttonRecipe({ variant: "ghost", size: "sm" })}>
20
+ <Link href={\`/task/\${taskId}\`} className={jellyButtonRecipe({ variant: "ghost", size: "sm" })}>
20
21
  ← Back to Task
21
22
  </Link>
22
23
  </div>
23
24
  <div className="mb-6">
24
- <h1 className="font-extrabold text-3xl text-foreground">Edit Task</h1>
25
+ <h1 className="font-black text-4xl text-foreground">Edit Task</h1>
25
26
  <p className="mt-1 text-foreground/60 text-sm">Update the task details</p>
26
27
  </div>
27
- <div className="rounded-xl border border-foreground/10 bg-background p-6 shadow-sm">
28
+ <div className="jelly-glass rounded-box p-6">
28
29
  <Load.Edit slice={fetch.slice.taskInPublic} edit={taskEdit} type="form" onSubmit={\`/task/\${taskId}\`}>
29
30
  <Task.Template.General />
30
31
  </Load.Edit>
@@ -4,8 +4,9 @@ export default function getContent(scanInfo: AppInfo | LibInfo | null, dict: { a
4
4
  return {
5
5
  filename: "_index.tsx",
6
6
  content: `import { fetch, Task, usePage } from "@apps/${dict.appName}/client";
7
+ import { jellyButtonRecipe } from "@apps/${dict.appName}/ui";
7
8
  import { page } from "akanjs/client";
8
- import { Link, buttonRecipe } from "akanjs/ui";
9
+ import { Link } from "akanjs/ui";
9
10
 
10
11
  export default page().render(async () => {
11
12
  const { l } = usePage();
@@ -14,10 +15,10 @@ export default page().render(async () => {
14
15
  <main className="mx-auto max-w-4xl px-6 py-8">
15
16
  <div className="mb-6 flex items-center justify-between">
16
17
  <div>
17
- <h1 className="font-extrabold text-3xl text-foreground">{l("task.modelName")}</h1>
18
+ <h1 className="font-black text-4xl text-foreground">{l("task.modelName")}</h1>
18
19
  <p className="mt-1 text-foreground/60 text-sm">{l("task.modelDesc")}</p>
19
20
  </div>
20
- <Link href="/task/new" className={buttonRecipe({ variant: "primary", size: "sm" })}>
21
+ <Link href="/task/new" className={jellyButtonRecipe({ variant: "primary", size: "sm" })}>
21
22
  {l("task.taskNew")}
22
23
  </Link>
23
24
  </div>
@@ -6,7 +6,7 @@ export default function getContent(scanInfo: AppInfo | LibInfo | null, dict: { a
6
6
  content: `import { layout } from "akanjs/client";
7
7
 
8
8
  export default layout().render(({ children }) => {
9
- return <div className="min-h-screen bg-muted">{children}</div>;
9
+ return <div className="min-h-screen">{children}</div>;
10
10
  });
11
11
  `,
12
12
  };
@@ -4,8 +4,9 @@ export default function getContent(scanInfo: AppInfo | LibInfo | null, dict: { a
4
4
  return {
5
5
  filename: "new.tsx",
6
6
  content: `import { type cnst, fetch, Task } from "@apps/${dict.appName}/client";
7
+ import { jellyButtonRecipe } from "@apps/${dict.appName}/ui";
7
8
  import { page } from "akanjs/client";
8
- import { Load, Link, buttonRecipe } from "akanjs/ui";
9
+ import { Link, Load } from "akanjs/ui";
9
10
 
10
11
  export default page().render(() => {
11
12
  const taskForm: Partial<cnst.Task> = { status: "todo" };
@@ -13,15 +14,15 @@ export default page().render(() => {
13
14
  return (
14
15
  <main className="mx-auto max-w-2xl px-6 py-8">
15
16
  <div className="mb-6">
16
- <Link href="/task" className={buttonRecipe({ variant: "ghost", size: "sm" })}>
17
+ <Link href="/task" className={jellyButtonRecipe({ variant: "ghost", size: "sm" })}>
17
18
  ← Tasks
18
19
  </Link>
19
20
  </div>
20
21
  <div className="mb-6">
21
- <h1 className="font-extrabold text-3xl text-foreground">New Task</h1>
22
+ <h1 className="font-black text-4xl text-foreground">New Task</h1>
22
23
  <p className="mt-1 text-foreground/60 text-sm">Create a new task with title and description</p>
23
24
  </div>
24
- <div className="rounded-xl border border-foreground/10 bg-background p-6 shadow-sm">
25
+ <div className="jelly-glass rounded-box p-6">
25
26
  <Load.Edit slice={fetch.slice.taskInPublic} edit={taskForm} type="form" onCancel="back" onSubmit="/task">
26
27
  <Task.Template.General />
27
28
  </Load.Edit>
@@ -6,6 +6,7 @@ export default function getContent(scanInfo: AppInfo | LibInfo | null, dict: { a
6
6
  content: `"use client";
7
7
 
8
8
  import { cn } from "akanjs/client";
9
+ import { Image } from "akanjs/ui";
9
10
 
10
11
  // ===== GlobalLoading.tsx =====
11
12
  // Convention: ui/ folder — reusable visual components. PascalCase .tsx, "use client" directive.
@@ -20,7 +21,7 @@ interface GlobalLoadingProps {
20
21
  export const GlobalLoading = ({ className, message = "Loading..." }: GlobalLoadingProps) => {
21
22
  return (
22
23
  <div className={cn("flex flex-col items-center justify-center gap-4 py-32", className)}>
23
- <span className="inline-block size-8 animate-spin rounded-full border-2 border-primary border-t-transparent" />
24
+ <Image alt="" className="size-12 animate-bounce" height={96} src="/jelly/star.webp" width={96} />
24
25
  <span className="text-foreground/60 text-sm">{message}</span>
25
26
  </div>
26
27
  );
@@ -6,7 +6,7 @@ export default function getContent(scanInfo: AppInfo | LibInfo | null, dict: { a
6
6
  content: `"use client";
7
7
 
8
8
  import { cn } from "akanjs/client";
9
- import { buttonRecipe } from "akanjs/ui";
9
+ import { jellyButtonRecipe } from "./Recipe";
10
10
 
11
11
  // ===== QuantityControl.tsx =====
12
12
  // Convention: ui/ folder — reusable visual components. PascalCase .tsx, "use client" directive.
@@ -31,7 +31,7 @@ export const QuantityControl = ({
31
31
  return (
32
32
  <div className={cn("inline-flex items-center gap-1", className)}>
33
33
  <button
34
- className={buttonRecipe({ variant: "outline", size: "icon" }, "size-6 rounded-full")}
34
+ className={jellyButtonRecipe({ variant: "default", size: "icon" }, "size-7")}
35
35
  disabled={value <= min}
36
36
  onClick={() => onChange(Math.max(min, value - 1))}
37
37
  >
@@ -39,7 +39,7 @@ export const QuantityControl = ({
39
39
  </button>
40
40
  <span className="w-8 text-center font-medium tabular-nums">{value}</span>
41
41
  <button
42
- className={buttonRecipe({ variant: "outline", size: "icon" }, "size-6 rounded-full")}
42
+ className={jellyButtonRecipe({ variant: "default", size: "icon" }, "size-7")}
43
43
  disabled={value >= max}
44
44
  onClick={() => onChange(Math.min(max, value + 1))}
45
45
  >
@@ -6,6 +6,12 @@ the framework generate the repeated surfaces.
6
6
  For agent-neutral documentation that Claude Code, Codex, Devin, GitHub Copilot Coding Agent, and other tools can
7
7
  also read, see `docs/AI-DEVELOPMENT.md` and `docs/GENERATED.md`.
8
8
 
9
+ ## Framework Bugs And Feature Requests
10
+
11
+ If you hit an Akan.js bug, or a fix that one framework change would solve more easily than app-level workarounds,
12
+ draft a GitHub issue for <https://github.com/akan-team/akanjs/issues> (version, repro, expected vs actual) and ask
13
+ the user before filing it. Keep any interim workaround small and marked `// TODO: <issue url>`.
14
+
9
15
  ## Generated Context
10
16
 
11
17
  The section below is regenerated by `akan agent install` (run `bun run setup:agent`). It lists this
@@ -9,10 +9,10 @@ import {
9
9
  runner,
10
10
  script,
11
11
  command
12
- } from "./index-1skctzbq.js";
12
+ } from "./index-vpj42xwt.js";
13
13
  import {
14
14
  AppExecutor
15
- } from "./index-e52z7psd.js";
15
+ } from "./index-3w94e7n3.js";
16
16
  import {
17
17
  TunnelShare2
18
18
  } from "./index-2wc41k5w.js";
@@ -3,20 +3,20 @@ import {
3
3
  Workspace,
4
4
  script,
5
5
  command
6
- } from "./index-1skctzbq.js";
6
+ } from "./index-vpj42xwt.js";
7
7
  import"./index-52w0fvh8.js";
8
- import"./index-e52z7psd.js";
8
+ import"./index-3w94e7n3.js";
9
9
  import"./index-hj6w4ka1.js";
10
- import"./index-84r80zdx.js";
11
- import"./index-vcdxpmsx.js";
12
- import"./index-qk9vv9hm.js";
13
- import"./index-nhhrjvk1.js";
14
- import"./index-cxafpw23.js";
15
- import"./index-q9q7x4zj.js";
16
- import"./index-7yf7rnjg.js";
10
+ import"./index-y3mphr1m.js";
11
+ import"./index-9z771ptz.js";
12
+ import"./index-mbxbhay5.js";
13
+ import"./index-4npz05nm.js";
14
+ import"./index-kqabytj7.js";
15
+ import"./index-93j60em0.js";
16
+ import"./index-hsmtysz4.js";
17
17
  import {
18
18
  WorkflowRunner
19
- } from "./index-f50dy7yq.js";
19
+ } from "./index-f3c78nd6.js";
20
20
 
21
21
  // pkgs/@akanjs/cli/workflow/workflow.script.ts
22
22
  import { Logger } from "akanjs/common";
@@ -11,7 +11,7 @@ import {
11
11
  runner,
12
12
  script,
13
13
  command
14
- } from "./index-1skctzbq.js";
14
+ } from "./index-vpj42xwt.js";
15
15
  import {
16
16
  extractAgentBlock,
17
17
  collectScopeRecipeSources,
@@ -22,7 +22,7 @@ import {
22
22
  AppExecutor,
23
23
  LibExecutor,
24
24
  PkgExecutor
25
- } from "./index-e52z7psd.js";
25
+ } from "./index-3w94e7n3.js";
26
26
  import {
27
27
  countBlocking,
28
28
  formatStyleContract,
@@ -32,43 +32,43 @@ import {
32
32
  collectRecipeSources2,
33
33
  scanRecipes2
34
34
  } from "./index-hj6w4ka1.js";
35
- import"./index-84r80zdx.js";
36
- import"./index-vcdxpmsx.js";
35
+ import"./index-y3mphr1m.js";
36
+ import"./index-9z771ptz.js";
37
37
  import"./index-zzvvc845.js";
38
38
  import {
39
39
  AgentScript
40
- } from "./index-smbecayj.js";
40
+ } from "./index-wprnsjms.js";
41
41
  import"./index-48k96p55.js";
42
- import"./index-f8q701fb.js";
42
+ import"./index-gbggbqcp.js";
43
43
  import {
44
44
  LibraryScript
45
- } from "./index-zvr7wfyg.js";
45
+ } from "./index-mgxpx3f2.js";
46
46
  import {
47
47
  ApplicationScript
48
- } from "./index-zc90rh75.js";
48
+ } from "./index-p993efkq.js";
49
49
  import"./index-7md2g9vw.js";
50
50
  import"./index-2ahj896a.js";
51
51
  import {
52
52
  PackageScript
53
- } from "./index-arnkqb6f.js";
53
+ } from "./index-by9pxkr0.js";
54
54
  import {
55
55
  getNpmRegistryUrl,
56
56
  getLatestPackageVersion
57
- } from "./index-947t6zm4.js";
57
+ } from "./index-drehwpdt.js";
58
58
  import {
59
59
  CloudScript2
60
- } from "./index-8psse8dw.js";
61
- import"./index-rqxa9r98.js";
62
- import"./index-q9q7x4zj.js";
63
- import"./index-qk9vv9hm.js";
64
- import"./index-nhhrjvk1.js";
65
- import"./index-cxafpw23.js";
66
- import"./index-7yf7rnjg.js";
67
- import"./index-f50dy7yq.js";
60
+ } from "./index-pmhqttv3.js";
61
+ import"./index-abxpehf8.js";
62
+ import"./index-93j60em0.js";
63
+ import"./index-mbxbhay5.js";
64
+ import"./index-4npz05nm.js";
65
+ import"./index-kqabytj7.js";
66
+ import"./index-hsmtysz4.js";
67
+ import"./index-f3c78nd6.js";
68
68
  import {
69
69
  ContextScript
70
- } from "./index-ymnqrsxm.js";
71
- import"./index-ksq4t16z.js";
70
+ } from "./index-yg7jhz8x.js";
71
+ import"./index-jmrn54tt.js";
72
72
 
73
73
  // pkgs/@akanjs/cli/workspace/workspace.runner.ts
74
74
  import path from "path";
@@ -330,7 +330,10 @@ class WorkspaceScript extends script("workspace", [
330
330
  await this.libraryScript.installLibrary(workspace, "util");
331
331
  await this.libraryScript.installLibrary(workspace, "shared");
332
332
  }
333
- await this.applicationScript.createApplication(appName, workspace, { libs: installLibs ? ["util", "shared"] : [] });
333
+ await this.applicationScript.createApplication(appName, workspace, {
334
+ libs: installLibs ? ["util", "shared"] : [],
335
+ sample: true
336
+ });
334
337
  await workspace.applyTemplate({
335
338
  basePath: `apps/${appName}`,
336
339
  template: "appSample",
@@ -1,20 +0,0 @@
1
- // @bun
2
- import {
3
- CloudScript2
4
- } from "./index-8psse8dw.js";
5
- import"./index-947t6zm4.js";
6
- import"./index-arnkqb6f.js";
7
- import"./index-zc90rh75.js";
8
- import"./index-ksq4t16z.js";
9
- import"./index-zvr7wfyg.js";
10
- import"./index-f8q701fb.js";
11
- import"./index-94s080qm.js";
12
- import"./index-1skctzbq.js";
13
- import"./index-7md2g9vw.js";
14
- import"./index-48k96p55.js";
15
- import"./index-e52z7psd.js";
16
- import"./index-2ahj896a.js";
17
- import"./index-52w0fvh8.js";
18
- export {
19
- CloudScript2 as CloudScript
20
- };
@@ -1,21 +0,0 @@
1
- // @bun
2
- import {
3
- ContextRunner2
4
- } from "./index-rqxa9r98.js";
5
- import"./index-f50dy7yq.js";
6
- import"./index-7yf7rnjg.js";
7
- import"./index-cxafpw23.js";
8
- import"./index-q9q7x4zj.js";
9
- import"./index-nhhrjvk1.js";
10
- import"./index-qk9vv9hm.js";
11
- import"./index-f8q701fb.js";
12
- import"./index-vcdxpmsx.js";
13
- import"./index-84r80zdx.js";
14
- import"./index-zzvvc845.js";
15
- import"./index-1skctzbq.js";
16
- import"./index-e52z7psd.js";
17
- import"./index-hj6w4ka1.js";
18
- import"./index-52w0fvh8.js";
19
- export {
20
- ContextRunner2 as ContextRunner
21
- };