dsh-factory
Agent & Workflowmonotykamary/dsh-factory
Durable dependency-graph task factory for DeepSeek Harness: recurring Agent work, safe checkout lanes, first-class queues, Triage, and artifacts.
- ai-agents
- cordis
- deepseek-harness
- dependency-graph
- dsh-plugin
- multi-agent-systems
- sqlite
- task-automation
- typescript
Verification and compatibility
This section shows evidence collected by the catalog. Undeclared information is labeled as unknown.
- Current-version compatibility
- Verified on the catalog Harness version
- Declared Harness range
- Not declared
- Declared platforms
- Not declared
- Profiles
- web
- Build approval
- No requirement detected
- Permissions
- Not declared
- External services
- Not declared
- Telemetry
- Unknown
This is not a security endorsement. Review source, permissions, and configuration before installing.
View evidence and scope
Verification covers only the named source, version, and Harness environment. It does not guarantee future compatibility.
dsh-factory@0.1.9- The plugin completed a load check in an isolated environment.
README
π dsh-factory
Durable task graphs and recurring Agent work for DeepSeek Harness
From one prompt to a dependency-aware production line β with isolated checkouts, live Sessions, and reviewable results.
dsh-factory turns the ordinary DSH Session workflow into a durable local task factory. People can capture work from New Session, models can build dependency graphs directly, and a lease-elected scheduler runs eligible nodes through native DSH Agents without introducing a second Agent loop, tool registry, or conversation store.
Why Factory?
| Capability | What it unlocks | |
|---|---|---|
| πΈοΈ | Dependency graphs | Parallel branches, sequential chains, joins, and always-run finalizers in one named flow. |
| π | Native Agent runs | Every assignment executes as an ordinary durable DSH Session with the selected model and preset. |
| π€οΈ | Safe checkout lanes | Current, isolated, and predecessor-reuse lanes over managed Git worktrees with dirty-work and live-Session protection. |
| β° | One-shot + recurring schedules | Delayed starts and Croner-backed recurrence with lease-safe activation and non-overlapping occurrences. |
| π | Automatic failure retries | Abruptly failed runs requeue with exponential backoff β three retries starting at thirty seconds by default β with workspace and per-task opt-outs. |
| π·οΈ | Project-scoped identifiers | Every workspace derives its own uppercase key with an independent counter β DOCS-3 beside SR-2 β so cross-project dependencies stay mistake-proof while legacy FAC numbers keep resolving. |
| π¬ | First-class discussion | Posted prompts, steer messages, reorderable queued follow-ups, images, and Factory notes in one chronological feed. |
| π | Triage and artifacts | Unread and failed run results, mutation receipts, plus images and videos discovered under each run's .artifacts/ directory. |
| β¨ | White-glove intake | A compact Task/Flow selector extends New Session instead of duplicating its Workspace, model, permission, attachment, and draft controls. |
How it fits
flowchart LR
Human[Human or model] --> Intake[New Session + Factory tools]
Intake --> Graph[(Task and flow graph)]
Graph --> Scheduler[Lease-elected scheduler]
Scheduler --> Lanes[Serialized checkout lanes]
Lanes --> Agents[DSH Agents]
Agents --> Sessions[(Durable Sessions)]
Sessions --> Triage[Triage + artifacts]
Sessions --> Graph
Factory is a control plane over DSH, not a replacement for it. Factory SQLite owns projects, tasks, flows, schedules, runs, and review state. DSH remains authoritative for Agent execution, model-visible messages, pending prompt order, tools, attachments, Sessions, and worktree safety.
The workflow
- Capture β send normally to create a live Session, choose Run later for a draft task, or place the prompt into a new or existing flow.
- Compose β add searchable dependencies, parallel branches, joins, finalizers, labels, priorities, schedules, and model overrides.
- Run β the scheduler claims ready work, resolves a safe checkout lane, starts a DSH Agent, and logs the assignment with dependency and mutation-ledger context.
- Collaborate β Queue and Steer post through the Agent inbox; pending rows stay editable and reorderable until claimed.
- Finish β a missing report receives one logged next-step reminder;
factory_finishis followed by one concise user-facing result and settles only after the Session log is flushed. - Review β Triage preserves each terminal occurrence, including recurring runs, receipts, summaries, failures, and
.artifacts/media.
Packages
| Package | Responsibility |
|---|---|
dsh-factory-protocol | Host-independent task, flow, run, schedule, observation, and graph records. |
dsh-factory-store | Persistence Service Definition. |
dsh-factory-store-sqlite | Transactional documents, presence, revisions, and scheduler leases. |
dsh-factory-domain | State transitions, metadata settlement, artifacts, and Typert Remote methods. |
dsh-factory-tools | Model graph tools, explicit completion, and the bundled Factory skill. |
dsh-factory-scheduler | Dependency, lane, cron, cleanup, and DSH Agent reconciliation. |
dsh-factory-client-ui | Work, task detail, Triage, New Session intake, and project settings. |
dsh-factory | Installable Cordis patch-layer bundle. |
Install
Monotykamary DSH flavor
Factory ships in the custom Web profile beside Fabric and Fovea:
npm install --global @monotykamary/dsh@latest
dsh --profile web
Add to another compatible profile
dsh plugin --profile web add dsh-factory@latest
Restart the selected profile after installation. Factory appears as an additive Sidebar application and stores its SQLite database under the DSH home.
git clone https://github.com/monotykamary/dsh-factory.git
cd dsh-factory
bun install
# Optional when co-developing against a sibling ../deepseek-harness checkout
bun run link:harness
bun run check
bun run install:local -- --profile web --skip-build
The installer links all eight workspace packages, validates the composed Factory rows, and never starts or restarts DSH.
Safety model
A checkout is one serialized writer lane. Factory never force-removes a worktree, never deletes dirty work, and never releases a lane while shared presence reports a live Session. It refuses primary and unmanaged checkout removal. Publishing remains an explicit task, and cleanup cannot rewrite a flow outcome.
Recurring tasks return to Scheduled after every occurrence and retain each success or failure in Triage. Scheduler takeover recovers only scheduler-owned dispatches, so observation of an external Session cannot create a duplicate run.
Browser experience
Work shows Emerging work first and then graph-ordered flows. Task detail combines properties, dependencies, schedule, model selection, run output, discussion, mutation receipts, and review media. Linked Sessions can be settled or archived; cancelled tasks that never acquired a Session can be permanently deleted after explicit acknowledgement. Relationship rails move from neutral pending nodes to a blue running spinner, green completion check, or red abrupt-failure cross.
Pasted images reuse the DSH attachment gallery and fullscreen lightbox. Task detail and exact-run Triage discover images and videos in the owning checkout's .artifacts/ directory and open one keyboard-accessible carousel without copying media into Factory state.
Development
Requirements: Node.js ^22.19.0 || >=24 and Bun 1.4+.
bun install
# Optional when co-developing against a sibling ../deepseek-harness checkout
bun run link:harness
bun run check
bun run check also packs all eight packages and installs them with standard npm, without legacy peer mode. Browser-facing changes additionally run bun run test:e2e against an assembled Factory Web profile. Local captures belong under .artifacts/screenshots/ and are excluded from Git and npm.
See docs/architecture.md for durable authority, intake, metadata, scheduling, execution, Triage, cleanup, and browser-state ownership.