@botharness/core 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { DatabaseSync } from "node:sqlite";
2
2
  import { ToolCallKind, ToolCallView, ToolExecution } from "@deepseek-ai/dsh-tools";
3
3
  import { BlockAssembler, ContextFormed, ToolCallId } from "@deepseek-ai/dsh-llm";
4
- import { Agent, AgentHandle, AssistantStreamFrame, CreateAgentOptions, ModelSelection, ResumeAgentOptions } from "@deepseek-ai/dsh-agent";
5
4
  import { Session, SessionId } from "@deepseek-ai/dsh-session";
5
+ import { Agent, AgentHandle, AssistantStreamFrame, CreateAgentOptions, ModelSelection, ResumeAgentOptions } from "@deepseek-ai/dsh-agent";
6
6
  //#region node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.5/node_modules/@deepseek-ai/cosmokit/lib/types/types.d.ts
7
7
  declare function isArrayBufferLike(value: any): value is ArrayBufferLike;
8
8
  declare function isArrayBufferSource(value: any): value is Binary.Source;
@@ -8021,6 +8021,11 @@ interface MessagingAttachment {
8021
8021
  sizeBytes?: number;
8022
8022
  mediaType?: string;
8023
8023
  }
8024
+ interface MessagingVoice {
8025
+ transcript: 'platform' | 'unavailable';
8026
+ itemId?: string;
8027
+ durationMs?: number;
8028
+ }
8024
8029
  interface MessagingInboundEvent {
8025
8030
  version: 1;
8026
8031
  channel: 'feishu' | 'slack' | 'discord' | 'weixin';
@@ -8046,6 +8051,7 @@ interface MessagingInboundEvent {
8046
8051
  at: string;
8047
8052
  text: string;
8048
8053
  attachments?: MessagingAttachment[];
8054
+ voice?: MessagingVoice;
8049
8055
  reply: MessagingReplyRoute;
8050
8056
  replay: {
8051
8057
  kind: 'provider-redelivery';
@@ -8157,6 +8163,7 @@ interface MessagingProvider {
8157
8163
  id: string;
8158
8164
  name: string;
8159
8165
  bytes: Uint8Array;
8166
+ mediaType?: string;
8160
8167
  };
8161
8168
  signal: AbortSignal;
8162
8169
  beforeSend?: () => boolean;
@@ -8297,6 +8304,16 @@ interface InboundMessaging {
8297
8304
  close(): void;
8298
8305
  }
8299
8306
  //#endregion
8307
+ //#region packages/core/src/telemetry/service.d.ts
8308
+ type TelemetryValue = string | number | boolean;
8309
+ type TelemetryCapture = (event: string, properties?: Record<string, TelemetryValue>) => void;
8310
+ type TelemetryLock = 'config' | 'DO_NOT_TRACK' | 'BOTHARNESS_TELEMETRY';
8311
+ interface TelemetryStatus {
8312
+ enabled: boolean;
8313
+ preference: boolean;
8314
+ lockedBy?: TelemetryLock;
8315
+ }
8316
+ //#endregion
8300
8317
  //#region packages/core/src/messaging/outbound.d.ts
8301
8318
  interface MessagingGrant {
8302
8319
  id: string;
@@ -8432,8 +8449,21 @@ export declare function createOutboundMessaging(options: {
8432
8449
  recover?: boolean;
8433
8450
  now?: () => Date;
8434
8451
  warn?: (message: string) => void;
8452
+ capture?: TelemetryCapture;
8435
8453
  }): OutboundMessaging;
8436
8454
  //#endregion
8455
+ //#region packages/core/src/memory/soul.d.ts
8456
+ interface StandingLimits {
8457
+ soul: number;
8458
+ coreMemory: number;
8459
+ }
8460
+ interface StandingUsage {
8461
+ path: string;
8462
+ role: 'soul' | 'coreMemory';
8463
+ chars: number;
8464
+ limit: number;
8465
+ }
8466
+ //#endregion
8437
8467
  //#region packages/core/src/models/presets.d.ts
8438
8468
  interface ModelRoute {
8439
8469
  provider: string;
@@ -8698,6 +8728,7 @@ interface PersonaBotRecord {
8698
8728
  computerAccess?: boolean;
8699
8729
  browserAccess?: boolean;
8700
8730
  browserProfile?: string;
8731
+ standingLimits?: StandingLimits;
8701
8732
  }
8702
8733
  interface CreatePersonaBotInput {
8703
8734
  slug: string;
@@ -8886,6 +8917,10 @@ interface PersonaBotRegistryOptions {
8886
8917
  initializeMemory?: (memoryDir: string) => MemoryRepositoryInitialization;
8887
8918
  cloneMemory?: (destination: string, url: string) => Promise<MemoryCloneResult>;
8888
8919
  onPurge?: (slug: string, removeFiles: () => void) => void;
8920
+ capture?: TelemetryCapture;
8921
+ syncDescriptor?: (memoryDir: string, record: PersonaBotRecord, options: {
8922
+ onlyIfMissing: boolean;
8923
+ }) => void;
8889
8924
  }
8890
8925
  interface PersonaBotRegistry {
8891
8926
  rootDir: string;
@@ -8904,6 +8939,7 @@ interface PersonaBotRegistry {
8904
8939
  setComputerAccess(slug: string, enabled: boolean): UpdatePersonaBotResult;
8905
8940
  setBrowserAccess(slug: string, enabled: boolean): UpdatePersonaBotResult;
8906
8941
  setBrowserProfile(slug: string, profile: string): UpdatePersonaBotResult;
8942
+ setStandingLimits(slug: string, limits: StandingLimits): UpdatePersonaBotResult;
8907
8943
  applyModelPreset(slug: string, preset: ModelPreset): UpdatePersonaBotResult;
8908
8944
  migrateLegacyModel(slug: string, expectedModel: string, route: ModelRoute): UpdatePersonaBotResult;
8909
8945
  customizeModelPlan(slug: string, orchestrator: PersonaBotModelPlan['orchestrator'], expectedRevision: number): UpdatePersonaBotResult;
@@ -8995,6 +9031,7 @@ interface MemoryAcceptedSnapshot {
8995
9031
  head: string | null;
8996
9032
  files: string[];
8997
9033
  provisional: boolean;
9034
+ standing: StandingUsage[];
8998
9035
  }
8999
9036
  interface MemoryChangeDelta {
9000
9037
  summary: string;
@@ -9193,7 +9230,7 @@ interface MemoryStore {
9193
9230
  read(path: string): MemoryEntry | undefined;
9194
9231
  write(input: MemoryWriteInput): Promise<MemoryWriteResult>;
9195
9232
  search(query: string): Promise<MemorySearchHit[]>;
9196
- persona(): string | undefined;
9233
+ standingPrompt(limits?: StandingLimits): string;
9197
9234
  history(limit?: number): MemoryCommit[];
9198
9235
  }
9199
9236
  export declare function createMemoryStore(options: MemoryStoreOptions): MemoryStore;
@@ -9260,6 +9297,81 @@ interface AssignmentReportPage {
9260
9297
  estimatedTokens: number;
9261
9298
  }
9262
9299
  //#endregion
9300
+ //#region packages/core/src/schedules/bot-schedules.d.ts
9301
+ type BotScheduleTrigger = {
9302
+ kind: 'every';
9303
+ everySeconds: number;
9304
+ } | {
9305
+ kind: 'daily';
9306
+ time: string;
9307
+ timeZone: string;
9308
+ } | {
9309
+ kind: 'weekly';
9310
+ time: string;
9311
+ timeZone: string;
9312
+ weekdays: number[];
9313
+ } | {
9314
+ kind: 'once';
9315
+ date: string;
9316
+ time: string;
9317
+ timeZone: string;
9318
+ } | {
9319
+ kind: 'cron';
9320
+ expression: string;
9321
+ timeZone: string;
9322
+ };
9323
+ type BotScheduleCreator = 'human' | 'personabot';
9324
+ type BotScheduleFiringState = 'pending' | 'observed' | 'handled' | 'coalesced' | 'skipped';
9325
+ interface BotScheduleFiring {
9326
+ id: string;
9327
+ scheduleId: string;
9328
+ trigger: 'planned' | 'manual';
9329
+ occurrenceAt: string;
9330
+ firedAt: string;
9331
+ state: BotScheduleFiringState;
9332
+ sourceEventId?: string;
9333
+ sessionId?: string;
9334
+ }
9335
+ interface BotSchedule {
9336
+ id: string;
9337
+ botSlug: string;
9338
+ title: string;
9339
+ prompt: string;
9340
+ trigger: BotScheduleTrigger;
9341
+ enabled: boolean;
9342
+ creator: BotScheduleCreator;
9343
+ locked: boolean;
9344
+ nextRunAt?: string;
9345
+ lastFiring?: BotScheduleFiring;
9346
+ createdAt: string;
9347
+ updatedAt: string;
9348
+ }
9349
+ interface BotScheduleInput {
9350
+ title: string;
9351
+ prompt: string;
9352
+ trigger: BotScheduleTrigger;
9353
+ enabled?: boolean;
9354
+ locked?: boolean;
9355
+ }
9356
+ interface BotScheduleChange {
9357
+ title?: string;
9358
+ prompt?: string;
9359
+ trigger?: BotScheduleTrigger;
9360
+ enabled?: boolean;
9361
+ locked?: boolean;
9362
+ }
9363
+ interface BotScheduleStore {
9364
+ list(botSlug: string): BotSchedule[];
9365
+ create(botSlug: string, input: BotScheduleInput, creator: BotScheduleCreator): BotSchedule;
9366
+ update(botSlug: string, id: string, change: BotScheduleChange, actor: BotScheduleCreator): BotSchedule;
9367
+ remove(botSlug: string, id: string, actor: BotScheduleCreator): boolean;
9368
+ history(botSlug: string, id: string): BotScheduleFiring[];
9369
+ runNow(botSlug: string, id: string): BotScheduleFiring;
9370
+ tick(): void;
9371
+ start(): void;
9372
+ close(): void;
9373
+ }
9374
+ //#endregion
9263
9375
  //#region packages/core/src/runtime/bot-runtime.d.ts
9264
9376
  type AssignmentActivity = 'working' | 'idle' | 'error' | 'stopping' | 'stopped';
9265
9377
  type AssignmentReportState = 'progress' | 'completed' | 'blocked' | 'waiting-human' | 'failed';
@@ -9408,6 +9520,12 @@ interface OrchestratorAgentRun {
9408
9520
  resetImmediateDelivery(sourceClass: 'human-dm' | 'bot-dm' | 'group-mention'): BotSourcePolicy;
9409
9521
  };
9410
9522
  assignments: OrchestratorAssignmentAccess;
9523
+ schedules?: {
9524
+ list(): BotSchedule[];
9525
+ create(input: BotScheduleInput): BotSchedule;
9526
+ update(id: string, change: BotScheduleChange): BotSchedule;
9527
+ remove(id: string): boolean;
9528
+ };
9411
9529
  memory?: {
9412
9530
  switchBranch(branch: string): {
9413
9531
  from: string;
@@ -9645,6 +9763,7 @@ interface BotRuntime {
9645
9763
  listAssignments(botSlug: string): AssignmentSummary[];
9646
9764
  getAssignment(botSlug: string, sessionId: string): AssignmentDetail | undefined;
9647
9765
  admitExternalSource?(botSlug: string, sourceEventId: string): void;
9766
+ admitScheduleFiring?(botSlug: string): void;
9648
9767
  resumePendingDigests?(botSlug: string): void;
9649
9768
  whenIdle(): Promise<void>;
9650
9769
  close(): Promise<void>;
@@ -9654,6 +9773,7 @@ interface BotRuntimeOptions {
9654
9773
  externalMessaging?: OutboundMessaging;
9655
9774
  database: OperationalDatabaseOwner;
9656
9775
  sourcePolicy?: BotSourcePolicyStore;
9776
+ schedules?: Pick<BotScheduleStore, 'list' | 'create' | 'update' | 'remove'>;
9657
9777
  registry: PersonaBotRegistry;
9658
9778
  channels: ChannelStore;
9659
9779
  agents: BotAgentAdapter;
@@ -10440,6 +10560,7 @@ interface BotAttentionItem {
10440
10560
  assignmentReportState?: 'progress' | 'completed' | 'blocked' | 'waiting-human' | 'failed';
10441
10561
  assignmentTurn?: number;
10442
10562
  relatedReportSourceEventId?: string;
10563
+ scheduleId?: string;
10443
10564
  sourceAvailable: boolean;
10444
10565
  authorKind: 'human' | 'bot' | 'bridged' | 'system';
10445
10566
  authorBotSlug?: string;
@@ -10450,6 +10571,7 @@ interface BotAttentionItem {
10450
10571
  conversationId: string;
10451
10572
  senderId: string;
10452
10573
  senderName?: string;
10574
+ voice?: NonNullable<ExternalSource['event']['voice']>;
10453
10575
  };
10454
10576
  summary: string;
10455
10577
  }
@@ -10690,6 +10812,7 @@ interface BotHarnessConfig {
10690
10812
  agentPreset?: string;
10691
10813
  activityDetailConsumers?: string[];
10692
10814
  marketplaceUrl?: string;
10815
+ telemetry?: boolean;
10693
10816
  }
10694
10817
  export declare const DEFAULT_CONFIG: BotHarnessConfig;
10695
10818
  declare const Config$1: Schema<Schemastery.ObjectS<NoInfer<{
@@ -10697,11 +10820,13 @@ declare const Config$1: Schema<Schemastery.ObjectS<NoInfer<{
10697
10820
  activityDetailConsumers: Schema<string[], string[], "defined">;
10698
10821
  agentPreset: Schema<string, string, "defined">;
10699
10822
  marketplaceUrl: Schema<string, string, "defined">;
10823
+ telemetry: Schema<boolean, boolean, "defined">;
10700
10824
  }>>, Schemastery.ObjectT<NoInfer<{
10701
10825
  enabled: Schema<boolean, boolean, "defined">;
10702
10826
  activityDetailConsumers: Schema<string[], string[], "defined">;
10703
10827
  agentPreset: Schema<string, string, "defined">;
10704
10828
  marketplaceUrl: Schema<string, string, "defined">;
10829
+ telemetry: Schema<boolean, boolean, "defined">;
10705
10830
  }>>, "plain">;
10706
10831
  interface BotHarnessCore {
10707
10832
  rootDir: string;
@@ -10724,6 +10849,7 @@ interface BotHarnessCore {
10724
10849
  runtime: BotRuntime;
10725
10850
  attention: BotAttentionQuery;
10726
10851
  sourcePolicy: BotSourcePolicyStore;
10852
+ schedules: BotScheduleStore;
10727
10853
  humanAttention: HumanAttentionQuery;
10728
10854
  humanAttentionDecisions: HumanAttentionDecisions;
10729
10855
  grants: WorkspaceGrantStore;
@@ -10751,6 +10877,7 @@ export declare function createCore(options?: {
10751
10877
  onOutputCommitted?: (event: PersonaBotOutputCommitted) => void;
10752
10878
  activeQuestionMessageIds?: () => readonly string[];
10753
10879
  activeToolApprovalMessageIds?: () => readonly string[];
10880
+ capture?: TelemetryCapture;
10754
10881
  }): BotHarnessCore;
10755
10882
  export declare function apply(ctx: Context, config: BotHarnessConfig): void;
10756
10883
  declare module '@deepseek-ai/cordis' {
@@ -10832,6 +10959,74 @@ interface MarketplaceClient {
10832
10959
  }>>;
10833
10960
  }
10834
10961
  //#endregion
10962
+ //#region packages/core/src/release/notes.d.ts
10963
+ interface LocalizedText {
10964
+ en: string;
10965
+ zh: string;
10966
+ }
10967
+ interface ReleaseNoteSection {
10968
+ name: string;
10969
+ entries: LocalizedText[];
10970
+ }
10971
+ interface ReleaseNote {
10972
+ version: string;
10973
+ date: string;
10974
+ summary: LocalizedText;
10975
+ sections: ReleaseNoteSection[];
10976
+ }
10977
+ //#endregion
10978
+ //#region packages/core/src/release/service.d.ts
10979
+ interface ReleaseInfo {
10980
+ version: string;
10981
+ releases: ReleaseNote[];
10982
+ }
10983
+ type ReleaseUpdate = {
10984
+ status: 'development';
10985
+ current: string;
10986
+ } | {
10987
+ status: 'unavailable';
10988
+ current: string;
10989
+ } | {
10990
+ status: 'current';
10991
+ current: string;
10992
+ latest: string;
10993
+ } | {
10994
+ status: 'available';
10995
+ current: string;
10996
+ latest: string;
10997
+ releases: ReleaseNote[];
10998
+ installable: boolean;
10999
+ } | {
11000
+ status: 'restart-required';
11001
+ current: string;
11002
+ installed: string;
11003
+ restartable: boolean;
11004
+ };
11005
+ type ReleaseInstallFailure = 'unavailable' | 'invalid-version' | 'network' | 'incompatible' | 'build-blocked' | 'failed';
11006
+ type ReleaseInstall = {
11007
+ status: 'installed';
11008
+ current: string;
11009
+ installed: string;
11010
+ restartable: boolean;
11011
+ } | {
11012
+ status: 'failed';
11013
+ reason: ReleaseInstallFailure;
11014
+ diagnostic?: string;
11015
+ logPath?: string;
11016
+ };
11017
+ type ReleaseRestart = {
11018
+ status: 'restarting';
11019
+ } | {
11020
+ status: 'failed';
11021
+ reason: 'unavailable' | 'not-pending';
11022
+ };
11023
+ interface ReleaseService {
11024
+ info(since?: string): ReleaseInfo;
11025
+ update(): Promise<ReleaseUpdate>;
11026
+ install(version: string): Promise<ReleaseInstall>;
11027
+ restart(): Promise<ReleaseRestart>;
11028
+ }
11029
+ //#endregion
10835
11030
  //#region packages/core/src/channels/profile-activity.d.ts
10836
11031
  interface GroupProfileActivityDay {
10837
11032
  day: string;
@@ -10937,6 +11132,7 @@ interface PersonaBotSummary {
10937
11132
  avatar?: string;
10938
11133
  appearance?: AvatarAppearance | RetainedAvatarAppearance;
10939
11134
  paused?: boolean;
11135
+ standingLimits: StandingLimits;
10940
11136
  aggregateState: AggregatedState;
10941
11137
  workspaces: string[];
10942
11138
  createdAt: string;
@@ -11347,6 +11543,9 @@ interface BridgeMethods {
11347
11543
  browserProfileSet(payload: unknown): BridgeResult<{
11348
11544
  bot: PersonaBotDetail;
11349
11545
  }>;
11546
+ standingLimitsSet(payload: unknown): BridgeResult<{
11547
+ bot: PersonaBotDetail;
11548
+ }>;
11350
11549
  botAvatarSet(payload: unknown): BridgeResult<{
11351
11550
  bot: PersonaBotDetail;
11352
11551
  }>;
@@ -11363,6 +11562,33 @@ interface BridgeMethods {
11363
11562
  marketplaceReport(payload: unknown): Promise<BridgeResult<{
11364
11563
  received: true;
11365
11564
  }>>;
11565
+ releaseInfo(payload: unknown): BridgeResult<ReleaseInfo>;
11566
+ releaseUpdate(): Promise<BridgeResult<ReleaseUpdate>>;
11567
+ releaseInstall(payload: unknown): Promise<BridgeResult<ReleaseInstall>>;
11568
+ releaseRestart(payload: unknown): Promise<BridgeResult<ReleaseRestart>>;
11569
+ telemetryStatus(): BridgeResult<TelemetryStatus>;
11570
+ telemetrySet(payload: unknown): BridgeResult<TelemetryStatus>;
11571
+ scheduleList(payload: unknown): BridgeResult<{
11572
+ schedules: BotSchedule[];
11573
+ }>;
11574
+ scheduleCreate(payload: unknown): BridgeResult<{
11575
+ schedule: BotSchedule;
11576
+ }>;
11577
+ scheduleUpdate(payload: unknown): BridgeResult<{
11578
+ schedule: BotSchedule;
11579
+ }>;
11580
+ scheduleDelete(payload: unknown): BridgeResult<{
11581
+ removed: boolean;
11582
+ }>;
11583
+ scheduleHistory(payload: unknown): BridgeResult<{
11584
+ firings: BotScheduleFiring[];
11585
+ }>;
11586
+ scheduleRunNow(payload: unknown): BridgeResult<{
11587
+ firing: BotScheduleFiring;
11588
+ }>;
11589
+ schedulePreview(payload: unknown): BridgeResult<{
11590
+ occurrences: string[];
11591
+ }>;
11366
11592
  }
11367
11593
  interface BridgeMethodsDeps {
11368
11594
  warn?: (message: string) => void;
@@ -11381,6 +11607,7 @@ interface BridgeMethodsDeps {
11381
11607
  runtime?: BotRuntime;
11382
11608
  attention?: BotAttentionQuery;
11383
11609
  sourcePolicy?: BotSourcePolicyStore;
11610
+ schedules?: BotScheduleStore;
11384
11611
  humanAttention?: HumanAttentionQuery;
11385
11612
  humanAttentionDecisions?: HumanAttentionDecisions;
11386
11613
  grants?: WorkspaceGrantStore;
@@ -11403,6 +11630,12 @@ interface BridgeMethodsDeps {
11403
11630
  };
11404
11631
  createBotId?: () => string;
11405
11632
  marketplace?: MarketplaceClient;
11633
+ release?: ReleaseService;
11634
+ telemetry?: {
11635
+ status(): TelemetryStatus;
11636
+ setPreference(enabled: boolean): TelemetryStatus;
11637
+ capture?: TelemetryCapture;
11638
+ };
11406
11639
  }
11407
11640
  export declare function createBridgeMethods(deps: BridgeMethodsDeps): BridgeMethods;
11408
11641
  //#endregion
@@ -11521,6 +11754,9 @@ export declare class BotharnessBridgeService extends TypertRemoteService {
11521
11754
  browserProfileSet(slug: string, profile: string): {
11522
11755
  bot: PersonaBotDetail;
11523
11756
  };
11757
+ standingLimitsSet(slug: string, soul: number, coreMemory: number): {
11758
+ bot: PersonaBotDetail;
11759
+ };
11524
11760
  botAvatarSet(channelId: string, avatar: string | null): {
11525
11761
  bot: PersonaBotDetail;
11526
11762
  };
@@ -11768,6 +12004,33 @@ export declare class BotharnessBridgeService extends TypertRemoteService {
11768
12004
  }>;
11769
12005
  marketplaceTopics(): Promise<MarketplaceTopic[]>;
11770
12006
  marketplaceDetail(id: string): Promise<MarketplaceDetail>;
12007
+ releaseInfo(since?: string): Promise<ReleaseInfo>;
12008
+ releaseUpdate(): Promise<ReleaseUpdate>;
12009
+ releaseInstall(version: string): Promise<ReleaseInstall>;
12010
+ releaseRestart(): Promise<ReleaseRestart>;
12011
+ telemetryStatus(): TelemetryStatus;
12012
+ telemetrySet(enabled: boolean): TelemetryStatus;
12013
+ scheduleList(slug: string): {
12014
+ schedules: BotSchedule[];
12015
+ };
12016
+ scheduleCreate(slug: string, input: BotScheduleInput): {
12017
+ schedule: BotSchedule;
12018
+ };
12019
+ scheduleUpdate(slug: string, id: string, change: BotScheduleChange): {
12020
+ schedule: BotSchedule;
12021
+ };
12022
+ scheduleDelete(slug: string, id: string): {
12023
+ removed: boolean;
12024
+ };
12025
+ scheduleHistory(slug: string, id: string): {
12026
+ firings: BotScheduleFiring[];
12027
+ };
12028
+ scheduleRunNow(slug: string, id: string): {
12029
+ firing: BotScheduleFiring;
12030
+ };
12031
+ schedulePreview(trigger: BotScheduleTrigger): {
12032
+ occurrences: string[];
12033
+ };
11771
12034
  }
11772
12035
  export declare function registerBridge(ctx: Context, methods: BridgeMethods): BotharnessBridgeService;
11773
12036
  //#endregion
@@ -11943,6 +12206,7 @@ interface DshImOutboundService {
11943
12206
  id: string;
11944
12207
  name: string;
11945
12208
  bytes: Uint8Array;
12209
+ mediaType?: string;
11946
12210
  }, options: {
11947
12211
  expectedFingerprint: string;
11948
12212
  signal: AbortSignal;
@@ -11970,6 +12234,8 @@ interface DshImOutboundService {
11970
12234
  expectedFingerprint: string;
11971
12235
  signal: AbortSignal;
11972
12236
  sourceFiles?: boolean;
12237
+ sourceImages?: boolean;
12238
+ sourceVoiceTranscripts?: boolean;
11973
12239
  ordinaryText?: boolean;
11974
12240
  onEcho?(event: unknown, context: {
11975
12241
  signal: AbortSignal;