@akanjs/cli 3.0.0-beta.29 → 3.0.0-beta.30
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-86q8d13j.js → CodeAgent-xnfyyz8h.js} +2 -2
- package/{CodeTui-r8tgxsyb.js → CodeTui-h66xb1fh.js} +1 -1
- package/README.ko.md +72 -0
- package/README.md +88 -0
- package/{agent.command-q9bmqrag.js → agent.command-c4v7kjff.js} +5 -5
- package/akanCode.js +2 -2
- package/{application.command-712jd2z8.js → application.command-yzsswrz6.js} +9 -9
- package/{applicationBuildRunner-ez37p161.js → applicationBuildRunner-qkt6spd5.js} +3 -3
- package/buildBatch.proc.js +3 -3
- package/{cloud.command-8eegwcsc.js → cloud.command-v8h688jc.js} +9 -9
- package/cloud.script-yct1sk4k.js +20 -0
- package/{code.command-n0c2tyzx.js → code.command-jff3tw7y.js} +6 -6
- package/{context.command-vxf6d7q2.js → context.command-y5sevk3c.js} +14 -14
- package/context.runner-90hsmacr.js +21 -0
- package/{guideline.command-ene55fkr.js → guideline.command-11cndccb.js} +2 -2
- package/guidelines/conventions/conventions.instruction.md +27 -14
- package/guidelines/runtimeRule/runtimeRule.instruction.md +90 -17
- package/guidelines/workspaceOnboarding/workspaceOnboarding.instruction.md +20 -0
- package/incrementalBuilder.proc.js +2 -2
- package/{index-2z30v4k5.js → index-0ncc0mbk.js} +3 -3
- package/{index-2yvy9ztj.js → index-167c77aq.js} +4 -4
- package/{index-nbg9bfnr.js → index-35mmm9ca.js} +1 -1
- package/{index-fy42hyb9.js → index-376gpdds.js} +5 -5
- package/{index-n9gxx7bp.js → index-3rh7thcx.js} +13 -13
- package/{index-rrt9pnb4.js → index-5rp0h6na.js} +2 -2
- package/{index-ttn00pr3.js → index-6x9p8dpb.js} +1 -1
- package/{index-8ej6r02m.js → index-8tv7356t.js} +1 -1
- package/{index-k7809wmg.js → index-a4s954kq.js} +2 -2
- package/{index-rbeahw6j.js → index-bxmejydw.js} +3 -3
- package/{index-qtz88kh0.js → index-gxamdf18.js} +2 -2
- package/{index-20r2g1t3.js → index-hf6f4xnb.js} +4 -4
- package/{index-2s2e5qnd.js → index-hmdq5pqm.js} +1 -1
- package/{index-16k7m3cs.js → index-hqd0h1pb.js} +10 -10
- package/{index-1hs6jrys.js → index-kb16nzyt.js} +36 -33
- package/{index-krwz9ek9.js → index-mk3b9rk1.js} +3 -3
- package/{index-r8gp8zk3.js → index-n3jk2501.js} +155 -152
- package/{index-g44da4r2.js → index-qcejqgts.js} +5 -5
- package/{index-h9ed99ax.js → index-rtwhw4aq.js} +7 -7
- package/{index-ss828r32.js → index-se643zvp.js} +1 -1
- package/{index-2ctqegdm.js → index-tsb0f8ya.js} +2 -2
- package/{index-0pqzrbpr.js → index-tzc1gtrg.js} +2 -2
- package/{index-genegfnt.js → index-wfwgcnyc.js} +4 -4
- package/{index-b68zfsvz.js → index-xb7qhxa8.js} +1 -1
- package/index.js +21 -21
- package/{library.command-tz7vnwea.js → library.command-n9kp7yms.js} +3 -3
- package/{localRegistry.command-7dd85czz.js → localRegistry.command-jx6kxt2x.js} +8 -8
- package/{module.command-qhc9ns0s.js → module.command-q2xjf6cx.js} +5 -5
- package/{package.command-z3epnvas.js → package.command-q5a3nsw5.js} +3 -3
- package/package.json +3 -3
- package/{page.command-exd2vakz.js → page.command-ppenrxjn.js} +3 -3
- package/{primitive.command-0w6cha4j.js → primitive.command-dvgg8nem.js} +6 -6
- package/{quality.command-je4kc9yv.js → quality.command-pz7kg3pc.js} +2 -2
- package/{repair.command-knvwfgtg.js → repair.command-a6py9xvz.js} +5 -5
- package/{scalar.command-60nxfchc.js → scalar.command-7f3xfpen.js} +4 -4
- package/{subspace.command-683qxcw9.js → subspace.command-z7nqs508.js} +4 -4
- package/{tunnel.command-7m2kxtat.js → tunnel.command-zy4wbcgt.js} +2 -2
- package/{workflow.command-j5tk13ds.js → workflow.command-f142t17s.js} +10 -10
- package/{workspace.command-jxdm0wrb.js → workspace.command-gpk1149x.js} +20 -20
- package/cloud.script-55s1cmz9.js +0 -20
- package/context.runner-70r2fmty.js +0 -21
package/.build-stamp
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
0e7a5dcd028f8a43952646d4bbd60e5a0917f2ef29d8a7e26e3125a4fe291e06
|
package/README.ko.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# @akanjs/cli
|
|
2
|
+
|
|
3
|
+
[문서](https://akanjs.com/docs) | [npm](https://www.npmjs.com/package/@akanjs/cli) | [런타임](https://www.npmjs.com/package/akanjs)
|
|
4
|
+
|
|
5
|
+
Akan.js 워크스페이스를 위한 command-line tooling입니다.
|
|
6
|
+
|
|
7
|
+
`@akanjs/cli`는 Akan 애플리케이션, 라이브러리, 프레임워크 패키지를 생성, 빌드, 테스트, 린트,
|
|
8
|
+
릴리즈, 유지보수하는 데 사용하는 `akan` 실행 파일을 제공합니다. Bun-first CLI 패키지이며 Akan
|
|
9
|
+
개발 tooling을 내부에 번들링하므로, 애플리케이션 런타임은 더 작은 `akanjs` 패키지에만 의존할 수
|
|
10
|
+
있습니다.
|
|
11
|
+
|
|
12
|
+
## 설치
|
|
13
|
+
|
|
14
|
+
새 워크스페이스를 바로 만들 수 있습니다.
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
bunx create-akan-workspace@latest
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
또는 CLI를 전역으로 설치할 수 있습니다.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
bun install -g @akanjs/cli@latest
|
|
24
|
+
akan --help
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 자주 쓰는 명령
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
akan create-workspace <workspace-name>
|
|
31
|
+
akan start <app-name>
|
|
32
|
+
akan build <app-name>
|
|
33
|
+
akan test <app-or-lib-or-pkg>
|
|
34
|
+
akan lint <app-or-lib-or-pkg>
|
|
35
|
+
akan create-application <app-name>
|
|
36
|
+
akan create-library <lib-name>
|
|
37
|
+
akan create-module <module-name>
|
|
38
|
+
akan create-scalar <scalar-name>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
패키지 유지보수 명령도 같은 실행 파일에서 제공합니다.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
akan build-package akanjs
|
|
45
|
+
akan build-package @akanjs/cli
|
|
46
|
+
akan build-package @akanjs/devkit
|
|
47
|
+
akan build-package create-akan-workspace
|
|
48
|
+
akan verify-akan-publish-packages
|
|
49
|
+
akan smoke-registry --test=true --tag=rc
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Akan framework 패키지는 반드시 `dist/pkgs/*` 산출물 기준으로 publish합니다. `verify-akan-publish-packages`는
|
|
53
|
+
빌드된 패키지에 `npm pack --dry-run --json`을 실행하고, `deploy-akan` 또는 local registry smoke 전에 필요한
|
|
54
|
+
metadata를 검증합니다.
|
|
55
|
+
저장소 릴리즈에서는 root `akan` bootstrap script가 CLI dist를 덮어쓰지 않도록
|
|
56
|
+
`bun run release:build-packages && bun run release:verify-packages`를 우선 사용합니다.
|
|
57
|
+
|
|
58
|
+
## 패키지 경계
|
|
59
|
+
|
|
60
|
+
- 애플리케이션과 런타임 코드는 `akanjs`를 사용합니다.
|
|
61
|
+
- 사용자-facing 실행 패키지는 `@akanjs/cli`입니다.
|
|
62
|
+
- `@akanjs/devkit`은 published CLI 사용을 위해 CLI 안에 번들링됩니다. 일반 CLI 사용자가 별도의
|
|
63
|
+
runtime dependency로 설치할 필요는 없습니다.
|
|
64
|
+
|
|
65
|
+
## 요구사항
|
|
66
|
+
|
|
67
|
+
- [Bun](https://bun.sh) `>=1.4.0`
|
|
68
|
+
- TypeScript 기반 Akan 워크스페이스
|
|
69
|
+
|
|
70
|
+
## 라이선스
|
|
71
|
+
|
|
72
|
+
MIT
|
package/README.md
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# @akanjs/cli
|
|
2
|
+
|
|
3
|
+
[Docs](https://akanjs.com/docs) | [npm](https://www.npmjs.com/package/@akanjs/cli) | [Runtime](https://www.npmjs.com/package/akanjs)
|
|
4
|
+
|
|
5
|
+
Command-line tooling for Akan.js workspaces.
|
|
6
|
+
|
|
7
|
+
`@akanjs/cli` provides the `akan` executable used to create, build, test, lint, release, and maintain Akan
|
|
8
|
+
applications, libraries, and framework packages. It is a Bun-first CLI package and bundles Akan development
|
|
9
|
+
tooling internally so application runtimes can depend on the smaller `akanjs` package.
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
Create a new workspace:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
bunx create-akan-workspace@latest
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Or install the CLI globally:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
bun install -g @akanjs/cli@latest
|
|
23
|
+
akan --help
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Common Commands
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
akan create-workspace <workspace-name>
|
|
30
|
+
akan start <app-name>
|
|
31
|
+
akan build <app-name>
|
|
32
|
+
akan test <app-or-lib-or-pkg>
|
|
33
|
+
akan lint <app-or-lib-or-pkg>
|
|
34
|
+
akan create-application <app-name>
|
|
35
|
+
akan create-library <lib-name>
|
|
36
|
+
akan create-module <module-name>
|
|
37
|
+
akan create-scalar <scalar-name>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Agent And MCP Commands
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
akan context --format markdown
|
|
44
|
+
akan context --format json --module <module-name>
|
|
45
|
+
akan doctor --format json
|
|
46
|
+
akan guideline list
|
|
47
|
+
akan guideline show framework
|
|
48
|
+
akan agent install cursor
|
|
49
|
+
akan mcp
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
These commands expose Akan workspace structure, module abstracts, diagnostics, and guideline instructions for
|
|
53
|
+
coding agents. The MCP server is read-only and is intended to provide context rather than edit files directly.
|
|
54
|
+
|
|
55
|
+
Package maintenance commands are also exposed through the same executable:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
akan build-package akanjs
|
|
59
|
+
akan build-package @akanjs/cli
|
|
60
|
+
akan build-package @akanjs/devkit
|
|
61
|
+
akan build-package create-akan-workspace
|
|
62
|
+
akan verify-akan-publish-packages
|
|
63
|
+
akan smoke-registry --test=true --tag=rc
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Publish Akan framework packages from `dist/pkgs/*` only. `verify-akan-publish-packages` runs `npm pack --dry-run --json`
|
|
67
|
+
against the built packages and checks metadata that must be correct before `deploy-akan` or local registry smoke.
|
|
68
|
+
For repository releases, prefer `bun run release:build-packages && bun run release:verify-packages` so the CLI package
|
|
69
|
+
artifact is built last and is not overwritten by the root `akan` bootstrap script.
|
|
70
|
+
|
|
71
|
+
## Package Boundary
|
|
72
|
+
|
|
73
|
+
- Use `akanjs` from application and runtime code.
|
|
74
|
+
- Use `@akanjs/cli` as the user-facing executable package.
|
|
75
|
+
- `@akanjs/devkit` is bundled into the CLI for published CLI usage; it is not required as a separate
|
|
76
|
+
runtime dependency for ordinary CLI users.
|
|
77
|
+
- The `akan code` agent follows that same split: its engine, tools and skills are a devkit facet
|
|
78
|
+
(`@akanjs/devkit/codeAgent`), and `@akanjs/cli/code` is the terminal host plus the SDK entry that
|
|
79
|
+
re-exports both.
|
|
80
|
+
|
|
81
|
+
## Requirements
|
|
82
|
+
|
|
83
|
+
- [Bun](https://bun.sh) `>=1.4.0`
|
|
84
|
+
- A TypeScript Akan workspace
|
|
85
|
+
|
|
86
|
+
## License
|
|
87
|
+
|
|
88
|
+
MIT
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
import {
|
|
3
3
|
Workspace,
|
|
4
4
|
command
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-xb7qhxa8.js";
|
|
6
6
|
import"./index-52w0fvh8.js";
|
|
7
|
-
import"./index-
|
|
7
|
+
import"./index-n3jk2501.js";
|
|
8
8
|
import"./index-hj6w4ka1.js";
|
|
9
|
-
import"./index-
|
|
10
|
-
import"./index-
|
|
9
|
+
import"./index-hmdq5pqm.js";
|
|
10
|
+
import"./index-tzc1gtrg.js";
|
|
11
11
|
import"./index-zzvvc845.js";
|
|
12
12
|
import {
|
|
13
13
|
AgentScript
|
|
14
|
-
} from "./index-
|
|
14
|
+
} from "./index-bxmejydw.js";
|
|
15
15
|
|
|
16
16
|
// pkgs/@akanjs/cli/agent/agent.command.ts
|
|
17
17
|
class AgentCommand extends command("agent", [AgentScript], ({ public: target }) => ({
|
package/akanCode.js
CHANGED
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
CodeMailbox2,
|
|
29
29
|
CodeSessionFork2,
|
|
30
30
|
CodeAgent2
|
|
31
|
-
} from "./index-
|
|
31
|
+
} from "./index-mk3b9rk1.js";
|
|
32
32
|
import {
|
|
33
33
|
akanCodeDefaultModel2,
|
|
34
34
|
akanCodeModel2,
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
import {
|
|
40
40
|
SubagentPool2,
|
|
41
41
|
akanCodePaths2
|
|
42
|
-
} from "./index-
|
|
42
|
+
} from "./index-8tv7356t.js";
|
|
43
43
|
import"./index-7md2g9vw.js";
|
|
44
44
|
import {
|
|
45
45
|
CodeAgentRpcHost2
|
|
@@ -6,24 +6,24 @@ import {
|
|
|
6
6
|
Exec,
|
|
7
7
|
Workspace,
|
|
8
8
|
command
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-xb7qhxa8.js";
|
|
10
10
|
import"./index-52w0fvh8.js";
|
|
11
|
-
import"./index-
|
|
11
|
+
import"./index-n3jk2501.js";
|
|
12
12
|
import {
|
|
13
13
|
getMobileTargetChoices
|
|
14
|
-
} from "./index-
|
|
14
|
+
} from "./index-kb16nzyt.js";
|
|
15
15
|
import"./index-48k96p55.js";
|
|
16
|
-
import"./index-
|
|
16
|
+
import"./index-gxamdf18.js";
|
|
17
17
|
import {
|
|
18
18
|
ApplicationScript
|
|
19
|
-
} from "./index-
|
|
19
|
+
} from "./index-3rh7thcx.js";
|
|
20
20
|
import"./index-7md2g9vw.js";
|
|
21
|
-
import"./index-
|
|
21
|
+
import"./index-35mmm9ca.js";
|
|
22
22
|
|
|
23
23
|
// pkgs/@akanjs/cli/application/application.command.ts
|
|
24
24
|
var mobileTargetOption = {
|
|
25
|
-
desc: "
|
|
26
|
-
ask: "Select
|
|
25
|
+
desc: "native target name (a key of native.targets) or all",
|
|
26
|
+
ask: "Select native target",
|
|
27
27
|
enum: async ({ app }) => await getMobileTargetChoices(app)
|
|
28
28
|
};
|
|
29
29
|
var deviceOption = {
|
|
@@ -180,7 +180,7 @@ class ApplicationCommand extends command("application", [ApplicationScript], ({
|
|
|
180
180
|
packUpdate: target({
|
|
181
181
|
desc: "Pack an unsigned over-the-air update of the mobile web bundle, for the signer to publish"
|
|
182
182
|
}).with(App).option("platform", String, { enum: ["ios", "android"], desc: "the app it updates" }).option("target", String, mobileTargetOption).option("env", String, releaseEnvOption).option("out", String, {
|
|
183
|
-
desc: "output folder (default: .akan/
|
|
183
|
+
desc: "output folder (default: .akan/native/<target>/updates/<platform>)",
|
|
184
184
|
nullable: true
|
|
185
185
|
}).option("against", String, {
|
|
186
186
|
desc: "bundle.json of the store build it must run in; fails when it needs a new one",
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
Spinner
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
4
|
+
} from "./index-n3jk2501.js";
|
|
5
|
+
import"./index-6x9p8dpb.js";
|
|
6
6
|
import {
|
|
7
7
|
AllRoutesBuilder,
|
|
8
8
|
CsrArtifactBuilder,
|
|
9
9
|
FontPruner,
|
|
10
10
|
precompressArtifacts,
|
|
11
11
|
SsrBaseArtifactBuilder
|
|
12
|
-
} from "./index-
|
|
12
|
+
} from "./index-376gpdds.js";
|
|
13
13
|
import"./index-52w0fvh8.js";
|
|
14
14
|
import"./index-n68jx79w.js";
|
|
15
15
|
|
package/buildBatch.proc.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
resolveSsrPageEntriesForApp,
|
|
7
7
|
WorkspaceExecutor,
|
|
8
8
|
AppExecutor
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-n3jk2501.js";
|
|
10
10
|
import {
|
|
11
11
|
computeRouteSeedIndex,
|
|
12
12
|
saveRouteSeedIndex,
|
|
@@ -14,14 +14,14 @@ import {
|
|
|
14
14
|
PagesBundleBuilder,
|
|
15
15
|
CsrDevBundler,
|
|
16
16
|
SsrDevBundler
|
|
17
|
-
} from "./index-
|
|
17
|
+
} from "./index-6x9p8dpb.js";
|
|
18
18
|
import"./index-52w0fvh8.js";
|
|
19
19
|
import {
|
|
20
20
|
CsrArtifactBuilder,
|
|
21
21
|
CssCompiler,
|
|
22
22
|
FontOptimizer,
|
|
23
23
|
SsrBaseArtifactBuilder
|
|
24
|
-
} from "./index-
|
|
24
|
+
} from "./index-376gpdds.js";
|
|
25
25
|
import"./index-n68jx79w.js";
|
|
26
26
|
|
|
27
27
|
// pkgs/@akanjs/devkit/incrementalBuilder/buildBatch.proc.ts
|
|
@@ -6,22 +6,22 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
Workspace,
|
|
8
8
|
command
|
|
9
|
-
} from "./index-
|
|
10
|
-
import"./index-
|
|
9
|
+
} from "./index-xb7qhxa8.js";
|
|
10
|
+
import"./index-n3jk2501.js";
|
|
11
11
|
import {
|
|
12
12
|
PlatformTestRun
|
|
13
|
-
} from "./index-
|
|
13
|
+
} from "./index-5rp0h6na.js";
|
|
14
14
|
import"./index-48k96p55.js";
|
|
15
|
-
import"./index-
|
|
16
|
-
import"./index-
|
|
17
|
-
import"./index-
|
|
15
|
+
import"./index-kb16nzyt.js";
|
|
16
|
+
import"./index-gxamdf18.js";
|
|
17
|
+
import"./index-3rh7thcx.js";
|
|
18
18
|
import"./index-7md2g9vw.js";
|
|
19
19
|
import"./index-2ahj896a.js";
|
|
20
|
-
import"./index-
|
|
20
|
+
import"./index-a4s954kq.js";
|
|
21
21
|
import {
|
|
22
22
|
CloudScript2
|
|
23
|
-
} from "./index-
|
|
24
|
-
import"./index-
|
|
23
|
+
} from "./index-qcejqgts.js";
|
|
24
|
+
import"./index-35mmm9ca.js";
|
|
25
25
|
|
|
26
26
|
// pkgs/@akanjs/cli/cloud/cloud.command.ts
|
|
27
27
|
var localRegistryUrl = () => process.env.AKAN_NPM_REGISTRY ?? "http://127.0.0.1:4873";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
CloudScript2
|
|
4
|
+
} from "./index-qcejqgts.js";
|
|
5
|
+
import"./index-5rp0h6na.js";
|
|
6
|
+
import"./index-a4s954kq.js";
|
|
7
|
+
import"./index-3rh7thcx.js";
|
|
8
|
+
import"./index-35mmm9ca.js";
|
|
9
|
+
import"./index-gxamdf18.js";
|
|
10
|
+
import"./index-kb16nzyt.js";
|
|
11
|
+
import"./index-94s080qm.js";
|
|
12
|
+
import"./index-xb7qhxa8.js";
|
|
13
|
+
import"./index-7md2g9vw.js";
|
|
14
|
+
import"./index-48k96p55.js";
|
|
15
|
+
import"./index-n3jk2501.js";
|
|
16
|
+
import"./index-2ahj896a.js";
|
|
17
|
+
import"./index-52w0fvh8.js";
|
|
18
|
+
export {
|
|
19
|
+
CloudScript2 as CloudScript
|
|
20
|
+
};
|
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
runner,
|
|
5
5
|
script,
|
|
6
6
|
command
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-xb7qhxa8.js";
|
|
8
8
|
import"./index-52w0fvh8.js";
|
|
9
|
-
import"./index-
|
|
9
|
+
import"./index-n3jk2501.js";
|
|
10
10
|
import {
|
|
11
11
|
akanCodeDefaultModel2,
|
|
12
12
|
CodeAgentStreamPrinter2
|
|
@@ -19,7 +19,7 @@ class CodeRunner extends runner("code") {
|
|
|
19
19
|
async serve(options, listen) {
|
|
20
20
|
await import("./consoleToStderr-h5bryj94.js");
|
|
21
21
|
const [{ CodeAgent }, { CodeAgentRpcHost }, { CodeAgentRpcListener }] = await Promise.all([
|
|
22
|
-
import("./CodeAgent-
|
|
22
|
+
import("./CodeAgent-xnfyyz8h.js"),
|
|
23
23
|
import("./CodeAgentRpcHost-p7h6n2hp.js"),
|
|
24
24
|
import("./CodeAgentRpcListener-7p7z5dd7.js")
|
|
25
25
|
]);
|
|
@@ -34,8 +34,8 @@ class CodeRunner extends runner("code") {
|
|
|
34
34
|
}
|
|
35
35
|
async tui(options, seed) {
|
|
36
36
|
const [{ CodeAgent }, { CodeTui }] = await Promise.all([
|
|
37
|
-
import("./CodeAgent-
|
|
38
|
-
import("./CodeTui-
|
|
37
|
+
import("./CodeAgent-xnfyyz8h.js"),
|
|
38
|
+
import("./CodeTui-h66xb1fh.js")
|
|
39
39
|
]);
|
|
40
40
|
const agentOptions = await CodeRunner.#agentOptions(options, false);
|
|
41
41
|
let resume = options.resume;
|
|
@@ -60,7 +60,7 @@ class CodeRunner extends runner("code") {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
async run(prompt, options) {
|
|
63
|
-
const { CodeAgent } = await import("./CodeAgent-
|
|
63
|
+
const { CodeAgent } = await import("./CodeAgent-xnfyyz8h.js");
|
|
64
64
|
const agent = await CodeAgent.create(await CodeRunner.#agentOptions(options, false));
|
|
65
65
|
const printer = new CodeAgentStreamPrinter2({ json: options.json, thinking: options.thinking });
|
|
66
66
|
agent.on((event) => printer.print(event));
|
|
@@ -2,24 +2,24 @@
|
|
|
2
2
|
import {
|
|
3
3
|
Workspace,
|
|
4
4
|
command
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-xb7qhxa8.js";
|
|
6
6
|
import"./index-52w0fvh8.js";
|
|
7
|
-
import"./index-
|
|
7
|
+
import"./index-n3jk2501.js";
|
|
8
8
|
import"./index-hj6w4ka1.js";
|
|
9
|
-
import"./index-
|
|
10
|
-
import"./index-
|
|
11
|
-
import"./index-
|
|
12
|
-
import"./index-
|
|
9
|
+
import"./index-hmdq5pqm.js";
|
|
10
|
+
import"./index-tzc1gtrg.js";
|
|
11
|
+
import"./index-hqd0h1pb.js";
|
|
12
|
+
import"./index-kb16nzyt.js";
|
|
13
13
|
import"./index-zzvvc845.js";
|
|
14
|
-
import"./index-
|
|
15
|
-
import"./index-
|
|
16
|
-
import"./index-
|
|
17
|
-
import"./index-
|
|
18
|
-
import"./index-
|
|
19
|
-
import"./index-
|
|
14
|
+
import"./index-0ncc0mbk.js";
|
|
15
|
+
import"./index-se643zvp.js";
|
|
16
|
+
import"./index-wfwgcnyc.js";
|
|
17
|
+
import"./index-hf6f4xnb.js";
|
|
18
|
+
import"./index-tsb0f8ya.js";
|
|
19
|
+
import"./index-rtwhw4aq.js";
|
|
20
20
|
import {
|
|
21
21
|
ContextScript
|
|
22
|
-
} from "./index-
|
|
22
|
+
} from "./index-167c77aq.js";
|
|
23
23
|
|
|
24
24
|
// pkgs/@akanjs/cli/context/context.command.ts
|
|
25
25
|
class ContextCommand extends command("context", [ContextScript], ({ public: target }) => ({
|
|
@@ -27,7 +27,7 @@ class ContextCommand extends command("context", [ContextScript], ({ public: targ
|
|
|
27
27
|
await this.contextScript.context(workspace, { format, app, module });
|
|
28
28
|
}),
|
|
29
29
|
doctor: target({ desc: "Report Akan workspace convention diagnostics" }).option("format", String, { desc: "output format", default: "text", enum: ["text", "json"] }).option("strict", Boolean, { desc: "treat recommended conventions as errors", default: false }).option("ios", Boolean, {
|
|
30
|
-
desc: "report iOS/
|
|
30
|
+
desc: "report iOS/native config diagnostics (placeholder bundle ids, etc.)",
|
|
31
31
|
default: false
|
|
32
32
|
}).with(Workspace).exec(async function(format, strict, ios, workspace) {
|
|
33
33
|
await this.contextScript.doctor(workspace, { format, strict, ios });
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
ContextRunner2
|
|
4
|
+
} from "./index-hqd0h1pb.js";
|
|
5
|
+
import"./index-rtwhw4aq.js";
|
|
6
|
+
import"./index-tsb0f8ya.js";
|
|
7
|
+
import"./index-hf6f4xnb.js";
|
|
8
|
+
import"./index-0ncc0mbk.js";
|
|
9
|
+
import"./index-wfwgcnyc.js";
|
|
10
|
+
import"./index-se643zvp.js";
|
|
11
|
+
import"./index-kb16nzyt.js";
|
|
12
|
+
import"./index-tzc1gtrg.js";
|
|
13
|
+
import"./index-hmdq5pqm.js";
|
|
14
|
+
import"./index-zzvvc845.js";
|
|
15
|
+
import"./index-xb7qhxa8.js";
|
|
16
|
+
import"./index-n3jk2501.js";
|
|
17
|
+
import"./index-hj6w4ka1.js";
|
|
18
|
+
import"./index-52w0fvh8.js";
|
|
19
|
+
export {
|
|
20
|
+
ContextRunner2 as ContextRunner
|
|
21
|
+
};
|
|
@@ -28,7 +28,7 @@ you fetch on demand — `get_guideline` with the name, or `akan guideline show <
|
|
|
28
28
|
| name | covers |
|
|
29
29
|
|---|---|
|
|
30
30
|
| `ssrRule` | server-share targets, the `akan.ssr.*` warnings, the client-boundary playbook |
|
|
31
|
-
| `runtimeRule` | `web` / `csr` surfaces, gateway vs solo processes, logging, the generated image, a desktop app's server, shipped assets, database modes |
|
|
31
|
+
| `runtimeRule` | `web` / `csr` surfaces, gateway vs solo processes, logging, the generated image, native apps and a desktop app's server, shipped assets, database modes |
|
|
32
32
|
| `queryRule` | slices and hydration, the generated filter methods, full-text search, cascade removal |
|
|
33
33
|
| `transportRule` | guards across HTTP and websocket, socket identity and cleanup, binary pubsub, mutation verbs |
|
|
34
34
|
| `mcpRule` | MCP configuration, wire behaviour, resource URIs, OAuth metadata, protocol revisions |
|
|
@@ -309,11 +309,11 @@ What an app serves, how many processes it runs, where its logs go, and what ship
|
|
|
309
309
|
declared in `akan.config.ts` and narrowed — never widened — by an env at boot. Domain code reaches none of it.
|
|
310
310
|
Full contract: `get_guideline` with `runtimeRule`, or `akan guideline show runtimeRule`.
|
|
311
311
|
|
|
312
|
-
- **Web surfaces are `web: true | false | { csr: boolean }`.** `{ csr: false }` drops the
|
|
313
|
-
`false` is an API-only build that serves nothing under `page/`. There is no CSR-without-SSR option, by
|
|
314
|
-
the CSR bundle inlines the stylesheet the SSR base artifact compiles. `AKAN_SSR` / `AKAN_CSR` narrow
|
|
315
|
-
runtime and can never switch a surface the build left out back on. `akan start` ignores `web` and
|
|
316
|
-
whole dev surface.
|
|
312
|
+
- **Web surfaces are `web: true | false | { csr: boolean }`.** `{ csr: false }` drops the CSR bundle the native
|
|
313
|
+
apps ship, `false` is an API-only build that serves nothing under `page/`. There is no CSR-without-SSR option, by
|
|
314
|
+
type — the CSR bundle inlines the stylesheet the SSR base artifact compiles. `AKAN_SSR` / `AKAN_CSR` narrow
|
|
315
|
+
further at runtime and can never switch a surface the build left out back on. `akan start` ignores `web` and
|
|
316
|
+
keeps the whole dev surface.
|
|
317
317
|
- **One traffic replica runs in the container's only process.** `AKAN_REPLICA=0,0,1` — the default everywhere —
|
|
318
318
|
has nothing to balance, so there is no gateway and no unix-socket proxy hop. Two or more replicas, a batch-only
|
|
319
319
|
replica, `AKAN_SOLO=false`, passing `replica` to `new AkanApp(...)`, or `akan start` all bring the gateway back.
|
|
@@ -350,15 +350,28 @@ Full contract: `get_guideline` with `runtimeRule`, or `akan guideline show runti
|
|
|
350
350
|
assembles one from; the string form takes no contributions. The generated image installs `ca-certificates` and
|
|
351
351
|
`tzdata` and nothing else, so an app needing `ffmpeg` or Chromium declares it in `preRuns` / `postRuns`. A lib
|
|
352
352
|
declares the steps its own runtime needs and every mounting app inherits them.
|
|
353
|
-
- **
|
|
353
|
+
- **Native apps are the `native` section** — iOS, Android and a desktop app (macOS, Windows, Linux), each shipping
|
|
354
|
+
the CSR bundle on the native runtime. Shared fields (`appName`, `appId`, `version`, `indexPath`, `permissions`,
|
|
355
|
+
`plugins`, `deepLinks`, `updates`, …) sit beside one section per platform: `ios`, `android`, `desktop`. Without
|
|
356
|
+
`targets` the app has one target, `default`, and an app with no basePaths leaves `basePath` out; a target takes
|
|
357
|
+
the same shape and overrides the section field by field — objects merge key by key, a list or any other value
|
|
358
|
+
replaces the section's. `akan start-ios` / `start-android` / `start-desktop` run a dev build that loads its pages
|
|
359
|
+
from `akan start`; `build-ios` / `build-android` / `build-desktop` write
|
|
360
|
+
`apps/<app>/.akan/native/<target>/build/<platform>`, a desktop app only for the computer that builds it
|
|
361
|
+
(`--installer true` adds a Windows setup). With `updates: { url, publicKey }` an installed app takes the signed
|
|
362
|
+
releases `akan publish-update` makes; `akan update-keygen` makes the key and prints its `publicKey`.
|
|
363
|
+
- **A desktop app that carries its server (`desktop: { server: true }` in `native`, or in one target) gets nothing
|
|
364
|
+
from `docker`.** That server is API-only, runs in database mode `single`, and listens on a loopback port any
|
|
365
|
+
program on the computer can call, so guard its endpoints as a network server's. An executable the app spawns
|
|
354
366
|
goes in `bin` — per platform, a download checked against its `sha256` or a file beside the config, put first on
|
|
355
367
|
the app's PATH so the server's `spawn("ffmpeg")` finds it, and in `ctx.binDir` for a native plugin — and a package
|
|
356
|
-
that builds itself at install goes in `trustedDependencies`, which the image honours too. Carry a static LGPL
|
|
357
|
-
not be redistributed. A file the user picks with
|
|
358
|
-
grant, never a copy or a path:
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
no `public/`: read runtime files
|
|
368
|
+
that builds itself at install goes in `trustedDependencies`, which the image honours too. Carry a static LGPL
|
|
369
|
+
ffmpeg: a `--enable-nonfree` build may not be redistributed. A file the user picks with
|
|
370
|
+
`filePicker.pickFiles({ forServer: true })` reaches it as a grant, never a copy or a path:
|
|
371
|
+
`NativeFile.resolve(grant, "read")` in `akanjs/server` asks the shell for it. What it carries is readable on the
|
|
372
|
+
user's computer — `private/` (each lib's too, under `private/libs/<lib>`), the one `env.server.<env>.ts` of its
|
|
373
|
+
`--env` and its libs' server env defaults (`env.server.testing.ts`) — and it has no `public/`: read runtime files
|
|
374
|
+
from `AKAN_APP_DIR`, never `process.cwd()`.
|
|
362
375
|
- **`assets: { pruneFonts, keepFonts }`** trims from the `dist` copy of `public/` the fonts nothing reads; source
|
|
363
376
|
trees are never touched. A font with `optimize` on is a build input, not a runtime asset. `keepFonts` belongs to
|
|
364
377
|
the `akan.config.ts` that owns the font, written against that scope's own `public/`.
|
|
@@ -934,7 +947,7 @@ export default page()
|
|
|
934
947
|
- `apps/<appName>` root may only contain these files: `AGENTS.md`, `CLAUDE.md`, `akan.app.json`, `akan.config.ts`, `client.ts`, `main.ts`, `package.json`, `server.ts`, `tsconfig.json`, `tsconfig.tsbuildinfo`.
|
|
935
948
|
- `apps/<appName>` root may only contain these folders: `.akan`, `common`, `env`, `lib`, `native`, `page`, `plugin`, `private`, `public`, `script`, `secrets`, `srvkit`, `ui`, `webkit`.
|
|
936
949
|
- `libs/<libName>` root may only contain these files: `AGENTS.md`, `CLAUDE.md`, `README.md`, `akan.config.ts`, `akan.lib.json`, `client.ts`, `index.ts`, `package.json`, `server.ts`, `tsconfig.json`, `tsconfig.spec.json`, `tsconfig.tsbuildinfo`.
|
|
937
|
-
- `libs/<libName>` root may only contain these folders: `common`, `env`, `lib`, `native`, `page`, `plugin`, `private`, `public`, `srvkit`, `ui`, `webkit`. A library is never booted or packaged as an app, so the run and mobile entries an app carries (`main.ts`, `.akan`, `script`, `secrets`) are rejected there. A Capacitor-era `ios` / `android` / `mobile` folder or `capacitor.config.*` is refused in an app root too, named as a leftover: the native runtime generates its projects under `.akan/
|
|
950
|
+
- `libs/<libName>` root may only contain these folders: `common`, `env`, `lib`, `native`, `page`, `plugin`, `private`, `public`, `srvkit`, `ui`, `webkit`. A library is never booted or packaged as an app, so the run and mobile entries an app carries (`main.ts`, `.akan`, `script`, `secrets`) are rejected there. A Capacitor-era `ios` / `android` / `mobile` folder or `capacitor.config.*` is refused in an app root too, named as a leftover: the native runtime generates its projects under `.akan/native/<target>`.
|
|
938
951
|
- Both allowlists have one source — `pkgs/@akanjs/devkit/workspaceLayout.ts`. `akan sync` (error), `akan doctor`
|
|
939
952
|
(diagnostic), and `akan quality scan` (warning) all read it, so add a new root entry there and mirror it into this
|
|
940
953
|
list, never into one of the three call sites.
|