@agentdock/wire 0.0.91 → 0.0.93

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.
@@ -12,6 +12,8 @@ export interface FeatureDefinition {
12
12
  readonly requiredMethods: readonly string[];
13
13
  /** Version where this feature was first introduced. */
14
14
  readonly sinceVersion: string;
15
+ /** How a machine's availability should be determined. Defaults to registered RPC methods. */
16
+ readonly availability?: 'methods' | 'daemon-version';
15
17
  /** Edition(s) this feature applies to. Undefined = both editions. */
16
18
  readonly edition?: 'personal' | 'enterprise';
17
19
  /** Sub-features gated by daemon version within this parent feature. */
@@ -26,7 +28,7 @@ export declare const FEATURE_REGISTRY: readonly FeatureDefinition[];
26
28
  * Check whether a specific feature is available given the set of supported methods.
27
29
  * A feature is available when ALL its required methods are present.
28
30
  */
29
- export declare function isFeatureAvailable(featureId: string, supportedMethods: readonly string[]): boolean;
31
+ export declare function isFeatureAvailable(featureId: string, supportedMethods: readonly string[], daemonVersion?: string): boolean;
30
32
  /**
31
33
  * Check whether a sub-feature is available given supported methods and daemon version.
32
34
  * Requires the parent feature to be available AND the daemon version to satisfy the sub-feature minimum.
package/dist/features.js CHANGED
@@ -1 +1 @@
1
- "use strict";import{satisfiesMin as u}from"./semver.js";export const FEATURE_REGISTRY=[{id:"agent-settings",requiredMethods:["get-agent-settings","set-agent-settings"],sinceVersion:"0.0.4",subFeatures:[{id:"startup-scripts",sinceVersion:"0.0.30"}]},{id:"labs-settings",requiredMethods:["get-labs-settings","set-labs-settings"],sinceVersion:"0.0.12"},{id:"history-sync",requiredMethods:["backfill-history-session"],sinceVersion:"0.0.12"},{id:"check-path",requiredMethods:["check-path"],sinceVersion:"0.0.7"},{id:"remote-upgrade",requiredMethods:["trigger-upgrade"],sinceVersion:"0.0.30"},{id:"checkpoint",requiredMethods:["checkpoint-list","checkpoint-diff","checkpoint-rollback"],sinceVersion:"0.0.30",subFeatures:[{id:"conversation-rollback",sinceVersion:"0.0.32"}]},{id:"scheduled-tasks",requiredMethods:["spawn-session"],sinceVersion:"0.0.35"},{id:"auto-upgrade-daemon",requiredMethods:["set-auto-upgrade-daemon"],sinceVersion:"0.0.31"},{id:"file-upload",requiredMethods:["file-relay-receive"],sinceVersion:"0.0.36",edition:"personal"},{id:"context-usage",requiredMethods:["get-context-usage"],sinceVersion:"0.0.71"}];export function isFeatureAvailable(r,n){const t=FEATURE_REGISTRY.find(e=>e.id===r);if(!t)return!1;const i=new Set(n);return t.requiredMethods.every(e=>i.has(e))}export function isSubFeatureAvailable(r,n,t,i){const e=FEATURE_REGISTRY.find(o=>o.id===r);if(!e||!isFeatureAvailable(r,t))return!1;const s=e.subFeatures?.find(o=>o.id===n);if(!s||!i||!u(i,s.sinceVersion))return!1;if(s.requiredMethods){const o=new Set(t);return s.requiredMethods.every(d=>o.has(d))}return!0}export function getSubFeatureMinVersion(r,n){return FEATURE_REGISTRY.find(i=>i.id===r)?.subFeatures?.find(i=>i.id===n)?.sinceVersion}export function getUnavailableFeatures(r,n){const t=[],i=new Set(r);for(const e of FEATURE_REGISTRY)if(!e.requiredMethods.every(s=>i.has(s)))t.push({id:e.id,sinceVersion:e.sinceVersion});else if(e.subFeatures&&n)for(const s of e.subFeatures){const o=!u(n,s.sinceVersion),d=s.requiredMethods!=null&&!s.requiredMethods.every(c=>i.has(c));(o||d)&&t.push({id:`${e.id}/${s.id}`,sinceVersion:s.sinceVersion})}return t}
1
+ "use strict";import{satisfiesMin as a}from"./semver.js";export const FEATURE_REGISTRY=[{id:"agent-settings",requiredMethods:["get-agent-settings","set-agent-settings"],sinceVersion:"0.0.4",subFeatures:[{id:"startup-scripts",sinceVersion:"0.0.30"}]},{id:"labs-settings",requiredMethods:["get-labs-settings","set-labs-settings"],sinceVersion:"0.0.12"},{id:"history-sync",requiredMethods:["backfill-history-session"],sinceVersion:"0.0.12"},{id:"check-path",requiredMethods:["check-path"],sinceVersion:"0.0.7"},{id:"remote-upgrade",requiredMethods:["trigger-upgrade"],sinceVersion:"0.0.30"},{id:"checkpoint",requiredMethods:["checkpoint-list","checkpoint-diff","checkpoint-rollback"],sinceVersion:"0.0.30",subFeatures:[{id:"conversation-rollback",sinceVersion:"0.0.32"}]},{id:"scheduled-tasks",requiredMethods:["spawn-session"],sinceVersion:"0.0.35"},{id:"auto-upgrade-daemon",requiredMethods:["set-auto-upgrade-daemon"],sinceVersion:"0.0.31"},{id:"file-upload",requiredMethods:["file-relay-receive"],sinceVersion:"0.0.36",edition:"personal"},{id:"context-usage",requiredMethods:["get-context-usage"],sinceVersion:"0.0.91",availability:"daemon-version"}];export function isFeatureAvailable(o,t,r){const e=FEATURE_REGISTRY.find(n=>n.id===o);if(!e)return!1;if(e.availability==="daemon-version")return r!=null&&a(r,e.sinceVersion);const i=new Set(t);return e.requiredMethods.every(n=>i.has(n))}export function isSubFeatureAvailable(o,t,r,e){const i=FEATURE_REGISTRY.find(s=>s.id===o);if(!i||!isFeatureAvailable(o,r))return!1;const n=i.subFeatures?.find(s=>s.id===t);if(!n||!e||!a(e,n.sinceVersion))return!1;if(n.requiredMethods){const s=new Set(r);return n.requiredMethods.every(d=>s.has(d))}return!0}export function getSubFeatureMinVersion(o,t){return FEATURE_REGISTRY.find(e=>e.id===o)?.subFeatures?.find(e=>e.id===t)?.sinceVersion}export function getUnavailableFeatures(o,t){const r=[],e=new Set(o);for(const i of FEATURE_REGISTRY)if(!(i.availability==="daemon-version"?t!=null&&a(t,i.sinceVersion):i.requiredMethods.every(s=>e.has(s))))r.push({id:i.id,sinceVersion:i.sinceVersion});else if(i.subFeatures&&t)for(const s of i.subFeatures){const d=!a(t,s.sinceVersion),u=s.requiredMethods!=null&&!s.requiredMethods.every(c=>e.has(c));(d||u)&&r.push({id:`${i.id}/${s.id}`,sinceVersion:s.sinceVersion})}return r}
@@ -12,7 +12,7 @@ export declare const DispatchNotificationParamsSchema: z.ZodObject<{
12
12
  sessionId: z.ZodOptional<z.ZodString>;
13
13
  taskId: z.ZodOptional<z.ZodString>;
14
14
  data: z.ZodOptional<z.ZodObject<{
15
- url: z.ZodOptional<z.ZodString>;
15
+ url: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
16
16
  }, "strict", z.ZodTypeAny, {
17
17
  url?: string | undefined;
18
18
  }, {
@@ -1 +1 @@
1
- "use strict";import{z as t}from"zod";export const NotificationEventTypeSchema=t.enum(["completed","error","task_completed","task_failed","budget_warning","daemon_disconnected"]),DispatchNotificationParamsSchema=t.object({type:NotificationEventTypeSchema,title:t.string(),body:t.string(),machineId:t.string(),machineHostname:t.string().default(""),sessionId:t.string().optional(),taskId:t.string().optional(),data:t.object({url:t.string().optional()}).strict().optional(),timestamp:t.number()}).strict();
1
+ "use strict";import{z as t}from"zod";const i=t.string().url().refine(e=>/^https?:\/\//i.test(e),{message:"URL must use http or https"});export const NotificationEventTypeSchema=t.enum(["completed","error","task_completed","task_failed","budget_warning","daemon_disconnected"]),DispatchNotificationParamsSchema=t.object({type:NotificationEventTypeSchema,title:t.string(),body:t.string(),machineId:t.string(),machineHostname:t.string().default(""),sessionId:t.string().optional(),taskId:t.string().optional(),data:t.object({url:i.optional()}).strict().optional(),timestamp:t.number()}).strict();
package/dist/rpc.d.ts CHANGED
@@ -953,8 +953,7 @@ export declare const AgentSettingsSchema: z.ZodObject<{
953
953
  * Sensitive fields managed via separate channels (per RFC-067):
954
954
  * - customEnv: credentials never leave daemon (not in schema)
955
955
  * - notification: webhook URL managed via dedicated pushPreferences route (not in schema)
956
- * - startupScripts: declared here for transport but daemon merge preserves local copy;
957
- * server strips it before forwarding to prevent injection (defense-in-depth)
956
+ * - startupScripts: managed only by the local daemon configuration file (not in schema)
958
957
  * - machineId: routing key for multi-machine setups, always sent by web client
959
958
  */
960
959
  export declare const SetAgentSettingsSchema: z.ZodObject<{
@@ -988,8 +987,6 @@ export declare const SetAgentSettingsSchema: z.ZodObject<{
988
987
  }>>;
989
988
  /** Routing key — web always sends this, server uses it for daemon targeting. */
990
989
  machineId: z.ZodOptional<z.ZodString>;
991
- /** User-defined startup scripts (string array). Daemon merge preserves local state. */
992
- startupScripts: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
993
990
  } & {
994
991
  claude: z.ZodOptional<z.ZodObject<{
995
992
  httpProxy: z.ZodOptional<z.ZodString>;
@@ -1245,7 +1242,6 @@ export declare const SetAgentSettingsSchema: z.ZodObject<{
1245
1242
  }[] | undefined;
1246
1243
  } | undefined;
1247
1244
  machineId?: string | undefined;
1248
- startupScripts?: string[] | undefined;
1249
1245
  defaults?: {
1250
1246
  httpProxy?: string | undefined;
1251
1247
  httpsProxy?: string | undefined;
@@ -1312,7 +1308,6 @@ export declare const SetAgentSettingsSchema: z.ZodObject<{
1312
1308
  }[] | undefined;
1313
1309
  } | undefined;
1314
1310
  machineId?: string | undefined;
1315
- startupScripts?: string[] | undefined;
1316
1311
  defaults?: {
1317
1312
  httpProxy?: string | undefined;
1318
1313
  httpsProxy?: string | undefined;
package/dist/rpc.js CHANGED
@@ -1 +1 @@
1
- "use strict";import{z as t}from"zod";import{SessionMessageSchema as n}from"./messages.js";import{CLI_AGENT_TYPES as s,SPAWNABLE_AGENTS as e}from"./messageMeta.js";import{PermissionModeSchema as i}from"./interactionEvents.js";export const RpcMethod=t.enum(["spawn-session","stop-session","list-sessions","abort","switch-mode","approve-permission","deny-permission","answer-question","shutdown-daemon","get-messages","get-stats","get-team-stats","start-invite","get-machine-info","get-agent-settings","set-agent-settings","get-labs-settings","set-labs-settings","set-auto-upgrade-daemon","check-path","backfill-history-session","trigger-upgrade","checkpoint-list","checkpoint-diff","checkpoint-rollback","refresh-enterprise-models","cancel-task","file-relay-receive","set-debug","get-debug","record-usage","update-agent-models","update-agent-modes","dispatch-notification","get-context-usage"]),SESSION_RPC_METHODS=["answer-question","approve-permission","deny-permission","abort","stop-session","cancel-task","get-context-usage"],MACHINE_RPC_METHODS=["start-invite","get-machine-info","get-agent-settings","set-agent-settings","get-labs-settings","set-labs-settings","set-auto-upgrade-daemon","check-path","backfill-history-session","trigger-upgrade","checkpoint-list","checkpoint-diff","checkpoint-rollback","refresh-enterprise-models","dispatch-notification"],DAEMON_REQUIRED_RPC_METHODS=[...SESSION_RPC_METHODS,...MACHINE_RPC_METHODS],RpcCallSchema=t.object({method:t.string().min(1),params:t.unknown(),timeout:t.number().int().positive().default(3e4)}),RpcResultSchema=t.discriminatedUnion("ok",[t.object({ok:t.literal(!0),result:t.unknown()}),t.object({ok:t.literal(!1),error:t.string()})]),SpawnSessionParamsSchema=t.object({agentType:t.enum(s),cwd:t.string().min(1),prompt:t.string().optional(),permissionMode:i.default("default"),env:t.record(t.string()).optional(),model:t.string().optional(),baseUrl:t.string().url().optional(),appendSystemPrompt:t.string().optional(),allowedTools:t.array(t.string()).optional(),disallowedTools:t.array(t.string()).optional(),mcpConfig:t.string().optional(),resumeSessionId:t.string().optional(),serverSessionId:t.string().optional(),maxTurns:t.number().int().positive().optional(),machineId:t.string().min(1).optional(),spawnToken:t.string().optional(),systemPrompt:t.string().optional(),systemPromptFile:t.string().optional(),appendSystemPromptFile:t.string().optional(),fallbackModel:t.string().optional(),maxBudgetUsd:t.number().positive().optional(),tools:t.array(t.string()).optional(),effort:t.enum(["low","medium","high","xhigh","max"]).optional(),addDirs:t.array(t.string()).optional(),agent:t.string().optional(),agents:t.string().optional(),jsonSchema:t.string().optional(),strictMcpConfig:t.boolean().optional(),chrome:t.boolean().optional(),worktree:t.union([t.boolean(),t.string()]).optional(),forkSession:t.boolean().optional(),sessionId:t.string().uuid().optional(),settings:t.string().optional(),betas:t.array(t.string()).optional(),brief:t.boolean().optional(),noSessionPersistence:t.boolean().optional(),includePartialMessages:t.boolean().optional(),replayUserMessages:t.boolean().optional(),settingSources:t.string().optional(),disableSlashCommands:t.boolean().optional(),files:t.array(t.string()).optional(),pluginDirs:t.array(t.string()).optional(),dangerouslySkipPermissions:t.boolean().optional(),allowDangerouslySkipPermissions:t.boolean().optional(),startupScripts:t.array(t.string()).optional(),source:t.enum(["managed","history","scheduled"]).default("managed"),background:t.boolean().default(!1),useWindowsTerminal:t.boolean().optional()}).strict(),GetMessagesParamsSchema=t.object({sessionId:t.string().min(1),fromSeq:t.number().int().nonnegative().optional(),limit:t.number().int().positive().default(100)}).strict(),GetMessagesResponseSchema=t.object({messages:t.array(n),total:t.number(),hasMore:t.boolean()}).passthrough(),CustomModelSchema=t.object({id:t.string().min(1),label:t.string().min(1)}),SkillDefinitionSchema=t.object({name:t.string().min(1),description:t.string(),userInvocable:t.boolean().default(!0),source:t.enum(["project","user"]).default("project"),projectPath:t.string().optional()}).passthrough(),AGENT_ENV_NONE="none",AgentEnvConfigSchema=t.object({httpProxy:t.string().optional(),httpsProxy:t.string().optional(),customEnv:t.record(t.string()).optional(),customModels:t.array(CustomModelSchema).optional()}).strict(),AgentEnvConfigSetSchema=t.object({httpProxy:t.string().optional(),httpsProxy:t.string().optional(),customModels:t.array(CustomModelSchema).optional()}).strict(),AgentSettingsSchema=t.object({defaults:AgentEnvConfigSchema.optional(),startupScripts:t.array(t.string()).optional(),notification:t.object({feishu:t.string().optional(),dingtalk:t.string().optional()}).optional()}).merge(t.object(Object.fromEntries(e.map(o=>[o,AgentEnvConfigSchema.optional()])))),SetAgentSettingsSchema=t.object({defaults:AgentEnvConfigSetSchema.optional(),machineId:t.string().optional(),startupScripts:t.array(t.string()).optional()}).merge(t.object(Object.fromEntries(e.map(o=>[o,AgentEnvConfigSetSchema.optional()])))).strict(),MachineInfoResponseSchema=t.object({homedir:t.string(),defaultCwd:t.string().optional(),recentCwds:t.array(t.string()),projectPaths:t.array(t.string()).optional().default([]),availableAgents:t.array(t.string()),agentModels:t.record(t.string(),t.array(t.object({id:t.string(),displayName:t.string(),isDefault:t.boolean(),hidden:t.boolean(),source:t.enum(["builtin","acp","env","custom"]).optional().default("acp")}))).optional(),agentModes:t.record(t.string(),t.array(t.object({id:t.string(),label:t.string()}))).optional(),agentCliPaths:t.record(t.string(),t.string()).optional(),agentSettings:AgentSettingsSchema.optional(),agentSkills:t.record(t.string(),t.array(SkillDefinitionSchema)).optional()}),CheckPathParamsSchema=t.object({cwd:t.string().min(1),machineId:t.string().min(1).optional()}).strict(),LabsSettingsSchema=t.object({historySessionSync:t.boolean().default(!1)}).strict();
1
+ "use strict";import{z as t}from"zod";import{SessionMessageSchema as n}from"./messages.js";import{CLI_AGENT_TYPES as s,SPAWNABLE_AGENTS as e}from"./messageMeta.js";import{PermissionModeSchema as i}from"./interactionEvents.js";export const RpcMethod=t.enum(["spawn-session","stop-session","list-sessions","abort","switch-mode","approve-permission","deny-permission","answer-question","shutdown-daemon","get-messages","get-stats","get-team-stats","start-invite","get-machine-info","get-agent-settings","set-agent-settings","get-labs-settings","set-labs-settings","set-auto-upgrade-daemon","check-path","backfill-history-session","trigger-upgrade","checkpoint-list","checkpoint-diff","checkpoint-rollback","refresh-enterprise-models","cancel-task","file-relay-receive","set-debug","get-debug","record-usage","update-agent-models","update-agent-modes","dispatch-notification","get-context-usage"]),SESSION_RPC_METHODS=["answer-question","approve-permission","deny-permission","abort","stop-session","cancel-task","get-context-usage"],MACHINE_RPC_METHODS=["start-invite","get-machine-info","get-agent-settings","set-agent-settings","get-labs-settings","set-labs-settings","set-auto-upgrade-daemon","check-path","backfill-history-session","trigger-upgrade","checkpoint-list","checkpoint-diff","checkpoint-rollback","refresh-enterprise-models","dispatch-notification"],DAEMON_REQUIRED_RPC_METHODS=[...SESSION_RPC_METHODS,...MACHINE_RPC_METHODS],RpcCallSchema=t.object({method:t.string().min(1),params:t.unknown(),timeout:t.number().int().positive().default(3e4)}),RpcResultSchema=t.discriminatedUnion("ok",[t.object({ok:t.literal(!0),result:t.unknown()}),t.object({ok:t.literal(!1),error:t.string()})]),SpawnSessionParamsSchema=t.object({agentType:t.enum(s),cwd:t.string().min(1),prompt:t.string().optional(),permissionMode:i.default("default"),env:t.record(t.string()).optional(),model:t.string().optional(),baseUrl:t.string().url().optional(),appendSystemPrompt:t.string().optional(),allowedTools:t.array(t.string()).optional(),disallowedTools:t.array(t.string()).optional(),mcpConfig:t.string().optional(),resumeSessionId:t.string().optional(),serverSessionId:t.string().optional(),maxTurns:t.number().int().positive().optional(),machineId:t.string().min(1).optional(),spawnToken:t.string().optional(),systemPrompt:t.string().optional(),systemPromptFile:t.string().optional(),appendSystemPromptFile:t.string().optional(),fallbackModel:t.string().optional(),maxBudgetUsd:t.number().positive().optional(),tools:t.array(t.string()).optional(),effort:t.enum(["low","medium","high","xhigh","max"]).optional(),addDirs:t.array(t.string()).optional(),agent:t.string().optional(),agents:t.string().optional(),jsonSchema:t.string().optional(),strictMcpConfig:t.boolean().optional(),chrome:t.boolean().optional(),worktree:t.union([t.boolean(),t.string()]).optional(),forkSession:t.boolean().optional(),sessionId:t.string().uuid().optional(),settings:t.string().optional(),betas:t.array(t.string()).optional(),brief:t.boolean().optional(),noSessionPersistence:t.boolean().optional(),includePartialMessages:t.boolean().optional(),replayUserMessages:t.boolean().optional(),settingSources:t.string().optional(),disableSlashCommands:t.boolean().optional(),files:t.array(t.string()).optional(),pluginDirs:t.array(t.string()).optional(),dangerouslySkipPermissions:t.boolean().optional(),allowDangerouslySkipPermissions:t.boolean().optional(),startupScripts:t.array(t.string()).optional(),source:t.enum(["managed","history","scheduled"]).default("managed"),background:t.boolean().default(!1),useWindowsTerminal:t.boolean().optional()}).strict(),GetMessagesParamsSchema=t.object({sessionId:t.string().min(1),fromSeq:t.number().int().nonnegative().optional(),limit:t.number().int().positive().default(100)}).strict(),GetMessagesResponseSchema=t.object({messages:t.array(n),total:t.number(),hasMore:t.boolean()}).passthrough(),CustomModelSchema=t.object({id:t.string().min(1),label:t.string().min(1)}),SkillDefinitionSchema=t.object({name:t.string().min(1),description:t.string(),userInvocable:t.boolean().default(!0),source:t.enum(["project","user"]).default("project"),projectPath:t.string().optional()}).passthrough(),AGENT_ENV_NONE="none",AgentEnvConfigSchema=t.object({httpProxy:t.string().optional(),httpsProxy:t.string().optional(),customEnv:t.record(t.string()).optional(),customModels:t.array(CustomModelSchema).optional()}).strict(),AgentEnvConfigSetSchema=t.object({httpProxy:t.string().optional(),httpsProxy:t.string().optional(),customModels:t.array(CustomModelSchema).optional()}).strict(),AgentSettingsSchema=t.object({defaults:AgentEnvConfigSchema.optional(),startupScripts:t.array(t.string()).optional(),notification:t.object({feishu:t.string().optional(),dingtalk:t.string().optional()}).optional()}).merge(t.object(Object.fromEntries(e.map(o=>[o,AgentEnvConfigSchema.optional()])))),SetAgentSettingsSchema=t.object({defaults:AgentEnvConfigSetSchema.optional(),machineId:t.string().optional()}).merge(t.object(Object.fromEntries(e.map(o=>[o,AgentEnvConfigSetSchema.optional()])))).strict(),MachineInfoResponseSchema=t.object({homedir:t.string(),defaultCwd:t.string().optional(),recentCwds:t.array(t.string()),projectPaths:t.array(t.string()).optional().default([]),availableAgents:t.array(t.string()),agentModels:t.record(t.string(),t.array(t.object({id:t.string(),displayName:t.string(),isDefault:t.boolean(),hidden:t.boolean(),source:t.enum(["builtin","acp","env","custom"]).optional().default("acp")}))).optional(),agentModes:t.record(t.string(),t.array(t.object({id:t.string(),label:t.string()}))).optional(),agentCliPaths:t.record(t.string(),t.string()).optional(),agentSettings:AgentSettingsSchema.optional(),agentSkills:t.record(t.string(),t.array(SkillDefinitionSchema)).optional()}),CheckPathParamsSchema=t.object({cwd:t.string().min(1),machineId:t.string().min(1).optional()}).strict(),LabsSettingsSchema=t.object({historySessionSync:t.boolean().default(!1)}).strict();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentdock/wire",
3
- "version": "0.0.91",
3
+ "version": "0.0.93",
4
4
  "description": "Protocol definitions for AgentDock — Zod schemas, message formats, RPC types",
5
5
  "license": "UNLICENSED",
6
6
  "author": "CCPark",
@@ -18,8 +18,7 @@
18
18
  "dist"
19
19
  ],
20
20
  "publishConfig": {
21
- "access": "public",
22
- "registry": "https://registry.npmjs.org"
21
+ "access": "public"
23
22
  },
24
23
  "dependencies": {
25
24
  "@paralleldrive/cuid2": "^3.3.0",