@polderlabs/bizar 10.23.19 → 10.23.20
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/config/claude/agents/_shared/CLAUDE_TOOLS.md +1 -4
- package/config/claude/agents/office-manager.md +4 -2
- package/config/claude/hooks/sessionstart-prime.mjs +1 -1
- package/config/claude/hooks/team-lifecycle.mjs +5 -1
- package/config/claude/hooks/worker-suggest.mjs +2 -2
- package/package.json +1 -1
- package/packages/sdk/dist/version.d.ts +1 -1
- package/packages/sdk/dist/version.js +1 -1
- package/packages/sdk/package.json +1 -1
|
@@ -368,10 +368,7 @@ Background (async, returns immediately):
|
|
|
368
368
|
|
|
369
369
|
### Coordinating multiple background agents
|
|
370
370
|
|
|
371
|
-
When fanning out several research or exploration tasks, issue multiple `Agent` calls in the **same message** with `run_in_background: true`. Each runs in parallel. Collect
|
|
372
|
-
|
|
373
|
-
- Waiting for the user to ask, then re-dispatching sync `Agent` calls that summarize the background work.
|
|
374
|
-
- Reading the background agent's final summary when it completes.
|
|
371
|
+
When fanning out several research or exploration tasks, issue multiple `Agent` calls in the **same message** with `run_in_background: true`. Each runs in parallel. Collect the original final summary/result when the task completes. Do not re-dispatch a completed background agent to summarize its work: that creates a new, context-poor task and its acknowledgement is not a replacement for the original deliverable.
|
|
375
372
|
|
|
376
373
|
---
|
|
377
374
|
|
|
@@ -94,8 +94,10 @@ Worktree branches use `wt/<agent_type>-<short-task-id>`.
|
|
|
94
94
|
- Inspect an idle task after its second idle notification. Stop and reassign a
|
|
95
95
|
task that has no progress/evidence; do not model-cycle it.
|
|
96
96
|
- A `TaskCompleted`, `SubagentStop`, or `<task-notification>` is terminal. Read
|
|
97
|
-
its `<result
|
|
98
|
-
the active objective. Never route a completion notification as
|
|
97
|
+
its original `<result>` once, mark the worker done/failed, merge queued work,
|
|
98
|
+
and continue the active objective. Never route a completion notification as
|
|
99
|
+
a new prompt, send it back to the worker, or replace its deliverable with a
|
|
100
|
+
later acknowledgement/status reply.
|
|
99
101
|
|
|
100
102
|
## Learning and completion
|
|
101
103
|
|
|
@@ -188,7 +188,7 @@ function startupBriefing(cwd, featureBrief, recentCommits, projectLine, progress
|
|
|
188
188
|
if (progressLast) lines.push(`- Progress: ${progressLast}.`);
|
|
189
189
|
lines.push('- You are @mike. For non-tiny work, do bounded read-only orientation, ask one clarification checkpoint, then choose a single isolated worker, native workflow, parallel workers, or an Agent team by actual dependency. Use worktrees for editors and explicit Bizar models for every Agent.');
|
|
190
190
|
lines.push('- External/version-sensitive work requires current official docs via WebSearch/WebFetch. Use relevant installed skills; apply i-have-adhd to user output. WIP=1.');
|
|
191
|
-
lines.push('- TaskCompleted/SubagentStop/<task-notification> is terminal: consume <result
|
|
191
|
+
lines.push('- TaskCompleted/SubagentStop/<task-notification> is terminal: consume its original <result> once, mark done/failed, merge queued work, and continue the objective. Never turn a terminal notification into a worker follow-up or replace that result with a later status reply.');
|
|
192
192
|
// Default-first-stop hint when nothing is active yet.
|
|
193
193
|
if (featureBrief && featureBrief.active.length === 0) {
|
|
194
194
|
lines.push(
|
|
@@ -56,7 +56,11 @@ export function handleTeamLifecycle(input, options = {}) {
|
|
|
56
56
|
task.updatedAt = now;
|
|
57
57
|
if (event === 'TaskCompleted' || event === 'SubagentStop') {
|
|
58
58
|
task.state = /fail|error/i.test(record.status) ? 'failed' : 'completed';
|
|
59
|
-
|
|
59
|
+
// Claude Code already delivers the terminal result to the parent. Do
|
|
60
|
+
// not add another instruction here: lifecycle hook output can be
|
|
61
|
+
// surfaced in an agent context and turn a completed task into a bogus
|
|
62
|
+
// follow-up conversation ("Ready", "No action needed", etc.).
|
|
63
|
+
// This hook owns durable liveness telemetry only.
|
|
60
64
|
} else if (event === 'TeammateIdle') {
|
|
61
65
|
task.idleCount = Number(task.idleCount || 0) + 1;
|
|
62
66
|
if (task.idleCount >= 2) context = `Agent task ${taskId} has been idle ${task.idleCount} times. Inspect its evidence now; stop and reassign if it made no progress. Do not model-cycle.`;
|
|
@@ -61,7 +61,7 @@ const ROUTE_POLICY = [
|
|
|
61
61
|
'- If this is the primary session, you ARE @mike. First do only bounded read-only orientation. Then ask one concise clarification question describing the inferred outcome, the material choice/risk, and your proposed coordination mode. Wait for the answer before edits, branches, tests, or editor dispatch. If the user explicitly waives questions, continue autonomously.',
|
|
62
62
|
'- After clarification, choose the lightest coordination mode: a direct tiny edit, one isolated Agent for a bounded change, a native Bizar Workflow for repeatable phased work, parallel Agents for disjoint scopes, or an Agent team only when 3+ sustained roles need cross-talk. Do not force a workflow or team when it adds no value.',
|
|
63
63
|
'- For every Agent, workflow worker, or agent-team teammate, choose one exact ID from the enabled `bizar models` user selection, then obtain its role-specific generated definition name from `bizar models --agent-types --json` (for example greg or todd). Pass that name as `subagent_type` and OMIT the native `model` field. The definition frontmatter owns the exact gateway ID. Never put a raw gateway ID or a Claude family alias in the native model field; aliases are compatibility-only. For teams, do not name a competing model in the spawn prompt. If the map or definition is missing, run `bizar models`; do not retry by cycling providers or tiers. Every editing worker uses call-level `isolation: "worktree"`. For genuinely disjoint writable scopes, dispatch concurrently; otherwise use one owner.',
|
|
64
|
-
'- Consume terminal agent
|
|
64
|
+
'- Consume each terminal agent result exactly once from its original `<result>`/final summary, merge queued worktrees with bizar worktree-merge, and run integration checks in the primary session. Never send a terminal notification, idle ping, or completed task back to that agent as a follow-up and never re-dispatch a completed background agent merely to summarize its result. A subagent may not recursively dispatch itself.',
|
|
65
65
|
'- Do NOT execute any tool you do not have. If a tool you need is missing from your tools list, dispatch to a subagent that has it — do not pretend you have it.',
|
|
66
66
|
'- If you are already running as a Bizar custom agent, follow your assigned role and do not recursively dispatch yourself.',
|
|
67
67
|
].join('\n');
|
|
@@ -83,7 +83,7 @@ process.stdin.on('end', async () => {
|
|
|
83
83
|
process.stdout.write(JSON.stringify({
|
|
84
84
|
hookSpecificOutput: {
|
|
85
85
|
hookEventName: 'UserPromptSubmit',
|
|
86
|
-
additionalContext: 'Bizar terminal task update: consume
|
|
86
|
+
additionalContext: 'Bizar terminal task update: consume this original structured <result> exactly once. Mark the agent terminal and merge any queued worktree. Do not send this notification back to the agent, do not request a follow-up acknowledgement, and do not replace its result with a later idle/status reply.',
|
|
87
87
|
},
|
|
88
88
|
}) + '\n');
|
|
89
89
|
return;
|
package/package.json
CHANGED