gencow 0.1.69 → 0.1.71

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/bin/gencow.mjs CHANGED
@@ -574,6 +574,9 @@ function generateReadmeMd(config, apiObj) {
574
574
  md += `- mutation은 10초 이내에 완료되어야 해. 외부 API나 LLM 호출이 길면 단계별로 분리해.\n`;
575
575
  md += `- 긴 작업은 ctx.scheduler.runAfter(0, "module.nextStep", { sessionId }) 로 다음 단계를 예약.\n`;
576
576
  md += `- 예: 크롤링(Step1) → 필터링(Step2) → 요약(Step3) 각각 별도 mutation으로 분리.\n`;
577
+ md += `- 같은 서버의 다른 모듈 함수를 호출할 때는 fetch()가 아닌 직접 import해서 호출해.\n`;
578
+ md += ` 예: import { fetchNews } from "./naverApi"; → const result = await fetchNews.handler(ctx, { keyword });\n`;
579
+ md += ` HTTP self-fetch (fetch("/api/mutation")) 패턴은 불필요한 네트워크 우회이므로 사용하지 마.\n`;
577
580
  md += `\n`;
578
581
  md += `크론 잡 (예약 작업):\n`;
579
582
  md += ` gencow/crons.ts에서 cronJobs()로 선언\n`;
@@ -873,8 +876,8 @@ const commands = {
873
876
  // gencow (CLI + server runtime) + @gencow/core (defineQuery, defineMutation 등)
874
877
  // 아래 패키지들은 서버 번들에서 external — 사용자 node_modules에 설치 필요
875
878
  const baseDeps = {
876
- "gencow": "^0.1.7",
877
- "@gencow/core": "^0.1.2",
879
+ "gencow": "latest",
880
+ "@gencow/core": "latest",
878
881
  "@electric-sql/pglite": "^0.3.15",
879
882
  "better-auth": "^1.5.1",
880
883
  "drizzle-orm": "^0.44.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gencow",
3
- "version": "0.1.69",
3
+ "version": "0.1.71",
4
4
  "description": "Gencow — AI Backend Engine",
5
5
  "type": "module",
6
6
  "bin": {
package/server/index.js CHANGED
@@ -73122,6 +73122,15 @@ async function main() {
73122
73122
  }
73123
73123
  const mutations = getRegisteredMutations();
73124
73124
  const mutationMap = new Map(mutations.map((m) => [m.name, m]));
73125
+ if (scheduler) {
73126
+ for (const [name21, mut] of mutationMap) {
73127
+ scheduler.registerAction(name21, async (args) => {
73128
+ const ctx = buildCtx({ get: () => null });
73129
+ await mut.handler(ctx, args ?? {});
73130
+ });
73131
+ }
73132
+ console.log(`[scheduler] Registered ${mutationMap.size} mutation(s) as scheduler actions`);
73133
+ }
73125
73134
  if (scheduler) {
73126
73135
  const cronsPath = resolve5(functionsPath, "crons.ts");
73127
73136
  const cronsPathJs = resolve5(functionsPath, "crons.js");