You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Support scheduling connectors independently so openwiki cron pause|resume|delete can target a single connector, not just all.
Motivation
Today OpenWiki keeps a single unified schedule (config.ingestionSchedule) backed by one OS-level job that ingests every enabled connector together. So openwiki cron pause|resume|delete is all-or-nothing — you can't pause just one connector.
This matters in practice:
Temporarily silence one noisy or rate-limited source (e.g. pause Slack ingestion) while keeping the rest (git-repo, web-search) running on schedule.
Stop an expensive connector without disabling your whole documentation pipeline.
Give different connectors different cadences (e.g. git-repo hourly, web-search daily).
There's also an inconsistency users hit: openwiki ingest <source|all> is per-source (on-demand), so people reasonably expect cron to be too. The cron help even advertised <source|all> until #307 aligned it down to all to match what the implementation actually supports.
Proposed Solution
Introduce per-connector schedules so each connector can be scheduled and paused/resumed/deleted independently.
Likely scope (this is a feature, not a small fix):
Data model: replace the single ingestionSchedule with per-connector schedule entries, keyed by connector id / source-instance.
Installation & reconciliation: manage one OS-level job per scheduled connector instead of a single shared job (launchd on macOS, and the other supported platforms).
Command layer: cron pause|resume|delete <source|all> targets one connector or all; cron list reports per-connector status.
Migration: existing single-schedule configs migrate transparently; all keeps working.
Acceptance criteria:
openwiki cron pause web-search pauses only that connector; others keep running.
cron list shows per-connector state.
all still applies to every connector.
Existing configs migrate with no manual steps.
Alternatives Considered
No response
Additional Context
fix: align cron schedule target help #307 aligned the cron help/parser down to all (the honest short-term fix) after it previously advertised <source|all> that never worked.
Current behavior lives in src/schedules.ts: pauseConnectorSchedules/resumeConnectorSchedules/deleteConnectorSchedules all short-circuit unless target === "all", because there is only one config.ingestionSchedule to act on.
The per-source ingest command (src/commands.ts, parseIngestionTarget) is the asymmetry that makes users expect per-source cron.
Summary
Support scheduling connectors independently so openwiki cron pause|resume|delete can target a single connector, not just all.
Motivation
Today OpenWiki keeps a single unified schedule (
config.ingestionSchedule) backed by one OS-level job that ingests every enabled connector together. Soopenwiki cron pause|resume|deleteis all-or-nothing — you can't pause just one connector.This matters in practice:
There's also an inconsistency users hit:
openwiki ingest <source|all>is per-source (on-demand), so people reasonably expectcronto be too. The cron help even advertised<source|all>until #307 aligned it down toallto match what the implementation actually supports.Proposed Solution
Introduce per-connector schedules so each connector can be scheduled and paused/resumed/deleted independently.
Likely scope (this is a feature, not a small fix):
ingestionSchedulewith per-connector schedule entries, keyed by connector id / source-instance.cron pause|resume|delete <source|all>targets one connector or all;cron listreports per-connector status.allkeeps working.Acceptance criteria:
openwiki cron pause web-searchpauses only that connector; others keep running.cron listshows per-connector state.allstill applies to every connector.Alternatives Considered
No response
Additional Context
all(the honest short-term fix) after it previously advertised<source|all>that never worked.src/schedules.ts:pauseConnectorSchedules/resumeConnectorSchedules/deleteConnectorSchedulesall short-circuit unlesstarget === "all", because there is only oneconfig.ingestionScheduleto act on.ingestcommand (src/commands.ts,parseIngestionTarget) is the asymmetry that makes users expect per-source cron.