@akanjs/cli 3.0.0-alpha.63 → 3.0.0-alpha.65
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/{agent.command-tsx1nsdj.js → agent.command-99yaptk3.js} +5 -5
- package/{application.command-n8ex8g9h.js → application.command-77nxchr4.js} +4 -4
- package/{applicationBuildRunner-x8h12rp0.js → applicationBuildRunner-k6dna8sz.js} +9 -7
- package/buildBatch.proc.js +2 -2
- package/{capacitorApp-8mv9e537.js → capacitorApp-4g1s9n37.js} +2 -2
- package/{cloud.command-f0rhw014.js → cloud.command-gegy1qxv.js} +7 -7
- package/{context.command-s7a41qjs.js → context.command-a0pwgc3v.js} +12 -12
- package/{guideline.command-qrw84ttb.js → guideline.command-83p3y9w7.js} +2 -2
- package/guidelines/conventions/conventions.instruction.md +84 -1
- package/incrementalBuilder.proc.js +1 -1
- package/{index-ek4mkwxp.js → index-1t5r09v4.js} +10 -10
- package/{index-tn46rr6w.js → index-27jj517n.js} +4 -4
- package/{index-kkya2ped.js → index-4etexq7j.js} +1 -1
- package/{index-ryns915y.js → index-4sgv0wcr.js} +3 -3
- package/{index-ce9755av.js → index-cwa0jvjt.js} +1 -1
- package/{index-0g9ajdz8.js → index-db89awmp.js} +5 -5
- package/{index-dvg362vq.js → index-ejr3h3wc.js} +3 -3
- package/{index-f0t3wjyr.js → index-emsw8h3b.js} +2 -2
- package/{index-x1dbhd80.js → index-j35ceh2c.js} +2 -2
- package/{index-r8z20vnj.js → index-m285dkby.js} +5 -5
- package/{index-g44fykfw.js → index-mr02v9xp.js} +1 -1
- package/{index-681sx6nt.js → index-n57kkvtg.js} +20 -5
- package/{index-ckpwq052.js → index-qch3r961.js} +1 -1
- package/{index-4mtyaqj2.js → index-rm7xj6bc.js} +2 -2
- package/{index-cc1mgv1f.js → index-rzekxec9.js} +4 -4
- package/{index-wc19q8mb.js → index-v76gy4dn.js} +2 -2
- package/{index-8md8zszv.js → index-wm5hw5mr.js} +3 -3
- package/{index-h0mnt0b0.js → index-wxc9p0n0.js} +3 -3
- package/{index-xj5b8c0w.js → index-xesyg6bc.js} +1 -0
- package/index.js +18 -18
- package/{library.command-p3jgf5h2.js → library.command-2b20rx36.js} +3 -3
- package/{localRegistry.command-bms0qn6t.js → localRegistry.command-tdn3373t.js} +6 -6
- package/{module.command-hb3xm07r.js → module.command-ez5psv7q.js} +5 -5
- package/{package.command-fbpa6r4w.js → package.command-dcdya2hn.js} +3 -3
- package/package.json +2 -2
- package/{page.command-92vrmw96.js → page.command-he49r0vd.js} +3 -3
- package/{primitive.command-k6b9jfxr.js → primitive.command-w2hyrf9c.js} +6 -6
- package/{quality.command-89vwmjvf.js → quality.command-8xewbve2.js} +2 -2
- package/{repair.command-nh9jn8rh.js → repair.command-9f9wy32e.js} +5 -5
- package/{scalar.command-zcsjgvax.js → scalar.command-q4ravcd9.js} +4 -4
- package/{workflow.command-jj0cphfm.js → workflow.command-3stj54ek.js} +9 -9
- package/{workspace.command-ma3g994j.js → workspace.command-2pfnrhmw.js} +18 -18
package/.build-stamp
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
d9a9cb283fc6902d147352f88eeb5fbd6d7ea8772a5b896f6abb475c2581fb44
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
AgentScript
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
6
|
-
import"./index-
|
|
4
|
+
} from "./index-wxc9p0n0.js";
|
|
5
|
+
import"./index-v76gy4dn.js";
|
|
6
|
+
import"./index-mr02v9xp.js";
|
|
7
7
|
import"./index-j37qq1f2.js";
|
|
8
8
|
import {
|
|
9
9
|
Workspace,
|
|
10
10
|
command
|
|
11
|
-
} from "./index-
|
|
12
|
-
import"./index-
|
|
11
|
+
} from "./index-qch3r961.js";
|
|
12
|
+
import"./index-n57kkvtg.js";
|
|
13
13
|
import"./index-f39512t6.js";
|
|
14
14
|
import"./index-mxvakhsm.js";
|
|
15
15
|
import"./index-xys926f2.js";
|
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
} from "./index-0wae5ebk.js";
|
|
5
5
|
import {
|
|
6
6
|
ApplicationScript
|
|
7
|
-
} from "./index-
|
|
8
|
-
import"./index-
|
|
7
|
+
} from "./index-m285dkby.js";
|
|
8
|
+
import"./index-emsw8h3b.js";
|
|
9
9
|
import {
|
|
10
10
|
getMobileTargetChoices
|
|
11
11
|
} from "./index-76rn3g2c.js";
|
|
@@ -15,10 +15,10 @@ import {
|
|
|
15
15
|
Sys,
|
|
16
16
|
Workspace,
|
|
17
17
|
command
|
|
18
|
-
} from "./index-
|
|
18
|
+
} from "./index-qch3r961.js";
|
|
19
19
|
import"./index-fgc8r6dj.js";
|
|
20
20
|
import"./index-5vy2jzar.js";
|
|
21
|
-
import"./index-
|
|
21
|
+
import"./index-n57kkvtg.js";
|
|
22
22
|
import"./index-f39512t6.js";
|
|
23
23
|
import"./index-mxvakhsm.js";
|
|
24
24
|
import"./index-1577bej2.js";
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
CsrArtifactBuilder,
|
|
5
5
|
SsrBaseArtifactBuilder,
|
|
6
6
|
precompressArtifacts
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-xesyg6bc.js";
|
|
8
8
|
import"./index-xjd3rqzj.js";
|
|
9
9
|
import"./index-qnv0aqmm.js";
|
|
10
10
|
import"./index-5vy2jzar.js";
|
|
@@ -58,14 +58,15 @@ class ApplicationBuildRunner {
|
|
|
58
58
|
}
|
|
59
59
|
async build({ spinner = false } = {}) {
|
|
60
60
|
const phaseOptions = { spinner };
|
|
61
|
+
const { web } = await this.#app.getConfig();
|
|
61
62
|
await this.#runPhase("prepare", "Preparing output directory", () => this.#app.prepareCommand("build"), undefined, {
|
|
62
63
|
spinner
|
|
63
64
|
});
|
|
64
65
|
if (!this.#fast)
|
|
65
66
|
await this.#runPhase("typecheck", "Typechecking", () => this.typecheck(), undefined, phaseOptions);
|
|
66
67
|
await this.#runPhase("backend", "Compiling backend", () => this.#buildBackend(), (result) => `${result.entrypoints} entrypoints, ${result.outputs} outputs`, phaseOptions);
|
|
67
|
-
await this.#runPhase("ssr", "Building SSR route artifacts", () => this.#buildSsr(), (result) => result ? `${result.allRoutes.manifest.routeIds.length} routes, ${result.allRoutes.manifest.knownEntries.length} entries` : "skipped", phaseOptions);
|
|
68
|
-
await this.#runPhase("csr", "Building CSR assets", () => this.#buildCsr(), (result) => result?.outputDir ?? "skipped", phaseOptions);
|
|
68
|
+
await this.#runPhase("ssr", "Building SSR route artifacts", async () => web.ssr ? await this.#buildSsr() : null, (result) => result ? `${result.allRoutes.manifest.routeIds.length} routes, ${result.allRoutes.manifest.knownEntries.length} entries` : web.ssr ? "skipped" : "disabled by akan.config.ts web.ssr", phaseOptions);
|
|
69
|
+
await this.#runPhase("csr", "Building CSR assets", async () => web.csr ? await this.#buildCsr() : null, (result) => result?.outputDir ?? (web.csr ? "skipped" : "disabled by akan.config.ts web.csr"), phaseOptions);
|
|
69
70
|
await this.#runPhase("compress", "Compressing static assets", () => precompressArtifacts(this.#app), (result) => result.files > 0 ? `${result.files} files, ${ApplicationBuildRunner.formatBytes(result.inputBytes)} -> gzip ${ApplicationBuildRunner.formatBytes(result.outputBytes)} / br ${ApplicationBuildRunner.formatBytes(result.brotliBytes)}` : "no files", phaseOptions);
|
|
70
71
|
await this.#runPhase("metadata", "Writing production metadata", () => this.#buildAppMeta(), undefined, {
|
|
71
72
|
spinner
|
|
@@ -115,6 +116,7 @@ class ApplicationBuildRunner {
|
|
|
115
116
|
const backendExternals = [
|
|
116
117
|
...new Set([...akanConfig.externalLibs, ...SSR_RENDER_EXTERNALS, ...AKAN_OPTIONAL_BACKEND_EXTERNALS])
|
|
117
118
|
];
|
|
119
|
+
const { web } = akanConfig;
|
|
118
120
|
const backendEntryPoints = [`${this.#app.cwdPath}/main.ts`, `${this.#app.cwdPath}/server.ts`];
|
|
119
121
|
for (const entrypoint of backendEntryPoints) {
|
|
120
122
|
if (!await Bun.file(entrypoint).exists())
|
|
@@ -129,7 +131,7 @@ class ApplicationBuildRunner {
|
|
|
129
131
|
define: { "process.env.NODE_ENV": JSON.stringify("production") },
|
|
130
132
|
plugins: backendExternals.length > 0 ? [this.#createExternalSpecifiersPlugin(backendExternals)] : []
|
|
131
133
|
});
|
|
132
|
-
const rscWorkerResult = await this.#buildOrThrow("rsc-worker", {
|
|
134
|
+
const rscWorkerResult = web.ssr ? await this.#buildOrThrow("rsc-worker", {
|
|
133
135
|
entrypoints: [this.#resolveRscWorkerBuildEntry()],
|
|
134
136
|
outdir: this.#app.dist.cwdPath,
|
|
135
137
|
target: "bun",
|
|
@@ -138,7 +140,7 @@ class ApplicationBuildRunner {
|
|
|
138
140
|
conditions: ["react-server"],
|
|
139
141
|
define: { "process.env.NODE_ENV": JSON.stringify("production") },
|
|
140
142
|
plugins: backendExternals.length > 0 ? [this.#createExternalSpecifiersPlugin(backendExternals)] : []
|
|
141
|
-
});
|
|
143
|
+
}) : null;
|
|
142
144
|
const consoleRuntimeResult = await this.#buildOrThrow("console-runtime", {
|
|
143
145
|
entrypoints: [this.#resolveConsoleRuntimeBuildEntry()],
|
|
144
146
|
outdir: this.#app.dist.cwdPath,
|
|
@@ -149,8 +151,8 @@ class ApplicationBuildRunner {
|
|
|
149
151
|
});
|
|
150
152
|
await this.#writeConsoleShim();
|
|
151
153
|
return {
|
|
152
|
-
entrypoints: backendEntryPoints.length + 2,
|
|
153
|
-
outputs: backendResult.outputs.length + rscWorkerResult
|
|
154
|
+
entrypoints: backendEntryPoints.length + (rscWorkerResult ? 2 : 1),
|
|
155
|
+
outputs: backendResult.outputs.length + (rscWorkerResult?.outputs.length ?? 0) + consoleRuntimeResult.outputs.length + 1
|
|
154
156
|
};
|
|
155
157
|
}
|
|
156
158
|
async#writeConsoleShim() {
|
package/buildBatch.proc.js
CHANGED
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
FontOptimizer,
|
|
6
6
|
PagesBundleBuilder,
|
|
7
7
|
SsrBaseArtifactBuilder
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-xesyg6bc.js";
|
|
9
9
|
import"./index-xjd3rqzj.js";
|
|
10
10
|
import"./index-qnv0aqmm.js";
|
|
11
11
|
import"./index-5vy2jzar.js";
|
|
12
12
|
import {
|
|
13
13
|
AppExecutor,
|
|
14
14
|
WorkspaceExecutor
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-n57kkvtg.js";
|
|
16
16
|
import"./index-f39512t6.js";
|
|
17
17
|
import"./index-mxvakhsm.js";
|
|
18
18
|
import"./index-1577bej2.js";
|
|
@@ -25,9 +25,9 @@ import {
|
|
|
25
25
|
selectLocalDevHost,
|
|
26
26
|
sortIosRunTargets,
|
|
27
27
|
writeRootCapacitorConfig
|
|
28
|
-
} from "./index-
|
|
28
|
+
} from "./index-cwa0jvjt.js";
|
|
29
29
|
import"./index-76rn3g2c.js";
|
|
30
|
-
import"./index-
|
|
30
|
+
import"./index-n57kkvtg.js";
|
|
31
31
|
import"./index-f39512t6.js";
|
|
32
32
|
import"./index-mxvakhsm.js";
|
|
33
33
|
import"./index-1577bej2.js";
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
CloudScript
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
6
|
-
import"./index-
|
|
4
|
+
} from "./index-db89awmp.js";
|
|
5
|
+
import"./index-wm5hw5mr.js";
|
|
6
|
+
import"./index-j35ceh2c.js";
|
|
7
7
|
import {
|
|
8
8
|
GlobalConfig
|
|
9
9
|
} from "./index-sh01r3pm.js";
|
|
10
|
-
import"./index-
|
|
11
|
-
import"./index-
|
|
10
|
+
import"./index-m285dkby.js";
|
|
11
|
+
import"./index-emsw8h3b.js";
|
|
12
12
|
import"./index-76rn3g2c.js";
|
|
13
13
|
import {
|
|
14
14
|
Workspace,
|
|
15
15
|
command
|
|
16
|
-
} from "./index-
|
|
16
|
+
} from "./index-qch3r961.js";
|
|
17
17
|
import"./index-fgc8r6dj.js";
|
|
18
18
|
import"./index-5vy2jzar.js";
|
|
19
|
-
import"./index-
|
|
19
|
+
import"./index-n57kkvtg.js";
|
|
20
20
|
import"./index-f39512t6.js";
|
|
21
21
|
import"./index-mxvakhsm.js";
|
|
22
22
|
import"./index-1577bej2.js";
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
ContextScript
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
6
|
-
import"./index-
|
|
7
|
-
import"./index-
|
|
8
|
-
import"./index-
|
|
9
|
-
import"./index-
|
|
4
|
+
} from "./index-1t5r09v4.js";
|
|
5
|
+
import"./index-4sgv0wcr.js";
|
|
6
|
+
import"./index-ejr3h3wc.js";
|
|
7
|
+
import"./index-rm7xj6bc.js";
|
|
8
|
+
import"./index-rzekxec9.js";
|
|
9
|
+
import"./index-27jj517n.js";
|
|
10
10
|
import"./index-ss469dec.js";
|
|
11
|
-
import"./index-
|
|
12
|
-
import"./index-
|
|
11
|
+
import"./index-4etexq7j.js";
|
|
12
|
+
import"./index-cwa0jvjt.js";
|
|
13
13
|
import"./index-sh01r3pm.js";
|
|
14
|
-
import"./index-
|
|
15
|
-
import"./index-
|
|
14
|
+
import"./index-v76gy4dn.js";
|
|
15
|
+
import"./index-mr02v9xp.js";
|
|
16
16
|
import"./index-j37qq1f2.js";
|
|
17
17
|
import"./index-76rn3g2c.js";
|
|
18
18
|
import {
|
|
19
19
|
Workspace,
|
|
20
20
|
command
|
|
21
|
-
} from "./index-
|
|
22
|
-
import"./index-
|
|
21
|
+
} from "./index-qch3r961.js";
|
|
22
|
+
import"./index-n57kkvtg.js";
|
|
23
23
|
import"./index-f39512t6.js";
|
|
24
24
|
import"./index-mxvakhsm.js";
|
|
25
25
|
import"./index-xys926f2.js";
|
|
@@ -271,6 +271,44 @@ are, because those are the ones the server could have done.
|
|
|
271
271
|
Full version with code, the `Tab` composition example, and a review checklist: `get_guideline` with `ssrRule`, or
|
|
272
272
|
`akan guideline show ssrRule`.
|
|
273
273
|
|
|
274
|
+
## Web Surfaces — Building And Serving Without SSR/CSR
|
|
275
|
+
|
|
276
|
+
An app serves three things: the API, the SSR/RSC web renderer, and the CSR single-file bundle. The API is always
|
|
277
|
+
on; the other two are declared in `akan.config.ts` as **`web: true | false | { csr: boolean }`** and can be
|
|
278
|
+
narrowed again per deployment.
|
|
279
|
+
|
|
280
|
+
```ts
|
|
281
|
+
const config: AppConfig = { web: { csr: false } }; // web without the mobile bundle
|
|
282
|
+
const config: AppConfig = { web: false }; // api only
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
- **`web: { csr: false }`** drops the CSR build phase and the `/__csr` + `?csr=true` routes. The CSR bundle is
|
|
286
|
+
what the Capacitor mobile build ships, so a web-only deployment never needs it — and an app that declares a
|
|
287
|
+
`mobile` section is refused, because `akan build-ios` copies `dist/apps/<app>/csr/<target>.html` into the
|
|
288
|
+
native project.
|
|
289
|
+
- **`web: false`** is an API-only build: no base artifact, no pages or client bundles, no RSC worker
|
|
290
|
+
entrypoint, and no `public/` in the image (the web router's catch-all is its only reader). Nothing under
|
|
291
|
+
`page/` is served, including routes a lib contributed through `syncPageLibs`.
|
|
292
|
+
- **There is no CSR-without-SSR option, by type.** The CSR bundle inlines the stylesheet the SSR base artifact
|
|
293
|
+
compiles, so it would ship an unstyled app — the object form therefore carries only `csr`, and SSR goes off
|
|
294
|
+
only through the whole-surface `false`.
|
|
295
|
+
- **At runtime, `AKAN_SSR` and `AKAN_CSR` narrow further and never widen** — `false` or `0` turns one off, and
|
|
296
|
+
`AKAN_SSR=false` takes CSR with it for the same reason the option has no such pair. A surface the build left
|
|
297
|
+
out cannot be switched back on, and the boot log names what the process ended up serving. The generated
|
|
298
|
+
Dockerfile writes the build's own answer as the image default.
|
|
299
|
+
- **A build with no web artifact boots the API instead of crashing.** `WebRouter.create` returns `null` when
|
|
300
|
+
`.akan/artifact/base-artifact.json` is absent — an api-only build, or a workspace with no `page/` at all.
|
|
301
|
+
- `akan start` ignores `web` and keeps the whole dev surface: the incremental builder is also the file watcher,
|
|
302
|
+
so switching it off would take server-code HMR with it. It warns once when the config and the dev server
|
|
303
|
+
disagree.
|
|
304
|
+
- The saving is mostly the RSC worker, which is a **separate process per web-serving replica**. Measured on
|
|
305
|
+
`apps/akan` at boot plus one render: 350MB across 3 processes with SSR on, 120MB across 2 with
|
|
306
|
+
`AKAN_SSR=false`, and the built image goes 86MB → 6.2MB when the artifacts are left out of it too.
|
|
307
|
+
- **The generated image installs `ca-certificates` and `tzdata` and nothing else.** It used to carry the whole
|
|
308
|
+
Chromium runtime, ffmpeg, `build-essential`, `python3` and `redis` in every app's image whether or not the app
|
|
309
|
+
reached for any of them. An app that needs one declares it in `docker.preRuns` / `docker.postRuns`, which are
|
|
310
|
+
emitted around the `bun install` — that is the migration for a `puppeteer` or `ffmpeg` app.
|
|
311
|
+
|
|
274
312
|
## React Components And Styling (`**/*.tsx`)
|
|
275
313
|
|
|
276
314
|
- Components are `export const X = ({ … }: XProps) => { return (…); };` — arrow const with a block body. `export default` is reserved for pages, layouts, and `lazy()` targets.
|
|
@@ -369,8 +407,23 @@ workflow changes.
|
|
|
369
407
|
- Slice-level `guards` only reach the generated query/mutation endpoints. A `pubsub`/`message` endpoint is unguarded unless it declares its own `guards` in its signal option.
|
|
370
408
|
- A pubsub room is authorized once, at subscribe. When a socket's credential changes the framework re-runs each room's guards and unsubscribes the ones that now fail (`SignalResolver.revalidateWsRooms`), so guards must stay side-effect free and safe to re-run.
|
|
371
409
|
- A websocket carries its credential in the handshake snapshot on `ws.data` (`AppWsData`); clients that hold the token in memory send it with `fetch.setJwt(...)`, which forwards an auth frame over the socket.
|
|
410
|
+
- **Never read the caller's IP off the socket or the request peer — take `.with(Ip)`.** Every app runs behind
|
|
411
|
+
the federation gateway, so `ws.remoteAddress` and the child's own peer are the *gateway* (`127.0.0.1`) for
|
|
412
|
+
every caller and for the whole life of every socket. `Ip` reads what the gateway recorded
|
|
413
|
+
(`x-real-ip`, then the first `x-forwarded-for` entry) and falls back to the peer only when nothing proxied
|
|
414
|
+
the call; `context.getClientIp()` is the same answer inside a guard or middleware. It arrives unwrapped from
|
|
415
|
+
its `::ffff:` IPv4-mapped form, so it can address a `udp4` socket as well as identify a caller, and it is
|
|
416
|
+
`null` rather than a placeholder when genuinely unknown — a loopback-looking address for an unknown caller
|
|
417
|
+
is the failure this replaced. The gateway also forwards the client port (`x-forwarded-port`, read with
|
|
418
|
+
`context.getClientPort()`) along with host and protocol.
|
|
372
419
|
- **Every socket carries a `socketId`, and only the framework mints one.** `AppWsData` assigns it at the handshake, and a `message` / `pubsub` handler reads it off the `Ws` internal arg — `.with(Ws)` hands `{ ws, socketId, subscribe, on, off }`. Never mint your own from `ws.data`: the room bookkeeping keys on the framework's id, and a second one fails to match it silently. It identifies a **connection**, not a caller — a reconnect gets a new id and the federation gateway's own socket is a different one — so per-user state keys on the account, never on this.
|
|
373
420
|
|
|
421
|
+
- **A cleanup registered with `ws.on("disconnect" | "unsubscribe", fn)` is scoped to the call that registered it.**
|
|
422
|
+
From a `pubsub` subscribe it belongs to that room — `unsubscribe` runs when the client leaves it or a credential
|
|
423
|
+
change revokes it, `disconnect` when the socket closes while still subscribed — so a room already left runs
|
|
424
|
+
neither again, and cleanup that must happen either way registers for both. From a `message` handler it belongs to
|
|
425
|
+
the socket and runs at close. A handler that throws is logged and never blocks the rest of the teardown.
|
|
426
|
+
|
|
374
427
|
### Authorization Defaults
|
|
375
428
|
|
|
376
429
|
- **Every `slice()` takes an explicit `{ guards: {…} }` second argument, and `root:` is always `Admin`.**
|
|
@@ -389,6 +442,28 @@ workflow changes.
|
|
|
389
442
|
- `.body(...)` / `.param(...)` args accept `ConstantFieldTypeInput` only: scalars, model refs, or `enumOf(...)`.
|
|
390
443
|
- Numbers must use `Int` or `Float` — `Number` is rejected (`pkgs/akanjs/signal/endpointInfo.ts`).
|
|
391
444
|
- `Upload` is valid only inside a mutation flagged for file upload: `mutation([cnst.File], { fileUpload: true }).body("files", [Upload])`, as the `file` module does. It is not a model field type.
|
|
445
|
+
- Bytes are `Binary`, never `Any` — see Scalar & Field Type Reference.
|
|
446
|
+
|
|
447
|
+
### Binary Pubsub
|
|
448
|
+
|
|
449
|
+
- **`pubsub(Binary)` sends its payload in a websocket binary frame**, skipping the JSON `{ type: "pub" }`
|
|
450
|
+
envelope and the base64 a JSON wire would need. The client's subscribe callback receives a `Uint8Array`.
|
|
451
|
+
Nothing else is declared: the return type is the whole switch, and text and binary frames coexist on one
|
|
452
|
+
socket, so every JSON endpoint is untouched. The optimization applies only when the **whole** return is
|
|
453
|
+
`Binary` — `[Binary]`, or a `Binary` inside a model, falls back to base64.
|
|
454
|
+
- **A declared `Binary` room coalesces under backpressure**: while a socket cannot keep up the room keeps only
|
|
455
|
+
its newest frame and drops the rest, which is what a telemetry or video stream wants. Declare
|
|
456
|
+
`pubsub(Binary, { backpressure: "queue" })` when the frames are a sequence a subscriber must see in full, such
|
|
457
|
+
as deltas against a base it already holds; the send buffer then grows with the slowest subscriber. Coalescing
|
|
458
|
+
is keyed by the endpoint, not carried with the frame, so this process, an IPC deliver and a Redis fan-out all
|
|
459
|
+
reach the same answer. Coalesced frames are counted in `pubsubCoalesceCount` on the replica's metrics report.
|
|
460
|
+
- **A `pubsub(Any)` that happens to carry bytes is framed too, and warns once.** `Any` passes a `Buffer` through
|
|
461
|
+
untouched, so the transport sees bytes and sends them whole rather than as a number array — an undeclared
|
|
462
|
+
publisher is fixed rather than left corrupt. It is still not the contract: it queues rather than coalescing
|
|
463
|
+
(nobody declared lossy delivery for that room), and a Redis fan-out still JSON-stringifies it. Declare
|
|
464
|
+
`Binary`.
|
|
465
|
+
- The federation gateway relays a binary frame unchanged, and Bun IPC carries bytes as bytes, so the only hop
|
|
466
|
+
that needed teaching was the socket itself. A cross-server (Redis) fan-out encodes it as protobuf `bytes`.
|
|
392
467
|
|
|
393
468
|
### Mutation HTTP Verb
|
|
394
469
|
|
|
@@ -634,10 +709,18 @@ commands, transcript compaction, and the built-in tool semantics: `get_guideline
|
|
|
634
709
|
|
|
635
710
|
### Scalar & Field Type Reference
|
|
636
711
|
|
|
637
|
-
- **Import from `akanjs/base`** (real classes/helpers, not globals): `Int`, `Float`, `ID`, `Any`, `Upload`, `enumOf`, and the `dayjs` factory. There is **no `JSON` scalar** — use `Any` for open/flexible payloads.
|
|
712
|
+
- **Import from `akanjs/base`** (real classes/helpers, not globals): `Int`, `Float`, `ID`, `Any`, `Binary`, `Upload`, `enumOf`, and the `dayjs` factory. There is **no `JSON` scalar** — use `Any` for open/flexible payloads.
|
|
638
713
|
- **Use the JS globals directly (no import needed)**: `String`, `Boolean`, `Date`. They are monkey-patched to behave like scalars, so `field(String)` typechecks.
|
|
639
714
|
- **`Number` is not a valid field/body type.** `NumberConstructor` is intentionally not augmented, so `field(Number)` / `.body("x", Number)` fails to typecheck. Use `Int` or `Float` instead.
|
|
640
715
|
- Runtime resolution of every scalar (globals included) goes through `PrimitiveRegistry` by `refName` (`pkgs/akanjs/base/primitiveRegistry.ts`).
|
|
716
|
+
- **`Binary` is raw bytes on the wire, and never a model field.** It is `Uint8Array` on both sides — a Node
|
|
717
|
+
`Buffer` is one, so a server handler may pass one straight in — and it accepts base64 in either direction, so
|
|
718
|
+
the same declaration serves a JSON body and a binary frame. It is **not storable**: the class build refuses
|
|
719
|
+
`field(Binary)` naming the `File` model instead, because every non-base field lives in the `_doc` JSON column
|
|
720
|
+
and bytes would sit there as base64 and ride every read of the row. Never send bytes as `Any` — `Any` passes a
|
|
721
|
+
`Buffer` through untouched and `JSON.stringify` then spells it `{ type: "Buffer", data: number[] }`, which
|
|
722
|
+
`JSON.parse` never restores; the result is 3.6x the wire and a shape that only breaks at the first byte-offset
|
|
723
|
+
read. MCP refuses a `Binary` return for the same reason it refuses `Any`.
|
|
641
724
|
|
|
642
725
|
### Text Search Fields — the `text` role
|
|
643
726
|
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
RepairRunner
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-4sgv0wcr.js";
|
|
5
5
|
import {
|
|
6
6
|
WorkflowRunner
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-ejr3h3wc.js";
|
|
8
8
|
import {
|
|
9
9
|
ScalarScript
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-rm7xj6bc.js";
|
|
11
11
|
import {
|
|
12
12
|
PrimitiveScript
|
|
13
|
-
} from "./index-
|
|
13
|
+
} from "./index-rzekxec9.js";
|
|
14
14
|
import {
|
|
15
15
|
ModuleScript
|
|
16
|
-
} from "./index-
|
|
16
|
+
} from "./index-27jj517n.js";
|
|
17
17
|
import {
|
|
18
18
|
isPlaceholderAppId
|
|
19
|
-
} from "./index-
|
|
19
|
+
} from "./index-cwa0jvjt.js";
|
|
20
20
|
import {
|
|
21
21
|
AkanContextAnalyzer,
|
|
22
22
|
akanMcpInstallConfigPaths,
|
|
@@ -27,14 +27,14 @@ import {
|
|
|
27
27
|
renderDoctorText,
|
|
28
28
|
resourceList,
|
|
29
29
|
upsertCodexMcpServerBlock
|
|
30
|
-
} from "./index-
|
|
30
|
+
} from "./index-v76gy4dn.js";
|
|
31
31
|
import {
|
|
32
32
|
buildAkanModuleContextIndex,
|
|
33
33
|
createWorkflowBaselineSummary,
|
|
34
34
|
createWorkflowStepRegistry,
|
|
35
35
|
jsonText,
|
|
36
36
|
toolingRolloutGate
|
|
37
|
-
} from "./index-
|
|
37
|
+
} from "./index-mr02v9xp.js";
|
|
38
38
|
import {
|
|
39
39
|
Prompter
|
|
40
40
|
} from "./index-j37qq1f2.js";
|
|
@@ -45,10 +45,10 @@ import {
|
|
|
45
45
|
CommandContainer,
|
|
46
46
|
runner,
|
|
47
47
|
script
|
|
48
|
-
} from "./index-
|
|
48
|
+
} from "./index-qch3r961.js";
|
|
49
49
|
import {
|
|
50
50
|
AppExecutor
|
|
51
|
-
} from "./index-
|
|
51
|
+
} from "./index-n57kkvtg.js";
|
|
52
52
|
|
|
53
53
|
// pkgs/@akanjs/cli/context/context.script.ts
|
|
54
54
|
import { Logger } from "akanjs/common";
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./index-ss469dec.js";
|
|
5
5
|
import {
|
|
6
6
|
PageScript
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-4etexq7j.js";
|
|
8
8
|
import {
|
|
9
9
|
AiSession
|
|
10
10
|
} from "./index-sh01r3pm.js";
|
|
@@ -15,17 +15,17 @@ import {
|
|
|
15
15
|
generatedFilesForSync,
|
|
16
16
|
moduleSourcePaths,
|
|
17
17
|
sourceFile
|
|
18
|
-
} from "./index-
|
|
18
|
+
} from "./index-mr02v9xp.js";
|
|
19
19
|
import {
|
|
20
20
|
Prompter
|
|
21
21
|
} from "./index-j37qq1f2.js";
|
|
22
22
|
import {
|
|
23
23
|
runner,
|
|
24
24
|
script
|
|
25
|
-
} from "./index-
|
|
25
|
+
} from "./index-qch3r961.js";
|
|
26
26
|
import {
|
|
27
27
|
ModuleExecutor
|
|
28
|
-
} from "./index-
|
|
28
|
+
} from "./index-n57kkvtg.js";
|
|
29
29
|
import {
|
|
30
30
|
FileSys
|
|
31
31
|
} from "./index-67546d0j.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
AkanContextAnalyzer
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-v76gy4dn.js";
|
|
5
5
|
import {
|
|
6
6
|
createRepairReport,
|
|
7
7
|
generatedFilePathsForTarget,
|
|
8
8
|
renderRepairReport,
|
|
9
9
|
writeGeneratedSyncState,
|
|
10
10
|
writeWorkflowRunArtifact
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-mr02v9xp.js";
|
|
12
12
|
import {
|
|
13
13
|
runner
|
|
14
|
-
} from "./index-
|
|
14
|
+
} from "./index-qch3r961.js";
|
|
15
15
|
|
|
16
16
|
// pkgs/@akanjs/cli/repair/repair.runner.ts
|
|
17
17
|
var commandForShell = (command) => command.startsWith("akan ") ? `bun run ${command}` : command;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
CloudRunner
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-wm5hw5mr.js";
|
|
5
5
|
import {
|
|
6
6
|
PackageScript
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-j35ceh2c.js";
|
|
8
8
|
import {
|
|
9
9
|
AiSession,
|
|
10
10
|
CloudApi,
|
|
@@ -12,13 +12,13 @@ import {
|
|
|
12
12
|
} from "./index-sh01r3pm.js";
|
|
13
13
|
import {
|
|
14
14
|
ApplicationScript
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-m285dkby.js";
|
|
16
16
|
import {
|
|
17
17
|
script
|
|
18
|
-
} from "./index-
|
|
18
|
+
} from "./index-qch3r961.js";
|
|
19
19
|
import {
|
|
20
20
|
PkgExecutor
|
|
21
|
-
} from "./index-
|
|
21
|
+
} from "./index-n57kkvtg.js";
|
|
22
22
|
|
|
23
23
|
// pkgs/@akanjs/cli/cloud/cloud.script.ts
|
|
24
24
|
import { Logger } from "akanjs/common";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
AkanContextAnalyzer
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-v76gy4dn.js";
|
|
5
5
|
import {
|
|
6
6
|
WorkflowExecutor,
|
|
7
7
|
compactWorkflowInputs,
|
|
@@ -23,10 +23,10 @@ import {
|
|
|
23
23
|
workflowCommandsForPlan,
|
|
24
24
|
workflowPlanApproval,
|
|
25
25
|
writeWorkflowRunArtifact
|
|
26
|
-
} from "./index-
|
|
26
|
+
} from "./index-mr02v9xp.js";
|
|
27
27
|
import {
|
|
28
28
|
runner
|
|
29
|
-
} from "./index-
|
|
29
|
+
} from "./index-qch3r961.js";
|
|
30
30
|
|
|
31
31
|
// pkgs/@akanjs/cli/workflow/workflow.runner.ts
|
|
32
32
|
import { mkdir, readFile, writeFile } from "fs/promises";
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
runner,
|
|
4
4
|
script
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-qch3r961.js";
|
|
6
6
|
import {
|
|
7
7
|
LibExecutor
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-n57kkvtg.js";
|
|
9
9
|
|
|
10
10
|
// pkgs/@akanjs/cli/semver.ts
|
|
11
11
|
var stripRangeOperator = (version) => version.replace(/^[\s^~>=<v]+/, "").trim();
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
runner,
|
|
4
4
|
script
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-qch3r961.js";
|
|
6
6
|
import {
|
|
7
7
|
PkgExecutor
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-n57kkvtg.js";
|
|
9
9
|
import {
|
|
10
10
|
TypeScriptDependencyScanner
|
|
11
11
|
} from "./index-46tjzh6s.js";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
LibraryScript
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-emsw8h3b.js";
|
|
5
5
|
import {
|
|
6
6
|
resolveMobileTargets
|
|
7
7
|
} from "./index-76rn3g2c.js";
|
|
8
8
|
import {
|
|
9
9
|
runner,
|
|
10
10
|
script
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-qch3r961.js";
|
|
12
12
|
import {
|
|
13
13
|
HmrWatcher,
|
|
14
14
|
WatchRootResolver
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
LibExecutor,
|
|
19
19
|
PkgExecutor,
|
|
20
20
|
WorkspaceExecutor
|
|
21
|
-
} from "./index-
|
|
21
|
+
} from "./index-n57kkvtg.js";
|
|
22
22
|
import {
|
|
23
23
|
__require
|
|
24
24
|
} from "./index-yb2wsc7f.js";
|
|
@@ -1898,9 +1898,9 @@ function openBrowser(url) {
|
|
|
1898
1898
|
}
|
|
1899
1899
|
|
|
1900
1900
|
// pkgs/@akanjs/cli/application/application.runner.ts
|
|
1901
|
-
var loadBuildRunner = async () => (await import("./applicationBuildRunner-
|
|
1901
|
+
var loadBuildRunner = async () => (await import("./applicationBuildRunner-k6dna8sz.js")).ApplicationBuildRunner;
|
|
1902
1902
|
var loadReleasePackager = async () => (await import("./applicationReleasePackager-93nzdfsy.js")).ApplicationReleasePackager;
|
|
1903
|
-
var loadCapacitorApp = async () => (await import("./capacitorApp-
|
|
1903
|
+
var loadCapacitorApp = async () => (await import("./capacitorApp-4g1s9n37.js")).CapacitorApp;
|
|
1904
1904
|
var loadAbstractCompactor = async () => (await import("./abstractCompactor-20e0cwbs.js")).AbstractCompactor;
|
|
1905
1905
|
var loadPrompts = async () => await import("@inquirer/prompts");
|
|
1906
1906
|
|
|
@@ -320,6 +320,7 @@ class AkanAppConfig {
|
|
|
320
320
|
rootPackageJson;
|
|
321
321
|
docker;
|
|
322
322
|
defaultDatabaseMode;
|
|
323
|
+
web;
|
|
323
324
|
externalLibs;
|
|
324
325
|
barrelImports;
|
|
325
326
|
optimizeImports;
|
|
@@ -362,8 +363,15 @@ class AkanAppConfig {
|
|
|
362
363
|
this.syncPageLibs = config?.syncPageLibs ?? false;
|
|
363
364
|
this.hasMobileConfig = Boolean(config.mobile);
|
|
364
365
|
this.mobile = this.#resolveMobileConfig(config.mobile);
|
|
366
|
+
this.web = this.#resolveWebConfig(config.web);
|
|
365
367
|
this.docker = this.#makeDockerContent(config?.docker ?? {});
|
|
366
368
|
}
|
|
369
|
+
#resolveWebConfig(web) {
|
|
370
|
+
const resolved = typeof web === "object" ? { ssr: true, csr: web.csr } : { ssr: web ?? true, csr: web ?? true };
|
|
371
|
+
if (!resolved.csr && this.hasMobileConfig)
|
|
372
|
+
throw new Error(`apps/${this.app.name}/akan.config.ts turns the CSR bundle off but declares mobile targets; the Capacitor build ships that bundle. Drop the mobile section or leave CSR on.`);
|
|
373
|
+
return resolved;
|
|
374
|
+
}
|
|
367
375
|
#resolveMobileConfig(mobile) {
|
|
368
376
|
const {
|
|
369
377
|
targets: rawTargets,
|
|
@@ -485,10 +493,14 @@ class AkanAppConfig {
|
|
|
485
493
|
const postRunScripts = this.#getDockerRunScripts(docker.postRuns ?? []);
|
|
486
494
|
const imageScript = docker.image ? this.#getDockerImageScript(docker.image, "oven/bun:1-slim") : "FROM oven/bun:1-slim";
|
|
487
495
|
const command = docker.command ?? ["bun", "main.js"];
|
|
496
|
+
const webEnvLines = [
|
|
497
|
+
...this.web.ssr ? [] : ["ENV AKAN_SSR=false"],
|
|
498
|
+
...this.web.csr ? [] : ["ENV AKAN_CSR=false"]
|
|
499
|
+
].join(`
|
|
500
|
+
`);
|
|
488
501
|
const content = `${imageScript}
|
|
502
|
+
RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends ca-certificates tzdata && rm -rf /var/lib/apt/lists/*
|
|
489
503
|
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
|
|
490
|
-
RUN apt-get update && apt-get upgrade -y
|
|
491
|
-
RUN apt-get install -y --no-install-recommends git redis build-essential python3 ca-certificates fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release wget xdg-utils udev ffmpeg
|
|
492
504
|
ARG TARGETARCH
|
|
493
505
|
${preRunScripts.join(`
|
|
494
506
|
`)}
|
|
@@ -509,7 +521,7 @@ ${this.basePaths.size ? `ENV AKAN_PUBLIC_BASE_PATHS=${[...this.basePaths].join("
|
|
|
509
521
|
ENV AKAN_PUBLIC_DEFAULT_LOCALE=${this.i18n.defaultLocale}
|
|
510
522
|
ENV AKAN_PUBLIC_LOCALES=${this.i18n.locales.join(",")}
|
|
511
523
|
ENV AKAN_PUBLIC_OPERATION_MODE=cloud
|
|
512
|
-
|
|
524
|
+
${webEnvLines}
|
|
513
525
|
CMD [${command.map((c) => `"${c}"`).join(",")}]`;
|
|
514
526
|
return {
|
|
515
527
|
content,
|
|
@@ -2656,10 +2668,13 @@ class AppExecutor extends SysExecutor {
|
|
|
2656
2668
|
await Promise.all([this.dist.mkdir("private"), this.dist.mkdir("public")]);
|
|
2657
2669
|
await Promise.all([
|
|
2658
2670
|
this.cp("private", `${this.dist.cwdPath}/private`, { dereference: true }),
|
|
2659
|
-
this.cp("public", `${this.dist.cwdPath}/public`, { dereference: true })
|
|
2671
|
+
...akanConfig2.web.ssr ? [this.cp("public", `${this.dist.cwdPath}/public`, { dereference: true })] : []
|
|
2660
2672
|
]);
|
|
2661
|
-
} else
|
|
2673
|
+
} else {
|
|
2662
2674
|
await this.removeDir(".akan");
|
|
2675
|
+
if (!akanConfig2.web.ssr || !akanConfig2.web.csr)
|
|
2676
|
+
this.logger.warn(`akan.config.ts disables web.${!akanConfig2.web.ssr ? "ssr" : "csr"}; \`akan start\` still serves it, \`akan build\` will not`);
|
|
2677
|
+
}
|
|
2663
2678
|
if (type === "start")
|
|
2664
2679
|
process.env.NODE_ENV = "development";
|
|
2665
2680
|
const devPort = type === "start" ? (await this.getDevPort()).toString() : undefined;
|
|
@@ -9,14 +9,14 @@ import {
|
|
|
9
9
|
createPassedPrimitiveReport,
|
|
10
10
|
generatedFilesForSync,
|
|
11
11
|
scalarChangedFiles
|
|
12
|
-
} from "./index-
|
|
12
|
+
} from "./index-mr02v9xp.js";
|
|
13
13
|
import {
|
|
14
14
|
Prompter
|
|
15
15
|
} from "./index-j37qq1f2.js";
|
|
16
16
|
import {
|
|
17
17
|
runner,
|
|
18
18
|
script
|
|
19
|
-
} from "./index-
|
|
19
|
+
} from "./index-qch3r961.js";
|
|
20
20
|
|
|
21
21
|
// pkgs/@akanjs/cli/scalar/scalar.prompt.ts
|
|
22
22
|
import { input } from "@inquirer/prompts";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
ModuleScript
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-27jj517n.js";
|
|
5
5
|
import {
|
|
6
6
|
addFieldUiPolicyForType,
|
|
7
7
|
coerceFieldDefault,
|
|
@@ -34,15 +34,15 @@ import {
|
|
|
34
34
|
sourceFile,
|
|
35
35
|
validationCommandsForTarget,
|
|
36
36
|
viaBuilderParameterName
|
|
37
|
-
} from "./index-
|
|
37
|
+
} from "./index-mr02v9xp.js";
|
|
38
38
|
import {
|
|
39
39
|
script
|
|
40
|
-
} from "./index-
|
|
40
|
+
} from "./index-qch3r961.js";
|
|
41
41
|
import {
|
|
42
42
|
AppExecutor,
|
|
43
43
|
LibExecutor,
|
|
44
44
|
ModuleExecutor
|
|
45
|
-
} from "./index-
|
|
45
|
+
} from "./index-n57kkvtg.js";
|
|
46
46
|
|
|
47
47
|
// pkgs/@akanjs/cli/primitive/primitive.script.ts
|
|
48
48
|
import { capitalize } from "akanjs/common";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
workflowRunArtifactPath,
|
|
4
4
|
workflowSyncDir
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-mr02v9xp.js";
|
|
6
6
|
import {
|
|
7
7
|
AppExecutor,
|
|
8
8
|
LibExecutor,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
readDevkitVersion,
|
|
12
12
|
rootAllowedDirs,
|
|
13
13
|
rootAllowedFiles
|
|
14
|
-
} from "./index-
|
|
14
|
+
} from "./index-n57kkvtg.js";
|
|
15
15
|
import {
|
|
16
16
|
collectRecipeSources,
|
|
17
17
|
findInlineRecipeDuplicates,
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
} from "./index-sh01r3pm.js";
|
|
8
8
|
import {
|
|
9
9
|
openBrowser
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-m285dkby.js";
|
|
11
11
|
import {
|
|
12
12
|
runner
|
|
13
|
-
} from "./index-
|
|
13
|
+
} from "./index-qch3r961.js";
|
|
14
14
|
import {
|
|
15
15
|
AppExecutor,
|
|
16
16
|
WorkspaceExecutor
|
|
17
|
-
} from "./index-
|
|
17
|
+
} from "./index-n57kkvtg.js";
|
|
18
18
|
|
|
19
19
|
// pkgs/@akanjs/cli/npmRegistry.ts
|
|
20
20
|
var defaultNpmRegistry = "https://registry.npmjs.org";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
AkanContextAnalyzer
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-v76gy4dn.js";
|
|
5
5
|
import {
|
|
6
6
|
Prompter
|
|
7
7
|
} from "./index-j37qq1f2.js";
|
|
8
8
|
import {
|
|
9
9
|
runner,
|
|
10
10
|
script
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-qch3r961.js";
|
|
12
12
|
import {
|
|
13
13
|
AGENT_BLOCK_END,
|
|
14
14
|
AGENT_BLOCK_START,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
renderRecipeEntries,
|
|
20
20
|
stampBlockVersion,
|
|
21
21
|
upsertAgentBlock
|
|
22
|
-
} from "./index-
|
|
22
|
+
} from "./index-n57kkvtg.js";
|
|
23
23
|
import {
|
|
24
24
|
collectRecipeSources,
|
|
25
25
|
scanRecipes
|
|
@@ -1976,6 +1976,7 @@ class SsrBaseArtifactBuilder {
|
|
|
1976
1976
|
branches: [...akanConfig.branches],
|
|
1977
1977
|
i18n: akanConfig.i18n,
|
|
1978
1978
|
imageConfig: akanConfig.images,
|
|
1979
|
+
web: akanConfig.web,
|
|
1979
1980
|
deepLinkAssociations: Object.values(akanConfig.mobile.targets).filter((target) => (target.deepLinks?.domains?.length ?? 0) > 0).map((target) => ({
|
|
1980
1981
|
targetName: target.name,
|
|
1981
1982
|
appId: target.appId,
|
package/index.js
CHANGED
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
getTargetCommandNames,
|
|
5
5
|
getTargetMetas,
|
|
6
6
|
runCommands
|
|
7
|
-
} from "./index-
|
|
8
|
-
import"./index-
|
|
7
|
+
} from "./index-qch3r961.js";
|
|
8
|
+
import"./index-n57kkvtg.js";
|
|
9
9
|
import"./index-f39512t6.js";
|
|
10
10
|
import"./index-mxvakhsm.js";
|
|
11
11
|
import"./index-1577bej2.js";
|
|
@@ -19,22 +19,22 @@ import path from "path";
|
|
|
19
19
|
|
|
20
20
|
// pkgs/@akanjs/cli/commandModules.ts
|
|
21
21
|
var commandModules = {
|
|
22
|
-
workspace: async () => (await import("./workspace.command-
|
|
23
|
-
agent: async () => (await import("./agent.command-
|
|
24
|
-
application: async () => (await import("./application.command-
|
|
25
|
-
library: async () => (await import("./library.command-
|
|
26
|
-
localRegistry: async () => (await import("./localRegistry.command-
|
|
27
|
-
package: async () => (await import("./package.command-
|
|
28
|
-
module: async () => (await import("./module.command-
|
|
29
|
-
page: async () => (await import("./page.command-
|
|
30
|
-
context: async () => (await import("./context.command-
|
|
31
|
-
cloud: async () => (await import("./cloud.command-
|
|
32
|
-
guideline: async () => (await import("./guideline.command-
|
|
33
|
-
scalar: async () => (await import("./scalar.command-
|
|
34
|
-
primitive: async () => (await import("./primitive.command-
|
|
35
|
-
quality: async () => (await import("./quality.command-
|
|
36
|
-
repair: async () => (await import("./repair.command-
|
|
37
|
-
workflow: async () => (await import("./workflow.command-
|
|
22
|
+
workspace: async () => (await import("./workspace.command-2pfnrhmw.js")).WorkspaceCommand,
|
|
23
|
+
agent: async () => (await import("./agent.command-99yaptk3.js")).AgentCommand,
|
|
24
|
+
application: async () => (await import("./application.command-77nxchr4.js")).ApplicationCommand,
|
|
25
|
+
library: async () => (await import("./library.command-2b20rx36.js")).LibraryCommand,
|
|
26
|
+
localRegistry: async () => (await import("./localRegistry.command-tdn3373t.js")).LocalRegistryCommand,
|
|
27
|
+
package: async () => (await import("./package.command-dcdya2hn.js")).PackageCommand,
|
|
28
|
+
module: async () => (await import("./module.command-ez5psv7q.js")).ModuleCommand,
|
|
29
|
+
page: async () => (await import("./page.command-he49r0vd.js")).PageCommand,
|
|
30
|
+
context: async () => (await import("./context.command-a0pwgc3v.js")).ContextCommand,
|
|
31
|
+
cloud: async () => (await import("./cloud.command-gegy1qxv.js")).CloudCommand,
|
|
32
|
+
guideline: async () => (await import("./guideline.command-83p3y9w7.js")).GuidelineCommand,
|
|
33
|
+
scalar: async () => (await import("./scalar.command-q4ravcd9.js")).ScalarCommand,
|
|
34
|
+
primitive: async () => (await import("./primitive.command-w2hyrf9c.js")).PrimitiveCommand,
|
|
35
|
+
quality: async () => (await import("./quality.command-8xewbve2.js")).QualityCommand,
|
|
36
|
+
repair: async () => (await import("./repair.command-9f9wy32e.js")).RepairCommand,
|
|
37
|
+
workflow: async () => (await import("./workflow.command-3stj54ek.js")).WorkflowCommand
|
|
38
38
|
};
|
|
39
39
|
var commandModuleIds = Object.keys(commandModules);
|
|
40
40
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
LibraryScript
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-emsw8h3b.js";
|
|
5
5
|
import {
|
|
6
6
|
Lib,
|
|
7
7
|
Workspace,
|
|
8
8
|
command
|
|
9
|
-
} from "./index-
|
|
10
|
-
import"./index-
|
|
9
|
+
} from "./index-qch3r961.js";
|
|
10
|
+
import"./index-n57kkvtg.js";
|
|
11
11
|
import"./index-f39512t6.js";
|
|
12
12
|
import"./index-mxvakhsm.js";
|
|
13
13
|
import"./index-1577bej2.js";
|
|
@@ -2,27 +2,27 @@
|
|
|
2
2
|
import {
|
|
3
3
|
CloudRunner,
|
|
4
4
|
getNpmRegistryUrl
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-wm5hw5mr.js";
|
|
6
6
|
import {
|
|
7
7
|
PackageScript
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-j35ceh2c.js";
|
|
9
9
|
import"./index-sh01r3pm.js";
|
|
10
10
|
import {
|
|
11
11
|
ApplicationScript
|
|
12
|
-
} from "./index-
|
|
13
|
-
import"./index-
|
|
12
|
+
} from "./index-m285dkby.js";
|
|
13
|
+
import"./index-emsw8h3b.js";
|
|
14
14
|
import"./index-76rn3g2c.js";
|
|
15
15
|
import {
|
|
16
16
|
Workspace,
|
|
17
17
|
command,
|
|
18
18
|
runner,
|
|
19
19
|
script
|
|
20
|
-
} from "./index-
|
|
20
|
+
} from "./index-qch3r961.js";
|
|
21
21
|
import"./index-fgc8r6dj.js";
|
|
22
22
|
import"./index-5vy2jzar.js";
|
|
23
23
|
import {
|
|
24
24
|
PkgExecutor
|
|
25
|
-
} from "./index-
|
|
25
|
+
} from "./index-n57kkvtg.js";
|
|
26
26
|
import"./index-f39512t6.js";
|
|
27
27
|
import"./index-mxvakhsm.js";
|
|
28
28
|
import"./index-1577bej2.js";
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
ModuleScript
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-27jj517n.js";
|
|
5
5
|
import"./index-ss469dec.js";
|
|
6
|
-
import"./index-
|
|
6
|
+
import"./index-4etexq7j.js";
|
|
7
7
|
import"./index-sh01r3pm.js";
|
|
8
8
|
import {
|
|
9
9
|
renderPrimitiveReport
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-mr02v9xp.js";
|
|
11
11
|
import"./index-j37qq1f2.js";
|
|
12
12
|
import {
|
|
13
13
|
Module,
|
|
14
14
|
Sys,
|
|
15
15
|
command
|
|
16
|
-
} from "./index-
|
|
17
|
-
import"./index-
|
|
16
|
+
} from "./index-qch3r961.js";
|
|
17
|
+
import"./index-n57kkvtg.js";
|
|
18
18
|
import"./index-f39512t6.js";
|
|
19
19
|
import"./index-mxvakhsm.js";
|
|
20
20
|
import"./index-1577bej2.js";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
PackageScript
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-j35ceh2c.js";
|
|
5
5
|
import {
|
|
6
6
|
Pkg,
|
|
7
7
|
Workspace,
|
|
8
8
|
command
|
|
9
|
-
} from "./index-
|
|
10
|
-
import"./index-
|
|
9
|
+
} from "./index-qch3r961.js";
|
|
10
|
+
import"./index-n57kkvtg.js";
|
|
11
11
|
import"./index-f39512t6.js";
|
|
12
12
|
import"./index-mxvakhsm.js";
|
|
13
13
|
import"./index-1577bej2.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akanjs/cli",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.65",
|
|
4
4
|
"sourceType": "module",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"@langchain/openai": "^1.4.6",
|
|
35
35
|
"@tailwindcss/node": "^4.3.0",
|
|
36
36
|
"@trapezedev/project": "^7.1.4",
|
|
37
|
-
"akanjs": "3.0.0-alpha.
|
|
37
|
+
"akanjs": "3.0.0-alpha.65",
|
|
38
38
|
"chalk": "^5.6.2",
|
|
39
39
|
"commander": "^14.0.3",
|
|
40
40
|
"dayjs": "^1.11.20",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
PageScript
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-4etexq7j.js";
|
|
5
5
|
import {
|
|
6
6
|
App,
|
|
7
7
|
Module,
|
|
8
8
|
command
|
|
9
|
-
} from "./index-
|
|
10
|
-
import"./index-
|
|
9
|
+
} from "./index-qch3r961.js";
|
|
10
|
+
import"./index-n57kkvtg.js";
|
|
11
11
|
import"./index-f39512t6.js";
|
|
12
12
|
import"./index-mxvakhsm.js";
|
|
13
13
|
import"./index-1577bej2.js";
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
PrimitiveScript
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
4
|
+
} from "./index-rzekxec9.js";
|
|
5
|
+
import"./index-27jj517n.js";
|
|
6
6
|
import"./index-ss469dec.js";
|
|
7
|
-
import"./index-
|
|
7
|
+
import"./index-4etexq7j.js";
|
|
8
8
|
import"./index-sh01r3pm.js";
|
|
9
9
|
import {
|
|
10
10
|
renderPrimitiveReport
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-mr02v9xp.js";
|
|
12
12
|
import"./index-j37qq1f2.js";
|
|
13
13
|
import {
|
|
14
14
|
Workspace,
|
|
15
15
|
command
|
|
16
|
-
} from "./index-
|
|
17
|
-
import"./index-
|
|
16
|
+
} from "./index-qch3r961.js";
|
|
17
|
+
import"./index-n57kkvtg.js";
|
|
18
18
|
import"./index-f39512t6.js";
|
|
19
19
|
import"./index-mxvakhsm.js";
|
|
20
20
|
import"./index-1577bej2.js";
|
|
@@ -7,12 +7,12 @@ import {
|
|
|
7
7
|
command,
|
|
8
8
|
runner,
|
|
9
9
|
script
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-qch3r961.js";
|
|
11
11
|
import {
|
|
12
12
|
isAllowedLibFacetRootFile,
|
|
13
13
|
rootAllowedDirs,
|
|
14
14
|
rootAllowedFiles
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-n57kkvtg.js";
|
|
16
16
|
import"./index-f39512t6.js";
|
|
17
17
|
import"./index-mxvakhsm.js";
|
|
18
18
|
import"./index-1577bej2.js";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
RepairRunner
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
6
|
-
import"./index-
|
|
4
|
+
} from "./index-4sgv0wcr.js";
|
|
5
|
+
import"./index-v76gy4dn.js";
|
|
6
|
+
import"./index-mr02v9xp.js";
|
|
7
7
|
import {
|
|
8
8
|
Workspace,
|
|
9
9
|
command,
|
|
10
10
|
script
|
|
11
|
-
} from "./index-
|
|
12
|
-
import"./index-
|
|
11
|
+
} from "./index-qch3r961.js";
|
|
12
|
+
import"./index-n57kkvtg.js";
|
|
13
13
|
import"./index-f39512t6.js";
|
|
14
14
|
import"./index-mxvakhsm.js";
|
|
15
15
|
import"./index-xys926f2.js";
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
ScalarScript
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-rm7xj6bc.js";
|
|
5
5
|
import"./index-ss469dec.js";
|
|
6
6
|
import"./index-sh01r3pm.js";
|
|
7
7
|
import {
|
|
8
8
|
renderPrimitiveReport
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-mr02v9xp.js";
|
|
10
10
|
import"./index-j37qq1f2.js";
|
|
11
11
|
import {
|
|
12
12
|
Sys,
|
|
13
13
|
command
|
|
14
|
-
} from "./index-
|
|
15
|
-
import"./index-
|
|
14
|
+
} from "./index-qch3r961.js";
|
|
15
|
+
import"./index-n57kkvtg.js";
|
|
16
16
|
import"./index-f39512t6.js";
|
|
17
17
|
import"./index-mxvakhsm.js";
|
|
18
18
|
import"./index-1577bej2.js";
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
WorkflowRunner
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-ejr3h3wc.js";
|
|
5
5
|
import {
|
|
6
6
|
ScalarScript
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-rm7xj6bc.js";
|
|
8
8
|
import {
|
|
9
9
|
PrimitiveScript
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-rzekxec9.js";
|
|
11
11
|
import {
|
|
12
12
|
ModuleScript
|
|
13
|
-
} from "./index-
|
|
13
|
+
} from "./index-27jj517n.js";
|
|
14
14
|
import"./index-ss469dec.js";
|
|
15
|
-
import"./index-
|
|
15
|
+
import"./index-4etexq7j.js";
|
|
16
16
|
import"./index-sh01r3pm.js";
|
|
17
|
-
import"./index-
|
|
17
|
+
import"./index-v76gy4dn.js";
|
|
18
18
|
import {
|
|
19
19
|
createWorkflowStepRegistry
|
|
20
|
-
} from "./index-
|
|
20
|
+
} from "./index-mr02v9xp.js";
|
|
21
21
|
import"./index-j37qq1f2.js";
|
|
22
22
|
import {
|
|
23
23
|
Workspace,
|
|
24
24
|
command,
|
|
25
25
|
script
|
|
26
|
-
} from "./index-
|
|
27
|
-
import"./index-
|
|
26
|
+
} from "./index-qch3r961.js";
|
|
27
|
+
import"./index-n57kkvtg.js";
|
|
28
28
|
import"./index-f39512t6.js";
|
|
29
29
|
import"./index-mxvakhsm.js";
|
|
30
30
|
import"./index-xys926f2.js";
|
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
ContextScript
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
6
|
-
import"./index-
|
|
7
|
-
import"./index-
|
|
8
|
-
import"./index-
|
|
9
|
-
import"./index-
|
|
4
|
+
} from "./index-1t5r09v4.js";
|
|
5
|
+
import"./index-4sgv0wcr.js";
|
|
6
|
+
import"./index-ejr3h3wc.js";
|
|
7
|
+
import"./index-rm7xj6bc.js";
|
|
8
|
+
import"./index-rzekxec9.js";
|
|
9
|
+
import"./index-27jj517n.js";
|
|
10
10
|
import"./index-ss469dec.js";
|
|
11
|
-
import"./index-
|
|
11
|
+
import"./index-4etexq7j.js";
|
|
12
12
|
import {
|
|
13
13
|
CloudScript
|
|
14
|
-
} from "./index-
|
|
14
|
+
} from "./index-db89awmp.js";
|
|
15
15
|
import {
|
|
16
16
|
getLatestPackageVersion,
|
|
17
17
|
getNpmRegistryUrl
|
|
18
|
-
} from "./index-
|
|
18
|
+
} from "./index-wm5hw5mr.js";
|
|
19
19
|
import {
|
|
20
20
|
PackageScript
|
|
21
|
-
} from "./index-
|
|
22
|
-
import"./index-
|
|
21
|
+
} from "./index-j35ceh2c.js";
|
|
22
|
+
import"./index-cwa0jvjt.js";
|
|
23
23
|
import {
|
|
24
24
|
GlobalConfig
|
|
25
25
|
} from "./index-sh01r3pm.js";
|
|
26
26
|
import {
|
|
27
27
|
AgentScript
|
|
28
|
-
} from "./index-
|
|
29
|
-
import"./index-
|
|
30
|
-
import"./index-
|
|
28
|
+
} from "./index-wxc9p0n0.js";
|
|
29
|
+
import"./index-v76gy4dn.js";
|
|
30
|
+
import"./index-mr02v9xp.js";
|
|
31
31
|
import"./index-j37qq1f2.js";
|
|
32
32
|
import {
|
|
33
33
|
ApplicationScript
|
|
34
|
-
} from "./index-
|
|
34
|
+
} from "./index-m285dkby.js";
|
|
35
35
|
import {
|
|
36
36
|
LibraryScript
|
|
37
|
-
} from "./index-
|
|
37
|
+
} from "./index-emsw8h3b.js";
|
|
38
38
|
import"./index-76rn3g2c.js";
|
|
39
39
|
import {
|
|
40
40
|
Exec,
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
command,
|
|
43
43
|
runner,
|
|
44
44
|
script
|
|
45
|
-
} from "./index-
|
|
45
|
+
} from "./index-qch3r961.js";
|
|
46
46
|
import"./index-fgc8r6dj.js";
|
|
47
47
|
import {
|
|
48
48
|
ThemeValidator,
|
|
@@ -59,7 +59,7 @@ import {
|
|
|
59
59
|
collectScopeRecipeSources,
|
|
60
60
|
extractAgentBlock,
|
|
61
61
|
renderScopeAgentBlock
|
|
62
|
-
} from "./index-
|
|
62
|
+
} from "./index-n57kkvtg.js";
|
|
63
63
|
import"./index-f39512t6.js";
|
|
64
64
|
import"./index-mxvakhsm.js";
|
|
65
65
|
import {
|