@holo-js/cli 0.2.3 → 0.2.5

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 (31) hide show
  1. package/dist/agent-skills-MSEMQUXT.mjs +173 -0
  2. package/dist/bin/holo.mjs +81 -21
  3. package/dist/{broadcast-IL24KZHW.mjs → broadcast-5MJ3GJK7.mjs} +1 -1
  4. package/dist/{broadcast-NVBDC5DR.mjs → broadcast-MRJGFCFH.mjs} +1 -1
  5. package/dist/{cache-INHARA5B.mjs → cache-KVRYC7FB.mjs} +1 -1
  6. package/dist/{cache-QT4L44AW.mjs → cache-WWE4Q4YE.mjs} +1 -1
  7. package/dist/{cache-migrations-A3PXSAEM.mjs → cache-migrations-APDFSFEX.mjs} +5 -5
  8. package/dist/{cache-migrations-MOIIT5FK.mjs → cache-migrations-CPYQC7T6.mjs} +5 -5
  9. package/dist/{chunk-HHQZB6Z4.mjs → chunk-PT72AMV7.mjs} +67 -67
  10. package/dist/{chunk-PJOYKYYG.mjs → chunk-TWITVSFZ.mjs} +67 -67
  11. package/dist/{chunk-42V4KAVA.mjs → chunk-UPXQONEH.mjs} +1 -1
  12. package/dist/{chunk-YKFOYZLS.mjs → chunk-XDRCZ3Z5.mjs} +1 -1
  13. package/dist/{dev-I3SVGKBU.mjs → dev-CT4DRTLN.mjs} +2 -2
  14. package/dist/{dev-KOQ3MDF4.mjs → dev-QDLR6C7K.mjs} +2 -2
  15. package/dist/{generators-M4IS5JUN.mjs → generators-PUN5TFP5.mjs} +5 -5
  16. package/dist/{generators-YJJHKGCV.mjs → generators-WQHI7DBW.mjs} +5 -5
  17. package/dist/index.mjs +81 -21
  18. package/dist/{media-migrations-TLZ5TC4Y.mjs → media-migrations-D3CDNMPT.mjs} +6 -6
  19. package/dist/{media-migrations-ZIYGFLLR.mjs → media-migrations-IWCSCKSA.mjs} +6 -6
  20. package/dist/{queue-C4GCAEO3.mjs → queue-GRB2IH5M.mjs} +3 -3
  21. package/dist/{queue-VNBAQSXD.mjs → queue-O3OSLGOV.mjs} +3 -3
  22. package/dist/{queue-migrations-KLI35TWM.mjs → queue-migrations-7T42S4FX.mjs} +21 -20
  23. package/dist/{queue-migrations-UPPGTXUT.mjs → queue-migrations-HFZB64OG.mjs} +21 -20
  24. package/dist/{runtime-UK77C7Y5.mjs → runtime-M3G5OKQV.mjs} +1 -1
  25. package/dist/{runtime-UMBLJHYV.mjs → runtime-TTRP2DGL.mjs} +1 -1
  26. package/dist/runtime-worker.mjs +6 -0
  27. package/dist/{scaffold-BQDH5BKC.mjs → scaffold-5BOVJYF3.mjs} +1 -1
  28. package/dist/{scaffold-K3J5J2O6.mjs → scaffold-NY3MWUZF.mjs} +1 -1
  29. package/dist/{security-2S6523NZ.mjs → security-H7AGDFBX.mjs} +1 -1
  30. package/dist/{security-73KA2VFP.mjs → security-ST6ED7EK.mjs} +1 -1
  31. package/package.json +8 -8
@@ -0,0 +1,173 @@
1
+ // src/agent-skills.ts
2
+ import { homedir } from "os";
3
+ import { dirname, resolve } from "path";
4
+ import { mkdir, readFile, writeFile } from "fs/promises";
5
+ var SUPPORTED_AGENT_SKILL_TARGETS = [
6
+ "codex",
7
+ "claude",
8
+ "cursor",
9
+ "windsurf",
10
+ "opencode",
11
+ "gemini",
12
+ "kiro"
13
+ ];
14
+ var HOLO_AGENT_SKILL = `---
15
+ name: holo-js
16
+ description: Help users build applications with the Holo-JS framework by researching the current Holo-JS documentation at https://docs.holo-js.com/ before answering or coding. Use when a user asks how to scaffold, configure, integrate, or implement Holo-JS app features in Nuxt, Next.js, or SvelteKit, including database, ORM, auth, authorization, validation, forms, storage, media, queues, events, broadcast, realtime, mail, notifications, testing, or deployment. Prefer this for user-facing app work, not Holo-JS framework internals.
17
+ ---
18
+
19
+ # Holo-JS
20
+
21
+ Use the docs as the source of truth. Do not answer from memory when exact commands, imports, API names, config shape, route shape, or framework integration details matter.
22
+
23
+ Primary documentation URL: https://docs.holo-js.com/
24
+
25
+ ## Required Workflow
26
+
27
+ 1. Clarify the user's task category in your own reasoning: setup, config, database, ORM, auth, authorization, validation/forms, storage/media, queue/events, broadcast/realtime, mail/notifications, testing, deployment, or framework integration.
28
+ 2. Search the live docs before giving implementation details.
29
+ 3. Open the most relevant docs pages and read the sections that match the task.
30
+ 4. Cross-check at least one adjacent or overview page when the task touches package setup, framework integration, auth/session/security, background workers, or deployment.
31
+ 5. Base commands and code on the docs you just read.
32
+ 6. Mention when docs do not cover the requested detail and ask for a docs link, local project context, or permission to inspect the package source.
33
+
34
+ ## How To Search
35
+
36
+ Prefer these approaches, in order:
37
+
38
+ 1. Use the docs site's own search if you have browser access.
39
+ 2. Use web search with \`site:docs.holo-js.com\` plus the concrete feature terms.
40
+ 3. Open likely docs URLs from search results, then follow sidebar or in-page links to related pages.
41
+ 4. If working inside the Holo-JS repository, search local docs source under \`apps/docs/docs/**/*.md\` with \`rg\` as a fallback or for faster exact matching.
42
+
43
+ Good search queries:
44
+
45
+ - \`site:docs.holo-js.com Holo-JS install <package-or-feature>\`
46
+ - \`site:docs.holo-js.com Holo-JS <framework> <feature>\`
47
+ - \`site:docs.holo-js.com Holo-JS <api-or-command-name>\`
48
+ - \`site:docs.holo-js.com Holo-JS <error message or concept>\`
49
+
50
+ Local repo fallback:
51
+
52
+ \`\`\`bash
53
+ rg -n "<feature|api|command|error>" apps/docs/docs
54
+ find apps/docs/docs -type f -name '*.md' | sort
55
+ \`\`\`
56
+
57
+ ## What To Open
58
+
59
+ Use docs pages by task area, not by package guesses. Examples:
60
+
61
+ - Starting a project: installation, configuration, directory structure.
62
+ - Framework routing or handlers: routing, runtime services, framework-specific integration pages.
63
+ - Database and models: database pages first, then ORM pages.
64
+ - Auth flows: auth overview plus the specific flow page, then session/cookies or current auth client if state is involved.
65
+ - Authorization: authorization overview plus policies or abilities.
66
+ - Forms: forms overview plus server validation, client usage, and framework integration as needed.
67
+ - Files: storage first; media only when files belong to models or need conversions/collections.
68
+ - Background work: queue, events, queued listeners, workers, failed jobs, and deployment pages as needed.
69
+ - Browser realtime: broadcast or realtime docs plus framework helper pages.
70
+ - Production behavior: deployment plus any worker/driver page for the feature.
71
+
72
+ These names are navigation hints, not an API reference. Confirm exact paths and examples from the docs before responding.
73
+
74
+ ## Answering Rules
75
+
76
+ - Cite or link the docs pages you used when the environment supports links.
77
+ - Keep examples aligned with the user's framework and package manager.
78
+ - Preserve framework-native routing, redirect, server action, and handler conventions shown by the docs.
79
+ - Do not invent helper APIs to make an answer look cleaner.
80
+ - Do not assume optional packages are installed. Check install/setup docs for the feature.
81
+ - Do not expose secrets in client code or examples.
82
+ - Do not hand-edit generated Holo-JS output unless docs explicitly instruct it.
83
+ - If docs and installed package behavior disagree, tell the user what you found and treat the discrepancy as something to verify before coding.
84
+
85
+ ## Coding Against An Existing App
86
+
87
+ When editing a user's app:
88
+
89
+ 1. Inspect the app's framework, package manager, installed \`@holo-js/*\` packages, and existing Holo-JS config.
90
+ 2. Search docs for the exact feature and framework.
91
+ 3. Match the app's existing conventions.
92
+ 4. Add validation and authorization at boundaries when the docs indicate they are required.
93
+ 5. Run the app's relevant typecheck, lint, and tests when available.
94
+
95
+ If the user asks for a broad implementation such as "add auth" or "add realtime", start from the docs' setup/overview pages and implement the smallest complete vertical slice rather than assembling APIs from memory.
96
+ `;
97
+ function resolveAgentSkillPath(root, agent) {
98
+ return resolve(root, agentRoot(agent), "skills/holo-js/SKILL.md");
99
+ }
100
+ function resolveGlobalAgentSkillPath(agent) {
101
+ const home = homedir();
102
+ if (agent === "opencode") {
103
+ return resolve(home, ".config/opencode/skills/holo-js/SKILL.md");
104
+ }
105
+ return resolveAgentSkillPath(home, agent);
106
+ }
107
+ function agentRoot(agent) {
108
+ if (agent === "claude") {
109
+ return ".claude";
110
+ }
111
+ if (agent === "opencode") {
112
+ return ".opencode";
113
+ }
114
+ return `.${agent}`;
115
+ }
116
+ async function readExisting(path) {
117
+ try {
118
+ return await readFile(path, "utf8");
119
+ } catch (error) {
120
+ if (error && typeof error === "object" && "code" in error && error.code === "ENOENT") {
121
+ return void 0;
122
+ }
123
+ throw error;
124
+ }
125
+ }
126
+ function normalizeAgentSkillTargets(values) {
127
+ const requested = values.length > 0 ? values : ["all"];
128
+ const agents = /* @__PURE__ */ new Set();
129
+ for (const value of requested) {
130
+ const normalized = value.trim().toLowerCase();
131
+ if (!normalized) {
132
+ continue;
133
+ }
134
+ if (normalized === "all") {
135
+ for (const agent of SUPPORTED_AGENT_SKILL_TARGETS) {
136
+ agents.add(agent);
137
+ }
138
+ continue;
139
+ }
140
+ if (!SUPPORTED_AGENT_SKILL_TARGETS.includes(normalized)) {
141
+ throw new Error(`Unsupported agent skill target: ${value}.`);
142
+ }
143
+ agents.add(normalized);
144
+ }
145
+ return [...agents];
146
+ }
147
+ async function installAgentSkills(projectRoot, options) {
148
+ const results = [];
149
+ for (const agent of options.agents) {
150
+ const path = options.global === true ? resolveGlobalAgentSkillPath(agent) : resolveAgentSkillPath(projectRoot, agent);
151
+ const existing = await readExisting(path);
152
+ if (existing === HOLO_AGENT_SKILL) {
153
+ results.push({ agent, path, status: "unchanged" });
154
+ continue;
155
+ }
156
+ if (typeof existing === "string" && options.force !== true) {
157
+ throw new Error(`Refusing to overwrite existing ${agent} skill at ${path}. Re-run with --force to replace it.`);
158
+ }
159
+ await mkdir(dirname(path), { recursive: true });
160
+ await writeFile(path, HOLO_AGENT_SKILL, "utf8");
161
+ results.push({
162
+ agent,
163
+ path,
164
+ status: typeof existing === "string" ? "updated" : "created"
165
+ });
166
+ }
167
+ return results;
168
+ }
169
+ export {
170
+ SUPPORTED_AGENT_SKILL_TARGETS,
171
+ installAgentSkills,
172
+ normalizeAgentSkillTargets
173
+ };
package/dist/bin/holo.mjs CHANGED
@@ -30,7 +30,7 @@ import {
30
30
  } from "../chunk-LBJAJLKU.mjs";
31
31
  import "../chunk-D7O4SU6N.mjs";
32
32
  import "../chunk-VP2E62DF.mjs";
33
- import "../chunk-PJOYKYYG.mjs";
33
+ import "../chunk-PT72AMV7.mjs";
34
34
  import "../chunk-YEFJBN56.mjs";
35
35
  import "../chunk-J76GH2DR.mjs";
36
36
  import {
@@ -112,6 +112,7 @@ var AUTH_INSTALL_FEATURES = ["social", "workos", "clerk"];
112
112
  var AUTH_SOCIAL_PROVIDER_MODES = ["default", "specific"];
113
113
  var EVENTS_QUEUE_ACTIONS = ["skip", "enable"];
114
114
  var MODEL_GENERATOR_OPTIONS = ["migration", "observer", "seeder", "factory"];
115
+ var COMMAND_LIST_DESCRIPTION_COLUMN = 32;
115
116
  var runtimeModulePromise;
116
117
  var queueModulePromise;
117
118
  var cacheModulePromise;
@@ -126,44 +127,45 @@ var projectConfigModulePromise;
126
127
  var projectDiscoveryModulePromise;
127
128
  var projectRuntimeModulePromise;
128
129
  var projectScaffoldModulePromise;
130
+ var agentSkillsModulePromise;
129
131
  function loadRuntimeModule() {
130
- runtimeModulePromise ??= import("../runtime-UK77C7Y5.mjs");
132
+ runtimeModulePromise ??= import("../runtime-TTRP2DGL.mjs");
131
133
  return runtimeModulePromise;
132
134
  }
133
135
  function loadQueueModule() {
134
- queueModulePromise ??= import("../queue-C4GCAEO3.mjs");
136
+ queueModulePromise ??= import("../queue-GRB2IH5M.mjs");
135
137
  return queueModulePromise;
136
138
  }
137
139
  function loadCacheModule() {
138
- cacheModulePromise ??= import("../cache-QT4L44AW.mjs");
140
+ cacheModulePromise ??= import("../cache-WWE4Q4YE.mjs");
139
141
  return cacheModulePromise;
140
142
  }
141
143
  function loadQueueMigrationsModule() {
142
- queueMigrationsModulePromise ??= import("../queue-migrations-KLI35TWM.mjs");
144
+ queueMigrationsModulePromise ??= import("../queue-migrations-HFZB64OG.mjs");
143
145
  return queueMigrationsModulePromise;
144
146
  }
145
147
  function loadCacheMigrationsModule() {
146
- cacheMigrationsModulePromise ??= import("../cache-migrations-MOIIT5FK.mjs");
148
+ cacheMigrationsModulePromise ??= import("../cache-migrations-CPYQC7T6.mjs");
147
149
  return cacheMigrationsModulePromise;
148
150
  }
149
151
  function loadMediaMigrationsModule() {
150
- mediaMigrationsModulePromise ??= import("../media-migrations-ZIYGFLLR.mjs");
152
+ mediaMigrationsModulePromise ??= import("../media-migrations-D3CDNMPT.mjs");
151
153
  return mediaMigrationsModulePromise;
152
154
  }
153
155
  function loadGeneratorsModule() {
154
- generatorsModulePromise ??= import("../generators-YJJHKGCV.mjs");
156
+ generatorsModulePromise ??= import("../generators-PUN5TFP5.mjs");
155
157
  return generatorsModulePromise;
156
158
  }
157
159
  function loadBroadcastModule() {
158
- broadcastModulePromise ??= import("../broadcast-NVBDC5DR.mjs");
160
+ broadcastModulePromise ??= import("../broadcast-MRJGFCFH.mjs");
159
161
  return broadcastModulePromise;
160
162
  }
161
163
  function loadSecurityModule() {
162
- securityModulePromise ??= import("../security-2S6523NZ.mjs");
164
+ securityModulePromise ??= import("../security-H7AGDFBX.mjs");
163
165
  return securityModulePromise;
164
166
  }
165
167
  function loadDevModule() {
166
- devModulePromise ??= import("../dev-I3SVGKBU.mjs");
168
+ devModulePromise ??= import("../dev-QDLR6C7K.mjs");
167
169
  return devModulePromise;
168
170
  }
169
171
  function loadProjectConfigModule() {
@@ -179,9 +181,13 @@ function loadProjectRuntimeModule() {
179
181
  return projectRuntimeModulePromise;
180
182
  }
181
183
  function loadProjectScaffoldModule() {
182
- projectScaffoldModulePromise ??= import("../scaffold-BQDH5BKC.mjs");
184
+ projectScaffoldModulePromise ??= import("../scaffold-NY3MWUZF.mjs");
183
185
  return projectScaffoldModulePromise;
184
186
  }
187
+ function loadAgentSkillsModule() {
188
+ agentSkillsModulePromise ??= import("../agent-skills-MSEMQUXT.mjs");
189
+ return agentSkillsModulePromise;
190
+ }
185
191
  async function resolveRuntimeExecutor(runtimeExecutor) {
186
192
  return runtimeExecutor ?? (await loadRuntimeModule()).withRuntimeEnvironment;
187
193
  }
@@ -252,20 +258,27 @@ function createCommandContext(io, projectRoot, loadProject, input) {
252
258
  function printCommandList(io, registry) {
253
259
  const internal = registry.filter((command) => command.source === "internal");
254
260
  const app = registry.filter((command) => command.source === "app");
255
- writeLine(io.stdout, "Internal Commands");
256
- for (const command of internal) {
257
- writeLine(io.stdout, ` ${command.usage} ${command.description}`);
258
- }
261
+ writeLine(io.stdout, "Usage:");
262
+ writeLine(io.stdout, " holo <command> [options] [arguments]");
263
+ writeLine(io.stdout);
264
+ writeLine(io.stdout, "Internal commands:");
265
+ printCommandListEntries(io, internal);
259
266
  writeLine(io.stdout);
260
- writeLine(io.stdout, "App Commands");
267
+ writeLine(io.stdout, "App commands:");
261
268
  if (app.length === 0) {
262
269
  writeLine(io.stdout, " (none)");
263
270
  return;
264
271
  }
265
- for (const command of app) {
266
- writeLine(io.stdout, ` ${command.usage} ${command.description}`);
272
+ printCommandListEntries(io, app);
273
+ }
274
+ function printCommandListEntries(io, commands) {
275
+ for (const command of commands) {
276
+ printCommandListEntry(io, command);
267
277
  }
268
278
  }
279
+ function printCommandListEntry(io, command) {
280
+ writeLine(io.stdout, ` ${command.name.padEnd(COMMAND_LIST_DESCRIPTION_COLUMN)}${command.description}`);
281
+ }
269
282
  function printCommandHelp(io, command) {
270
283
  writeLine(io.stdout, command.usage);
271
284
  writeLine(io.stdout, command.description);
@@ -368,6 +381,50 @@ function createInternalCommands(context, runtimeExecutor, queueExecutors = {}, p
368
381
  writeLine(context.stdout, ` ${resolvePackageManagerDevCommand(packageManager)}`);
369
382
  }
370
383
  },
384
+ {
385
+ name: "agents:install",
386
+ aliases: ["agent:install", "ai:install"],
387
+ description: "Install Holo-JS docs-search skills for coding agents.",
388
+ usage: "holo agents:install [--agent <all|codex|claude|cursor|windsurf|opencode|gemini|kiro>] [--global] [--force]",
389
+ source: "internal",
390
+ async prepare(input) {
391
+ const { normalizeAgentSkillTargets, SUPPORTED_AGENT_SKILL_TARGETS } = await loadAgentSkillsModule();
392
+ const requestedAgents = (collectMultiStringFlag(input.flags, "agent") ?? []).flatMap((entry) => splitCsv(entry) ?? []);
393
+ const agents = requestedAgents.length > 0 ? normalizeAgentSkillTargets(requestedAgents) : isInteractive(context, input.flags) ? await promptMultiChoice(context, "Coding agents", SUPPORTED_AGENT_SKILL_TARGETS, {
394
+ required: true,
395
+ initialValues: [...SUPPORTED_AGENT_SKILL_TARGETS]
396
+ }) : normalizeAgentSkillTargets([]);
397
+ return {
398
+ args: [],
399
+ flags: {
400
+ agent: agents,
401
+ ...resolveBooleanFlag(input.flags, "global") === true ? { global: true } : {},
402
+ ...resolveBooleanFlag(input.flags, "force") === true ? { force: true } : {}
403
+ }
404
+ };
405
+ },
406
+ async run(commandContext) {
407
+ const { installAgentSkills } = await loadAgentSkillsModule();
408
+ const agents = collectMultiStringFlag(commandContext.flags, "agent") ?? [];
409
+ const results = await installAgentSkills(context.projectRoot, {
410
+ agents,
411
+ global: commandContext.flags.global === true,
412
+ force: commandContext.flags.force === true
413
+ });
414
+ const created = results.filter((result) => result.status === "created").length;
415
+ const updated = results.filter((result) => result.status === "updated").length;
416
+ const unchanged = results.filter((result) => result.status === "unchanged").length;
417
+ const changed = created + updated;
418
+ writeLine(
419
+ context.stdout,
420
+ changed > 0 ? "Installed Holo-JS agent skills." : "Holo-JS agent skills are already installed."
421
+ );
422
+ for (const result of results) {
423
+ writeLine(context.stdout, ` - ${result.status} ${result.agent}: ${result.path}`);
424
+ }
425
+ writeLine(context.stdout, ` - summary: ${created} created, ${updated} updated, ${unchanged} unchanged`);
426
+ }
427
+ },
371
428
  {
372
429
  name: "key:generate",
373
430
  description: "Generate APP_KEY in the project .env file when it is missing.",
@@ -742,7 +799,9 @@ function createInternalCommands(context, runtimeExecutor, queueExecutors = {}, p
742
799
  async run() {
743
800
  const runProjectPrepare = await resolveProjectExecutor(projectExecutors, "runProjectPrepare");
744
801
  const runProjectBuild = await resolveProjectExecutor(projectExecutors, "runProjectBuild");
802
+ const executeRuntime = await resolveRuntimeExecutor(runtimeExecutor);
745
803
  await runProjectPrepare(context.projectRoot, context);
804
+ await executeRuntime(context.projectRoot, "hydrate-schema", {}, async () => void 0);
746
805
  await runProjectBuild(context, context.projectRoot);
747
806
  }
748
807
  },
@@ -1575,7 +1634,8 @@ function findCommand(registry, name) {
1575
1634
  async function runCli(argv, io) {
1576
1635
  try {
1577
1636
  const requestedCommandName = argv[0];
1578
- const projectRoot = requestedCommandName === "new" ? io.cwd : await (await loadProjectRuntimeModule()).findProjectRoot(io.cwd);
1637
+ const usesCurrentDirectoryAsProjectRoot = requestedCommandName === "new" || requestedCommandName === "agents:install" || requestedCommandName === "agent:install" || requestedCommandName === "ai:install";
1638
+ const projectRoot = usesCurrentDirectoryAsProjectRoot ? io.cwd : await (await loadProjectRuntimeModule()).findProjectRoot(io.cwd);
1579
1639
  let cachedProject;
1580
1640
  const loadProject = async () => {
1581
1641
  cachedProject ??= await (await loadProjectConfigModule()).loadProjectConfig(projectRoot);
@@ -1590,7 +1650,7 @@ async function runCli(argv, io) {
1590
1650
  };
1591
1651
  const internalCommands = createInternalCommands(internalContext);
1592
1652
  const registry = [...internalCommands];
1593
- const canSkipAppDiscovery = requestedCommandName === "config:cache" || requestedCommandName === "config:clear" || requestedCommandName === "key:generate" || requestedCommandName === "new" || requestedCommandName === "install" || requestedCommandName === "auth:notifications:publish" || requestedCommandName === "prepare" || requestedCommandName === "dev" || requestedCommandName === "build" || requestedCommandName === "cache:table" || requestedCommandName === "cache:clear" || requestedCommandName === "cache:forget" || requestedCommandName === "media:table" || requestedCommandName === "broadcast:work" || requestedCommandName === "queue:table" || requestedCommandName === "queue:failed-table" || requestedCommandName === "queue:work" || requestedCommandName === "queue:listen" || requestedCommandName === "queue:failed" || requestedCommandName === "queue:retry" || requestedCommandName === "queue:forget" || requestedCommandName === "queue:flush" || requestedCommandName === "queue:restart" || requestedCommandName === "queue:clear" || requestedCommandName === "rate-limit:clear";
1653
+ const canSkipAppDiscovery = requestedCommandName === "config:cache" || requestedCommandName === "config:clear" || requestedCommandName === "key:generate" || requestedCommandName === "new" || requestedCommandName === "install" || requestedCommandName === "agents:install" || requestedCommandName === "agent:install" || requestedCommandName === "ai:install" || requestedCommandName === "auth:notifications:publish" || requestedCommandName === "prepare" || requestedCommandName === "dev" || requestedCommandName === "build" || requestedCommandName === "cache:table" || requestedCommandName === "cache:clear" || requestedCommandName === "cache:forget" || requestedCommandName === "media:table" || requestedCommandName === "broadcast:work" || requestedCommandName === "queue:table" || requestedCommandName === "queue:failed-table" || requestedCommandName === "queue:work" || requestedCommandName === "queue:listen" || requestedCommandName === "queue:failed" || requestedCommandName === "queue:retry" || requestedCommandName === "queue:forget" || requestedCommandName === "queue:flush" || requestedCommandName === "queue:restart" || requestedCommandName === "queue:clear" || requestedCommandName === "rate-limit:clear";
1594
1654
  if (!canSkipAppDiscovery) {
1595
1655
  const initialProject = await loadProject();
1596
1656
  const appCommands = (await (await loadProjectDiscoveryModule()).discoverAppCommands(projectRoot, initialProject.config)).map((entry) => createAppCommandDefinition(entry));
@@ -9,7 +9,7 @@ import "./chunk-D7O4SU6N.mjs";
9
9
  import {
10
10
  prepareProjectDiscovery
11
11
  } from "./chunk-VP2E62DF.mjs";
12
- import "./chunk-HHQZB6Z4.mjs";
12
+ import "./chunk-TWITVSFZ.mjs";
13
13
  import {
14
14
  loadProjectConfig
15
15
  } from "./chunk-YEFJBN56.mjs";
@@ -9,7 +9,7 @@ import "./chunk-D7O4SU6N.mjs";
9
9
  import {
10
10
  prepareProjectDiscovery
11
11
  } from "./chunk-VP2E62DF.mjs";
12
- import "./chunk-PJOYKYYG.mjs";
12
+ import "./chunk-PT72AMV7.mjs";
13
13
  import {
14
14
  loadProjectConfig
15
15
  } from "./chunk-YEFJBN56.mjs";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-I7QBCEV7.mjs";
4
4
  import "./chunk-D7O4SU6N.mjs";
5
5
  import "./chunk-VP2E62DF.mjs";
6
- import "./chunk-HHQZB6Z4.mjs";
6
+ import "./chunk-TWITVSFZ.mjs";
7
7
  import "./chunk-YEFJBN56.mjs";
8
8
  import "./chunk-J76GH2DR.mjs";
9
9
  import {
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-I7QBCEV7.mjs";
4
4
  import "./chunk-D7O4SU6N.mjs";
5
5
  import "./chunk-VP2E62DF.mjs";
6
- import "./chunk-PJOYKYYG.mjs";
6
+ import "./chunk-PT72AMV7.mjs";
7
7
  import "./chunk-YEFJBN56.mjs";
8
8
  import "./chunk-J76GH2DR.mjs";
9
9
  import {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runProjectPrepare
3
- } from "./chunk-42V4KAVA.mjs";
3
+ } from "./chunk-XDRCZ3Z5.mjs";
4
4
  import "./chunk-FGQ2I2YH.mjs";
5
5
  import {
6
6
  getRegistryMigrationSlug,
@@ -16,7 +16,7 @@ import "./chunk-D7O4SU6N.mjs";
16
16
  import {
17
17
  prepareProjectDiscovery
18
18
  } from "./chunk-VP2E62DF.mjs";
19
- import "./chunk-HHQZB6Z4.mjs";
19
+ import "./chunk-TWITVSFZ.mjs";
20
20
  import {
21
21
  ensureProjectConfig
22
22
  } from "./chunk-YEFJBN56.mjs";
@@ -94,14 +94,14 @@ function renderCacheTableMigration(tableName = DEFAULT_CACHE_DATABASE_TABLE, loc
94
94
  const entryTableDefinition = resolveCacheDatabaseTableDefinition("entries");
95
95
  const lockTableDefinition = resolveCacheDatabaseTableDefinition("locks");
96
96
  return [
97
- "import { defineMigration, type MigrationContext } from '@holo-js/db'",
97
+ "import { defineMigration } from '@holo-js/db'",
98
98
  "",
99
99
  "export default defineMigration({",
100
- " async up({ schema }: MigrationContext) {",
100
+ " async up({ schema }) {",
101
101
  ...renderCacheTableCreateStatement(tableName, entryTableDefinition),
102
102
  ...renderCacheTableCreateStatement(lockTableName, lockTableDefinition),
103
103
  " },",
104
- " async down({ schema }: MigrationContext) {",
104
+ " async down({ schema }) {",
105
105
  ` await schema.dropTable('${escapeSingleQuotedString(lockTableName)}')`,
106
106
  ` await schema.dropTable('${escapeSingleQuotedString(tableName)}')`,
107
107
  " },",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runProjectPrepare
3
- } from "./chunk-YKFOYZLS.mjs";
3
+ } from "./chunk-UPXQONEH.mjs";
4
4
  import "./chunk-FGQ2I2YH.mjs";
5
5
  import {
6
6
  getRegistryMigrationSlug,
@@ -16,7 +16,7 @@ import "./chunk-D7O4SU6N.mjs";
16
16
  import {
17
17
  prepareProjectDiscovery
18
18
  } from "./chunk-VP2E62DF.mjs";
19
- import "./chunk-PJOYKYYG.mjs";
19
+ import "./chunk-PT72AMV7.mjs";
20
20
  import {
21
21
  ensureProjectConfig
22
22
  } from "./chunk-YEFJBN56.mjs";
@@ -94,14 +94,14 @@ function renderCacheTableMigration(tableName = DEFAULT_CACHE_DATABASE_TABLE, loc
94
94
  const entryTableDefinition = resolveCacheDatabaseTableDefinition("entries");
95
95
  const lockTableDefinition = resolveCacheDatabaseTableDefinition("locks");
96
96
  return [
97
- "import { defineMigration, type MigrationContext } from '@holo-js/db'",
97
+ "import { defineMigration } from '@holo-js/db'",
98
98
  "",
99
99
  "export default defineMigration({",
100
- " async up({ schema }: MigrationContext) {",
100
+ " async up({ schema }) {",
101
101
  ...renderCacheTableCreateStatement(tableName, entryTableDefinition),
102
102
  ...renderCacheTableCreateStatement(lockTableName, lockTableDefinition),
103
103
  " },",
104
- " async down({ schema }: MigrationContext) {",
104
+ " async down({ schema }) {",
105
105
  ` await schema.dropTable('${escapeSingleQuotedString(lockTableName)}')`,
106
106
  ` await schema.dropTable('${escapeSingleQuotedString(tableName)}')`,
107
107
  " },",