refactor: scaffold module registries and default-module layout
Additive change — existing code paths still run via inline fallbacks. Prepares core for per-module extractions in PR #3 onward. Four registries added with empty defaults: - delivery action handlers (delivery.ts) - router inbound gate (router.ts) - response dispatcher (index.ts) - MCP tool self-registration (container/agent-runner/src/mcp-tools/server.ts) Default modules moved to src/modules/ for signaling: - src/modules/typing/ (extracted from delivery.ts) - src/modules/mount-security/ (moved from src/mount-security.ts) Both are imported directly by core — no hook, no registry. Removal requires editing core imports. Migrator now keys applied rows by name (uniqueness) so module migrations can pick arbitrary version numbers. Stored version column is auto-assigned as an applied-order sequence. sqlite_master guards added around core calls into module-owned tables (user_roles, agent_destinations, pending_questions). No-ops today; load-bearing after the owning modules are extracted. MODULE-HOOK markers placed at scheduling's two skill-edit sites (host-sweep.ts recurrence call, poll-loop.ts pre-task gate). PR #4 replaces the marked blocks when scheduling moves to its module. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -156,11 +156,18 @@ export async function runPollLoop(config: PollLoopConfig): Promise<void> {
|
||||
// Pre-task scripts: for any task rows with a `script`, run it before the
|
||||
// provider call. Scripts returning wakeAgent=false (or erroring) gate
|
||||
// their own task row only — surviving messages still go to the agent.
|
||||
//
|
||||
// MODULE-HOOK:scheduling-pre-task:start
|
||||
// When scheduling is extracted (PR #4), `applyPreTaskScripts` moves
|
||||
// to the scheduling module and the `/add-scheduling` skill replaces
|
||||
// this block with a call to the module. Without scheduling installed,
|
||||
// the block is empty (no script gating) and `keep = normalMessages`.
|
||||
const { keep, skipped } = await applyPreTaskScripts(normalMessages);
|
||||
if (skipped.length > 0) {
|
||||
markCompleted(skipped);
|
||||
log(`Pre-task script skipped ${skipped.length} task(s): ${skipped.join(', ')}`);
|
||||
}
|
||||
// MODULE-HOOK:scheduling-pre-task:end
|
||||
|
||||
if (keep.length === 0) {
|
||||
log(`All ${normalMessages.length} non-command message(s) gated by script, skipping query`);
|
||||
|
||||
Reference in New Issue
Block a user