bopodev-agent-sdk 0.1.24 → 0.1.25

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.
@@ -1,5 +1,5 @@
1
1
 
2
2
  
3
- > bopodev-agent-sdk@0.1.24 build /Users/danielkrusenstrahle/Documents/Projects/Monorepo/bopodev/packages/agent-sdk
3
+ > bopodev-agent-sdk@0.1.25 build /Users/danielkrusenstrahle/Documents/Projects/Monorepo/bopohq/packages/agent-sdk
4
4
  > tsc -p tsconfig.json --emitDeclarationOnly
5
5
 
@@ -0,0 +1,4 @@
1
+
2
+ > bopodev-agent-sdk@0.1.15 lint /Users/danielkrusenstrahle/Documents/Projects/Monorepo/bopohq/packages/agent-sdk
3
+ > tsc -p tsconfig.json --noEmit
4
+
@@ -1,4 +1,4 @@
1
1
 
2
- > bopodev-agent-sdk@0.1.20 typecheck /Users/danielkrusenstrahle/Documents/Projects/Monorepo/bopodev/packages/agent-sdk
2
+ > bopodev-agent-sdk@0.1.24 typecheck /Users/danielkrusenstrahle/Documents/Projects/Monorepo/bopohq/packages/agent-sdk
3
3
  > tsc -p tsconfig.json --noEmit
4
4
 
@@ -3,6 +3,8 @@ export type AgentProviderType = ProviderType;
3
3
  export interface AgentWorkItem {
4
4
  issueId: string;
5
5
  projectId: string;
6
+ parentIssueId?: string | null;
7
+ childIssueIds?: string[];
6
8
  projectName?: string | null;
7
9
  title: string;
8
10
  body?: string | null;
@@ -57,6 +59,12 @@ export interface HeartbeatContext {
57
59
  state: AgentState;
58
60
  memoryContext?: AgentMemoryContext;
59
61
  runtime?: AgentRuntimeConfig;
62
+ wakeContext?: {
63
+ reason?: string | null;
64
+ commentId?: string | null;
65
+ commentBody?: string | null;
66
+ issueIds?: string[];
67
+ };
60
68
  }
61
69
  /**
62
70
  * Normalized usage contract produced by adapter execution.
@@ -21,6 +21,9 @@ export declare const ProjectSchema: z.ZodObject<{
21
21
  archived: "archived";
22
22
  }>;
23
23
  plannedStartAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
24
+ monthlyBudgetUsd: z.ZodNumber;
25
+ usedBudgetUsd: z.ZodNumber;
26
+ budgetWindowStartAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
24
27
  executionWorkspacePolicy: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
25
28
  gitDiagnostics: z.ZodOptional<z.ZodObject<{
26
29
  workspaceStatus: z.ZodOptional<z.ZodEnum<{
@@ -165,11 +168,77 @@ export declare const IssueAttachmentSchema: z.ZodObject<{
165
168
  createdAt: z.ZodString;
166
169
  }, z.core.$strip>;
167
170
  export type IssueAttachment = z.infer<typeof IssueAttachmentSchema>;
171
+ export declare const IssueCommentRecipientSchema: z.ZodObject<{
172
+ recipientType: z.ZodEnum<{
173
+ agent: "agent";
174
+ board: "board";
175
+ member: "member";
176
+ }>;
177
+ recipientId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
178
+ deliveryStatus: z.ZodDefault<z.ZodEnum<{
179
+ pending: "pending";
180
+ dispatched: "dispatched";
181
+ failed: "failed";
182
+ skipped: "skipped";
183
+ }>>;
184
+ dispatchedRunId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
185
+ dispatchedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
186
+ acknowledgedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
187
+ }, z.core.$strip>;
188
+ export type IssueCommentRecipient = z.infer<typeof IssueCommentRecipientSchema>;
189
+ export declare const IssueCommentSchema: z.ZodObject<{
190
+ id: z.ZodString;
191
+ issueId: z.ZodString;
192
+ companyId: z.ZodString;
193
+ authorType: z.ZodEnum<{
194
+ human: "human";
195
+ agent: "agent";
196
+ system: "system";
197
+ }>;
198
+ authorId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
199
+ recipients: z.ZodDefault<z.ZodArray<z.ZodObject<{
200
+ recipientType: z.ZodEnum<{
201
+ agent: "agent";
202
+ board: "board";
203
+ member: "member";
204
+ }>;
205
+ recipientId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
206
+ deliveryStatus: z.ZodDefault<z.ZodEnum<{
207
+ pending: "pending";
208
+ dispatched: "dispatched";
209
+ failed: "failed";
210
+ skipped: "skipped";
211
+ }>>;
212
+ dispatchedRunId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
213
+ dispatchedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
214
+ acknowledgedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
215
+ }, z.core.$strip>>>;
216
+ runId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
217
+ body: z.ZodString;
218
+ createdAt: z.ZodString;
219
+ }, z.core.$strip>;
220
+ export type IssueComment = z.infer<typeof IssueCommentSchema>;
168
221
  export declare const GoalLevelSchema: z.ZodEnum<{
169
222
  agent: "agent";
170
223
  company: "company";
171
224
  project: "project";
172
225
  }>;
226
+ export declare const AgentRoleKeySchema: z.ZodEnum<{
227
+ ceo: "ceo";
228
+ cto: "cto";
229
+ cmo: "cmo";
230
+ cfo: "cfo";
231
+ engineer: "engineer";
232
+ designer: "designer";
233
+ pm: "pm";
234
+ qa: "qa";
235
+ devops: "devops";
236
+ researcher: "researcher";
237
+ general: "general";
238
+ }>;
239
+ export type AgentRoleKey = z.infer<typeof AgentRoleKeySchema>;
240
+ export declare const AGENT_ROLE_KEYS: ("ceo" | "cto" | "cmo" | "cfo" | "engineer" | "designer" | "pm" | "qa" | "devops" | "researcher" | "general")[];
241
+ export declare const AGENT_ROLE_LABELS: Record<AgentRoleKey, string>;
173
242
  export declare const GoalSchema: z.ZodObject<{
174
243
  id: z.ZodString;
175
244
  companyId: z.ZodString;
@@ -251,6 +320,20 @@ export declare const TemplateManifestGoalSchema: z.ZodObject<{
251
320
  export declare const TemplateManifestAgentSchema: z.ZodObject<{
252
321
  key: z.ZodString;
253
322
  role: z.ZodString;
323
+ roleKey: z.ZodOptional<z.ZodEnum<{
324
+ ceo: "ceo";
325
+ cto: "cto";
326
+ cmo: "cmo";
327
+ cfo: "cfo";
328
+ engineer: "engineer";
329
+ designer: "designer";
330
+ pm: "pm";
331
+ qa: "qa";
332
+ devops: "devops";
333
+ researcher: "researcher";
334
+ general: "general";
335
+ }>>;
336
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
254
337
  name: z.ZodString;
255
338
  providerType: z.ZodDefault<z.ZodLazy<z.ZodEnum<{
256
339
  claude_code: "claude_code";
@@ -364,6 +447,20 @@ export declare const TemplateManifestSchema: z.ZodObject<{
364
447
  agents: z.ZodDefault<z.ZodArray<z.ZodObject<{
365
448
  key: z.ZodString;
366
449
  role: z.ZodString;
450
+ roleKey: z.ZodOptional<z.ZodEnum<{
451
+ ceo: "ceo";
452
+ cto: "cto";
453
+ cmo: "cmo";
454
+ cfo: "cfo";
455
+ engineer: "engineer";
456
+ designer: "designer";
457
+ pm: "pm";
458
+ qa: "qa";
459
+ devops: "devops";
460
+ researcher: "researcher";
461
+ general: "general";
462
+ }>>;
463
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
367
464
  name: z.ZodString;
368
465
  providerType: z.ZodDefault<z.ZodLazy<z.ZodEnum<{
369
466
  claude_code: "claude_code";
@@ -510,6 +607,20 @@ export declare const TemplateSchema: z.ZodObject<{
510
607
  agents: z.ZodDefault<z.ZodArray<z.ZodObject<{
511
608
  key: z.ZodString;
512
609
  role: z.ZodString;
610
+ roleKey: z.ZodOptional<z.ZodEnum<{
611
+ ceo: "ceo";
612
+ cto: "cto";
613
+ cmo: "cmo";
614
+ cfo: "cfo";
615
+ engineer: "engineer";
616
+ designer: "designer";
617
+ pm: "pm";
618
+ qa: "qa";
619
+ devops: "devops";
620
+ researcher: "researcher";
621
+ general: "general";
622
+ }>>;
623
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
513
624
  name: z.ZodString;
514
625
  providerType: z.ZodDefault<z.ZodLazy<z.ZodEnum<{
515
626
  claude_code: "claude_code";
@@ -656,6 +767,20 @@ export declare const TemplateCreateRequestSchema: z.ZodObject<{
656
767
  agents: z.ZodDefault<z.ZodArray<z.ZodObject<{
657
768
  key: z.ZodString;
658
769
  role: z.ZodString;
770
+ roleKey: z.ZodOptional<z.ZodEnum<{
771
+ ceo: "ceo";
772
+ cto: "cto";
773
+ cmo: "cmo";
774
+ cfo: "cfo";
775
+ engineer: "engineer";
776
+ designer: "designer";
777
+ pm: "pm";
778
+ qa: "qa";
779
+ devops: "devops";
780
+ researcher: "researcher";
781
+ general: "general";
782
+ }>>;
783
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
659
784
  name: z.ZodString;
660
785
  providerType: z.ZodDefault<z.ZodLazy<z.ZodEnum<{
661
786
  claude_code: "claude_code";
@@ -800,6 +925,20 @@ export declare const TemplateUpdateRequestSchema: z.ZodObject<{
800
925
  agents: z.ZodDefault<z.ZodArray<z.ZodObject<{
801
926
  key: z.ZodString;
802
927
  role: z.ZodString;
928
+ roleKey: z.ZodOptional<z.ZodEnum<{
929
+ ceo: "ceo";
930
+ cto: "cto";
931
+ cmo: "cmo";
932
+ cfo: "cfo";
933
+ engineer: "engineer";
934
+ designer: "designer";
935
+ pm: "pm";
936
+ qa: "qa";
937
+ devops: "devops";
938
+ researcher: "researcher";
939
+ general: "general";
940
+ }>>;
941
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
803
942
  name: z.ZodString;
804
943
  providerType: z.ZodDefault<z.ZodLazy<z.ZodEnum<{
805
944
  claude_code: "claude_code";
@@ -995,6 +1134,20 @@ export declare const TemplateExportSchema: z.ZodObject<{
995
1134
  agents: z.ZodDefault<z.ZodArray<z.ZodObject<{
996
1135
  key: z.ZodString;
997
1136
  role: z.ZodString;
1137
+ roleKey: z.ZodOptional<z.ZodEnum<{
1138
+ ceo: "ceo";
1139
+ cto: "cto";
1140
+ cmo: "cmo";
1141
+ cfo: "cfo";
1142
+ engineer: "engineer";
1143
+ designer: "designer";
1144
+ pm: "pm";
1145
+ qa: "qa";
1146
+ devops: "devops";
1147
+ researcher: "researcher";
1148
+ general: "general";
1149
+ }>>;
1150
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
998
1151
  name: z.ZodString;
999
1152
  providerType: z.ZodDefault<z.ZodLazy<z.ZodEnum<{
1000
1153
  claude_code: "claude_code";
@@ -1143,6 +1296,20 @@ export declare const TemplateImportRequestSchema: z.ZodObject<{
1143
1296
  agents: z.ZodDefault<z.ZodArray<z.ZodObject<{
1144
1297
  key: z.ZodString;
1145
1298
  role: z.ZodString;
1299
+ roleKey: z.ZodOptional<z.ZodEnum<{
1300
+ ceo: "ceo";
1301
+ cto: "cto";
1302
+ cmo: "cmo";
1303
+ cfo: "cfo";
1304
+ engineer: "engineer";
1305
+ designer: "designer";
1306
+ pm: "pm";
1307
+ qa: "qa";
1308
+ devops: "devops";
1309
+ researcher: "researcher";
1310
+ general: "general";
1311
+ }>>;
1312
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1146
1313
  name: z.ZodString;
1147
1314
  providerType: z.ZodDefault<z.ZodLazy<z.ZodEnum<{
1148
1315
  claude_code: "claude_code";
@@ -1268,6 +1435,20 @@ export declare const TemplateVersionSchema: z.ZodObject<{
1268
1435
  agents: z.ZodDefault<z.ZodArray<z.ZodObject<{
1269
1436
  key: z.ZodString;
1270
1437
  role: z.ZodString;
1438
+ roleKey: z.ZodOptional<z.ZodEnum<{
1439
+ ceo: "ceo";
1440
+ cto: "cto";
1441
+ cmo: "cmo";
1442
+ cfo: "cfo";
1443
+ engineer: "engineer";
1444
+ designer: "designer";
1445
+ pm: "pm";
1446
+ qa: "qa";
1447
+ devops: "devops";
1448
+ researcher: "researcher";
1449
+ general: "general";
1450
+ }>>;
1451
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1271
1452
  name: z.ZodString;
1272
1453
  providerType: z.ZodDefault<z.ZodLazy<z.ZodEnum<{
1273
1454
  claude_code: "claude_code";
@@ -1359,9 +1540,9 @@ export declare const TemplateInstallSchema: z.ZodObject<{
1359
1540
  templateId: z.ZodNullable<z.ZodString>;
1360
1541
  templateVersionId: z.ZodNullable<z.ZodString>;
1361
1542
  status: z.ZodEnum<{
1543
+ failed: "failed";
1362
1544
  applied: "applied";
1363
1545
  queued: "queued";
1364
- failed: "failed";
1365
1546
  }>;
1366
1547
  summary: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1367
1548
  variables: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -1434,6 +1615,9 @@ export declare const ControlPlaneRuntimeEnvSchema: z.ZodObject<{
1434
1615
  BOPODEV_ACTOR_COMPANIES: z.ZodOptional<z.ZodString>;
1435
1616
  BOPODEV_ACTOR_PERMISSIONS: z.ZodOptional<z.ZodString>;
1436
1617
  BOPODEV_REQUEST_HEADERS_JSON: z.ZodOptional<z.ZodString>;
1618
+ BOPODEV_WAKE_REASON: z.ZodOptional<z.ZodString>;
1619
+ BOPODEV_WAKE_COMMENT_ID: z.ZodOptional<z.ZodString>;
1620
+ BOPODEV_LINKED_ISSUE_IDS: z.ZodOptional<z.ZodString>;
1437
1621
  }, z.core.$strip>;
1438
1622
  export type ControlPlaneRuntimeEnv = z.infer<typeof ControlPlaneRuntimeEnvSchema>;
1439
1623
  export declare const ExecutionOutcomeKindSchema: z.ZodEnum<{
@@ -1685,7 +1869,21 @@ export declare const PluginInvocationResultSchema: z.ZodObject<{
1685
1869
  export type PluginInvocationResult = z.infer<typeof PluginInvocationResultSchema>;
1686
1870
  export declare const AgentCreateRequestSchema: z.ZodObject<{
1687
1871
  managerAgentId: z.ZodOptional<z.ZodString>;
1688
- role: z.ZodString;
1872
+ role: z.ZodOptional<z.ZodString>;
1873
+ roleKey: z.ZodOptional<z.ZodEnum<{
1874
+ ceo: "ceo";
1875
+ cto: "cto";
1876
+ cmo: "cmo";
1877
+ cfo: "cfo";
1878
+ engineer: "engineer";
1879
+ designer: "designer";
1880
+ pm: "pm";
1881
+ qa: "qa";
1882
+ devops: "devops";
1883
+ researcher: "researcher";
1884
+ general: "general";
1885
+ }>>;
1886
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1689
1887
  name: z.ZodString;
1690
1888
  providerType: z.ZodEnum<{
1691
1889
  claude_code: "claude_code";
@@ -1706,6 +1904,20 @@ export declare const AgentCreateRequestSchema: z.ZodObject<{
1706
1904
  delegationIntent: z.ZodOptional<z.ZodObject<{
1707
1905
  intentType: z.ZodLiteral<"agent_hiring_request">;
1708
1906
  requestedRole: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1907
+ requestedRoleKey: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
1908
+ ceo: "ceo";
1909
+ cto: "cto";
1910
+ cmo: "cmo";
1911
+ cfo: "cfo";
1912
+ engineer: "engineer";
1913
+ designer: "designer";
1914
+ pm: "pm";
1915
+ qa: "qa";
1916
+ devops: "devops";
1917
+ researcher: "researcher";
1918
+ general: "general";
1919
+ }>>>;
1920
+ requestedTitle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1709
1921
  requestedName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1710
1922
  requestedManagerAgentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1711
1923
  requestedProviderType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
@@ -1750,6 +1962,20 @@ export type AgentCreateRequest = z.infer<typeof AgentCreateRequestSchema>;
1750
1962
  export declare const AgentUpdateRequestSchema: z.ZodObject<{
1751
1963
  managerAgentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1752
1964
  role: z.ZodOptional<z.ZodString>;
1965
+ roleKey: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
1966
+ ceo: "ceo";
1967
+ cto: "cto";
1968
+ cmo: "cmo";
1969
+ cfo: "cfo";
1970
+ engineer: "engineer";
1971
+ designer: "designer";
1972
+ pm: "pm";
1973
+ qa: "qa";
1974
+ devops: "devops";
1975
+ researcher: "researcher";
1976
+ general: "general";
1977
+ }>>>;
1978
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1753
1979
  name: z.ZodOptional<z.ZodString>;
1754
1980
  providerType: z.ZodOptional<z.ZodEnum<{
1755
1981
  claude_code: "claude_code";
@@ -1801,6 +2027,20 @@ export declare const AgentSchema: z.ZodObject<{
1801
2027
  companyId: z.ZodString;
1802
2028
  managerAgentId: z.ZodNullable<z.ZodString>;
1803
2029
  role: z.ZodString;
2030
+ roleKey: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
2031
+ ceo: "ceo";
2032
+ cto: "cto";
2033
+ cmo: "cmo";
2034
+ cfo: "cfo";
2035
+ engineer: "engineer";
2036
+ designer: "designer";
2037
+ pm: "pm";
2038
+ qa: "qa";
2039
+ devops: "devops";
2040
+ researcher: "researcher";
2041
+ general: "general";
2042
+ }>>>;
2043
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1804
2044
  name: z.ZodString;
1805
2045
  providerType: z.ZodEnum<{
1806
2046
  claude_code: "claude_code";
@@ -2022,6 +2262,242 @@ export declare const GovernanceInboxResponseSchema: z.ZodObject<{
2022
2262
  }, z.core.$strip>>;
2023
2263
  }, z.core.$strip>;
2024
2264
  export type GovernanceInboxResponse = z.infer<typeof GovernanceInboxResponseSchema>;
2265
+ export declare const BoardAttentionCategorySchema: z.ZodEnum<{
2266
+ approval_required: "approval_required";
2267
+ blocker_escalation: "blocker_escalation";
2268
+ budget_hard_stop: "budget_hard_stop";
2269
+ stalled_work: "stalled_work";
2270
+ run_failure_spike: "run_failure_spike";
2271
+ board_mentioned_comment: "board_mentioned_comment";
2272
+ }>;
2273
+ export type BoardAttentionCategory = z.infer<typeof BoardAttentionCategorySchema>;
2274
+ export declare const BoardAttentionSeveritySchema: z.ZodEnum<{
2275
+ info: "info";
2276
+ warning: "warning";
2277
+ critical: "critical";
2278
+ }>;
2279
+ export type BoardAttentionSeverity = z.infer<typeof BoardAttentionSeveritySchema>;
2280
+ export declare const BoardAttentionRequiredActorSchema: z.ZodEnum<{
2281
+ agent: "agent";
2282
+ system: "system";
2283
+ board: "board";
2284
+ member: "member";
2285
+ }>;
2286
+ export type BoardAttentionRequiredActor = z.infer<typeof BoardAttentionRequiredActorSchema>;
2287
+ export declare const BoardAttentionStateSchema: z.ZodEnum<{
2288
+ open: "open";
2289
+ acknowledged: "acknowledged";
2290
+ resolved: "resolved";
2291
+ dismissed: "dismissed";
2292
+ }>;
2293
+ export type BoardAttentionState = z.infer<typeof BoardAttentionStateSchema>;
2294
+ export declare const BoardAttentionEvidenceSchema: z.ZodObject<{
2295
+ issueId: z.ZodOptional<z.ZodString>;
2296
+ runId: z.ZodOptional<z.ZodString>;
2297
+ projectId: z.ZodOptional<z.ZodString>;
2298
+ approvalId: z.ZodOptional<z.ZodString>;
2299
+ commentId: z.ZodOptional<z.ZodString>;
2300
+ agentId: z.ZodOptional<z.ZodString>;
2301
+ }, z.core.$strip>;
2302
+ export type BoardAttentionEvidence = z.infer<typeof BoardAttentionEvidenceSchema>;
2303
+ export declare const BoardAttentionItemSchema: z.ZodObject<{
2304
+ key: z.ZodString;
2305
+ category: z.ZodEnum<{
2306
+ approval_required: "approval_required";
2307
+ blocker_escalation: "blocker_escalation";
2308
+ budget_hard_stop: "budget_hard_stop";
2309
+ stalled_work: "stalled_work";
2310
+ run_failure_spike: "run_failure_spike";
2311
+ board_mentioned_comment: "board_mentioned_comment";
2312
+ }>;
2313
+ severity: z.ZodEnum<{
2314
+ info: "info";
2315
+ warning: "warning";
2316
+ critical: "critical";
2317
+ }>;
2318
+ requiredActor: z.ZodEnum<{
2319
+ agent: "agent";
2320
+ system: "system";
2321
+ board: "board";
2322
+ member: "member";
2323
+ }>;
2324
+ title: z.ZodString;
2325
+ contextSummary: z.ZodString;
2326
+ actionLabel: z.ZodString;
2327
+ actionHref: z.ZodString;
2328
+ impactSummary: z.ZodString;
2329
+ evidence: z.ZodDefault<z.ZodObject<{
2330
+ issueId: z.ZodOptional<z.ZodString>;
2331
+ runId: z.ZodOptional<z.ZodString>;
2332
+ projectId: z.ZodOptional<z.ZodString>;
2333
+ approvalId: z.ZodOptional<z.ZodString>;
2334
+ commentId: z.ZodOptional<z.ZodString>;
2335
+ agentId: z.ZodOptional<z.ZodString>;
2336
+ }, z.core.$strip>>;
2337
+ sourceTimestamp: z.ZodString;
2338
+ state: z.ZodEnum<{
2339
+ open: "open";
2340
+ acknowledged: "acknowledged";
2341
+ resolved: "resolved";
2342
+ dismissed: "dismissed";
2343
+ }>;
2344
+ seenAt: z.ZodNullable<z.ZodString>;
2345
+ acknowledgedAt: z.ZodNullable<z.ZodString>;
2346
+ dismissedAt: z.ZodNullable<z.ZodString>;
2347
+ resolvedAt: z.ZodNullable<z.ZodString>;
2348
+ }, z.core.$strip>;
2349
+ export type BoardAttentionItem = z.infer<typeof BoardAttentionItemSchema>;
2350
+ export declare const BoardAttentionListResponseSchema: z.ZodObject<{
2351
+ actorId: z.ZodString;
2352
+ items: z.ZodArray<z.ZodObject<{
2353
+ key: z.ZodString;
2354
+ category: z.ZodEnum<{
2355
+ approval_required: "approval_required";
2356
+ blocker_escalation: "blocker_escalation";
2357
+ budget_hard_stop: "budget_hard_stop";
2358
+ stalled_work: "stalled_work";
2359
+ run_failure_spike: "run_failure_spike";
2360
+ board_mentioned_comment: "board_mentioned_comment";
2361
+ }>;
2362
+ severity: z.ZodEnum<{
2363
+ info: "info";
2364
+ warning: "warning";
2365
+ critical: "critical";
2366
+ }>;
2367
+ requiredActor: z.ZodEnum<{
2368
+ agent: "agent";
2369
+ system: "system";
2370
+ board: "board";
2371
+ member: "member";
2372
+ }>;
2373
+ title: z.ZodString;
2374
+ contextSummary: z.ZodString;
2375
+ actionLabel: z.ZodString;
2376
+ actionHref: z.ZodString;
2377
+ impactSummary: z.ZodString;
2378
+ evidence: z.ZodDefault<z.ZodObject<{
2379
+ issueId: z.ZodOptional<z.ZodString>;
2380
+ runId: z.ZodOptional<z.ZodString>;
2381
+ projectId: z.ZodOptional<z.ZodString>;
2382
+ approvalId: z.ZodOptional<z.ZodString>;
2383
+ commentId: z.ZodOptional<z.ZodString>;
2384
+ agentId: z.ZodOptional<z.ZodString>;
2385
+ }, z.core.$strip>>;
2386
+ sourceTimestamp: z.ZodString;
2387
+ state: z.ZodEnum<{
2388
+ open: "open";
2389
+ acknowledged: "acknowledged";
2390
+ resolved: "resolved";
2391
+ dismissed: "dismissed";
2392
+ }>;
2393
+ seenAt: z.ZodNullable<z.ZodString>;
2394
+ acknowledgedAt: z.ZodNullable<z.ZodString>;
2395
+ dismissedAt: z.ZodNullable<z.ZodString>;
2396
+ resolvedAt: z.ZodNullable<z.ZodString>;
2397
+ }, z.core.$strip>>;
2398
+ }, z.core.$strip>;
2399
+ export type BoardAttentionListResponse = z.infer<typeof BoardAttentionListResponseSchema>;
2400
+ export declare const BoardAttentionNotificationEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2401
+ type: z.ZodLiteral<"attention.snapshot">;
2402
+ items: z.ZodArray<z.ZodObject<{
2403
+ key: z.ZodString;
2404
+ category: z.ZodEnum<{
2405
+ approval_required: "approval_required";
2406
+ blocker_escalation: "blocker_escalation";
2407
+ budget_hard_stop: "budget_hard_stop";
2408
+ stalled_work: "stalled_work";
2409
+ run_failure_spike: "run_failure_spike";
2410
+ board_mentioned_comment: "board_mentioned_comment";
2411
+ }>;
2412
+ severity: z.ZodEnum<{
2413
+ info: "info";
2414
+ warning: "warning";
2415
+ critical: "critical";
2416
+ }>;
2417
+ requiredActor: z.ZodEnum<{
2418
+ agent: "agent";
2419
+ system: "system";
2420
+ board: "board";
2421
+ member: "member";
2422
+ }>;
2423
+ title: z.ZodString;
2424
+ contextSummary: z.ZodString;
2425
+ actionLabel: z.ZodString;
2426
+ actionHref: z.ZodString;
2427
+ impactSummary: z.ZodString;
2428
+ evidence: z.ZodDefault<z.ZodObject<{
2429
+ issueId: z.ZodOptional<z.ZodString>;
2430
+ runId: z.ZodOptional<z.ZodString>;
2431
+ projectId: z.ZodOptional<z.ZodString>;
2432
+ approvalId: z.ZodOptional<z.ZodString>;
2433
+ commentId: z.ZodOptional<z.ZodString>;
2434
+ agentId: z.ZodOptional<z.ZodString>;
2435
+ }, z.core.$strip>>;
2436
+ sourceTimestamp: z.ZodString;
2437
+ state: z.ZodEnum<{
2438
+ open: "open";
2439
+ acknowledged: "acknowledged";
2440
+ resolved: "resolved";
2441
+ dismissed: "dismissed";
2442
+ }>;
2443
+ seenAt: z.ZodNullable<z.ZodString>;
2444
+ acknowledgedAt: z.ZodNullable<z.ZodString>;
2445
+ dismissedAt: z.ZodNullable<z.ZodString>;
2446
+ resolvedAt: z.ZodNullable<z.ZodString>;
2447
+ }, z.core.$strip>>;
2448
+ }, z.core.$strip>, z.ZodObject<{
2449
+ type: z.ZodLiteral<"attention.updated">;
2450
+ item: z.ZodObject<{
2451
+ key: z.ZodString;
2452
+ category: z.ZodEnum<{
2453
+ approval_required: "approval_required";
2454
+ blocker_escalation: "blocker_escalation";
2455
+ budget_hard_stop: "budget_hard_stop";
2456
+ stalled_work: "stalled_work";
2457
+ run_failure_spike: "run_failure_spike";
2458
+ board_mentioned_comment: "board_mentioned_comment";
2459
+ }>;
2460
+ severity: z.ZodEnum<{
2461
+ info: "info";
2462
+ warning: "warning";
2463
+ critical: "critical";
2464
+ }>;
2465
+ requiredActor: z.ZodEnum<{
2466
+ agent: "agent";
2467
+ system: "system";
2468
+ board: "board";
2469
+ member: "member";
2470
+ }>;
2471
+ title: z.ZodString;
2472
+ contextSummary: z.ZodString;
2473
+ actionLabel: z.ZodString;
2474
+ actionHref: z.ZodString;
2475
+ impactSummary: z.ZodString;
2476
+ evidence: z.ZodDefault<z.ZodObject<{
2477
+ issueId: z.ZodOptional<z.ZodString>;
2478
+ runId: z.ZodOptional<z.ZodString>;
2479
+ projectId: z.ZodOptional<z.ZodString>;
2480
+ approvalId: z.ZodOptional<z.ZodString>;
2481
+ commentId: z.ZodOptional<z.ZodString>;
2482
+ agentId: z.ZodOptional<z.ZodString>;
2483
+ }, z.core.$strip>>;
2484
+ sourceTimestamp: z.ZodString;
2485
+ state: z.ZodEnum<{
2486
+ open: "open";
2487
+ acknowledged: "acknowledged";
2488
+ resolved: "resolved";
2489
+ dismissed: "dismissed";
2490
+ }>;
2491
+ seenAt: z.ZodNullable<z.ZodString>;
2492
+ acknowledgedAt: z.ZodNullable<z.ZodString>;
2493
+ dismissedAt: z.ZodNullable<z.ZodString>;
2494
+ resolvedAt: z.ZodNullable<z.ZodString>;
2495
+ }, z.core.$strip>;
2496
+ }, z.core.$strip>, z.ZodObject<{
2497
+ type: z.ZodLiteral<"attention.resolved">;
2498
+ key: z.ZodString;
2499
+ }, z.core.$strip>], "type">;
2500
+ export type BoardAttentionNotificationEvent = z.infer<typeof BoardAttentionNotificationEventSchema>;
2025
2501
  export declare const OfficeRoomSchema: z.ZodEnum<{
2026
2502
  waiting_room: "waiting_room";
2027
2503
  work_space: "work_space";
@@ -2338,6 +2814,7 @@ export declare const RealtimeChannelSchema: z.ZodEnum<{
2338
2814
  governance: "governance";
2339
2815
  "office-space": "office-space";
2340
2816
  "heartbeat-runs": "heartbeat-runs";
2817
+ attention: "attention";
2341
2818
  }>;
2342
2819
  export type RealtimeChannel = z.infer<typeof RealtimeChannelSchema>;
2343
2820
  export declare const RealtimeEventEnvelopeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -2649,6 +3126,108 @@ export declare const RealtimeEventEnvelopeSchema: z.ZodDiscriminatedUnion<[z.Zod
2649
3126
  }, z.core.$strip>>;
2650
3127
  nextCursor: z.ZodNullable<z.ZodString>;
2651
3128
  }, z.core.$strip>], "type">;
3129
+ }, z.core.$strip>, z.ZodObject<{
3130
+ channel: z.ZodLiteral<"attention">;
3131
+ event: z.ZodDiscriminatedUnion<[z.ZodObject<{
3132
+ type: z.ZodLiteral<"attention.snapshot">;
3133
+ items: z.ZodArray<z.ZodObject<{
3134
+ key: z.ZodString;
3135
+ category: z.ZodEnum<{
3136
+ approval_required: "approval_required";
3137
+ blocker_escalation: "blocker_escalation";
3138
+ budget_hard_stop: "budget_hard_stop";
3139
+ stalled_work: "stalled_work";
3140
+ run_failure_spike: "run_failure_spike";
3141
+ board_mentioned_comment: "board_mentioned_comment";
3142
+ }>;
3143
+ severity: z.ZodEnum<{
3144
+ info: "info";
3145
+ warning: "warning";
3146
+ critical: "critical";
3147
+ }>;
3148
+ requiredActor: z.ZodEnum<{
3149
+ agent: "agent";
3150
+ system: "system";
3151
+ board: "board";
3152
+ member: "member";
3153
+ }>;
3154
+ title: z.ZodString;
3155
+ contextSummary: z.ZodString;
3156
+ actionLabel: z.ZodString;
3157
+ actionHref: z.ZodString;
3158
+ impactSummary: z.ZodString;
3159
+ evidence: z.ZodDefault<z.ZodObject<{
3160
+ issueId: z.ZodOptional<z.ZodString>;
3161
+ runId: z.ZodOptional<z.ZodString>;
3162
+ projectId: z.ZodOptional<z.ZodString>;
3163
+ approvalId: z.ZodOptional<z.ZodString>;
3164
+ commentId: z.ZodOptional<z.ZodString>;
3165
+ agentId: z.ZodOptional<z.ZodString>;
3166
+ }, z.core.$strip>>;
3167
+ sourceTimestamp: z.ZodString;
3168
+ state: z.ZodEnum<{
3169
+ open: "open";
3170
+ acknowledged: "acknowledged";
3171
+ resolved: "resolved";
3172
+ dismissed: "dismissed";
3173
+ }>;
3174
+ seenAt: z.ZodNullable<z.ZodString>;
3175
+ acknowledgedAt: z.ZodNullable<z.ZodString>;
3176
+ dismissedAt: z.ZodNullable<z.ZodString>;
3177
+ resolvedAt: z.ZodNullable<z.ZodString>;
3178
+ }, z.core.$strip>>;
3179
+ }, z.core.$strip>, z.ZodObject<{
3180
+ type: z.ZodLiteral<"attention.updated">;
3181
+ item: z.ZodObject<{
3182
+ key: z.ZodString;
3183
+ category: z.ZodEnum<{
3184
+ approval_required: "approval_required";
3185
+ blocker_escalation: "blocker_escalation";
3186
+ budget_hard_stop: "budget_hard_stop";
3187
+ stalled_work: "stalled_work";
3188
+ run_failure_spike: "run_failure_spike";
3189
+ board_mentioned_comment: "board_mentioned_comment";
3190
+ }>;
3191
+ severity: z.ZodEnum<{
3192
+ info: "info";
3193
+ warning: "warning";
3194
+ critical: "critical";
3195
+ }>;
3196
+ requiredActor: z.ZodEnum<{
3197
+ agent: "agent";
3198
+ system: "system";
3199
+ board: "board";
3200
+ member: "member";
3201
+ }>;
3202
+ title: z.ZodString;
3203
+ contextSummary: z.ZodString;
3204
+ actionLabel: z.ZodString;
3205
+ actionHref: z.ZodString;
3206
+ impactSummary: z.ZodString;
3207
+ evidence: z.ZodDefault<z.ZodObject<{
3208
+ issueId: z.ZodOptional<z.ZodString>;
3209
+ runId: z.ZodOptional<z.ZodString>;
3210
+ projectId: z.ZodOptional<z.ZodString>;
3211
+ approvalId: z.ZodOptional<z.ZodString>;
3212
+ commentId: z.ZodOptional<z.ZodString>;
3213
+ agentId: z.ZodOptional<z.ZodString>;
3214
+ }, z.core.$strip>>;
3215
+ sourceTimestamp: z.ZodString;
3216
+ state: z.ZodEnum<{
3217
+ open: "open";
3218
+ acknowledged: "acknowledged";
3219
+ resolved: "resolved";
3220
+ dismissed: "dismissed";
3221
+ }>;
3222
+ seenAt: z.ZodNullable<z.ZodString>;
3223
+ acknowledgedAt: z.ZodNullable<z.ZodString>;
3224
+ dismissedAt: z.ZodNullable<z.ZodString>;
3225
+ resolvedAt: z.ZodNullable<z.ZodString>;
3226
+ }, z.core.$strip>;
3227
+ }, z.core.$strip>, z.ZodObject<{
3228
+ type: z.ZodLiteral<"attention.resolved">;
3229
+ key: z.ZodString;
3230
+ }, z.core.$strip>], "type">;
2652
3231
  }, z.core.$strip>], "channel">;
2653
3232
  export type RealtimeEventEnvelope = z.infer<typeof RealtimeEventEnvelopeSchema>;
2654
3233
  export declare const RealtimeSubscribedMessageSchema: z.ZodObject<{
@@ -2658,6 +3237,7 @@ export declare const RealtimeSubscribedMessageSchema: z.ZodObject<{
2658
3237
  governance: "governance";
2659
3238
  "office-space": "office-space";
2660
3239
  "heartbeat-runs": "heartbeat-runs";
3240
+ attention: "attention";
2661
3241
  }>>;
2662
3242
  }, z.core.$strip>;
2663
3243
  export declare const RealtimeEventMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -2975,6 +3555,110 @@ export declare const RealtimeEventMessageSchema: z.ZodDiscriminatedUnion<[z.ZodO
2975
3555
  }, z.core.$strip>>;
2976
3556
  nextCursor: z.ZodNullable<z.ZodString>;
2977
3557
  }, z.core.$strip>], "type">;
3558
+ }, z.core.$strip>, z.ZodObject<{
3559
+ kind: z.ZodLiteral<"event">;
3560
+ companyId: z.ZodString;
3561
+ channel: z.ZodLiteral<"attention">;
3562
+ event: z.ZodDiscriminatedUnion<[z.ZodObject<{
3563
+ type: z.ZodLiteral<"attention.snapshot">;
3564
+ items: z.ZodArray<z.ZodObject<{
3565
+ key: z.ZodString;
3566
+ category: z.ZodEnum<{
3567
+ approval_required: "approval_required";
3568
+ blocker_escalation: "blocker_escalation";
3569
+ budget_hard_stop: "budget_hard_stop";
3570
+ stalled_work: "stalled_work";
3571
+ run_failure_spike: "run_failure_spike";
3572
+ board_mentioned_comment: "board_mentioned_comment";
3573
+ }>;
3574
+ severity: z.ZodEnum<{
3575
+ info: "info";
3576
+ warning: "warning";
3577
+ critical: "critical";
3578
+ }>;
3579
+ requiredActor: z.ZodEnum<{
3580
+ agent: "agent";
3581
+ system: "system";
3582
+ board: "board";
3583
+ member: "member";
3584
+ }>;
3585
+ title: z.ZodString;
3586
+ contextSummary: z.ZodString;
3587
+ actionLabel: z.ZodString;
3588
+ actionHref: z.ZodString;
3589
+ impactSummary: z.ZodString;
3590
+ evidence: z.ZodDefault<z.ZodObject<{
3591
+ issueId: z.ZodOptional<z.ZodString>;
3592
+ runId: z.ZodOptional<z.ZodString>;
3593
+ projectId: z.ZodOptional<z.ZodString>;
3594
+ approvalId: z.ZodOptional<z.ZodString>;
3595
+ commentId: z.ZodOptional<z.ZodString>;
3596
+ agentId: z.ZodOptional<z.ZodString>;
3597
+ }, z.core.$strip>>;
3598
+ sourceTimestamp: z.ZodString;
3599
+ state: z.ZodEnum<{
3600
+ open: "open";
3601
+ acknowledged: "acknowledged";
3602
+ resolved: "resolved";
3603
+ dismissed: "dismissed";
3604
+ }>;
3605
+ seenAt: z.ZodNullable<z.ZodString>;
3606
+ acknowledgedAt: z.ZodNullable<z.ZodString>;
3607
+ dismissedAt: z.ZodNullable<z.ZodString>;
3608
+ resolvedAt: z.ZodNullable<z.ZodString>;
3609
+ }, z.core.$strip>>;
3610
+ }, z.core.$strip>, z.ZodObject<{
3611
+ type: z.ZodLiteral<"attention.updated">;
3612
+ item: z.ZodObject<{
3613
+ key: z.ZodString;
3614
+ category: z.ZodEnum<{
3615
+ approval_required: "approval_required";
3616
+ blocker_escalation: "blocker_escalation";
3617
+ budget_hard_stop: "budget_hard_stop";
3618
+ stalled_work: "stalled_work";
3619
+ run_failure_spike: "run_failure_spike";
3620
+ board_mentioned_comment: "board_mentioned_comment";
3621
+ }>;
3622
+ severity: z.ZodEnum<{
3623
+ info: "info";
3624
+ warning: "warning";
3625
+ critical: "critical";
3626
+ }>;
3627
+ requiredActor: z.ZodEnum<{
3628
+ agent: "agent";
3629
+ system: "system";
3630
+ board: "board";
3631
+ member: "member";
3632
+ }>;
3633
+ title: z.ZodString;
3634
+ contextSummary: z.ZodString;
3635
+ actionLabel: z.ZodString;
3636
+ actionHref: z.ZodString;
3637
+ impactSummary: z.ZodString;
3638
+ evidence: z.ZodDefault<z.ZodObject<{
3639
+ issueId: z.ZodOptional<z.ZodString>;
3640
+ runId: z.ZodOptional<z.ZodString>;
3641
+ projectId: z.ZodOptional<z.ZodString>;
3642
+ approvalId: z.ZodOptional<z.ZodString>;
3643
+ commentId: z.ZodOptional<z.ZodString>;
3644
+ agentId: z.ZodOptional<z.ZodString>;
3645
+ }, z.core.$strip>>;
3646
+ sourceTimestamp: z.ZodString;
3647
+ state: z.ZodEnum<{
3648
+ open: "open";
3649
+ acknowledged: "acknowledged";
3650
+ resolved: "resolved";
3651
+ dismissed: "dismissed";
3652
+ }>;
3653
+ seenAt: z.ZodNullable<z.ZodString>;
3654
+ acknowledgedAt: z.ZodNullable<z.ZodString>;
3655
+ dismissedAt: z.ZodNullable<z.ZodString>;
3656
+ resolvedAt: z.ZodNullable<z.ZodString>;
3657
+ }, z.core.$strip>;
3658
+ }, z.core.$strip>, z.ZodObject<{
3659
+ type: z.ZodLiteral<"attention.resolved">;
3660
+ key: z.ZodString;
3661
+ }, z.core.$strip>], "type">;
2978
3662
  }, z.core.$strip>], "channel">;
2979
3663
  export declare const RealtimeMessageSchema: z.ZodUnion<readonly [z.ZodObject<{
2980
3664
  kind: z.ZodLiteral<"subscribed">;
@@ -2983,6 +3667,7 @@ export declare const RealtimeMessageSchema: z.ZodUnion<readonly [z.ZodObject<{
2983
3667
  governance: "governance";
2984
3668
  "office-space": "office-space";
2985
3669
  "heartbeat-runs": "heartbeat-runs";
3670
+ attention: "attention";
2986
3671
  }>>;
2987
3672
  }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
2988
3673
  kind: z.ZodLiteral<"event">;
@@ -3299,6 +3984,110 @@ export declare const RealtimeMessageSchema: z.ZodUnion<readonly [z.ZodObject<{
3299
3984
  }, z.core.$strip>>;
3300
3985
  nextCursor: z.ZodNullable<z.ZodString>;
3301
3986
  }, z.core.$strip>], "type">;
3987
+ }, z.core.$strip>, z.ZodObject<{
3988
+ kind: z.ZodLiteral<"event">;
3989
+ companyId: z.ZodString;
3990
+ channel: z.ZodLiteral<"attention">;
3991
+ event: z.ZodDiscriminatedUnion<[z.ZodObject<{
3992
+ type: z.ZodLiteral<"attention.snapshot">;
3993
+ items: z.ZodArray<z.ZodObject<{
3994
+ key: z.ZodString;
3995
+ category: z.ZodEnum<{
3996
+ approval_required: "approval_required";
3997
+ blocker_escalation: "blocker_escalation";
3998
+ budget_hard_stop: "budget_hard_stop";
3999
+ stalled_work: "stalled_work";
4000
+ run_failure_spike: "run_failure_spike";
4001
+ board_mentioned_comment: "board_mentioned_comment";
4002
+ }>;
4003
+ severity: z.ZodEnum<{
4004
+ info: "info";
4005
+ warning: "warning";
4006
+ critical: "critical";
4007
+ }>;
4008
+ requiredActor: z.ZodEnum<{
4009
+ agent: "agent";
4010
+ system: "system";
4011
+ board: "board";
4012
+ member: "member";
4013
+ }>;
4014
+ title: z.ZodString;
4015
+ contextSummary: z.ZodString;
4016
+ actionLabel: z.ZodString;
4017
+ actionHref: z.ZodString;
4018
+ impactSummary: z.ZodString;
4019
+ evidence: z.ZodDefault<z.ZodObject<{
4020
+ issueId: z.ZodOptional<z.ZodString>;
4021
+ runId: z.ZodOptional<z.ZodString>;
4022
+ projectId: z.ZodOptional<z.ZodString>;
4023
+ approvalId: z.ZodOptional<z.ZodString>;
4024
+ commentId: z.ZodOptional<z.ZodString>;
4025
+ agentId: z.ZodOptional<z.ZodString>;
4026
+ }, z.core.$strip>>;
4027
+ sourceTimestamp: z.ZodString;
4028
+ state: z.ZodEnum<{
4029
+ open: "open";
4030
+ acknowledged: "acknowledged";
4031
+ resolved: "resolved";
4032
+ dismissed: "dismissed";
4033
+ }>;
4034
+ seenAt: z.ZodNullable<z.ZodString>;
4035
+ acknowledgedAt: z.ZodNullable<z.ZodString>;
4036
+ dismissedAt: z.ZodNullable<z.ZodString>;
4037
+ resolvedAt: z.ZodNullable<z.ZodString>;
4038
+ }, z.core.$strip>>;
4039
+ }, z.core.$strip>, z.ZodObject<{
4040
+ type: z.ZodLiteral<"attention.updated">;
4041
+ item: z.ZodObject<{
4042
+ key: z.ZodString;
4043
+ category: z.ZodEnum<{
4044
+ approval_required: "approval_required";
4045
+ blocker_escalation: "blocker_escalation";
4046
+ budget_hard_stop: "budget_hard_stop";
4047
+ stalled_work: "stalled_work";
4048
+ run_failure_spike: "run_failure_spike";
4049
+ board_mentioned_comment: "board_mentioned_comment";
4050
+ }>;
4051
+ severity: z.ZodEnum<{
4052
+ info: "info";
4053
+ warning: "warning";
4054
+ critical: "critical";
4055
+ }>;
4056
+ requiredActor: z.ZodEnum<{
4057
+ agent: "agent";
4058
+ system: "system";
4059
+ board: "board";
4060
+ member: "member";
4061
+ }>;
4062
+ title: z.ZodString;
4063
+ contextSummary: z.ZodString;
4064
+ actionLabel: z.ZodString;
4065
+ actionHref: z.ZodString;
4066
+ impactSummary: z.ZodString;
4067
+ evidence: z.ZodDefault<z.ZodObject<{
4068
+ issueId: z.ZodOptional<z.ZodString>;
4069
+ runId: z.ZodOptional<z.ZodString>;
4070
+ projectId: z.ZodOptional<z.ZodString>;
4071
+ approvalId: z.ZodOptional<z.ZodString>;
4072
+ commentId: z.ZodOptional<z.ZodString>;
4073
+ agentId: z.ZodOptional<z.ZodString>;
4074
+ }, z.core.$strip>>;
4075
+ sourceTimestamp: z.ZodString;
4076
+ state: z.ZodEnum<{
4077
+ open: "open";
4078
+ acknowledged: "acknowledged";
4079
+ resolved: "resolved";
4080
+ dismissed: "dismissed";
4081
+ }>;
4082
+ seenAt: z.ZodNullable<z.ZodString>;
4083
+ acknowledgedAt: z.ZodNullable<z.ZodString>;
4084
+ dismissedAt: z.ZodNullable<z.ZodString>;
4085
+ resolvedAt: z.ZodNullable<z.ZodString>;
4086
+ }, z.core.$strip>;
4087
+ }, z.core.$strip>, z.ZodObject<{
4088
+ type: z.ZodLiteral<"attention.resolved">;
4089
+ key: z.ZodString;
4090
+ }, z.core.$strip>], "type">;
3302
4091
  }, z.core.$strip>], "channel">]>;
3303
4092
  export type RealtimeMessage = z.infer<typeof RealtimeMessageSchema>;
3304
4093
  export declare const CostLedgerEntrySchema: z.ZodObject<{
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "bopodev-agent-sdk",
3
- "version": "0.1.24",
3
+ "version": "0.1.25",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
7
7
  "types": "src/index.ts",
8
8
  "dependencies": {
9
- "bopodev-contracts": "0.1.24"
9
+ "bopodev-contracts": "0.1.25"
10
10
  },
11
11
  "scripts": {
12
12
  "build": "tsc -p tsconfig.json --emitDeclarationOnly",
package/src/adapters.ts CHANGED
@@ -2291,12 +2291,15 @@ export function createPrompt(context: HeartbeatContext) {
2291
2291
  const agentGoals = context.goalContext?.agentGoals.length
2292
2292
  ? context.goalContext.agentGoals.map((goal) => `- ${goal}`).join("\n")
2293
2293
  : "- No active agent goals";
2294
+ const isCommentOrderRun = context.wakeContext?.reason === "issue_comment_recipient";
2294
2295
  const workItems = context.workItems.length
2295
2296
  ? context.workItems
2296
2297
  .map((item) =>
2297
2298
  [
2298
2299
  `- [${item.issueId}] ${item.title}`,
2299
2300
  ` Project: ${item.projectName ?? item.projectId}`,
2301
+ item.parentIssueId ? ` Parent issue: ${item.parentIssueId}` : null,
2302
+ item.childIssueIds?.length ? ` Sub-issues: ${item.childIssueIds.join(", ")}` : null,
2300
2303
  item.status ? ` Status: ${item.status}` : null,
2301
2304
  item.priority ? ` Priority: ${item.priority}` : null,
2302
2305
  item.body ? ` Body: ${item.body}` : null,
@@ -2316,6 +2319,25 @@ export function createPrompt(context: HeartbeatContext) {
2316
2319
  )
2317
2320
  .join("\n")
2318
2321
  : "- No assigned work";
2322
+ const wakeContextLines = context.wakeContext
2323
+ ? [
2324
+ "Wake context:",
2325
+ `- Reason: ${context.wakeContext.reason ?? "unspecified"}`,
2326
+ `- Trigger comment: ${context.wakeContext.commentId ?? "none"}`,
2327
+ `- Comment order: ${context.wakeContext.commentBody ?? "none"}`,
2328
+ `- Linked issues: ${context.wakeContext.issueIds?.length ? context.wakeContext.issueIds.join(", ") : "none"}`
2329
+ ].join("\n")
2330
+ : "";
2331
+ const commentOrderDirectives =
2332
+ isCommentOrderRun
2333
+ ? [
2334
+ "Comment-order directives:",
2335
+ "- The triggering comment is the primary order for this run.",
2336
+ "- Treat linked issue details as read-only context unless explicitly asked for broader issue updates.",
2337
+ "- Do not rerun full issue backlogs/checklists by default.",
2338
+ "- Apply only the requested delta from the comment unless explicitly asked to do more."
2339
+ ].join("\n")
2340
+ : "";
2319
2341
  const memoryContext = context.memoryContext;
2320
2342
  const memoryTacitNotes = memoryContext?.tacitNotes?.trim()
2321
2343
  ? memoryContext.tacitNotes.trim()
@@ -2353,8 +2375,12 @@ export function createPrompt(context: HeartbeatContext) {
2353
2375
  "- You are running inside a BopoDev heartbeat for local repository work.",
2354
2376
  "- Use BopoDev-specific injected skills only (bopodev-control-plane, bopodev-create-agent, para-memory-files) when relevant.",
2355
2377
  "- Ignore unrelated third-party control-plane skills even if they exist in the runtime environment.",
2356
- "- Prefer completing assigned issue work in this repository over non-essential coordination tasks.",
2357
- "- Keep command usage minimal and task-focused; avoid broad repository scans unless strictly required for the assigned issue.",
2378
+ isCommentOrderRun
2379
+ ? "- Prioritize the triggering comment order over general issue backlog work."
2380
+ : "- Prefer completing assigned issue work in this repository over non-essential coordination tasks.",
2381
+ isCommentOrderRun
2382
+ ? "- Keep command usage narrowly focused on the comment request and required context."
2383
+ : "- Keep command usage minimal and task-focused; avoid broad repository scans unless strictly required for the assigned issue.",
2358
2384
  "- Shell commands run under zsh on macOS; avoid Bash-only features such as `local -n`, `declare -n`, `mapfile`, and `readarray`.",
2359
2385
  "- Prefer POSIX/zsh-compatible shell snippets, direct `curl` headers, and `jq`.",
2360
2386
  "- Prefer heredoc/stdin payloads (for example `curl --data-binary @- <<'JSON' ... JSON`) so cleanup is not blocked by runtime policy.",
@@ -2362,7 +2388,10 @@ export function createPrompt(context: HeartbeatContext) {
2362
2388
  "- If control-plane API connectivity fails, report the exact failing command/error once and stop retry loops for the same endpoint.",
2363
2389
  "- For write_todos status values, only use: todo, in_progress, blocked, in_review, done, canceled (US spelling, not cancelled).",
2364
2390
  "- If any command fails, avoid further exploratory commands and still return the required final JSON summary.",
2365
- "- Do not stop after planning. You must execute concrete steps for assigned issues in this run (file edits, API calls, or other verifiable actions).",
2391
+ "- Do not use emojis in issue comments, summaries, or status messages.",
2392
+ isCommentOrderRun
2393
+ ? "- Do not stop after planning. Execute concrete steps only for the triggering comment order."
2394
+ : "- Do not stop after planning. You must execute concrete steps for assigned issues in this run (file edits, API calls, or other verifiable actions).",
2366
2395
  "- If you cannot complete concrete execution, set summary to include the blocker explicitly instead of claiming success.",
2367
2396
  "- Treat file memory as source of truth for long-term context: append raw observations to daily notes first, then promote stable patterns to durable facts.",
2368
2397
  "- Avoid writing duplicate durable facts when existing memory already contains the same lesson.",
@@ -2385,9 +2414,13 @@ ${projectGoals}
2385
2414
  Agent goals:
2386
2415
  ${agentGoals}
2387
2416
 
2388
- Assigned issues:
2417
+ ${isCommentOrderRun ? "Linked issue context (read-only):" : "Assigned issues:"}
2389
2418
  ${workItems}
2390
2419
 
2420
+ ${wakeContextLines}
2421
+
2422
+ ${commentOrderDirectives}
2423
+
2391
2424
  Memory context:
2392
2425
  - Memory root: ${memoryContext?.memoryRoot ?? "Unavailable"}
2393
2426
  - Tacit notes:
package/src/types.ts CHANGED
@@ -5,6 +5,8 @@ export type AgentProviderType = ProviderType;
5
5
  export interface AgentWorkItem {
6
6
  issueId: string;
7
7
  projectId: string;
8
+ parentIssueId?: string | null;
9
+ childIssueIds?: string[];
8
10
  projectName?: string | null;
9
11
  title: string;
10
12
  body?: string | null;
@@ -62,6 +64,12 @@ export interface HeartbeatContext {
62
64
  state: AgentState;
63
65
  memoryContext?: AgentMemoryContext;
64
66
  runtime?: AgentRuntimeConfig;
67
+ wakeContext?: {
68
+ reason?: string | null;
69
+ commentId?: string | null;
70
+ commentBody?: string | null;
71
+ issueIds?: string[];
72
+ };
65
73
  }
66
74
 
67
75
  /**