Add #rss command family with LLM tags and summaries (v0.20.0)
CI / build + unit (pull_request) Successful in 1m15s
CI / build + unit (pull_request) Successful in 1m15s
#rss subcommands on the command channel: help / add <url> <name> / remove <name> / tags / sources / get <name|#tag>. Sources are stored in a new rss_sources table in the existing MESH_DB_PATH file (second node:sqlite connection, case-insensitive names); feeds parsed with fast-xml-parser (RSS 2.0 + Atom); AI tags and headline summaries via injected LlmService.chat() with bounded maxTokens (50/200). CommandService gains prefix registration so one handler owns the whole #rss family while #ping stays an exact match; wired in CommandModule's factory — still no constructor-level cycle, no forwardRef. One dead feed does not sink a tag summary.
This commit is contained in:
@@ -1,20 +1,22 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { MeshModule } from '../mesh/mesh.module.js';
|
||||
import { MeshService } from '../mesh/mesh.service.js';
|
||||
import { RssModule } from '../rss/rss.module.js';
|
||||
import { RssService } from '../rss/rss.service.js';
|
||||
import { CommandService } from './command.service.js';
|
||||
|
||||
@Module({
|
||||
imports: [MeshModule], // one-way only — the reverse edge is wired in the factory below, not via DI
|
||||
imports: [MeshModule, RssModule], // one-way only — the MeshService reverse edge is wired in the factory below, not via DI
|
||||
providers: [
|
||||
{
|
||||
provide: CommandService,
|
||||
useFactory: (mesh: MeshService) => {
|
||||
const commands = new CommandService(mesh);
|
||||
useFactory: (mesh: MeshService, rss: RssService) => {
|
||||
const commands = new CommandService(mesh, rss);
|
||||
// break the cycle: MeshService can't inject us (its own factory would deadlock on this edge), so attach ourselves once we exist — mesh is guaranteed created here because it's our injected dependency
|
||||
mesh.attachCommands(commands);
|
||||
return commands;
|
||||
},
|
||||
inject: [MeshService],
|
||||
inject: [MeshService, RssService],
|
||||
},
|
||||
],
|
||||
exports: [CommandService],
|
||||
|
||||
Reference in New Issue
Block a user