@lota-sdk/shared 0.1.9 → 0.1.12
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/package.json +1 -21
- package/src/schemas/execution-plan.ts +499 -107
- package/src/schemas/recent-activity.ts +3 -8
- package/src/schemas/tools.ts +45 -65
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lota-sdk/shared",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -12,26 +12,6 @@
|
|
|
12
12
|
"bun": "./src/index.ts",
|
|
13
13
|
"import": "./src/index.ts",
|
|
14
14
|
"types": "./src/index.ts"
|
|
15
|
-
},
|
|
16
|
-
"./constants/*": {
|
|
17
|
-
"bun": "./src/constants/*.ts",
|
|
18
|
-
"import": "./src/constants/*.ts",
|
|
19
|
-
"types": "./src/constants/*.ts"
|
|
20
|
-
},
|
|
21
|
-
"./runtime/*": {
|
|
22
|
-
"bun": "./src/runtime/*.ts",
|
|
23
|
-
"import": "./src/runtime/*.ts",
|
|
24
|
-
"types": "./src/runtime/*.ts"
|
|
25
|
-
},
|
|
26
|
-
"./schemas/*": {
|
|
27
|
-
"bun": "./src/schemas/*.ts",
|
|
28
|
-
"import": "./src/schemas/*.ts",
|
|
29
|
-
"types": "./src/schemas/*.ts"
|
|
30
|
-
},
|
|
31
|
-
"./utils/*": {
|
|
32
|
-
"bun": "./src/utils/*.ts",
|
|
33
|
-
"import": "./src/utils/*.ts",
|
|
34
|
-
"types": "./src/utils/*.ts"
|
|
35
15
|
}
|
|
36
16
|
},
|
|
37
17
|
"scripts": {
|
|
@@ -2,101 +2,420 @@ import { z } from 'zod'
|
|
|
2
2
|
|
|
3
3
|
import { recordIdSchema, unixTimestampSchema } from './common'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
5
|
+
const planSchemaLiteralSchema = z.union([z.string(), z.number(), z.boolean(), z.null()])
|
|
6
|
+
|
|
7
|
+
export type PlanDataSchemaDefinition = {
|
|
8
|
+
type: 'string' | 'number' | 'boolean' | 'object' | 'array'
|
|
9
|
+
description?: string
|
|
10
|
+
nullable?: boolean
|
|
11
|
+
required?: boolean
|
|
12
|
+
enum?: Array<string | number | boolean | null>
|
|
13
|
+
properties?: Record<string, PlanDataSchemaDefinition>
|
|
14
|
+
items?: PlanDataSchemaDefinition
|
|
15
|
+
minItems?: number
|
|
16
|
+
maxItems?: number
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const PlanDataSchemaDefinitionSchema: z.ZodType<PlanDataSchemaDefinition> = z.lazy(() =>
|
|
20
|
+
z
|
|
21
|
+
.object({
|
|
22
|
+
type: z.enum(['string', 'number', 'boolean', 'object', 'array']),
|
|
23
|
+
description: z.string().optional(),
|
|
24
|
+
nullable: z.boolean().optional(),
|
|
25
|
+
required: z.boolean().optional(),
|
|
26
|
+
enum: z.array(planSchemaLiteralSchema).optional(),
|
|
27
|
+
properties: z.record(z.string(), PlanDataSchemaDefinitionSchema).optional(),
|
|
28
|
+
items: PlanDataSchemaDefinitionSchema.optional(),
|
|
29
|
+
minItems: z.number().int().nonnegative().optional(),
|
|
30
|
+
maxItems: z.number().int().nonnegative().optional(),
|
|
31
|
+
})
|
|
32
|
+
.strict(),
|
|
33
|
+
)
|
|
34
|
+
export type PlanDataSchema = z.infer<typeof PlanDataSchemaDefinitionSchema>
|
|
35
|
+
|
|
36
|
+
export const PlanSchemaRegistrySchema = z.record(z.string(), PlanDataSchemaDefinitionSchema)
|
|
37
|
+
export type PlanSchemaRegistry = z.infer<typeof PlanSchemaRegistrySchema>
|
|
38
|
+
|
|
39
|
+
export const PlanNodeTypeSchema = z
|
|
40
|
+
.enum([
|
|
41
|
+
'action',
|
|
42
|
+
'human-input',
|
|
43
|
+
'human-approval',
|
|
44
|
+
'human-review-edit',
|
|
45
|
+
'human-decision',
|
|
46
|
+
'switch',
|
|
47
|
+
'join',
|
|
48
|
+
'subgraph',
|
|
49
|
+
])
|
|
50
|
+
.meta({ id: 'PlanNodeTypeSchema' })
|
|
51
|
+
export type PlanNodeType = z.infer<typeof PlanNodeTypeSchema>
|
|
52
|
+
|
|
53
|
+
export const PlanNodeExecutorTypeSchema = z
|
|
54
|
+
.enum(['agent', 'plugin', 'user', 'system'])
|
|
55
|
+
.meta({ id: 'PlanNodeExecutorTypeSchema' })
|
|
56
|
+
export type PlanNodeExecutorType = z.infer<typeof PlanNodeExecutorTypeSchema>
|
|
57
|
+
|
|
58
|
+
export const PlanArtifactKindSchema = z
|
|
59
|
+
.enum(['json', 'markdown', 'file', 'external-ref', 'record'])
|
|
60
|
+
.meta({ id: 'PlanArtifactKindSchema' })
|
|
61
|
+
export type PlanArtifactKind = z.infer<typeof PlanArtifactKindSchema>
|
|
62
|
+
|
|
63
|
+
export const PlanCompletionCheckTypeSchema = z
|
|
64
|
+
.enum(['schema', 'assertion', 'llm-judge', 'human-approval', 'tool-check'])
|
|
65
|
+
.meta({ id: 'PlanCompletionCheckTypeSchema' })
|
|
66
|
+
export type PlanCompletionCheckType = z.infer<typeof PlanCompletionCheckTypeSchema>
|
|
67
|
+
|
|
68
|
+
export const PlanFailureClassSchema = z
|
|
69
|
+
.enum([
|
|
70
|
+
'schema_validation_failed',
|
|
71
|
+
'required_artifact_missing',
|
|
72
|
+
'tool_access_denied',
|
|
73
|
+
'external_system_unavailable',
|
|
74
|
+
'human_rejected',
|
|
75
|
+
'insufficient_context',
|
|
76
|
+
'policy_blocked',
|
|
77
|
+
'timeout_exceeded',
|
|
78
|
+
'non_recoverable_logic_error',
|
|
79
|
+
])
|
|
80
|
+
.meta({ id: 'PlanFailureClassSchema' })
|
|
81
|
+
export type PlanFailureClass = z.infer<typeof PlanFailureClassSchema>
|
|
82
|
+
|
|
83
|
+
export const PlanFailureTriggerSchema = z.union([PlanFailureClassSchema, z.string().trim().min(1)])
|
|
84
|
+
export type PlanFailureTrigger = z.infer<typeof PlanFailureTriggerSchema>
|
|
85
|
+
|
|
86
|
+
export const PlanFailureActionSchema = z
|
|
87
|
+
.enum(['retry', 'human-review', 'replan', 'abort'])
|
|
88
|
+
.meta({ id: 'PlanFailureActionSchema' })
|
|
89
|
+
export type PlanFailureAction = z.infer<typeof PlanFailureActionSchema>
|
|
90
|
+
|
|
91
|
+
export const PlanSpecStatusSchema = z.enum(['compiled', 'superseded']).meta({ id: 'PlanSpecStatusSchema' })
|
|
92
|
+
export type PlanSpecStatus = z.infer<typeof PlanSpecStatusSchema>
|
|
93
|
+
|
|
94
|
+
export const PlanRunStatusSchema = z
|
|
95
|
+
.enum(['running', 'awaiting-human', 'blocked', 'completed', 'failed', 'aborted'])
|
|
96
|
+
.meta({ id: 'PlanRunStatusSchema' })
|
|
97
|
+
export type PlanRunStatus = z.infer<typeof PlanRunStatusSchema>
|
|
98
|
+
|
|
99
|
+
export const PlanNodeRunStatusSchema = z
|
|
100
|
+
.enum(['pending', 'ready', 'running', 'awaiting-human', 'completed', 'partial', 'blocked', 'failed', 'skipped'])
|
|
101
|
+
.meta({ id: 'PlanNodeRunStatusSchema' })
|
|
102
|
+
export type PlanNodeRunStatus = z.infer<typeof PlanNodeRunStatusSchema>
|
|
103
|
+
|
|
104
|
+
export const PlanAttemptStatusSchema = z
|
|
105
|
+
.enum(['submitted', 'validated', 'completed', 'failed', 'rejected'])
|
|
106
|
+
.meta({ id: 'PlanAttemptStatusSchema' })
|
|
107
|
+
export type PlanAttemptStatus = z.infer<typeof PlanAttemptStatusSchema>
|
|
108
|
+
|
|
109
|
+
export const PlanValidationIssueSeveritySchema = z
|
|
110
|
+
.enum(['warning', 'blocking'])
|
|
111
|
+
.meta({ id: 'PlanValidationIssueSeveritySchema' })
|
|
112
|
+
export type PlanValidationIssueSeverity = z.infer<typeof PlanValidationIssueSeveritySchema>
|
|
113
|
+
|
|
114
|
+
export const PlanApprovalStatusSchema = z
|
|
115
|
+
.enum(['pending', 'approved', 'rejected', 'changes-requested'])
|
|
116
|
+
.meta({ id: 'PlanApprovalStatusSchema' })
|
|
117
|
+
export type PlanApprovalStatus = z.infer<typeof PlanApprovalStatusSchema>
|
|
118
|
+
|
|
119
|
+
export const PlanEventTypeSchema = z
|
|
31
120
|
.enum([
|
|
32
121
|
'plan-created',
|
|
33
122
|
'plan-replaced',
|
|
34
|
-
'
|
|
35
|
-
'
|
|
36
|
-
'
|
|
37
|
-
'
|
|
38
|
-
'
|
|
39
|
-
'
|
|
40
|
-
'
|
|
41
|
-
'
|
|
42
|
-
'
|
|
123
|
+
'run-status-changed',
|
|
124
|
+
'node-ready',
|
|
125
|
+
'node-running',
|
|
126
|
+
'node-awaiting-human',
|
|
127
|
+
'node-completed',
|
|
128
|
+
'node-partial',
|
|
129
|
+
'node-blocked',
|
|
130
|
+
'node-failed',
|
|
131
|
+
'node-skipped',
|
|
132
|
+
'node-auto-completed',
|
|
133
|
+
'approval-requested',
|
|
134
|
+
'approval-resolved',
|
|
135
|
+
'checkpoint-saved',
|
|
136
|
+
'run-resumed',
|
|
137
|
+
'validation-reported',
|
|
43
138
|
])
|
|
44
|
-
.meta({ id: '
|
|
45
|
-
export type
|
|
139
|
+
.meta({ id: 'PlanEventTypeSchema' })
|
|
140
|
+
export type PlanEventType = z.infer<typeof PlanEventTypeSchema>
|
|
141
|
+
|
|
142
|
+
export const PlanNodeOwnerSchema = z
|
|
143
|
+
.object({ executorType: PlanNodeExecutorTypeSchema, ref: z.string().trim().min(1).max(200) })
|
|
144
|
+
.strict()
|
|
145
|
+
export type PlanNodeOwner = z.infer<typeof PlanNodeOwnerSchema>
|
|
146
|
+
|
|
147
|
+
export const PlanArtifactSpecSchema = z
|
|
148
|
+
.object({
|
|
149
|
+
name: z.string().trim().min(1).max(200),
|
|
150
|
+
kind: PlanArtifactKindSchema,
|
|
151
|
+
required: z.boolean().default(true),
|
|
152
|
+
schemaRef: z.string().trim().min(1).max(200).optional(),
|
|
153
|
+
description: z.string().trim().min(1).max(1000),
|
|
154
|
+
})
|
|
155
|
+
.strict()
|
|
156
|
+
export type PlanArtifactSpec = z.infer<typeof PlanArtifactSpecSchema>
|
|
157
|
+
|
|
158
|
+
export const PlanCompletionCheckSchema = z
|
|
159
|
+
.object({
|
|
160
|
+
type: PlanCompletionCheckTypeSchema,
|
|
161
|
+
config: z.record(z.string(), z.unknown()).default({}),
|
|
162
|
+
blocking: z.boolean().default(true),
|
|
163
|
+
description: z.string().trim().min(1).max(1000),
|
|
164
|
+
})
|
|
165
|
+
.strict()
|
|
166
|
+
export type PlanCompletionCheck = z.infer<typeof PlanCompletionCheckSchema>
|
|
167
|
+
|
|
168
|
+
export const PlanFailureRuleSchema = z
|
|
169
|
+
.object({ on: PlanFailureTriggerSchema, action: PlanFailureActionSchema, note: z.string().trim().min(1).max(1000) })
|
|
170
|
+
.strict()
|
|
171
|
+
export type PlanFailureRule = z.infer<typeof PlanFailureRuleSchema>
|
|
172
|
+
|
|
173
|
+
export const PlanRetryPolicySchema = z
|
|
174
|
+
.object({ maxAttempts: z.number().int().min(0).default(0), retryOn: z.array(PlanFailureTriggerSchema).default([]) })
|
|
175
|
+
.strict()
|
|
176
|
+
export type PlanRetryPolicy = z.infer<typeof PlanRetryPolicySchema>
|
|
177
|
+
|
|
178
|
+
export const PlanToolPolicySchema = z
|
|
179
|
+
.object({
|
|
180
|
+
allow: z.array(z.string().trim().min(1).max(200)).default([]),
|
|
181
|
+
deny: z.array(z.string().trim().min(1).max(200)).default([]),
|
|
182
|
+
})
|
|
183
|
+
.strict()
|
|
184
|
+
export type PlanToolPolicy = z.infer<typeof PlanToolPolicySchema>
|
|
46
185
|
|
|
47
|
-
export const
|
|
48
|
-
|
|
186
|
+
export const PlanContextPolicySchema = z
|
|
187
|
+
.object({
|
|
188
|
+
retrievalScopes: z.array(z.string().trim().min(1).max(200)).default([]),
|
|
189
|
+
attachmentPolicy: z.enum(['none', 'referenced-only', 'all-visible']).default('referenced-only'),
|
|
190
|
+
webPolicy: z.enum(['forbidden', 'allowed', 'required-fresh']).default('allowed'),
|
|
191
|
+
})
|
|
192
|
+
.strict()
|
|
193
|
+
export type PlanContextPolicy = z.infer<typeof PlanContextPolicySchema>
|
|
49
194
|
|
|
50
|
-
|
|
195
|
+
const planStructuredPayloadSchema = z.union([z.record(z.string(), z.unknown()), z.array(z.unknown())])
|
|
196
|
+
|
|
197
|
+
export const PlanNodeSpecSchema = z
|
|
198
|
+
.object({
|
|
199
|
+
id: z.string().trim().min(1).max(200),
|
|
200
|
+
type: PlanNodeTypeSchema,
|
|
201
|
+
label: z.string().trim().min(1).max(300),
|
|
202
|
+
owner: PlanNodeOwnerSchema,
|
|
203
|
+
objective: z.string().trim().min(1).max(2000),
|
|
204
|
+
instructions: z.string().trim().min(1).max(4000),
|
|
205
|
+
inputSchemaRef: z.string().trim().min(1).max(200).optional(),
|
|
206
|
+
outputSchemaRef: z.string().trim().min(1).max(200).optional(),
|
|
207
|
+
deliverables: z.array(PlanArtifactSpecSchema).default([]),
|
|
208
|
+
successCriteria: z.array(z.string().trim().min(1).max(1000)).default([]),
|
|
209
|
+
completionChecks: z.array(PlanCompletionCheckSchema).default([]),
|
|
210
|
+
retryPolicy: PlanRetryPolicySchema.default({ maxAttempts: 0, retryOn: [] }),
|
|
211
|
+
failurePolicy: z.array(PlanFailureRuleSchema).default([]),
|
|
212
|
+
timeoutMs: z.number().int().positive().optional(),
|
|
213
|
+
toolPolicy: PlanToolPolicySchema.default({ allow: [], deny: [] }),
|
|
214
|
+
contextPolicy: PlanContextPolicySchema.default({
|
|
215
|
+
retrievalScopes: [],
|
|
216
|
+
attachmentPolicy: 'referenced-only',
|
|
217
|
+
webPolicy: 'allowed',
|
|
218
|
+
}),
|
|
219
|
+
})
|
|
220
|
+
.strict()
|
|
221
|
+
export type PlanNodeSpec = z.infer<typeof PlanNodeSpecSchema>
|
|
222
|
+
|
|
223
|
+
export const PlanEdgeSpecSchema = z
|
|
224
|
+
.object({
|
|
225
|
+
id: z.string().trim().min(1).max(200),
|
|
226
|
+
source: z.string().trim().min(1).max(200),
|
|
227
|
+
target: z.string().trim().min(1).max(200),
|
|
228
|
+
when: z.string().trim().min(1).max(500).optional(),
|
|
229
|
+
map: z.record(z.string(), z.string()).default({}),
|
|
230
|
+
})
|
|
231
|
+
.strict()
|
|
232
|
+
export type PlanEdgeSpec = z.infer<typeof PlanEdgeSpecSchema>
|
|
233
|
+
|
|
234
|
+
export const PlanDraftSchema = z
|
|
235
|
+
.object({
|
|
236
|
+
title: z.string().trim().min(1).max(200),
|
|
237
|
+
objective: z.string().trim().min(1).max(2000),
|
|
238
|
+
schemas: PlanSchemaRegistrySchema.default({}),
|
|
239
|
+
nodes: z.array(PlanNodeSpecSchema).min(1).max(32),
|
|
240
|
+
edges: z.array(PlanEdgeSpecSchema).default([]),
|
|
241
|
+
entryNodeIds: z.array(z.string().trim().min(1).max(200)).min(1).optional(),
|
|
242
|
+
})
|
|
243
|
+
.strict()
|
|
244
|
+
export type PlanDraft = z.infer<typeof PlanDraftSchema>
|
|
245
|
+
|
|
246
|
+
export const PlanSpecSchema = z.object({
|
|
51
247
|
id: recordIdSchema,
|
|
52
248
|
organizationId: recordIdSchema,
|
|
53
249
|
workstreamId: recordIdSchema,
|
|
54
250
|
title: z.string(),
|
|
55
251
|
objective: z.string(),
|
|
56
|
-
|
|
252
|
+
version: z.number().int().positive(),
|
|
253
|
+
status: PlanSpecStatusSchema,
|
|
57
254
|
leadAgentId: z.string(),
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
255
|
+
schemaRegistry: PlanSchemaRegistrySchema,
|
|
256
|
+
edges: z.array(PlanEdgeSpecSchema),
|
|
257
|
+
entryNodeIds: z.array(z.string()),
|
|
258
|
+
replacedSpecId: recordIdSchema.optional(),
|
|
259
|
+
createdAt: unixTimestampSchema,
|
|
260
|
+
updatedAt: unixTimestampSchema.optional(),
|
|
261
|
+
compiledAt: unixTimestampSchema.optional(),
|
|
262
|
+
})
|
|
263
|
+
export type PlanSpecRecord = z.infer<typeof PlanSpecSchema>
|
|
264
|
+
|
|
265
|
+
export const PlanNodeSpecRecordSchema = z.object({
|
|
266
|
+
id: recordIdSchema,
|
|
267
|
+
planSpecId: recordIdSchema,
|
|
268
|
+
nodeId: z.string(),
|
|
269
|
+
position: z.number().int().nonnegative(),
|
|
270
|
+
type: PlanNodeTypeSchema,
|
|
271
|
+
label: z.string(),
|
|
272
|
+
owner: PlanNodeOwnerSchema,
|
|
273
|
+
objective: z.string(),
|
|
274
|
+
instructions: z.string(),
|
|
275
|
+
inputSchemaRef: z.string().optional(),
|
|
276
|
+
outputSchemaRef: z.string().optional(),
|
|
277
|
+
deliverables: z.array(PlanArtifactSpecSchema),
|
|
278
|
+
successCriteria: z.array(z.string()),
|
|
279
|
+
completionChecks: z.array(PlanCompletionCheckSchema),
|
|
280
|
+
retryPolicy: PlanRetryPolicySchema,
|
|
281
|
+
failurePolicy: z.array(PlanFailureRuleSchema),
|
|
282
|
+
timeoutMs: z.number().int().positive().optional(),
|
|
283
|
+
toolPolicy: PlanToolPolicySchema,
|
|
284
|
+
contextPolicy: PlanContextPolicySchema,
|
|
285
|
+
upstreamNodeIds: z.array(z.string()).default([]),
|
|
286
|
+
downstreamNodeIds: z.array(z.string()).default([]),
|
|
62
287
|
createdAt: unixTimestampSchema,
|
|
63
288
|
updatedAt: unixTimestampSchema.optional(),
|
|
64
|
-
startedAt: unixTimestampSchema.optional(),
|
|
65
|
-
completedAt: unixTimestampSchema.optional(),
|
|
66
289
|
})
|
|
67
|
-
export type
|
|
290
|
+
export type PlanNodeSpecRecord = z.infer<typeof PlanNodeSpecRecordSchema>
|
|
68
291
|
|
|
69
|
-
export const
|
|
292
|
+
export const PlanRunSchema = z.object({
|
|
70
293
|
id: recordIdSchema,
|
|
71
|
-
|
|
294
|
+
planSpecId: recordIdSchema,
|
|
72
295
|
organizationId: recordIdSchema,
|
|
73
296
|
workstreamId: recordIdSchema,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
input: ExecutionPlanTaskInputSchema.optional(),
|
|
83
|
-
outputSummary: z.string().optional(),
|
|
84
|
-
blockedReason: z.string().optional(),
|
|
85
|
-
externalRef: z.string().optional(),
|
|
86
|
-
retryCount: z.number().int().nonnegative(),
|
|
87
|
-
idempotencyKey: z.string(),
|
|
297
|
+
leadAgentId: z.string(),
|
|
298
|
+
status: PlanRunStatusSchema,
|
|
299
|
+
currentNodeId: z.string().optional(),
|
|
300
|
+
waitingNodeId: z.string().optional(),
|
|
301
|
+
readyNodeIds: z.array(z.string()).default([]),
|
|
302
|
+
failureCount: z.number().int().nonnegative(),
|
|
303
|
+
replacedRunId: recordIdSchema.optional(),
|
|
304
|
+
lastCheckpointId: recordIdSchema.optional(),
|
|
88
305
|
createdAt: unixTimestampSchema,
|
|
89
306
|
updatedAt: unixTimestampSchema.optional(),
|
|
90
307
|
startedAt: unixTimestampSchema.optional(),
|
|
91
308
|
completedAt: unixTimestampSchema.optional(),
|
|
92
309
|
})
|
|
93
|
-
export type
|
|
310
|
+
export type PlanRunRecord = z.infer<typeof PlanRunSchema>
|
|
311
|
+
|
|
312
|
+
export const PlanNodeRunSchema = z.object({
|
|
313
|
+
id: recordIdSchema,
|
|
314
|
+
runId: recordIdSchema,
|
|
315
|
+
planSpecId: recordIdSchema,
|
|
316
|
+
nodeId: z.string(),
|
|
317
|
+
status: PlanNodeRunStatusSchema,
|
|
318
|
+
attemptCount: z.number().int().nonnegative(),
|
|
319
|
+
retryCount: z.number().int().nonnegative(),
|
|
320
|
+
resolvedInput: z.record(z.string(), z.unknown()).optional(),
|
|
321
|
+
latestStructuredOutput: z.record(z.string(), z.unknown()).optional(),
|
|
322
|
+
latestNotes: z.string().optional(),
|
|
323
|
+
latestAttemptId: recordIdSchema.optional(),
|
|
324
|
+
blockedReason: z.string().optional(),
|
|
325
|
+
failureClass: PlanFailureClassSchema.optional(),
|
|
326
|
+
readyAt: unixTimestampSchema.optional(),
|
|
327
|
+
startedAt: unixTimestampSchema.optional(),
|
|
328
|
+
completedAt: unixTimestampSchema.optional(),
|
|
329
|
+
createdAt: unixTimestampSchema,
|
|
330
|
+
updatedAt: unixTimestampSchema.optional(),
|
|
331
|
+
})
|
|
332
|
+
export type PlanNodeRunRecord = z.infer<typeof PlanNodeRunSchema>
|
|
333
|
+
|
|
334
|
+
export const PlanNodeAttemptSchema = z.object({
|
|
335
|
+
id: recordIdSchema,
|
|
336
|
+
runId: recordIdSchema,
|
|
337
|
+
nodeRunId: recordIdSchema,
|
|
338
|
+
nodeId: z.string(),
|
|
339
|
+
emittedBy: z.string(),
|
|
340
|
+
status: PlanAttemptStatusSchema,
|
|
341
|
+
structuredOutput: z.record(z.string(), z.unknown()).optional(),
|
|
342
|
+
notes: z.string().optional(),
|
|
343
|
+
validationIssueIds: z.array(recordIdSchema).default([]),
|
|
344
|
+
failureClass: PlanFailureClassSchema.optional(),
|
|
345
|
+
createdAt: unixTimestampSchema,
|
|
346
|
+
})
|
|
347
|
+
export type PlanNodeAttemptRecord = z.infer<typeof PlanNodeAttemptSchema>
|
|
348
|
+
|
|
349
|
+
export const PlanArtifactSchema = z.object({
|
|
350
|
+
id: recordIdSchema,
|
|
351
|
+
runId: recordIdSchema,
|
|
352
|
+
nodeId: z.string(),
|
|
353
|
+
attemptId: recordIdSchema,
|
|
354
|
+
name: z.string(),
|
|
355
|
+
kind: PlanArtifactKindSchema,
|
|
356
|
+
pointer: z.string(),
|
|
357
|
+
schemaRef: z.string().optional(),
|
|
358
|
+
description: z.string().optional(),
|
|
359
|
+
payload: planStructuredPayloadSchema.optional(),
|
|
360
|
+
createdAt: unixTimestampSchema,
|
|
361
|
+
})
|
|
362
|
+
export type PlanArtifactRecord = z.infer<typeof PlanArtifactSchema>
|
|
363
|
+
|
|
364
|
+
export const PlanValidationIssueSchema = z.object({
|
|
365
|
+
id: recordIdSchema,
|
|
366
|
+
planSpecId: recordIdSchema.optional(),
|
|
367
|
+
runId: recordIdSchema.optional(),
|
|
368
|
+
nodeId: z.string().optional(),
|
|
369
|
+
attemptId: recordIdSchema.optional(),
|
|
370
|
+
severity: PlanValidationIssueSeveritySchema,
|
|
371
|
+
code: z.string(),
|
|
372
|
+
message: z.string(),
|
|
373
|
+
detail: z.record(z.string(), z.unknown()).optional(),
|
|
374
|
+
createdAt: unixTimestampSchema,
|
|
375
|
+
})
|
|
376
|
+
export type PlanValidationIssueRecord = z.infer<typeof PlanValidationIssueSchema>
|
|
377
|
+
|
|
378
|
+
export const PlanCheckpointSchema = z.object({
|
|
379
|
+
id: recordIdSchema,
|
|
380
|
+
runId: recordIdSchema,
|
|
381
|
+
sequence: z.number().int().positive(),
|
|
382
|
+
runStatus: PlanRunStatusSchema,
|
|
383
|
+
readyNodeIds: z.array(z.string()).default([]),
|
|
384
|
+
activeNodeIds: z.array(z.string()).default([]),
|
|
385
|
+
artifactIds: z.array(recordIdSchema).default([]),
|
|
386
|
+
lastCompletedNodeIds: z.array(z.string()).default([]),
|
|
387
|
+
snapshot: z.record(z.string(), z.unknown()),
|
|
388
|
+
createdAt: unixTimestampSchema,
|
|
389
|
+
})
|
|
390
|
+
export type PlanCheckpointRecord = z.infer<typeof PlanCheckpointSchema>
|
|
391
|
+
|
|
392
|
+
export const PlanApprovalSchema = z.object({
|
|
393
|
+
id: recordIdSchema,
|
|
394
|
+
runId: recordIdSchema,
|
|
395
|
+
nodeId: z.string(),
|
|
396
|
+
nodeRunId: recordIdSchema,
|
|
397
|
+
status: PlanApprovalStatusSchema,
|
|
398
|
+
presented: z.record(z.string(), z.unknown()).optional(),
|
|
399
|
+
response: z.record(z.string(), z.unknown()).optional(),
|
|
400
|
+
requestedBy: z.string(),
|
|
401
|
+
respondedBy: z.string().optional(),
|
|
402
|
+
approvalMessageId: z.string().optional(),
|
|
403
|
+
comments: z.string().optional(),
|
|
404
|
+
requiredEdits: z.array(z.string()).default([]),
|
|
405
|
+
createdAt: unixTimestampSchema,
|
|
406
|
+
updatedAt: unixTimestampSchema.optional(),
|
|
407
|
+
respondedAt: unixTimestampSchema.optional(),
|
|
408
|
+
})
|
|
409
|
+
export type PlanApprovalRecord = z.infer<typeof PlanApprovalSchema>
|
|
94
410
|
|
|
95
|
-
export const
|
|
411
|
+
export const PlanEventSchema = z.object({
|
|
96
412
|
id: recordIdSchema,
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
413
|
+
planSpecId: recordIdSchema,
|
|
414
|
+
runId: recordIdSchema,
|
|
415
|
+
nodeId: z.string().optional(),
|
|
416
|
+
attemptId: recordIdSchema.optional(),
|
|
417
|
+
approvalId: recordIdSchema.optional(),
|
|
418
|
+
eventType: PlanEventTypeSchema,
|
|
100
419
|
fromStatus: z.string().optional(),
|
|
101
420
|
toStatus: z.string().optional(),
|
|
102
421
|
message: z.string(),
|
|
@@ -104,33 +423,102 @@ export const ExecutionPlanEventSchema = z.object({
|
|
|
104
423
|
emittedBy: z.string(),
|
|
105
424
|
createdAt: unixTimestampSchema,
|
|
106
425
|
})
|
|
107
|
-
export type
|
|
426
|
+
export type PlanEventRecord = z.infer<typeof PlanEventSchema>
|
|
108
427
|
|
|
109
|
-
export const
|
|
428
|
+
export const SerializablePlanNodeSchema = z.object({
|
|
110
429
|
id: z.string(),
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
430
|
+
type: PlanNodeTypeSchema,
|
|
431
|
+
label: z.string(),
|
|
432
|
+
owner: PlanNodeOwnerSchema,
|
|
433
|
+
objective: z.string(),
|
|
434
|
+
instructions: z.string(),
|
|
435
|
+
inputSchemaRef: z.string().nullish(),
|
|
436
|
+
outputSchemaRef: z.string().nullish(),
|
|
437
|
+
deliverables: z.array(PlanArtifactSpecSchema),
|
|
438
|
+
successCriteria: z.array(z.string()),
|
|
439
|
+
completionChecks: z.array(PlanCompletionCheckSchema),
|
|
440
|
+
retryPolicy: PlanRetryPolicySchema,
|
|
441
|
+
failurePolicy: z.array(PlanFailureRuleSchema),
|
|
442
|
+
timeoutMs: z.number().int().positive().nullish(),
|
|
443
|
+
toolPolicy: PlanToolPolicySchema,
|
|
444
|
+
contextPolicy: PlanContextPolicySchema,
|
|
445
|
+
status: PlanNodeRunStatusSchema,
|
|
446
|
+
attemptCount: z.number().int().nonnegative(),
|
|
123
447
|
retryCount: z.number().int().nonnegative(),
|
|
124
|
-
|
|
448
|
+
resolvedInput: z.record(z.string(), z.unknown()).nullish(),
|
|
449
|
+
latestStructuredOutput: z.record(z.string(), z.unknown()).nullish(),
|
|
450
|
+
latestNotes: z.string().nullish(),
|
|
451
|
+
blockedReason: z.string().nullish(),
|
|
452
|
+
failureClass: PlanFailureClassSchema.nullish(),
|
|
453
|
+
upstreamNodeIds: z.array(z.string()),
|
|
454
|
+
downstreamNodeIds: z.array(z.string()),
|
|
455
|
+
readyAt: z.iso.datetime().nullish(),
|
|
125
456
|
startedAt: z.iso.datetime().nullish(),
|
|
126
457
|
completedAt: z.iso.datetime().nullish(),
|
|
127
458
|
})
|
|
128
|
-
export type
|
|
459
|
+
export type SerializablePlanNode = z.infer<typeof SerializablePlanNodeSchema>
|
|
460
|
+
|
|
461
|
+
export const SerializablePlanArtifactSchema = z.object({
|
|
462
|
+
id: z.string(),
|
|
463
|
+
nodeId: z.string(),
|
|
464
|
+
attemptId: z.string(),
|
|
465
|
+
name: z.string(),
|
|
466
|
+
kind: PlanArtifactKindSchema,
|
|
467
|
+
pointer: z.string(),
|
|
468
|
+
schemaRef: z.string().nullish(),
|
|
469
|
+
description: z.string().nullish(),
|
|
470
|
+
payload: planStructuredPayloadSchema.nullish(),
|
|
471
|
+
createdAt: z.iso.datetime(),
|
|
472
|
+
})
|
|
473
|
+
export type SerializablePlanArtifact = z.infer<typeof SerializablePlanArtifactSchema>
|
|
474
|
+
|
|
475
|
+
export const SerializablePlanValidationIssueSchema = z.object({
|
|
476
|
+
id: z.string(),
|
|
477
|
+
nodeId: z.string().nullish(),
|
|
478
|
+
attemptId: z.string().nullish(),
|
|
479
|
+
severity: PlanValidationIssueSeveritySchema,
|
|
480
|
+
code: z.string(),
|
|
481
|
+
message: z.string(),
|
|
482
|
+
detail: z.record(z.string(), z.unknown()).nullish(),
|
|
483
|
+
createdAt: z.iso.datetime(),
|
|
484
|
+
})
|
|
485
|
+
export type SerializablePlanValidationIssue = z.infer<typeof SerializablePlanValidationIssueSchema>
|
|
129
486
|
|
|
130
|
-
export const
|
|
487
|
+
export const SerializablePlanApprovalSchema = z.object({
|
|
131
488
|
id: z.string(),
|
|
132
|
-
|
|
133
|
-
|
|
489
|
+
nodeId: z.string(),
|
|
490
|
+
status: PlanApprovalStatusSchema,
|
|
491
|
+
presented: z.record(z.string(), z.unknown()).nullish(),
|
|
492
|
+
response: z.record(z.string(), z.unknown()).nullish(),
|
|
493
|
+
requestedBy: z.string(),
|
|
494
|
+
respondedBy: z.string().nullish(),
|
|
495
|
+
approvalMessageId: z.string().nullish(),
|
|
496
|
+
comments: z.string().nullish(),
|
|
497
|
+
requiredEdits: z.array(z.string()),
|
|
498
|
+
createdAt: z.iso.datetime(),
|
|
499
|
+
respondedAt: z.iso.datetime().nullish(),
|
|
500
|
+
})
|
|
501
|
+
export type SerializablePlanApproval = z.infer<typeof SerializablePlanApprovalSchema>
|
|
502
|
+
|
|
503
|
+
export const SerializablePlanCheckpointSchema = z.object({
|
|
504
|
+
id: z.string(),
|
|
505
|
+
sequence: z.number().int().positive(),
|
|
506
|
+
runStatus: PlanRunStatusSchema,
|
|
507
|
+
readyNodeIds: z.array(z.string()),
|
|
508
|
+
activeNodeIds: z.array(z.string()),
|
|
509
|
+
artifactIds: z.array(z.string()),
|
|
510
|
+
lastCompletedNodeIds: z.array(z.string()),
|
|
511
|
+
snapshot: z.record(z.string(), z.unknown()),
|
|
512
|
+
createdAt: z.iso.datetime(),
|
|
513
|
+
})
|
|
514
|
+
export type SerializablePlanCheckpoint = z.infer<typeof SerializablePlanCheckpointSchema>
|
|
515
|
+
|
|
516
|
+
export const SerializablePlanEventSchema = z.object({
|
|
517
|
+
id: z.string(),
|
|
518
|
+
nodeId: z.string().nullish(),
|
|
519
|
+
attemptId: z.string().nullish(),
|
|
520
|
+
approvalId: z.string().nullish(),
|
|
521
|
+
eventType: PlanEventTypeSchema,
|
|
134
522
|
fromStatus: z.string().nullish(),
|
|
135
523
|
toStatus: z.string().nullish(),
|
|
136
524
|
message: z.string(),
|
|
@@ -138,22 +526,16 @@ export const SerializableExecutionPlanEventSchema = z.object({
|
|
|
138
526
|
emittedBy: z.string(),
|
|
139
527
|
createdAt: z.iso.datetime(),
|
|
140
528
|
})
|
|
141
|
-
export type
|
|
142
|
-
|
|
143
|
-
export const SerializableExecutionPlanCarriedTaskSchema = z.object({
|
|
144
|
-
planId: z.string(),
|
|
145
|
-
taskId: z.string(),
|
|
146
|
-
title: z.string(),
|
|
147
|
-
resultStatus: ExecutionPlanTaskResultStatusSchema,
|
|
148
|
-
outputSummary: z.string(),
|
|
149
|
-
})
|
|
150
|
-
export type SerializableExecutionPlanCarriedTask = z.infer<typeof SerializableExecutionPlanCarriedTaskSchema>
|
|
529
|
+
export type SerializablePlanEvent = z.infer<typeof SerializablePlanEventSchema>
|
|
151
530
|
|
|
152
531
|
export const SerializableExecutionPlanProgressSchema = z.object({
|
|
153
532
|
total: z.number().int().nonnegative(),
|
|
154
533
|
pending: z.number().int().nonnegative(),
|
|
155
|
-
|
|
534
|
+
ready: z.number().int().nonnegative(),
|
|
535
|
+
running: z.number().int().nonnegative(),
|
|
536
|
+
awaitingHuman: z.number().int().nonnegative(),
|
|
156
537
|
completed: z.number().int().nonnegative(),
|
|
538
|
+
partial: z.number().int().nonnegative(),
|
|
157
539
|
blocked: z.number().int().nonnegative(),
|
|
158
540
|
failed: z.number().int().nonnegative(),
|
|
159
541
|
skipped: z.number().int().nonnegative(),
|
|
@@ -162,22 +544,32 @@ export const SerializableExecutionPlanProgressSchema = z.object({
|
|
|
162
544
|
export type SerializableExecutionPlanProgress = z.infer<typeof SerializableExecutionPlanProgressSchema>
|
|
163
545
|
|
|
164
546
|
export const SerializableExecutionPlanSchema = z.object({
|
|
165
|
-
|
|
547
|
+
specId: z.string(),
|
|
548
|
+
runId: z.string(),
|
|
166
549
|
workstreamId: z.string(),
|
|
167
550
|
organizationId: z.string(),
|
|
168
551
|
title: z.string(),
|
|
169
552
|
objective: z.string(),
|
|
170
|
-
|
|
553
|
+
version: z.number().int().positive(),
|
|
554
|
+
status: PlanRunStatusSchema,
|
|
171
555
|
leadAgentId: z.string(),
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
556
|
+
schemaRegistry: PlanSchemaRegistrySchema,
|
|
557
|
+
entryNodeIds: z.array(z.string()),
|
|
558
|
+
edges: z.array(PlanEdgeSpecSchema),
|
|
559
|
+
activeNodeIds: z.array(z.string()),
|
|
560
|
+
readyNodeIds: z.array(z.string()),
|
|
561
|
+
waitingNodeId: z.string().nullish(),
|
|
562
|
+
replacedRunId: z.string().nullish(),
|
|
175
563
|
failureCount: z.number().int().nonnegative(),
|
|
176
564
|
startedAt: z.iso.datetime().nullish(),
|
|
177
565
|
completedAt: z.iso.datetime().nullish(),
|
|
178
566
|
progress: SerializableExecutionPlanProgressSchema,
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
567
|
+
nodes: z.array(SerializablePlanNodeSchema),
|
|
568
|
+
artifacts: z.array(SerializablePlanArtifactSchema),
|
|
569
|
+
lineageArtifacts: z.array(SerializablePlanArtifactSchema),
|
|
570
|
+
validationIssues: z.array(SerializablePlanValidationIssueSchema),
|
|
571
|
+
approvals: z.array(SerializablePlanApprovalSchema),
|
|
572
|
+
latestCheckpoint: SerializablePlanCheckpointSchema.nullish(),
|
|
573
|
+
recentEvents: z.array(SerializablePlanEventSchema),
|
|
182
574
|
})
|
|
183
575
|
export type SerializableExecutionPlan = z.infer<typeof SerializableExecutionPlanSchema>
|
|
@@ -9,19 +9,14 @@ export const RecentActivityEventKindSchema = z.enum([
|
|
|
9
9
|
|
|
10
10
|
export const RecentActivityTargetKindSchema = z.enum(['workstream', 'document', 'website-intelligence', 'chat-turn'])
|
|
11
11
|
|
|
12
|
-
export const RecentActivityTitleSourceSchema = z.enum(['system', '
|
|
12
|
+
export const RecentActivityTitleSourceSchema = z.enum(['system', 'agent'])
|
|
13
13
|
|
|
14
14
|
export const RecentActivitySourceSchema = z.enum(['client', 'system'])
|
|
15
15
|
|
|
16
|
-
export const RecentActivityDeepLinkSearchSchema = z.
|
|
17
|
-
chat: z.string().optional(),
|
|
18
|
-
agent: z.string().optional(),
|
|
19
|
-
tab: z.string().optional(),
|
|
20
|
-
docId: z.string().optional(),
|
|
21
|
-
})
|
|
16
|
+
export const RecentActivityDeepLinkSearchSchema = z.record(z.string(), z.string())
|
|
22
17
|
|
|
23
18
|
export const RecentActivityDeepLinkSchema = z.object({
|
|
24
|
-
route: z.
|
|
19
|
+
route: z.string().trim().min(1),
|
|
25
20
|
search: RecentActivityDeepLinkSearchSchema.default({}),
|
|
26
21
|
})
|
|
27
22
|
|
package/src/schemas/tools.ts
CHANGED
|
@@ -3,10 +3,9 @@ import { z } from 'zod'
|
|
|
3
3
|
import { baseChatMessageSchema } from './chat-api'
|
|
4
4
|
import type { AnyChatMessage } from './chat-message'
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
ExecutionPlanTaskStatusSchema,
|
|
6
|
+
PlanArtifactKindSchema,
|
|
7
|
+
PlanDraftSchema,
|
|
8
|
+
PlanRunStatusSchema,
|
|
10
9
|
SerializableExecutionPlanSchema,
|
|
11
10
|
} from './execution-plan'
|
|
12
11
|
|
|
@@ -15,9 +14,9 @@ export const CONSULT_SPECIALIST_TOOL_NAME = 'consultSpecialist' as const
|
|
|
15
14
|
export const CONSULT_TEAM_TOOL_NAME = 'consultTeam' as const
|
|
16
15
|
export const CREATE_EXECUTION_PLAN_TOOL_NAME = 'createExecutionPlan' as const
|
|
17
16
|
export const REPLACE_EXECUTION_PLAN_TOOL_NAME = 'replaceExecutionPlan' as const
|
|
18
|
-
export const
|
|
17
|
+
export const SUBMIT_EXECUTION_NODE_RESULT_TOOL_NAME = 'submitExecutionNodeResult' as const
|
|
19
18
|
export const GET_ACTIVE_EXECUTION_PLAN_TOOL_NAME = 'getActiveExecutionPlan' as const
|
|
20
|
-
export const
|
|
19
|
+
export const RESUME_EXECUTION_PLAN_RUN_TOOL_NAME = 'resumeExecutionPlanRun' as const
|
|
21
20
|
|
|
22
21
|
const UserQuestionItemSchema = z
|
|
23
22
|
.object({
|
|
@@ -49,88 +48,69 @@ export const ConsultTeamResponseSchema = z
|
|
|
49
48
|
|
|
50
49
|
export const ConsultTeamArgsSchema = z.object({ task: z.string().trim().min(1).max(6000) }).strict()
|
|
51
50
|
|
|
52
|
-
const
|
|
53
|
-
const ExecutionPlanCreateTaskOwnerTypeSchema = z.enum(['agent', 'user'])
|
|
51
|
+
const planStructuredPayloadSchema = z.union([z.record(z.string(), z.unknown()), z.array(z.unknown())])
|
|
54
52
|
|
|
55
|
-
const
|
|
53
|
+
export const PlanArtifactSubmissionSchema = z
|
|
56
54
|
.object({
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
55
|
+
name: z.string().trim().min(1).max(200),
|
|
56
|
+
kind: PlanArtifactKindSchema,
|
|
57
|
+
pointer: z.string().trim().min(1).max(500),
|
|
58
|
+
schemaRef: z.string().trim().min(1).max(200).optional(),
|
|
59
|
+
description: z.string().trim().min(1).max(1000).optional(),
|
|
60
|
+
payload: planStructuredPayloadSchema.optional(),
|
|
63
61
|
})
|
|
64
62
|
.strict()
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
)
|
|
63
|
+
export type PlanArtifactSubmission = z.infer<typeof PlanArtifactSubmissionSchema>
|
|
64
|
+
|
|
65
|
+
export const PlanNodeResultSubmissionSchema = z
|
|
66
|
+
.object({
|
|
67
|
+
structuredOutput: z.record(z.string(), z.unknown()).optional(),
|
|
68
|
+
artifacts: z.array(PlanArtifactSubmissionSchema).default([]),
|
|
69
|
+
notes: z.string().trim().min(1).max(2000).optional(),
|
|
70
|
+
})
|
|
71
|
+
.strict()
|
|
72
|
+
export type PlanNodeResultSubmission = z.infer<typeof PlanNodeResultSubmissionSchema>
|
|
74
73
|
|
|
75
74
|
const ExecutionPlanToolActionSchema = z.enum([
|
|
76
75
|
'created',
|
|
77
76
|
'replaced',
|
|
78
77
|
'loaded',
|
|
79
|
-
'
|
|
80
|
-
'
|
|
78
|
+
'node-result-submitted',
|
|
79
|
+
'run-resumed',
|
|
81
80
|
'none',
|
|
82
81
|
])
|
|
83
82
|
|
|
84
|
-
export const CreateExecutionPlanArgsSchema =
|
|
85
|
-
.object({
|
|
86
|
-
title: z.string().trim().min(1).max(200),
|
|
87
|
-
objective: z.string().trim().min(1).max(1500),
|
|
88
|
-
tasks: z.array(ExecutionPlanTaskDefinitionSchema).min(1).max(10),
|
|
89
|
-
})
|
|
90
|
-
.strict()
|
|
83
|
+
export const CreateExecutionPlanArgsSchema = PlanDraftSchema
|
|
91
84
|
|
|
92
|
-
export const ReplaceExecutionPlanArgsSchema =
|
|
93
|
-
.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
title: z.string().trim().min(1).max(200),
|
|
97
|
-
objective: z.string().trim().min(1).max(1500),
|
|
98
|
-
tasks: CreateExecutionPlanArgsSchema.shape.tasks,
|
|
99
|
-
})
|
|
100
|
-
.strict()
|
|
85
|
+
export const ReplaceExecutionPlanArgsSchema = PlanDraftSchema.extend({
|
|
86
|
+
runId: z.string().trim().min(1),
|
|
87
|
+
reason: z.string().trim().min(1).max(1000),
|
|
88
|
+
}).strict()
|
|
101
89
|
|
|
102
|
-
export const
|
|
103
|
-
.object({
|
|
104
|
-
planId: z.string().trim().min(1),
|
|
105
|
-
taskId: z.string().trim().min(1),
|
|
106
|
-
status: ExecutionPlanTaskStatusSchema,
|
|
107
|
-
resultStatus: ExecutionPlanTaskResultStatusSchema.optional(),
|
|
108
|
-
outputSummary: z.string().trim().max(1500).optional(),
|
|
109
|
-
blockedReason: z.string().trim().max(1000).optional(),
|
|
110
|
-
externalRef: z.string().trim().max(300).optional(),
|
|
111
|
-
})
|
|
90
|
+
export const SubmitExecutionNodeResultArgsSchema = z
|
|
91
|
+
.object({ runId: z.string().trim().min(1), nodeId: z.string().trim().min(1), result: PlanNodeResultSubmissionSchema })
|
|
112
92
|
.strict()
|
|
113
93
|
|
|
114
94
|
export const GetActiveExecutionPlanArgsSchema = z
|
|
115
|
-
.object({ includeEvents: z.boolean().optional().default(false) })
|
|
116
|
-
.strict()
|
|
117
|
-
|
|
118
|
-
export const RestartExecutionTaskArgsSchema = z
|
|
119
95
|
.object({
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
96
|
+
includeEvents: z.boolean().optional().default(true),
|
|
97
|
+
includeArtifacts: z.boolean().optional().default(true),
|
|
98
|
+
includeApprovals: z.boolean().optional().default(true),
|
|
99
|
+
includeCheckpoints: z.boolean().optional().default(false),
|
|
100
|
+
includeValidationIssues: z.boolean().optional().default(true),
|
|
123
101
|
})
|
|
124
102
|
.strict()
|
|
125
103
|
|
|
104
|
+
export const ResumeExecutionPlanRunArgsSchema = z.object({ runId: z.string().trim().min(1) }).strict()
|
|
105
|
+
|
|
126
106
|
export const ExecutionPlanToolResultDataSchema = z
|
|
127
107
|
.object({
|
|
128
108
|
action: ExecutionPlanToolActionSchema,
|
|
129
109
|
message: z.string().trim().min(1).optional(),
|
|
130
|
-
|
|
110
|
+
changedNodeId: z.string().nullish(),
|
|
131
111
|
plan: SerializableExecutionPlanSchema.nullish(),
|
|
132
112
|
hasPlan: z.boolean(),
|
|
133
|
-
status:
|
|
113
|
+
status: PlanRunStatusSchema.nullish(),
|
|
134
114
|
})
|
|
135
115
|
.strict()
|
|
136
116
|
|
|
@@ -147,9 +127,9 @@ export type ConsultTeamResponseData = Omit<z.infer<typeof ConsultTeamResponseSch
|
|
|
147
127
|
export type ConsultTeamResultData = { responses: ConsultTeamResponseData[] }
|
|
148
128
|
export type CreateExecutionPlanArgs = z.infer<typeof CreateExecutionPlanArgsSchema>
|
|
149
129
|
export type ReplaceExecutionPlanArgs = z.infer<typeof ReplaceExecutionPlanArgsSchema>
|
|
150
|
-
export type
|
|
130
|
+
export type SubmitExecutionNodeResultArgs = z.infer<typeof SubmitExecutionNodeResultArgsSchema>
|
|
151
131
|
export type GetActiveExecutionPlanArgs = z.infer<typeof GetActiveExecutionPlanArgsSchema>
|
|
152
|
-
export type
|
|
132
|
+
export type ResumeExecutionPlanRunArgs = z.infer<typeof ResumeExecutionPlanRunArgsSchema>
|
|
153
133
|
export type ExecutionPlanToolResultData = z.infer<typeof ExecutionPlanToolResultDataSchema>
|
|
154
134
|
export type CoreChatTools = {
|
|
155
135
|
userQuestions: { input: UserQuestionsArgs; output: unknown }
|
|
@@ -157,7 +137,7 @@ export type CoreChatTools = {
|
|
|
157
137
|
consultTeam: { input: ConsultTeamArgs; output: ConsultTeamResultData }
|
|
158
138
|
createExecutionPlan: { input: CreateExecutionPlanArgs; output: ExecutionPlanToolResultData }
|
|
159
139
|
replaceExecutionPlan: { input: ReplaceExecutionPlanArgs; output: ExecutionPlanToolResultData }
|
|
160
|
-
|
|
140
|
+
submitExecutionNodeResult: { input: SubmitExecutionNodeResultArgs; output: ExecutionPlanToolResultData }
|
|
161
141
|
getActiveExecutionPlan: { input: GetActiveExecutionPlanArgs; output: ExecutionPlanToolResultData }
|
|
162
|
-
|
|
142
|
+
resumeExecutionPlanRun: { input: ResumeExecutionPlanRunArgs; output: ExecutionPlanToolResultData }
|
|
163
143
|
}
|