@akanjs/cli 3.0.2 → 3.1.0-rc.1
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-szbjv4gv.js → CodeAgent-kyprmy06.js} +2 -2
- package/{CodeTui-5nw86ab6.js → CodeTui-21mtze3j.js} +1 -1
- package/{TunnelShare-cwh9ezsm.js → TunnelShare-q4jq08qg.js} +2 -2
- package/{agent.command-np1dffkb.js → agent.command-f3gsc1gd.js} +5 -5
- package/akanCode.js +2 -2
- package/{application.command-gk69v1xs.js → application.command-5s780vnz.js} +37 -15
- package/{applicationBuildRunner-wx09n9g6.js → applicationBuildRunner-1yaqsrdq.js} +115 -103
- package/buildBatch.proc.js +16 -5
- package/cloud.command-yj6xb2a7.js +192 -0
- package/cloud.script-h6pvcpa2.js +20 -0
- package/{code.command-hmtx14b2.js → code.command-3wkn4ja5.js} +6 -6
- package/commandManifest.json +1 -1
- package/{context.command-6aqvdx43.js → context.command-9jjn3gcw.js} +13 -13
- package/context.runner-atcrzz5b.js +21 -0
- package/{guideline.command-axvf68gc.js → guideline.command-dtczrqpf.js} +2 -2
- package/guidelines/agentRule/agentRule.instruction.md +10 -2
- package/guidelines/conventions/conventions.instruction.md +70 -25
- package/guidelines/cssRule/cssRule.instruction.md +19 -0
- package/guidelines/mcpRule/mcpRule.instruction.md +72 -12
- package/guidelines/queryRule/queryRule.instruction.md +11 -1
- package/guidelines/runtimeRule/runtimeRule.instruction.md +97 -16
- package/guidelines/ssrRule/ssrRule.instruction.md +10 -7
- package/guidelines/transportRule/transportRule.instruction.md +19 -0
- package/guidelines/workspaceRecipes/workspaceRecipes.instruction.md +6 -6
- package/incrementalBuilder.proc.js +24 -3
- package/{index-h9ht6s60.js → index-05g3jayg.js} +1 -1
- package/{index-jk9xnck6.js → index-1w2qaee2.js} +240 -133
- package/{index-g38nhv87.js → index-2etcv0sc.js} +1 -1
- package/{index-zyw622y1.js → index-2mx692qq.js} +3 -3
- package/{index-50wb2a26.js → index-55mynnqs.js} +354 -129
- package/{index-2wc41k5w.js → index-56d2g8ms.js} +2 -2
- package/{index-q6ft9fkc.js → index-6jjtnhkw.js} +8 -3
- package/index-6w0rbr9d.js +68 -0
- package/{index-hxnnfy57.js → index-8ggztp8k.js} +204 -8
- package/{index-zwd84m0w.js → index-8r4d7cmt.js} +4 -4
- package/{index-j38qkvkk.js → index-ae5pwhgs.js} +12 -10
- package/{index-gtjgnv36.js → index-aprt7pkz.js} +6 -9
- package/{index-1bjkfvm9.js → index-c1x0be5j.js} +2 -2
- package/{index-z750gk1j.js → index-c2yrsxdh.js} +13 -7
- package/{index-cb6yc5mb.js → index-c76k723e.js} +2 -2
- package/{index-6keyf4sg.js → index-ctanya41.js} +4 -4
- package/{index-f4e08ptp.js → index-e0cvze1s.js} +4 -4
- package/{index-hp3stk1m.js → index-fm46xrf1.js} +3 -3
- package/{index-3xmzr1p1.js → index-gnyf1fqy.js} +2 -2
- package/{index-nwd6qzvv.js → index-jx4bzvwg.js} +138 -55
- package/{index-jb0hmt3k.js → index-krq7btbt.js} +3 -3
- package/{index-94s080qm.js → index-pgj2rt78.js} +139 -1
- package/index-q958tqqg.js +77 -0
- package/{index-50jjwg8y.js → index-qt22xstj.js} +1 -1
- package/index-rc5rwyps.js +201 -0
- package/{index-xwprn9nr.js → index-rtct7d43.js} +1 -1
- package/{index-bsv901fd.js → index-rwq3ekqc.js} +7 -7
- package/{index-1gs9g12n.js → index-v29746vb.js} +4 -4
- package/index-ww9bhp67.js +62 -0
- package/index.js +22 -21
- package/{library.command-9m2rdwwz.js → library.command-gaga5bmq.js} +3 -3
- package/{localRegistry.command-kda81jyk.js → localRegistry.command-vsreyy42.js} +9 -9
- package/{module.command-q63dffya.js → module.command-7vpf6db4.js} +5 -5
- package/{package.command-y2jh0m99.js → package.command-twmvvf69.js} +3 -3
- package/package.json +2 -2
- package/{page.command-f3e4cwhh.js → page.command-5asq7fdf.js} +3 -3
- package/pipeline.command-d0v38572.js +1334 -0
- package/{primitive.command-r4kq75qj.js → primitive.command-dyrs2fm8.js} +6 -6
- package/projectTypecheck-cvtkrzp2.js +7 -0
- package/{quality.command-f7gzh26z.js → quality.command-6emsqpbg.js} +5 -4
- package/{repair.command-0qmyr6qa.js → repair.command-8t6aegv5.js} +5 -5
- package/{scalar.command-kddn7av4.js → scalar.command-bnggy1x7.js} +4 -4
- package/{subspace.command-ft65qvc4.js → subspace.command-md2teygq.js} +158 -91
- package/templates/app/env/env.client.type.ts +2 -3
- package/templates/app/page/styles.css.template +8 -0
- package/templates/appSample/page/task/[taskId]/_index.tsx +2 -2
- package/templates/appSample/page/task/[taskId]/edit.tsx +2 -2
- package/templates/appSample/page/task/_index.tsx +2 -2
- package/templates/crudPages/[__model__Id]/edit/page.tsx +2 -2
- package/templates/crudPages/[__model__Id]/page.tsx +3 -3
- package/templates/crudPages/page.tsx +2 -2
- package/templates/crudSinglePage/page.tsx +3 -3
- package/templates/lib/cnst.ts +2 -2
- package/templates/lib/sig.ts +3 -3
- package/{tunnel.command-b3ymdk4f.js → tunnel.command-jx3tdm2d.js} +16 -13
- package/{workflow.command-z1srcdfw.js → workflow.command-jx0wag5r.js} +10 -10
- package/{workspace.command-vp6vmx3z.js → workspace.command-yxd7rr7g.js} +57 -27
- package/cloud.command-tw06613r.js +0 -95
- package/cloud.script-64gzba8r.js +0 -20
- package/context.runner-hnkvv3z3.js +0 -21
- package/index-t91a7339.js +0 -104
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
GlobalConfig,
|
|
4
|
+
CloudApi
|
|
5
|
+
} from "./index-pgj2rt78.js";
|
|
6
|
+
import {
|
|
7
|
+
script
|
|
8
|
+
} from "./index-6jjtnhkw.js";
|
|
9
|
+
import {
|
|
10
|
+
PkgExecutor
|
|
11
|
+
} from "./index-55mynnqs.js";
|
|
12
|
+
import {
|
|
13
|
+
NativeApp
|
|
14
|
+
} from "./index-1w2qaee2.js";
|
|
15
|
+
import {
|
|
16
|
+
ApplicationScript
|
|
17
|
+
} from "./index-jx4bzvwg.js";
|
|
18
|
+
import {
|
|
19
|
+
PackageScript
|
|
20
|
+
} from "./index-gnyf1fqy.js";
|
|
21
|
+
import {
|
|
22
|
+
CloudRunner
|
|
23
|
+
} from "./index-8ggztp8k.js";
|
|
24
|
+
|
|
25
|
+
// pkgs/@akanjs/cli/cloud/cloud.script.ts
|
|
26
|
+
import { Logger } from "akanjs/common";
|
|
27
|
+
class CloudScript2 extends script("cloud", [CloudRunner, ApplicationScript, PackageScript]) {
|
|
28
|
+
async login(workspace, host) {
|
|
29
|
+
await this.cloudRunner.login(await GlobalConfig.hostFor(workspace, host), workspace);
|
|
30
|
+
}
|
|
31
|
+
async logout(workspace, host) {
|
|
32
|
+
await this.cloudRunner.logout(await GlobalConfig.hostFor(workspace, host));
|
|
33
|
+
}
|
|
34
|
+
async downloadEnv(workspace, workspaceId = workspace.getWorkspaceId({ allowEmpty: true }), { host: given } = {}) {
|
|
35
|
+
if (workspaceId) {
|
|
36
|
+
const host = await GlobalConfig.hostFor(workspace, given);
|
|
37
|
+
await this.login(workspace, host);
|
|
38
|
+
const cloudApi = await CloudApi.fromHost(workspace, host);
|
|
39
|
+
await this.cloudRunner.downloadEnv(cloudApi, workspace, workspaceId);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
await this.cloudRunner.downloadEnvByScp(workspace);
|
|
43
|
+
}
|
|
44
|
+
async uploadEnv(workspace, {
|
|
45
|
+
host: given,
|
|
46
|
+
workspaceId = workspace.getWorkspaceId({ allowEmpty: true }),
|
|
47
|
+
scope,
|
|
48
|
+
archivePath
|
|
49
|
+
} = {}) {
|
|
50
|
+
if (scope && !workspaceId)
|
|
51
|
+
throw new Error("A scoped env upload needs a cloud workspace id \u2014 the scp target is workspace-wide.");
|
|
52
|
+
const { files, path } = await this.cloudRunner.gatherEnvFiles(workspace, { scope, archivePath });
|
|
53
|
+
if (workspaceId) {
|
|
54
|
+
const host = await GlobalConfig.hostFor(workspace, given);
|
|
55
|
+
await this.login(workspace, host);
|
|
56
|
+
const cloudApi = await CloudApi.fromHost(workspace, host);
|
|
57
|
+
await this.cloudRunner.uploadEnv(cloudApi, workspaceId, path);
|
|
58
|
+
return { workspaceId, files };
|
|
59
|
+
}
|
|
60
|
+
await this.cloudRunner.uploadEnvByScp(workspace, path);
|
|
61
|
+
return { workspaceId: null, files };
|
|
62
|
+
}
|
|
63
|
+
async uploadSecret(workspace, {
|
|
64
|
+
name,
|
|
65
|
+
branch,
|
|
66
|
+
file,
|
|
67
|
+
subspace,
|
|
68
|
+
host: given
|
|
69
|
+
}) {
|
|
70
|
+
const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
|
|
71
|
+
const value = await this.cloudRunner.readSecretValue(name, file);
|
|
72
|
+
const host = await GlobalConfig.hostFor(workspace, given);
|
|
73
|
+
await this.login(workspace, host);
|
|
74
|
+
const cloudApi = await CloudApi.fromHost(workspace, host);
|
|
75
|
+
await this.cloudRunner.uploadSecret(cloudApi, devProjectId, { name, branch, value });
|
|
76
|
+
}
|
|
77
|
+
async listSecrets(workspace, { branch, subspace, host: given }) {
|
|
78
|
+
const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
|
|
79
|
+
const host = await GlobalConfig.hostFor(workspace, given);
|
|
80
|
+
await this.login(workspace, host);
|
|
81
|
+
const cloudApi = await CloudApi.fromHost(workspace, host);
|
|
82
|
+
await this.cloudRunner.listSecrets(cloudApi, devProjectId, branch);
|
|
83
|
+
}
|
|
84
|
+
async removeSecret(workspace, {
|
|
85
|
+
name,
|
|
86
|
+
branch,
|
|
87
|
+
subspace,
|
|
88
|
+
host: given
|
|
89
|
+
}) {
|
|
90
|
+
const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
|
|
91
|
+
const host = await GlobalConfig.hostFor(workspace, given);
|
|
92
|
+
await this.login(workspace, host);
|
|
93
|
+
const cloudApi = await CloudApi.fromHost(workspace, host);
|
|
94
|
+
await this.cloudRunner.removeSecret(cloudApi, devProjectId, { name, branch });
|
|
95
|
+
}
|
|
96
|
+
async pushUpdate(workspace, app, {
|
|
97
|
+
platform,
|
|
98
|
+
target,
|
|
99
|
+
env,
|
|
100
|
+
channel,
|
|
101
|
+
notes,
|
|
102
|
+
subspace,
|
|
103
|
+
host: given,
|
|
104
|
+
write,
|
|
105
|
+
allowLocalRelease,
|
|
106
|
+
pack: packDir
|
|
107
|
+
}) {
|
|
108
|
+
const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
|
|
109
|
+
const pack = packDir ? await NativeApp.readPack(packDir) : await this.applicationScript.packUpdate(app, platform, {
|
|
110
|
+
target,
|
|
111
|
+
env,
|
|
112
|
+
write,
|
|
113
|
+
allowLocalRelease
|
|
114
|
+
});
|
|
115
|
+
if (pack.app !== app.name || pack.platform !== platform || target && pack.target !== target)
|
|
116
|
+
throw new Error(`The pack in ${pack.out} is ${pack.app} ${pack.target} ${pack.platform}, not ${app.name} ${target ?? pack.target} ${platform}.`);
|
|
117
|
+
if (pack.compat && !pack.compat.compatible) {
|
|
118
|
+
Logger.error(`The pack in ${pack.out} needs a new store build; it differs from the one ${pack.compat.against} came from:
|
|
119
|
+
- ${pack.compat.problems.join(`
|
|
120
|
+
- `)}`);
|
|
121
|
+
process.exitCode = 2;
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
const host = await GlobalConfig.hostFor(workspace, given);
|
|
125
|
+
await this.login(workspace, host);
|
|
126
|
+
return await this.cloudRunner.pushUpdate(await CloudApi.fromHost(workspace, host), devProjectId, pack, {
|
|
127
|
+
channel,
|
|
128
|
+
notes
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
async registerBinary(workspace, app, {
|
|
132
|
+
platform,
|
|
133
|
+
distribution,
|
|
134
|
+
target,
|
|
135
|
+
env,
|
|
136
|
+
subspace,
|
|
137
|
+
host: given,
|
|
138
|
+
write,
|
|
139
|
+
allowLocalRelease
|
|
140
|
+
}) {
|
|
141
|
+
const devProjectId = await this.cloudRunner.secretProject(workspace, subspace);
|
|
142
|
+
const pack = await this.applicationScript.packUpdate(app, platform, {
|
|
143
|
+
target,
|
|
144
|
+
env,
|
|
145
|
+
write,
|
|
146
|
+
allowLocalRelease
|
|
147
|
+
});
|
|
148
|
+
const host = await GlobalConfig.hostFor(workspace, given);
|
|
149
|
+
await this.login(workspace, host);
|
|
150
|
+
return await this.cloudRunner.registerBinary(await CloudApi.fromHost(workspace, host), devProjectId, app, pack, {
|
|
151
|
+
distribution,
|
|
152
|
+
env
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
async deployAkan(workspace, {
|
|
156
|
+
test = true,
|
|
157
|
+
registryUrl,
|
|
158
|
+
platforms = []
|
|
159
|
+
} = {}) {
|
|
160
|
+
const akanPkgs = await this.cloudRunner.getAkanPkgs(workspace);
|
|
161
|
+
await this.packageScript.updateWorskpaceRootPackageJson(workspace);
|
|
162
|
+
const pkgs = akanPkgs.map((pkgName) => PkgExecutor.from(workspace, pkgName));
|
|
163
|
+
if (test) {
|
|
164
|
+
const platformRun = platforms.length ? await this.cloudRunner.startPlatformTests(workspace, platforms, akanPkgs) : null;
|
|
165
|
+
let localFailure = null;
|
|
166
|
+
try {
|
|
167
|
+
for (const pkg of pkgs)
|
|
168
|
+
await this.applicationScript.test(pkg);
|
|
169
|
+
} catch (error) {
|
|
170
|
+
localFailure = error;
|
|
171
|
+
}
|
|
172
|
+
if (platformRun)
|
|
173
|
+
await this.cloudRunner.settlePlatformTests(platformRun, {
|
|
174
|
+
interactive: !localFailure,
|
|
175
|
+
recordStreaks: !localFailure,
|
|
176
|
+
checkDrift: true
|
|
177
|
+
});
|
|
178
|
+
if (localFailure)
|
|
179
|
+
throw localFailure;
|
|
180
|
+
}
|
|
181
|
+
for (const pkg of pkgs)
|
|
182
|
+
await this.packageScript.buildPackage(pkg);
|
|
183
|
+
await this.packageScript.verifyAkanPublishPackages(workspace);
|
|
184
|
+
await this.cloudRunner.deployAkan(workspace, akanPkgs, { registryUrl });
|
|
185
|
+
}
|
|
186
|
+
async testPlatforms(workspace, { platforms, pkgs }) {
|
|
187
|
+
if (!platforms.length)
|
|
188
|
+
throw new Error("No platform to test on \u2014 pass --platforms linux,windows");
|
|
189
|
+
const run = await this.cloudRunner.startPlatformTests(workspace, platforms, pkgs ?? await this.cloudRunner.getAkanPkgs(workspace));
|
|
190
|
+
await this.cloudRunner.settlePlatformTests(run, { interactive: false, recordStreaks: false, checkDrift: false });
|
|
191
|
+
}
|
|
192
|
+
async update(workspace, tag = "latest", { registryUrl } = {}) {
|
|
193
|
+
const spinner = workspace.spinning("Updating Akan.js packages and CLI...");
|
|
194
|
+
await this.cloudRunner.update(workspace, tag, { registryUrl });
|
|
195
|
+
spinner.succeed("Akan.js packages and CLI updated, global version is below");
|
|
196
|
+
Logger.raw("> Akan version: ");
|
|
197
|
+
await workspace.spawn("akan", ["--version"], { stdio: "inherit" });
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export { CloudScript2 };
|
|
@@ -116,7 +116,7 @@ class SubagentPool2 {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
async#run(id, kind, prompt, signal) {
|
|
119
|
-
const { CodeAgent } = await import("./CodeAgent-
|
|
119
|
+
const { CodeAgent } = await import("./CodeAgent-kyprmy06.js");
|
|
120
120
|
const budget = this.#options.parent.tools.subagent;
|
|
121
121
|
const child = SubagentPool2.childOf(this.#options.parent, kind);
|
|
122
122
|
const agent = await CodeAgent.create({
|
|
@@ -22,26 +22,26 @@ import {
|
|
|
22
22
|
renderWorkflowApply,
|
|
23
23
|
renderWorkflowValidation,
|
|
24
24
|
renderWorkflowRunArtifact
|
|
25
|
-
} from "./index-
|
|
25
|
+
} from "./index-05g3jayg.js";
|
|
26
26
|
import {
|
|
27
27
|
AkanContextAnalyzer
|
|
28
|
-
} from "./index-
|
|
28
|
+
} from "./index-2mx692qq.js";
|
|
29
29
|
import {
|
|
30
30
|
CommandContainer,
|
|
31
31
|
runner
|
|
32
|
-
} from "./index-
|
|
32
|
+
} from "./index-6jjtnhkw.js";
|
|
33
33
|
import {
|
|
34
34
|
ModuleScript
|
|
35
|
-
} from "./index-
|
|
35
|
+
} from "./index-e0cvze1s.js";
|
|
36
36
|
import {
|
|
37
37
|
PrimitiveScript
|
|
38
|
-
} from "./index-
|
|
38
|
+
} from "./index-ctanya41.js";
|
|
39
39
|
import {
|
|
40
40
|
spawnShell
|
|
41
|
-
} from "./index-
|
|
41
|
+
} from "./index-fm46xrf1.js";
|
|
42
42
|
import {
|
|
43
43
|
ScalarScript
|
|
44
|
-
} from "./index-
|
|
44
|
+
} from "./index-c76k723e.js";
|
|
45
45
|
|
|
46
46
|
// pkgs/@akanjs/cli/workflow/workflow.runner.ts
|
|
47
47
|
import { mkdir, readFile, writeFile } from "fs/promises";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
runner,
|
|
4
4
|
script
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-6jjtnhkw.js";
|
|
6
6
|
import {
|
|
7
7
|
AGENT_BLOCK_START,
|
|
8
8
|
AGENT_BLOCK_END,
|
|
@@ -13,14 +13,14 @@ import {
|
|
|
13
13
|
CLAUDE_COMMENT_RULE,
|
|
14
14
|
AppExecutor,
|
|
15
15
|
LibExecutor
|
|
16
|
-
} from "./index-
|
|
16
|
+
} from "./index-55mynnqs.js";
|
|
17
17
|
import {
|
|
18
18
|
collectRecipeSources2,
|
|
19
19
|
scanRecipes2
|
|
20
20
|
} from "./index-hj6w4ka1.js";
|
|
21
21
|
import {
|
|
22
22
|
AkanContextAnalyzer
|
|
23
|
-
} from "./index-
|
|
23
|
+
} from "./index-2mx692qq.js";
|
|
24
24
|
import {
|
|
25
25
|
Prompter2
|
|
26
26
|
} from "./index-zzvvc845.js";
|
|
@@ -166,7 +166,7 @@ ${frameworkGuide.trim()}
|
|
|
166
166
|
## Before You Finish
|
|
167
167
|
|
|
168
168
|
1. \`bun run akan lint <appName>\` \u2014 Tailwind class order, \`Err\`, \`console\`, \`#private\` scope, unused imports.
|
|
169
|
-
2. \`bun run akan typecheck <appName>\` \u2014 server/client boundary violations.
|
|
169
|
+
2. \`bun run akan typecheck <appName>\` \u2014 server/client boundary violations, and the tests and specs nothing imports.
|
|
170
170
|
3. \`bun run akan sync <appName>\` if you added, renamed, or deleted any file.
|
|
171
171
|
4. Did you write or change a \`.tsx\` file? \`bun run akan quality ssr\` \u2014 did the server share hold, and did you add
|
|
172
172
|
a \`"use client"\` you cannot justify?
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// pkgs/@akanjs/devkit/subspaceConfig.ts
|
|
3
|
+
class SubspaceConfig {
|
|
4
|
+
static source = "subspace in the workspace root akan.config.ts";
|
|
5
|
+
static defaultPushableBranches = ["main", "develop", "debug"];
|
|
6
|
+
static async from(workspace) {
|
|
7
|
+
const { subspace } = await workspace.getConfig();
|
|
8
|
+
return subspace ? new SubspaceConfig(subspace) : null;
|
|
9
|
+
}
|
|
10
|
+
pushableBranches;
|
|
11
|
+
exclude;
|
|
12
|
+
subspaces;
|
|
13
|
+
constructor(input) {
|
|
14
|
+
this.pushableBranches = input.pushableBranches ?? SubspaceConfig.defaultPushableBranches;
|
|
15
|
+
this.exclude = input.exclude ?? [];
|
|
16
|
+
this.subspaces = input.subspaces ?? [];
|
|
17
|
+
this.#assertValid();
|
|
18
|
+
}
|
|
19
|
+
#assertValid() {
|
|
20
|
+
const seenNames = new Set;
|
|
21
|
+
const appOwners = new Map;
|
|
22
|
+
const idOwners = new Map;
|
|
23
|
+
for (const subspace of this.subspaces) {
|
|
24
|
+
if (!subspace.name || !subspace.repo)
|
|
25
|
+
throw new Error(`${SubspaceConfig.source}: every subspace needs a name and a repo`);
|
|
26
|
+
if (seenNames.has(subspace.name))
|
|
27
|
+
throw new Error(`${SubspaceConfig.source}: duplicate subspace "${subspace.name}"`);
|
|
28
|
+
seenNames.add(subspace.name);
|
|
29
|
+
if (!subspace.apps?.length)
|
|
30
|
+
throw new Error(`${SubspaceConfig.source}: subspace "${subspace.name}" declares no apps`);
|
|
31
|
+
for (const app of subspace.apps) {
|
|
32
|
+
const owner = appOwners.get(app);
|
|
33
|
+
if (owner)
|
|
34
|
+
throw new Error(`${SubspaceConfig.source}: app "${app}" is claimed by both "${owner}" and "${subspace.name}"`);
|
|
35
|
+
appOwners.set(app, subspace.name);
|
|
36
|
+
}
|
|
37
|
+
if (!subspace.workspaceId)
|
|
38
|
+
continue;
|
|
39
|
+
const idOwner = idOwners.get(subspace.workspaceId);
|
|
40
|
+
if (idOwner)
|
|
41
|
+
throw new Error(`${SubspaceConfig.source}: subspaces "${idOwner}" and "${subspace.name}" declare the same workspaceId`);
|
|
42
|
+
idOwners.set(subspace.workspaceId, subspace.name);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
select(names) {
|
|
46
|
+
if (!names.length)
|
|
47
|
+
return this.subspaces;
|
|
48
|
+
return names.map((name) => {
|
|
49
|
+
const subspace = this.subspaces.find((candidate) => candidate.name === name);
|
|
50
|
+
if (!subspace)
|
|
51
|
+
throw new Error(`${SubspaceConfig.source}: unknown subspace "${name}"`);
|
|
52
|
+
return subspace;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
assertPushable(branch) {
|
|
56
|
+
if (this.pushableBranches.includes(branch))
|
|
57
|
+
return;
|
|
58
|
+
throw new Error(`Branch "${branch}" is not pushable. ${SubspaceConfig.source} allows: ${this.pushableBranches.join(", ")}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export { SubspaceConfig };
|
package/index.js
CHANGED
|
@@ -4,34 +4,35 @@ import {
|
|
|
4
4
|
getTargetMetas,
|
|
5
5
|
getTargetCommandNames,
|
|
6
6
|
runCommands
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-6jjtnhkw.js";
|
|
8
8
|
import"./index-52w0fvh8.js";
|
|
9
|
-
import"./index-
|
|
9
|
+
import"./index-55mynnqs.js";
|
|
10
10
|
|
|
11
11
|
// pkgs/@akanjs/cli/commandManifest.ts
|
|
12
12
|
import path from "path";
|
|
13
13
|
|
|
14
14
|
// pkgs/@akanjs/cli/commandModules.ts
|
|
15
15
|
var commandModules = {
|
|
16
|
-
workspace: async () => (await import("./workspace.command-
|
|
17
|
-
agent: async () => (await import("./agent.command-
|
|
18
|
-
code: async () => (await import("./code.command-
|
|
19
|
-
application: async () => (await import("./application.command-
|
|
20
|
-
library: async () => (await import("./library.command-
|
|
21
|
-
localRegistry: async () => (await import("./localRegistry.command-
|
|
22
|
-
package: async () => (await import("./package.command-
|
|
23
|
-
module: async () => (await import("./module.command-
|
|
24
|
-
page: async () => (await import("./page.command-
|
|
25
|
-
context: async () => (await import("./context.command-
|
|
26
|
-
cloud: async () => (await import("./cloud.command-
|
|
27
|
-
subspace: async () => (await import("./subspace.command-
|
|
28
|
-
guideline: async () => (await import("./guideline.command-
|
|
29
|
-
scalar: async () => (await import("./scalar.command-
|
|
30
|
-
primitive: async () => (await import("./primitive.command-
|
|
31
|
-
quality: async () => (await import("./quality.command-
|
|
32
|
-
repair: async () => (await import("./repair.command-
|
|
33
|
-
workflow: async () => (await import("./workflow.command-
|
|
34
|
-
|
|
16
|
+
workspace: async () => (await import("./workspace.command-yxd7rr7g.js")).WorkspaceCommand,
|
|
17
|
+
agent: async () => (await import("./agent.command-f3gsc1gd.js")).AgentCommand,
|
|
18
|
+
code: async () => (await import("./code.command-3wkn4ja5.js")).CodeCommand,
|
|
19
|
+
application: async () => (await import("./application.command-5s780vnz.js")).ApplicationCommand,
|
|
20
|
+
library: async () => (await import("./library.command-gaga5bmq.js")).LibraryCommand,
|
|
21
|
+
localRegistry: async () => (await import("./localRegistry.command-vsreyy42.js")).LocalRegistryCommand,
|
|
22
|
+
package: async () => (await import("./package.command-twmvvf69.js")).PackageCommand,
|
|
23
|
+
module: async () => (await import("./module.command-7vpf6db4.js")).ModuleCommand,
|
|
24
|
+
page: async () => (await import("./page.command-5asq7fdf.js")).PageCommand,
|
|
25
|
+
context: async () => (await import("./context.command-9jjn3gcw.js")).ContextCommand,
|
|
26
|
+
cloud: async () => (await import("./cloud.command-yj6xb2a7.js")).CloudCommand,
|
|
27
|
+
subspace: async () => (await import("./subspace.command-md2teygq.js")).SubspaceCommand,
|
|
28
|
+
guideline: async () => (await import("./guideline.command-dtczrqpf.js")).GuidelineCommand,
|
|
29
|
+
scalar: async () => (await import("./scalar.command-bnggy1x7.js")).ScalarCommand,
|
|
30
|
+
primitive: async () => (await import("./primitive.command-dyrs2fm8.js")).PrimitiveCommand,
|
|
31
|
+
quality: async () => (await import("./quality.command-6emsqpbg.js")).QualityCommand,
|
|
32
|
+
repair: async () => (await import("./repair.command-8t6aegv5.js")).RepairCommand,
|
|
33
|
+
workflow: async () => (await import("./workflow.command-jx0wag5r.js")).WorkflowCommand,
|
|
34
|
+
pipeline: async () => (await import("./pipeline.command-d0v38572.js")).PipelineCommand,
|
|
35
|
+
tunnel: async () => (await import("./tunnel.command-jx3tdm2d.js")).TunnelCommand
|
|
35
36
|
};
|
|
36
37
|
var commandModuleIds = Object.keys(commandModules);
|
|
37
38
|
|
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
Lib,
|
|
4
4
|
Workspace,
|
|
5
5
|
command
|
|
6
|
-
} from "./index-
|
|
6
|
+
} from "./index-6jjtnhkw.js";
|
|
7
7
|
import"./index-52w0fvh8.js";
|
|
8
|
-
import"./index-
|
|
8
|
+
import"./index-55mynnqs.js";
|
|
9
9
|
import {
|
|
10
10
|
LibraryScript
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-c1x0be5j.js";
|
|
12
12
|
|
|
13
13
|
// pkgs/@akanjs/cli/library/library.command.ts
|
|
14
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-
|
|
7
|
+
} from "./index-6jjtnhkw.js";
|
|
8
8
|
import"./index-52w0fvh8.js";
|
|
9
9
|
import {
|
|
10
10
|
PkgExecutor
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-55mynnqs.js";
|
|
12
12
|
import"./index-k9rrten6.js";
|
|
13
|
-
import"./index-
|
|
14
|
-
import"./index-
|
|
13
|
+
import"./index-1w2qaee2.js";
|
|
14
|
+
import"./index-c1x0be5j.js";
|
|
15
15
|
import {
|
|
16
16
|
ApplicationScript
|
|
17
|
-
} from "./index-
|
|
17
|
+
} from "./index-jx4bzvwg.js";
|
|
18
18
|
import"./index-7md2g9vw.js";
|
|
19
|
-
import"./index-
|
|
19
|
+
import"./index-pgj2rt78.js";
|
|
20
20
|
import {
|
|
21
21
|
getNpmRegistryUrl,
|
|
22
22
|
CloudRunner
|
|
23
|
-
} from "./index-
|
|
23
|
+
} from "./index-8ggztp8k.js";
|
|
24
24
|
import"./index-2ahj896a.js";
|
|
25
25
|
import {
|
|
26
26
|
PackageScript
|
|
27
|
-
} from "./index-
|
|
28
|
-
import"./index-
|
|
27
|
+
} from "./index-gnyf1fqy.js";
|
|
28
|
+
import"./index-qt22xstj.js";
|
|
29
29
|
|
|
30
30
|
// pkgs/@akanjs/cli/localRegistry/localRegistry.runner.ts
|
|
31
31
|
import { mkdir, rm } from "fs/promises";
|
|
@@ -3,16 +3,16 @@ import {
|
|
|
3
3
|
Sys,
|
|
4
4
|
Module,
|
|
5
5
|
command
|
|
6
|
-
} from "./index-
|
|
6
|
+
} from "./index-6jjtnhkw.js";
|
|
7
7
|
import"./index-52w0fvh8.js";
|
|
8
|
-
import"./index-
|
|
8
|
+
import"./index-55mynnqs.js";
|
|
9
9
|
import {
|
|
10
10
|
renderPrimitiveReport
|
|
11
|
-
} from "./index-
|
|
12
|
-
import"./index-
|
|
11
|
+
} from "./index-05g3jayg.js";
|
|
12
|
+
import"./index-2etcv0sc.js";
|
|
13
13
|
import {
|
|
14
14
|
ModuleScript
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-e0cvze1s.js";
|
|
16
16
|
|
|
17
17
|
// pkgs/@akanjs/cli/module/module.command.ts
|
|
18
18
|
import { Logger, lowerlize } from "akanjs/common";
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
Pkg,
|
|
4
4
|
Workspace,
|
|
5
5
|
command
|
|
6
|
-
} from "./index-
|
|
6
|
+
} from "./index-6jjtnhkw.js";
|
|
7
7
|
import"./index-52w0fvh8.js";
|
|
8
|
-
import"./index-
|
|
8
|
+
import"./index-55mynnqs.js";
|
|
9
9
|
import"./index-2ahj896a.js";
|
|
10
10
|
import {
|
|
11
11
|
PackageScript
|
|
12
|
-
} from "./index-
|
|
12
|
+
} from "./index-gnyf1fqy.js";
|
|
13
13
|
|
|
14
14
|
// pkgs/@akanjs/cli/package/package.command.ts
|
|
15
15
|
class PackageCommand extends command("package", [PackageScript], ({ public: target }) => ({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akanjs/cli",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.1.0-rc.1",
|
|
4
4
|
"sourceType": "module",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@earendil-works/pi-tui": "0.86.1",
|
|
40
40
|
"@inquirer/prompts": "^8.4.3",
|
|
41
41
|
"@tailwindcss/node": "^4.3.0",
|
|
42
|
-
"akanjs": "3.0.
|
|
42
|
+
"akanjs": "3.1.0-rc.1",
|
|
43
43
|
"chalk": "^5.6.2",
|
|
44
44
|
"commander": "^14.0.3",
|
|
45
45
|
"dayjs": "^1.11.20",
|
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
App,
|
|
4
4
|
Module,
|
|
5
5
|
command
|
|
6
|
-
} from "./index-
|
|
6
|
+
} from "./index-6jjtnhkw.js";
|
|
7
7
|
import"./index-52w0fvh8.js";
|
|
8
|
-
import"./index-
|
|
8
|
+
import"./index-55mynnqs.js";
|
|
9
9
|
import {
|
|
10
10
|
PageScript
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-2etcv0sc.js";
|
|
12
12
|
|
|
13
13
|
// pkgs/@akanjs/cli/page/page.command.ts
|
|
14
14
|
class PageCommand extends command("page", [PageScript], ({ public: target }) => ({
|