gencow 0.1.0

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/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "gencow",
3
+ "version": "0.1.0",
4
+ "description": "Gencow — Backend OS for AI Agents",
5
+ "type": "module",
6
+ "bin": {
7
+ "gencow": "./bin/gencow.mjs"
8
+ },
9
+ "files": [
10
+ "bin/",
11
+ "templates/",
12
+ "server/",
13
+ "scripts/"
14
+ ],
15
+ "scripts": {
16
+ "build": "node scripts/bundle-server.mjs",
17
+ "prepublishOnly": "npm run build"
18
+ },
19
+ "dependencies": {
20
+ "@modelcontextprotocol/sdk": "^1.27.1",
21
+ "open": "^10.1.0",
22
+ "tar": "^7",
23
+ "ws": "^8.19.0",
24
+ "zod": "^4.3.6"
25
+ },
26
+ "devDependencies": {
27
+ "@types/node": "^25",
28
+ "esbuild": "^0.27.3"
29
+ }
30
+ }
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * bundle-server.mjs — Gencow 서버 런타임을 CLI 패키지에 번들
4
+ *
5
+ * packages/server/src/index.ts → packages/cli/server/index.js
6
+ *
7
+ * 사용자 프로젝트의 node_modules에서 resolve해야 하는 패키지는 external로 제외.
8
+ * 번들에 포함: @gencow/core, hono, zod, zod-to-json-schema 등 런타임 코드
9
+ */
10
+
11
+ import { build } from "esbuild";
12
+ import { resolve, dirname } from "path";
13
+ import { fileURLToPath } from "url";
14
+ import { mkdirSync, writeFileSync } from "fs";
15
+
16
+ const __dirname = dirname(fileURLToPath(import.meta.url));
17
+ const cliRoot = resolve(__dirname, "..");
18
+ const serverRoot = resolve(cliRoot, "..", "server");
19
+ const coreRoot = resolve(cliRoot, "..", "core");
20
+
21
+ const outDir = resolve(cliRoot, "server");
22
+ mkdirSync(outDir, { recursive: true });
23
+
24
+ console.log("📦 Bundling Gencow server runtime...");
25
+ console.log(` Server: ${serverRoot}/src/index.ts`);
26
+ console.log(` Output: ${outDir}/index.js`);
27
+
28
+ await build({
29
+ entryPoints: [resolve(serverRoot, "src/index.ts")],
30
+ bundle: true,
31
+ format: "esm",
32
+ platform: "node",
33
+ target: "node20",
34
+ outfile: resolve(outDir, "index.js"),
35
+
36
+ // 사용자 node_modules에서 resolve해야 하는 패키지 — 번들에서 제외
37
+ // 사용자가 직접 import하거나, 사용자 스키마에 의존하는 패키지만 external
38
+ // hono, zod, zod-to-json-schema, node-cron 등 서버 내부 패키지는 번들에 포함
39
+ external: [
40
+ "@electric-sql/pglite",
41
+ "postgres",
42
+ "better-auth",
43
+ "better-auth/*",
44
+ "drizzle-kit",
45
+ "drizzle-orm",
46
+ "drizzle-orm/*",
47
+ "bun",
48
+ "bun:*",
49
+ // Node.js built-in modules
50
+ "node:*",
51
+ "fs", "path", "url", "http", "https", "net", "tls",
52
+ "crypto", "stream", "os", "util", "events", "buffer",
53
+ "child_process", "worker_threads", "cluster", "zlib",
54
+ "querystring", "string_decoder", "assert", "async_hooks",
55
+ "perf_hooks", "dns", "readline", "tty", "v8",
56
+ ],
57
+
58
+ // 소스맵 (디버깅 용이)
59
+ sourcemap: true,
60
+
61
+ // 작은 번들 사이즈
62
+ minify: false, // 가독성 유지 (디버깅 편의)
63
+ treeShaking: true,
64
+
65
+ // resolve 경로: core 패키지를 직접 참조
66
+ alias: {
67
+ "@gencow/core": resolve(coreRoot, "src/index.ts"),
68
+ "@gencow/core/server": resolve(coreRoot, "src/server.ts"),
69
+ },
70
+
71
+ // define: 빌드 시점 상수
72
+ define: {
73
+ "process.env.GENCOW_BUNDLED": '"true"',
74
+ },
75
+ });
76
+
77
+ // server/package.json 생성 (findServerRoot가 이 폴더를 서버로 인식)
78
+ writeFileSync(resolve(outDir, "package.json"), JSON.stringify({
79
+ name: "@gencow/server-bundle",
80
+ version: "0.1.0",
81
+ type: "module",
82
+ main: "index.js",
83
+ }, null, 2) + "\n");
84
+
85
+ console.log("✅ Server runtime bundled successfully!");
86
+ console.log(` Size: ${(await import("fs")).statSync(resolve(outDir, "index.js")).size / 1024 | 0}KB`);