@agentdock/wire 0.0.46 → 0.0.47

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.
Files changed (102) hide show
  1. package/dist/agentCapabilities.js +1 -195
  2. package/dist/agentCommonEnv.js +1 -20
  3. package/dist/agentInstallGuide.js +1 -81
  4. package/dist/checkpointSchemas.js +1 -46
  5. package/dist/controlLevel.js +1 -11
  6. package/dist/edition.js +1 -13
  7. package/dist/envelope.d.ts +34 -0
  8. package/dist/envelope.js +1 -78
  9. package/dist/errorMessage.js +1 -6
  10. package/dist/events.d.ts +36 -0
  11. package/dist/events.js +1 -97
  12. package/dist/features.js +1 -112
  13. package/dist/feedback.d.ts +23 -5
  14. package/dist/feedback.js +1 -26
  15. package/dist/index.d.ts +4 -4
  16. package/dist/index.js +1 -64
  17. package/dist/interactionEvents.js +1 -108
  18. package/dist/legacyProtocol.js +1 -30
  19. package/dist/license.js +1 -17
  20. package/dist/machine.d.ts +4 -0
  21. package/dist/machine.js +1 -56
  22. package/dist/messageMeta.js +1 -60
  23. package/dist/messages.d.ts +84 -0
  24. package/dist/messages.js +1 -35
  25. package/dist/ops.js +1 -74
  26. package/dist/pairing.js +1 -115
  27. package/dist/protocol.js +1 -7
  28. package/dist/rpc.js +1 -246
  29. package/dist/scheduledTasks.js +1 -81
  30. package/dist/semver.js +1 -60
  31. package/dist/sessionResult.js +1 -23
  32. package/dist/socketEvents.d.ts +1 -0
  33. package/dist/socketEvents.js +1 -44
  34. package/dist/spawnError.js +1 -31
  35. package/dist/stats.d.ts +27 -422
  36. package/dist/stats.js +1 -126
  37. package/dist/sync.js +1 -78
  38. package/dist/telemetry.js +1 -80
  39. package/dist/utils.js +1 -2
  40. package/package.json +1 -1
  41. package/dist/agentCapabilities.d.ts.map +0 -1
  42. package/dist/agentCapabilities.js.map +0 -1
  43. package/dist/agentCommonEnv.d.ts.map +0 -1
  44. package/dist/agentCommonEnv.js.map +0 -1
  45. package/dist/agentInstallGuide.d.ts.map +0 -1
  46. package/dist/agentInstallGuide.js.map +0 -1
  47. package/dist/checkpointSchemas.d.ts.map +0 -1
  48. package/dist/checkpointSchemas.js.map +0 -1
  49. package/dist/controlLevel.d.ts.map +0 -1
  50. package/dist/controlLevel.js.map +0 -1
  51. package/dist/edition.d.ts.map +0 -1
  52. package/dist/edition.js.map +0 -1
  53. package/dist/envelope.d.ts.map +0 -1
  54. package/dist/envelope.js.map +0 -1
  55. package/dist/errorMessage.d.ts.map +0 -1
  56. package/dist/errorMessage.js.map +0 -1
  57. package/dist/events.d.ts.map +0 -1
  58. package/dist/events.js.map +0 -1
  59. package/dist/features.d.ts.map +0 -1
  60. package/dist/features.js.map +0 -1
  61. package/dist/feedback.d.ts.map +0 -1
  62. package/dist/feedback.js.map +0 -1
  63. package/dist/index.d.ts.map +0 -1
  64. package/dist/index.js.map +0 -1
  65. package/dist/interactionEvents.d.ts.map +0 -1
  66. package/dist/interactionEvents.js.map +0 -1
  67. package/dist/legacyProtocol.d.ts.map +0 -1
  68. package/dist/legacyProtocol.js.map +0 -1
  69. package/dist/license.d.ts.map +0 -1
  70. package/dist/license.js.map +0 -1
  71. package/dist/machine.d.ts.map +0 -1
  72. package/dist/machine.js.map +0 -1
  73. package/dist/messageMeta.d.ts.map +0 -1
  74. package/dist/messageMeta.js.map +0 -1
  75. package/dist/messages.d.ts.map +0 -1
  76. package/dist/messages.js.map +0 -1
  77. package/dist/ops.d.ts.map +0 -1
  78. package/dist/ops.js.map +0 -1
  79. package/dist/pairing.d.ts.map +0 -1
  80. package/dist/pairing.js.map +0 -1
  81. package/dist/protocol.d.ts.map +0 -1
  82. package/dist/protocol.js.map +0 -1
  83. package/dist/rpc.d.ts.map +0 -1
  84. package/dist/rpc.js.map +0 -1
  85. package/dist/scheduledTasks.d.ts.map +0 -1
  86. package/dist/scheduledTasks.js.map +0 -1
  87. package/dist/semver.d.ts.map +0 -1
  88. package/dist/semver.js.map +0 -1
  89. package/dist/sessionResult.d.ts.map +0 -1
  90. package/dist/sessionResult.js.map +0 -1
  91. package/dist/socketEvents.d.ts.map +0 -1
  92. package/dist/socketEvents.js.map +0 -1
  93. package/dist/spawnError.d.ts.map +0 -1
  94. package/dist/spawnError.js.map +0 -1
  95. package/dist/stats.d.ts.map +0 -1
  96. package/dist/stats.js.map +0 -1
  97. package/dist/sync.d.ts.map +0 -1
  98. package/dist/sync.js.map +0 -1
  99. package/dist/telemetry.d.ts.map +0 -1
  100. package/dist/telemetry.js.map +0 -1
  101. package/dist/utils.d.ts.map +0 -1
  102. package/dist/utils.js.map +0 -1
@@ -1,195 +1 @@
1
- /**
2
- * Agent capability matrix — static mapping of which features each CLI agent supports.
3
- *
4
- * Web UI uses this to conditionally show/hide spawn parameters
5
- * (model, systemPrompt, tools, permissions, etc.) based on the selected agent.
6
- */
7
- // ── Per-agent permission modes ──────────────────────────────────────
8
- const CLAUDE_PERMISSION_MODES = [
9
- { value: 'default', labelKey: 'permissionDefault' },
10
- { value: 'acceptEdits', labelKey: 'permissionAutoEdit' },
11
- { value: 'auto', labelKey: 'permissionAuto' },
12
- { value: 'plan', labelKey: 'permissionPlan' },
13
- { value: 'bypassPermissions', labelKey: 'permissionFullAuto' },
14
- ];
15
- // ── Per-agent static models (non-ACP agents) ──────────────────────
16
- const CLAUDE_MODELS = [
17
- { value: 'sonnet', label: 'Sonnet' },
18
- { value: 'opus', label: 'Opus' },
19
- { value: 'haiku', label: 'Haiku' },
20
- ];
21
- // ── Capability matrix ───────────────────────────────────────────────
22
- export const AGENT_CAPABILITIES = {
23
- claude: {
24
- controlLevel: 3,
25
- supportsModel: true,
26
- supportsSystemPrompt: true,
27
- supportsToolConfig: true,
28
- supportsMcpConfig: true,
29
- supportsPermissionMode: true,
30
- supportsResume: true,
31
- supportsMaxTurns: true,
32
- supportsSlashClear: true,
33
- supportsSlashCompact: true,
34
- supportsInSessionModelSwitch: true,
35
- supportsInSessionModeSwitch: true,
36
- usesAcpConfig: false,
37
- staticModels: CLAUDE_MODELS,
38
- permissionModes: CLAUDE_PERMISSION_MODES,
39
- defaultPermissionMode: 'default',
40
- },
41
- copilot: {
42
- controlLevel: 3,
43
- supportsModel: true,
44
- supportsSystemPrompt: false,
45
- supportsToolConfig: true,
46
- supportsMcpConfig: true,
47
- supportsPermissionMode: true,
48
- supportsResume: true,
49
- supportsMaxTurns: false,
50
- supportsSlashClear: true,
51
- supportsSlashCompact: false,
52
- supportsInSessionModelSwitch: true,
53
- supportsInSessionModeSwitch: true,
54
- usesAcpConfig: true,
55
- staticModels: [],
56
- permissionModes: [],
57
- defaultPermissionMode: '',
58
- },
59
- opencode: {
60
- controlLevel: 3,
61
- supportsModel: true,
62
- supportsSystemPrompt: true,
63
- supportsToolConfig: true,
64
- supportsMcpConfig: true,
65
- supportsPermissionMode: false,
66
- supportsResume: true,
67
- supportsMaxTurns: false,
68
- supportsSlashClear: true,
69
- supportsSlashCompact: false,
70
- supportsInSessionModelSwitch: true,
71
- supportsInSessionModeSwitch: true,
72
- usesAcpConfig: true,
73
- staticModels: [],
74
- permissionModes: [],
75
- defaultPermissionMode: '',
76
- },
77
- codex: {
78
- controlLevel: 2,
79
- supportsModel: true,
80
- supportsSystemPrompt: false,
81
- supportsToolConfig: false,
82
- supportsMcpConfig: false,
83
- supportsPermissionMode: true,
84
- supportsResume: true,
85
- supportsMaxTurns: false,
86
- supportsSlashClear: true,
87
- supportsSlashCompact: false,
88
- supportsInSessionModelSwitch: true,
89
- supportsInSessionModeSwitch: true,
90
- usesAcpConfig: true,
91
- staticModels: [],
92
- permissionModes: [],
93
- defaultPermissionMode: '',
94
- },
95
- gemini: {
96
- controlLevel: 3,
97
- supportsModel: true,
98
- supportsSystemPrompt: false,
99
- supportsToolConfig: false,
100
- supportsMcpConfig: true,
101
- supportsPermissionMode: false,
102
- supportsResume: false,
103
- supportsMaxTurns: false,
104
- supportsSlashClear: true,
105
- supportsSlashCompact: false,
106
- supportsInSessionModelSwitch: false,
107
- supportsInSessionModeSwitch: false,
108
- usesAcpConfig: true,
109
- staticModels: [],
110
- permissionModes: [],
111
- defaultPermissionMode: 'bypassPermissions',
112
- },
113
- hermes: {
114
- controlLevel: 3,
115
- supportsModel: true,
116
- supportsSystemPrompt: false,
117
- supportsToolConfig: false,
118
- supportsMcpConfig: false,
119
- supportsPermissionMode: false,
120
- supportsResume: true,
121
- supportsMaxTurns: false,
122
- supportsSlashClear: true,
123
- supportsSlashCompact: false,
124
- supportsInSessionModelSwitch: false,
125
- supportsInSessionModeSwitch: false,
126
- usesAcpConfig: true,
127
- staticModels: [],
128
- permissionModes: [],
129
- defaultPermissionMode: '',
130
- },
131
- openclaw: {
132
- controlLevel: 3,
133
- supportsModel: true,
134
- supportsSystemPrompt: false,
135
- supportsToolConfig: false,
136
- supportsMcpConfig: false,
137
- supportsPermissionMode: false,
138
- supportsResume: false,
139
- supportsMaxTurns: false,
140
- supportsSlashClear: true,
141
- supportsSlashCompact: false,
142
- supportsInSessionModelSwitch: false,
143
- supportsInSessionModeSwitch: false,
144
- usesAcpConfig: true,
145
- staticModels: [],
146
- permissionModes: [],
147
- defaultPermissionMode: '',
148
- },
149
- };
150
- // ── Dynamic mode overrides (from ACP configOptions at runtime) ─────
151
- let dynamicModes = {};
152
- /** Update dynamic modes for an ACP agent (called by daemon when session reports modes). */
153
- export function updateDynamicModes(agentType, modes) {
154
- if (modes.length === 0)
155
- return;
156
- dynamicModes = {
157
- ...dynamicModes,
158
- [agentType]: modes.map((m) => ({ value: m.id, labelKey: m.label })),
159
- };
160
- }
161
- /** Get dynamic modes for an agent, or null if none reported. */
162
- export function getDynamicModes(agentType) {
163
- return dynamicModes[agentType] ?? null;
164
- }
165
- /** Get capability for an agent, falling back to minimal (Level 0) for unknown agents. */
166
- export function getAgentCapability(agentType) {
167
- return (AGENT_CAPABILITIES[agentType] ?? {
168
- controlLevel: 0,
169
- supportsModel: false,
170
- supportsSystemPrompt: false,
171
- supportsToolConfig: false,
172
- supportsMcpConfig: false,
173
- supportsPermissionMode: false,
174
- supportsResume: false,
175
- supportsMaxTurns: false,
176
- supportsSlashClear: false,
177
- supportsSlashCompact: false,
178
- supportsInSessionModelSwitch: false,
179
- supportsInSessionModeSwitch: false,
180
- usesAcpConfig: false,
181
- staticModels: [],
182
- permissionModes: [],
183
- defaultPermissionMode: 'default',
184
- });
185
- }
186
- /**
187
- * Normalize a Claude model ID so that dot-separated versions (e.g. `claude-opus-4.6`)
188
- * match the hyphen-separated form returned by the API (e.g. `claude-opus-4-6`).
189
- *
190
- * Safe to call on any string — non-Claude IDs pass through unchanged.
191
- */
192
- export function normalizeModelId(id) {
193
- return id.replace(/(\d+)\.(\d+)/g, '$1-$2');
194
- }
195
- //# sourceMappingURL=agentCapabilities.js.map
1
+ "use strict";const p=[{value:"default",labelKey:"permissionDefault"},{value:"acceptEdits",labelKey:"permissionAutoEdit"},{value:"auto",labelKey:"permissionAuto"},{value:"plan",labelKey:"permissionPlan"},{value:"bypassPermissions",labelKey:"permissionFullAuto"}],r=[{value:"sonnet",label:"Sonnet"},{value:"opus",label:"Opus"},{value:"haiku",label:"Haiku"}];export const AGENT_CAPABILITIES={claude:{controlLevel:3,supportsModel:!0,supportsSystemPrompt:!0,supportsToolConfig:!0,supportsMcpConfig:!0,supportsPermissionMode:!0,supportsResume:!0,supportsMaxTurns:!0,supportsSlashClear:!0,supportsSlashCompact:!0,supportsInSessionModelSwitch:!0,supportsInSessionModeSwitch:!0,usesAcpConfig:!1,staticModels:r,permissionModes:p,defaultPermissionMode:"default"},copilot:{controlLevel:3,supportsModel:!0,supportsSystemPrompt:!1,supportsToolConfig:!0,supportsMcpConfig:!0,supportsPermissionMode:!0,supportsResume:!0,supportsMaxTurns:!1,supportsSlashClear:!0,supportsSlashCompact:!1,supportsInSessionModelSwitch:!0,supportsInSessionModeSwitch:!0,usesAcpConfig:!0,staticModels:[],permissionModes:[],defaultPermissionMode:""},opencode:{controlLevel:3,supportsModel:!0,supportsSystemPrompt:!0,supportsToolConfig:!0,supportsMcpConfig:!0,supportsPermissionMode:!1,supportsResume:!0,supportsMaxTurns:!1,supportsSlashClear:!0,supportsSlashCompact:!1,supportsInSessionModelSwitch:!0,supportsInSessionModeSwitch:!0,usesAcpConfig:!0,staticModels:[],permissionModes:[],defaultPermissionMode:""},codex:{controlLevel:2,supportsModel:!0,supportsSystemPrompt:!0,supportsToolConfig:!1,supportsMcpConfig:!1,supportsPermissionMode:!0,supportsResume:!0,supportsMaxTurns:!1,supportsSlashClear:!0,supportsSlashCompact:!0,supportsInSessionModelSwitch:!0,supportsInSessionModeSwitch:!0,usesAcpConfig:!0,staticModels:[],permissionModes:[],defaultPermissionMode:""},gemini:{controlLevel:3,supportsModel:!0,supportsSystemPrompt:!1,supportsToolConfig:!1,supportsMcpConfig:!0,supportsPermissionMode:!1,supportsResume:!1,supportsMaxTurns:!1,supportsSlashClear:!0,supportsSlashCompact:!1,supportsInSessionModelSwitch:!1,supportsInSessionModeSwitch:!1,usesAcpConfig:!0,staticModels:[],permissionModes:[],defaultPermissionMode:"bypassPermissions"},hermes:{controlLevel:3,supportsModel:!0,supportsSystemPrompt:!1,supportsToolConfig:!1,supportsMcpConfig:!1,supportsPermissionMode:!1,supportsResume:!0,supportsMaxTurns:!1,supportsSlashClear:!0,supportsSlashCompact:!1,supportsInSessionModelSwitch:!1,supportsInSessionModeSwitch:!1,usesAcpConfig:!0,staticModels:[],permissionModes:[],defaultPermissionMode:""},openclaw:{controlLevel:3,supportsModel:!0,supportsSystemPrompt:!1,supportsToolConfig:!1,supportsMcpConfig:!1,supportsPermissionMode:!1,supportsResume:!1,supportsMaxTurns:!1,supportsSlashClear:!0,supportsSlashCompact:!1,supportsInSessionModelSwitch:!1,supportsInSessionModeSwitch:!1,usesAcpConfig:!0,staticModels:[],permissionModes:[],defaultPermissionMode:""}};let e={};export function updateDynamicModes(s,o){o.length!==0&&(e={...e,[s]:o.map(t=>({value:t.id,labelKey:t.label}))})}export function getDynamicModes(s){return e[s]??null}export function getAgentCapability(s){return AGENT_CAPABILITIES[s]??{controlLevel:0,supportsModel:!1,supportsSystemPrompt:!1,supportsToolConfig:!1,supportsMcpConfig:!1,supportsPermissionMode:!1,supportsResume:!1,supportsMaxTurns:!1,supportsSlashClear:!1,supportsSlashCompact:!1,supportsInSessionModelSwitch:!1,supportsInSessionModeSwitch:!1,usesAcpConfig:!1,staticModels:[],permissionModes:[],defaultPermissionMode:"default"}}export function normalizeModelId(s){return s.replace(/(\d+)\.(\d+)/g,"$1-$2")}
@@ -1,20 +1 @@
1
- /**
2
- * Common environment variables for each agent.
3
- *
4
- * Only agents that use a single-provider API key are listed here.
5
- * Multi-provider agents (opencode, hermes, openclaw) configure keys
6
- * through their own config files, so they are intentionally omitted.
7
- * Copilot authenticates via OAuth (`gh auth login`), not env vars.
8
- */
9
- export const AGENT_COMMON_ENV_VARS = {
10
- claude: [
11
- { key: 'ANTHROPIC_API_KEY', placeholder: 'sk-ant-...' },
12
- { key: 'ANTHROPIC_BASE_URL', placeholder: 'https://api.anthropic.com' },
13
- ],
14
- codex: [
15
- { key: 'OPENAI_API_KEY', placeholder: 'sk-...' },
16
- { key: 'OPENAI_BASE_URL', placeholder: 'https://api.openai.com/v1' },
17
- ],
18
- gemini: [{ key: 'GEMINI_API_KEY', placeholder: 'AIza...' }],
19
- };
20
- //# sourceMappingURL=agentCommonEnv.js.map
1
+ "use strict";export const AGENT_COMMON_ENV_VARS={claude:[{key:"ANTHROPIC_API_KEY",placeholder:"sk-ant-..."},{key:"ANTHROPIC_BASE_URL",placeholder:"https://api.anthropic.com"}],codex:[{key:"OPENAI_API_KEY",placeholder:"sk-..."},{key:"OPENAI_BASE_URL",placeholder:"https://api.openai.com/v1"}],gemini:[{key:"GEMINI_API_KEY",placeholder:"AIza..."}]};
@@ -1,81 +1 @@
1
- /**
2
- * Per-agent install instructions for the web UI.
3
- *
4
- * Display-only data — the actual gating logic lives in daemon's registry.
5
- * Wire only has the strings so the web can render install/upgrade instructions.
6
- */
7
- export const AGENT_INSTALL_GUIDE = {
8
- claude: {
9
- minVersion: '1.0.0',
10
- install: {
11
- darwin: 'curl -fsSL https://claude.ai/install.sh | bash',
12
- linux: 'curl -fsSL https://claude.ai/install.sh | bash',
13
- win32: 'irm https://claude.ai/install.ps1 | iex',
14
- },
15
- upgradeUrl: 'https://code.claude.com/docs/en/overview',
16
- },
17
- copilot: {
18
- minVersion: '0.1.0',
19
- install: {
20
- darwin: 'curl -fsSL https://claude.ai/install.sh | bash # then: see https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli',
21
- linux: 'curl -fsSL https://claude.ai/install.sh | bash # then: see https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli',
22
- win32: 'irm https://claude.ai/install.ps1 | iex # then: see https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli',
23
- },
24
- upgradeUrl: 'https://docs.github.com/en/copilot/concepts/agents/about-copilot-cli',
25
- },
26
- codex: {
27
- minVersion: '0.43.0',
28
- install: {
29
- darwin: 'npm install -g @openai/codex',
30
- linux: 'npm install -g @openai/codex',
31
- win32: 'npm install -g @openai/codex',
32
- },
33
- upgradeUrl: 'https://github.com/openai/codex',
34
- },
35
- gemini: {
36
- minVersion: '0.1.0',
37
- install: {
38
- darwin: 'npm install -g @google/gemini-cli',
39
- linux: 'npm install -g @google/gemini-cli',
40
- win32: 'npm install -g @google/gemini-cli',
41
- },
42
- upgradeUrl: 'https://github.com/google-gemini/gemini-cli',
43
- },
44
- opencode: {
45
- minVersion: '0.1.0',
46
- install: {
47
- darwin: 'curl -fsSL https://opencode.ai/install | bash',
48
- linux: 'curl -fsSL https://opencode.ai/install | bash',
49
- win32: 'npm install -g opencode-ai',
50
- },
51
- upgradeUrl: 'https://opencode.ai',
52
- },
53
- hermes: {
54
- minVersion: '0.1.0',
55
- install: {
56
- darwin: 'npm install -g hermes-agent',
57
- linux: 'npm install -g hermes-agent',
58
- win32: 'npm install -g hermes-agent',
59
- },
60
- upgradeUrl: '',
61
- },
62
- openclaw: {
63
- minVersion: '2026.4.0',
64
- install: {
65
- darwin: 'npm install -g openclaw',
66
- linux: 'npm install -g openclaw',
67
- win32: 'npm install -g openclaw',
68
- },
69
- upgradeUrl: 'https://docs.openclaw.ai',
70
- },
71
- custom: {
72
- minVersion: '0.0.0',
73
- install: {
74
- darwin: 'Install the custom agent CLI per its documentation',
75
- linux: 'Install the custom agent CLI per its documentation',
76
- win32: 'Install the custom agent CLI per its documentation',
77
- },
78
- upgradeUrl: '',
79
- },
80
- };
81
- //# sourceMappingURL=agentInstallGuide.js.map
1
+ "use strict";export const AGENT_INSTALL_GUIDE={claude:{minVersion:"1.0.0",install:{darwin:"curl -fsSL https://claude.ai/install.sh | bash",linux:"curl -fsSL https://claude.ai/install.sh | bash",win32:"irm https://claude.ai/install.ps1 | iex"},upgradeUrl:"https://code.claude.com/docs/en/overview"},copilot:{minVersion:"0.1.0",install:{darwin:"curl -fsSL https://claude.ai/install.sh | bash # then: see https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli",linux:"curl -fsSL https://claude.ai/install.sh | bash # then: see https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli",win32:"irm https://claude.ai/install.ps1 | iex # then: see https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli"},upgradeUrl:"https://docs.github.com/en/copilot/concepts/agents/about-copilot-cli"},codex:{minVersion:"0.43.0",install:{darwin:"npm install -g @openai/codex",linux:"npm install -g @openai/codex",win32:"npm install -g @openai/codex"},upgradeUrl:"https://github.com/openai/codex"},gemini:{minVersion:"0.1.0",install:{darwin:"npm install -g @google/gemini-cli",linux:"npm install -g @google/gemini-cli",win32:"npm install -g @google/gemini-cli"},upgradeUrl:"https://github.com/google-gemini/gemini-cli"},opencode:{minVersion:"0.1.0",install:{darwin:"curl -fsSL https://opencode.ai/install | bash",linux:"curl -fsSL https://opencode.ai/install | bash",win32:"npm install -g opencode-ai"},upgradeUrl:"https://opencode.ai"},hermes:{minVersion:"0.1.0",install:{darwin:"npm install -g hermes-agent",linux:"npm install -g hermes-agent",win32:"npm install -g hermes-agent"},upgradeUrl:""},openclaw:{minVersion:"2026.4.0",install:{darwin:"npm install -g openclaw",linux:"npm install -g openclaw",win32:"npm install -g openclaw"},upgradeUrl:"https://docs.openclaw.ai"},custom:{minVersion:"0.0.0",install:{darwin:"Install the custom agent CLI per its documentation",linux:"Install the custom agent CLI per its documentation",win32:"Install the custom agent CLI per its documentation"},upgradeUrl:""}};
@@ -1,46 +1 @@
1
- import { z } from 'zod';
2
- export const ROLLBACK_MODES = ['code', 'conversation', 'both'];
3
- export const CheckpointListParamsSchema = z.object({
4
- claudeSessionId: z.string().min(1),
5
- });
6
- export const CheckpointEntrySchema = z.object({
7
- messageId: z.string(),
8
- timestamp: z.string(),
9
- trackedFileCount: z.number().int().nonnegative(),
10
- sequence: z.number().int().nonnegative(),
11
- });
12
- export const CheckpointListResultSchema = z.object({
13
- checkpoints: z.array(CheckpointEntrySchema),
14
- });
15
- export const CheckpointDiffParamsSchema = z.object({
16
- claudeSessionId: z.string().min(1),
17
- messageId: z.string().min(1),
18
- });
19
- export const FileDiffEntrySchema = z.object({
20
- filePath: z.string(),
21
- status: z.enum(['modified', 'deleted', 'created']),
22
- currentSize: z.number().int().nonnegative(),
23
- snapshotSize: z.number().int().nonnegative(),
24
- });
25
- export const CheckpointDiffResultSchema = z.object({
26
- files: z.array(FileDiffEntrySchema),
27
- hasExternalChanges: z.boolean(),
28
- externallyModifiedFiles: z.array(z.string()),
29
- });
30
- export const CheckpointRollbackParamsSchema = z.object({
31
- claudeSessionId: z.string().min(1),
32
- messageId: z.string().min(1).optional(),
33
- timestamp: z.string().optional(),
34
- mode: z.enum(ROLLBACK_MODES).optional().default('code'),
35
- force: z.boolean().optional().default(false),
36
- });
37
- export const CheckpointRollbackResultSchema = z.object({
38
- restoredCount: z.number().int().nonnegative(),
39
- deletedCount: z.number().int().nonnegative(),
40
- skippedFiles: z.array(z.string()),
41
- truncatedMessageCount: z.number().int().nonnegative().optional(),
42
- pivotTimestamp: z.string().optional(),
43
- pivotMessageUuid: z.string().optional(),
44
- mode: z.enum(ROLLBACK_MODES).optional(),
45
- });
46
- //# sourceMappingURL=checkpointSchemas.js.map
1
+ "use strict";import{z as e}from"zod";export const ROLLBACK_MODES=["code","conversation","both"],CheckpointListParamsSchema=e.object({claudeSessionId:e.string().min(1)}),CheckpointEntrySchema=e.object({messageId:e.string(),timestamp:e.string(),trackedFileCount:e.number().int().nonnegative(),sequence:e.number().int().nonnegative()}),CheckpointListResultSchema=e.object({checkpoints:e.array(CheckpointEntrySchema)}),CheckpointDiffParamsSchema=e.object({claudeSessionId:e.string().min(1),messageId:e.string().min(1)}),FileDiffEntrySchema=e.object({filePath:e.string(),status:e.enum(["modified","deleted","created"]),currentSize:e.number().int().nonnegative(),snapshotSize:e.number().int().nonnegative()}),CheckpointDiffResultSchema=e.object({files:e.array(FileDiffEntrySchema),hasExternalChanges:e.boolean(),externallyModifiedFiles:e.array(e.string())}),CheckpointRollbackParamsSchema=e.object({claudeSessionId:e.string().min(1),messageId:e.string().min(1).optional(),timestamp:e.string().optional(),mode:e.enum(ROLLBACK_MODES).optional().default("code"),force:e.boolean().optional().default(!1)}),CheckpointRollbackResultSchema=e.object({restoredCount:e.number().int().nonnegative(),deletedCount:e.number().int().nonnegative(),skippedFiles:e.array(e.string()),truncatedMessageCount:e.number().int().nonnegative().optional(),pivotTimestamp:e.string().optional(),pivotMessageUuid:e.string().optional(),mode:e.enum(ROLLBACK_MODES).optional()});
@@ -1,11 +1 @@
1
- import { z } from 'zod';
2
- /**
3
- * Control depth level for CLI tools.
4
- *
5
- * Level 3: Full control — bidirectional ACP, per-tool permissions, resume (Claude Code, OpenCode)
6
- * Level 2: High control — JSONL + resume + pre-configured permissions (Codex CLI)
7
- * Level 1: Read-only monitoring — JSONL + no resume + binary permissions (Gemini, Qwen)
8
- * Level 0: Minimal — plain text + no multi-turn (Aider, not recommended)
9
- */
10
- export const ControlLevel = z.union([z.literal(3), z.literal(2), z.literal(1), z.literal(0)]);
11
- //# sourceMappingURL=controlLevel.js.map
1
+ "use strict";import{z as l}from"zod";export const ControlLevel=l.union([l.literal(3),l.literal(2),l.literal(1),l.literal(0)]);
package/dist/edition.js CHANGED
@@ -1,13 +1 @@
1
- export const EDITIONS = ['personal', 'enterprise'];
2
- export function getEdition() {
3
- const raw = process.env['EDITION'] || 'personal';
4
- const found = EDITIONS.find((e) => e === raw);
5
- if (!found) {
6
- throw new Error(`Invalid EDITION="${raw}". Must be one of: ${EDITIONS.join(', ')}`);
7
- }
8
- return found;
9
- }
10
- export function isEnterprise() {
11
- return getEdition() === 'enterprise';
12
- }
13
- //# sourceMappingURL=edition.js.map
1
+ "use strict";export const EDITIONS=["personal","enterprise"];export function getEdition(){const n=process.env.EDITION||"personal",e=EDITIONS.find(r=>r===n);if(!e)throw new Error(`Invalid EDITION="${n}". Must be one of: ${EDITIONS.join(", ")}`);return e}export function isEnterprise(){return getEdition()==="enterprise"}
@@ -19,13 +19,31 @@ export declare const SessionEnvelopeSchema: z.ZodEffects<z.ZodObject<{
19
19
  t: z.ZodLiteral<"text">;
20
20
  text: z.ZodString;
21
21
  thinking: z.ZodOptional<z.ZodBoolean>;
22
+ images: z.ZodOptional<z.ZodArray<z.ZodObject<{
23
+ data: z.ZodString;
24
+ mediaType: z.ZodString;
25
+ }, "strip", z.ZodTypeAny, {
26
+ data: string;
27
+ mediaType: string;
28
+ }, {
29
+ data: string;
30
+ mediaType: string;
31
+ }>, "many">>;
22
32
  }, "strip", z.ZodTypeAny, {
23
33
  t: "text";
24
34
  text: string;
35
+ images?: {
36
+ data: string;
37
+ mediaType: string;
38
+ }[] | undefined;
25
39
  thinking?: boolean | undefined;
26
40
  }, {
27
41
  t: "text";
28
42
  text: string;
43
+ images?: {
44
+ data: string;
45
+ mediaType: string;
46
+ }[] | undefined;
29
47
  thinking?: boolean | undefined;
30
48
  }>, z.ZodObject<{
31
49
  t: z.ZodLiteral<"service">;
@@ -305,6 +323,10 @@ export declare const SessionEnvelopeSchema: z.ZodEffects<z.ZodObject<{
305
323
  } | {
306
324
  t: "text";
307
325
  text: string;
326
+ images?: {
327
+ data: string;
328
+ mediaType: string;
329
+ }[] | undefined;
308
330
  thinking?: boolean | undefined;
309
331
  } | {
310
332
  t: "service";
@@ -390,6 +412,10 @@ export declare const SessionEnvelopeSchema: z.ZodEffects<z.ZodObject<{
390
412
  } | {
391
413
  t: "text";
392
414
  text: string;
415
+ images?: {
416
+ data: string;
417
+ mediaType: string;
418
+ }[] | undefined;
393
419
  thinking?: boolean | undefined;
394
420
  } | {
395
421
  t: "service";
@@ -475,6 +501,10 @@ export declare const SessionEnvelopeSchema: z.ZodEffects<z.ZodObject<{
475
501
  } | {
476
502
  t: "text";
477
503
  text: string;
504
+ images?: {
505
+ data: string;
506
+ mediaType: string;
507
+ }[] | undefined;
478
508
  thinking?: boolean | undefined;
479
509
  } | {
480
510
  t: "service";
@@ -560,6 +590,10 @@ export declare const SessionEnvelopeSchema: z.ZodEffects<z.ZodObject<{
560
590
  } | {
561
591
  t: "text";
562
592
  text: string;
593
+ images?: {
594
+ data: string;
595
+ mediaType: string;
596
+ }[] | undefined;
563
597
  thinking?: boolean | undefined;
564
598
  } | {
565
599
  t: "service";
package/dist/envelope.js CHANGED
@@ -1,78 +1 @@
1
- /**
2
- * Session envelope schema — aligned with Happy sessionProtocol.
3
- *
4
- * Wraps a SessionEvent with metadata (id, time, role, turn, subagent).
5
- */
6
- import { z } from 'zod';
7
- import { isCuid } from '@paralleldrive/cuid2';
8
- import { createId } from './utils.js';
9
- import { SessionEventSchema } from './events.js';
10
- export const SessionRoleSchema = z.enum(['user', 'agent']);
11
- export const SessionEnvelopeSchema = z
12
- .object({
13
- id: z.string(),
14
- time: z.number(),
15
- role: SessionRoleSchema,
16
- turn: z.string().optional(),
17
- subagent: z
18
- .string()
19
- .refine((value) => isCuid(value), { message: 'subagent must be a cuid2 value' })
20
- .optional(),
21
- /** Claude CLI message UUID — used for precise conversation rollback. */
22
- messageUuid: z.string().optional(),
23
- ev: SessionEventSchema,
24
- })
25
- .superRefine((envelope, ctx) => {
26
- if (envelope.ev.t === 'service' && envelope.role !== 'agent') {
27
- ctx.addIssue({
28
- code: z.ZodIssueCode.custom,
29
- message: 'service events must use role "agent"',
30
- path: ['role'],
31
- });
32
- }
33
- if ((envelope.ev.t === 'start' || envelope.ev.t === 'stop') && envelope.role !== 'agent') {
34
- ctx.addIssue({
35
- code: z.ZodIssueCode.custom,
36
- message: `${envelope.ev.t} events must use role "agent"`,
37
- path: ['role'],
38
- });
39
- }
40
- if ((envelope.ev.t === 'question' || envelope.ev.t === 'permission-request') &&
41
- envelope.role !== 'agent') {
42
- ctx.addIssue({
43
- code: z.ZodIssueCode.custom,
44
- message: `${envelope.ev.t} events must use role "agent"`,
45
- path: ['role'],
46
- });
47
- }
48
- if (envelope.ev.t === 'answer' && envelope.role !== 'user') {
49
- ctx.addIssue({
50
- code: z.ZodIssueCode.custom,
51
- message: 'answer events must use role "user"',
52
- path: ['role'],
53
- });
54
- }
55
- });
56
- /**
57
- * Create a SessionEnvelope by direct construction (hot path).
58
- *
59
- * Skips Zod `.parse()` for performance — the discriminated union with
60
- * 14 variants + 4 superRefine checks is expensive on every streaming token.
61
- * Validation still happens at ingress boundaries (server API handlers).
62
- */
63
- export function createEnvelope(role, ev, opts = {}) {
64
- const envelope = {
65
- id: opts.id ?? createId(),
66
- time: opts.time ?? Date.now(),
67
- role,
68
- ev,
69
- };
70
- if (opts.turn)
71
- envelope.turn = opts.turn;
72
- if (opts.subagent)
73
- envelope.subagent = opts.subagent;
74
- if (opts.messageUuid)
75
- envelope.messageUuid = opts.messageUuid;
76
- return envelope;
77
- }
78
- //# sourceMappingURL=envelope.js.map
1
+ "use strict";import{z as s}from"zod";import{isCuid as o}from"@paralleldrive/cuid2";import{createId as a}from"./utils.js";import{SessionEventSchema as i}from"./events.js";export const SessionRoleSchema=s.enum(["user","agent"]),SessionEnvelopeSchema=s.object({id:s.string(),time:s.number(),role:SessionRoleSchema,turn:s.string().optional(),subagent:s.string().refine(e=>o(e),{message:"subagent must be a cuid2 value"}).optional(),messageUuid:s.string().optional(),ev:i}).superRefine((e,r)=>{e.ev.t==="service"&&e.role!=="agent"&&r.addIssue({code:s.ZodIssueCode.custom,message:'service events must use role "agent"',path:["role"]}),(e.ev.t==="start"||e.ev.t==="stop")&&e.role!=="agent"&&r.addIssue({code:s.ZodIssueCode.custom,message:`${e.ev.t} events must use role "agent"`,path:["role"]}),(e.ev.t==="question"||e.ev.t==="permission-request")&&e.role!=="agent"&&r.addIssue({code:s.ZodIssueCode.custom,message:`${e.ev.t} events must use role "agent"`,path:["role"]}),e.ev.t==="answer"&&e.role!=="user"&&r.addIssue({code:s.ZodIssueCode.custom,message:'answer events must use role "user"',path:["role"]})});export function createEnvelope(e,r,t={}){const u={id:t.id??a(),time:t.time??Date.now(),role:e,ev:r};return t.turn&&(u.turn=t.turn),t.subagent&&(u.subagent=t.subagent),t.messageUuid&&(u.messageUuid=t.messageUuid),u}
@@ -1,6 +1 @@
1
- export function errorMessage(err) {
2
- if (err instanceof Error)
3
- return err.message;
4
- return String(err);
5
- }
6
- //# sourceMappingURL=errorMessage.js.map
1
+ "use strict";export function errorMessage(r){return r instanceof Error?r.message:String(r)}
package/dist/events.d.ts CHANGED
@@ -9,13 +9,31 @@ export declare const SessionTextEventSchema: z.ZodObject<{
9
9
  t: z.ZodLiteral<"text">;
10
10
  text: z.ZodString;
11
11
  thinking: z.ZodOptional<z.ZodBoolean>;
12
+ images: z.ZodOptional<z.ZodArray<z.ZodObject<{
13
+ data: z.ZodString;
14
+ mediaType: z.ZodString;
15
+ }, "strip", z.ZodTypeAny, {
16
+ data: string;
17
+ mediaType: string;
18
+ }, {
19
+ data: string;
20
+ mediaType: string;
21
+ }>, "many">>;
12
22
  }, "strip", z.ZodTypeAny, {
13
23
  t: "text";
14
24
  text: string;
25
+ images?: {
26
+ data: string;
27
+ mediaType: string;
28
+ }[] | undefined;
15
29
  thinking?: boolean | undefined;
16
30
  }, {
17
31
  t: "text";
18
32
  text: string;
33
+ images?: {
34
+ data: string;
35
+ mediaType: string;
36
+ }[] | undefined;
19
37
  thinking?: boolean | undefined;
20
38
  }>;
21
39
  export declare const SessionServiceEventSchema: z.ZodObject<{
@@ -212,13 +230,31 @@ export declare const SessionEventSchema: z.ZodDiscriminatedUnion<"t", [z.ZodObje
212
230
  t: z.ZodLiteral<"text">;
213
231
  text: z.ZodString;
214
232
  thinking: z.ZodOptional<z.ZodBoolean>;
233
+ images: z.ZodOptional<z.ZodArray<z.ZodObject<{
234
+ data: z.ZodString;
235
+ mediaType: z.ZodString;
236
+ }, "strip", z.ZodTypeAny, {
237
+ data: string;
238
+ mediaType: string;
239
+ }, {
240
+ data: string;
241
+ mediaType: string;
242
+ }>, "many">>;
215
243
  }, "strip", z.ZodTypeAny, {
216
244
  t: "text";
217
245
  text: string;
246
+ images?: {
247
+ data: string;
248
+ mediaType: string;
249
+ }[] | undefined;
218
250
  thinking?: boolean | undefined;
219
251
  }, {
220
252
  t: "text";
221
253
  text: string;
254
+ images?: {
255
+ data: string;
256
+ mediaType: string;
257
+ }[] | undefined;
222
258
  thinking?: boolean | undefined;
223
259
  }>, z.ZodObject<{
224
260
  t: z.ZodLiteral<"service">;