@synap-core/eve 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/README.md +251 -0
- package/dist/add-R6RGUYER.js +22 -0
- package/dist/add-R6RGUYER.js.map +1 -0
- package/dist/auth-7FFZNARZ-4OIRGZ7R.js +31 -0
- package/dist/auth-7FFZNARZ-4OIRGZ7R.js.map +1 -0
- package/dist/chunk-22RIHU4J.js +975 -0
- package/dist/chunk-22RIHU4J.js.map +1 -0
- package/dist/chunk-23XQDB7K.js +1773 -0
- package/dist/chunk-23XQDB7K.js.map +1 -0
- package/dist/chunk-5TBV2VHZ.js +6067 -0
- package/dist/chunk-5TBV2VHZ.js.map +1 -0
- package/dist/chunk-D7P3IYYR.js +44 -0
- package/dist/chunk-D7P3IYYR.js.map +1 -0
- package/dist/chunk-EHPC7CKE.js +757 -0
- package/dist/chunk-EHPC7CKE.js.map +1 -0
- package/dist/chunk-FAE5UZFE.js +17 -0
- package/dist/chunk-FAE5UZFE.js.map +1 -0
- package/dist/chunk-HRF6TNXX.js +53 -0
- package/dist/chunk-HRF6TNXX.js.map +1 -0
- package/dist/chunk-HVJEW7TU.js +495 -0
- package/dist/chunk-HVJEW7TU.js.map +1 -0
- package/dist/chunk-JO5H5G6U.js +1529 -0
- package/dist/chunk-JO5H5G6U.js.map +1 -0
- package/dist/chunk-MUEQNBE6.js +1140 -0
- package/dist/chunk-MUEQNBE6.js.map +1 -0
- package/dist/chunk-O5WTCVMZ.js +3391 -0
- package/dist/chunk-O5WTCVMZ.js.map +1 -0
- package/dist/chunk-ROKIQIEX.js +65 -0
- package/dist/chunk-ROKIQIEX.js.map +1 -0
- package/dist/chunk-T7GCAJK5.js +4895 -0
- package/dist/chunk-T7GCAJK5.js.map +1 -0
- package/dist/chunk-UOQWJ3S4.js +138 -0
- package/dist/chunk-UOQWJ3S4.js.map +1 -0
- package/dist/chunk-YQWV5W4U.js +3479 -0
- package/dist/chunk-YQWV5W4U.js.map +1 -0
- package/dist/chunk-ZPDNZRVW.js +272 -0
- package/dist/chunk-ZPDNZRVW.js.map +1 -0
- package/dist/config-store-KTOWIKAS-XVZHNPKW.js +11 -0
- package/dist/config-store-KTOWIKAS-XVZHNPKW.js.map +1 -0
- package/dist/dist-2VRFSXMO.js +40 -0
- package/dist/dist-2VRFSXMO.js.map +1 -0
- package/dist/dist-C2QB4IKT.js +340 -0
- package/dist/dist-C2QB4IKT.js.map +1 -0
- package/dist/dist-DEIUVZ57.js +299 -0
- package/dist/dist-DEIUVZ57.js.map +1 -0
- package/dist/dist-DSKHGECB.js +36 -0
- package/dist/dist-DSKHGECB.js.map +1 -0
- package/dist/dist-GN2DN7CI.js +95 -0
- package/dist/dist-GN2DN7CI.js.map +1 -0
- package/dist/dist-TZL4XW2R.js +58 -0
- package/dist/dist-TZL4XW2R.js.map +1 -0
- package/dist/dist-ZP2APOYV.js +53 -0
- package/dist/dist-ZP2APOYV.js.map +1 -0
- package/dist/index.js +15083 -0
- package/dist/index.js.map +1 -0
- package/dist/operational-5RT6AZJI-ZEMPD32Q.js +12 -0
- package/dist/operational-5RT6AZJI-ZEMPD32Q.js.map +1 -0
- package/dist/reconcile-A4I3Z7VX-GQMEN4GC.js +12 -0
- package/dist/reconcile-A4I3Z7VX-GQMEN4GC.js.map +1 -0
- package/dist/rsshub-GOJBTNOD-UNNVKBFL.js +18 -0
- package/dist/rsshub-GOJBTNOD-UNNVKBFL.js.map +1 -0
- package/dist/synap-image-install-X36REYQ5-UGO4MAOP.js +17 -0
- package/dist/synap-image-install-X36REYQ5-UGO4MAOP.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { createRequire as __eveCreateRequire } from 'module'; const require = __eveCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
RSSHubService
|
|
4
|
+
} from "./chunk-UOQWJ3S4.js";
|
|
5
|
+
import {
|
|
6
|
+
EntityStateManager
|
|
7
|
+
} from "./chunk-5TBV2VHZ.js";
|
|
8
|
+
|
|
9
|
+
// ../@eve/eyes/dist/index.js
|
|
10
|
+
import { existsSync, mkdirSync, writeFileSync } from "fs";
|
|
11
|
+
import { join } from "path";
|
|
12
|
+
import { execSync } from "child_process";
|
|
13
|
+
function installCommand(program) {
|
|
14
|
+
program.command("install").description("Install RSSHub for RSS aggregation").option("-p, --port <port>", "RSSHub port", "1200").action(async (options) => {
|
|
15
|
+
try {
|
|
16
|
+
console.log("\u{1F441}\uFE0F Eve Eyes - Installing RSSHub...\n");
|
|
17
|
+
const rsshub = new RSSHubService();
|
|
18
|
+
const isInstalled = await rsshub.isInstalled();
|
|
19
|
+
if (isInstalled) {
|
|
20
|
+
console.log("\u2705 RSSHub is already installed");
|
|
21
|
+
console.log(' Use "eve eyes:start" to start it\n');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
console.log("\u{1F4E6} Installing RSSHub...");
|
|
25
|
+
await rsshub.install({
|
|
26
|
+
port: parseInt(options.port, 10)
|
|
27
|
+
});
|
|
28
|
+
const stateManager = new EntityStateManager();
|
|
29
|
+
await stateManager.updateOrgan("eyes", "ready");
|
|
30
|
+
console.log("\n\u2705 RSSHub installed successfully!");
|
|
31
|
+
console.log(` URL: http://localhost:${options.port}`);
|
|
32
|
+
console.log(' Use "eve eyes:start" to start it\n');
|
|
33
|
+
} catch (error) {
|
|
34
|
+
console.error("\u274C Installation failed:", error);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function addFeedCommand(program) {
|
|
40
|
+
program.command("add-feed <name> <url>").description("Add an RSS feed to monitor").action(async (name, url) => {
|
|
41
|
+
try {
|
|
42
|
+
console.log(`\u{1F441}\uFE0F Adding feed: ${name}
|
|
43
|
+
`);
|
|
44
|
+
const rsshub = new RSSHubService();
|
|
45
|
+
await rsshub.addFeed(name, url);
|
|
46
|
+
console.log(`
|
|
47
|
+
\u2705 Feed "${name}" added successfully!`);
|
|
48
|
+
console.log(` URL: ${url}`);
|
|
49
|
+
console.log("\nYou can now:");
|
|
50
|
+
console.log(" - List feeds: eve eyes:list-feeds");
|
|
51
|
+
console.log(" - Sync to Brain: eve eyes:sync");
|
|
52
|
+
} catch (error) {
|
|
53
|
+
console.error("\u274C Failed to add feed:", error);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function listFeedsCommand(program) {
|
|
59
|
+
program.command("list-feeds").alias("eyes:ls").description("List all RSS feeds").action(async () => {
|
|
60
|
+
try {
|
|
61
|
+
console.log("\u{1F441}\uFE0F Eve Eyes - Listing feeds...\n");
|
|
62
|
+
const rsshub = new RSSHubService();
|
|
63
|
+
const feeds = await rsshub.listFeeds();
|
|
64
|
+
if (feeds.length === 0) {
|
|
65
|
+
console.log("No feeds configured yet.");
|
|
66
|
+
console.log("Add one with: eve eyes:add-feed <name> <url>");
|
|
67
|
+
} else {
|
|
68
|
+
console.log(`Found ${feeds.length} feed(s):
|
|
69
|
+
`);
|
|
70
|
+
feeds.forEach((feed, i) => {
|
|
71
|
+
console.log(` ${i + 1}. ${feed.name}`);
|
|
72
|
+
console.log(` URL: ${feed.url}`);
|
|
73
|
+
console.log(` Status: ${feed.status}
|
|
74
|
+
`);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
} catch (error) {
|
|
78
|
+
console.error("\u274C Failed to list feeds:", error);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function removeFeedCommand(program) {
|
|
84
|
+
program.command("remove-feed <name>").alias("eyes:rm").description("Remove an RSS feed").action(async (name) => {
|
|
85
|
+
try {
|
|
86
|
+
console.log(`\u{1F441}\uFE0F Removing feed: ${name}
|
|
87
|
+
`);
|
|
88
|
+
const rsshub = new RSSHubService();
|
|
89
|
+
await rsshub.removeFeed(name);
|
|
90
|
+
console.log(`
|
|
91
|
+
\u2705 Feed "${name}" removed successfully!`);
|
|
92
|
+
} catch (error) {
|
|
93
|
+
console.error("\u274C Failed to remove feed:", error);
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
function startCommand(program) {
|
|
99
|
+
program.command("start").description("Start RSSHub service").action(async () => {
|
|
100
|
+
try {
|
|
101
|
+
console.log("\u{1F441}\uFE0F Starting RSSHub...\n");
|
|
102
|
+
const rsshub = new RSSHubService();
|
|
103
|
+
await rsshub.start();
|
|
104
|
+
console.log("\n\u2705 RSSHub started successfully!");
|
|
105
|
+
} catch (error) {
|
|
106
|
+
console.error("\u274C Failed to start:", error);
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
function stopCommand(program) {
|
|
112
|
+
program.command("stop").description("Stop RSSHub service").action(async () => {
|
|
113
|
+
try {
|
|
114
|
+
console.log("\u{1F441}\uFE0F Stopping RSSHub...\n");
|
|
115
|
+
const rsshub = new RSSHubService();
|
|
116
|
+
await rsshub.stop();
|
|
117
|
+
console.log("\n\u2705 RSSHub stopped successfully!");
|
|
118
|
+
} catch (error) {
|
|
119
|
+
console.error("\u274C Failed to stop:", error);
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
function syncCommand(program) {
|
|
125
|
+
program.command("sync").description("Sync RSS feeds to Brain").action(async () => {
|
|
126
|
+
try {
|
|
127
|
+
console.log("\u{1F441}\uFE0F Syncing feeds to Brain...\n");
|
|
128
|
+
const rsshub = new RSSHubService();
|
|
129
|
+
await rsshub.syncToBrain();
|
|
130
|
+
console.log("\n\u2705 Feeds synced successfully!");
|
|
131
|
+
} catch (error) {
|
|
132
|
+
console.error("\u274C Failed to sync:", error);
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
function parsePostgresUrl(url) {
|
|
138
|
+
try {
|
|
139
|
+
const u = new URL(url);
|
|
140
|
+
if (u.protocol !== "postgres:" && u.protocol !== "postgresql:") return null;
|
|
141
|
+
const database = u.pathname.replace(/^\//, "").split("/")[0] ?? "";
|
|
142
|
+
return {
|
|
143
|
+
host: u.hostname,
|
|
144
|
+
port: u.port ? Number(u.port) : 5432,
|
|
145
|
+
user: decodeURIComponent(u.username),
|
|
146
|
+
password: decodeURIComponent(u.password),
|
|
147
|
+
database,
|
|
148
|
+
ssl: u.searchParams.get("sslmode") === "require" || u.searchParams.get("ssl") === "true"
|
|
149
|
+
};
|
|
150
|
+
} catch {
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function eyesDir(cwd) {
|
|
155
|
+
return join(cwd, ".eve", "eyes");
|
|
156
|
+
}
|
|
157
|
+
function databaseCommand(program) {
|
|
158
|
+
const db = program.command("database").description("Outerbase Studio (npm CLI) for Postgres \u2014 see https://www.npmjs.com/package/@outerbase/studio");
|
|
159
|
+
db.command("init").description("Write outerbase.json template (Postgres via DATABASE_URL)").requiredOption("--database-url <url>", "postgres://user:pass@host:5432/dbname").option("--port <n>", "Studio listen port", "4000").option("--user <u>", "HTTP Basic auth user for Studio UI").option("--pass <p>", "HTTP Basic auth password for Studio UI").action((opts) => {
|
|
160
|
+
const cwd = process.cwd();
|
|
161
|
+
const parsed = parsePostgresUrl(opts.databaseUrl);
|
|
162
|
+
if (!parsed) {
|
|
163
|
+
console.error("Invalid --database-url (expected postgres://...)");
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
const dir = eyesDir(cwd);
|
|
167
|
+
mkdirSync(dir, { recursive: true });
|
|
168
|
+
const config = {
|
|
169
|
+
driver: "postgres",
|
|
170
|
+
port: Number(opts.port) || 4e3,
|
|
171
|
+
connection: {
|
|
172
|
+
database: parsed.database,
|
|
173
|
+
host: parsed.host,
|
|
174
|
+
port: parsed.port,
|
|
175
|
+
user: parsed.user,
|
|
176
|
+
password: parsed.password,
|
|
177
|
+
ssl: parsed.ssl
|
|
178
|
+
},
|
|
179
|
+
...opts.user && opts.pass ? { auth: { username: opts.user, password: opts.pass } } : {}
|
|
180
|
+
};
|
|
181
|
+
const path = join(dir, "outerbase.json");
|
|
182
|
+
writeFileSync(path, JSON.stringify(config, null, 2), "utf-8");
|
|
183
|
+
console.log(`Wrote ${path}`);
|
|
184
|
+
console.log(
|
|
185
|
+
"Note: @outerbase/studio embeds UI from studio.outerbase.com \u2014 offline/air-gapped hosts cannot render the UI."
|
|
186
|
+
);
|
|
187
|
+
});
|
|
188
|
+
const COMPOSE = `services:
|
|
189
|
+
outerbase-studio:
|
|
190
|
+
image: node:22-bookworm-slim
|
|
191
|
+
container_name: eve-eyes-outerbase
|
|
192
|
+
restart: unless-stopped
|
|
193
|
+
working_dir: /config
|
|
194
|
+
volumes:
|
|
195
|
+
- ./outerbase.json:/config/outerbase.json:ro
|
|
196
|
+
ports:
|
|
197
|
+
- "127.0.0.1:\${OUTERBASE_HOST_PORT}:4000"
|
|
198
|
+
command: ["bash", "-lc", "npm install -g @outerbase/studio@0.2.7 && exec studio --config=/config/outerbase.json --port=4000"]
|
|
199
|
+
networks:
|
|
200
|
+
- eve-network
|
|
201
|
+
|
|
202
|
+
networks:
|
|
203
|
+
eve-network:
|
|
204
|
+
external: true
|
|
205
|
+
`.trim();
|
|
206
|
+
db.command("up").description("docker compose up Outerbase Studio (run database init first)").option("--port <n>", "Host port to bind", "4005").action((opts) => {
|
|
207
|
+
const cwd = process.cwd();
|
|
208
|
+
const dir = eyesDir(cwd);
|
|
209
|
+
const cfg = join(dir, "outerbase.json");
|
|
210
|
+
if (!existsSync(cfg)) {
|
|
211
|
+
console.error("Missing outerbase.json. Run: eve eyes database init --database-url ...");
|
|
212
|
+
process.exit(1);
|
|
213
|
+
}
|
|
214
|
+
const composeFile = join(dir, "outerbase-compose.yml");
|
|
215
|
+
mkdirSync(dir, { recursive: true });
|
|
216
|
+
writeFileSync(composeFile, COMPOSE, "utf-8");
|
|
217
|
+
try {
|
|
218
|
+
execSync("docker network create eve-network", { stdio: "ignore" });
|
|
219
|
+
} catch {
|
|
220
|
+
}
|
|
221
|
+
const env = {
|
|
222
|
+
...process.env,
|
|
223
|
+
OUTERBASE_HOST_PORT: opts.port ?? "4005"
|
|
224
|
+
};
|
|
225
|
+
execSync(`docker compose -f "${composeFile}" up -d`, {
|
|
226
|
+
stdio: "inherit",
|
|
227
|
+
cwd: dir,
|
|
228
|
+
env
|
|
229
|
+
});
|
|
230
|
+
console.log(`
|
|
231
|
+
Outerbase Studio: http://127.0.0.1:${opts.port ?? "4005"}
|
|
232
|
+
`);
|
|
233
|
+
});
|
|
234
|
+
db.command("down").description("Stop Outerbase Studio container").action(() => {
|
|
235
|
+
const cwd = process.cwd();
|
|
236
|
+
const dir = eyesDir(cwd);
|
|
237
|
+
const composeFile = join(dir, "outerbase-compose.yml");
|
|
238
|
+
if (!existsSync(composeFile)) {
|
|
239
|
+
console.log("No compose file");
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
execSync(`docker compose -f "${composeFile}" down`, { stdio: "inherit", cwd: dir });
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
function registerEyesCommands(eyes) {
|
|
246
|
+
installCommand(eyes);
|
|
247
|
+
addFeedCommand(eyes);
|
|
248
|
+
listFeedsCommand(eyes);
|
|
249
|
+
removeFeedCommand(eyes);
|
|
250
|
+
startCommand(eyes);
|
|
251
|
+
stopCommand(eyes);
|
|
252
|
+
syncCommand(eyes);
|
|
253
|
+
databaseCommand(eyes);
|
|
254
|
+
}
|
|
255
|
+
async function createRSSHubService(config) {
|
|
256
|
+
const { RSSHubService: RSSHubService2 } = await import("./rsshub-GOJBTNOD-UNNVKBFL.js");
|
|
257
|
+
return new RSSHubService2(config);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
export {
|
|
261
|
+
installCommand,
|
|
262
|
+
addFeedCommand,
|
|
263
|
+
listFeedsCommand,
|
|
264
|
+
removeFeedCommand,
|
|
265
|
+
startCommand,
|
|
266
|
+
stopCommand,
|
|
267
|
+
syncCommand,
|
|
268
|
+
databaseCommand,
|
|
269
|
+
registerEyesCommands,
|
|
270
|
+
createRSSHubService
|
|
271
|
+
};
|
|
272
|
+
//# sourceMappingURL=chunk-ZPDNZRVW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../@eve/eyes/dist/index.js"],"sourcesContent":["import {\n RSSHubService\n} from \"./chunk-CZLNC57C.js\";\n\n// src/commands/install.ts\nimport { EntityStateManager } from \"@eve/dna\";\nfunction installCommand(program) {\n program.command(\"install\").description(\"Install RSSHub for RSS aggregation\").option(\"-p, --port <port>\", \"RSSHub port\", \"1200\").action(async (options) => {\n try {\n console.log(\"\\u{1F441}\\uFE0F Eve Eyes - Installing RSSHub...\\n\");\n const rsshub = new RSSHubService();\n const isInstalled = await rsshub.isInstalled();\n if (isInstalled) {\n console.log(\"\\u2705 RSSHub is already installed\");\n console.log(' Use \"eve eyes:start\" to start it\\n');\n return;\n }\n console.log(\"\\u{1F4E6} Installing RSSHub...\");\n await rsshub.install({\n port: parseInt(options.port, 10)\n });\n const stateManager = new EntityStateManager();\n await stateManager.updateOrgan(\"eyes\", \"ready\");\n console.log(\"\\n\\u2705 RSSHub installed successfully!\");\n console.log(` URL: http://localhost:${options.port}`);\n console.log(' Use \"eve eyes:start\" to start it\\n');\n } catch (error) {\n console.error(\"\\u274C Installation failed:\", error);\n process.exit(1);\n }\n });\n}\n\n// src/commands/add-feed.ts\nfunction addFeedCommand(program) {\n program.command(\"add-feed <name> <url>\").description(\"Add an RSS feed to monitor\").action(async (name, url) => {\n try {\n console.log(`\\u{1F441}\\uFE0F Adding feed: ${name}\n`);\n const rsshub = new RSSHubService();\n await rsshub.addFeed(name, url);\n console.log(`\n\\u2705 Feed \"${name}\" added successfully!`);\n console.log(` URL: ${url}`);\n console.log(\"\\nYou can now:\");\n console.log(\" - List feeds: eve eyes:list-feeds\");\n console.log(\" - Sync to Brain: eve eyes:sync\");\n } catch (error) {\n console.error(\"\\u274C Failed to add feed:\", error);\n process.exit(1);\n }\n });\n}\n\n// src/commands/list-feeds.ts\nfunction listFeedsCommand(program) {\n program.command(\"list-feeds\").alias(\"eyes:ls\").description(\"List all RSS feeds\").action(async () => {\n try {\n console.log(\"\\u{1F441}\\uFE0F Eve Eyes - Listing feeds...\\n\");\n const rsshub = new RSSHubService();\n const feeds = await rsshub.listFeeds();\n if (feeds.length === 0) {\n console.log(\"No feeds configured yet.\");\n console.log(\"Add one with: eve eyes:add-feed <name> <url>\");\n } else {\n console.log(`Found ${feeds.length} feed(s):\n`);\n feeds.forEach((feed, i) => {\n console.log(` ${i + 1}. ${feed.name}`);\n console.log(` URL: ${feed.url}`);\n console.log(` Status: ${feed.status}\n`);\n });\n }\n } catch (error) {\n console.error(\"\\u274C Failed to list feeds:\", error);\n process.exit(1);\n }\n });\n}\n\n// src/commands/remove-feed.ts\nfunction removeFeedCommand(program) {\n program.command(\"remove-feed <name>\").alias(\"eyes:rm\").description(\"Remove an RSS feed\").action(async (name) => {\n try {\n console.log(`\\u{1F441}\\uFE0F Removing feed: ${name}\n`);\n const rsshub = new RSSHubService();\n await rsshub.removeFeed(name);\n console.log(`\n\\u2705 Feed \"${name}\" removed successfully!`);\n } catch (error) {\n console.error(\"\\u274C Failed to remove feed:\", error);\n process.exit(1);\n }\n });\n}\n\n// src/commands/start.ts\nfunction startCommand(program) {\n program.command(\"start\").description(\"Start RSSHub service\").action(async () => {\n try {\n console.log(\"\\u{1F441}\\uFE0F Starting RSSHub...\\n\");\n const rsshub = new RSSHubService();\n await rsshub.start();\n console.log(\"\\n\\u2705 RSSHub started successfully!\");\n } catch (error) {\n console.error(\"\\u274C Failed to start:\", error);\n process.exit(1);\n }\n });\n}\n\n// src/commands/stop.ts\nfunction stopCommand(program) {\n program.command(\"stop\").description(\"Stop RSSHub service\").action(async () => {\n try {\n console.log(\"\\u{1F441}\\uFE0F Stopping RSSHub...\\n\");\n const rsshub = new RSSHubService();\n await rsshub.stop();\n console.log(\"\\n\\u2705 RSSHub stopped successfully!\");\n } catch (error) {\n console.error(\"\\u274C Failed to stop:\", error);\n process.exit(1);\n }\n });\n}\n\n// src/commands/sync.ts\nfunction syncCommand(program) {\n program.command(\"sync\").description(\"Sync RSS feeds to Brain\").action(async () => {\n try {\n console.log(\"\\u{1F441}\\uFE0F Syncing feeds to Brain...\\n\");\n const rsshub = new RSSHubService();\n await rsshub.syncToBrain();\n console.log(\"\\n\\u2705 Feeds synced successfully!\");\n } catch (error) {\n console.error(\"\\u274C Failed to sync:\", error);\n process.exit(1);\n }\n });\n}\n\n// src/commands/database.ts\nimport { existsSync, mkdirSync, writeFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { execSync } from \"child_process\";\nfunction parsePostgresUrl(url) {\n try {\n const u = new URL(url);\n if (u.protocol !== \"postgres:\" && u.protocol !== \"postgresql:\") return null;\n const database = u.pathname.replace(/^\\//, \"\").split(\"/\")[0] ?? \"\";\n return {\n host: u.hostname,\n port: u.port ? Number(u.port) : 5432,\n user: decodeURIComponent(u.username),\n password: decodeURIComponent(u.password),\n database,\n ssl: u.searchParams.get(\"sslmode\") === \"require\" || u.searchParams.get(\"ssl\") === \"true\"\n };\n } catch {\n return null;\n }\n}\nfunction eyesDir(cwd) {\n return join(cwd, \".eve\", \"eyes\");\n}\nfunction databaseCommand(program) {\n const db = program.command(\"database\").description(\"Outerbase Studio (npm CLI) for Postgres \\u2014 see https://www.npmjs.com/package/@outerbase/studio\");\n db.command(\"init\").description(\"Write outerbase.json template (Postgres via DATABASE_URL)\").requiredOption(\"--database-url <url>\", \"postgres://user:pass@host:5432/dbname\").option(\"--port <n>\", \"Studio listen port\", \"4000\").option(\"--user <u>\", \"HTTP Basic auth user for Studio UI\").option(\"--pass <p>\", \"HTTP Basic auth password for Studio UI\").action((opts) => {\n const cwd = process.cwd();\n const parsed = parsePostgresUrl(opts.databaseUrl);\n if (!parsed) {\n console.error(\"Invalid --database-url (expected postgres://...)\");\n process.exit(1);\n }\n const dir = eyesDir(cwd);\n mkdirSync(dir, { recursive: true });\n const config = {\n driver: \"postgres\",\n port: Number(opts.port) || 4e3,\n connection: {\n database: parsed.database,\n host: parsed.host,\n port: parsed.port,\n user: parsed.user,\n password: parsed.password,\n ssl: parsed.ssl\n },\n ...opts.user && opts.pass ? { auth: { username: opts.user, password: opts.pass } } : {}\n };\n const path = join(dir, \"outerbase.json\");\n writeFileSync(path, JSON.stringify(config, null, 2), \"utf-8\");\n console.log(`Wrote ${path}`);\n console.log(\n \"Note: @outerbase/studio embeds UI from studio.outerbase.com \\u2014 offline/air-gapped hosts cannot render the UI.\"\n );\n });\n const COMPOSE = `services:\n outerbase-studio:\n image: node:22-bookworm-slim\n container_name: eve-eyes-outerbase\n restart: unless-stopped\n working_dir: /config\n volumes:\n - ./outerbase.json:/config/outerbase.json:ro\n ports:\n - \"127.0.0.1:\\${OUTERBASE_HOST_PORT}:4000\"\n command: [\"bash\", \"-lc\", \"npm install -g @outerbase/studio@0.2.7 && exec studio --config=/config/outerbase.json --port=4000\"]\n networks:\n - eve-network\n\nnetworks:\n eve-network:\n external: true\n`.trim();\n db.command(\"up\").description(\"docker compose up Outerbase Studio (run database init first)\").option(\"--port <n>\", \"Host port to bind\", \"4005\").action((opts) => {\n const cwd = process.cwd();\n const dir = eyesDir(cwd);\n const cfg = join(dir, \"outerbase.json\");\n if (!existsSync(cfg)) {\n console.error(\"Missing outerbase.json. Run: eve eyes database init --database-url ...\");\n process.exit(1);\n }\n const composeFile = join(dir, \"outerbase-compose.yml\");\n mkdirSync(dir, { recursive: true });\n writeFileSync(composeFile, COMPOSE, \"utf-8\");\n try {\n execSync(\"docker network create eve-network\", { stdio: \"ignore\" });\n } catch {\n }\n const env = {\n ...process.env,\n OUTERBASE_HOST_PORT: opts.port ?? \"4005\"\n };\n execSync(`docker compose -f \"${composeFile}\" up -d`, {\n stdio: \"inherit\",\n cwd: dir,\n env\n });\n console.log(`\nOuterbase Studio: http://127.0.0.1:${opts.port ?? \"4005\"}\n`);\n });\n db.command(\"down\").description(\"Stop Outerbase Studio container\").action(() => {\n const cwd = process.cwd();\n const dir = eyesDir(cwd);\n const composeFile = join(dir, \"outerbase-compose.yml\");\n if (!existsSync(composeFile)) {\n console.log(\"No compose file\");\n return;\n }\n execSync(`docker compose -f \"${composeFile}\" down`, { stdio: \"inherit\", cwd: dir });\n });\n}\n\n// src/index.ts\nfunction registerEyesCommands(eyes) {\n installCommand(eyes);\n addFeedCommand(eyes);\n listFeedsCommand(eyes);\n removeFeedCommand(eyes);\n startCommand(eyes);\n stopCommand(eyes);\n syncCommand(eyes);\n databaseCommand(eyes);\n}\nasync function createRSSHubService(config) {\n const { RSSHubService: RSSHubService2 } = await import(\"./rsshub-GOJBTNOD.js\");\n return new RSSHubService2(config);\n}\nexport {\n RSSHubService,\n addFeedCommand,\n createRSSHubService,\n databaseCommand,\n installCommand,\n listFeedsCommand,\n registerEyesCommands,\n removeFeedCommand,\n startCommand,\n stopCommand,\n syncCommand\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createRequire as __eveCreateRequire } from 'module'; const require = __eveCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
configStore
|
|
4
|
+
} from "./chunk-ROKIQIEX.js";
|
|
5
|
+
import "./chunk-T7GCAJK5.js";
|
|
6
|
+
import "./chunk-FAE5UZFE.js";
|
|
7
|
+
import "./chunk-D7P3IYYR.js";
|
|
8
|
+
export {
|
|
9
|
+
configStore
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=config-store-KTOWIKAS-XVZHNPKW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createRequire as __eveCreateRequire } from 'module'; const require = __eveCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
addFeedCommand,
|
|
4
|
+
createRSSHubService,
|
|
5
|
+
databaseCommand,
|
|
6
|
+
installCommand,
|
|
7
|
+
listFeedsCommand,
|
|
8
|
+
registerEyesCommands,
|
|
9
|
+
removeFeedCommand,
|
|
10
|
+
startCommand,
|
|
11
|
+
stopCommand,
|
|
12
|
+
syncCommand
|
|
13
|
+
} from "./chunk-ZPDNZRVW.js";
|
|
14
|
+
import {
|
|
15
|
+
RSSHubService
|
|
16
|
+
} from "./chunk-UOQWJ3S4.js";
|
|
17
|
+
import "./chunk-22RIHU4J.js";
|
|
18
|
+
import "./chunk-23XQDB7K.js";
|
|
19
|
+
import "./chunk-HVJEW7TU.js";
|
|
20
|
+
import "./chunk-5TBV2VHZ.js";
|
|
21
|
+
import "./chunk-ROKIQIEX.js";
|
|
22
|
+
import "./chunk-O5WTCVMZ.js";
|
|
23
|
+
import "./chunk-T7GCAJK5.js";
|
|
24
|
+
import "./chunk-HRF6TNXX.js";
|
|
25
|
+
import "./chunk-FAE5UZFE.js";
|
|
26
|
+
import "./chunk-D7P3IYYR.js";
|
|
27
|
+
export {
|
|
28
|
+
RSSHubService,
|
|
29
|
+
addFeedCommand,
|
|
30
|
+
createRSSHubService,
|
|
31
|
+
databaseCommand,
|
|
32
|
+
installCommand,
|
|
33
|
+
listFeedsCommand,
|
|
34
|
+
registerEyesCommands,
|
|
35
|
+
removeFeedCommand,
|
|
36
|
+
startCommand,
|
|
37
|
+
stopCommand,
|
|
38
|
+
syncCommand
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=dist-2VRFSXMO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|