@agentdock/wire 0.0.81 → 0.0.91
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.
- package/dist/activityPreferences.js +1 -2
- package/dist/agentCapabilities.d.ts +2 -0
- package/dist/agentCapabilities.js +1 -199
- package/dist/agentCommonEnv.js +1 -20
- package/dist/agentInstallGuide.js +1 -81
- package/dist/bgTask.js +1 -128
- package/dist/checkpointSchemas.d.ts +142 -98
- package/dist/checkpointSchemas.js +1 -46
- package/dist/controlLevel.js +1 -11
- package/dist/edition.js +1 -13
- package/dist/envelope.d.ts +5668 -563
- package/dist/envelope.js +1 -77
- package/dist/errorMessage.js +1 -6
- package/dist/events.d.ts +2053 -324
- package/dist/events.js +1 -107
- package/dist/features.js +1 -123
- package/dist/feedback.d.ts +2 -2
- package/dist/feedback.js +1 -61
- package/dist/fileWhitelist.js +1 -189
- package/dist/inboundEvents.d.ts +531 -0
- package/dist/inboundEvents.js +1 -0
- package/dist/index.d.ts +11 -5
- package/dist/index.js +1 -73
- package/dist/interactionEvents.d.ts +153 -106
- package/dist/interactionEvents.js +1 -111
- package/dist/legacyProtocol.d.ts +512 -272
- package/dist/legacyProtocol.js +1 -30
- package/dist/license.js +1 -28
- package/dist/machine.d.ts +108 -62
- package/dist/machine.js +1 -66
- package/dist/messageMeta.d.ts +34 -28
- package/dist/messageMeta.js +1 -60
- package/dist/messages.d.ts +34900 -1862
- package/dist/messages.js +1 -35
- package/dist/notification.d.ts +48 -0
- package/dist/notification.js +1 -0
- package/dist/ops.d.ts +165 -122
- package/dist/ops.js +1 -74
- package/dist/pairing.d.ts +4 -4
- package/dist/pairing.js +1 -150
- package/dist/permissionSubject.js +1 -68
- package/dist/protocol.js +1 -7
- package/dist/rpc.d.ts +749 -189
- package/dist/rpc.js +1 -269
- package/dist/scheduledTasks.d.ts +619 -304
- package/dist/scheduledTasks.js +1 -188
- package/dist/semver.js +1 -60
- package/dist/sessionResult.d.ts +31 -17
- package/dist/sessionResult.js +1 -23
- package/dist/socketEvents.d.ts +7 -0
- package/dist/socketEvents.js +1 -55
- package/dist/sourceMetadata.d.ts +44 -0
- package/dist/sourceMetadata.js +1 -0
- package/dist/spawnError.d.ts +21 -17
- package/dist/spawnError.js +1 -31
- package/dist/stats.d.ts +73 -73
- package/dist/stats.js +1 -117
- package/dist/sync.d.ts +2165 -819
- package/dist/sync.js +1 -99
- package/dist/taskResult.js +1 -113
- package/dist/telemetry.d.ts +120 -64
- package/dist/telemetry.js +1 -115
- package/dist/utils.js +1 -2
- package/package.json +3 -2
- package/dist/activityPreferences.d.ts.map +0 -1
- package/dist/activityPreferences.js.map +0 -1
- package/dist/agentCapabilities.d.ts.map +0 -1
- package/dist/agentCapabilities.js.map +0 -1
- package/dist/agentCommonEnv.d.ts.map +0 -1
- package/dist/agentCommonEnv.js.map +0 -1
- package/dist/agentInstallGuide.d.ts.map +0 -1
- package/dist/agentInstallGuide.js.map +0 -1
- package/dist/bgTask.d.ts.map +0 -1
- package/dist/bgTask.js.map +0 -1
- package/dist/checkpointSchemas.d.ts.map +0 -1
- package/dist/checkpointSchemas.js.map +0 -1
- package/dist/controlLevel.d.ts.map +0 -1
- package/dist/controlLevel.js.map +0 -1
- package/dist/edition.d.ts.map +0 -1
- package/dist/edition.js.map +0 -1
- package/dist/envelope.d.ts.map +0 -1
- package/dist/envelope.js.map +0 -1
- package/dist/errorMessage.d.ts.map +0 -1
- package/dist/errorMessage.js.map +0 -1
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js.map +0 -1
- package/dist/features.d.ts.map +0 -1
- package/dist/features.js.map +0 -1
- package/dist/feedback.d.ts.map +0 -1
- package/dist/feedback.js.map +0 -1
- package/dist/fileWhitelist.d.ts.map +0 -1
- package/dist/fileWhitelist.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/interactionEvents.d.ts.map +0 -1
- package/dist/interactionEvents.js.map +0 -1
- package/dist/legacyProtocol.d.ts.map +0 -1
- package/dist/legacyProtocol.js.map +0 -1
- package/dist/license.d.ts.map +0 -1
- package/dist/license.js.map +0 -1
- package/dist/machine.d.ts.map +0 -1
- package/dist/machine.js.map +0 -1
- package/dist/messageMeta.d.ts.map +0 -1
- package/dist/messageMeta.js.map +0 -1
- package/dist/messages.d.ts.map +0 -1
- package/dist/messages.js.map +0 -1
- package/dist/ops.d.ts.map +0 -1
- package/dist/ops.js.map +0 -1
- package/dist/pairing.d.ts.map +0 -1
- package/dist/pairing.js.map +0 -1
- package/dist/permissionSubject.d.ts.map +0 -1
- package/dist/permissionSubject.js.map +0 -1
- package/dist/protocol.d.ts.map +0 -1
- package/dist/protocol.js.map +0 -1
- package/dist/rpc.d.ts.map +0 -1
- package/dist/rpc.js.map +0 -1
- package/dist/scheduledTasks.d.ts.map +0 -1
- package/dist/scheduledTasks.js.map +0 -1
- package/dist/semver.d.ts.map +0 -1
- package/dist/semver.js.map +0 -1
- package/dist/sessionResult.d.ts.map +0 -1
- package/dist/sessionResult.js.map +0 -1
- package/dist/socketEvents.d.ts.map +0 -1
- package/dist/socketEvents.js.map +0 -1
- package/dist/spawnError.d.ts.map +0 -1
- package/dist/spawnError.js.map +0 -1
- package/dist/stats.d.ts.map +0 -1
- package/dist/stats.js.map +0 -1
- package/dist/sync.d.ts.map +0 -1
- package/dist/sync.js.map +0 -1
- package/dist/taskResult.d.ts.map +0 -1
- package/dist/taskResult.js.map +0 -1
- package/dist/telemetry.d.ts.map +0 -1
- package/dist/telemetry.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
package/dist/scheduledTasks.js
CHANGED
|
@@ -1,188 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { SpawnSessionParamsSchema } from './rpc.js';
|
|
3
|
-
// Derived from source schema via .pick() — no independent definition
|
|
4
|
-
// Extended with scheduler-only config fields (no migration needed, stored in spawnParams JSON).
|
|
5
|
-
export const RetryPolicySchema = z.object({
|
|
6
|
-
maxRetries: z.number().int().min(0).max(10).default(0),
|
|
7
|
-
retryDelayMs: z.number().int().min(1000).max(300000).default(60000),
|
|
8
|
-
});
|
|
9
|
-
export const MissedRunPolicySchema = z.enum(['skip', 'run-once']);
|
|
10
|
-
export const ScheduledSpawnParamsSchema = SpawnSessionParamsSchema.pick({
|
|
11
|
-
agentType: true,
|
|
12
|
-
cwd: true,
|
|
13
|
-
prompt: true,
|
|
14
|
-
model: true,
|
|
15
|
-
agent: true,
|
|
16
|
-
startupScripts: true,
|
|
17
|
-
})
|
|
18
|
-
.partial()
|
|
19
|
-
.required({ prompt: true })
|
|
20
|
-
.extend({
|
|
21
|
-
maxExecutionMs: z.number().int().positive().max(21600000).optional(),
|
|
22
|
-
retryPolicy: RetryPolicySchema.optional(),
|
|
23
|
-
missedRunPolicy: MissedRunPolicySchema.optional(),
|
|
24
|
-
circuitBreakerThreshold: z.number().int().min(1).max(20).optional(),
|
|
25
|
-
});
|
|
26
|
-
export const TaskExecutionStatusSchema = z.enum([
|
|
27
|
-
'pending',
|
|
28
|
-
'running',
|
|
29
|
-
'completed',
|
|
30
|
-
'failed',
|
|
31
|
-
'lost',
|
|
32
|
-
'skipped',
|
|
33
|
-
'cancelled',
|
|
34
|
-
]);
|
|
35
|
-
// trigger values for TaskExecution.trigger column
|
|
36
|
-
export const TaskExecutionTriggerSchema = z.enum([
|
|
37
|
-
'scheduled', // cron tick
|
|
38
|
-
'manual', // UI "run now" button
|
|
39
|
-
'token', // HTTP POST /v1/triggers/:token
|
|
40
|
-
'chain', // continuous task auto-chained from previous completion
|
|
41
|
-
]);
|
|
42
|
-
// Task-level trigger type — controls how the task is kicked off
|
|
43
|
-
export const TaskTriggerTypeSchema = z.enum(['cron', 'token', 'continuous']);
|
|
44
|
-
// Structured task delivery result — stored in TaskExecution.resultData (JSON column).
|
|
45
|
-
// Produced by the agent as a <task-result> XML block, parsed by daemon, stored by server.
|
|
46
|
-
export const TaskResultSchema = z.object({
|
|
47
|
-
status: z.enum(['done', 'failed']),
|
|
48
|
-
headline: z.string().max(200).optional(),
|
|
49
|
-
summary: z.string().max(4000).optional(),
|
|
50
|
-
outcome: z.string().max(8000).optional(),
|
|
51
|
-
reason: z.string().max(2000).optional(),
|
|
52
|
-
suggestion: z.string().max(2000).optional(),
|
|
53
|
-
// true when the agent did not emit a well-formed block and we fell back
|
|
54
|
-
// to capturing its last output verbatim.
|
|
55
|
-
unstructured: z.boolean().optional(),
|
|
56
|
-
});
|
|
57
|
-
// Single execution bar for the duration chart — one bar per run.
|
|
58
|
-
export const TaskExecutionBarSchema = z.object({
|
|
59
|
-
durationMs: z.number().int().nullable(), // null if never started/completed
|
|
60
|
-
status: TaskExecutionStatusSchema,
|
|
61
|
-
});
|
|
62
|
-
// Per-task observability stats — served by GET /v1/scheduled-tasks/:id/stats.
|
|
63
|
-
export const TaskStatsSchema = z.object({
|
|
64
|
-
successRate: z.number(),
|
|
65
|
-
totalExecutions: z.number().int(),
|
|
66
|
-
avgDurationMs: z.number().int().nullable(),
|
|
67
|
-
maxDurationMs: z.number().int().nullable(),
|
|
68
|
-
executions: z.array(TaskExecutionBarSchema), // last 30 terminal executions, newest last
|
|
69
|
-
});
|
|
70
|
-
// Lightweight per-task stats for list cards — served inline with the list response.
|
|
71
|
-
export const TaskCardStatsSchema = z.object({
|
|
72
|
-
totalExecutions: z.number().int(),
|
|
73
|
-
successRate: z.number(),
|
|
74
|
-
avgDurationMs: z.number().int().nullable(),
|
|
75
|
-
executions: z.array(TaskExecutionBarSchema), // last 7 terminal executions, newest last
|
|
76
|
-
});
|
|
77
|
-
// Basic 5-field cron format validation (each field: digits, *, -, /, ,).
|
|
78
|
-
// Server uses cron-parser for thorough range/interval validation.
|
|
79
|
-
export const CRON_RE = /^[0-9*/, -]+ [0-9*/, -]+ [0-9*/, -]+ [0-9*/, -]+ [0-9*/, -]+$/;
|
|
80
|
-
/** Base shape shared by create and update. */
|
|
81
|
-
const ScheduledTaskBaseShape = {
|
|
82
|
-
name: z.string().min(1).max(100),
|
|
83
|
-
triggerType: TaskTriggerTypeSchema,
|
|
84
|
-
schedule: z.string().min(1).max(100).optional(),
|
|
85
|
-
enabled: z.boolean().optional(),
|
|
86
|
-
machineId: z.string().min(1).optional(),
|
|
87
|
-
spawnParams: ScheduledSpawnParamsSchema.optional(),
|
|
88
|
-
maxConcurrent: z.number().int().min(1).max(50).optional(),
|
|
89
|
-
totalRuns: z.number().int().min(1).max(10000).optional(),
|
|
90
|
-
};
|
|
91
|
-
// Create: schedule required for cron, totalRuns required for continuous
|
|
92
|
-
export const CreateScheduledTaskSchema = z
|
|
93
|
-
.object({
|
|
94
|
-
...ScheduledTaskBaseShape,
|
|
95
|
-
triggerType: TaskTriggerTypeSchema.default('cron'),
|
|
96
|
-
enabled: z.boolean().optional().default(true),
|
|
97
|
-
spawnParams: ScheduledSpawnParamsSchema,
|
|
98
|
-
maxConcurrent: z.number().int().min(1).max(50).optional().default(1),
|
|
99
|
-
})
|
|
100
|
-
.refine((data) => {
|
|
101
|
-
if (data.triggerType !== 'cron')
|
|
102
|
-
return true;
|
|
103
|
-
return Boolean(data.schedule && CRON_RE.test(data.schedule));
|
|
104
|
-
}, { message: 'schedule is required for cron trigger type', path: ['schedule'] })
|
|
105
|
-
.refine((data) => {
|
|
106
|
-
if (data.triggerType !== 'continuous')
|
|
107
|
-
return true;
|
|
108
|
-
return data.totalRuns !== undefined && data.totalRuns >= 1;
|
|
109
|
-
}, { message: 'totalRuns is required for continuous trigger type', path: ['totalRuns'] });
|
|
110
|
-
// Update: all fields optional, no trigger-type cross-field validation
|
|
111
|
-
// (triggerType itself is immutable; route-level enforces, not schema)
|
|
112
|
-
export const UpdateScheduledTaskSchema = z.object({
|
|
113
|
-
name: z.string().min(1).max(100).optional(),
|
|
114
|
-
schedule: z.string().min(1).max(100).optional(),
|
|
115
|
-
enabled: z.boolean().optional(),
|
|
116
|
-
machineId: z.string().min(1).optional().nullable(),
|
|
117
|
-
spawnParams: ScheduledSpawnParamsSchema.optional(),
|
|
118
|
-
maxConcurrent: z.number().int().min(1).max(50).optional(),
|
|
119
|
-
totalRuns: z.number().int().min(1).max(10000).optional(),
|
|
120
|
-
});
|
|
121
|
-
export const ScheduledTaskSummarySchema = z.object({
|
|
122
|
-
id: z.string(),
|
|
123
|
-
name: z.string(),
|
|
124
|
-
schedule: z.string().nullable(),
|
|
125
|
-
triggerType: TaskTriggerTypeSchema,
|
|
126
|
-
enabled: z.boolean(),
|
|
127
|
-
machineId: z.string().nullable(),
|
|
128
|
-
// token-specific
|
|
129
|
-
triggerToken: z.string().nullable(),
|
|
130
|
-
maxConcurrent: z.number().int().optional(),
|
|
131
|
-
// continuous-specific
|
|
132
|
-
totalRuns: z.number().int().nullable(),
|
|
133
|
-
completedRuns: z.number().int().nullable(),
|
|
134
|
-
// scheduling
|
|
135
|
-
nextRunAt: z.string().nullable(),
|
|
136
|
-
lastRunAt: z.string().nullable(),
|
|
137
|
-
lastExecution: z
|
|
138
|
-
.object({
|
|
139
|
-
status: TaskExecutionStatusSchema,
|
|
140
|
-
summary: z.string().nullable(),
|
|
141
|
-
resultData: TaskResultSchema.nullable(),
|
|
142
|
-
})
|
|
143
|
-
.nullable(),
|
|
144
|
-
createdAt: z.string(),
|
|
145
|
-
updatedAt: z.string(),
|
|
146
|
-
consecutiveFailures: z.number().int(),
|
|
147
|
-
disabledReason: z.string().nullable(),
|
|
148
|
-
stats: TaskCardStatsSchema.nullable(),
|
|
149
|
-
});
|
|
150
|
-
export const TaskExecutionSchema = z.object({
|
|
151
|
-
id: z.string(),
|
|
152
|
-
taskId: z.string(),
|
|
153
|
-
sessionId: z.string().nullable(),
|
|
154
|
-
status: TaskExecutionStatusSchema,
|
|
155
|
-
trigger: TaskExecutionTriggerSchema,
|
|
156
|
-
scheduledAt: z.string(),
|
|
157
|
-
startedAt: z.string().nullable(),
|
|
158
|
-
completedAt: z.string().nullable(),
|
|
159
|
-
error: z.string().nullable(),
|
|
160
|
-
retryCount: z.number(),
|
|
161
|
-
reworkCount: z.number(),
|
|
162
|
-
/** Takeover state (自动→人工介入): "none" | "pending" | "done". */
|
|
163
|
-
takeoverState: z.string().optional(),
|
|
164
|
-
/** Managed session id produced by takeover (set when takeoverState='done'). */
|
|
165
|
-
takeoverSessionId: z.string().nullable().optional(),
|
|
166
|
-
summary: z.string().nullable(),
|
|
167
|
-
resultData: TaskResultSchema.nullable(),
|
|
168
|
-
createdAt: z.string(),
|
|
169
|
-
});
|
|
170
|
-
// ── Trigger API (token tasks) ──
|
|
171
|
-
/** POST /v1/triggers/:token request body */
|
|
172
|
-
export const TriggerCallSchema = z.object({
|
|
173
|
-
context: z.string().max(5000).optional(),
|
|
174
|
-
});
|
|
175
|
-
/** GET /v1/triggers/:token/execution response */
|
|
176
|
-
export const TriggerExecutionSchema = z.object({
|
|
177
|
-
executionId: z.string(),
|
|
178
|
-
status: TaskExecutionStatusSchema,
|
|
179
|
-
startedAt: z.string().nullable(),
|
|
180
|
-
completedAt: z.string().nullable(),
|
|
181
|
-
summary: z.string().nullable(),
|
|
182
|
-
error: z.string().nullable(),
|
|
183
|
-
});
|
|
184
|
-
/** POST /v1/scheduled-tasks/:id/regenerate-token response */
|
|
185
|
-
export const RegenerateTokenResponseSchema = z.object({
|
|
186
|
-
triggerToken: z.string(),
|
|
187
|
-
});
|
|
188
|
-
//# sourceMappingURL=scheduledTasks.js.map
|
|
1
|
+
"use strict";import{z as e}from"zod";import{SpawnSessionParamsSchema as n}from"./rpc.js";export const RetryPolicySchema=e.object({maxRetries:e.number().int().min(0).max(10).default(0),retryDelayMs:e.number().int().min(1e3).max(3e5).default(6e4)}).passthrough(),MissedRunPolicySchema=e.enum(["skip","run-once"]),ScheduledSpawnParamsSchema=n.pick({agentType:!0,cwd:!0,prompt:!0,model:!0,agent:!0,startupScripts:!0}).partial().required({prompt:!0}).extend({maxExecutionMs:e.number().int().positive().max(216e5).optional(),retryPolicy:RetryPolicySchema.optional(),missedRunPolicy:MissedRunPolicySchema.optional(),circuitBreakerThreshold:e.number().int().min(1).max(20).optional()}),TaskExecutionStatusSchema=e.enum(["pending","running","completed","failed","lost","skipped","cancelled"]),TaskExecutionTriggerSchema=e.enum(["scheduled","manual","token","chain"]),TaskTriggerTypeSchema=e.enum(["cron","token","continuous"]),TaskResultSchema=e.object({status:e.enum(["done","failed"]),headline:e.string().max(200).optional(),summary:e.string().max(4e3).optional(),outcome:e.string().max(8e3).optional(),reason:e.string().max(2e3).optional(),suggestion:e.string().max(2e3).optional(),unstructured:e.boolean().optional()}),TaskExecutionBarSchema=e.object({durationMs:e.number().int().nullable(),status:TaskExecutionStatusSchema}).passthrough(),TaskStatsSchema=e.object({successRate:e.number(),totalExecutions:e.number().int(),avgDurationMs:e.number().int().nullable(),maxDurationMs:e.number().int().nullable(),executions:e.array(TaskExecutionBarSchema)}).passthrough(),TaskCardStatsSchema=e.object({totalExecutions:e.number().int(),successRate:e.number(),avgDurationMs:e.number().int().nullable(),executions:e.array(TaskExecutionBarSchema)}).passthrough(),CRON_RE=/^[0-9*/, -]+ [0-9*/, -]+ [0-9*/, -]+ [0-9*/, -]+ [0-9*/, -]+$/;const r={name:e.string().min(1).max(100),triggerType:TaskTriggerTypeSchema,schedule:e.string().min(1).max(100).optional(),enabled:e.boolean().optional(),machineId:e.string().min(1).optional(),spawnParams:ScheduledSpawnParamsSchema.optional(),maxConcurrent:e.number().int().min(1).max(50).optional(),totalRuns:e.number().int().min(1).max(1e4).optional()};export const CreateScheduledTaskSchema=e.object({...r,triggerType:TaskTriggerTypeSchema.default("cron"),enabled:e.boolean().optional().default(!0),spawnParams:ScheduledSpawnParamsSchema,maxConcurrent:e.number().int().min(1).max(50).optional().default(1)}).strict().refine(t=>t.triggerType!=="cron"?!0:!!(t.schedule&&CRON_RE.test(t.schedule)),{message:"schedule is required for cron trigger type",path:["schedule"]}).refine(t=>t.triggerType!=="continuous"?!0:t.totalRuns!==void 0&&t.totalRuns>=1,{message:"totalRuns is required for continuous trigger type",path:["totalRuns"]}),UpdateScheduledTaskSchema=e.object({name:e.string().min(1).max(100).optional(),triggerType:TaskTriggerTypeSchema.optional(),schedule:e.string().min(1).max(100).optional(),enabled:e.boolean().optional(),machineId:e.string().min(1).optional().nullable(),spawnParams:ScheduledSpawnParamsSchema.optional(),maxConcurrent:e.number().int().min(1).max(50).optional(),totalRuns:e.number().int().min(1).max(1e4).optional()}).strict().refine(t=>t.triggerType!=="cron"?!0:t.schedule!==void 0?CRON_RE.test(t.schedule):!0,{message:"schedule is required when switching to cron trigger type",path:["schedule"]}).refine(t=>t.triggerType!=="continuous"?!0:t.totalRuns!==void 0&&t.totalRuns>=1,{message:"totalRuns is required when switching to continuous trigger type",path:["totalRuns"]}),ScheduledTaskSummarySchema=e.object({id:e.string(),name:e.string(),schedule:e.string().nullable(),triggerType:TaskTriggerTypeSchema,enabled:e.boolean(),machineId:e.string().nullable(),triggerToken:e.string().nullable(),maxConcurrent:e.number().int().optional(),totalRuns:e.number().int().nullable(),completedRuns:e.number().int().nullable(),nextRunAt:e.string().nullable(),lastRunAt:e.string().nullable(),lastExecution:e.object({status:TaskExecutionStatusSchema,summary:e.string().nullable(),resultData:TaskResultSchema.nullable()}).nullable(),createdAt:e.string(),updatedAt:e.string(),consecutiveFailures:e.number().int(),disabledReason:e.string().nullable(),stats:TaskCardStatsSchema.nullable()}).passthrough(),TaskExecutionSchema=e.object({id:e.string(),taskId:e.string(),sessionId:e.string().nullable(),status:TaskExecutionStatusSchema,trigger:TaskExecutionTriggerSchema,scheduledAt:e.string(),startedAt:e.string().nullable(),completedAt:e.string().nullable(),error:e.string().nullable(),retryCount:e.number(),reworkCount:e.number(),takeoverState:e.string().optional(),takeoverSessionId:e.string().nullable().optional(),summary:e.string().nullable(),resultData:TaskResultSchema.nullable(),createdAt:e.string()}).passthrough(),TriggerCallSchema=e.object({context:e.string().max(5e3).optional()}).strict(),TriggerExecutionSchema=e.object({executionId:e.string(),status:TaskExecutionStatusSchema,startedAt:e.string().nullable(),completedAt:e.string().nullable(),summary:e.string().nullable(),error:e.string().nullable()}).passthrough(),RegenerateTokenResponseSchema=e.object({triggerToken:e.string()}).passthrough();
|
package/dist/semver.js
CHANGED
|
@@ -1,60 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Minimal semver comparison utility.
|
|
3
|
-
*
|
|
4
|
-
* Handles standard semver (major.minor.patch) plus optional pre-release
|
|
5
|
-
* suffixes like `-alpha.1`. No npm dependency needed.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Parse a version string into its components.
|
|
9
|
-
*
|
|
10
|
-
* @returns SemverParts or null if the string doesn't contain a valid version.
|
|
11
|
-
*/
|
|
12
|
-
export function parseSemver(version) {
|
|
13
|
-
const match = version.match(/(\d+)\.(\d+)\.(\d+)(?:-(.+))?/);
|
|
14
|
-
if (!match)
|
|
15
|
-
return null;
|
|
16
|
-
return {
|
|
17
|
-
major: Number(match[1]),
|
|
18
|
-
minor: Number(match[2]),
|
|
19
|
-
patch: Number(match[3]),
|
|
20
|
-
prerelease: match[4],
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Compare two semver version strings.
|
|
25
|
-
*
|
|
26
|
-
* @returns -1 if a < b, 0 if a === b, 1 if a > b.
|
|
27
|
-
* Returns 0 if either version cannot be parsed.
|
|
28
|
-
*/
|
|
29
|
-
export function compareVersions(a, b) {
|
|
30
|
-
const pa = parseSemver(a);
|
|
31
|
-
const pb = parseSemver(b);
|
|
32
|
-
if (!pa || !pb)
|
|
33
|
-
return 0;
|
|
34
|
-
if (pa.major !== pb.major)
|
|
35
|
-
return pa.major > pb.major ? 1 : -1;
|
|
36
|
-
if (pa.minor !== pb.minor)
|
|
37
|
-
return pa.minor > pb.minor ? 1 : -1;
|
|
38
|
-
if (pa.patch !== pb.patch)
|
|
39
|
-
return pa.patch > pb.patch ? 1 : -1;
|
|
40
|
-
// Pre-release versions have lower precedence than release
|
|
41
|
-
if (pa.prerelease && !pb.prerelease)
|
|
42
|
-
return -1;
|
|
43
|
-
if (!pa.prerelease && pb.prerelease)
|
|
44
|
-
return 1;
|
|
45
|
-
// Both have prerelease — lexicographic compare
|
|
46
|
-
if (pa.prerelease && pb.prerelease) {
|
|
47
|
-
if (pa.prerelease < pb.prerelease)
|
|
48
|
-
return -1;
|
|
49
|
-
if (pa.prerelease > pb.prerelease)
|
|
50
|
-
return 1;
|
|
51
|
-
}
|
|
52
|
-
return 0;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Check if version `a` satisfies `>= minVersion`.
|
|
56
|
-
*/
|
|
57
|
-
export function satisfiesMin(version, minVersion) {
|
|
58
|
-
return compareVersions(version, minVersion) >= 0;
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=semver.js.map
|
|
1
|
+
"use strict";export function parseSemver(t){const n=t.match(/(\d+)\.(\d+)\.(\d+)(?:-(.+))?/);return n?{major:Number(n[1]),minor:Number(n[2]),patch:Number(n[3]),prerelease:n[4]}:null}export function compareVersions(t,n){const e=parseSemver(t),r=parseSemver(n);if(!e||!r)return 0;if(e.major!==r.major)return e.major>r.major?1:-1;if(e.minor!==r.minor)return e.minor>r.minor?1:-1;if(e.patch!==r.patch)return e.patch>r.patch?1:-1;if(e.prerelease&&!r.prerelease)return-1;if(!e.prerelease&&r.prerelease)return 1;if(e.prerelease&&r.prerelease){if(e.prerelease<r.prerelease)return-1;if(e.prerelease>r.prerelease)return 1}return 0}export function satisfiesMin(t,n){return compareVersions(t,n)>=0}
|
package/dist/sessionResult.d.ts
CHANGED
|
@@ -19,22 +19,36 @@ export declare const SessionResultSchema: z.ZodObject<{
|
|
|
19
19
|
isError: z.ZodOptional<z.ZodBoolean>;
|
|
20
20
|
/** Number of conversation turns. */
|
|
21
21
|
numTurns: z.ZodOptional<z.ZodNumber>;
|
|
22
|
-
}, "
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
22
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
23
|
+
/** Total cost in USD for this turn. */
|
|
24
|
+
totalCostUsd: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
/** Input token count. */
|
|
26
|
+
inputTokens: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
/** Output token count. */
|
|
28
|
+
outputTokens: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
/** Duration in milliseconds. */
|
|
30
|
+
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
31
|
+
/** Claude-internal session ID. */
|
|
32
|
+
cliSessionId: z.ZodOptional<z.ZodString>;
|
|
33
|
+
/** Whether the result represents an error. */
|
|
34
|
+
isError: z.ZodOptional<z.ZodBoolean>;
|
|
35
|
+
/** Number of conversation turns. */
|
|
36
|
+
numTurns: z.ZodOptional<z.ZodNumber>;
|
|
37
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
38
|
+
/** Total cost in USD for this turn. */
|
|
39
|
+
totalCostUsd: z.ZodOptional<z.ZodNumber>;
|
|
40
|
+
/** Input token count. */
|
|
41
|
+
inputTokens: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
/** Output token count. */
|
|
43
|
+
outputTokens: z.ZodOptional<z.ZodNumber>;
|
|
44
|
+
/** Duration in milliseconds. */
|
|
45
|
+
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
46
|
+
/** Claude-internal session ID. */
|
|
47
|
+
cliSessionId: z.ZodOptional<z.ZodString>;
|
|
48
|
+
/** Whether the result represents an error. */
|
|
49
|
+
isError: z.ZodOptional<z.ZodBoolean>;
|
|
50
|
+
/** Number of conversation turns. */
|
|
51
|
+
numTurns: z.ZodOptional<z.ZodNumber>;
|
|
52
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
39
53
|
export type SessionResult = z.infer<typeof SessionResultSchema>;
|
|
40
54
|
//# sourceMappingURL=sessionResult.d.ts.map
|
package/dist/sessionResult.js
CHANGED
|
@@ -1,23 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Session result schema — data from Claude's `result` event.
|
|
3
|
-
*
|
|
4
|
-
* Emitted once per conversation turn, contains token usage, cost, and timing.
|
|
5
|
-
*/
|
|
6
|
-
import { z } from 'zod';
|
|
7
|
-
export const SessionResultSchema = z.object({
|
|
8
|
-
/** Total cost in USD for this turn. */
|
|
9
|
-
totalCostUsd: z.number().optional(),
|
|
10
|
-
/** Input token count. */
|
|
11
|
-
inputTokens: z.number().int().nonnegative().optional(),
|
|
12
|
-
/** Output token count. */
|
|
13
|
-
outputTokens: z.number().int().nonnegative().optional(),
|
|
14
|
-
/** Duration in milliseconds. */
|
|
15
|
-
durationMs: z.number().nonnegative().optional(),
|
|
16
|
-
/** Claude-internal session ID. */
|
|
17
|
-
cliSessionId: z.string().optional(),
|
|
18
|
-
/** Whether the result represents an error. */
|
|
19
|
-
isError: z.boolean().optional(),
|
|
20
|
-
/** Number of conversation turns. */
|
|
21
|
-
numTurns: z.number().int().nonnegative().optional(),
|
|
22
|
-
});
|
|
23
|
-
//# sourceMappingURL=sessionResult.js.map
|
|
1
|
+
"use strict";import{z as n}from"zod";export const SessionResultSchema=n.object({totalCostUsd:n.number().optional(),inputTokens:n.number().int().nonnegative().optional(),outputTokens:n.number().int().nonnegative().optional(),durationMs:n.number().nonnegative().optional(),cliSessionId:n.string().optional(),isError:n.boolean().optional(),numTurns:n.number().int().nonnegative().optional()}).passthrough();
|
package/dist/socketEvents.d.ts
CHANGED
|
@@ -18,7 +18,14 @@ export declare const SOCKET_EVENTS: Readonly<{
|
|
|
18
18
|
readonly LIST_SESSIONS: "list-sessions";
|
|
19
19
|
readonly UPDATE_METADATA: "update-metadata";
|
|
20
20
|
readonly UPDATE_STATE: "update-state";
|
|
21
|
+
readonly CONTEXT_USAGE_UPDATE: "context-usage-update";
|
|
21
22
|
readonly SESSION_ALIVE: "session-alive";
|
|
23
|
+
/** Read the short-lived daemon-reported state for one session after a web refresh. */
|
|
24
|
+
readonly GET_SESSION_RUNTIME_STATUS: "get-session-runtime-status";
|
|
25
|
+
/** Side-effect-free ownership check used before spawning a resumed CLI. */
|
|
26
|
+
readonly SESSION_RESUME_CHECK: "session-resume-check";
|
|
27
|
+
/** Explicit resume takeover: stop the old owner and reserve the replacement claim. */
|
|
28
|
+
readonly SESSION_RESUME_TAKEOVER: "session-resume-takeover";
|
|
22
29
|
readonly LIVENESS_HEARTBEAT: "liveness-heartbeat";
|
|
23
30
|
readonly PROVISION_SESSION_DEK: "provision-session-dek";
|
|
24
31
|
readonly RENAME_SESSION: "rename-session";
|
package/dist/socketEvents.js
CHANGED
|
@@ -1,55 +1 @@
|
|
|
1
|
-
export const SOCKET_EVENTS
|
|
2
|
-
// server → client
|
|
3
|
-
SESSION_STATUS: 'session-status',
|
|
4
|
-
PERMISSION_RESOLVED: 'permission-resolved',
|
|
5
|
-
CORE_UPDATE: 'core-update',
|
|
6
|
-
USAGE_REPORT: 'usage-report',
|
|
7
|
-
RPC_REQUEST: 'rpc-request',
|
|
8
|
-
HISTORY_SYNC_RESULT: 'history-sync-result',
|
|
9
|
-
BACKFILL_PROGRESS: 'backfill-progress',
|
|
10
|
-
MACHINE_STATUS_UPDATE: 'machine-status-update',
|
|
11
|
-
TELEMETRY_REPORT: 'telemetry-report',
|
|
12
|
-
UPDATE: 'update',
|
|
13
|
-
EPHEMERAL: 'ephemeral',
|
|
14
|
-
ENTERPRISE_ALERT: 'enterprise-alert',
|
|
15
|
-
ACTIVITY_PREFERENCES_CHANGED: 'activity-preferences-changed',
|
|
16
|
-
IMPROVEMENT_PREFERENCES_CHANGED: 'improvement-preferences-changed',
|
|
17
|
-
HISTORY_SESSION_BLOCKED: 'history-session-blocked',
|
|
18
|
-
// client → server: sessions
|
|
19
|
-
SESSION_CREATE: 'session-create',
|
|
20
|
-
LIST_SESSIONS: 'list-sessions',
|
|
21
|
-
UPDATE_METADATA: 'update-metadata',
|
|
22
|
-
UPDATE_STATE: 'update-state',
|
|
23
|
-
SESSION_ALIVE: 'session-alive',
|
|
24
|
-
LIVENESS_HEARTBEAT: 'liveness-heartbeat',
|
|
25
|
-
PROVISION_SESSION_DEK: 'provision-session-dek',
|
|
26
|
-
RENAME_SESSION: 'rename-session',
|
|
27
|
-
SESSION_END: 'session-end',
|
|
28
|
-
SESSION_DELETE: 'delete-session',
|
|
29
|
-
SESSION_SUMMARY: 'session-summary',
|
|
30
|
-
// client → server: messages
|
|
31
|
-
GET_MESSAGES: 'get-messages',
|
|
32
|
-
MESSAGE: 'message',
|
|
33
|
-
BATCH_MESSAGE: 'batch-message',
|
|
34
|
-
// client → server: RPC
|
|
35
|
-
RPC_REGISTER: 'rpc-register',
|
|
36
|
-
RPC_UNREGISTER: 'rpc-unregister',
|
|
37
|
-
RPC_CALL: 'rpc-call',
|
|
38
|
-
// client → server: visibility
|
|
39
|
-
CLIENT_VISIBILITY: 'client-visibility',
|
|
40
|
-
// client → server: machines
|
|
41
|
-
MACHINE_REGISTER: 'machine-register',
|
|
42
|
-
MACHINE_HEARTBEAT: 'machine-heartbeat',
|
|
43
|
-
// client → server: agent cache
|
|
44
|
-
AGENT_CACHE_UPDATED: 'agent-cache-updated',
|
|
45
|
-
// file relay (personal edition)
|
|
46
|
-
FILE_RELAY_CHUNK: 'file-relay-chunk',
|
|
47
|
-
FILE_RELAY_ACK: 'file-relay-ack',
|
|
48
|
-
FILE_RELAY_COMPLETE: 'file-relay-complete',
|
|
49
|
-
// client → server: history
|
|
50
|
-
GET_KNOWN_CLAUDE_SESSIONS: 'get-known-claude-sessions',
|
|
51
|
-
REGISTER_HISTORY_SESSIONS: 'register-history-sessions',
|
|
52
|
-
UPDATE_SYNC_STATUS: 'update-sync-status',
|
|
53
|
-
GET_HISTORY_BLOCKLIST: 'get-history-blocklist',
|
|
54
|
-
});
|
|
55
|
-
//# sourceMappingURL=socketEvents.js.map
|
|
1
|
+
"use strict";export const SOCKET_EVENTS=Object.freeze({SESSION_STATUS:"session-status",PERMISSION_RESOLVED:"permission-resolved",CORE_UPDATE:"core-update",USAGE_REPORT:"usage-report",RPC_REQUEST:"rpc-request",HISTORY_SYNC_RESULT:"history-sync-result",BACKFILL_PROGRESS:"backfill-progress",MACHINE_STATUS_UPDATE:"machine-status-update",TELEMETRY_REPORT:"telemetry-report",UPDATE:"update",EPHEMERAL:"ephemeral",ENTERPRISE_ALERT:"enterprise-alert",ACTIVITY_PREFERENCES_CHANGED:"activity-preferences-changed",IMPROVEMENT_PREFERENCES_CHANGED:"improvement-preferences-changed",HISTORY_SESSION_BLOCKED:"history-session-blocked",SESSION_CREATE:"session-create",LIST_SESSIONS:"list-sessions",UPDATE_METADATA:"update-metadata",UPDATE_STATE:"update-state",CONTEXT_USAGE_UPDATE:"context-usage-update",SESSION_ALIVE:"session-alive",GET_SESSION_RUNTIME_STATUS:"get-session-runtime-status",SESSION_RESUME_CHECK:"session-resume-check",SESSION_RESUME_TAKEOVER:"session-resume-takeover",LIVENESS_HEARTBEAT:"liveness-heartbeat",PROVISION_SESSION_DEK:"provision-session-dek",RENAME_SESSION:"rename-session",SESSION_END:"session-end",SESSION_DELETE:"delete-session",SESSION_SUMMARY:"session-summary",GET_MESSAGES:"get-messages",MESSAGE:"message",BATCH_MESSAGE:"batch-message",RPC_REGISTER:"rpc-register",RPC_UNREGISTER:"rpc-unregister",RPC_CALL:"rpc-call",CLIENT_VISIBILITY:"client-visibility",MACHINE_REGISTER:"machine-register",MACHINE_HEARTBEAT:"machine-heartbeat",AGENT_CACHE_UPDATED:"agent-cache-updated",FILE_RELAY_CHUNK:"file-relay-chunk",FILE_RELAY_ACK:"file-relay-ack",FILE_RELAY_COMPLETE:"file-relay-complete",GET_KNOWN_CLAUDE_SESSIONS:"get-known-claude-sessions",REGISTER_HISTORY_SESSIONS:"register-history-sessions",UPDATE_SYNC_STATUS:"update-sync-status",GET_HISTORY_BLOCKLIST:"get-history-blocklist"});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Acquisition-source metadata persisted on account creation.
|
|
4
|
+
*
|
|
5
|
+
* Written from a PUBLIC, UNAUTHENTICATED endpoint (`POST /v1/auth/verify`),
|
|
6
|
+
* so the client-supplied portion is fully attacker-controlled. This schema is
|
|
7
|
+
* the trust boundary: it whitelists exactly the attribution fields we store,
|
|
8
|
+
* caps each value's length, and DROPS everything else — including prototype-
|
|
9
|
+
* pollution keys (`__proto__`, `constructor`) and arbitrary attacker payload.
|
|
10
|
+
*
|
|
11
|
+
* `.strip()` is intentional and safe here: unknown keys are untrusted and must
|
|
12
|
+
* be discarded, not preserved (.passthrough) nor rejected (.strict) — a
|
|
13
|
+
* malformed metadata bag should never fail an otherwise-valid login.
|
|
14
|
+
*/
|
|
15
|
+
export declare const SourceMetadataSchema: z.ZodObject<{
|
|
16
|
+
userAgent: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
17
|
+
referer: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
18
|
+
language: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
19
|
+
utmSource: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
20
|
+
utmMedium: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
21
|
+
utmCampaign: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
22
|
+
utmTerm: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
23
|
+
utmContent: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
userAgent?: string | null | undefined;
|
|
26
|
+
language?: string | null | undefined;
|
|
27
|
+
referer?: string | null | undefined;
|
|
28
|
+
utmSource?: string | null | undefined;
|
|
29
|
+
utmMedium?: string | null | undefined;
|
|
30
|
+
utmCampaign?: string | null | undefined;
|
|
31
|
+
utmTerm?: string | null | undefined;
|
|
32
|
+
utmContent?: string | null | undefined;
|
|
33
|
+
}, {
|
|
34
|
+
userAgent?: unknown;
|
|
35
|
+
language?: unknown;
|
|
36
|
+
referer?: unknown;
|
|
37
|
+
utmSource?: unknown;
|
|
38
|
+
utmMedium?: unknown;
|
|
39
|
+
utmCampaign?: unknown;
|
|
40
|
+
utmTerm?: unknown;
|
|
41
|
+
utmContent?: unknown;
|
|
42
|
+
}>;
|
|
43
|
+
export type SourceMetadata = z.infer<typeof SourceMetadataSchema>;
|
|
44
|
+
//# sourceMappingURL=sourceMetadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{z as e}from"zod";const a=512,t=e.string().max(a).nullable().optional().catch(void 0);export const SourceMetadataSchema=e.object({userAgent:t,referer:t,language:t,utmSource:t,utmMedium:t,utmCampaign:t,utmTerm:t,utmContent:t}).strip();
|
package/dist/spawnError.d.ts
CHANGED
|
@@ -17,23 +17,27 @@ export declare const SpawnErrorSchema: z.ZodObject<{
|
|
|
17
17
|
platform: z.ZodEnum<["darwin", "linux", "win32"]>;
|
|
18
18
|
detectedVersion: z.ZodOptional<z.ZodString>;
|
|
19
19
|
minVersion: z.ZodOptional<z.ZodString>;
|
|
20
|
-
}, "
|
|
21
|
-
code: "agent-not-found"
|
|
22
|
-
message
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
detail:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
20
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
21
|
+
code: z.ZodEnum<["agent-not-found", "agent-version-too-old", "agent-spawn-failed", "agent-spawn-timeout"]>;
|
|
22
|
+
/** User-facing message, e.g. "Claude CLI not found". */
|
|
23
|
+
message: z.ZodString;
|
|
24
|
+
/** Actionable detail, e.g. "Install: npm i -g @anthropic-ai/claude-code". */
|
|
25
|
+
detail: z.ZodString;
|
|
26
|
+
agentType: z.ZodEnum<["claude", "copilot", "codex", "gemini", "opencode", "hermes", "openclaw", "custom"]>;
|
|
27
|
+
platform: z.ZodEnum<["darwin", "linux", "win32"]>;
|
|
28
|
+
detectedVersion: z.ZodOptional<z.ZodString>;
|
|
29
|
+
minVersion: z.ZodOptional<z.ZodString>;
|
|
30
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
31
|
+
code: z.ZodEnum<["agent-not-found", "agent-version-too-old", "agent-spawn-failed", "agent-spawn-timeout"]>;
|
|
32
|
+
/** User-facing message, e.g. "Claude CLI not found". */
|
|
33
|
+
message: z.ZodString;
|
|
34
|
+
/** Actionable detail, e.g. "Install: npm i -g @anthropic-ai/claude-code". */
|
|
35
|
+
detail: z.ZodString;
|
|
36
|
+
agentType: z.ZodEnum<["claude", "copilot", "codex", "gemini", "opencode", "hermes", "openclaw", "custom"]>;
|
|
37
|
+
platform: z.ZodEnum<["darwin", "linux", "win32"]>;
|
|
38
|
+
detectedVersion: z.ZodOptional<z.ZodString>;
|
|
39
|
+
minVersion: z.ZodOptional<z.ZodString>;
|
|
40
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
37
41
|
export type SpawnError = z.infer<typeof SpawnErrorSchema>;
|
|
38
42
|
/** Create a SpawnError object. */
|
|
39
43
|
export declare function createSpawnError(fields: SpawnError): SpawnError;
|
package/dist/spawnError.js
CHANGED
|
@@ -1,31 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Structured spawn errors for agent CLI processes.
|
|
3
|
-
*
|
|
4
|
-
* Replaces opaque stderr dumps with actionable, machine-readable errors.
|
|
5
|
-
* Lives in wire so the web UI can render structured error cards.
|
|
6
|
-
*/
|
|
7
|
-
import { z } from 'zod';
|
|
8
|
-
import { AgentTypeSchema } from './messageMeta.js';
|
|
9
|
-
import { PlatformSchema } from './machine.js';
|
|
10
|
-
export const SpawnErrorCodeSchema = z.enum([
|
|
11
|
-
'agent-not-found',
|
|
12
|
-
'agent-version-too-old',
|
|
13
|
-
'agent-spawn-failed',
|
|
14
|
-
'agent-spawn-timeout',
|
|
15
|
-
]);
|
|
16
|
-
export const SpawnErrorSchema = z.object({
|
|
17
|
-
code: SpawnErrorCodeSchema,
|
|
18
|
-
/** User-facing message, e.g. "Claude CLI not found". */
|
|
19
|
-
message: z.string(),
|
|
20
|
-
/** Actionable detail, e.g. "Install: npm i -g @anthropic-ai/claude-code". */
|
|
21
|
-
detail: z.string(),
|
|
22
|
-
agentType: AgentTypeSchema,
|
|
23
|
-
platform: PlatformSchema,
|
|
24
|
-
detectedVersion: z.string().optional(),
|
|
25
|
-
minVersion: z.string().optional(),
|
|
26
|
-
});
|
|
27
|
-
/** Create a SpawnError object. */
|
|
28
|
-
export function createSpawnError(fields) {
|
|
29
|
-
return SpawnErrorSchema.parse(fields);
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=spawnError.js.map
|
|
1
|
+
"use strict";import{z as e}from"zod";import{AgentTypeSchema as t}from"./messageMeta.js";import{PlatformSchema as r}from"./machine.js";export const SpawnErrorCodeSchema=e.enum(["agent-not-found","agent-version-too-old","agent-spawn-failed","agent-spawn-timeout"]),SpawnErrorSchema=e.object({code:SpawnErrorCodeSchema,message:e.string(),detail:e.string(),agentType:t,platform:r,detectedVersion:e.string().optional(),minVersion:e.string().optional()}).passthrough();export function createSpawnError(o){return SpawnErrorSchema.parse(o)}
|