@lota-sdk/shared 0.1.20 → 0.1.22

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lota-sdk/shared",
3
- "version": "0.1.20",
3
+ "version": "0.1.22",
4
4
  "type": "module",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -25,7 +25,7 @@
25
25
  "registry": "https://registry.npmjs.org/"
26
26
  },
27
27
  "dependencies": {
28
- "ai": "^6.0.137",
28
+ "ai": "^6.0.141",
29
29
  "zod": "^4.3.6"
30
30
  }
31
31
  }
@@ -7,6 +7,9 @@ export const messageMetadataSchema = z
7
7
  .object({
8
8
  agentId: z.string().optional(),
9
9
  agentName: z.string().optional(),
10
+ trigger: z.enum(['user-turn', 'approval-continuation', 'plan-turn']).optional(),
11
+ planRunId: z.string().optional(),
12
+ planNodeId: z.string().optional(),
10
13
  semanticTerminationReason: z.enum(['none', 'conflict', 'cycle-detected']).optional(),
11
14
  inputTokens: z.number().optional(),
12
15
  outputTokens: z.number().optional(),
@@ -153,7 +153,9 @@ export const PlanEventTypeSchema = z
153
153
  'plan-created',
154
154
  'plan-replaced',
155
155
  'run-status-changed',
156
+ 'ownership-transition',
156
157
  'node-ready',
158
+ 'node-unblocked',
157
159
  'node-running',
158
160
  'node-awaiting-human',
159
161
  'node-completed',
@@ -172,6 +174,7 @@ export const PlanEventTypeSchema = z
172
174
  'schedule-missed',
173
175
  'deadline-warning',
174
176
  'deadline-missed',
177
+ 'escalation-triggered',
175
178
  'node-scheduled',
176
179
  'node-monitoring',
177
180
  'cycle-started',
@@ -181,6 +184,9 @@ export const PlanEventTypeSchema = z
181
184
  .meta({ id: 'PlanEventTypeSchema' })
182
185
  export type PlanEventType = z.infer<typeof PlanEventTypeSchema>
183
186
 
187
+ export const PlanExecutionVisibilitySchema = z.enum(['visible', 'silent', 'auto'])
188
+ export type PlanExecutionVisibility = z.infer<typeof PlanExecutionVisibilitySchema>
189
+
184
190
  const planOwnerRefSchema = z.string().trim().min(1).max(200)
185
191
  const planOwnerOperationSchema = z.string().trim().min(1).max(200)
186
192
 
@@ -301,6 +307,16 @@ export const DeadlineSpecSchema = z
301
307
  .strict()
302
308
  export type DeadlineSpec = z.infer<typeof DeadlineSpecSchema>
303
309
 
310
+ export const PlanNodeEscalationSchema = z
311
+ .object({
312
+ deadlineThresholdMinutes: z.number().int().positive().optional(),
313
+ autoEscalateAfterMinutes: z.number().int().positive().optional(),
314
+ escalateToAgent: z.string().trim().min(1).max(200).optional(),
315
+ escalateToUser: z.boolean().default(false),
316
+ })
317
+ .strict()
318
+ export type PlanNodeEscalation = z.infer<typeof PlanNodeEscalationSchema>
319
+
304
320
  export const NotificationSeveritySchema = z.enum(['info', 'warning', 'urgent', 'critical'])
305
321
  export type NotificationSeverity = z.infer<typeof NotificationSeveritySchema>
306
322
 
@@ -391,6 +407,18 @@ export type NodeWorkspaceEntry = z.infer<typeof NodeWorkspaceEntrySchema>
391
407
  export const NodeResultQualitySchema = z.enum(['full', 'partial']).default('full')
392
408
  export type NodeResultQuality = z.infer<typeof NodeResultQualitySchema>
393
409
 
410
+ export const PlanNodeHandoffContextSchema = z
411
+ .object({
412
+ summary: z.string().trim().min(1).max(4000),
413
+ keyDecisions: z.array(z.string().trim().min(1).max(1000)).default([]),
414
+ openQuestions: z.array(z.string().trim().min(1).max(1000)).default([]),
415
+ risks: z.array(z.string().trim().min(1).max(1000)).default([]),
416
+ recommendations: z.array(z.string().trim().min(1).max(1000)).default([]),
417
+ references: z.array(z.string().trim().min(1).max(2000)).default([]),
418
+ })
419
+ .strict()
420
+ export type PlanNodeHandoffContext = z.infer<typeof PlanNodeHandoffContextSchema>
421
+
394
422
  const planJsonValueSchema: z.ZodType<unknown> = z.lazy(() =>
395
423
  z.union([z.string(), z.number(), z.boolean(), z.null(), z.array(planJsonValueSchema), planStructuredObjectSchema]),
396
424
  )
@@ -420,12 +448,24 @@ export const PlanNodeResultSubmissionSchema = z
420
448
  structuredOutput: planStructuredObjectSchema.optional(),
421
449
  artifacts: z.array(PlanArtifactSubmissionSchema).default([]),
422
450
  notes: z.string().trim().min(1).max(2000).optional(),
451
+ handoffContext: PlanNodeHandoffContextSchema.optional(),
423
452
  quality: NodeResultQualitySchema.optional(),
424
453
  })
425
454
  .strict()
426
455
  export type PlanNodeResultSubmission = z.infer<typeof PlanNodeResultSubmissionSchema>
427
456
  export type PlanNodeResult = PlanNodeResultSubmission
428
457
 
458
+ export const UpstreamHandoffSchema = z
459
+ .object({
460
+ nodeId: z.string().trim().min(1).max(200),
461
+ label: z.string().trim().min(1).max(300),
462
+ ownerRef: z.string().trim().min(1).max(200),
463
+ ownerType: PlanNodeExecutorTypeSchema,
464
+ handoffContext: PlanNodeHandoffContextSchema,
465
+ })
466
+ .strict()
467
+ export type UpstreamHandoff = z.infer<typeof UpstreamHandoffSchema>
468
+
429
469
  export interface OwnershipDispatchContext {
430
470
  organizationId: string
431
471
  workstreamId: string
@@ -434,6 +474,7 @@ export interface OwnershipDispatchContext {
434
474
  leadAgentId: string
435
475
  userId?: string
436
476
  userName?: string
477
+ upstreamHandoffs?: UpstreamHandoff[]
437
478
  }
438
479
 
439
480
  export const MonitoringWindowConfigSchema = z.object({
@@ -518,8 +559,10 @@ export const PlanNodeSpecSchema = z
518
559
  attachmentPolicy: 'referenced-only',
519
560
  webPolicy: 'allowed',
520
561
  }),
562
+ executionVisibility: PlanExecutionVisibilitySchema.default('auto'),
521
563
  schedule: PlanScheduleSpecSchema.optional(),
522
564
  deadline: DeadlineSpecSchema.optional(),
565
+ escalation: PlanNodeEscalationSchema.optional(),
523
566
  monitoringConfig: MonitoringWindowConfigSchema.optional(),
524
567
  delayAfterPredecessorMs: z.number().int().positive().optional(),
525
568
  deliberationConfig: DeliberationForkConfigSchema.optional(),
@@ -543,6 +586,7 @@ export const PlanDraftSchema = z
543
586
  title: z.string().trim().min(1).max(200),
544
587
  objective: z.string().trim().min(1).max(2000),
545
588
  schemas: PlanSchemaRegistrySchema.default({}),
589
+ defaultExecutionVisibility: PlanExecutionVisibilitySchema.default('auto'),
546
590
  nodes: z.array(PlanNodeSpecSchema).min(1).max(32),
547
591
  edges: z.array(PlanEdgeSpecSchema).default([]),
548
592
  entryNodeIds: z.array(z.string().trim().min(1).max(200)).min(1).optional(),
@@ -568,6 +612,7 @@ export const PlanSpecSchema = z.object({
568
612
  schemaRegistry: PlanSchemaRegistrySchema,
569
613
  edges: z.array(PlanEdgeSpecSchema),
570
614
  entryNodeIds: z.array(z.string()),
615
+ defaultExecutionVisibility: PlanExecutionVisibilitySchema.default('auto'),
571
616
  executionMode: ExecutionModeSchema,
572
617
  schedule: PlanScheduleSpecSchema.optional(),
573
618
  dependencies: z.array(PlanDependencySchema).optional(),
@@ -599,8 +644,10 @@ export const PlanNodeSpecRecordSchema = z.object({
599
644
  timeoutMs: z.number().int().positive().optional(),
600
645
  toolPolicy: PlanToolPolicySchema,
601
646
  contextPolicy: PlanContextPolicySchema,
647
+ executionVisibility: PlanExecutionVisibilitySchema.default('auto'),
602
648
  schedule: PlanScheduleSpecSchema.optional(),
603
649
  deadline: DeadlineSpecSchema.optional(),
650
+ escalation: PlanNodeEscalationSchema.optional(),
604
651
  monitoringConfig: MonitoringWindowConfigSchema.optional(),
605
652
  delayAfterPredecessorMs: z.number().int().positive().optional(),
606
653
  deliberationConfig: DeliberationForkConfigSchema.optional(),
@@ -644,6 +691,7 @@ export const PlanNodeRunSchema = z.object({
644
691
  resolvedInput: z.record(z.string(), z.unknown()).optional(),
645
692
  latestStructuredOutput: z.record(z.string(), z.unknown()).optional(),
646
693
  latestNotes: z.string().optional(),
694
+ handoffContext: PlanNodeHandoffContextSchema.optional(),
647
695
  latestAttemptId: recordIdSchema.optional(),
648
696
  blockedReason: z.string().optional(),
649
697
  failureClass: PlanFailureClassSchema.optional(),
@@ -747,6 +795,7 @@ export const PlanEventSchema = z.object({
747
795
  detail: z.record(z.string(), z.unknown()).optional(),
748
796
  emittedBy: z.string(),
749
797
  createdAt: dbDateTimeSchema,
798
+ deliveredAt: dbDateTimeSchema.optional(),
750
799
  })
751
800
  export type PlanEventRecord = z.infer<typeof PlanEventSchema>
752
801
 
@@ -767,8 +816,10 @@ export const SerializablePlanNodeSchema = z.object({
767
816
  timeoutMs: z.number().int().positive().nullish(),
768
817
  toolPolicy: PlanToolPolicySchema,
769
818
  contextPolicy: PlanContextPolicySchema,
819
+ executionVisibility: PlanExecutionVisibilitySchema,
770
820
  schedule: PlanScheduleSpecSchema.nullish(),
771
821
  deadline: DeadlineSpecSchema.nullish(),
822
+ escalation: PlanNodeEscalationSchema.nullish(),
772
823
  monitoringConfig: MonitoringWindowConfigSchema.nullish(),
773
824
  delayAfterPredecessorMs: z.number().int().positive().nullish(),
774
825
  deliberationConfig: DeliberationForkConfigSchema.nullish(),
@@ -778,6 +829,7 @@ export const SerializablePlanNodeSchema = z.object({
778
829
  resolvedInput: z.record(z.string(), z.unknown()).nullish(),
779
830
  latestStructuredOutput: z.record(z.string(), z.unknown()).nullish(),
780
831
  latestNotes: z.string().nullish(),
832
+ handoffContext: PlanNodeHandoffContextSchema.nullish(),
781
833
  blockedReason: z.string().nullish(),
782
834
  failureClass: PlanFailureClassSchema.nullish(),
783
835
  upstreamNodeIds: z.array(z.string()),
@@ -885,6 +937,7 @@ export const SerializableExecutionPlanSchema = z.object({
885
937
  version: z.number().int().positive(),
886
938
  status: PlanRunStatusSchema,
887
939
  leadAgentId: z.string(),
940
+ defaultExecutionVisibility: PlanExecutionVisibilitySchema,
888
941
  executionMode: ExecutionModeSchema,
889
942
  schemaRegistry: PlanSchemaRegistrySchema,
890
943
  entryNodeIds: z.array(z.string()),
@@ -35,6 +35,8 @@ export const RecentActivityMetadataSchema = z
35
35
  userMessageText: z.string().optional(),
36
36
  assistantSummary: z.string().optional(),
37
37
  messageId: z.string().optional(),
38
+ planStatus: z.enum(['awaiting-human', 'blocked', 'completed', 'failed']).optional(),
39
+ planTitle: z.string().optional(),
38
40
  })
39
41
  .partial()
40
42
 
@@ -15,6 +15,7 @@ export const CONSULT_TEAM_TOOL_NAME = 'consultTeam' as const
15
15
  export const CREATE_EXECUTION_PLAN_TOOL_NAME = 'createExecutionPlan' as const
16
16
  export const REPLACE_EXECUTION_PLAN_TOOL_NAME = 'replaceExecutionPlan' as const
17
17
  export const SUBMIT_EXECUTION_NODE_RESULT_TOOL_NAME = 'submitExecutionNodeResult' as const
18
+ export const SUBMIT_PLAN_TURN_RESULT_TOOL_NAME = 'submitPlanTurnResult' as const
18
19
  export const LIST_EXECUTION_PLANS_TOOL_NAME = 'listExecutionPlans' as const
19
20
  export const GET_EXECUTION_PLAN_DETAILS_TOOL_NAME = 'getExecutionPlanDetails' as const
20
21
  export const GET_ACTIVE_EXECUTION_PLAN_TOOL_NAME = 'getActiveExecutionPlan' as const
@@ -70,6 +71,8 @@ export const SubmitExecutionNodeResultArgsSchema = z
70
71
  .object({ runId: z.string().trim().min(1), nodeId: z.string().trim().min(1), result: PlanNodeResultSubmissionSchema })
71
72
  .strict()
72
73
 
74
+ export const SubmitPlanTurnResultArgsSchema = PlanNodeResultSubmissionSchema
75
+
73
76
  export const ListExecutionPlansArgsSchema = z.object({}).strict()
74
77
 
75
78
  export const GetActiveExecutionPlanArgsSchema = z
@@ -132,6 +135,7 @@ export type ConsultTeamResultData = { responses: ConsultTeamResponseData[] }
132
135
  export type CreateExecutionPlanArgs = z.infer<typeof CreateExecutionPlanArgsSchema>
133
136
  export type ReplaceExecutionPlanArgs = z.infer<typeof ReplaceExecutionPlanArgsSchema>
134
137
  export type SubmitExecutionNodeResultArgs = z.infer<typeof SubmitExecutionNodeResultArgsSchema>
138
+ export type SubmitPlanTurnResultArgs = z.infer<typeof SubmitPlanTurnResultArgsSchema>
135
139
  export type ListExecutionPlansArgs = z.infer<typeof ListExecutionPlansArgsSchema>
136
140
  export type ListExecutionPlansSummary = z.infer<typeof ListExecutionPlansSummarySchema>
137
141
  export type ListExecutionPlansToolResultData = z.infer<typeof ListExecutionPlansToolResultDataSchema>
@@ -145,6 +149,7 @@ export type CoreChatTools = {
145
149
  createExecutionPlan: { input: CreateExecutionPlanArgs; output: ExecutionPlanToolResultData }
146
150
  replaceExecutionPlan: { input: ReplaceExecutionPlanArgs; output: ExecutionPlanToolResultData }
147
151
  submitExecutionNodeResult: { input: SubmitExecutionNodeResultArgs; output: ExecutionPlanToolResultData }
152
+ submitPlanTurnResult: { input: SubmitPlanTurnResultArgs; output: ExecutionPlanToolResultData }
148
153
  listExecutionPlans: { input: ListExecutionPlansArgs; output: ListExecutionPlansToolResultData }
149
154
  getExecutionPlanDetails: { input: GetActiveExecutionPlanArgs; output: ExecutionPlanToolResultData }
150
155
  resumeExecutionPlanRun: { input: ResumeExecutionPlanRunArgs; output: ExecutionPlanToolResultData }