@akanjs/cli 3.0.0-beta.9 → 3.0.0
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.
- package/.build-stamp +1 -1
- package/CodeAgent-2vmp9qe0.js +9 -0
- package/CodeAgentRpcHost-p7h6n2hp.js +7 -0
- package/CodeAgentRpcListener-7p7z5dd7.js +97 -0
- package/CodeTui-5ed6bg2a.js +1457 -0
- package/README.ko.md +83 -28
- package/README.md +70 -27
- package/TunnelShare-cwh9ezsm.js +9 -0
- package/{agent.command-0q17pnrs.js → agent.command-gn73rhe7.js} +8 -9
- package/akanCode.js +102 -0
- package/application.command-e968t0hw.js +246 -0
- package/{applicationBuildRunner-kxwbssgn.js → applicationBuildRunner-64taxseg.js} +121 -77
- package/buildBatch.proc.js +120 -32
- package/cloud.command-0jm301rr.js +95 -0
- package/cloud.script-nemnzjpv.js +20 -0
- package/code.command-18kcm7hq.js +154 -0
- package/commandManifest.json +1 -1
- package/consoleToStderr-h5bryj94.js +7 -0
- package/context.command-trd9bn18.js +48 -0
- package/context.runner-y5hwh673.js +21 -0
- package/{dependencyScanner-shs82ynp.js → dependencyScanner-06z2dmrr.js} +2 -2
- package/{devTui-m1atgkc9.js → devTui-q7k7bakd.js} +122 -40
- package/fileSys-wzzrntkw.js +9 -0
- package/guideline.command-bdmdn2de.js +42 -0
- package/guidelines/agentRule/agentRule.instruction.md +154 -26
- package/guidelines/conventions/conventions.instruction.md +134 -48
- package/guidelines/mcpRule/mcpRule.instruction.md +7 -5
- package/guidelines/queryRule/queryRule.instruction.md +21 -7
- package/guidelines/runtimeRule/runtimeRule.instruction.md +291 -6
- package/guidelines/ssrRule/ssrRule.instruction.md +4 -2
- package/guidelines/transportRule/transportRule.instruction.md +10 -8
- package/guidelines/workspaceOnboarding/workspaceOnboarding.instruction.md +20 -0
- package/guidelines/workspaceRecipes/workspaceRecipes.instruction.md +66 -3
- package/incrementalBuilder.proc.js +564 -109
- package/index-0wpybxtr.js +2729 -0
- package/{index-kcxmv48c.js → index-2ahj896a.js} +45 -79
- package/index-2wc41k5w.js +49 -0
- package/index-3hx1z96c.js +87 -0
- package/{index-2tv3fdx4.js → index-3w94e7n3.js} +1228 -1458
- package/{index-hwkygn9s.js → index-48k96p55.js} +325 -36
- package/index-4npz05nm.js +187 -0
- package/{index-q0y2jq9j.js → index-52w0fvh8.js} +21 -4
- package/index-6he6gvfg.js +4300 -0
- package/index-7md2g9vw.js +6 -0
- package/{index-04bk599g.js → index-93j60em0.js} +10 -17
- package/index-94s080qm.js +266 -0
- package/index-9dp031by.js +12 -0
- package/{index-ktb5njgy.js → index-9z771ptz.js} +49 -99
- package/{index-y6n8nmny.js → index-abxpehf8.js} +75 -203
- package/{index-3d9y066c.js → index-bjwxs904.js} +9 -8
- package/{index-9077wzd2.js → index-by9pxkr0.js} +43 -26
- package/index-c6eggbee.js +123 -0
- package/index-d2242ksy.js +99 -0
- package/index-drehwpdt.js +1119 -0
- package/{index-92zztqy1.js → index-dy0jx9ay.js} +2 -17
- package/{index-ffvk10zz.js → index-f3c78nd6.js} +107 -241
- package/index-gbggbqcp.js +1058 -0
- package/{index-by5gpp8x.js → index-hj6w4ka1.js} +2 -1
- package/index-hsmtysz4.js +53 -0
- package/{index-j9yhg404.js → index-jmrn54tt.js} +4 -7
- package/{index-a64esmtb.js → index-kcdj1z5v.js} +523 -1022
- package/{index-d43r08tf.js → index-kqabytj7.js} +77 -150
- package/{index-vyvre9en.js → index-mbxbhay5.js} +6 -2
- package/{index-vxtad5bd.js → index-mgxpx3f2.js} +5 -8
- package/index-p6pbz9n5.js +25 -0
- package/{index-sj5vxr8f.js → index-p993efkq.js} +981 -897
- package/{index-2xp0kfkt.js → index-pmhqttv3.js} +37 -25
- package/index-tqm7jjcn.js +700 -0
- package/{index-0g7r8xz3.js → index-vpj42xwt.js} +114 -232
- package/index-wa5jbxj1.js +760 -0
- package/{index-k2j1hc4r.js → index-wprnsjms.js} +12 -12
- package/{index-gyd220p2.js → index-y3mphr1m.js} +554 -577
- package/index-yg7jhz8x.js +69 -0
- package/{index-h7yw2z9n.js → index-zzvvc845.js} +8 -14
- package/index.js +23 -22
- package/{library.command-qzzbj6d8.js → library.command-9h749a1x.js} +4 -5
- package/{localRegistry.command-vyrgg4xw.js → localRegistry.command-2bqqhxyz.js} +23 -43
- package/{module.command-rq5hq3ax.js → module.command-nv8nzgft.js} +8 -12
- package/{package.command-d9hd6v9n.js → package.command-mq4bggp6.js} +6 -7
- package/package.json +15 -7
- package/{page.command-126d56te.js → page.command-j639n707.js} +4 -5
- package/{primitive.command-taxd1538.js → primitive.command-kz6849th.js} +9 -23
- package/prompter-76k56b37.js +8 -0
- package/{quality.command-6gsna0a3.js → quality.command-4hyabwkb.js} +205 -377
- package/{recipeScanner-fpagtgc1.js → recipeScanner-4b69ybe0.js} +1 -1
- package/{repair.command-tq2dgy72.js → repair.command-a9awpbqr.js} +11 -35
- package/{routeSourceValidator-apyqw7wk.js → routeSourceValidator-7ycnfz0e.js} +0 -6
- package/{scalar.command-3bcmrrkv.js → scalar.command-ma4fpm9m.js} +7 -11
- package/skills/akan-code/SKILL.md +130 -0
- package/skills/akan-debug/SKILL.md +42 -0
- package/skills/akan-deps/SKILL.md +50 -0
- package/skills/akan-err/SKILL.md +39 -0
- package/skills/akan-module/SKILL.md +45 -0
- package/skills/akan-scaffold/SKILL.md +76 -0
- package/skills/akan-scalar/SKILL.md +52 -0
- package/skills/akan-service/SKILL.md +34 -0
- package/skills/akan-store/SKILL.md +67 -0
- package/skills/akan-ui/SKILL.md +63 -0
- package/skills/akan-validate/SKILL.md +44 -0
- package/{subspace.command-eddzqpx3.js → subspace.command-3k2pmrs4.js} +53 -62
- package/templates/__scalar/__model__/__model__.abstract.md.template +8 -0
- package/templates/app/page/_index.tsx +257 -258
- package/templates/app/page/_layout.tsx +5 -1
- package/templates/app/page/_overrides.tsx +12 -0
- package/templates/app/page/styles.css.template +316 -14
- package/templates/app/public/apple-touch-icon.png +0 -0
- package/templates/app/public/favicon.ico +0 -0
- package/templates/app/public/jelly/cloud.webp +0 -0
- package/templates/app/public/jelly/comet.webp +0 -0
- package/templates/app/public/jelly/moon.webp +0 -0
- package/templates/app/public/jelly/planet.webp +0 -0
- package/templates/app/public/jelly/rocket.webp +0 -0
- package/templates/app/public/jelly/star.webp +0 -0
- package/templates/app/public/jelly/sugar.webp +0 -0
- package/templates/app/public/logo.png +0 -0
- package/templates/app/ui/Recipe/index.ts +9 -0
- package/templates/app/ui/Recipe/jellyButton.ts +63 -0
- package/templates/appSample/lib/__scalar/workHistory/workHistory.abstract.ts +8 -39
- package/templates/appSample/lib/_noti/noti.abstract.ts +6 -29
- package/templates/appSample/lib/task/Task.Unit.tsx +1 -1
- package/templates/appSample/lib/task/Task.Util.tsx +10 -13
- package/templates/appSample/lib/task/Task.View.tsx +2 -2
- package/templates/appSample/lib/task/Task.Zone.tsx +5 -2
- package/templates/appSample/lib/task/task.abstract.ts +12 -32
- package/templates/appSample/lib/task/task.signal.spec.ts +1 -15
- package/templates/appSample/lib/task/task.signal.test.ts +15 -1
- package/templates/appSample/lib/task/task.signal.ts +10 -8
- package/templates/appSample/page/task/[taskId]/_index.tsx +6 -6
- package/templates/appSample/page/task/[taskId]/edit.tsx +5 -4
- package/templates/appSample/page/task/_index.tsx +4 -3
- package/templates/appSample/page/task/_layout.tsx +1 -1
- package/templates/appSample/page/task/new.tsx +5 -4
- package/templates/appSample/srvkit/{AuthGuard.ts → guards.ts} +7 -4
- package/templates/appSample/srvkit/{SessionInternalArg.ts → internalArgs.ts} +6 -4
- package/templates/appSample/ui/GlobalLoading.tsx +2 -1
- package/templates/appSample/ui/QuantityControl.tsx +3 -3
- package/templates/client.ts +7 -30
- package/templates/crudPages/[__model__Id]/edit/page.tsx +2 -1
- package/templates/crudPages/[__model__Id]/page.tsx +2 -1
- package/templates/crudPages/new/page.tsx +2 -1
- package/templates/crudPages/page.tsx +2 -1
- package/templates/crudSinglePage/page.tsx +2 -1
- package/templates/lib/__lib/lib.dictionary.ts +0 -2
- package/templates/lib/__lib/lib.document.ts +0 -2
- package/templates/lib/sig.ts +8 -30
- package/templates/localDev/docker-compose.yaml.template +3 -14
- package/templates/module/__model__.signal.ts +12 -4
- package/templates/pkgRoot/tsconfig.json.template +2 -7
- package/templates/server.ts +1 -3
- package/templates/service/__model__.abstract.md.template +8 -0
- package/templates/workspaceRoot/.gitignore.template +0 -1
- package/templates/workspaceRoot/AGENTS.md.template +6 -0
- package/templates/workspaceRoot/package.json.template +1 -3
- package/tunnel.command-xwr46b66.js +129 -0
- package/{typeChecker-3xgrzc2v.js → typeChecker-px49mezc.js} +1 -1
- package/typecheck.proc.js +1 -1
- package/workflow.command-t7wqe4h7.js +79 -0
- package/{workspace.command-06wvstgr.js → workspace.command-4derhzrh.js} +79 -109
- package/abstractCompactor-gmkc0z8j.js +0 -102
- package/application.command-18y0s485.js +0 -204
- package/applicationReleasePackager-4yasxwv9.js +0 -244
- package/capacitorApp-36rbr858.js +0 -12
- package/cloud.command-av97ndh6.js +0 -94
- package/cloud.script-cm11xjdz.js +0 -20
- package/context.command-5v37ef3n.js +0 -81
- package/devTuiView-0hc2emhe.js +0 -9
- package/getDirname-dr3jz1xg.js +0 -7
- package/guideline.command-4pz9g1rt.js +0 -360
- package/guidelines/agentRule/agentRule.generate.json +0 -31
- package/guidelines/componentRule/componentRule.generate.json +0 -31
- package/guidelines/conventions/conventions.generate.json +0 -25
- package/guidelines/cssRule/cssRule.generate.json +0 -31
- package/guidelines/docPageRule/docPageRule.generate.json +0 -31
- package/guidelines/docPageRule/docPageRule.instruction.md +0 -25
- package/guidelines/docSyncRule/docSyncRule.generate.json +0 -31
- package/guidelines/docSyncRule/docSyncRule.instruction.md +0 -25
- package/guidelines/enumConstant/enumConstant.generate.json +0 -31
- package/guidelines/enumConstant/enumConstant.instruction.md +0 -28
- package/guidelines/fieldRule/fieldRule.generate.json +0 -31
- package/guidelines/framework/framework.generate.json +0 -32
- package/guidelines/mcpRule/mcpRule.generate.json +0 -35
- package/guidelines/modelConstant/modelConstant.generate.json +0 -32
- package/guidelines/modelDictionary/modelDictionary.generate.json +0 -32
- package/guidelines/modelDocument/modelDocument.generate.json +0 -31
- package/guidelines/modelService/modelService.generate.json +0 -31
- package/guidelines/modelSignal/modelSignal.generate.json +0 -31
- package/guidelines/modelStore/modelStore.generate.json +0 -31
- package/guidelines/modelTemplate/modelTemplate.generate.json +0 -31
- package/guidelines/modelUnit/modelUnit.generate.json +0 -31
- package/guidelines/modelUtil/modelUtil.generate.json +0 -31
- package/guidelines/modelView/modelView.generate.json +0 -31
- package/guidelines/modelZone/modelZone.generate.json +0 -31
- package/guidelines/moduleCodegen/moduleCodegen.generate.json +0 -31
- package/guidelines/moduleCodegen/moduleCodegen.instruction.md +0 -28
- package/guidelines/moduleOverview/moduleOverview.generate.json +0 -31
- package/guidelines/queryRule/queryRule.generate.json +0 -31
- package/guidelines/recipeRule/recipeRule.generate.json +0 -31
- package/guidelines/runtimeRule/runtimeRule.generate.json +0 -25
- package/guidelines/scalarConstant/scalarConstant.generate.json +0 -32
- package/guidelines/scalarDictionary/scalarDictionary.generate.json +0 -32
- package/guidelines/scalarModule/scalarModule.generate.json +0 -31
- package/guidelines/sharedUiUsage/sharedUiUsage.generate.json +0 -31
- package/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +0 -25
- package/guidelines/ssrRule/ssrRule.generate.json +0 -31
- package/guidelines/transportRule/transportRule.generate.json +0 -31
- package/guidelines/utilUiUsage/utilUiUsage.generate.json +0 -31
- package/guidelines/utilUiUsage/utilUiUsage.instruction.md +0 -25
- package/guidelines/workspaceOnboarding/workspaceOnboarding.generate.json +0 -24
- package/guidelines/workspaceRecipes/workspaceRecipes.generate.json +0 -33
- package/index-47pj3aee.js +0 -76
- package/index-5ystnsd5.js +0 -841
- package/index-6wwzs1bc.js +0 -7
- package/index-a17x49vg.js +0 -229
- package/index-m0xccmmm.js +0 -228
- package/index-meh558jy.js +0 -65
- package/index-rtxxan88.js +0 -471
- package/index-te54x9zm.js +0 -338
- package/index-w8kmx1b6.js +0 -2176
- package/index-wt7qrtd4.js +0 -1516
- package/templates/__scalar/__model__/__model__.abstract.md +0 -28
- package/templates/module/__model__.abstract.md +0 -28
- package/templates/service/__model__.abstract.md +0 -28
- package/templates/workspaceRoot/patches/react-dom@19.2.7.patch.template +0 -62
- package/workflow.command-gtdnzvbz.js +0 -108
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
jsonText
|
|
4
|
+
} from "./index-y3mphr1m.js";
|
|
5
|
+
import {
|
|
6
|
+
akanMcpInstallTargets
|
|
7
|
+
} from "./index-9z771ptz.js";
|
|
8
|
+
import {
|
|
9
|
+
script
|
|
10
|
+
} from "./index-vpj42xwt.js";
|
|
11
|
+
import {
|
|
12
|
+
ContextRunner2
|
|
13
|
+
} from "./index-abxpehf8.js";
|
|
14
|
+
|
|
15
|
+
// pkgs/@akanjs/cli/context/context.script.ts
|
|
16
|
+
import { Logger } from "akanjs/common";
|
|
17
|
+
var resolveMcpInstallTargets = (target) => {
|
|
18
|
+
if (!target || target === "all")
|
|
19
|
+
return [...akanMcpInstallTargets];
|
|
20
|
+
if (akanMcpInstallTargets.includes(target))
|
|
21
|
+
return [target];
|
|
22
|
+
throw new Error(`Unknown MCP install target: ${target}. Use cursor, claude, codex, or all.`);
|
|
23
|
+
};
|
|
24
|
+
var mcpTargetLabels = {
|
|
25
|
+
cursor: "Cursor",
|
|
26
|
+
claude: "Claude Code",
|
|
27
|
+
codex: "Codex"
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
class ContextScript extends script("context", [ContextRunner2]) {
|
|
31
|
+
async context(workspace, options = {}) {
|
|
32
|
+
Logger.rawLog(await this.contextRunner.getContext(workspace, options));
|
|
33
|
+
}
|
|
34
|
+
async doctor(workspace, options = {}) {
|
|
35
|
+
Logger.rawLog(await this.contextRunner.doctor(workspace, options));
|
|
36
|
+
}
|
|
37
|
+
async mcpInstall(workspace, target, { force = false, mode = "apply" } = {}) {
|
|
38
|
+
const targets = resolveMcpInstallTargets(target);
|
|
39
|
+
const written = [];
|
|
40
|
+
for (const t of targets) {
|
|
41
|
+
const configPath = await this.contextRunner.installMcp(workspace, t, { force, mode });
|
|
42
|
+
written.push(`${mcpTargetLabels[t]}: ${configPath}`);
|
|
43
|
+
}
|
|
44
|
+
Logger.rawLog(`Akan MCP server installed (${mode} mode):
|
|
45
|
+
${written.map((line) => `- ${line}`).join(`
|
|
46
|
+
`)}`);
|
|
47
|
+
}
|
|
48
|
+
async mcp(workspace, { mode = "apply" } = {}) {
|
|
49
|
+
await this.contextRunner.runMcp(workspace, { mode });
|
|
50
|
+
}
|
|
51
|
+
async mcpCall(workspace, tool, {
|
|
52
|
+
mode = "readonly",
|
|
53
|
+
args = null,
|
|
54
|
+
format = "json"
|
|
55
|
+
} = {}) {
|
|
56
|
+
let parsedArgs = {};
|
|
57
|
+
if (args) {
|
|
58
|
+
const parsed = JSON.parse(args);
|
|
59
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
60
|
+
throw new Error("MCP call args must be a JSON object.");
|
|
61
|
+
}
|
|
62
|
+
parsedArgs = parsed;
|
|
63
|
+
}
|
|
64
|
+
const result = await this.contextRunner.callMcpTool(workspace, tool, parsedArgs, { mode });
|
|
65
|
+
Logger.rawLog(format === "json" ? jsonText(result) : String(result));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export { ContextScript };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
getDirname2
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-52w0fvh8.js";
|
|
5
5
|
|
|
6
6
|
// pkgs/@akanjs/devkit/prompter.ts
|
|
7
7
|
import fsPromise from "fs/promises";
|
|
8
8
|
import { input, select } from "@inquirer/prompts";
|
|
9
|
-
class
|
|
9
|
+
class Prompter2 {
|
|
10
10
|
static async#getGuidelineRoot() {
|
|
11
11
|
const dirname = getDirname2(import.meta.url);
|
|
12
12
|
const candidates = [`${dirname}/guidelines`, `${dirname}/../cli/guidelines`];
|
|
@@ -19,27 +19,21 @@ class Prompter {
|
|
|
19
19
|
return candidates[0];
|
|
20
20
|
}
|
|
21
21
|
static async selectGuideline() {
|
|
22
|
-
const guideNames = await
|
|
22
|
+
const guideNames = await Prompter2.listGuidelines();
|
|
23
23
|
return await select({
|
|
24
24
|
message: "Select a guideline",
|
|
25
25
|
choices: guideNames.map((name) => ({ name, value: name }))
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
28
|
static async listGuidelines() {
|
|
29
|
-
const guidelineRoot = await
|
|
29
|
+
const guidelineRoot = await Prompter2.#getGuidelineRoot();
|
|
30
30
|
return (await fsPromise.readdir(guidelineRoot)).filter((name) => !name.startsWith("_")).sort();
|
|
31
31
|
}
|
|
32
|
-
static async getGuideJson(guideName) {
|
|
33
|
-
const guidelineRoot = await Prompter.#getGuidelineRoot();
|
|
34
|
-
const filePath = `${guidelineRoot}/${guideName}/${guideName}.generate.json`;
|
|
35
|
-
const guideJson = await fsPromise.readFile(filePath, "utf-8");
|
|
36
|
-
return JSON.parse(guideJson);
|
|
37
|
-
}
|
|
38
32
|
static async getInstruction(guideName) {
|
|
39
|
-
const guideNames = await
|
|
33
|
+
const guideNames = await Prompter2.listGuidelines();
|
|
40
34
|
if (!guideNames.includes(guideName))
|
|
41
35
|
throw new Error(`Unknown guideline "${guideName}". Available: ${guideNames.join(", ")}`);
|
|
42
|
-
const guidelineRoot = await
|
|
36
|
+
const guidelineRoot = await Prompter2.#getGuidelineRoot();
|
|
43
37
|
return await fsPromise.readFile(`${guidelineRoot}/${guideName}/${guideName}.instruction.md`, "utf-8");
|
|
44
38
|
}
|
|
45
39
|
static async getUpdateRequest(guideName) {
|
|
@@ -67,7 +61,7 @@ ${request}
|
|
|
67
61
|
`;
|
|
68
62
|
}
|
|
69
63
|
async getDocumentation(guideName) {
|
|
70
|
-
const guidelineRoot = await
|
|
64
|
+
const guidelineRoot = await Prompter2.#getGuidelineRoot();
|
|
71
65
|
const filePath = `${guidelineRoot}/${guideName}/${guideName}.instruction.md`;
|
|
72
66
|
const document = await fsPromise.readFile(filePath, "utf-8");
|
|
73
67
|
return `\`\`\`markdown
|
|
@@ -77,4 +71,4 @@ ${document}
|
|
|
77
71
|
}
|
|
78
72
|
}
|
|
79
73
|
|
|
80
|
-
export {
|
|
74
|
+
export { Prompter2 };
|
package/index.js
CHANGED
|
@@ -4,33 +4,34 @@ import {
|
|
|
4
4
|
getTargetMetas,
|
|
5
5
|
getTargetCommandNames,
|
|
6
6
|
runCommands
|
|
7
|
-
} from "./index-
|
|
8
|
-
import"./index-
|
|
9
|
-
import"./index-
|
|
10
|
-
import"./index-6wwzs1bc.js";
|
|
7
|
+
} from "./index-vpj42xwt.js";
|
|
8
|
+
import"./index-52w0fvh8.js";
|
|
9
|
+
import"./index-3w94e7n3.js";
|
|
11
10
|
|
|
12
11
|
// pkgs/@akanjs/cli/commandManifest.ts
|
|
13
12
|
import path from "path";
|
|
14
13
|
|
|
15
14
|
// pkgs/@akanjs/cli/commandModules.ts
|
|
16
15
|
var commandModules = {
|
|
17
|
-
workspace: async () => (await import("./workspace.command-
|
|
18
|
-
agent: async () => (await import("./agent.command-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
16
|
+
workspace: async () => (await import("./workspace.command-4derhzrh.js")).WorkspaceCommand,
|
|
17
|
+
agent: async () => (await import("./agent.command-gn73rhe7.js")).AgentCommand,
|
|
18
|
+
code: async () => (await import("./code.command-18kcm7hq.js")).CodeCommand,
|
|
19
|
+
application: async () => (await import("./application.command-e968t0hw.js")).ApplicationCommand,
|
|
20
|
+
library: async () => (await import("./library.command-9h749a1x.js")).LibraryCommand,
|
|
21
|
+
localRegistry: async () => (await import("./localRegistry.command-2bqqhxyz.js")).LocalRegistryCommand,
|
|
22
|
+
package: async () => (await import("./package.command-mq4bggp6.js")).PackageCommand,
|
|
23
|
+
module: async () => (await import("./module.command-nv8nzgft.js")).ModuleCommand,
|
|
24
|
+
page: async () => (await import("./page.command-j639n707.js")).PageCommand,
|
|
25
|
+
context: async () => (await import("./context.command-trd9bn18.js")).ContextCommand,
|
|
26
|
+
cloud: async () => (await import("./cloud.command-0jm301rr.js")).CloudCommand,
|
|
27
|
+
subspace: async () => (await import("./subspace.command-3k2pmrs4.js")).SubspaceCommand,
|
|
28
|
+
guideline: async () => (await import("./guideline.command-bdmdn2de.js")).GuidelineCommand,
|
|
29
|
+
scalar: async () => (await import("./scalar.command-ma4fpm9m.js")).ScalarCommand,
|
|
30
|
+
primitive: async () => (await import("./primitive.command-kz6849th.js")).PrimitiveCommand,
|
|
31
|
+
quality: async () => (await import("./quality.command-4hyabwkb.js")).QualityCommand,
|
|
32
|
+
repair: async () => (await import("./repair.command-a9awpbqr.js")).RepairCommand,
|
|
33
|
+
workflow: async () => (await import("./workflow.command-t7wqe4h7.js")).WorkflowCommand,
|
|
34
|
+
tunnel: async () => (await import("./tunnel.command-xwr46b66.js")).TunnelCommand
|
|
34
35
|
};
|
|
35
36
|
var commandModuleIds = Object.keys(commandModules);
|
|
36
37
|
|
|
@@ -68,4 +69,4 @@ class CommandManifest {
|
|
|
68
69
|
// pkgs/@akanjs/cli/index.ts
|
|
69
70
|
var ids = CommandManifest.resolve(await CommandManifest.read(), process.argv) ?? commandModuleIds;
|
|
70
71
|
var commands = await Promise.all(ids.map(async (id) => await commandModules[id]()));
|
|
71
|
-
runCommands(...commands);
|
|
72
|
+
await runCommands(...commands);
|
|
@@ -3,13 +3,12 @@ import {
|
|
|
3
3
|
Lib,
|
|
4
4
|
Workspace,
|
|
5
5
|
command
|
|
6
|
-
} from "./index-
|
|
7
|
-
import"./index-
|
|
8
|
-
import"./index-
|
|
9
|
-
import"./index-6wwzs1bc.js";
|
|
6
|
+
} from "./index-vpj42xwt.js";
|
|
7
|
+
import"./index-52w0fvh8.js";
|
|
8
|
+
import"./index-3w94e7n3.js";
|
|
10
9
|
import {
|
|
11
10
|
LibraryScript
|
|
12
|
-
} from "./index-
|
|
11
|
+
} from "./index-mgxpx3f2.js";
|
|
13
12
|
|
|
14
13
|
// pkgs/@akanjs/cli/library/library.command.ts
|
|
15
14
|
class LibraryCommand extends command("library", [LibraryScript], ({ public: target }) => ({
|
|
@@ -4,28 +4,28 @@ import {
|
|
|
4
4
|
runner,
|
|
5
5
|
script,
|
|
6
6
|
command
|
|
7
|
-
} from "./index-
|
|
8
|
-
import"./index-
|
|
7
|
+
} from "./index-vpj42xwt.js";
|
|
8
|
+
import"./index-52w0fvh8.js";
|
|
9
9
|
import {
|
|
10
10
|
PkgExecutor
|
|
11
|
-
} from "./index-
|
|
12
|
-
import"./index-
|
|
11
|
+
} from "./index-3w94e7n3.js";
|
|
12
|
+
import"./index-48k96p55.js";
|
|
13
|
+
import"./index-gbggbqcp.js";
|
|
14
|
+
import"./index-mgxpx3f2.js";
|
|
13
15
|
import {
|
|
14
16
|
ApplicationScript
|
|
15
|
-
} from "./index-
|
|
16
|
-
import"./index-
|
|
17
|
-
import"./index-
|
|
18
|
-
import"./index-m0xccmmm.js";
|
|
19
|
-
import"./index-te54x9zm.js";
|
|
17
|
+
} from "./index-p993efkq.js";
|
|
18
|
+
import"./index-7md2g9vw.js";
|
|
19
|
+
import"./index-94s080qm.js";
|
|
20
20
|
import {
|
|
21
21
|
getNpmRegistryUrl,
|
|
22
22
|
CloudRunner
|
|
23
|
-
} from "./index-
|
|
24
|
-
import"./index-
|
|
23
|
+
} from "./index-drehwpdt.js";
|
|
24
|
+
import"./index-2ahj896a.js";
|
|
25
25
|
import {
|
|
26
26
|
PackageScript
|
|
27
|
-
} from "./index-
|
|
28
|
-
import"./index-
|
|
27
|
+
} from "./index-by9pxkr0.js";
|
|
28
|
+
import"./index-jmrn54tt.js";
|
|
29
29
|
|
|
30
30
|
// pkgs/@akanjs/cli/localRegistry/localRegistry.runner.ts
|
|
31
31
|
import { mkdir, rm } from "fs/promises";
|
|
@@ -78,6 +78,7 @@ class LocalRegistryRunner extends runner("localRegistry") {
|
|
|
78
78
|
const registry = this.getRegistryUrl(registryUrl);
|
|
79
79
|
const smokeRoot = path.join(workspace.workspaceRoot, ".akan/e2e");
|
|
80
80
|
await rm(path.join(smokeRoot, smokeRepoName), { recursive: true, force: true });
|
|
81
|
+
const env = { ...process.env, AKAN_NPM_REGISTRY: registry, NPM_CONFIG_REGISTRY: registry };
|
|
81
82
|
await workspace.spawn(process.execPath, [
|
|
82
83
|
"dist/pkgs/create-akan-workspace/index.js",
|
|
83
84
|
smokeRepoName,
|
|
@@ -89,20 +90,13 @@ class LocalRegistryRunner extends runner("localRegistry") {
|
|
|
89
90
|
"true",
|
|
90
91
|
"--registry",
|
|
91
92
|
registry
|
|
92
|
-
], {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
stdio: "inherit"
|
|
100
|
-
});
|
|
101
|
-
await workspace.spawn("akan", ["build", smokeAppName], {
|
|
102
|
-
cwd: path.join(smokeRoot, smokeRepoName),
|
|
103
|
-
env: { ...process.env, AKAN_NPM_REGISTRY: registry, NPM_CONFIG_REGISTRY: registry },
|
|
104
|
-
stdio: "inherit"
|
|
105
|
-
});
|
|
93
|
+
], { env, stdio: "inherit" });
|
|
94
|
+
for (const command of ["typecheck", "build"])
|
|
95
|
+
await workspace.spawn("akan", [command, smokeAppName], {
|
|
96
|
+
cwd: path.join(smokeRoot, smokeRepoName),
|
|
97
|
+
env,
|
|
98
|
+
stdio: "inherit"
|
|
99
|
+
});
|
|
106
100
|
Logger.info(`Local registry smoke test completed for ${smokeRepoName}/${smokeAppName}`);
|
|
107
101
|
}
|
|
108
102
|
}
|
|
@@ -128,11 +122,7 @@ class LocalRegistryScript extends script("localRegistry", [
|
|
|
128
122
|
const registry = await this.localRegistryRunner.start(workspace, { registryUrl });
|
|
129
123
|
const akanPkgs = await this.cloudRunner.getAkanPkgs(workspace);
|
|
130
124
|
await this.#preparePackages(workspace, akanPkgs, { test });
|
|
131
|
-
await this.cloudRunner.deployAkan(workspace, akanPkgs, {
|
|
132
|
-
registryUrl: registry,
|
|
133
|
-
confirmPublish: false,
|
|
134
|
-
tag
|
|
135
|
-
});
|
|
125
|
+
await this.cloudRunner.deployAkan(workspace, akanPkgs, { registryUrl: registry, confirmPublish: false, tag });
|
|
136
126
|
await this.localRegistryRunner.smoke(workspace, { registryUrl: registry });
|
|
137
127
|
}
|
|
138
128
|
async#preparePackages(workspace, akanPkgs, { test = true } = {}) {
|
|
@@ -158,17 +148,7 @@ class LocalRegistryCommand extends command("local-registry", [LocalRegistryScrip
|
|
|
158
148
|
resetRegistry: target({ devOnly: true, desc: "Stop and clear the local Verdaccio npm registry" }).with(Workspace).exec(async function(workspace) {
|
|
159
149
|
await this.localRegistryScript.reset(workspace);
|
|
160
150
|
}),
|
|
161
|
-
smokeRegistry: target({ devOnly: true, desc: "Publish to local registry and build a generated workspace" }).with(Workspace).option("tag", String, {
|
|
162
|
-
flag: "g",
|
|
163
|
-
desc: "dist-tag for local registry publish",
|
|
164
|
-
default: "rc"
|
|
165
|
-
}).option("test", Boolean, {
|
|
166
|
-
desc: "run package tests before publishing",
|
|
167
|
-
default: true
|
|
168
|
-
}).option("registry", String, {
|
|
169
|
-
desc: "local npm registry URL",
|
|
170
|
-
default: process.env.AKAN_NPM_REGISTRY
|
|
171
|
-
}).exec(async function(workspace, tag, test, registry) {
|
|
151
|
+
smokeRegistry: target({ devOnly: true, desc: "Publish to local registry and build a generated workspace" }).with(Workspace).option("tag", String, { flag: "g", desc: "dist-tag for local registry publish", default: "rc" }).option("test", Boolean, { desc: "run package tests before publishing", default: true }).option("registry", String, { desc: "local npm registry URL", default: process.env.AKAN_NPM_REGISTRY }).exec(async function(workspace, tag, test, registry) {
|
|
172
152
|
await this.localRegistryScript.smoke(workspace, { tag, test, registryUrl: registry });
|
|
173
153
|
})
|
|
174
154
|
})) {
|
|
@@ -3,27 +3,23 @@ import {
|
|
|
3
3
|
Sys,
|
|
4
4
|
Module,
|
|
5
5
|
command
|
|
6
|
-
} from "./index-
|
|
7
|
-
import"./index-
|
|
8
|
-
import"./index-
|
|
9
|
-
import"./index-6wwzs1bc.js";
|
|
6
|
+
} from "./index-vpj42xwt.js";
|
|
7
|
+
import"./index-52w0fvh8.js";
|
|
8
|
+
import"./index-3w94e7n3.js";
|
|
10
9
|
import {
|
|
11
10
|
renderPrimitiveReport
|
|
12
|
-
} from "./index-
|
|
13
|
-
import"./index-
|
|
14
|
-
import"./index-te54x9zm.js";
|
|
11
|
+
} from "./index-y3mphr1m.js";
|
|
12
|
+
import"./index-mbxbhay5.js";
|
|
15
13
|
import {
|
|
16
14
|
ModuleScript
|
|
17
|
-
} from "./index-
|
|
18
|
-
import"./index-vyvre9en.js";
|
|
19
|
-
import"./index-h7yw2z9n.js";
|
|
15
|
+
} from "./index-4npz05nm.js";
|
|
20
16
|
|
|
21
17
|
// pkgs/@akanjs/cli/module/module.command.ts
|
|
22
18
|
import { Logger, lowerlize } from "akanjs/common";
|
|
23
19
|
class ModuleCommand extends command("module", [ModuleScript], ({ public: target }) => ({
|
|
24
|
-
createModule: target({ desc: "Create a new domain module (constant, service, signal, store, UI)" }).arg("moduleName", String, { desc: "name of module" }).with(Sys).option("page", Boolean, { desc: "create page", default: false }).option("
|
|
20
|
+
createModule: target({ desc: "Create a new domain module (constant, service, signal, store, UI)" }).arg("moduleName", String, { desc: "name of module" }).with(Sys).option("page", Boolean, { desc: "create page", default: false }).option("format", String, { flag: "o", desc: "output format", default: "markdown", enum: ["markdown", "json"] }).exec(async function(moduleName, sys, page, format) {
|
|
25
21
|
const name = lowerlize(moduleName.replace(/ /g, ""));
|
|
26
|
-
const report =
|
|
22
|
+
const report = await this.moduleScript.createModuleTemplate(sys, name, { page });
|
|
27
23
|
Logger.rawLog(renderPrimitiveReport(report, format));
|
|
28
24
|
}),
|
|
29
25
|
removeModule: target({ desc: "Remove a module from an app or library" }).with(Module).exec(async function(module) {
|
|
@@ -3,21 +3,20 @@ import {
|
|
|
3
3
|
Pkg,
|
|
4
4
|
Workspace,
|
|
5
5
|
command
|
|
6
|
-
} from "./index-
|
|
7
|
-
import"./index-
|
|
8
|
-
import"./index-
|
|
9
|
-
import"./index-
|
|
10
|
-
import"./index-kcxmv48c.js";
|
|
6
|
+
} from "./index-vpj42xwt.js";
|
|
7
|
+
import"./index-52w0fvh8.js";
|
|
8
|
+
import"./index-3w94e7n3.js";
|
|
9
|
+
import"./index-2ahj896a.js";
|
|
11
10
|
import {
|
|
12
11
|
PackageScript
|
|
13
|
-
} from "./index-
|
|
12
|
+
} from "./index-by9pxkr0.js";
|
|
14
13
|
|
|
15
14
|
// pkgs/@akanjs/cli/package/package.command.ts
|
|
16
15
|
class PackageCommand extends command("package", [PackageScript], ({ public: target }) => ({
|
|
17
16
|
version: target({ desc: "Show version information for all packages" }).with(Workspace).exec(async function(workspace) {
|
|
18
17
|
await this.packageScript.version(workspace);
|
|
19
18
|
}),
|
|
20
|
-
createPackage: target({ desc: "Create a new package in pkgs
|
|
19
|
+
createPackage: target({ desc: "Create a new package in pkgs/<name>/" }).option("name", String, { desc: "name of package" }).with(Workspace).exec(async function(name, workspace) {
|
|
21
20
|
await this.packageScript.createPackage(workspace, name.toLowerCase().replace(/ /g, "-"));
|
|
22
21
|
}),
|
|
23
22
|
removePackage: target({ desc: "Remove a package from the workspace" }).with(Pkg).exec(async function(pkg) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akanjs/cli",
|
|
3
|
-
"version": "3.0.0
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"sourceType": "module",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -24,16 +24,22 @@
|
|
|
24
24
|
"import": "./index.js",
|
|
25
25
|
"default": "./index.js"
|
|
26
26
|
},
|
|
27
|
+
"./code": {
|
|
28
|
+
"import": "./akanCode.js",
|
|
29
|
+
"default": "./akanCode.js"
|
|
30
|
+
},
|
|
27
31
|
"./package.json": "./package.json"
|
|
28
32
|
},
|
|
29
33
|
"dependencies": {
|
|
34
|
+
"@earendil-works/chord": "0.86.1",
|
|
35
|
+
"@earendil-works/pi-agent-core": "0.86.1",
|
|
36
|
+
"@earendil-works/pi-ai": "0.86.1",
|
|
37
|
+
"@earendil-works/pi-coding-agent": "0.86.1",
|
|
38
|
+
"@earendil-works/pi-telemetry": "0.86.1",
|
|
39
|
+
"@earendil-works/pi-tui": "0.86.1",
|
|
30
40
|
"@inquirer/prompts": "^8.4.3",
|
|
31
|
-
"@langchain/core": "^1.1.47",
|
|
32
|
-
"@langchain/deepseek": "^1.0.26",
|
|
33
|
-
"@langchain/openai": "^1.4.6",
|
|
34
41
|
"@tailwindcss/node": "^4.3.0",
|
|
35
|
-
"
|
|
36
|
-
"akanjs": "3.0.0-beta.9",
|
|
42
|
+
"akanjs": "3.0.0",
|
|
37
43
|
"chalk": "^5.6.2",
|
|
38
44
|
"commander": "^14.0.3",
|
|
39
45
|
"dayjs": "^1.11.20",
|
|
@@ -43,11 +49,13 @@
|
|
|
43
49
|
"ink": "^6.8.0",
|
|
44
50
|
"ora": "^9.4.0",
|
|
45
51
|
"qrcode": "^1.5.4",
|
|
46
|
-
"react": "19.
|
|
52
|
+
"react": "19.3.0",
|
|
47
53
|
"ssh2": "^1.17.0",
|
|
54
|
+
"string-width": "^8.2.1",
|
|
48
55
|
"subset-font": "^2.5.0",
|
|
49
56
|
"tailwind-scrollbar": "^4.0.2",
|
|
50
57
|
"tailwindcss": "^4.3.0",
|
|
58
|
+
"typebox": "1.1.38",
|
|
51
59
|
"typescript": "^6.0.3"
|
|
52
60
|
},
|
|
53
61
|
"devDependencies": {},
|
|
@@ -3,13 +3,12 @@ import {
|
|
|
3
3
|
App,
|
|
4
4
|
Module,
|
|
5
5
|
command
|
|
6
|
-
} from "./index-
|
|
7
|
-
import"./index-
|
|
8
|
-
import"./index-
|
|
9
|
-
import"./index-6wwzs1bc.js";
|
|
6
|
+
} from "./index-vpj42xwt.js";
|
|
7
|
+
import"./index-52w0fvh8.js";
|
|
8
|
+
import"./index-3w94e7n3.js";
|
|
10
9
|
import {
|
|
11
10
|
PageScript
|
|
12
|
-
} from "./index-
|
|
11
|
+
} from "./index-mbxbhay5.js";
|
|
13
12
|
|
|
14
13
|
// pkgs/@akanjs/cli/page/page.command.ts
|
|
15
14
|
class PageCommand extends command("page", [PageScript], ({ public: target }) => ({
|
|
@@ -2,21 +2,17 @@
|
|
|
2
2
|
import {
|
|
3
3
|
Workspace,
|
|
4
4
|
command
|
|
5
|
-
} from "./index-
|
|
6
|
-
import"./index-
|
|
7
|
-
import"./index-
|
|
8
|
-
import"./index-6wwzs1bc.js";
|
|
5
|
+
} from "./index-vpj42xwt.js";
|
|
6
|
+
import"./index-52w0fvh8.js";
|
|
7
|
+
import"./index-3w94e7n3.js";
|
|
9
8
|
import {
|
|
10
9
|
renderPrimitiveReport
|
|
11
|
-
} from "./index-
|
|
12
|
-
import"./index-
|
|
13
|
-
import"./index-
|
|
14
|
-
import"./index-5ystnsd5.js";
|
|
15
|
-
import"./index-vyvre9en.js";
|
|
16
|
-
import"./index-h7yw2z9n.js";
|
|
10
|
+
} from "./index-y3mphr1m.js";
|
|
11
|
+
import"./index-mbxbhay5.js";
|
|
12
|
+
import"./index-4npz05nm.js";
|
|
17
13
|
import {
|
|
18
14
|
PrimitiveScript
|
|
19
|
-
} from "./index-
|
|
15
|
+
} from "./index-kqabytj7.js";
|
|
20
16
|
|
|
21
17
|
// pkgs/@akanjs/cli/primitive/primitive.command.ts
|
|
22
18
|
import { Logger } from "akanjs/common";
|
|
@@ -27,11 +23,7 @@ class PrimitiveCommand extends command("primitive", [PrimitiveScript], ({ public
|
|
|
27
23
|
default: "template",
|
|
28
24
|
enum: ["view", "unit", "template"]
|
|
29
25
|
}).option("format", String, { flag: "o", desc: "output format", default: "markdown", enum: ["markdown", "json"] }).exec(async function(workspace, app, module, surface, format) {
|
|
30
|
-
const report = await this.primitiveScript.createUi(workspace, {
|
|
31
|
-
app,
|
|
32
|
-
module,
|
|
33
|
-
surface
|
|
34
|
-
});
|
|
26
|
+
const report = await this.primitiveScript.createUi(workspace, { app, module, surface });
|
|
35
27
|
Logger.rawLog(renderPrimitiveReport(report, format));
|
|
36
28
|
}),
|
|
37
29
|
addField: target({ desc: "Add a source-limited field to a module constant and dictionary" }).with(Workspace).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("default", String, { desc: "default value", nullable: true }).option("format", String, { flag: "o", desc: "output format", default: "markdown", enum: ["markdown", "json"] }).exec(async function(workspace, app, module, field, typeName, defaultValue, format) {
|
|
@@ -45,13 +37,7 @@ class PrimitiveCommand extends command("primitive", [PrimitiveScript], ({ public
|
|
|
45
37
|
Logger.rawLog(renderPrimitiveReport(report, format));
|
|
46
38
|
}),
|
|
47
39
|
addEnumField: target({ desc: "Add a source-limited enum field to a module constant and dictionary" }).with(Workspace).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("values", String, { flag: "l", desc: "comma-separated enum values", nullable: true }).option("default", String, { desc: "default value", nullable: true }).option("format", String, { flag: "o", desc: "output format", default: "markdown", enum: ["markdown", "json"] }).exec(async function(workspace, app, module, field, values, defaultValue, format) {
|
|
48
|
-
const report = await this.primitiveScript.addEnumField(workspace, {
|
|
49
|
-
app,
|
|
50
|
-
module,
|
|
51
|
-
field,
|
|
52
|
-
values,
|
|
53
|
-
defaultValue
|
|
54
|
-
});
|
|
40
|
+
const report = await this.primitiveScript.addEnumField(workspace, { app, module, field, values, defaultValue });
|
|
55
41
|
Logger.rawLog(renderPrimitiveReport(report, format));
|
|
56
42
|
})
|
|
57
43
|
})) {
|