@akanjs/cli 3.0.0-beta.2 → 3.0.0-beta.20

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 (187) hide show
  1. package/.build-stamp +1 -1
  2. package/CodeAgent-awv258wb.js +9 -0
  3. package/CodeAgentRpcHost-p7h6n2hp.js +7 -0
  4. package/CodeAgentRpcListener-7p7z5dd7.js +97 -0
  5. package/CodeTui-1nqh35ez.js +1457 -0
  6. package/README.md +3 -0
  7. package/TunnelShare-scf4e4pd.js +9 -0
  8. package/{agent.command-d2gfxfck.js → agent.command-1s9ag7sb.js} +8 -9
  9. package/akanCode.js +102 -0
  10. package/{application.command-pj2m7584.js → application.command-49hwy6va.js} +51 -78
  11. package/{applicationBuildRunner-kxwbssgn.js → applicationBuildRunner-ybyp97pv.js} +63 -64
  12. package/{applicationReleasePackager-4yasxwv9.js → applicationReleasePackager-esnrphw8.js} +40 -60
  13. package/buildBatch.proc.js +19 -24
  14. package/{capacitorApp-36rbr858.js → capacitorApp-1synz4en.js} +3 -4
  15. package/cloud.command-d7rqtzt9.js +94 -0
  16. package/cloud.script-bkbpcr96.js +19 -0
  17. package/code.command-nn48xzej.js +154 -0
  18. package/commandManifest.json +1 -1
  19. package/consoleToStderr-h5bryj94.js +7 -0
  20. package/context.command-s3mcmvpa.js +48 -0
  21. package/context.runner-k99nb5pk.js +21 -0
  22. package/{dependencyScanner-shs82ynp.js → dependencyScanner-ye2e6pdz.js} +2 -2
  23. package/{devTui-40ggmd99.js → devTui-q7k7bakd.js} +122 -40
  24. package/fileSys-5ngz93ga.js +9 -0
  25. package/guideline.command-sct4qnt5.js +42 -0
  26. package/guidelines/agentRule/agentRule.instruction.md +206 -25
  27. package/guidelines/conventions/conventions.instruction.md +79 -24
  28. package/guidelines/fieldRule/fieldRule.instruction.md +1 -0
  29. package/guidelines/mcpRule/mcpRule.instruction.md +7 -5
  30. package/guidelines/queryRule/queryRule.instruction.md +17 -7
  31. package/guidelines/runtimeRule/runtimeRule.instruction.md +74 -0
  32. package/guidelines/ssrRule/ssrRule.instruction.md +4 -2
  33. package/guidelines/transportRule/transportRule.instruction.md +51 -0
  34. package/guidelines/workspaceRecipes/workspaceRecipes.instruction.md +66 -3
  35. package/incrementalBuilder.proc.js +31 -48
  36. package/{index-h7yw2z9n.js → index-0bq14vr1.js} +8 -14
  37. package/index-13ffe9wp.js +69 -0
  38. package/index-22d57v4c.js +266 -0
  39. package/{index-fz5q3gd7.js → index-31yr441d.js} +10 -17
  40. package/index-3hx1z96c.js +87 -0
  41. package/index-3sq321ak.js +53 -0
  42. package/{index-kcxmv48c.js → index-3t7g9e4r.js} +45 -79
  43. package/{index-q0y2jq9j.js → index-5b6tavv3.js} +6 -3
  44. package/{index-47pj3aee.js → index-5e0n4hqx.js} +11 -12
  45. package/{index-259dsnz3.js → index-5pc1qrbv.js} +5 -8
  46. package/index-7md2g9vw.js +6 -0
  47. package/index-8mna0947.js +187 -0
  48. package/{index-zry5nz81.js → index-8sf7wmdr.js} +51 -30
  49. package/{index-2tv3fdx4.js → index-9d9bgcx4.js} +342 -765
  50. package/index-9dp031by.js +12 -0
  51. package/{index-ne2qy0nk.js → index-ahemdr5n.js} +12 -12
  52. package/{index-ws5e0j51.js → index-as7xmyz8.js} +40 -24
  53. package/index-axzjaqve.js +1118 -0
  54. package/{index-3d9y066c.js → index-bjwxs904.js} +9 -8
  55. package/index-c6eggbee.js +123 -0
  56. package/index-d2242ksy.js +99 -0
  57. package/{index-a64esmtb.js → index-ddxvdd1p.js} +169 -305
  58. package/{index-92zztqy1.js → index-dy0jx9ay.js} +2 -17
  59. package/{index-pnqbkf5p.js → index-dzf3r49a.js} +6 -2
  60. package/{index-w8kmx1b6.js → index-fgq75haa.js} +198 -290
  61. package/{index-by5gpp8x.js → index-hj6w4ka1.js} +2 -1
  62. package/{index-hwkygn9s.js → index-khpfpcsd.js} +302 -33
  63. package/{index-wt7qrtd4.js → index-mxav6j3c.js} +93 -232
  64. package/{index-gyd220p2.js → index-myhc3c1j.js} +554 -577
  65. package/{index-600zhnve.js → index-nv5976x3.js} +56 -197
  66. package/index-p6pbz9n5.js +25 -0
  67. package/{index-4edzf1gr.js → index-przybvy5.js} +77 -150
  68. package/index-smme4r47.js +49 -0
  69. package/{index-mak3cd28.js → index-w2zdcw3k.js} +137 -255
  70. package/index-wa5jbxj1.js +760 -0
  71. package/{index-v0qh106m.js → index-ww4z397j.js} +527 -723
  72. package/{index-j9yhg404.js → index-xqjwd384.js} +4 -7
  73. package/{index-7737gxcp.js → index-xqpzbab5.js} +107 -241
  74. package/index-xsjh6nzh.js +2729 -0
  75. package/{index-ktb5njgy.js → index-ygn77a5w.js} +47 -99
  76. package/index-ztp3e73t.js +700 -0
  77. package/index.js +23 -22
  78. package/{library.command-nbsky672.js → library.command-1gx04jgn.js} +4 -5
  79. package/{localRegistry.command-yeq57wjr.js → localRegistry.command-zndxj1q6.js} +22 -42
  80. package/{module.command-29vqzrh8.js → module.command-3waddk95.js} +8 -11
  81. package/{package.command-axv0abmn.js → package.command-zrc7br1y.js} +6 -7
  82. package/package.json +14 -5
  83. package/{page.command-vs9s3zrh.js → page.command-vpjgardh.js} +4 -5
  84. package/{primitive.command-cbxmqbtc.js → primitive.command-sz84tk4t.js} +9 -22
  85. package/prompter-ptaa3nk0.js +8 -0
  86. package/{quality.command-gmbs7nws.js → quality.command-g869hafs.js} +203 -376
  87. package/{recipeScanner-fpagtgc1.js → recipeScanner-4b69ybe0.js} +1 -1
  88. package/{repair.command-bqsjptsj.js → repair.command-chsnjvvv.js} +11 -35
  89. package/{routeSourceValidator-apyqw7wk.js → routeSourceValidator-7ycnfz0e.js} +0 -6
  90. package/{scalar.command-6k1vhe9s.js → scalar.command-2v21newx.js} +7 -10
  91. package/skills/akan-code/SKILL.md +130 -0
  92. package/skills/akan-debug/SKILL.md +42 -0
  93. package/skills/akan-deps/SKILL.md +50 -0
  94. package/skills/akan-err/SKILL.md +39 -0
  95. package/skills/akan-module/SKILL.md +45 -0
  96. package/skills/akan-scaffold/SKILL.md +76 -0
  97. package/skills/akan-scalar/SKILL.md +52 -0
  98. package/skills/akan-service/SKILL.md +34 -0
  99. package/skills/akan-store/SKILL.md +67 -0
  100. package/skills/akan-ui/SKILL.md +63 -0
  101. package/skills/akan-validate/SKILL.md +44 -0
  102. package/{subspace.command-fwjfcts7.js → subspace.command-ckcbwfp1.js} +138 -67
  103. package/templates/__scalar/__model__/__model__.abstract.md.template +8 -0
  104. package/templates/appSample/lib/__scalar/workHistory/workHistory.abstract.ts +8 -39
  105. package/templates/appSample/lib/_noti/noti.abstract.ts +6 -29
  106. package/templates/appSample/lib/task/task.abstract.ts +12 -32
  107. package/templates/appSample/lib/task/task.signal.spec.ts +15 -18
  108. package/templates/appSample/lib/task/task.signal.test.ts +15 -1
  109. package/templates/appSample/lib/task/task.signal.ts +1 -1
  110. package/templates/appSample/srvkit/{AuthGuard.ts → guards.ts} +7 -4
  111. package/templates/appSample/srvkit/{SessionInternalArg.ts → internalArgs.ts} +6 -4
  112. package/templates/client.ts +7 -30
  113. package/templates/crudPages/[__model__Id]/edit/page.tsx +2 -1
  114. package/templates/crudPages/[__model__Id]/page.tsx +2 -1
  115. package/templates/crudPages/new/page.tsx +2 -1
  116. package/templates/crudPages/page.tsx +2 -1
  117. package/templates/crudSinglePage/page.tsx +2 -1
  118. package/templates/lib/__lib/lib.dictionary.ts +0 -2
  119. package/templates/lib/__lib/lib.document.ts +0 -2
  120. package/templates/lib/sig.ts +8 -30
  121. package/templates/localDev/docker-compose.yaml.template +3 -14
  122. package/templates/module/__model__.signal.ts +12 -4
  123. package/templates/pkgRoot/tsconfig.json.template +2 -7
  124. package/templates/server.ts +0 -2
  125. package/templates/service/__model__.abstract.md.template +8 -0
  126. package/tunnel.command-kd2yr4fx.js +129 -0
  127. package/{typeChecker-3xgrzc2v.js → typeChecker-px49mezc.js} +1 -1
  128. package/typecheck.proc.js +1 -1
  129. package/workflow.command-44252cqv.js +79 -0
  130. package/{workspace.command-8s050m0h.js → workspace.command-fqcztt5p.js} +77 -109
  131. package/abstractCompactor-mjh5ppsq.js +0 -101
  132. package/cloud.command-jshwdq22.js +0 -93
  133. package/context.command-ez8a0zyz.js +0 -80
  134. package/devTuiView-c08ccbat.js +0 -9
  135. package/getDirname-dr3jz1xg.js +0 -7
  136. package/guideline.command-xmqwx8zm.js +0 -359
  137. package/guidelines/agentRule/agentRule.generate.json +0 -31
  138. package/guidelines/componentRule/componentRule.generate.json +0 -31
  139. package/guidelines/conventions/conventions.generate.json +0 -25
  140. package/guidelines/cssRule/cssRule.generate.json +0 -31
  141. package/guidelines/docPageRule/docPageRule.generate.json +0 -31
  142. package/guidelines/docPageRule/docPageRule.instruction.md +0 -25
  143. package/guidelines/docSyncRule/docSyncRule.generate.json +0 -31
  144. package/guidelines/docSyncRule/docSyncRule.instruction.md +0 -25
  145. package/guidelines/enumConstant/enumConstant.generate.json +0 -31
  146. package/guidelines/enumConstant/enumConstant.instruction.md +0 -28
  147. package/guidelines/fieldRule/fieldRule.generate.json +0 -31
  148. package/guidelines/framework/framework.generate.json +0 -32
  149. package/guidelines/mcpRule/mcpRule.generate.json +0 -35
  150. package/guidelines/modelConstant/modelConstant.generate.json +0 -32
  151. package/guidelines/modelDictionary/modelDictionary.generate.json +0 -32
  152. package/guidelines/modelDocument/modelDocument.generate.json +0 -31
  153. package/guidelines/modelService/modelService.generate.json +0 -31
  154. package/guidelines/modelSignal/modelSignal.generate.json +0 -31
  155. package/guidelines/modelStore/modelStore.generate.json +0 -31
  156. package/guidelines/modelTemplate/modelTemplate.generate.json +0 -31
  157. package/guidelines/modelUnit/modelUnit.generate.json +0 -31
  158. package/guidelines/modelUtil/modelUtil.generate.json +0 -31
  159. package/guidelines/modelView/modelView.generate.json +0 -31
  160. package/guidelines/modelZone/modelZone.generate.json +0 -31
  161. package/guidelines/moduleCodegen/moduleCodegen.generate.json +0 -31
  162. package/guidelines/moduleCodegen/moduleCodegen.instruction.md +0 -28
  163. package/guidelines/moduleOverview/moduleOverview.generate.json +0 -31
  164. package/guidelines/queryRule/queryRule.generate.json +0 -31
  165. package/guidelines/recipeRule/recipeRule.generate.json +0 -31
  166. package/guidelines/runtimeRule/runtimeRule.generate.json +0 -25
  167. package/guidelines/scalarConstant/scalarConstant.generate.json +0 -32
  168. package/guidelines/scalarDictionary/scalarDictionary.generate.json +0 -32
  169. package/guidelines/scalarModule/scalarModule.generate.json +0 -31
  170. package/guidelines/sharedUiUsage/sharedUiUsage.generate.json +0 -31
  171. package/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +0 -25
  172. package/guidelines/ssrRule/ssrRule.generate.json +0 -31
  173. package/guidelines/transportRule/transportRule.generate.json +0 -31
  174. package/guidelines/utilUiUsage/utilUiUsage.generate.json +0 -31
  175. package/guidelines/utilUiUsage/utilUiUsage.instruction.md +0 -25
  176. package/guidelines/workspaceOnboarding/workspaceOnboarding.generate.json +0 -24
  177. package/guidelines/workspaceRecipes/workspaceRecipes.generate.json +0 -33
  178. package/index-2hq52jq3.js +0 -465
  179. package/index-6wwzs1bc.js +0 -7
  180. package/index-8pm30m73.js +0 -841
  181. package/index-kn1h7p1x.js +0 -560
  182. package/index-meh558jy.js +0 -65
  183. package/index-rwg2aa4f.js +0 -229
  184. package/templates/__scalar/__model__/__model__.abstract.md +0 -28
  185. package/templates/module/__model__.abstract.md +0 -28
  186. package/templates/service/__model__.abstract.md +0 -28
  187. package/workflow.command-nwpcdc8p.js +0 -107
package/index-rwg2aa4f.js DELETED
@@ -1,229 +0,0 @@
1
- // @bun
2
- import {
3
- runner,
4
- script
5
- } from "./index-mak3cd28.js";
6
- import {
7
- generatedFilesForSync,
8
- createPassedPrimitiveReport,
9
- scalarChangedFiles
10
- } from "./index-gyd220p2.js";
11
- import {
12
- AiSession
13
- } from "./index-kn1h7p1x.js";
14
- import {
15
- Prompter
16
- } from "./index-h7yw2z9n.js";
17
- import {
18
- pluralizeName
19
- } from "./index-nz8prx9g.js";
20
-
21
- // pkgs/@akanjs/cli/scalar/scalar.prompt.ts
22
- import { input } from "@inquirer/prompts";
23
- class ScalarPrompt extends Prompter {
24
- sys;
25
- name;
26
- constructor(sys, name) {
27
- super();
28
- this.sys = sys;
29
- this.name = name;
30
- }
31
- async requestUpdateConstant() {
32
- const request = await input({ message: `What do you want to change?` });
33
- return { request, validate: undefined };
34
- }
35
- async requestCreateConstant() {
36
- const constantFiles = await this.sys.getConstantFilesWithLibs();
37
- const description = await input({ message: "description of scalar" });
38
- const schemaDescription = await input({ message: "schema description of scalar" });
39
- await this.sys.applyTemplate({
40
- basePath: "./lib/__scalar",
41
- template: "__scalar",
42
- dict: { model: this.name, models: pluralizeName(this.name), sysName: this.sys.name }
43
- });
44
- const boilerplate = await this.sys.readFile(`lib/__scalar/${this.name}/${this.name}.constant.ts`);
45
- return await this.#requestConstant({
46
- modelDesc: description,
47
- modelSchemaDesign: schemaDescription,
48
- boilerplate,
49
- constantFiles
50
- });
51
- }
52
- async#requestConstant({
53
- modelDesc,
54
- modelSchemaDesign,
55
- boilerplate,
56
- constantFiles
57
- }) {
58
- const scanInfo = await this.sys.scan();
59
- const guideJson = await Prompter.getGuideJson("scalarConstant");
60
- const request = await this.makeTsFileUpdatePrompt({
61
- context: `
62
- 1. Overview of __scalar/<model>/<model>.constant.ts file
63
- ${await this.getDocumentation("scalarConstant")}
64
-
65
- 2. How to write Enums in __scalar/<model>/<model>.constant.ts file
66
- ${await this.getDocumentation("enumConstant")}
67
-
68
- 3. How to write Fields in __scalar/<model>/<model>.constant.ts file
69
- ${await this.getDocumentation("fieldRule")}
70
-
71
- 4. List of constant.ts files in other libraries connected to current ${this.sys.name} ${this.sys.type === "app" ? "Application" : "Library"} ${scanInfo.getLibs().map((lib) => lib).join(", ")}
72
- Please understand the content and file patterns below, and feel free to reuse any constants or enums if available.
73
- ${constantFiles.map((constant) => `
74
- \`\`\`typescript
75
- // File: ${constant.filePath}
76
- ${constant.content}
77
- \`\`\`
78
- `).join(`
79
- `)}
80
- `,
81
- request: `
82
- Based on the above content, please organize it according to the boilerplate below for easy parsing
83
-
84
- Application name: ${this.sys.name} (${this.sys.type === "app" ? "Application" : "Library"})
85
- Model name: ${this.name}
86
- Model description: ${modelDesc}
87
- Model schema design: ${modelSchemaDesign}
88
- Model filename(You can create another connected scalar model file if needed): ${this.name}.constant.ts
89
- \`\`\`typescript
90
- // File: lib/__scalar/${this.name}/${this.name}.constant.ts
91
- ${boilerplate}
92
- \`\`\`
93
-
94
- If additional connected scalar models need to be written besides ${this.name}.constant.ts file, please write them in the following format
95
- \`\`\`typescript
96
- // File: lib/__scalar/otherModel/otherModel.constant.ts
97
- ...file content
98
- \`\`\`
99
-
100
- Please provide only the file results without any other content.`
101
- });
102
- return { request, validate: guideJson.update.rules };
103
- }
104
- async requestUpdateDictonaryWithInstruction() {
105
- const constant = await this.sys.readFile(`lib/__scalar/${this.name}/${this.name}.constant.ts`);
106
- const boilerplate = await this.sys.readFile(`lib/__scalar/${this.name}/${this.name}.dictionary.ts`);
107
- const guideJson = await Prompter.getGuideJson("scalarDictionary");
108
- const request = `\uB2E4\uC74C ${this.name}.dictionary.ts \uD30C\uC77C\uB3C4 \uC644\uC131\uB41C ${this.name}.constant.ts \uD30C\uC77C\uC744 \uAE30\uBC18\uC73C\uB85C \uC791\uC131\uD574\uC918.
109
- 1. Dictionary \uC791\uC131\uBC95
110
- ${await this.getDocumentation("scalarDictionary")}
111
-
112
- Model constant file
113
- \`\`\`typescript
114
- // File: lib/__scalar/${this.name}/${this.name}.constant.ts
115
- ${constant}
116
- \`\`\`
117
-
118
- Model filename: ${this.name}.dictionary.ts
119
- \`\`\`typescript
120
- // File: lib/__scalar/${this.name}/${this.name}.dictionary.ts
121
- ${boilerplate}
122
- \`\`\`
123
- `;
124
- return { request, validate: guideJson.update.rules };
125
- }
126
- async requestUpdateDictonaryWithFollowing() {
127
- const [constant, boilerplate] = await Promise.all([
128
- this.sys.readFile(`lib/__scalar/${this.name}/${this.name}.constant.ts`),
129
- this.sys.readFile(`lib/__scalar/${this.name}/${this.name}.dictionary.ts`)
130
- ]);
131
- const request = `\uB2E4\uC74C ${this.name}.dictionary.ts \uD30C\uC77C\uB3C4 \uC644\uC131\uB41C ${this.name}.constant.ts \uD30C\uC77C\uC744 \uAE30\uBC18\uC73C\uB85C \uC791\uC131\uD574\uC918.
132
- Model constant file
133
- \`\`\`typescript
134
- // File: lib/__scalar/${this.name}/${this.name}.constant.ts
135
- ${constant}
136
- \`\`\`
137
-
138
- Model filename: ${this.name}.dictionary.ts
139
- \`\`\`typescript
140
- // File: lib/__scalar/${this.name}/${this.name}.dictionary.ts
141
- ${boilerplate}
142
- \`\`\`
143
- `;
144
- return { request, validate: [] };
145
- }
146
- }
147
-
148
- // pkgs/@akanjs/cli/scalar/scalar.runner.ts
149
- class ScalarRunner extends runner("scalar") {
150
- async applyScalarTemplate(sys, scalarName) {
151
- await sys.applyTemplate({
152
- basePath: "./lib/__scalar",
153
- template: "__scalar",
154
- dict: { model: scalarName, models: pluralizeName(scalarName), sysName: sys.name },
155
- overwrite: false
156
- });
157
- return {
158
- abstract: {
159
- filename: `${scalarName}.abstract.md`,
160
- content: await sys.readFile(`lib/__scalar/${scalarName}/${scalarName}.abstract.md`)
161
- },
162
- constant: {
163
- filename: `${scalarName}.constant.ts`,
164
- content: await sys.readFile(`lib/__scalar/${scalarName}/${scalarName}.constant.ts`)
165
- },
166
- dictionary: {
167
- filename: `${scalarName}.dictionary.ts`,
168
- content: await sys.readFile(`lib/__scalar/${scalarName}/${scalarName}.dictionary.ts`)
169
- },
170
- document: {
171
- filename: `${scalarName}.document.ts`,
172
- content: await sys.readFile(`lib/__scalar/${scalarName}/${scalarName}.document.ts`)
173
- }
174
- };
175
- }
176
- async createScalarConstant(sys, scalarName) {
177
- const isContinued = await sys.exists(`lib/__scalar/${scalarName}/${scalarName}.constant.ts`);
178
- const prompt = new ScalarPrompt(sys, scalarName);
179
- const session = new AiSession("createScalar", { workspace: sys.workspace, cacheKey: scalarName, isContinued });
180
- const { request, validate } = session.isCacheLoaded ? await prompt.requestUpdateConstant() : await prompt.requestCreateConstant();
181
- const writes = await session.writeTypescripts(request, sys, { validate });
182
- const scalarNames = writes.map(({ filePath }) => filePath.split("/").at(-2)).filter((name) => !!name);
183
- if (!scalarNames.includes(scalarName))
184
- scalarNames.unshift(scalarName);
185
- for (const name of scalarNames)
186
- await this.applyScalarTemplate(sys, name);
187
- return { session, scalarNames, writes, prompt };
188
- }
189
- async updateScalarDictionaries(sys, scalarNames, { session }) {
190
- const [firstScalarName, ...followingScalarNames] = scalarNames;
191
- const prompt = new ScalarPrompt(sys, firstScalarName);
192
- const { request, validate } = await prompt.requestUpdateDictonaryWithInstruction();
193
- await session.writeTypescripts(request, sys, { validate });
194
- for (const scalarName of followingScalarNames) {
195
- const prompt = new ScalarPrompt(sys, scalarName);
196
- const { request, validate } = await prompt.requestUpdateDictonaryWithFollowing();
197
- await session.writeTypescripts(request, sys, { validate });
198
- }
199
- }
200
- }
201
-
202
- // pkgs/@akanjs/cli/scalar/scalar.script.ts
203
- class ScalarScript extends script("scalar", [ScalarRunner]) {
204
- async createScalar(sys, scalarName) {
205
- const files = await this.scalarRunner.applyScalarTemplate(sys, scalarName);
206
- return createPassedPrimitiveReport({
207
- command: "create-scalar",
208
- changedFiles: scalarChangedFiles(sys, scalarName, files),
209
- generatedFiles: generatedFilesForSync(sys),
210
- target: sys.name
211
- });
212
- }
213
- async createScalarWithAi(sys, scalarName) {
214
- const { session, scalarNames } = await this.scalarRunner.createScalarConstant(sys, scalarName);
215
- await this.scalarRunner.updateScalarDictionaries(sys, scalarNames, { session });
216
- const fileMaps = await Promise.all(scalarNames.map(async (name) => ({ name, files: await this.scalarRunner.applyScalarTemplate(sys, name) })));
217
- return createPassedPrimitiveReport({
218
- command: "create-scalar",
219
- changedFiles: fileMaps.flatMap(({ name, files }) => scalarChangedFiles(sys, name, files)),
220
- generatedFiles: generatedFilesForSync(sys),
221
- target: sys.name
222
- });
223
- }
224
- async removeScalar(sys, scalarName) {
225
- await sys.removeDir(`lib/__scalar/${scalarName}`);
226
- }
227
- }
228
-
229
- export { ScalarScript };
@@ -1,28 +0,0 @@
1
- # Scalar Abstract
2
-
3
- ## Purpose
4
-
5
- Describe the embedded value object or reusable data concept this scalar owns.
6
-
7
- ## Domain Rules
8
-
9
- - Keep durable validation and meaning rules here.
10
- - Avoid repeating field types that are already clear in the constant file.
11
-
12
- ## Data Meaning
13
-
14
- Explain the meaning of the scalar fields and when this scalar should be used.
15
-
16
- ## Workflows
17
-
18
- Describe lifecycle or normalization behavior when relevant.
19
-
20
- ## Agent Notes
21
-
22
- - Read this abstract before changing the scalar.
23
- - Update this file when validation meaning, public behavior, or reuse rules change.
24
- - Do not update this file for formatting-only, import-only, or style-only changes.
25
-
26
- ## Related Modules
27
-
28
- - None yet.
@@ -1,28 +0,0 @@
1
- # Module Abstract
2
-
3
- ## Purpose
4
-
5
- Describe the business concept this module owns.
6
-
7
- ## Domain Rules
8
-
9
- - Keep durable business invariants here.
10
- - Avoid repeating field types that are already clear in the constant file.
11
-
12
- ## Data Meaning
13
-
14
- Explain the meaning of important data only when the code does not make the intent obvious.
15
-
16
- ## Workflows
17
-
18
- Describe create, update, approval, deletion, state transition, or other business flows.
19
-
20
- ## Agent Notes
21
-
22
- - Read this abstract before changing the module.
23
- - Update this file when business invariants, workflows, or public behavior change.
24
- - Do not update this file for formatting-only, import-only, or style-only changes.
25
-
26
- ## Related Modules
27
-
28
- - None yet.
@@ -1,28 +0,0 @@
1
- # Service Abstract
2
-
3
- ## Purpose
4
-
5
- Describe the business workflow or integration this service owns.
6
-
7
- ## Domain Rules
8
-
9
- - Keep durable business invariants here.
10
- - Avoid repeating implementation details already clear in the service or signal files.
11
-
12
- ## Data Meaning
13
-
14
- Explain important input, output, and state meanings only when the code does not make the intent obvious.
15
-
16
- ## Workflows
17
-
18
- Describe the service workflows, background jobs, external calls, or state transitions.
19
-
20
- ## Agent Notes
21
-
22
- - Read this abstract before changing the service module.
23
- - Keep business behavior in service code and expose callable actions through signals.
24
- - Update this file when business invariants, workflows, or public behavior change.
25
-
26
- ## Related Modules
27
-
28
- - None yet.
@@ -1,107 +0,0 @@
1
- // @bun
2
- import {
3
- Workspace,
4
- script,
5
- command
6
- } from "./index-mak3cd28.js";
7
- import"./index-q0y2jq9j.js";
8
- import"./index-2tv3fdx4.js";
9
- import"./index-6wwzs1bc.js";
10
- import {
11
- createWorkflowStepRegistry
12
- } from "./index-gyd220p2.js";
13
- import"./index-kn1h7p1x.js";
14
- import {
15
- ModuleScript
16
- } from "./index-8pm30m73.js";
17
- import"./index-pnqbkf5p.js";
18
- import"./index-h7yw2z9n.js";
19
- import {
20
- PrimitiveScript
21
- } from "./index-4edzf1gr.js";
22
- import {
23
- ScalarScript
24
- } from "./index-rwg2aa4f.js";
25
- import"./index-by5gpp8x.js";
26
- import"./index-ktb5njgy.js";
27
- import {
28
- WorkflowRunner
29
- } from "./index-7737gxcp.js";
30
-
31
- // pkgs/@akanjs/cli/workflow/workflow.script.ts
32
- import { Logger } from "akanjs/common";
33
- class WorkflowScript extends script("workflow", [WorkflowRunner, ModuleScript, ScalarScript, PrimitiveScript]) {
34
- async workflow(action, workflow, inputs, {
35
- format = "markdown",
36
- out = null,
37
- dryRun = false,
38
- workspace
39
- } = {}) {
40
- if (action === "list") {
41
- Logger.rawLog(this.workflowRunner.list({ format }));
42
- return;
43
- }
44
- if (!workflow)
45
- throw new Error(`Workflow name is required for "${action}".`);
46
- if (action === "explain") {
47
- Logger.rawLog(this.workflowRunner.explain(workflow, { format }));
48
- return;
49
- }
50
- if (action === "plan") {
51
- Logger.rawLog(await this.workflowRunner.plan(workflow, inputs, { format, out }));
52
- return;
53
- }
54
- if (action === "apply") {
55
- if (!workspace)
56
- throw new Error("Workspace is required for workflow apply.");
57
- Logger.rawLog(await this.workflowRunner.apply(workflow, {
58
- dryRun,
59
- format,
60
- workspace,
61
- registry: createWorkflowStepRegistry({
62
- workspace,
63
- createModule: (sys, module) => this.moduleScript.createModuleTemplate(sys, module),
64
- createScalar: (sys, scalar) => this.scalarScript.createScalar(sys, scalar),
65
- createUi: (input) => this.primitiveScript.createUi(workspace, input),
66
- addField: (input) => this.primitiveScript.addField(workspace, input),
67
- addEnumField: (input) => this.primitiveScript.addEnumField(workspace, input),
68
- addMutation: (input) => this.primitiveScript.addMutation(workspace, input),
69
- addSlice: (input) => this.primitiveScript.addSlice(workspace, input)
70
- })
71
- }));
72
- return;
73
- }
74
- if (action === "validate") {
75
- if (!workspace)
76
- throw new Error("Workspace is required for workflow validate.");
77
- Logger.rawLog(await this.workflowRunner.validate(workflow, { format, workspace }));
78
- return;
79
- }
80
- if (action === "report") {
81
- if (!workspace)
82
- throw new Error("Workspace is required for workflow report.");
83
- Logger.rawLog(await this.workflowRunner.report(workflow, { format, workspace }));
84
- return;
85
- }
86
- throw new Error(`Unknown workflow action: ${action}. Use list, explain, plan, apply, validate, or report.`);
87
- }
88
- }
89
-
90
- // pkgs/@akanjs/cli/workflow/workflow.command.ts
91
- class WorkflowCommand extends command("workflow", [WorkflowScript], ({ public: target }) => ({
92
- workflow: target({ desc: "List, explain, plan, apply, validate, or report Akan workflows" }).arg("action", String, {
93
- desc: "list, explain, plan, apply, validate, or report",
94
- enum: ["list", "explain", "plan", "apply", "validate", "report"]
95
- }).arg("workflow", String, { desc: "workflow name, plan path, or run id", nullable: true }).with(Workspace).option("format", String, {
96
- desc: "output format",
97
- flag: "o",
98
- default: "markdown",
99
- enum: ["markdown", "json"]
100
- }).option("out", String, { flag: "w", desc: "write workflow plan JSON to this path", nullable: true }).option("dryRun", Boolean, { flag: "r", desc: "show predicted apply report without writing files", default: false }).option("app", String, { desc: "target app or library name", nullable: true }).option("module", String, { desc: "target module name", nullable: true }).option("field", String, { desc: "field name", nullable: true }).option("type", String, { desc: "field type or scalar name", nullable: true }).option("values", String, { flag: "l", desc: "comma-separated values", nullable: true }).option("default", String, { desc: "default value", nullable: true }).option("scalar", String, { flag: "c", desc: "scalar name", nullable: true }).option("surface", String, { flag: "u", desc: "UI surface name", nullable: true }).option("mutation", String, { flag: "n", desc: "mutation name", nullable: true }).option("slice", String, { flag: "i", desc: "slice name", nullable: true }).exec(async function(action, workflow, workspace, format, out, dryRun, app, module, field, typeName, values, defaultValue, scalar, surface, mutation, slice) {
101
- await this.workflowScript.workflow(action, workflow, { app, module, field, type: typeName, values, default: defaultValue, scalar, surface, mutation, slice }, { format, out, dryRun, workspace });
102
- })
103
- })) {
104
- }
105
- export {
106
- WorkflowCommand
107
- };