@polderlabs/bizar 5.5.5 → 5.5.6

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.
@@ -0,0 +1,55 @@
1
+ /**
2
+ * cli/plow-through.test.mjs
3
+ *
4
+ * Tests for the /plow-through slash command file.
5
+ */
6
+ import { test, describe } from 'node:test';
7
+ import assert from 'node:assert/strict';
8
+ import { readFileSync, existsSync } from 'node:fs';
9
+ import { join, dirname } from 'node:path';
10
+ import { fileURLToPath } from 'node:url';
11
+
12
+ const __dirname = dirname(fileURLToPath(import.meta.url));
13
+ const PROJECT_ROOT = join(__dirname, '..');
14
+ const CMD_PATH = join(PROJECT_ROOT, 'config', 'commands', 'plow-through.md');
15
+
16
+ describe('/plow-through command file', () => {
17
+ test('file exists at config/commands/plow-through.md', () => {
18
+ assert.equal(existsSync(CMD_PATH), true, 'plow-through.md must exist');
19
+ });
20
+
21
+ test('YAML frontmatter has description field', () => {
22
+ const content = readFileSync(CMD_PATH, 'utf8');
23
+ assert.match(content, /^---\ndescription:/m, 'frontmatter must have description');
24
+ });
25
+
26
+ test('YAML frontmatter has agent field set to odin', () => {
27
+ const content = readFileSync(CMD_PATH, 'utf8');
28
+ assert.match(content, /^---\n.*\nagent: odin$/ms, 'frontmatter agent must be odin');
29
+ });
30
+
31
+ test('body has content (more than 5 lines)', () => {
32
+ const content = readFileSync(CMD_PATH, 'utf8');
33
+ // Strip frontmatter
34
+ const body = content.replace(/^---[\s\S]*?---\n/, '');
35
+ const lines = body.trim().split('\n').filter(l => l.trim().length > 0);
36
+ assert.ok(lines.length > 5, `body should have content, got ${lines.length} non-empty lines`);
37
+ });
38
+
39
+ test('body contains autonomous-mode contract keywords', () => {
40
+ const content = readFileSync(CMD_PATH, 'utf8');
41
+ const body = content.replace(/^---[\s\S]*?---\n/, '');
42
+ const lower = body.toLowerCase();
43
+ assert.ok(lower.includes('no clarifying questions') || lower.includes('no clarifying'), 'body must state no clarifying questions');
44
+ assert.ok(lower.includes('parallel') || lower.includes('dispatch'), 'body must mention parallel dispatch');
45
+ assert.ok(lower.includes('work to completion') || lower.includes('complete'), 'body must state work-to-completion');
46
+ });
47
+
48
+ test('body contains when NOT to use section', () => {
49
+ const content = readFileSync(CMD_PATH, 'utf8');
50
+ const lower = content.toLowerCase();
51
+ assert.ok(lower.includes('when not to use'), 'body must have a when NOT to use section');
52
+ });
53
+ });
54
+
55
+ console.log(' plow-through.test.mjs loaded — run with: node --test cli/plow-through.test.mjs');
@@ -0,0 +1,47 @@
1
+ ---
2
+ description: Autonomous mode — work fully independently, make all decisions, complete the task end-to-end without asking the user anything.
3
+ agent: odin
4
+ ---
5
+
6
+ # Plow Through — Autonomous Mode
7
+
8
+ You are in `/plow-through` mode. The user has invoked this command to tell you: **work autonomously, don't ask, decide things yourself, complete the task end-to-end.**
9
+
10
+ ## Contract
11
+
12
+ - **No clarifying questions.** If the request is ambiguous, use the most reasonable interpretation based on project context. If you genuinely cannot proceed without user input (e.g., a destructive action requiring explicit authorization), log the blocker in your final report and continue with everything else.
13
+ - **Decide things yourself.** Use your judgment. Read `.bizar/PROJECT.md`, `FINAL_GOAL.md`, `ROADMAP.md`, and search the memory vault (`bizar memory search "<topic>"`) for prior context before deciding.
14
+ - **Split into parallel work streams.** Always dispatch 2+ subagents in parallel when the work is decomposable. Each stream must have a disjoint file scope.
15
+ - **Work to completion.** Don't stop at "I did X, should I continue?". The task is complete when: the deliverable exists, tests pass, changes are committed and pushed (where applicable).
16
+ - **Report at the end.** Summarize what was done, what tests ran, any blockers encountered.
17
+
18
+ ## Background agents for long-running work
19
+
20
+ Use `bizar_spawn_background` (or the dashboard UI) to spawn background agents for tasks that span more than a few minutes. Check on them later via `bizar_status` or the Background Agents panel.
21
+
22
+ ## When to use
23
+
24
+ - Multi-file refactors that don't require user approval
25
+ - Bug-fix sweeps across a known surface area
26
+ - Implementing a clearly-spec'd feature from the roadmap
27
+ - Migration tasks (e.g., "migrate all CSS from @apply to vanilla")
28
+ - Cleanup work (rename X, delete dead code Y, etc.)
29
+
30
+ ## When NOT to use
31
+
32
+ - Anything that touches auth, billing, or destructive operations on user data
33
+ - Architectural decisions with multiple valid approaches (use `/plan` first)
34
+ - Tasks where you genuinely need user input on a key decision
35
+ - Anything where being wrong has high consequences (merges to main, security patches)
36
+
37
+ ## Execution pattern
38
+
39
+ 1. Read project context (`.bizar/PROJECT.md`, `FINAL_GOAL.md`, `ROADMAP.md`)
40
+ 2. Search memory for prior context (`bizar memory search "<topic>"`)
41
+ 3. Decompose into independent work streams
42
+ 4. Dispatch streams via `task` to @thor and @tyr in parallel
43
+ 5. After streams return: run test gate
44
+ 6. Fix any test failures
45
+ 7. Update self-improvement log (`.bizar/AGENTS_SELF_IMPROVEMENT.md`)
46
+ 8. Commit + push (delegated to @hermod)
47
+ 9. Report final outcome
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polderlabs/bizar",
3
- "version": "5.5.5",
3
+ "version": "5.5.6",
4
4
  "description": "Norse-pantheon multi-agent system for opencode — 13 agents across 4 cost tiers with cost-aware routing, plans, and a configurable agent harness. v4 ships as a single npm package bundling the dashboard server, opencode plugin, and typed SDK.",
5
5
  "type": "module",
6
6
  "bin": {