broods 0.14.0 → 0.17.4

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.ts CHANGED
@@ -94,45 +94,6 @@ declare const MODEL_PROVIDERS: {
94
94
  };
95
95
  type AccountModelProviderName = keyof typeof MODEL_PROVIDERS;
96
96
 
97
- /**
98
- * Agent policy contracts and validation.
99
- * Runtime decisions are made by OPA using the same document/input shape.
100
- */
101
- declare const AGENT_POLICY_ACTIONS: readonly ["agent.invoke", "tool.call", "workspace.read", "workspace.write", "workspace.exec", "subagent.run", "skill.load"];
102
- type AgentPolicyAction = (typeof AGENT_POLICY_ACTIONS)[number];
103
- type AgentPolicyEffect = "allow" | "deny";
104
- type AgentPolicyMode = "enforce" | "audit";
105
- type AgentPolicyConditionOperator = "equals" | "notEquals" | "in" | "notIn" | "prefix" | "contains";
106
- interface AgentPolicyCondition {
107
- attribute: string;
108
- operator: AgentPolicyConditionOperator;
109
- value: string | number | boolean | string[] | number[] | boolean[];
110
- }
111
- interface AgentPolicyResourceSelector {
112
- toolNames?: string[];
113
- toolIds?: string[];
114
- workspaceIds?: string[];
115
- workspaceNames?: string[];
116
- filePaths?: string[];
117
- subagentIds?: string[];
118
- skillPaths?: string[];
119
- }
120
- interface AgentPolicyRule {
121
- id: string;
122
- effect: AgentPolicyEffect;
123
- actions: AgentPolicyAction[];
124
- resources?: AgentPolicyResourceSelector;
125
- conditions?: AgentPolicyCondition[];
126
- }
127
- interface AgentPolicyDocument {
128
- version: 1;
129
- rules: AgentPolicyRule[];
130
- }
131
- interface AgentPolicyConfig {
132
- policyIds?: string[];
133
- mode?: AgentPolicyMode;
134
- }
135
-
136
97
  /**
137
98
  * Agent configuration: types for the per-agent settings object, input
138
99
  * normalization, encryption helpers, patch-merge, and redaction.
@@ -162,7 +123,8 @@ interface AgentConfig {
162
123
  skills?: AgentSkillsConfig;
163
124
  subagent?: AgentSubagentConfig;
164
125
  scheduler?: AgentSchedulerConfig;
165
- policy?: AgentPolicyConfig;
126
+ /** Policies that gate this agent. Each one carries its own enforcement mode. */
127
+ policies?: string[];
166
128
  publicAccess?: boolean;
167
129
  [key: string]: unknown;
168
130
  }
@@ -338,7 +300,8 @@ interface AgentTelegramChannelConfig {
338
300
  apiUrl?: string;
339
301
  botToken?: string;
340
302
  webhookSecret?: string;
341
- allowedChatIds?: number[];
303
+ allowedChannelIds?: string[];
304
+ allowedUserIds?: string[];
342
305
  reactionEmoji?: string;
343
306
  trace?: "enabled" | "disabled";
344
307
  workspaceScope?: AgentChannelWorkspaceScope;
@@ -350,7 +313,8 @@ interface AgentGitHubChannelConfig {
350
313
  webhookSecret?: string;
351
314
  appId?: string;
352
315
  privateKey?: string;
353
- allowedRepos?: string[];
316
+ allowedChannelIds?: string[];
317
+ allowedUserIds?: string[];
354
318
  /** Bot username for @-mention detection (e.g. "my-bot" or "my-bot[bot]"). */
355
319
  userName?: string;
356
320
  /** Bot's numeric GitHub user ID for self-message detection. */
@@ -369,6 +333,7 @@ interface AgentSlackChannelConfig {
369
333
  botToken?: string;
370
334
  signingSecret?: string;
371
335
  allowedChannelIds?: string[];
336
+ allowedUserIds?: string[];
372
337
  reactionEmoji?: string;
373
338
  trace?: "enabled" | "disabled";
374
339
  workspaceScope?: AgentChannelWorkspaceScope;
@@ -379,7 +344,8 @@ interface AgentDiscordChannelConfig {
379
344
  apiUrl?: string;
380
345
  botToken?: string;
381
346
  publicKey?: string;
382
- allowedGuildIds?: string[];
347
+ allowedChannelIds?: string[];
348
+ allowedUserIds?: string[];
383
349
  /** Bot's Discord user id. Set it to answer only when the agent is mentioned. */
384
350
  botUserId?: string;
385
351
  /** Role ids that count as mentioning the agent, e.g. an on-call role. */
@@ -389,6 +355,8 @@ interface AgentDiscordChannelConfig {
389
355
  [key: string]: unknown;
390
356
  }
391
357
  interface AgentPancakeChannelConfig {
358
+ allowedChannelIds?: string[];
359
+ allowedUserIds?: string[];
392
360
  id?: string;
393
361
  pageId?: string;
394
362
  pageAccessToken?: string;
@@ -399,11 +367,11 @@ interface AgentPancakeChannelConfig {
399
367
  [key: string]: unknown;
400
368
  }
401
369
  interface AgentZaloChannelConfig {
370
+ allowedChannelIds?: string[];
371
+ allowedUserIds?: string[];
402
372
  id?: string;
403
373
  botToken?: string;
404
374
  webhookSecret?: string;
405
- allowedUserIds?: string[];
406
- allowedGroupIds?: string[];
407
375
  trace?: "enabled" | "disabled";
408
376
  workspaceScope?: AgentChannelWorkspaceScope;
409
377
  [key: string]: unknown;
@@ -544,6 +512,60 @@ interface WorkspaceConfig {
544
512
  harness?: WorkspaceHarnessConfig;
545
513
  }
546
514
 
515
+ /**
516
+ * Agent policy contracts and validation.
517
+ * Runtime decisions are made by OPA using the same document/input shape.
518
+ */
519
+ declare const POLICY_ACTIONS: readonly ["agent.invoke", "tool.call", "workspace.read", "workspace.write", "workspace.exec", "subagent.run", "skill.load"];
520
+ type PolicyAction = (typeof POLICY_ACTIONS)[number];
521
+ type PolicyEffect = "allow" | "deny";
522
+ type PolicyMode = "enforce" | "audit";
523
+ type PolicyConditionOperator = "equals" | "notEquals" | "in" | "notIn" | "prefix" | "contains";
524
+ interface PolicyCondition {
525
+ attribute: string;
526
+ operator: PolicyConditionOperator;
527
+ value: string | number | boolean | string[] | number[] | boolean[];
528
+ }
529
+ interface PolicyResourceSelector {
530
+ toolNames?: string[];
531
+ toolIds?: string[];
532
+ workspaceIds?: string[];
533
+ workspaceNames?: string[];
534
+ filePaths?: string[];
535
+ subagentIds?: string[];
536
+ skillPaths?: string[];
537
+ }
538
+ interface PolicyRule {
539
+ id: string;
540
+ effect: PolicyEffect;
541
+ actions: PolicyAction[];
542
+ resources?: PolicyResourceSelector;
543
+ conditions?: PolicyCondition[];
544
+ }
545
+ interface PolicyDocument {
546
+ version: 1;
547
+ /**
548
+ * How hard this policy bites. `audit` records what it would have done and
549
+ * blocks nothing; `enforce` lets its deny rules refuse, and switches the
550
+ * places it is attached to over to default-deny. Omitted reads as `audit`,
551
+ * so a freshly written policy can never break a running agent.
552
+ */
553
+ mode?: PolicyMode;
554
+ rules: PolicyRule[];
555
+ }
556
+
557
+ /**
558
+ * Channel records: an account-scoped row per real place a team talks — one Slack
559
+ * channel, one Discord channel, one repository. It binds that place to an agent
560
+ * and adds instructions, workspaces, policies and roles scoped to it.
561
+ * Distinct from `config.channels`, which holds one adapter's credentials.
562
+ * A record narrows and adds; it never grants capability the agent lacks.
563
+ */
564
+
565
+ /** Where a reply lands: its own thread, or wherever the message came from. */
566
+ declare const CHANNEL_REPLY_TARGETS: readonly ["thread", "source"];
567
+ type ChannelReplyIn = (typeof CHANNEL_REPLY_TARGETS)[number];
568
+
547
569
  /**
548
570
  * Telegram channel adapter implementated as a ChannelAdapter.
549
571
  * Implements Telegram auth, message normalization, and reply actions through the Chat SDK Telegram adapter.
@@ -925,11 +947,11 @@ type WebSocketClientMessage = WebSocketClientExecuteMessage | WebSocketClientCon
925
947
  * the gateway, the SDK/CLI, and the dashboard. Pure types + tiny pure helpers,
926
948
  * zero runtime deps. Kept separate from the agent-test websocket-contracts.
927
949
  */
928
- type LogLevel = "INFO" | "WARN" | "ERROR";
950
+ type LogLevel = "DEBUG" | "INFO" | "WARN" | "ERROR";
929
951
  declare const MAX_OBSERVABILITY_BACKFILL = 500;
930
952
  type ObservabilityLogEntry = {
931
953
  ts: number;
932
- level: LogLevel | "DEBUG";
954
+ level: LogLevel;
933
955
  eventType: string;
934
956
  message: string;
935
957
  traceId?: string;
@@ -990,6 +1012,8 @@ type ObservabilityErrorMessage = {
990
1012
  };
991
1013
  type ObservabilityServerMessage = ObservabilityReadyMessage | ObservabilityBackfillMessage | ObservabilityLogMessage | ObservabilitySpanMessage | ObservabilityErrorMessage;
992
1014
  declare function isObservabilityClientMessage(v: unknown): v is ObservabilityClientMessage;
1015
+ /** Narrow an unknown wire value to a LogLevel. */
1016
+ declare function isLogLevel(value: unknown): value is LogLevel;
993
1017
  /** Whether a span is a top-level run, each of which owns its own trace. */
994
1018
  declare function isRootSpanKind(kind: ObservabilitySpanRow["kind"]): boolean;
995
1019
 
@@ -1257,7 +1281,7 @@ interface AccountPolicy {
1257
1281
  policyId: string;
1258
1282
  name: string;
1259
1283
  description?: string;
1260
- document: AgentPolicyDocument;
1284
+ document: PolicyDocument;
1261
1285
  status: string;
1262
1286
  createdAt: string;
1263
1287
  updatedAt: string;
@@ -1292,9 +1316,8 @@ interface ChannelRecordConfig {
1292
1316
  name: string;
1293
1317
  workspaceId: string;
1294
1318
  }>;
1295
- policyIds?: string[];
1296
- /** Enforcement stage here. `audit` watches a rule before it refuses anyone. */
1297
- policyMode?: "enforce" | "audit";
1319
+ /** Added to whatever the agent already carries. Each policy holds its own mode. */
1320
+ policies?: string[];
1298
1321
  /**
1299
1322
  * Tool names withheld in this channel, applied after the tool set is built —
1300
1323
  * so it also covers sandbox tools (`bash`, `read`, …) that `config.tools`
@@ -1302,18 +1325,18 @@ interface ChannelRecordConfig {
1302
1325
  */
1303
1326
  denyTools?: string[];
1304
1327
  /**
1305
- * Where the reply lands. `inline` answers in the channel and threads only
1306
- * when the message already did. Slack only — no other provider gives the
1307
- * runtime a second place to reply.
1328
+ * Where the reply lands. `source` answers wherever the message came from, and
1329
+ * threads only when the message already did. Slack only — no other provider
1330
+ * gives the runtime a second place to reply.
1308
1331
  */
1309
- threadPolicy?: "always-thread" | "inline";
1332
+ replyIn?: ChannelReplyIn;
1310
1333
  workspaceScope?: AgentChannelWorkspaceScope;
1311
1334
  /** Images the agent may stand a sandbox up from for a thread here. */
1312
1335
  sandboxImages?: string[];
1313
- /** Named groups of people, readable from policy conditions as `actorRoles`. */
1336
+ /** Named groups of people, readable from policy conditions as `userRoles`. */
1314
1337
  tagRoles?: Array<{
1315
1338
  roleId: string;
1316
- actorIds: string[];
1339
+ userIds: string[];
1317
1340
  }>;
1318
1341
  }
1319
1342
  /** The stage a tool belongs to. Tools with the same name in two stages are two tools. */
@@ -1522,14 +1545,14 @@ declare class BroodsAccountClient {
1522
1545
  createPolicy(input: {
1523
1546
  name: string;
1524
1547
  description?: string;
1525
- document: AgentPolicyDocument;
1548
+ document: PolicyDocument;
1526
1549
  }): Promise<AccountPolicy>;
1527
1550
  getPolicy(policyId: string): Promise<AccountPolicy | null>;
1528
1551
  /** PATCH a policy. `description: null` clears it. Returns null when the policy is gone. */
1529
1552
  updatePolicy(policyId: string, patch: {
1530
1553
  name?: string;
1531
1554
  description?: string | null;
1532
- document?: AgentPolicyDocument;
1555
+ document?: PolicyDocument;
1533
1556
  status?: string;
1534
1557
  }): Promise<AccountPolicy | null>;
1535
1558
  deletePolicy(policyId: string): Promise<boolean>;
@@ -1665,7 +1688,7 @@ declare function toWebSocketBaseUrl(url: string): string;
1665
1688
 
1666
1689
  declare const RESOURCE_MARKER: unique symbol;
1667
1690
  declare const CONFIG_MARKER: unique symbol;
1668
- declare const CHANNEL_MARKER: unique symbol;
1691
+ declare const CONNECTION_MARKER: unique symbol;
1669
1692
  interface EnvRef<Name extends string = string> {
1670
1693
  readonly __beeblastEnv: true;
1671
1694
  readonly name: Name;
@@ -1772,46 +1795,148 @@ interface ToolDefinitionConfig<Input = Record<string, unknown>> {
1772
1795
  */
1773
1796
  defaultConfig?: Record<string, unknown>;
1774
1797
  }
1775
- type PolicyDefinitionConfig = Omit<AgentPolicyDocument, "version"> & {
1776
- version?: AgentPolicyDocument["version"];
1798
+ type PolicyDefinitionConfig = Omit<PolicyDocument, "version"> & {
1799
+ version?: PolicyDocument["version"];
1777
1800
  };
1778
1801
  type ChannelType = "telegram" | "github" | "slack" | "discord" | "pancake" | "zalo";
1779
- interface ChannelDefinition<Type extends ChannelType, Config> {
1780
- readonly [CHANNEL_MARKER]: true;
1781
- readonly kind: "channel";
1802
+ /**
1803
+ * A connection is one app install: the credentials an agent needs before a
1804
+ * provider can reach it at all. Channels point at a connection; a connection
1805
+ * never points back, which is what keeps the reference graph acyclic.
1806
+ */
1807
+ interface ConnectionDefinition<Type extends ChannelType, Config> {
1808
+ readonly [CONNECTION_MARKER]: true;
1809
+ readonly kind: "connection";
1782
1810
  readonly type: Type;
1783
- readonly workspaceScope?: AgentChannelWorkspaceScope;
1784
- readonly config: Config;
1811
+ readonly partition?: ChannelPartition;
1812
+ /** `partition` is lifted out of the authored input, so it is not in here. */
1813
+ readonly config: Omit<Config, "partition">;
1785
1814
  }
1815
+ /**
1816
+ * How an attached partitioned workspace splits its folders for runs arriving
1817
+ * through this door. `shared` mounts the workspace root; `conversation` mounts
1818
+ * a private child folder per thread, issue or chat under `alias`.
1819
+ */
1820
+ type ChannelPartition = {
1821
+ by: "shared";
1822
+ alias?: never;
1823
+ } | {
1824
+ by: "conversation";
1825
+ alias: string;
1826
+ };
1827
+ /**
1828
+ * An agent bound to a channel. Every bound agent runs when a message arrives;
1829
+ * `reply: false` runs it with a silenced channel, so it can work without
1830
+ * speaking in the room.
1831
+ */
1832
+ type ChannelAgentInput = AgentResource | {
1833
+ agent: AgentResource;
1834
+ reply?: boolean;
1835
+ };
1786
1836
  type RequiredChannelKeys<Config, Keys extends keyof Config> = Required<Pick<Config, Keys>> & Omit<Config, Keys>;
1787
1837
  type ChannelSecret = string | EnvRef | undefined;
1788
- type ChannelIdentityInput = {
1838
+ type ConnectionIdentityInput = {
1839
+ /** Include the dashboard trace link in channel replies. Off by default. */
1789
1840
  trace?: "enabled" | "disabled";
1790
- workspaceScope?: AgentChannelWorkspaceScope;
1841
+ partition?: ChannelPartition;
1842
+ /**
1843
+ * Rooms this connection answers in, on top of every channel declared against
1844
+ * it. Use `["*"]` to answer everywhere instead, which is the only reason to
1845
+ * name rooms here at all: a room with rules belongs in a channel resource.
1846
+ */
1847
+ allowedChannelIds?: readonly string[];
1848
+ /** Provider user ids allowed to trigger the agent. `["*"]` or omitted is everyone. */
1849
+ allowedUserIds?: readonly string[];
1791
1850
  };
1792
- type TelegramChannelInput = EnvRefString<RequiredChannelKeys<Pick<AgentTelegramChannelConfig, "apiUrl" | "botToken" | "webhookSecret" | "allowedChatIds" | "reactionEmoji">, "botToken" | "webhookSecret" | "allowedChatIds">> & ChannelIdentityInput;
1793
- type GitHubChannelInput = EnvRefString<RequiredChannelKeys<Pick<AgentGitHubChannelConfig, "apiUrl" | "webhookSecret" | "appId" | "privateKey" | "allowedRepos" | "userName" | "botUserId" | "triggerOnIssueOpen" | "triggerOnPROpen">, "webhookSecret" | "appId" | "privateKey">> & ChannelIdentityInput;
1794
- type SlackChannelInput = EnvRefString<RequiredChannelKeys<Pick<AgentSlackChannelConfig, "apiUrl" | "botToken" | "signingSecret" | "allowedChannelIds" | "reactionEmoji">, "botToken" | "signingSecret">> & ChannelIdentityInput;
1795
- type DiscordChannelInput = EnvRefString<RequiredChannelKeys<Pick<AgentDiscordChannelConfig, "apiUrl" | "botToken" | "publicKey" | "allowedGuildIds" | "botUserId" | "mentionRoleIds">, "botToken" | "publicKey">> & ChannelIdentityInput;
1796
- interface PancakeChannelInput extends ChannelIdentityInput {
1851
+ type TelegramConnectionInput = EnvRefString<RequiredChannelKeys<Pick<AgentTelegramChannelConfig, "apiUrl" | "botToken" | "webhookSecret" | "reactionEmoji">, "botToken" | "webhookSecret">> & ConnectionIdentityInput;
1852
+ type GitHubConnectionInput = EnvRefString<RequiredChannelKeys<Pick<AgentGitHubChannelConfig, "apiUrl" | "webhookSecret" | "appId" | "privateKey" | "userName" | "botUserId" | "triggerOnIssueOpen" | "triggerOnPROpen">, "webhookSecret" | "appId" | "privateKey">> & ConnectionIdentityInput;
1853
+ type SlackConnectionInput = EnvRefString<RequiredChannelKeys<Pick<AgentSlackChannelConfig, "apiUrl" | "botToken" | "signingSecret" | "reactionEmoji">, "botToken" | "signingSecret">> & ConnectionIdentityInput;
1854
+ type DiscordConnectionInput = EnvRefString<RequiredChannelKeys<Pick<AgentDiscordChannelConfig, "apiUrl" | "botToken" | "publicKey" | "botUserId" | "mentionRoleIds">, "botToken" | "publicKey">> & ConnectionIdentityInput;
1855
+ interface PancakeConnectionInput extends ConnectionIdentityInput {
1797
1856
  pageId: ChannelSecret;
1798
1857
  pageAccessToken: ChannelSecret;
1799
1858
  webhookSecret: ChannelSecret;
1800
1859
  senderId?: string | EnvRef;
1801
1860
  }
1802
- interface ZaloChannelInput extends ChannelIdentityInput {
1861
+ interface ZaloConnectionInput extends ConnectionIdentityInput {
1803
1862
  botToken: ChannelSecret;
1804
1863
  webhookSecret: ChannelSecret;
1805
- allowedUserIds?: readonly (string | EnvRef)[];
1806
- allowedGroupIds?: readonly (string | EnvRef)[];
1807
- }
1808
- type TelegramChannelDefinition = ChannelDefinition<"telegram", TelegramChannelInput>;
1809
- type GitHubChannelDefinition = ChannelDefinition<"github", GitHubChannelInput>;
1810
- type SlackChannelDefinition = ChannelDefinition<"slack", SlackChannelInput>;
1811
- type DiscordChannelDefinition = ChannelDefinition<"discord", DiscordChannelInput>;
1812
- type PancakeChannelDefinition = ChannelDefinition<"pancake", PancakeChannelInput>;
1813
- type ZaloChannelDefinition = ChannelDefinition<"zalo", ZaloChannelInput>;
1814
- type AnyChannelDefinition = TelegramChannelDefinition | GitHubChannelDefinition | SlackChannelDefinition | DiscordChannelDefinition | PancakeChannelDefinition | ZaloChannelDefinition;
1864
+ }
1865
+ type TelegramConnectionDefinition = ConnectionDefinition<"telegram", TelegramConnectionInput>;
1866
+ type GitHubConnectionDefinition = ConnectionDefinition<"github", GitHubConnectionInput>;
1867
+ type SlackConnectionDefinition = ConnectionDefinition<"slack", SlackConnectionInput>;
1868
+ type DiscordConnectionDefinition = ConnectionDefinition<"discord", DiscordConnectionInput>;
1869
+ type PancakeConnectionDefinition = ConnectionDefinition<"pancake", PancakeConnectionInput>;
1870
+ type ZaloConnectionDefinition = ConnectionDefinition<"zalo", ZaloConnectionInput>;
1871
+ type AnyConnectionDefinition = TelegramConnectionDefinition | GitHubConnectionDefinition | SlackConnectionDefinition | DiscordConnectionDefinition | PancakeConnectionDefinition | ZaloConnectionDefinition;
1872
+ /**
1873
+ * One real place a team talks: a Slack channel, a Discord channel, a repo. It
1874
+ * narrows and adds — instructions append, policies union, tools and workspaces
1875
+ * only narrow — and never grants what a bound agent lacks. It names the
1876
+ * connection it belongs to, so `platform` is never written by hand.
1877
+ */
1878
+ type ChannelDefinitionConfig = {
1879
+ connection: AnyConnectionDefinition;
1880
+ /** Provider id of the place, from the per-platform field on the input. */
1881
+ externalId: string;
1882
+ /** Team, guild or repo owner the place sits in, when the provider has one. */
1883
+ workspaceRef?: string;
1884
+ /** Every one of these runs. Omit and the connection's own agent answers. */
1885
+ agents?: readonly ChannelAgentInput[];
1886
+ /** Appended after each agent's own system prompt, never replacing it. */
1887
+ instructions?: string;
1888
+ /** Selects from what the agent already attaches; anything else is dropped. */
1889
+ workspaces?: readonly AgentWorkspaceInput[];
1890
+ /** Added to whatever the agent already carries. Each policy holds its own mode. */
1891
+ policies?: readonly (PolicyResource | string)[];
1892
+ denyTools?: readonly string[];
1893
+ /** Where the reply lands. Slack only. */
1894
+ replyIn?: ChannelReplyIn;
1895
+ partition?: ChannelPartition;
1896
+ sandboxImages?: readonly string[];
1897
+ tagRoles?: readonly {
1898
+ roleId: string;
1899
+ userIds: readonly string[];
1900
+ }[];
1901
+ };
1902
+ /** Rules shared by every channel, whatever the provider calls its rooms. */
1903
+ type ChannelRulesInput = Omit<ChannelDefinitionConfig, "connection" | "externalId" | "workspaceRef" | "replyIn">;
1904
+ type SlackChannelInput = ChannelRulesInput & {
1905
+ connection: SlackConnectionDefinition;
1906
+ /** Slack channel id, e.g. "C0123ABCD". */
1907
+ channelId: string;
1908
+ /** Slack team id the channel sits in. */
1909
+ teamId?: string;
1910
+ /** Where the reply lands. Slack is the only provider with a choice. */
1911
+ replyIn?: ChannelReplyIn;
1912
+ };
1913
+ type DiscordChannelInput = ChannelRulesInput & {
1914
+ connection: DiscordConnectionDefinition;
1915
+ /** Discord channel id (a snowflake). */
1916
+ channelId: string;
1917
+ /** Guild the channel sits in. */
1918
+ guildId?: string;
1919
+ };
1920
+ type GitHubChannelInput = ChannelRulesInput & {
1921
+ connection: GitHubConnectionDefinition;
1922
+ /** Repository full name, e.g. "beeblast/api". */
1923
+ repo: string;
1924
+ };
1925
+ type TelegramChannelInput = ChannelRulesInput & {
1926
+ connection: TelegramConnectionDefinition;
1927
+ /** Telegram chat id, e.g. "-1001234567". */
1928
+ chatId: string;
1929
+ };
1930
+ type ZaloChannelInput = ChannelRulesInput & {
1931
+ connection: ZaloConnectionDefinition;
1932
+ /** Zalo user or group chat id. */
1933
+ chatId: string;
1934
+ };
1935
+ type PancakeChannelInput = ChannelRulesInput & {
1936
+ connection: PancakeConnectionDefinition;
1937
+ /** Pancake conversation id. */
1938
+ conversationId: string;
1939
+ };
1815
1940
  /**
1816
1941
  * Per-agent workspace mount with an optional sandbox override. A bare
1817
1942
  * `defineWorkspace(...)` inherits the agent-level sandbox; the object form lets
@@ -1959,9 +2084,6 @@ interface AgentHooks {
1959
2084
  text?: string;
1960
2085
  }>;
1961
2086
  }
1962
- type AgentPolicyDefinitionConfig = Omit<AgentPolicyConfig, "policyIds"> & {
1963
- policies?: readonly (PolicyResource | string)[];
1964
- };
1965
2087
  /**
1966
2088
  * Code-first agent config surface. Built from an explicit `Pick` of `AgentConfig`
1967
2089
  * (not `Omit`) so the SDK input type does NOT inherit `AgentConfig`'s
@@ -1993,12 +2115,13 @@ type AgentDefinitionConfig = EnvRefString<Pick<AgentConfig, "agent" | "model" |
1993
2115
  hooks?: AgentHooks & {
1994
2116
  webhooks?: readonly EnvRefString<AgentWebhookHookConfig>[];
1995
2117
  };
1996
- channels?: readonly AnyChannelDefinition[];
2118
+ connections?: readonly AnyConnectionDefinition[];
1997
2119
  sandbox?: SandboxResource | string;
1998
2120
  workspaces?: readonly AgentWorkspaceInput[];
1999
2121
  subagent?: AgentSubagentDefinitionConfig;
2000
2122
  skills?: AgentSkillsDefinitionConfig;
2001
- policy?: AgentPolicyDefinitionConfig;
2123
+ /** Policies that gate this agent. Each one carries its own enforcement mode. */
2124
+ policies?: readonly (PolicyResource | string)[];
2002
2125
  /**
2003
2126
  * Opt the agent into the public runtime endpoint (SSE/WebSocket via the
2004
2127
  * stage runtime key). Off by default — secured: when unset the public
@@ -2010,45 +2133,24 @@ type AgentDefinitionConfig = EnvRefString<Pick<AgentConfig, "agent" | "model" |
2010
2133
  type CronDefinitionConfig = Omit<CreateCronInput, "agentId" | "name"> & {
2011
2134
  agent: AgentResource | string;
2012
2135
  };
2136
+ type AgentResource<Name extends string = string> = ResourceDefinition<"agent", Name, AgentDefinitionConfig>;
2013
2137
  /**
2014
- * Binds one real place — a Slack channel, a Discord channel, a repo — to the
2015
- * agent that answers there. Distinct from `channels` on an agent, which carries
2016
- * one adapter's credentials: those say how to reach Slack, this says who replies
2017
- * in #product-eng. A record narrows and adds, never granting what the agent lacks.
2138
+ * Code-first workspace config. Says `partitioned` where storage says
2139
+ * `isolation`: the flag permits a split, it does not perform one — a channel's
2140
+ * `partition` decides which folder a run actually mounts.
2018
2141
  */
2019
- type ChannelRecordDefinitionConfig = {
2020
- platform: ChannelType;
2021
- /** Provider id of the place: a Slack channel id, or an owner/repo. */
2022
- externalId: string;
2023
- /** Team or guild the place sits in, when the provider has one. */
2024
- workspaceRef?: string;
2025
- /** Who answers here. The first is the default when a turn matches no other. */
2026
- agents: readonly (AgentResource | string)[];
2027
- /** Appended after the bound agent's own system prompt. */
2028
- instructions?: string;
2029
- /** Selects from what the agent already attaches; anything else is dropped. */
2030
- workspaces?: readonly AgentWorkspaceInput[];
2031
- policies?: readonly (PolicyResource | string)[];
2032
- policyMode?: AgentPolicyConfig["mode"];
2033
- denyTools?: readonly string[];
2034
- /** Where the reply lands. Slack only — see the channel-records docs. */
2035
- threadPolicy?: "always-thread" | "inline";
2036
- workspaceScope?: AgentChannelWorkspaceScope;
2037
- sandboxImages?: readonly string[];
2038
- tagRoles?: readonly {
2039
- roleId: string;
2040
- actorIds: readonly string[];
2041
- }[];
2142
+ type WorkspaceDefinitionConfig = Omit<WorkspaceConfig, "isolation"> & {
2143
+ /** Allow this workspace to be split into per-conversation folders. */
2144
+ partitioned?: boolean;
2042
2145
  };
2043
- type AgentResource<Name extends string = string> = ResourceDefinition<"agent", Name, AgentDefinitionConfig>;
2044
- type WorkspaceResource<Name extends string = string> = ResourceDefinition<"workspace", Name, WorkspaceConfig>;
2146
+ type WorkspaceResource<Name extends string = string> = ResourceDefinition<"workspace", Name, WorkspaceDefinitionConfig>;
2045
2147
  type SandboxResource<Name extends string = string> = ResourceDefinition<"sandbox", Name, SandboxDefinitionConfig>;
2046
2148
  type SkillResource<Name extends string = string> = ResourceDefinition<"skill", Name, SkillDefinitionConfig>;
2047
2149
  type ToolResource<Name extends string = string> = ResourceDefinition<"tool", Name, ToolDefinitionConfig>;
2048
2150
  type PolicyResource<Name extends string = string> = ResourceDefinition<"policy", Name, PolicyDefinitionConfig>;
2049
2151
  type CronResource<Name extends string = string> = ResourceDefinition<"cron", Name, CronDefinitionConfig>;
2050
- type ChannelRecordResource<Name extends string = string> = ResourceDefinition<"channelRecord", Name, ChannelRecordDefinitionConfig>;
2051
- type AnyResource = AgentResource | WorkspaceResource | SandboxResource | CronResource | SkillResource | ToolResource | PolicyResource | ChannelRecordResource;
2152
+ type ChannelResource<Name extends string = string> = ResourceDefinition<"channelRecord", Name, ChannelDefinitionConfig>;
2153
+ type AnyResource = AgentResource | WorkspaceResource | SandboxResource | CronResource | SkillResource | ToolResource | PolicyResource | ChannelResource;
2052
2154
  /**
2053
2155
  * References an account/environment variable resolved on the SERVER at runtime —
2054
2156
  * set it with `broods env set <NAME>` or in the dashboard (the Convex-style
@@ -2062,27 +2164,32 @@ type AnyResource = AgentResource | WorkspaceResource | SandboxResource | CronRes
2062
2164
  * bake the literal local value into the deployed config instead of deferring it.
2063
2165
  */
2064
2166
  declare const env: EnvAccessor;
2065
- declare function defineTelegramChannel(config: TelegramChannelInput): TelegramChannelDefinition;
2066
- declare function defineGitHubChannel(config: GitHubChannelInput): GitHubChannelDefinition;
2067
- declare function defineSlackChannel(config: SlackChannelInput): SlackChannelDefinition;
2068
- declare function defineDiscordChannel(config: DiscordChannelInput): DiscordChannelDefinition;
2069
- declare function definePancakeChannel(config: PancakeChannelInput): PancakeChannelDefinition;
2070
- declare function defineZaloChannel(config: ZaloChannelInput): ZaloChannelDefinition;
2167
+ declare function defineDiscordConnection(config: DiscordConnectionInput): DiscordConnectionDefinition;
2168
+ declare function defineGitHubConnection(config: GitHubConnectionInput): GitHubConnectionDefinition;
2169
+ declare function definePancakeConnection(config: PancakeConnectionInput): PancakeConnectionDefinition;
2170
+ declare function defineSlackConnection(config: SlackConnectionInput): SlackConnectionDefinition;
2171
+ declare function defineTelegramConnection(config: TelegramConnectionInput): TelegramConnectionDefinition;
2172
+ declare function defineZaloConnection(config: ZaloConnectionInput): ZaloConnectionDefinition;
2173
+ declare function defineDiscordChannel<const Name extends string>(input: ResourceInput<Name, DiscordChannelInput>): ChannelResource<Name>;
2174
+ declare function defineGitHubChannel<const Name extends string>(input: ResourceInput<Name, GitHubChannelInput>): ChannelResource<Name>;
2175
+ declare function definePancakeChannel<const Name extends string>(input: ResourceInput<Name, PancakeChannelInput>): ChannelResource<Name>;
2176
+ declare function defineSlackChannel<const Name extends string>(input: ResourceInput<Name, SlackChannelInput>): ChannelResource<Name>;
2177
+ declare function defineTelegramChannel<const Name extends string>(input: ResourceInput<Name, TelegramChannelInput>): ChannelResource<Name>;
2178
+ declare function defineZaloChannel<const Name extends string>(input: ResourceInput<Name, ZaloChannelInput>): ChannelResource<Name>;
2071
2179
  declare function defineBroods(config: BroodsProjectConfig): BroodsConfigDefinition;
2072
2180
  declare function defineAgent<const Name extends string>(input: ResourceInput<Name, AgentDefinitionConfig>): AgentResource<Name>;
2073
2181
  declare function defineHarness<const Definition extends HarnessDefinition>(definition: Definition): Definition;
2074
- declare function defineWorkspace<const Name extends string>(input: ResourceInput<Name, WorkspaceConfig>): WorkspaceResource<Name>;
2182
+ declare function defineWorkspace<const Name extends string>(input: ResourceInput<Name, WorkspaceDefinitionConfig>): WorkspaceResource<Name>;
2075
2183
  declare function defineSandbox<const Name extends string>(input: ResourceInput<Name, SandboxDefinitionConfig>): SandboxResource<Name>;
2076
2184
  declare function defineSkill<const Name extends string>(input: ResourceInput<Name, SkillDefinitionConfig>): SkillResource<Name>;
2077
2185
  declare function defineTool<const Name extends string, Input = Record<string, unknown>>(input: {
2078
2186
  name: Name;
2079
2187
  } & ToolDefinitionConfig<Input>): ToolResource<Name>;
2080
2188
  declare function definePolicy<const Name extends string>(input: ResourceInput<Name, PolicyDefinitionConfig>): PolicyResource<Name>;
2081
- declare function defineChannelRecord<const Name extends string>(input: ResourceInput<Name, ChannelRecordDefinitionConfig>): ChannelRecordResource<Name>;
2082
2189
  declare function defineCron<const Name extends string>(input: ResourceInput<Name, CronDefinitionConfig>): CronResource<Name>;
2083
2190
  declare function isResource(value: unknown): value is AnyResource;
2084
- declare function isChannelDefinition(value: unknown): value is AnyChannelDefinition;
2191
+ declare function isConnectionDefinition(value: unknown): value is AnyConnectionDefinition;
2085
2192
  declare function isBroodsConfig(value: unknown): value is BroodsConfigDefinition;
2086
2193
 
2087
- export { BroodsAccountApiError, BroodsAccountClient, BroodsClient, BroodsWebSocketClient, DEFAULT_CORE_BASE_URL, IngressAcceptedError, MAX_OBSERVABILITY_BACKFILL, BroodsWebSocketClient as WebSocketClient, BroodsWebSocketClient as WebsocketClient, defineAgent, defineBroods, defineChannelRecord, defineCron, defineDiscordChannel, defineGitHubChannel, defineHarness, definePancakeChannel, definePolicy, defineSandbox, defineSkill, defineSlackChannel, defineTelegramChannel, defineTool, defineWorkspace, defineZaloChannel, env, envPlaceholder, isBroodsConfig, isChannelDefinition, isObservabilityClientMessage, isResource, isRootSpanKind, normalizeHttpServiceUrl, readSseStream, resolveRunEvents, toWebSocketBaseUrl };
2088
- export type { Account, AccountAgent, AccountChannel, AccountEnvVar, AccountPolicy, AccountSandbox, AccountTool, AccountWorkspace, Agent, AgentChannelWorkspaceScope, AgentChannelsConfig, AgentCodeHookConfig, AgentConfig, AgentConfigDoc, AgentDefinitionConfig, AgentDiscordChannelConfig, AgentGitHubChannelConfig, AgentHandle, AgentHookEventName, AgentHooks, AgentHooksConfig, AgentPancakeChannelConfig, AgentPolicyConfig, AgentPolicyDefinitionConfig, AgentPolicyDocument, AgentProviderSettings, AgentReference, AgentResource, AgentRunEventInput, AgentRunInput, AgentRunModelOverrides, AgentRunOverrides, AgentRunResult, AgentSkillsDefinitionConfig, AgentSlackChannelConfig, AgentStreamPart, AgentSubagentDefinitionConfig, AgentTelegramChannelConfig, AgentWebhookHookConfig, AgentWorkspaceInput, AgentWorkspaceRef, AgentWorkspaceRefInput, AgentZaloChannelConfig, AnyChannelDefinition, AnyResource, AsyncAgentRun, AsyncPollOptions, AsyncRequestAccepted, AsyncStatus, BroodsAccount, BroodsAccountClientOptions, BroodsClientOptions, BroodsConfigDefinition, BroodsProjectConfig, BroodsWebSocketClientOptions, ChannelDefinition, ChannelMessageReceived, ChannelRecordConfig, ChannelRecordDefinitionConfig, ChannelRecordResource, ChannelReference, ChannelType, CliManifest, CliManifestResource, CliResourceKind, CreateAgentResult, CreateClientCronInput, CreateCronInput, CreateToolInput, Cron, CronDefinitionConfig, CronDoc, CronLastStatus, CronResource, CronRun, CronStatus, CustomTool, DeleteAccountResult, DiscordChannelDefinition, DiscordChannelInput, DiscordMessageSource, DiscordSource, Doc, EnvAccessor, EnvRef, EnvRefString, GeneratedIds, GitHubChannelDefinition, GitHubChannelInput, GitHubMessageSource, GitHubSource, HarnessDefinition, HarnessType, HookContext, Id, IngressMode, IngressStatus, LogLevel, ObservabilityBackfillMessage, ObservabilityClientMessage, ObservabilityErrorMessage, ObservabilityLogEntry, ObservabilityLogMessage, ObservabilityReadyMessage, ObservabilityServerMessage, ObservabilitySpanMessage, ObservabilitySpanRow, ObservabilitySubscribeMessage, ObservabilityUnsubscribeMessage, PancakeChannelDefinition, PancakeChannelInput, PancakeMessageSource, PancakeSource, PolicyDefinitionConfig, PolicyResource, ProjectDoc, ProviderConfigInput, ProviderSettingsInput, ResourceApi, ResourceDefinition, ResourceInput, ResourceKind, RotateSecretResult, Sandbox, SandboxConfig, SandboxConfigDoc, SandboxDefinitionConfig, SandboxLifecycleResult, SandboxResource, SandboxSnapshotResult, SandboxTerminalTicket, Skill, SkillDefinitionConfig, SkillResource, SkillUploadInput, SlackChannelDefinition, SlackChannelInput, SlackMessageSource, SlackSource, StageDoc, TelegramChannelDefinition, TelegramChannelInput, TelegramMessageSource, TelegramSource, ToolApprovalSummary, ToolDefinitionConfig, ToolExecuteContext, ToolExecuteOptions, ToolResource, ToolScope, UpdateAgentInput, UpdateCronInput, UpdateToolInput, WebSocketAttachInput, WebSocketClientAttachMessage, WebSocketClientCancelMessage, WebSocketClientControlMessage, WebSocketClientExecuteMessage, WebSocketClientMessage, WebSocketConstructorLike, WebSocketHandlers, WebSocketLike, WebSocketOutputMessage, WebSocketRunInput, WebSocketServerMessage, WebSocketStreamMessage, WebSocketSubscription, Workspace, WorkspaceConfig, WorkspaceConfigDoc, WorkspaceFileEntry, WorkspaceResource, ZaloChannelDefinition, ZaloChannelInput, ZaloMessageSource, ZaloSource };
2194
+ export { BroodsAccountApiError, BroodsAccountClient, BroodsClient, BroodsWebSocketClient, DEFAULT_CORE_BASE_URL, IngressAcceptedError, MAX_OBSERVABILITY_BACKFILL, BroodsWebSocketClient as WebSocketClient, BroodsWebSocketClient as WebsocketClient, defineAgent, defineBroods, defineCron, defineDiscordChannel, defineDiscordConnection, defineGitHubChannel, defineGitHubConnection, defineHarness, definePancakeChannel, definePancakeConnection, definePolicy, defineSandbox, defineSkill, defineSlackChannel, defineSlackConnection, defineTelegramChannel, defineTelegramConnection, defineTool, defineWorkspace, defineZaloChannel, defineZaloConnection, env, envPlaceholder, isBroodsConfig, isConnectionDefinition, isLogLevel, isObservabilityClientMessage, isResource, isRootSpanKind, normalizeHttpServiceUrl, readSseStream, resolveRunEvents, toWebSocketBaseUrl };
2195
+ export type { Account, AccountAgent, AccountChannel, AccountEnvVar, AccountPolicy, AccountSandbox, AccountTool, AccountWorkspace, Agent, AgentChannelWorkspaceScope, AgentChannelsConfig, AgentCodeHookConfig, AgentConfig, AgentConfigDoc, AgentDefinitionConfig, AgentDiscordChannelConfig, AgentGitHubChannelConfig, AgentHandle, AgentHookEventName, AgentHooks, AgentHooksConfig, AgentPancakeChannelConfig, AgentProviderSettings, AgentReference, AgentResource, AgentRunEventInput, AgentRunInput, AgentRunModelOverrides, AgentRunOverrides, AgentRunResult, AgentSkillsDefinitionConfig, AgentSlackChannelConfig, AgentStreamPart, AgentSubagentDefinitionConfig, AgentTelegramChannelConfig, AgentWebhookHookConfig, AgentWorkspaceInput, AgentWorkspaceRef, AgentWorkspaceRefInput, AgentZaloChannelConfig, AnyConnectionDefinition, AnyResource, AsyncAgentRun, AsyncPollOptions, AsyncRequestAccepted, AsyncStatus, BroodsAccount, BroodsAccountClientOptions, BroodsClientOptions, BroodsConfigDefinition, BroodsProjectConfig, BroodsWebSocketClientOptions, ChannelAgentInput, ChannelDefinitionConfig, ChannelMessageReceived, ChannelPartition, ChannelRecordConfig, ChannelReference, ChannelReplyIn, ChannelResource, ChannelType, CliManifest, CliManifestResource, CliResourceKind, ConnectionDefinition, CreateAgentResult, CreateClientCronInput, CreateCronInput, CreateToolInput, Cron, CronDefinitionConfig, CronDoc, CronLastStatus, CronResource, CronRun, CronStatus, CustomTool, DeleteAccountResult, DiscordChannelInput, DiscordConnectionDefinition, DiscordConnectionInput, DiscordMessageSource, DiscordSource, Doc, EnvAccessor, EnvRef, EnvRefString, GeneratedIds, GitHubChannelInput, GitHubConnectionDefinition, GitHubConnectionInput, GitHubMessageSource, GitHubSource, HarnessDefinition, HarnessType, HookContext, Id, IngressMode, IngressStatus, LogLevel, ObservabilityBackfillMessage, ObservabilityClientMessage, ObservabilityErrorMessage, ObservabilityLogEntry, ObservabilityLogMessage, ObservabilityReadyMessage, ObservabilityServerMessage, ObservabilitySpanMessage, ObservabilitySpanRow, ObservabilitySubscribeMessage, ObservabilityUnsubscribeMessage, PancakeChannelInput, PancakeConnectionDefinition, PancakeConnectionInput, PancakeMessageSource, PancakeSource, PolicyDefinitionConfig, PolicyDocument, PolicyResource, ProjectDoc, ProviderConfigInput, ProviderSettingsInput, ResourceApi, ResourceDefinition, ResourceInput, ResourceKind, RotateSecretResult, Sandbox, SandboxConfig, SandboxConfigDoc, SandboxDefinitionConfig, SandboxLifecycleResult, SandboxResource, SandboxSnapshotResult, SandboxTerminalTicket, Skill, SkillDefinitionConfig, SkillResource, SkillUploadInput, SlackChannelInput, SlackConnectionDefinition, SlackConnectionInput, SlackMessageSource, SlackSource, StageDoc, TelegramChannelInput, TelegramConnectionDefinition, TelegramConnectionInput, TelegramMessageSource, TelegramSource, ToolApprovalSummary, ToolDefinitionConfig, ToolExecuteContext, ToolExecuteOptions, ToolResource, ToolScope, UpdateAgentInput, UpdateCronInput, UpdateToolInput, WebSocketAttachInput, WebSocketClientAttachMessage, WebSocketClientCancelMessage, WebSocketClientControlMessage, WebSocketClientExecuteMessage, WebSocketClientMessage, WebSocketConstructorLike, WebSocketHandlers, WebSocketLike, WebSocketOutputMessage, WebSocketRunInput, WebSocketServerMessage, WebSocketStreamMessage, WebSocketSubscription, Workspace, WorkspaceConfig, WorkspaceConfigDoc, WorkspaceDefinitionConfig, WorkspaceFileEntry, WorkspaceResource, ZaloChannelInput, ZaloConnectionDefinition, ZaloConnectionInput, ZaloMessageSource, ZaloSource };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{a as h,b as O,c as R}from"./chunk-ce3yb3yz.js";import{A as N,B as _,C as P,D as H,E as K,F as U,G as B,H as j,I as F,J as G,K as z,L as Z,M as V,N as X,O as Y,d as I,e as v,p as k,q as S,r as A,s as M,t as W,u as L,v as w,w as E,x as D,y as T,z as q}from"./chunk-9v4kpqb1.js";import"./chunk-pfhy5049.js";var o=500;function a(t){if(typeof t!=="object"||t===null)return!1;let e=t;if(e.type==="subscribe"){let r=e.stream;if(r!=="logs"&&r!=="traces")return!1;let n=e.backfill;if(n!==void 0&&(typeof n!=="number"||!Number.isSafeInteger(n)||n<0||n>500))return!1;if(e.liveOnly!==void 0&&typeof e.liveOnly!=="boolean")return!1;let s=e.minLevel;if(s!==void 0&&s!=="INFO"&&s!=="WARN"&&s!=="ERROR")return!1;return!0}if(e.type==="unsubscribe"){let r=e.stream;return r==="logs"||r==="traces"}return!1}function i(t){return t==="task"||t==="cron"||t==="subtask"}export{O as BroodsAccountApiError,R as BroodsAccountClient,A as BroodsClient,W as BroodsWebSocketClient,k as DEFAULT_CORE_BASE_URL,S as IngressAcceptedError,o as MAX_OBSERVABILITY_BACKFILL,W as WebSocketClient,W as WebsocketClient,H as defineAgent,P as defineBroods,z as defineChannelRecord,Z as defineCron,q as defineDiscordChannel,D as defineGitHubChannel,K as defineHarness,N as definePancakeChannel,G as definePolicy,B as defineSandbox,j as defineSkill,T as defineSlackChannel,E as defineTelegramChannel,F as defineTool,U as defineWorkspace,_ as defineZaloChannel,w as env,h as envPlaceholder,Y as isBroodsConfig,X as isChannelDefinition,a as isObservabilityClientMessage,V as isResource,i as isRootSpanKind,M as normalizeHttpServiceUrl,v as readSseStream,I as resolveRunEvents,L as toWebSocketBaseUrl};
1
+ import{a as O,b as R,c as L}from"./chunk-ce3yb3yz.js";import{A as _,B as U,C as B,D as H,E as K,F as P,G as j,H as G,I as F,J as z,K as Z,L as V,M as X,N as Y,O as J,P as Q,Q as ee,R as te,S as re,T as ne,d as v,e as k,p as S,q as A,r as M,s as h,t as W,u as w,v as E,w as D,x as T,y as q,z as N}from"./chunk-prg3eaft.js";import"./chunk-3cvxks4m.js";var a=500;function i(e){if(typeof e!=="object"||e===null)return!1;let t=e;if(t.type==="subscribe"){let r=t.stream;if(r!=="logs"&&r!=="traces")return!1;let n=t.backfill;if(n!==void 0&&(typeof n!=="number"||!Number.isSafeInteger(n)||n<0||n>500))return!1;if(t.liveOnly!==void 0&&typeof t.liveOnly!=="boolean")return!1;let s=t.minLevel;if(s!==void 0&&!o(s))return!1;return!0}if(t.type==="unsubscribe"){let r=t.stream;return r==="logs"||r==="traces"}return!1}function o(e){return e==="DEBUG"||e==="INFO"||e==="WARN"||e==="ERROR"}function p(e){return e==="task"||e==="cron"||e==="subtask"}export{R as BroodsAccountApiError,L as BroodsAccountClient,M as BroodsClient,W as BroodsWebSocketClient,S as DEFAULT_CORE_BASE_URL,A as IngressAcceptedError,a as MAX_OBSERVABILITY_BACKFILL,W as WebSocketClient,W as WebsocketClient,z as defineAgent,F as defineBroods,ee as defineCron,B as defineDiscordChannel,D as defineDiscordConnection,H as defineGitHubChannel,T as defineGitHubConnection,Z as defineHarness,K as definePancakeChannel,q as definePancakeConnection,Q as definePolicy,X as defineSandbox,Y as defineSkill,P as defineSlackChannel,N as defineSlackConnection,j as defineTelegramChannel,_ as defineTelegramConnection,J as defineTool,V as defineWorkspace,G as defineZaloChannel,U as defineZaloConnection,E as env,O as envPlaceholder,ne as isBroodsConfig,re as isConnectionDefinition,o as isLogLevel,i as isObservabilityClientMessage,te as isResource,p as isRootSpanKind,h as normalizeHttpServiceUrl,k as readSseStream,v as resolveRunEvents,w as toWebSocketBaseUrl};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "broods",
3
- "version": "0.14.0",
3
+ "version": "0.17.4",
4
4
  "description": "CLI + TypeScript SDK for the broods agent platform.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -54,26 +54,27 @@
54
54
  "test": "bun test"
55
55
  },
56
56
  "engines": {
57
- "node": ">=22"
57
+ "node": ">=22.15"
58
58
  },
59
59
  "dependencies": {
60
60
  "esbuild": "^0.28.2"
61
61
  },
62
62
  "peerDependencies": {
63
- "ai": "^7.0.58"
63
+ "ai": "^7.0.68"
64
64
  },
65
65
  "devDependencies": {
66
- "@ai-sdk/tui": "^1.0.59",
66
+ "@ai-sdk/tui": "^1.0.69",
67
67
  "@arethetypeswrong/cli": "^0.18.5",
68
- "@chat-adapter/discord": "^4.35.0",
69
- "@chat-adapter/github": "^4.35.0",
70
- "@chat-adapter/slack": "^4.35.0",
71
- "@chat-adapter/telegram": "^4.35.0",
68
+ "@chat-adapter/discord": "^4.38.1",
69
+ "@chat-adapter/github": "^4.38.1",
70
+ "@chat-adapter/slack": "^4.38.1",
71
+ "@chat-adapter/telegram": "^4.38.1",
72
72
  "@types/bun": "^1.3.14",
73
- "ai": "^7.0.58",
73
+ "@typescript/typescript6": "6.0.2",
74
+ "ai": "^7.0.68",
74
75
  "publint": "^0.3.23",
75
- "rollup": "^4.62.2",
76
- "rollup-plugin-dts": "^6.4.1",
77
- "typescript": "^6.0.3"
76
+ "rollup": "^4.62.4",
77
+ "rollup-plugin-dts": "^6.5.1",
78
+ "typescript": "^7.0.2"
78
79
  }
79
80
  }