mirror of
https://github.com/TommyFang2077/dsh-desktop.git
synced 2026-08-17 09:06:36 +08:00
feat: integrate AgentRQ task manager plugin
- Clone agentrq/agentrq plugin to plugins/agentrq/ - Update package.json name to 'agentrq' - Add agentrq plugin to tauri.conf.json resources - Add AGENTRQ_PACKAGE constant and bundled_agentrq_plugin() discovery - Add install_agentrq_plugin() function to modlens.rs - Update README with plugin listing
This commit is contained in:
97
plugins/agentrq/src/config.ts
Normal file
97
plugins/agentrq/src/config.ts
Normal file
@@ -0,0 +1,97 @@
|
||||
/**
|
||||
* Plugin configuration schema.
|
||||
*
|
||||
* Everything two deployments might reasonably set differently is a config
|
||||
* field, per the harness configuration guidance: nothing tunable is hardcoded.
|
||||
*
|
||||
* @module @agentrq/dsh-plugin-agentrq
|
||||
*/
|
||||
|
||||
import Schema from '@deepseek-ai/schemastery'
|
||||
|
||||
/** How many of a process's agents may take work from the same workspace. */
|
||||
export type DeliveryScope = 'single-agent' | 'every-agent'
|
||||
|
||||
/** Reconnection backoff for a dropped workspace session. */
|
||||
export interface ReconnectConfig {
|
||||
/** Delay before the first retry, in milliseconds. */
|
||||
initialDelayMs: number
|
||||
/** Ceiling for the exponential backoff, in milliseconds. */
|
||||
maxDelayMs: number
|
||||
}
|
||||
|
||||
/** Resolved plugin configuration. */
|
||||
export interface Config {
|
||||
/**
|
||||
* The workspace's AgentRQ MCP endpoint. Copy it from Workspace Settings —
|
||||
* the URL there already carries `?token=…`, which is how AgentRQ
|
||||
* authenticates a headless client.
|
||||
*/
|
||||
url: string
|
||||
/**
|
||||
* Optional bearer token, for deployments that prefer an `Authorization`
|
||||
* header over the `?token=` query parameter. Empty means "the URL carries
|
||||
* its own credential".
|
||||
*/
|
||||
token: string
|
||||
/**
|
||||
* Whether to mount the MCP bridge that gives the model AgentRQ's tools.
|
||||
*
|
||||
* The plugin mounts one `@deepseek-ai/dsh-mcp-client` instance itself, so a
|
||||
* deployment configures the workspace endpoint once. Set false only to mount
|
||||
* that bridge as your own row — a second instance on the same `serverName`
|
||||
* fails at load.
|
||||
*/
|
||||
mountBridge: boolean
|
||||
/**
|
||||
* Namespace the bridged AgentRQ tools are registered under: the model sees
|
||||
* `mcp__<serverName>__reply` and friends. The working-agreement section and
|
||||
* every framing derive their tool names from this, so the two can never drift.
|
||||
*/
|
||||
serverName: string
|
||||
/**
|
||||
* Whether the workspace's pushes — new tasks, the periodic next-task
|
||||
* reminder, status checks, and the human's messages — are delivered into the
|
||||
* session as they arrive.
|
||||
*/
|
||||
deliverPushes: boolean
|
||||
/**
|
||||
* Whether to dequeue one task at startup. The workspace re-pushes an
|
||||
* unclaimed task on its own schedule, so this only shortens the wait for
|
||||
* work that predates the connection.
|
||||
*/
|
||||
catchUpOnStart: boolean
|
||||
/**
|
||||
* One AgentRQ workspace queue serves one worker, and pushes are broadcast to
|
||||
* every connected session. Under `single-agent` (the default) exactly one
|
||||
* live root agent holds the workspace session, so opening a second chat
|
||||
* session does not get every task delivered twice. `every-agent` suits a
|
||||
* deployment that wants deliberate fan-out.
|
||||
*/
|
||||
scope: DeliveryScope
|
||||
/** Reconnection backoff for a dropped workspace session. */
|
||||
reconnect: ReconnectConfig
|
||||
/**
|
||||
* Whether to contribute the AgentRQ working-agreement system-prompt section.
|
||||
* Turn it off when a deployment states the same protocol in its own persona.
|
||||
*/
|
||||
guidance: boolean
|
||||
/** Per-request timeout for AgentRQ tool calls, in milliseconds. */
|
||||
requestTimeoutMs: number
|
||||
}
|
||||
|
||||
export const Config = Schema.object({
|
||||
url: Schema.string().required().description('AgentRQ workspace MCP endpoint, including its ?token= credential.'),
|
||||
token: Schema.string().default('').description('Optional bearer token, when the URL carries no ?token= credential.'),
|
||||
mountBridge: Schema.boolean().default(true).description('Mount the MCP bridge that gives the model AgentRQ\'s tools.'),
|
||||
serverName: Schema.string().default('agentrq').description('Namespace for the bridged tools: mcp__<serverName>__reply, and so on.'),
|
||||
deliverPushes: Schema.boolean().default(true).description('Deliver the workspace\'s tasks and messages into the live session.'),
|
||||
catchUpOnStart: Schema.boolean().default(true).description('Dequeue one task at startup, for work that predates the connection.'),
|
||||
scope: Schema.union(['single-agent', 'every-agent'] as const).default('single-agent').description('Whether one root agent or every root agent holds a workspace session.'),
|
||||
reconnect: Schema.object({
|
||||
initialDelayMs: Schema.number().min(100).default(1000).description('Delay before the first reconnect attempt.'),
|
||||
maxDelayMs: Schema.number().min(1000).default(900000).description('Ceiling for the reconnect backoff.'),
|
||||
}).default({ initialDelayMs: 1000, maxDelayMs: 900000 }),
|
||||
guidance: Schema.boolean().default(true).description('Contribute the AgentRQ working-agreement system-prompt section.'),
|
||||
requestTimeoutMs: Schema.number().min(1000).default(30000).description('Timeout for a single AgentRQ tool call.'),
|
||||
})
|
||||
Reference in New Issue
Block a user