@junejs/cli 0.0.52-dev.1 → 0.0.52-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/cli.js +20 -7
  2. package/package.json +3 -3
  3. package/src/cli.ts +30 -7
package/dist/cli.js CHANGED
@@ -31,7 +31,7 @@ Commands:
31
31
  dev Start the dev server --port <n> --no-watch
32
32
  build Build a workerd-ready bundle --out <dir>
33
33
  deploy Build + deploy (workers/vercel) --dry-run --prod --skip-migrate --allow-destructive
34
- gen Freeze content/schema --check
34
+ gen Freeze content + agent module --check
35
35
  db Database tasks (db migrate, db types) --allow-destructive
36
36
  info Show routes + the agent surface
37
37
  help Show this help
@@ -103,12 +103,25 @@ async function run(argv) {
103
103
  return 0;
104
104
  }
105
105
  case "gen": {
106
- const { generateContent } = await import("@junejs/server");
107
- const cols = await generateContent(root);
108
- console.log(cols.length ? `generated content: ${cols.join(", ")}` : "no content/ collections");
109
- const { generateMessages } = await import("./messages-DfAlYpfN.js");
110
- const locales = await generateMessages(root);
111
- if (locales) console.log(`generated messages: ${locales.join(", ")}`);
106
+ const { generateContent, loadJuneConfig, generateAgentModule, findAgentDir } = await import("@junejs/server");
107
+ if (!flags.check && existsSync(join(root, "app"))) {
108
+ const cols = await generateContent(root);
109
+ console.log(cols.length ? `generated content: ${cols.join(", ")}` : "no content/ collections");
110
+ const { generateMessages } = await import("./messages-DfAlYpfN.js");
111
+ const locales = await generateMessages(root);
112
+ if (locales) console.log(`generated messages: ${locales.join(", ")}`);
113
+ }
114
+ const { resolveAgent } = await import("@junejs/core/config");
115
+ const agentCfg = resolveAgent((await loadJuneConfig(root)).agent);
116
+ const agentDir = agentCfg.runtime.enabled ? findAgentDir(root, agentCfg.runtime.dir) : null;
117
+ const agent = agentDir ? generateAgentModule(agentDir, { check: !!flags.check }) : null;
118
+ if (agent) {
119
+ if (flags.check && agent.stale) {
120
+ console.error(`june gen --check: ${agent.file} is stale — run \`june gen\`.`);
121
+ return 1;
122
+ }
123
+ console.log(agent.written ? `generated agent module: ${agent.file}` : `agent module up to date: ${agent.file}`);
124
+ }
112
125
  return 0;
113
126
  }
114
127
  case "db": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@junejs/cli",
3
- "version": "0.0.52-dev.1",
3
+ "version": "0.0.52-dev.2",
4
4
  "description": "The `june` CLI — dev / build / deploy / gen / info. A thin bin over @junejs/server.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -27,8 +27,8 @@
27
27
  "build": "tsdown"
28
28
  },
29
29
  "dependencies": {
30
- "@junejs/core": ">=0.2.0-dev.26",
31
- "@junejs/server": ">=1.0.0-dev.10"
30
+ "@junejs/core": ">=0.2.0-dev.33",
31
+ "@junejs/server": ">=1.0.0-dev.15"
32
32
  },
33
33
  "repository": {
34
34
  "type": "git",
package/src/cli.ts CHANGED
@@ -43,7 +43,7 @@ Commands:
43
43
  dev Start the dev server --port <n> --no-watch
44
44
  build Build a workerd-ready bundle --out <dir>
45
45
  deploy Build + deploy (workers/vercel) --dry-run --prod --skip-migrate --allow-destructive
46
- gen Freeze content/schema --check
46
+ gen Freeze content + agent module --check
47
47
  db Database tasks (db migrate, db types) --allow-destructive
48
48
  info Show routes + the agent surface
49
49
  help Show this help
@@ -135,12 +135,35 @@ export async function run(argv: string[]): Promise<number | undefined> {
135
135
  return 0;
136
136
  }
137
137
  case "gen": {
138
- const { generateContent } = await import("@junejs/server");
139
- const cols = await generateContent(root);
140
- console.log(cols.length ? `generated content: ${cols.join(", ")}` : "no content/ collections");
141
- const { generateMessages } = await import("./messages");
142
- const locales = await generateMessages(root);
143
- if (locales) console.log(`generated messages: ${locales.join(", ")}`);
138
+ const { generateContent, loadJuneConfig, generateAgentModule, findAgentDir } = await import("@junejs/server");
139
+ // The content/messages freeze targets a June app (it writes into app/).
140
+ // A wrangler-first worker running `june gen` for its agent module has no
141
+ // app/ directory — don't create one just to hold an empty _content.ts.
142
+ // --check is a NO-WRITE gate: those generators have no compare mode, so
143
+ // skip them entirely under --check rather than write during a check
144
+ // (their staleness stays covered by `june gen && git diff --exit-code`;
145
+ // a compare mode for the freeze is a separate follow-up).
146
+ if (!flags.check && existsSync(join(root, "app"))) {
147
+ const cols = await generateContent(root);
148
+ console.log(cols.length ? `generated content: ${cols.join(", ")}` : "no content/ collections");
149
+ const { generateMessages } = await import("./messages");
150
+ const locales = await generateMessages(root);
151
+ if (locales) console.log(`generated messages: ${locales.join(", ")}`);
152
+ }
153
+ // Agent module: compile the agent directory (app/agent in a June app,
154
+ // ./agent in a wrangler-first worker) into _agent.gen.ts so the same
155
+ // directory convention mounts on the edge (workerd has no fs discovery).
156
+ const { resolveAgent } = await import("@junejs/core/config");
157
+ const agentCfg = resolveAgent((await loadJuneConfig(root)).agent);
158
+ const agentDir = agentCfg.runtime.enabled ? findAgentDir(root, agentCfg.runtime.dir) : null;
159
+ const agent = agentDir ? generateAgentModule(agentDir, { check: !!flags.check }) : null;
160
+ if (agent) {
161
+ if (flags.check && agent.stale) {
162
+ console.error(`june gen --check: ${agent.file} is stale — run \`june gen\`.`);
163
+ return 1;
164
+ }
165
+ console.log(agent.written ? `generated agent module: ${agent.file}` : `agent module up to date: ${agent.file}`);
166
+ }
144
167
  return 0;
145
168
  }
146
169
  case "db": {