@cecwxf/dsh-room 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Structural types for the subset of the DeepSeek Harness (dsh 0.2.x) host API this plugin uses.
3
+ * Verified against @deepseek-ai/dsh@0.2.0-rc.2 (dsh-tools, dsh-agent, dsh-webhook, cordis 4).
4
+ * Declared structurally so the plugin builds and bundles WITHOUT importing any @deepseek-ai package:
5
+ * a plugin installed into a profile's node_modules cannot rely on resolving dsh internals.
6
+ */
7
+ export interface ContentBlock {
8
+ type: "text";
9
+ text: string;
10
+ }
11
+ /** Mirrors dsh-tools `ToolDefinition` (what `defineTool` produces). `parameters` is plain JSON Schema. */
12
+ export interface ToolDefinition {
13
+ name: string;
14
+ description: string;
15
+ parameters: Record<string, unknown>;
16
+ output: {
17
+ /** JSON Schema enforced on the returned value; `{}` accepts any lossless JSON. */
18
+ schema: Record<string, unknown>;
19
+ render(args: unknown, value: unknown): ContentBlock[];
20
+ };
21
+ execute(args: unknown, exec: {
22
+ signal?: AbortSignal;
23
+ agent?: unknown;
24
+ }): Promise<unknown>;
25
+ timeoutMs?: number;
26
+ }
27
+ export interface ToolRegistry {
28
+ /** Returns an unregister function. */
29
+ register(def: ToolDefinition): () => void;
30
+ }
31
+ export interface Logger {
32
+ info(...a: unknown[]): void;
33
+ warn(...a: unknown[]): void;
34
+ error(...a: unknown[]): void;
35
+ debug?(...a: unknown[]): void;
36
+ }
37
+ /** Cordis 4 Context subset. */
38
+ export interface HostContext {
39
+ tools: ToolRegistry;
40
+ logger: Logger;
41
+ /** Register a cleanup tied to this plugin fiber (runs on unload / reload). */
42
+ effect(execute: () => () => void, label?: string): unknown;
43
+ /** Non-throwing service lookup; used for the optional agent services. */
44
+ get(name: string, strict?: boolean): any;
45
+ /** Cordis: run callback once the named services are available (optional deps). */
46
+ inject?(deps: string[], callback: (ctx: any) => void): unknown;
47
+ }
48
+ /** User message as dsh-llm `createUserMessage` builds it; unknown source kinds are allowed. */
49
+ export interface UserMessage {
50
+ readonly role: "user";
51
+ readonly id: string;
52
+ readonly content: readonly ContentBlock[];
53
+ readonly source: {
54
+ kind: string;
55
+ form?: "notice";
56
+ summary?: string;
57
+ [k: string]: unknown;
58
+ };
59
+ }
60
+ /** The subset of dsh-agent `Agent` the plugin uses. */
61
+ export interface AgentLike {
62
+ session: unknown;
63
+ followup(message: UserMessage): void;
64
+ /** Queue model-facing context without waking (dsh-agent Agent.inject). */
65
+ inject?(message: UserMessage): void;
66
+ }
67
+ /** dsh-commands CommandInvocation subset. */
68
+ export interface CommandInvocation {
69
+ agent: AgentLike;
70
+ rawInput: string;
71
+ signal: AbortSignal;
72
+ }
73
+ export type CommandResult = {
74
+ kind: "success";
75
+ text?: string;
76
+ } | {
77
+ kind: "error";
78
+ text: string;
79
+ };
80
+ export interface CommandDefinition {
81
+ name: string;
82
+ description: string;
83
+ input?: {
84
+ hint: string;
85
+ };
86
+ handler(invocation: CommandInvocation): CommandResult | Promise<CommandResult>;
87
+ }
88
+ export interface AgentHandle {
89
+ agent: AgentLike;
90
+ dispose(): Promise<void>;
91
+ }
92
+ /** Services used to create and prompt a session (same set dsh-webhook injects). */
93
+ export interface AgentServices {
94
+ agents: {
95
+ create(options: {
96
+ sessionId: string;
97
+ signal?: AbortSignal;
98
+ meta: {
99
+ cwd: string;
100
+ agentPreset?: string;
101
+ };
102
+ agentOptions: {
103
+ provider: string;
104
+ model: string;
105
+ };
106
+ setup?: (agentCtx: unknown) => Promise<void>;
107
+ }): Promise<AgentHandle>;
108
+ };
109
+ agentDefaultModel: {
110
+ currentSelection(): {
111
+ provider: string;
112
+ model: string;
113
+ reasoningEffort?: string;
114
+ };
115
+ };
116
+ agentPresets: {
117
+ resolve(id?: string): Promise<{
118
+ id: string;
119
+ }>;
120
+ acquireScope(id?: string): Promise<{
121
+ key: unknown;
122
+ } & AsyncDisposable>;
123
+ mount(ctx: unknown, id?: string): Promise<unknown>;
124
+ };
125
+ permissionPresets: {
126
+ resolve(name: string): unknown;
127
+ set(session: unknown, name: string): void;
128
+ };
129
+ sessionTitle: {
130
+ rename(session: unknown, title: string): void;
131
+ };
132
+ workspaceRegistry: {
133
+ create(path: string, title?: string): Promise<{
134
+ path: string;
135
+ attachSession(id: string): Promise<void>;
136
+ }>;
137
+ };
138
+ }
139
+ export interface DshCollabConfig {
140
+ /** Relay base URL (directory + default join). Default: ws://62.234.113.56:80 */
141
+ relayUrl: string;
142
+ /** Room to auto-join on start (collab://join/<roomId>#<roomKey>). */
143
+ invite?: string;
144
+ /** Runtime room state (joined rooms + invites), mode 600. Default ~/.collab/state.json */
145
+ statePath: string;
146
+ /** Identity file (Ed25519 key + agentId). Default ~/.collab/identity.json */
147
+ identityPath: string;
148
+ /** agentId used when the identity file is created for the first time (what peers @mention). */
149
+ agentName?: string;
150
+ autoReply: "off" | "mention" | "mention-or-task";
151
+ /** Workspace (cwd) for sessions woken by the room. Default ~/.collab/workspace */
152
+ workspacePath: string;
153
+ agentPreset?: string;
154
+ /** Permission preset for woken sessions. Room input is untrusted: default read-only. */
155
+ permissionPreset: string;
156
+ /** Wake on chats that are replies (replyTo set). Default false: prevents agent ping-pong. */
157
+ wakeOnReplies: boolean;
158
+ /** Upper bound on wakes per minute (loop guard). Default 6. */
159
+ maxWakesPerMinute: number;
160
+ }
161
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { ApprovalAction } from "@collab/protocol";
2
+ export interface PendingApproval {
3
+ requestId: string;
4
+ roomId: string;
5
+ action: ApprovalAction;
6
+ summary: string;
7
+ detail?: string;
8
+ /** Who triggered it (peer agentId or "local"). */
9
+ from: string;
10
+ createdAt: number;
11
+ /** Promise settle hooks. */
12
+ resolve: (decision: "allow" | "deny") => void;
13
+ }
14
+ export declare class ApprovalQueue {
15
+ private pending;
16
+ private listeners;
17
+ subscribe(fn: () => void): () => void;
18
+ private emit;
19
+ list(): Omit<PendingApproval, "resolve">[];
20
+ /** Ask for approval; resolves with allow|deny. Auto-denies after timeoutMs. */
21
+ request(opts: {
22
+ roomId: string;
23
+ action: ApprovalAction;
24
+ summary: string;
25
+ detail?: string;
26
+ from: string;
27
+ timeoutMs?: number;
28
+ }): Promise<"allow" | "deny">;
29
+ decide(requestId: string, decision: "allow" | "deny"): boolean;
30
+ }
31
+ //# sourceMappingURL=approval-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-queue.d.ts","sourceRoot":"","sources":["../../src/approval-queue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,SAAS,CAAyB;IAE1C,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAIrC,OAAO,CAAC,IAAI;IAUZ,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE;IAI1C,+EAA+E;IAC/E,OAAO,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,cAAc,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;IA+B7B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO;CAM/D"}
@@ -0,0 +1,5 @@
1
+ /** `/collab` command handler: dsh-commands surface → CollabBridge. Results render in the chat, outside model history. */
2
+ import type { CommandDefinition } from "./adapter.js";
3
+ import type { CollabBridge } from "./plugin.js";
4
+ export declare function collabCommand(bridge: CollabBridge): CommandDefinition;
5
+ //# sourceMappingURL=command-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/command-handler.ts"],"names":[],"mappings":"AAAA,yHAAyH;AACzH,OAAO,KAAK,EAAE,iBAAiB,EAAoC,MAAM,cAAc,CAAC;AAExF,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,aAAa,CAAC;AAU1D,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,iBAAiB,CAsGrE"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * `/collab …` grammar for the dsh command surface (dsh-commands): pure parsing, no I/O.
3
+ * dsh hands the command everything after `/collab` verbatim as rawInput.
4
+ */
5
+ export type CollabCommand = {
6
+ op: "help";
7
+ } | {
8
+ op: "status";
9
+ } | {
10
+ op: "create";
11
+ name?: string;
12
+ description?: string;
13
+ tags: string[];
14
+ public: boolean;
15
+ } | {
16
+ op: "join";
17
+ invite: string;
18
+ } | {
19
+ op: "join-result";
20
+ index: number;
21
+ } | {
22
+ op: "search";
23
+ query?: string;
24
+ tag?: string;
25
+ } | {
26
+ op: "rooms";
27
+ } | {
28
+ op: "use";
29
+ room: string;
30
+ } | {
31
+ op: "invite";
32
+ } | {
33
+ op: "members";
34
+ } | {
35
+ op: "say";
36
+ text: string;
37
+ mentions: string[];
38
+ } | {
39
+ op: "task";
40
+ title: string;
41
+ body?: string;
42
+ assignee?: string;
43
+ } | {
44
+ op: "log";
45
+ limit: number;
46
+ } | {
47
+ op: "leave";
48
+ } | {
49
+ op: "error";
50
+ message: string;
51
+ };
52
+ export declare function extractMentions(text: string): string[];
53
+ export declare const HELP: string;
54
+ export declare function parseCollabCommand(rawInput: string): CollabCommand;
55
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GACd;IAAE,EAAE,EAAE,QAAQ,CAAA;CAAE,GAChB;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACtF;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,GACf;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,EAAE,EAAE,QAAQ,CAAA;CAAE,GAChB;IAAE,EAAE,EAAE,SAAS,CAAA;CAAE,GACjB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/C;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,GACf;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAIrC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAItD;AAED,eAAO,MAAM,IAAI,QAcL,CAAC;AAEb,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAuFlE"}
@@ -0,0 +1,22 @@
1
+ import type { DshCollabConfig } from "./adapter.js";
2
+ export declare function normalizeConfig(raw: unknown): DshCollabConfig;
3
+ /**
4
+ * Cordis accepts any Standard Schema v1 validator as `Config`
5
+ * (cordis resolveConfig → Config["~standard"].validate). Hand-rolled so no schemastery import is needed.
6
+ */
7
+ export declare const Config: {
8
+ "~standard": {
9
+ version: 1;
10
+ vendor: string;
11
+ validate(value: unknown): {
12
+ value: DshCollabConfig;
13
+ issues?: undefined;
14
+ } | {
15
+ issues: {
16
+ message: string;
17
+ }[];
18
+ value?: undefined;
19
+ };
20
+ };
21
+ };
22
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAQpD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAsB7D;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM;;;;wBAIC,OAAO;;;;;;;;;;CAQ1B,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Host API for the Rooms UI (same pattern as DeepSeekBot's /api/botharness/*):
3
+ * same-origin JSON routes + one SSE stream on dsh's web server, every request
4
+ * admitted through dsh's own connection fence (trusted host + browser auth cookie).
5
+ */
6
+ import type { IncomingMessage, ServerResponse } from "node:http";
7
+ import type { CollabBridge } from "./plugin.js";
8
+ export declare const API = "/api/collab";
9
+ export interface WebServerLike {
10
+ register(route: {
11
+ kind: "exact" | "prefix";
12
+ path: string;
13
+ handler: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
14
+ }): () => void;
15
+ }
16
+ export interface ConnectionLike {
17
+ requestRejection(req: IncomingMessage): number | undefined;
18
+ }
19
+ /** Pure router so tests can drive it without a dsh web server. */
20
+ export declare function createApiHandler(bridge: CollabBridge, connection: () => ConnectionLike | undefined): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
21
+ export declare function registerRoutes(bridge: CollabBridge, webServer: WebServerLike, connection: () => ConnectionLike | undefined): () => void;
22
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,GAAG,gBAAgB,CAAC;AAGjC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,MAAM,IAAI,CAAC;CACvJ;AACD,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAAC;CAC5D;AAkCD,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,GAAG,SAAS,IACnF,KAAK,eAAe,EAAE,KAAK,cAAc,mBAuGxD;AAyBD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,IAAI,CAEvI"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * dsh room — DeepSeek Harness plugin for Collab rooms (sidebar: DSH Room).
3
+ * Host half: tools, the `/collab` command, the /api/collab routes the Rooms UI uses,
4
+ * and the room bridge. Browser half: ./client (Rooms panel, see src/client/).
5
+ */
6
+ import { CollabBridge } from "./plugin.js";
7
+ import { Config, normalizeConfig } from "./config.js";
8
+ import type { DshCollabConfig, HostContext } from "./adapter.js";
9
+ export declare const name = "dsh-room";
10
+ /** Only the tool registry is required; commands/webServer/agent services are optional. */
11
+ export declare const inject: string[];
12
+ export { Config, normalizeConfig, CollabBridge };
13
+ export type * from "./adapter.js";
14
+ export declare function apply(ctx: HostContext, config: DshCollabConfig): void;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEjE,eAAO,MAAM,IAAI,aAAa,CAAC;AAC/B,0FAA0F;AAC1F,eAAO,MAAM,MAAM,UAAY,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AACjD,mBAAmB,cAAc,CAAC;AAElC,wBAAgB,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,QAmB9D"}
@@ -0,0 +1,23 @@
1
+ import type { RoomMemberConfig, McpToolName } from "./member-config.js";
2
+ import type { ApprovalQueue } from "./approval-queue.js";
3
+ export declare const MCP_TOOL_DEFS: {
4
+ name: McpToolName;
5
+ description: string;
6
+ inputSchema: Record<string, unknown>;
7
+ }[];
8
+ export declare class WorkspaceMcp {
9
+ private cfg;
10
+ private approvals;
11
+ private roomId;
12
+ constructor(cfg: RoomMemberConfig, approvals: ApprovalQueue, roomId: string);
13
+ updateConfig(cfg: RoomMemberConfig): void;
14
+ tools(): {
15
+ name: McpToolName;
16
+ description: string;
17
+ inputSchema: Record<string, unknown>;
18
+ }[];
19
+ private resolveSafe;
20
+ private maybeApprove;
21
+ call(tool: string, args: Record<string, unknown>, from: string): Promise<unknown>;
22
+ }
23
+ //# sourceMappingURL=mcp-workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-workspace.d.ts","sourceRoot":"","sources":["../../src/mcp-workspace.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,eAAO,MAAM,aAAa,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAS3G,CAAC;AASF,qBAAa,YAAY;IAErB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;gBAFN,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,MAAM;IAGxB,YAAY,CAAC,GAAG,EAAE,gBAAgB;IAIlC,KAAK;cA7B6B,WAAW;qBAAe,MAAM;qBAAe,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;YAiC1F,WAAW;YAiBX,YAAY;IAgDpB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CA6FxF"}
@@ -0,0 +1,55 @@
1
+ /** Per-member local agent settings for a room. Never includes API keys. */
2
+ export type ReasoningEffort = "low" | "medium" | "high" | "max";
3
+ /** How a peer MCP call is handled for one capability. */
4
+ export type PeerGrant = "auto" | "ask" | "deny";
5
+ export interface PeerCapabilityGrants {
6
+ read: PeerGrant;
7
+ write: PeerGrant;
8
+ exec: PeerGrant;
9
+ delete: PeerGrant;
10
+ }
11
+ export interface RoomMemberConfig {
12
+ model?: string;
13
+ provider?: string;
14
+ reasoningEffort?: ReasoningEffort;
15
+ /** Absolute workspace root; peers only see workspaceLabel. */
16
+ workspacePath: string;
17
+ workspaceLabel: string;
18
+ /** Your agent's auto-allow for local wake / tooling cues. */
19
+ permissions: {
20
+ autoRead: boolean;
21
+ autoWrite: boolean;
22
+ autoShell: boolean;
23
+ autoNetwork: boolean;
24
+ };
25
+ mcpEnabled: boolean;
26
+ /**
27
+ * Limits for what *other room members* may do via MCP on this workspace.
28
+ * default applies to every peer; byAgent overrides per agentId.
29
+ */
30
+ peerGrants?: {
31
+ default: PeerCapabilityGrants;
32
+ byAgent?: Record<string, Partial<PeerCapabilityGrants>>;
33
+ };
34
+ }
35
+ export declare const MCP_TOOL_NAMES: readonly ["workspace_list", "workspace_read", "workspace_stat", "workspace_search", "workspace_write", "workspace_mkdir", "workspace_delete", "workspace_exec"];
36
+ export type McpToolName = (typeof MCP_TOOL_NAMES)[number];
37
+ export declare function defaultPeerGrants(): PeerCapabilityGrants;
38
+ export declare function defaultMemberConfig(workspacePath: string): RoomMemberConfig;
39
+ export declare function resolvePeerGrant(cfg: RoomMemberConfig, from: string, cap: keyof PeerCapabilityGrants): PeerGrant;
40
+ export declare function publicMemberConfig(cfg: RoomMemberConfig): {
41
+ model: string | undefined;
42
+ provider: string | undefined;
43
+ reasoningEffort: ReasoningEffort | undefined;
44
+ workspaceLabel: string;
45
+ permissions: {
46
+ autoRead: boolean;
47
+ autoWrite: boolean;
48
+ autoShell: boolean;
49
+ autoNetwork: boolean;
50
+ };
51
+ mcpEnabled: boolean;
52
+ mcpTools: ("workspace_list" | "workspace_read" | "workspace_stat" | "workspace_search" | "workspace_write" | "workspace_mkdir" | "workspace_delete" | "workspace_exec")[];
53
+ peerGrantsDefault: PeerCapabilityGrants;
54
+ };
55
+ //# sourceMappingURL=member-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member-config.d.ts","sourceRoot":"","sources":["../../src/member-config.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhE,yDAAyD;AACzD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,WAAW,EAAE;QACX,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,oBAAoB,CAAC;QAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;KACzD,CAAC;CACH;AAED,eAAO,MAAM,cAAc,iKASjB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,wBAAgB,iBAAiB,IAAI,oBAAoB,CAExD;AAED,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,gBAAgB,CAc3E;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,oBAAoB,GAAG,SAAS,CAIhH;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB;;;;;;kBAvD1C,OAAO;mBACN,OAAO;mBACP,OAAO;qBACL,OAAO;;;;;EA+DvB"}