@bubblebrain-ai/bubble 0.0.34 → 0.0.35

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.
Files changed (52) hide show
  1. package/dist/agent/abort-errors.d.ts +2 -2
  2. package/dist/agent/budget-ledger.d.ts +4 -45
  3. package/dist/agent/budget-ledger.js +5 -75
  4. package/dist/agent/child-runner.d.ts +1 -3
  5. package/dist/agent/child-runner.js +6 -37
  6. package/dist/agent/profiles.d.ts +0 -2
  7. package/dist/agent/profiles.js +0 -3
  8. package/dist/agent/subagent-control.d.ts +5 -12
  9. package/dist/agent/subagent-control.js +0 -2
  10. package/dist/agent/subagent-store.d.ts +1 -1
  11. package/dist/agent/subagent-store.js +1 -3
  12. package/dist/agent/workflow/control.d.ts +7 -0
  13. package/dist/agent/workflow/control.js +22 -1
  14. package/dist/agent/workflow/runtime.d.ts +15 -2
  15. package/dist/agent/workflow/runtime.js +112 -30
  16. package/dist/agent.d.ts +7 -43
  17. package/dist/agent.js +47 -171
  18. package/dist/config.d.ts +1 -3
  19. package/dist/config.js +6 -5
  20. package/dist/main.js +9 -1
  21. package/dist/model-catalog.js +8 -14
  22. package/dist/orchestrator/default-hooks.js +7 -1
  23. package/dist/prompt/delegation.d.ts +1 -1
  24. package/dist/prompt/delegation.js +21 -7
  25. package/dist/prompt/task-reminders.d.ts +1 -0
  26. package/dist/prompt/task-reminders.js +24 -1
  27. package/dist/provider-transform.d.ts +1 -1
  28. package/dist/provider-transform.js +8 -13
  29. package/dist/tools/agent-lifecycle.d.ts +1 -9
  30. package/dist/tools/agent-lifecycle.js +35 -263
  31. package/dist/tui-ink/app.js +25 -12
  32. package/dist/tui-ink/approval/approval-dialog.js +1 -1
  33. package/dist/tui-ink/approval/diff-view.js +4 -4
  34. package/dist/tui-ink/approval/select.js +2 -2
  35. package/dist/tui-ink/feedback-dialog.js +2 -2
  36. package/dist/tui-ink/feishu-setup-picker.js +3 -3
  37. package/dist/tui-ink/input-box.d.ts +1 -6
  38. package/dist/tui-ink/input-box.js +14 -35
  39. package/dist/tui-ink/markdown.js +11 -9
  40. package/dist/tui-ink/message-list.d.ts +5 -1
  41. package/dist/tui-ink/message-list.js +15 -2
  42. package/dist/tui-ink/model-picker.js +19 -13
  43. package/dist/tui-ink/plan-confirm.js +1 -1
  44. package/dist/tui-ink/subagent-view.d.ts +3 -1
  45. package/dist/tui-ink/theme.d.ts +19 -2
  46. package/dist/tui-ink/theme.js +25 -8
  47. package/dist/tui-ink/welcome.d.ts +3 -2
  48. package/dist/tui-ink/welcome.js +10 -6
  49. package/dist/types.d.ts +3 -26
  50. package/dist/variant/variant-resolver.d.ts +13 -0
  51. package/dist/variant/variant-resolver.js +26 -0
  52. package/package.json +5 -2
package/dist/main.js CHANGED
@@ -235,12 +235,20 @@ async function main() {
235
235
  const pickerThemeMode = effectiveThemeModeForTerminal(themeConfig, preResolvedTheme);
236
236
  const pickerResolvedTheme = pickerThemeMode === "auto" ? preResolvedTheme : pickerThemeMode;
237
237
  const { runSessionPicker } = await import("./tui-ink/run-session-picker.js");
238
+ const { canvasBackgroundFor } = await import("./tui-ink/theme.js");
239
+ // Same rule as the main TUI: a forced theme mismatching the terminal
240
+ // paints its canvas so its foregrounds stay readable.
241
+ const pickerCanvas = themeConfig.overrides?.background
242
+ ? undefined
243
+ : canvasBackgroundFor(pickerThemeMode, pickerResolvedTheme, preResolvedTheme);
238
244
  const picked = await runSessionPicker({
239
245
  currentCwd: args.cwd,
240
246
  currentSessions,
241
247
  allSessions,
242
248
  resolvedTheme: pickerResolvedTheme,
243
- themeOverrides: themeConfig.overrides,
249
+ themeOverrides: pickerCanvas
250
+ ? { ...themeConfig.overrides, background: pickerCanvas }
251
+ : themeConfig.overrides,
244
252
  });
245
253
  if (picked) {
246
254
  sessionManager = new SessionManager(picked);
@@ -30,6 +30,8 @@ const GPT51_LEVELS = ["off", "low", "medium", "high"];
30
30
  const GPT51_CODEX_MAX_LEVELS = ["off", "low", "medium", "high", "xhigh"];
31
31
  const GPT51_CODEX_MINI_LEVELS = ["off", "medium", "high"];
32
32
  const OPENAI_CHAT_LEVELS = ["off"];
33
+ // Internal representation for APIs that expose thinking as enabled/disabled.
34
+ // UI code must render supported toggle models as on/off, not as "medium" effort.
33
35
  const TOGGLE_THINKING_LEVELS = ["off", "medium"];
34
36
  // GLM-5.2 is the first GLM to accept OpenAI-style `reasoning_effort`. The API
35
37
  // enum is none/minimal/low/medium/high/xhigh/max; we expose high and max (the
@@ -38,8 +40,8 @@ const TOGGLE_THINKING_LEVELS = ["off", "medium"];
38
40
  // is first so it is the default (getDefaultThinkingLevel falls back to levels[0]
39
41
  // when "medium" is absent), since GLM-5.2 is a thinking-on-by-default model.
40
42
  const GLM_5_2_LEVELS = ["high", "max", "off"];
41
- // kimi-k2.7-code only supports thinking mode (disabling it errors), so "off" is
42
- // not offered — the model is always in its thinking variant.
43
+ // Kimi K2.7 Code variants only support thinking mode (disabling it errors), so
44
+ // "off" is not offered — the model is always in its thinking variant.
43
45
  const KIMI_THINKING_ONLY_LEVELS = ["medium"];
44
46
  const DEEPSEEK_V4_LEVELS = ["high", "max"];
45
47
  const STEPFUN_REASONING_LEVELS = ["off", "low", "medium", "high"];
@@ -119,25 +121,17 @@ export const BUILTIN_MODELS = [
119
121
  { id: "step-3.5-flash", name: "Step 3.5 Flash", providerId: "stepfun", reasoningLevels: STEPFUN_REASONING_LEVELS },
120
122
  { id: "step-router-v1", name: "Step Router V1", providerId: "stepfun", reasoningLevels: STEPFUN_REASONING_LEVELS },
121
123
  { id: "kimi-k2.7-code", name: "Kimi K2.7 Code", providerId: "moonshot-cn", reasoningLevels: KIMI_THINKING_ONLY_LEVELS, contextWindow: 262144 },
124
+ { id: "kimi-k2.7-code-highspeed", name: "Kimi K2.7 Code Highspeed", providerId: "moonshot-cn", reasoningLevels: KIMI_THINKING_ONLY_LEVELS, contextWindow: 262144 },
122
125
  { id: "kimi-k2.6", name: "Kimi K2.6", providerId: "moonshot-cn", reasoningLevels: TOGGLE_THINKING_LEVELS, contextWindow: 256000 },
123
- { id: "k2.6-code-preview", name: "Kimi K2.6 Code Preview", providerId: "moonshot-cn", reasoningLevels: TOGGLE_THINKING_LEVELS, contextWindow: 256000 },
124
126
  { id: "kimi-k2.5", name: "Kimi K2.5", providerId: "moonshot-cn", reasoningLevels: TOGGLE_THINKING_LEVELS, contextWindow: 256000 },
125
- { id: "kimi-k2-turbo-preview", name: "Kimi K2 Turbo", providerId: "moonshot-cn", reasoningLevels: ["off"], contextWindow: 256000 },
126
- { id: "kimi-k2-0905-preview", name: "Kimi K2 0905", providerId: "moonshot-cn", reasoningLevels: ["off"], contextWindow: 256000 },
127
- { id: "kimi-k2-thinking", name: "Kimi K2 Thinking", providerId: "moonshot-cn", reasoningLevels: TOGGLE_THINKING_LEVELS, contextWindow: 256000 },
128
127
  { id: "kimi-k2.7-code", name: "Kimi K2.7 Code", providerId: "moonshot-intl", reasoningLevels: KIMI_THINKING_ONLY_LEVELS, contextWindow: 262144 },
128
+ { id: "kimi-k2.7-code-highspeed", name: "Kimi K2.7 Code Highspeed", providerId: "moonshot-intl", reasoningLevels: KIMI_THINKING_ONLY_LEVELS, contextWindow: 262144 },
129
129
  { id: "kimi-k2.6", name: "Kimi K2.6", providerId: "moonshot-intl", reasoningLevels: TOGGLE_THINKING_LEVELS, contextWindow: 256000 },
130
- { id: "k2.6-code-preview", name: "Kimi K2.6 Code Preview", providerId: "moonshot-intl", reasoningLevels: TOGGLE_THINKING_LEVELS, contextWindow: 256000 },
131
130
  { id: "kimi-k2.5", name: "Kimi K2.5", providerId: "moonshot-intl", reasoningLevels: TOGGLE_THINKING_LEVELS, contextWindow: 256000 },
132
- { id: "kimi-k2-turbo-preview", name: "Kimi K2 Turbo", providerId: "moonshot-intl", reasoningLevels: ["off"], contextWindow: 256000 },
133
- { id: "kimi-k2-0905-preview", name: "Kimi K2 0905", providerId: "moonshot-intl", reasoningLevels: ["off"], contextWindow: 256000 },
134
- { id: "kimi-k2-thinking", name: "Kimi K2 Thinking", providerId: "moonshot-intl", reasoningLevels: TOGGLE_THINKING_LEVELS, contextWindow: 256000 },
135
131
  { id: "kimi-k2.7-code", name: "Kimi K2.7 Code", providerId: "kimi-for-coding", reasoningLevels: KIMI_THINKING_ONLY_LEVELS, contextWindow: 262144 },
132
+ { id: "kimi-k2.7-code-highspeed", name: "Kimi K2.7 Code Highspeed", providerId: "kimi-for-coding", reasoningLevels: KIMI_THINKING_ONLY_LEVELS, contextWindow: 262144 },
136
133
  { id: "kimi-k2.6", name: "Kimi K2.6", providerId: "kimi-for-coding", reasoningLevels: TOGGLE_THINKING_LEVELS, contextWindow: 256000 },
137
- { id: "k2.6-code-preview", name: "Kimi K2.6 Code Preview", providerId: "kimi-for-coding", reasoningLevels: TOGGLE_THINKING_LEVELS, contextWindow: 256000 },
138
- { id: "kimi-k2-turbo-preview", name: "Kimi K2 Turbo", providerId: "kimi-for-coding", reasoningLevels: ["off"], contextWindow: 256000 },
139
- { id: "kimi-k2-0905-preview", name: "Kimi K2 0905", providerId: "kimi-for-coding", reasoningLevels: ["off"], contextWindow: 256000 },
140
- { id: "kimi-k2-thinking", name: "Kimi K2 Thinking", providerId: "kimi-for-coding", reasoningLevels: TOGGLE_THINKING_LEVELS, contextWindow: 256000 },
134
+ { id: "kimi-k2.5", name: "Kimi K2.5", providerId: "kimi-for-coding", reasoningLevels: TOGGLE_THINKING_LEVELS, contextWindow: 256000 },
141
135
  { id: "llama-3.3-70b-versatile", name: "llama-3.3-70b-versatile", providerId: "groq", reasoningLevels: ["off"], contextWindow: 32768 },
142
136
  { id: "mixtral-8x7b-32768", name: "mixtral-8x7b-32768", providerId: "groq", reasoningLevels: ["off"], contextWindow: 32768 },
143
137
  { id: "gemma-2-9b-it", name: "gemma-2-9b-it", providerId: "groq", reasoningLevels: ["off"], contextWindow: 32768 },
@@ -5,7 +5,7 @@ import { ExecutionGovernor } from "../agent/execution-governor.js";
5
5
  import { DiscoveryBarrier } from "../agent/discovery-barrier.js";
6
6
  import { arbitrateToolCall } from "../agent/tool-arbiter.js";
7
7
  import { buildEditRetryEscalationReminder, buildSmallTaskHint, buildTaskSummaryReminder, buildWorkflowPhaseReminder, } from "../prompt/reminders.js";
8
- import { reminderForTaskType } from "../prompt/task-reminders.js";
8
+ import { orchestrationRequestReminder, reminderForTaskType } from "../prompt/task-reminders.js";
9
9
  import { formatCoverageSummary, resolveWorkflowPhase } from "./workflow.js";
10
10
  import { buildSubagentLifecycleReminder } from "../agent/subagent-lifecycle-reminder.js";
11
11
  export function createDefaultHooks() {
@@ -28,6 +28,12 @@ export function createDefaultHooks() {
28
28
  if (taskReminder) {
29
29
  ctx.queueReminder(taskReminder);
30
30
  }
31
+ // User named the mechanism ("agent team" / workflow / 编排): remind at
32
+ // the decision turn, where it outweighs the parallel-spawns prior.
33
+ const orchestrationReminder = orchestrationRequestReminder(ctx.input, ctx.agent.hasToolAvailable("run_workflow"));
34
+ if (orchestrationReminder) {
35
+ ctx.queueReminder(orchestrationReminder);
36
+ }
31
37
  // Small-task hint: counterweight to the default protocol's exploration
32
38
  // bias, only fires once per run on focused one-shot requests like
33
39
  // "写个 HTML 介绍元旦". Don't issue for the same input twice.
@@ -5,7 +5,7 @@
5
5
  * and read-only-scoped, negative clauses get equal weight — the user's hard
6
6
  * constraint is "proactive, but never delegate-everything". Gated on the
7
7
  * delegation tools being present, so child agents (whose tool sets never
8
- * include spawn_agent/agent_team) never see it.
8
+ * include spawn_agent/run_workflow) never see it.
9
9
  */
10
10
  /**
11
11
  * Returns the delegation policy section when the agent actually has the
@@ -5,12 +5,19 @@
5
5
  * and read-only-scoped, negative clauses get equal weight — the user's hard
6
6
  * constraint is "proactive, but never delegate-everything". Gated on the
7
7
  * delegation tools being present, so child agents (whose tool sets never
8
- * include spawn_agent/agent_team) never see it.
8
+ * include spawn_agent/run_workflow) never see it.
9
9
  */
10
10
  const DELEGATION_POLICY = `## Delegation policy (subagents)
11
11
 
12
- You can delegate work to background subagents (spawn_agent) and batch
13
- fan-outs (agent_team). Delegate deliberately, not by default.
12
+ You can delegate work two ways: a single background subagent (spawn_agent),
13
+ or an orchestration script coordinating many subagents (run_workflow).
14
+ Delegate deliberately, not by default.
15
+
16
+ Explicit requests win, before any other rule: when the user names a
17
+ coordinated multi-agent run in any phrasing — a workflow, an orchestration,
18
+ an agent team, "fan out agents" — that means run_workflow, NOT a row of
19
+ spawn_agent calls. When they ask for a subagent, spawn one. Only when the
20
+ user has not named a mechanism do you choose by shape (below).
14
21
 
15
22
  Delegate when:
16
23
  - An investigation will clearly require more than four search or read
@@ -18,9 +25,16 @@ Delegate when:
18
25
  needs the conclusion — delegate to a subagent so the intermediate noise
19
26
  stays out of the main context. Launch multiple subagents concurrently for
20
27
  independent questions.
21
- - The task naturally splits into the same read-only investigation or
22
- analysis (review, audit, summarize) over several independent items (files,
23
- modules, endpoints) — use agent_team.
28
+ - The task fans out over many independent items (review, audit, summarize
29
+ across files, modules, endpoints) or needs staged orchestration — consider
30
+ run_workflow. Choose by shape, not by rule: a handful of subagents whose
31
+ results you want to read and react to individually favor spawn_agent; a
32
+ uniform sweep over many items, results that should be aggregated or
33
+ filtered before they reach this conversation, or control flow between
34
+ stages (pipelines, loops, retry rounds) favor a run_workflow script — each
35
+ member's full handoff stays out of your context and the script returns one
36
+ digested result. Failed agent() calls resolve to null, so report which
37
+ items came back null instead of silently dropping them.
24
38
  - A side-investigation is independent of your current main-line work and can
25
39
  run in the background while you continue.
26
40
 
@@ -51,7 +65,7 @@ Do NOT delegate when:
51
65
  When in doubt about a one-off task, do it yourself. When a task is clearly
52
66
  the same read-only operation over three or more independent items — where
53
67
  each item alone would take more than a couple of tool calls — prefer
54
- agent_team over doing them sequentially yourself. For just two small items,
68
+ run_workflow over doing them sequentially yourself. For just two small items,
55
69
  do them yourself with parallel tool calls.`;
56
70
  /**
57
71
  * Returns the delegation policy section when the agent actually has the
@@ -4,3 +4,4 @@ export interface TaskReminderOptions {
4
4
  canDelegate?: boolean;
5
5
  }
6
6
  export declare function reminderForTaskType(taskType: TaskType, options?: TaskReminderOptions): string | undefined;
7
+ export declare function orchestrationRequestReminder(input: string | import("../types.js").ContentPart[], canRunWorkflow: boolean): string | undefined;
@@ -6,7 +6,7 @@ import { wrapInSystemReminder } from "./reminders.js";
6
6
  * keeps it away from ordinary implementation/debugging turns, so it cannot
7
7
  * amplify over-delegation.
8
8
  */
9
- const DELEGATION_NUDGE = "- If answering needs scanning many files and only the conclusion matters, delegate to a background subagent (spawn_agent); when it is the same read-only question over several independent items, fan out with agent_team.";
9
+ const DELEGATION_NUDGE = "- If answering needs scanning many files and only the conclusion matters, delegate to a background subagent (spawn_agent); when it is the same read-only question over several independent items, fan out with a run_workflow script.";
10
10
  export function reminderForTaskType(taskType, options = {}) {
11
11
  switch (taskType) {
12
12
  case "debugging":
@@ -62,3 +62,26 @@ Product discussion workflow:
62
62
  return undefined;
63
63
  }
64
64
  }
65
+ /**
66
+ * Deterministic detector for an explicit user request for a coordinated
67
+ * multi-agent run. Three rounds of prompt wording lost to the model's
68
+ * "agent team = parallel spawns" prior in live tests (opus-4.8, 2026-07-06);
69
+ * per the task-reminder principle above, a reminder injected at the decision
70
+ * turn is the lever that actually works — the harness remembers so the model
71
+ * does not have to.
72
+ */
73
+ const ORCHESTRATION_REQUEST = /\b(?:workflows?|orchestrat\w*|agent[ -]?teams?|fan[ -]?out)\b|工作流|编排|(?:智能体|代理|agent)\s*(?:团队|小队)/i;
74
+ export function orchestrationRequestReminder(input, canRunWorkflow) {
75
+ if (!canRunWorkflow)
76
+ return undefined;
77
+ const text = typeof input === "string"
78
+ ? input
79
+ : input.map((part) => ("text" in part ? String(part.text ?? "") : "")).join(" ");
80
+ if (!ORCHESTRATION_REQUEST.test(text))
81
+ return undefined;
82
+ return [
83
+ "- This message explicitly asks for a coordinated multi-agent run (a workflow / orchestration / agent team).",
84
+ "Honor it with ONE run_workflow call whose script covers the whole fan-out.",
85
+ "Do not substitute parallel spawn_agent calls this turn — the user named the mechanism.",
86
+ ].join(" ");
87
+ }
@@ -1,5 +1,5 @@
1
1
  import type { ThinkingLevel } from "./types.js";
2
- export { getAvailableThinkingLevels, getDefaultThinkingLevel, normalizeThinkingLevel } from "./variant/variant-resolver.js";
2
+ export { getAvailableThinkingLevels, getDefaultThinkingLevel, isThinkingOnlyLevels, isThinkingOnlyModel, isThinkingToggleModel, normalizeThinkingLevel } from "./variant/variant-resolver.js";
3
3
  export interface ProviderRequestConfig {
4
4
  effectiveThinkingLevel: ThinkingLevel;
5
5
  reasoningEffort?: ThinkingLevel;
@@ -1,9 +1,8 @@
1
1
  import { getAvailableThinkingLevels, normalizeThinkingLevel } from "./variant/variant-resolver.js";
2
- export { getAvailableThinkingLevels, getDefaultThinkingLevel, normalizeThinkingLevel } from "./variant/variant-resolver.js";
2
+ export { getAvailableThinkingLevels, getDefaultThinkingLevel, isThinkingOnlyLevels, isThinkingOnlyModel, isThinkingToggleModel, normalizeThinkingLevel } from "./variant/variant-resolver.js";
3
3
  const MOONSHOT_PROVIDER_IDS = new Set(["moonshot-cn", "moonshot-intl", "kimi-for-coding"]);
4
- const KIMI_K27_FAMILY = new Set(["kimi-k2.7-code"]);
5
- const KIMI_K25_FAMILY = new Set(["kimi-k2.5", "k2.6-code-preview", "kimi-k2.6"]);
6
- const KIMI_THINKING_FAMILY = new Set(["kimi-k2-thinking", "kimi-k2-thinking-turbo"]);
4
+ const KIMI_K27_FAMILY = new Set(["kimi-k2.7-code", "kimi-k2.7-code-highspeed"]);
5
+ const KIMI_TOGGLE_THINKING_FAMILY = new Set(["kimi-k2.5", "kimi-k2.6"]);
7
6
  const KIMI_K26_DEFAULT_MAX_TOKENS = 32768;
8
7
  const MINIMAX_M3_FAMILY = new Set(["MiniMax-M3"]);
9
8
  function isFireworksKimi(providerId, modelId) {
@@ -99,12 +98,11 @@ export function resolveProviderRequestConfig(providerId, modelId, requestedLevel
99
98
  },
100
99
  };
101
100
  }
102
- // Moonshot / Kimi: kimi-k2.5 family (incl. k2.6-code-preview, kimi-k2.6) locks
103
- // temperature/top_p/n/penalties and exposes thinking via extra_body.thinking;
104
- // kimi-k2-thinking family locks temperature=1.
101
+ // Moonshot / Kimi: K2.5/K2.6 lock temperature/top_p/n/penalties and expose
102
+ // thinking via extra_body.thinking.
105
103
  if (MOONSHOT_PROVIDER_IDS.has(providerId)) {
106
- // kimi-k2.7-code is thinking-only: temperature is locked to 1.0 server-side
107
- // (any explicit value errors), thinking can never be disabled, and
104
+ // Kimi K2.7 Code variants are thinking-only: temperature is locked to 1.0
105
+ // server-side (any explicit value errors), thinking can never be disabled, and
108
106
  // reasoning_content must be echoed back on tool-call turns.
109
107
  if (KIMI_K27_FAMILY.has(modelId)) {
110
108
  return {
@@ -116,7 +114,7 @@ export function resolveProviderRequestConfig(providerId, modelId, requestedLevel
116
114
  },
117
115
  };
118
116
  }
119
- if (KIMI_K25_FAMILY.has(modelId)) {
117
+ if (KIMI_TOGGLE_THINKING_FAMILY.has(modelId)) {
120
118
  return {
121
119
  effectiveThinkingLevel,
122
120
  omitTemperature: true,
@@ -126,9 +124,6 @@ export function resolveProviderRequestConfig(providerId, modelId, requestedLevel
126
124
  },
127
125
  };
128
126
  }
129
- if (KIMI_THINKING_FAMILY.has(modelId)) {
130
- return { effectiveThinkingLevel, omitTemperature: true };
131
- }
132
127
  return { effectiveThinkingLevel };
133
128
  }
134
129
  if (providerId === "openai"
@@ -24,15 +24,7 @@ export declare function createWaitAgentTool(): ToolRegistryEntry;
24
24
  export declare function createSendInputTool(): ToolRegistryEntry;
25
25
  export declare function createCloseAgentTool(): ToolRegistryEntry;
26
26
  export declare function createListAgentsTool(): ToolRegistryEntry;
27
- /** Items bound for one agent_team call (design §1.2). */
28
- export declare const AGENT_TEAM_MIN_ITEMS = 2;
29
- export declare const AGENT_TEAM_MAX_ITEMS = 32;
30
- export declare function createAgentTeamTool(options?: AgentLifecycleToolOptions, sharedTrust?: ProjectProfileTrust): ToolRegistryEntry;
31
- /** Specs bound for one agent_batch call (design v2 §1.3). */
32
- export declare const AGENT_BATCH_MIN_SPECS = 2;
33
- export declare const AGENT_BATCH_MAX_SPECS = 32;
34
- export declare function createAgentBatchTool(options?: AgentLifecycleToolOptions, sharedTrust?: ProjectProfileTrust): ToolRegistryEntry;
35
- export declare function createRunWorkflowTool(options?: AgentLifecycleToolOptions): ToolRegistryEntry;
27
+ export declare function createRunWorkflowTool(options?: AgentLifecycleToolOptions, sharedTrust?: ProjectProfileTrust): ToolRegistryEntry;
36
28
  export declare function createWaitWorkflowTool(): ToolRegistryEntry;
37
29
  export declare function createAgentLifecycleTools(options?: AgentLifecycleToolOptions): ToolRegistryEntry[];
38
30
  export {};