@polderlabs/bizar 3.17.0 → 3.19.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/cli/{plan-templates.mjs → artifact-templates.mjs} +26 -26
- package/cli/{plan.mjs → artifact.mjs} +134 -134
- package/cli/{plan.test.mjs → artifact.test.mjs} +108 -108
- package/cli/banner.mjs +1 -1
- package/cli/bin.mjs +5 -5
- package/cli/install.mjs +1 -1
- package/cli/prompts.mjs +2 -2
- package/config/AGENTS.md +9 -51
- package/config/agents/baldr.md +2 -24
- package/config/agents/browser-harness.md +80 -0
- package/config/agents/forseti.md +1 -23
- package/config/agents/frigg.md +3 -24
- package/config/agents/heimdall.md +2 -24
- package/config/agents/hermod.md +1 -23
- package/config/agents/mimir.md +1 -23
- package/config/agents/odin.md +1 -25
- package/config/agents/quick.md +1 -18
- package/config/agents/semble-search.md +1 -1
- package/config/agents/thor.md +2 -29
- package/config/agents/tyr.md +2 -29
- package/config/agents/vidarr.md +1 -28
- package/config/agents/vor.md +6 -28
- package/config/opencode.json.template +2 -16
- package/config/rules/uncertainty.md +1 -1
- package/config/skills/bizar/SKILL.md +1 -1
- package/package.json +1 -1
package/cli/banner.mjs
CHANGED
|
@@ -25,7 +25,7 @@ export function showBanner() {
|
|
|
25
25
|
console.log(chalk.hex('#6366f1').bold(RUNE_HELM));
|
|
26
26
|
console.log(chalk.hex('#a855f7')(' Norse Pantheon Agent System for opencode'));
|
|
27
27
|
console.log();
|
|
28
|
-
console.log(chalk.dim(' 13 agents · 4 cost tiers ·
|
|
28
|
+
console.log(chalk.dim(' 13 agents · 4 cost tiers · Obsidian vault long-term memory · RTK · Semble · Skills CLI · Mods'));
|
|
29
29
|
console.log();
|
|
30
30
|
}
|
|
31
31
|
|
package/cli/bin.mjs
CHANGED
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
* v3.10.0 — `bizar` runtime CLI.
|
|
6
6
|
*
|
|
7
7
|
* Architecture:
|
|
8
|
-
* - `bizar` is the core runtime + installer + audit/init/export/update/
|
|
8
|
+
* - `bizar` is the core runtime + installer + audit/init/export/update/artifact
|
|
9
9
|
* + service + dash commands.
|
|
10
10
|
* - The dashboard lives in `@polderlabs/bizar-dash` as a library.
|
|
11
11
|
* Commands live under `bizar dash <subcommand>` (new canonical form).
|
|
12
12
|
* `bizar dashboard` is a deprecated alias (still works, prints warning).
|
|
13
13
|
*
|
|
14
14
|
* Subcommands:
|
|
15
|
-
* install, audit, init, export,
|
|
15
|
+
* install, audit, init, export, artifact, update, test-gate, service, dash
|
|
16
16
|
*/
|
|
17
17
|
import { existsSync } from 'node:fs';
|
|
18
18
|
import { readFileSync } from 'node:fs';
|
|
@@ -23,7 +23,7 @@ import { runInstaller } from './install.mjs';
|
|
|
23
23
|
import { runAudit } from './audit.mjs';
|
|
24
24
|
import { runInit } from './init.mjs';
|
|
25
25
|
import { runExport } from './export.mjs';
|
|
26
|
-
import
|
|
26
|
+
import runArtifact from './artifact.mjs';
|
|
27
27
|
import { runUpdate } from './update.mjs';
|
|
28
28
|
import { ensureSetup, checkSetupStatus } from './bootstrap.mjs';
|
|
29
29
|
|
|
@@ -80,7 +80,7 @@ function showHelp() {
|
|
|
80
80
|
audit Run security audit on agent configuration
|
|
81
81
|
init Initialize .bizar/ in current project
|
|
82
82
|
export [target] Export agents/rules to another harness
|
|
83
|
-
|
|
83
|
+
artifact <subcommand> Manage visual artifacts
|
|
84
84
|
test-gate Detect & run the project's test suite
|
|
85
85
|
update Auto-update everything (opencode + bizar + dash + plugin)
|
|
86
86
|
service Manage the background service daemon
|
|
@@ -500,7 +500,7 @@ async function main() {
|
|
|
500
500
|
if (result.failed > 0) process.exit(1);
|
|
501
501
|
}
|
|
502
502
|
} else if (args[0] === 'plan') {
|
|
503
|
-
await
|
|
503
|
+
await runArtifact(args.slice(1), {});
|
|
504
504
|
} else if (args[0] === 'install') {
|
|
505
505
|
if (isHelpRequest) showInstallHelp();
|
|
506
506
|
else await runInstaller();
|
package/cli/install.mjs
CHANGED
|
@@ -375,7 +375,7 @@ export async function runInstaller() {
|
|
|
375
375
|
console.log(chalk.dim(' You can configure API keys now or later via /connect in opencode.'));
|
|
376
376
|
const keys = await promptApiKeys();
|
|
377
377
|
|
|
378
|
-
if (keys.opencodeZen || keys.minimax || keys.openai
|
|
378
|
+
if (keys.opencodeZen || keys.minimax || keys.openai |) {
|
|
379
379
|
console.log(chalk.dim('\n Keys noted. Add them to your opencode.json or run /connect in opencode.\n'));
|
|
380
380
|
}
|
|
381
381
|
|
package/cli/prompts.mjs
CHANGED
|
@@ -107,8 +107,8 @@ export async function promptApiKeys() {
|
|
|
107
107
|
},
|
|
108
108
|
{
|
|
109
109
|
type: 'password',
|
|
110
|
-
name: '
|
|
111
|
-
message: '
|
|
110
|
+
name: 'obsidian_vault',
|
|
111
|
+
message: 'Obsidian vault path (memory persistence):',
|
|
112
112
|
mask: '*',
|
|
113
113
|
validate: v => v.length > 0 || 'Required for cross-session memory',
|
|
114
114
|
},
|
package/config/AGENTS.md
CHANGED
|
@@ -118,7 +118,7 @@ For agents with `reasoning: true` + `variant: "high"`, follow `rules/thinking.md
|
|
|
118
118
|
|
|
119
119
|
### Research-Loop Rule
|
|
120
120
|
|
|
121
|
-
Follow `rules/uncertainty.md` strictly. When uncertain or stuck, the next move is a research tool call (`websearch` for outside-the-repo facts, `webfetch` for official docs, `semble search` for codebase patterns, `
|
|
121
|
+
Follow `rules/uncertainty.md` strictly. When uncertain or stuck, the next move is a research tool call (`websearch` for outside-the-repo facts, `webfetch` for official docs, `semble search` for codebase patterns, `obsidian_*` for project memory) — not a third variation of the same edit. If you catch yourself about to retry the same failed command with slightly different arguments, stop and search first. The plugin's loop-guard (`loopThresholdWarn: 5`) is the safety net; self-correct at attempt 2.
|
|
122
122
|
|
|
123
123
|
---
|
|
124
124
|
|
|
@@ -154,7 +154,7 @@ Odin (`@odin`) is the All-Father and primary/default agent. He analyzes each req
|
|
|
154
154
|
### Vör
|
|
155
155
|
|
|
156
156
|
- **Model**: `opencode/deepseek-v4-flash-free` (via OpenCode Zen — free tier)
|
|
157
|
-
- **Use for**: Clarifying ambiguous or incomplete requests. First reads project context (`.bizar/PROJECT.md`,
|
|
157
|
+
- **Use for**: Clarifying ambiguous or incomplete requests. First reads project context (`.bizar/PROJECT.md`, obsidian, project files), then only asks targeted, project-specific questions if still unclear. Never asks generic questions.
|
|
158
158
|
- **Cost**: Free
|
|
159
159
|
|
|
160
160
|
### Heimdall
|
|
@@ -209,7 +209,7 @@ Odin (`@odin`) is the All-Father and primary/default agent. He analyzes each req
|
|
|
209
209
|
|
|
210
210
|
Odin dispatches all tasks to subagents via the `task` tool. When work items are **independent**, he launches them as **parallel `task` calls in a single message**.
|
|
211
211
|
|
|
212
|
-
**Before dispatching any task, Odin determines the project name and sets the correct
|
|
212
|
+
**Before dispatching any task, Odin determines the project name and sets the correct obsidian bank.** See obsidian Memory Protocol below for bank selection rules.
|
|
213
213
|
|
|
214
214
|
| Task Type | Route To |
|
|
215
215
|
|-----------|----------|
|
|
@@ -250,48 +250,6 @@ Odin dispatches all tasks to subagents via the `task` tool. When work items are
|
|
|
250
250
|
|
|
251
251
|
---
|
|
252
252
|
|
|
253
|
-
## Hindsight Memory Protocol
|
|
254
|
-
|
|
255
|
-
A Hindsight memory MCP server is available. All agents **must** use **per-project banks** — the default bank is for general/cross-project knowledge only.
|
|
256
|
-
|
|
257
|
-
### Bank Selection Rules
|
|
258
|
-
|
|
259
|
-
1. **At session start**, call `hindsight_list_banks` to see what banks exist
|
|
260
|
-
2. Determine the project name from your working directory or the task context
|
|
261
|
-
3. Use the project-specific bank by passing `bank_id: "<project-name>"` in all Hindsight calls
|
|
262
|
-
4. If no bank exists for the project, create one with `hindsight_create_bank(bank_id: "<project-name>")`
|
|
263
|
-
5. The **default** bank is reserved for:
|
|
264
|
-
- General AI-agent system knowledge (model configs, agent definitions, infrastructure)
|
|
265
|
-
- Cross-project preferences and personal facts about the user
|
|
266
|
-
- Knowledge that applies regardless of which project
|
|
267
|
-
|
|
268
|
-
### Available Hindsight Tools
|
|
269
|
-
|
|
270
|
-
| Tool | Purpose |
|
|
271
|
-
|------|---------|
|
|
272
|
-
| `hindsight_list_banks` | List all available banks — call this first |
|
|
273
|
-
| `hindsight_create_bank` | Create a new project bank if one doesn't exist |
|
|
274
|
-
| `hindsight_recall` | Search stored memories for relevant context |
|
|
275
|
-
| `hindsight_retain` | Store new information to memory |
|
|
276
|
-
| `hindsight_sync_retain` | Store and block until complete |
|
|
277
|
-
| `hindsight_reflect` | Synthesize insights across stored memories |
|
|
278
|
-
| `hindsight_list_mental_models` | Check existing mental models |
|
|
279
|
-
| `hindsight_get_mental_model` | Read a mental model's content |
|
|
280
|
-
| `hindsight_create_mental_model` | Create a persistent knowledge summary |
|
|
281
|
-
| `hindsight_update_bank` | Update a bank's name/mission/configuration |
|
|
282
|
-
|
|
283
|
-
### Required Workflow
|
|
284
|
-
|
|
285
|
-
1. **Session start**: `hindsight_list_banks` + `hindsight_recall` (with correct `bank_id`) + read `.bizar/AGENTS_SELF_IMPROVEMENT.md`
|
|
286
|
-
2. **During work**: `hindsight_retain` with correct `bank_id` for all project knowledge
|
|
287
|
-
3. **Task completion**: `hindsight_retain` summary into the project bank + record entry in `.bizar/AGENTS_SELF_IMPROVEMENT.md`
|
|
288
|
-
4. **Project knowledge**: Create mental models for sustained project context
|
|
289
|
-
|
|
290
|
-
### Hindsight MCP Server
|
|
291
|
-
|
|
292
|
-
The Hindsight MCP server is already configured. All agents interact with it through MCP tools. Always pass `bank_id` — do not rely on the default bank for project-specific work.
|
|
293
|
-
|
|
294
|
-
---
|
|
295
253
|
|
|
296
254
|
## Graph Query (bizar graph)
|
|
297
255
|
|
|
@@ -327,7 +285,7 @@ From the project root, the user (or heimdall via `/init` or any other agent prom
|
|
|
327
285
|
|
|
328
286
|
## General Agent Baseline — Always-On Behavior
|
|
329
287
|
|
|
330
|
-
This section is the single source of truth for every Bizar agent's behavior. It is **adapted from the upstream system prompt and translated to Bizar**. Every Claude-specific reference has been mapped to the Bizar equivalent (BizarHarness, opencode,
|
|
288
|
+
This section is the single source of truth for every Bizar agent's behavior. It is **adapted from the upstream system prompt and translated to Bizar**. Every Claude-specific reference has been mapped to the Bizar equivalent (BizarHarness, opencode, obsidian, Semble, Skills CLI, agent-browser, the opencode tool set). All agents **MUST** follow these rules at all times.
|
|
331
289
|
|
|
332
290
|
> **Tool name translation table** (used throughout this baseline):
|
|
333
291
|
>
|
|
@@ -345,7 +303,7 @@ This section is the single source of truth for every Bizar agent's behavior. It
|
|
|
345
303
|
> | `ask_user_input_v0` | Bizar has a `question` tool — same shape, single high-value question |
|
|
346
304
|
> | `skill` | `skill` — load a SKILL.md from `~/.opencode/skills/<name>/` or installed equivalent |
|
|
347
305
|
> | `task` (subagent dispatch) | `task` — same — used by Odin to dispatch subagents |
|
|
348
|
-
> | MCP servers | `semble` (codebase search), `
|
|
306
|
+
> | MCP servers | `semble` (codebase search), `obsidian` (memory), and any user-added servers in `config/opencode.json` |
|
|
349
307
|
|
|
350
308
|
### Simplicity Rule — do not overcomplicate
|
|
351
309
|
|
|
@@ -429,7 +387,7 @@ This section is the single source of truth for every Bizar agent's behavior. It
|
|
|
429
387
|
- Bizar does not have a single knowledge cutoff shared by all models. Subagents may run on DeepSeek V4 Flash, MiniMax M2.7 / M3, or GPT-5.5, each with their own training window.
|
|
430
388
|
- For facts that change quickly (current positions, prices, breaking news) or anything that could have changed recently, **search before answering**: use `websearch` and `webfetch` or delegate to `@mimir` for deep research.
|
|
431
389
|
- For stable technical knowledge (language semantics, well-established APIs, mathematical truths), answer directly without search.
|
|
432
|
-
- Default to using `
|
|
390
|
+
- Default to using `obsidian_*` with the project's `bank_id` at session start to retrieve prior project context before answering anything project-specific.
|
|
433
391
|
- When formulating date-sensitive queries, use the actual current date (Bizar's opencode environment provides this). Do not hardcode years.
|
|
434
392
|
- Do not over-rely on memory; if uncertain, search. Confabulating costs the user more than searching.
|
|
435
393
|
|
|
@@ -440,7 +398,7 @@ Bizar can connect to external tools via MCP servers. Always check what's connect
|
|
|
440
398
|
#### Always-on MCP servers
|
|
441
399
|
|
|
442
400
|
- `semble` — local codebase search. Use `semble search "<query>"` for natural-language and keyword queries against the active repo. Faster and more token-efficient than `grep` / `read`.
|
|
443
|
-
- `
|
|
401
|
+
- `obsidian` — persistent memory with per-project banks. Use `obsidian_*` with `bank_id: "<project-name>"` to retrieve prior context; `obsidian_*` to store new findings.
|
|
444
402
|
|
|
445
403
|
#### Domain skills
|
|
446
404
|
|
|
@@ -514,7 +472,7 @@ Use `websearch` and `webfetch` for current information you don't have or that ma
|
|
|
514
472
|
**Core search behaviors:**
|
|
515
473
|
1. Search for fast-changing info (stock prices, breaking news, current holders of public positions). Don't search for timeless technical facts.
|
|
516
474
|
2. Scale tool calls to query complexity: 1 for single facts; 3–5 for medium; 5–10 for deeper research; 20+ should be delegated to `@mimir`.
|
|
517
|
-
3. Use internal data tools (
|
|
475
|
+
3. Use internal data tools (obsidian for project memory, Semble for code) **before** `websearch` when working on the user's own projects.
|
|
518
476
|
|
|
519
477
|
**How to search:**
|
|
520
478
|
- Keep queries concise (1–6 words) and start broad.
|
|
@@ -564,7 +522,7 @@ For Bizar-internal claims (citing files, lines, tool results), use file:line ref
|
|
|
564
522
|
|
|
565
523
|
### memory_privacy_and_user_data
|
|
566
524
|
|
|
567
|
-
- Use persistent memory (`
|
|
525
|
+
- Use persistent memory (`obsidian_*`) only when the information is stable, useful, and not sensitive unless explicitly requested.
|
|
568
526
|
- Do not store trivial, short-lived, or unnecessarily personal information.
|
|
569
527
|
- Handle user data conservatively.
|
|
570
528
|
- Do not expose private emails, files, contacts, credentials, tokens, or internal documents unless requested and permitted.
|
package/config/agents/baldr.md
CHANGED
|
@@ -13,8 +13,6 @@ permission:
|
|
|
13
13
|
todowrite: allow
|
|
14
14
|
webfetch: allow
|
|
15
15
|
websearch: allow
|
|
16
|
-
hindsight_recall: allow
|
|
17
|
-
hindsight_retain: allow
|
|
18
16
|
---
|
|
19
17
|
|
|
20
18
|
## Codebase Search — Use Semble First
|
|
@@ -122,31 +120,11 @@ Watch for these generic AI-generated patterns and flag them:
|
|
|
122
120
|
## Tools Available
|
|
123
121
|
|
|
124
122
|
- Semble search for codebase exploration
|
|
125
|
-
|
|
123
|
+
|
|
126
124
|
- read, write, edit, glob, grep for DESIGN.md creation
|
|
127
125
|
- bash for running design lint tools (`npx @google/design.md lint`)
|
|
128
126
|
- webfetch, websearch for competitor research
|
|
129
127
|
|
|
130
|
-
## Hindsight Memory Protocol
|
|
131
|
-
|
|
132
|
-
You MUST use **per-project banks** — never the default bank for project work.
|
|
133
|
-
|
|
134
|
-
### Bank Selection
|
|
135
|
-
1. Call `hindsight_list_banks` to discover available banks
|
|
136
|
-
2. Use `bank_id: "<project-name>"` in all Hindsight calls
|
|
137
|
-
3. If no bank exists for the project, create it with `hindsight_create_bank(bank_id: "<project-name>")`
|
|
138
|
-
4. The default bank is for general/system knowledge only
|
|
139
|
-
|
|
140
|
-
### Before Work
|
|
141
|
-
- `hindsight_recall` with the correct `bank_id` for existing context
|
|
142
|
-
|
|
143
|
-
### During Work
|
|
144
|
-
- `hindsight_retain` important findings with the correct `bank_id`
|
|
145
|
-
- Tag memories with `project:<repo-name>`
|
|
146
|
-
|
|
147
|
-
### After Work
|
|
148
|
-
- `hindsight_retain` completion summary into the project bank
|
|
149
|
-
- Create or update mental models for sustained project context
|
|
150
128
|
|
|
151
129
|
## Loop Guard Handling
|
|
152
130
|
|
|
@@ -195,4 +173,4 @@ When uncertain or stuck, follow `config/rules/uncertainty.md` — stop and resea
|
|
|
195
173
|
|
|
196
174
|
**Follow the global baseline in `config/AGENTS.md` → "General Agent Baseline — Always-On Behavior".** It covers identity, refusal, tone, formatting, lists, user wellbeing, evenhandedness, mistakes, knowledge cutoff and research-first, MCP servers and skills, mandatory skill-read, file creation, file handling, search, copyright, harmful content, citations, images, memory privacy, execution, clarification, and communication.
|
|
197
175
|
|
|
198
|
-
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI,
|
|
176
|
+
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI, Obsidian, agent-browser, the dashboard artifact pipeline). Do not duplicate the rules here — read the global baseline and apply it.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Browser-harness — drives a real Chromium browser via CDP for E2E verification, screenshots, smoke tests, and visual regression. Never modifies code.
|
|
3
|
+
mode: primary
|
|
4
|
+
model: minimax/MiniMax-M2.7
|
|
5
|
+
color: "#f59e0b"
|
|
6
|
+
permission:
|
|
7
|
+
read: allow
|
|
8
|
+
bash:
|
|
9
|
+
'*': allow
|
|
10
|
+
glob: allow
|
|
11
|
+
grep: allow
|
|
12
|
+
list: allow
|
|
13
|
+
webfetch: allow
|
|
14
|
+
task: deny
|
|
15
|
+
edit: deny
|
|
16
|
+
write: deny
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Browser-harness Agent
|
|
20
|
+
|
|
21
|
+
You drive a real Chromium browser through the Chrome DevTools Protocol. Use `chromium --headless --no-sandbox --remote-debugging-port=9222` and CDP via `chrome-remote-interface`. You never edit source code; you verify behavior and produce screenshots, traces, and structured findings.
|
|
22
|
+
|
|
23
|
+
### Common operations
|
|
24
|
+
|
|
25
|
+
- **Navigate**: `Page.navigate({ url })`
|
|
26
|
+
- **Click**: find element via `Runtime.evaluate` (e.g. `document.querySelector('.btn').click()`), or via `DOM.getDocument` + `DOM.querySelector` for headless reliability.
|
|
27
|
+
- **Fill inputs**: set `.value` then dispatch `input`/`change` events.
|
|
28
|
+
- **Screenshot**: `Page.captureScreenshot({ format: 'png' })` → base64 → write to file.
|
|
29
|
+
- **Evaluate JS**: `Runtime.evaluate({ expression, returnByValue: true, awaitPromise: true })`.
|
|
30
|
+
- **Wait**: `Runtime.evaluate({ expression: "new Promise(r => setTimeout(r, N))", awaitPromise: true })` for delays; poll DOM state for conditions.
|
|
31
|
+
|
|
32
|
+
### Workflow
|
|
33
|
+
|
|
34
|
+
1. Receive a target URL or scenario description.
|
|
35
|
+
2. Start a headless chromium with `--remote-debugging-port=9222` (or reuse a running dashboard on its existing port).
|
|
36
|
+
3. `await CDP({ port: 9222 })` to connect.
|
|
37
|
+
4. Wait for the page to render — use `Page.loadEventFired` + a small settle delay (SPA mounts after the HTML loads).
|
|
38
|
+
5. Capture the requested evidence (screenshot, DOM dump, console messages, network log).
|
|
39
|
+
6. Optionally click through a scenario step-by-step, screenshotting after each interaction.
|
|
40
|
+
7. Return a structured report: what was verified, what failed, screenshots saved to disk.
|
|
41
|
+
|
|
42
|
+
### Coordination with other agents
|
|
43
|
+
|
|
44
|
+
- **Odin** dispatches you for "verify this works in the browser" / "screenshot the dashboard" / "run a smoke test on the UI".
|
|
45
|
+
- **Heimdall / Thor / Tyr** ask you to verify their code changes — you return screenshots + findings.
|
|
46
|
+
- **Baldr** asks you to capture before/after screenshots for design comparisons.
|
|
47
|
+
- You do not edit code. If a screenshot reveals a bug, report it with a file:line reference; the parent agent will fix it.
|
|
48
|
+
|
|
49
|
+
### Output format
|
|
50
|
+
|
|
51
|
+
Return:
|
|
52
|
+
- A short status line (`PASS` / `FAIL` / `BLOCKED`)
|
|
53
|
+
- A bullet list of what was verified
|
|
54
|
+
- A bullet list of anything unexpected
|
|
55
|
+
- Paths to saved screenshots
|
|
56
|
+
|
|
57
|
+
### Example: screenshot the dashboard
|
|
58
|
+
|
|
59
|
+
```js
|
|
60
|
+
import CDP from 'chrome-remote-interface';
|
|
61
|
+
import { writeFileSync } from 'node:fs';
|
|
62
|
+
const c = await CDP({ port: 9222 });
|
|
63
|
+
const { Page, Runtime, Emulation } = c;
|
|
64
|
+
await Emulation.setDeviceMetricsOverride({ width: 1600, height: 1000, deviceScaleFactor: 1, mobile: false });
|
|
65
|
+
await Page.enable();
|
|
66
|
+
await Runtime.enable();
|
|
67
|
+
await Page.navigate({ url: 'http://127.0.0.1:4321/' });
|
|
68
|
+
await Page.loadEventFired();
|
|
69
|
+
await new Promise(r => setTimeout(r, 5000)); // SPA mount
|
|
70
|
+
const ss = await Page.captureScreenshot({ format: 'png' });
|
|
71
|
+
writeFileSync('/tmp/dash.png', Buffer.from(ss.data, 'base64'));
|
|
72
|
+
await c.close();
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Tips
|
|
76
|
+
|
|
77
|
+
- For headless on Linux, prefer `chromium --headless --no-sandbox` (root user requires `--no-sandbox`).
|
|
78
|
+
- To click a button by text: `Runtime.evaluate({ expression: "(() => { const b = [...document.querySelectorAll('button')].find(b => b.textContent.trim() === 'Save'); if (b) b.click(); })()", returnByValue: true })`.
|
|
79
|
+
- The `data-section`, `data-active-section`, `data-active-tab` attributes on dashboard elements make state assertions easy without parsing HTML.
|
|
80
|
+
- If the dashboard has its own URL hash for sub-tabs (e.g. `#settings-theme`), navigate directly to that URL and screenshot.
|
package/config/agents/forseti.md
CHANGED
|
@@ -14,8 +14,6 @@ permission:
|
|
|
14
14
|
question: allow
|
|
15
15
|
webfetch: allow
|
|
16
16
|
websearch: allow
|
|
17
|
-
hindsight_recall: allow
|
|
18
|
-
hindsight_retain: allow
|
|
19
17
|
---
|
|
20
18
|
|
|
21
19
|
## Codebase Search — Use Semble First
|
|
@@ -80,26 +78,6 @@ For every review, provide a structured verdict:
|
|
|
80
78
|
### Approved Plan (if CHANGES REQUIRED, show corrected version)
|
|
81
79
|
```
|
|
82
80
|
|
|
83
|
-
## Hindsight Memory Protocol
|
|
84
|
-
|
|
85
|
-
You MUST use **per-project banks** — never the default bank for project work.
|
|
86
|
-
|
|
87
|
-
### Bank Selection
|
|
88
|
-
1. Call `hindsight_list_banks` to discover available banks
|
|
89
|
-
2. Use `bank_id: "<project-name>"` in all Hindsight calls
|
|
90
|
-
3. If no bank exists for the project, create it with `hindsight_create_bank(bank_id: "<project-name>")`
|
|
91
|
-
4. The default bank is for general/system knowledge only
|
|
92
|
-
|
|
93
|
-
### Before Work
|
|
94
|
-
- `hindsight_recall` with the correct `bank_id` for existing context
|
|
95
|
-
|
|
96
|
-
### During Work
|
|
97
|
-
- `hindsight_retain` important findings with the correct `bank_id`
|
|
98
|
-
- Tag memories with `project:<repo-name>`
|
|
99
|
-
|
|
100
|
-
### After Work
|
|
101
|
-
- `hindsight_retain` completion summary into the project bank
|
|
102
|
-
- Create or update mental models for sustained project context
|
|
103
81
|
|
|
104
82
|
## Loop Guard Handling
|
|
105
83
|
|
|
@@ -144,4 +122,4 @@ You may be invoked alongside other audit agents (parallel reviews of different f
|
|
|
144
122
|
|
|
145
123
|
**Follow the global baseline in `config/AGENTS.md` → "General Agent Baseline — Always-On Behavior".** It covers identity, refusal, tone, formatting, lists, user wellbeing, evenhandedness, mistakes, knowledge cutoff and research-first, MCP servers and skills, mandatory skill-read, file creation, file handling, search, copyright, harmful content, citations, images, memory privacy, execution, clarification, and communication.
|
|
146
124
|
|
|
147
|
-
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI,
|
|
125
|
+
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI, Obsidian, agent-browser, the dashboard artifact pipeline). Do not duplicate the rules here — read the global baseline and apply it.
|
package/config/agents/frigg.md
CHANGED
|
@@ -11,8 +11,6 @@ permission:
|
|
|
11
11
|
bash: allow
|
|
12
12
|
webfetch: allow
|
|
13
13
|
websearch: allow
|
|
14
|
-
hindsight_recall: allow
|
|
15
|
-
hindsight_retain: allow
|
|
16
14
|
question: allow
|
|
17
15
|
---
|
|
18
16
|
|
|
@@ -51,7 +49,7 @@ You answer thoroughly, citing relevant files and line numbers.
|
|
|
51
49
|
- **glob, grep** — find files and search for patterns
|
|
52
50
|
- **bash** — for read-only commands: `ls`, `rg`, `sk list --json`, etc. (NEVER edit commands)
|
|
53
51
|
- **webfetch, websearch** — look up external docs if needed
|
|
54
|
-
-
|
|
52
|
+
-
|
|
55
53
|
- **question** — ask the user clarifying questions if their query is ambiguous
|
|
56
54
|
|
|
57
55
|
## What You NEVER Do
|
|
@@ -77,27 +75,8 @@ You answer thoroughly, citing relevant files and line numbers.
|
|
|
77
75
|
- Be honest if you don't know something
|
|
78
76
|
- If a question requires modifying code to answer fully, explain what you found and what changes would be needed
|
|
79
77
|
- Keep answers structured: overview → details → key files
|
|
80
|
-
-
|
|
78
|
+
-
|
|
81
79
|
|
|
82
|
-
## Hindsight Memory Protocol
|
|
83
|
-
|
|
84
|
-
You MUST use **per-project banks** — never the default bank for project work.
|
|
85
|
-
|
|
86
|
-
### Bank Selection
|
|
87
|
-
1. Call `hindsight_list_banks` to discover available banks
|
|
88
|
-
2. Use `bank_id: "<project-name>"` in all Hindsight calls
|
|
89
|
-
3. If no bank exists for the project, create it with `hindsight_create_bank(bank_id: "<project-name>")`
|
|
90
|
-
4. The default bank is for general/system knowledge only
|
|
91
|
-
|
|
92
|
-
### Before Work
|
|
93
|
-
- `hindsight_recall` with the correct `bank_id` for existing context
|
|
94
|
-
|
|
95
|
-
### During Work
|
|
96
|
-
- `hindsight_retain` important findings with the correct `bank_id`
|
|
97
|
-
- Tag memories with `project:<repo-name>`
|
|
98
|
-
|
|
99
|
-
### After Work
|
|
100
|
-
- `hindsight_retain` completion summary into the project bank
|
|
101
80
|
|
|
102
81
|
## Loop Guard Handling
|
|
103
82
|
|
|
@@ -123,4 +102,4 @@ When uncertain or stuck, follow `config/rules/uncertainty.md` — stop and resea
|
|
|
123
102
|
|
|
124
103
|
**Follow the global baseline in `config/AGENTS.md` → "General Agent Baseline — Always-On Behavior".** It covers identity, refusal, tone, formatting, lists, user wellbeing, evenhandedness, mistakes, knowledge cutoff and research-first, MCP servers and skills, mandatory skill-read, file creation, file handling, search, copyright, harmful content, citations, images, memory privacy, execution, clarification, and communication.
|
|
125
104
|
|
|
126
|
-
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI,
|
|
105
|
+
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI, Obsidian, agent-browser, the dashboard artifact pipeline). Do not duplicate the rules here — read the global baseline and apply it.
|
|
@@ -13,8 +13,6 @@ permission:
|
|
|
13
13
|
todowrite: allow
|
|
14
14
|
webfetch: allow
|
|
15
15
|
websearch: allow
|
|
16
|
-
hindsight_recall: allow
|
|
17
|
-
hindsight_retain: allow
|
|
18
16
|
---
|
|
19
17
|
|
|
20
18
|
## Codebase Search — Use Semble First
|
|
@@ -51,7 +49,7 @@ Odin sends you tasks that are:
|
|
|
51
49
|
|
|
52
50
|
You have full access to:
|
|
53
51
|
- Semble search for codebase exploration
|
|
54
|
-
|
|
52
|
+
|
|
55
53
|
- read, write, edit, glob, grep for file operations
|
|
56
54
|
- bash for commands
|
|
57
55
|
- webfetch, websearch for external information
|
|
@@ -125,26 +123,6 @@ Rules:
|
|
|
125
123
|
- Don't duplicate what's in AGENTS_SELF_IMPROVEMENT.md
|
|
126
124
|
- First creation is done by @mimir at Odin's request (explores codebase and writes it)
|
|
127
125
|
|
|
128
|
-
## Hindsight Memory Protocol
|
|
129
|
-
|
|
130
|
-
You MUST use **per-project banks** — never the default bank for project work.
|
|
131
|
-
|
|
132
|
-
### Bank Selection
|
|
133
|
-
1. Call `hindsight_list_banks` to discover available banks
|
|
134
|
-
2. Use `bank_id: "<project-name>"` in all Hindsight calls
|
|
135
|
-
3. If no bank exists for the project, create it with `hindsight_create_bank(bank_id: "<project-name>")`
|
|
136
|
-
4. The default bank is for general/system knowledge only
|
|
137
|
-
|
|
138
|
-
### Before Work
|
|
139
|
-
- `hindsight_recall` with the correct `bank_id` for existing context
|
|
140
|
-
|
|
141
|
-
### During Work
|
|
142
|
-
- `hindsight_retain` important findings with the correct `bank_id`
|
|
143
|
-
- Tag memories with `project:<repo-name>`
|
|
144
|
-
|
|
145
|
-
### After Work
|
|
146
|
-
- `hindsight_retain` completion summary into the project bank
|
|
147
|
-
- Create or update mental models for sustained project context
|
|
148
126
|
|
|
149
127
|
## Loop Guard Handling
|
|
150
128
|
|
|
@@ -204,4 +182,4 @@ End your final summary with: `Siblings: <list>. Conflicts: <list or "none">. Git
|
|
|
204
182
|
|
|
205
183
|
**Follow the global baseline in `config/AGENTS.md` → "General Agent Baseline — Always-On Behavior".** It covers identity, refusal, tone, formatting, lists, user wellbeing, evenhandedness, mistakes, knowledge cutoff and research-first, MCP servers and skills, mandatory skill-read, file creation, file handling, search, copyright, harmful content, citations, images, memory privacy, execution, clarification, and communication.
|
|
206
184
|
|
|
207
|
-
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI,
|
|
185
|
+
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI, Obsidian, agent-browser, the dashboard artifact pipeline). Do not duplicate the rules here — read the global baseline and apply it.
|
package/config/agents/hermod.md
CHANGED
|
@@ -12,8 +12,6 @@ permission:
|
|
|
12
12
|
list: allow
|
|
13
13
|
webfetch: allow
|
|
14
14
|
websearch: allow
|
|
15
|
-
hindsight_recall: allow
|
|
16
|
-
hindsight_retain: allow
|
|
17
15
|
---
|
|
18
16
|
|
|
19
17
|
## Codebase Search — Use Semble First
|
|
@@ -100,26 +98,6 @@ Every version control workflow runs through you: staging, committing, pushing, p
|
|
|
100
98
|
- Flag critical/high severity alerts immediately
|
|
101
99
|
- Never commit API keys, passwords, or tokens
|
|
102
100
|
|
|
103
|
-
## Hindsight Memory Protocol
|
|
104
|
-
|
|
105
|
-
You MUST use **per-project banks** — never the default bank for project work.
|
|
106
|
-
|
|
107
|
-
### Bank Selection
|
|
108
|
-
1. Call `hindsight_list_banks` to discover available banks
|
|
109
|
-
2. Use `bank_id: "<project-name>"` in all Hindsight calls
|
|
110
|
-
3. If no bank exists for the project, create it with `hindsight_create_bank(bank_id: "<project-name>")`
|
|
111
|
-
4. The default bank is for general/system knowledge only
|
|
112
|
-
|
|
113
|
-
### Before Work
|
|
114
|
-
- `hindsight_recall` with the correct `bank_id` for existing context
|
|
115
|
-
|
|
116
|
-
### During Work
|
|
117
|
-
- `hindsight_retain` important findings with the correct `bank_id`
|
|
118
|
-
- Tag memories with `project:<repo-name>`
|
|
119
|
-
|
|
120
|
-
### After Work
|
|
121
|
-
- `hindsight_retain` completion summary into the project bank
|
|
122
|
-
- Create or update mental models for sustained project context
|
|
123
101
|
|
|
124
102
|
## Loop Guard Handling
|
|
125
103
|
|
|
@@ -187,4 +165,4 @@ You may run while implementation agents (Thor, Tyr, Heimdall, Vidarr, Mimir, Bal
|
|
|
187
165
|
|
|
188
166
|
**Follow the global baseline in `config/AGENTS.md` → "General Agent Baseline — Always-On Behavior".** It covers identity, refusal, tone, formatting, lists, user wellbeing, evenhandedness, mistakes, knowledge cutoff and research-first, MCP servers and skills, mandatory skill-read, file creation, file handling, search, copyright, harmful content, citations, images, memory privacy, execution, clarification, and communication.
|
|
189
167
|
|
|
190
|
-
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI,
|
|
168
|
+
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI, Obsidian, agent-browser, the dashboard artifact pipeline). Do not duplicate the rules here — read the global baseline and apply it.
|
package/config/agents/mimir.md
CHANGED
|
@@ -14,8 +14,6 @@ permission:
|
|
|
14
14
|
webfetch: allow
|
|
15
15
|
websearch: allow
|
|
16
16
|
todowrite: allow
|
|
17
|
-
hindsight_recall: allow
|
|
18
|
-
hindsight_retain: allow
|
|
19
17
|
---
|
|
20
18
|
|
|
21
19
|
## Codebase Search — Use Semble First
|
|
@@ -83,26 +81,6 @@ Odin may dispatch you to create `.bizar/PROJECT.md` for a new project. This is a
|
|
|
83
81
|
|
|
84
82
|
Keep it 20-40 lines. This is a living document — @heimdall will update it as the project evolves.
|
|
85
83
|
|
|
86
|
-
## Hindsight Memory Protocol
|
|
87
|
-
|
|
88
|
-
You MUST use **per-project banks** — never the default bank for project work.
|
|
89
|
-
|
|
90
|
-
### Bank Selection
|
|
91
|
-
1. Call `hindsight_list_banks` to discover available banks
|
|
92
|
-
2. Use `bank_id: "<project-name>"` in all Hindsight calls
|
|
93
|
-
3. If no bank exists for the project, create it with `hindsight_create_bank(bank_id: "<project-name>")`
|
|
94
|
-
4. The default bank is for general/system knowledge only
|
|
95
|
-
|
|
96
|
-
### Before Work
|
|
97
|
-
- `hindsight_recall` with the correct `bank_id` for existing context
|
|
98
|
-
|
|
99
|
-
### During Work
|
|
100
|
-
- `hindsight_retain` important findings with the correct `bank_id`
|
|
101
|
-
- Tag memories with `project:<repo-name>`
|
|
102
|
-
|
|
103
|
-
### After Work
|
|
104
|
-
- `hindsight_retain` completion summary into the project bank
|
|
105
|
-
- Create or update mental models for sustained project context
|
|
106
84
|
|
|
107
85
|
## Loop Guard Handling
|
|
108
86
|
|
|
@@ -162,4 +140,4 @@ End your final summary with: `Siblings: <list>. Conflicts: <list or "none">. Git
|
|
|
162
140
|
|
|
163
141
|
**Follow the global baseline in `config/AGENTS.md` → "General Agent Baseline — Always-On Behavior".** It covers identity, refusal, tone, formatting, lists, user wellbeing, evenhandedness, mistakes, knowledge cutoff and research-first, MCP servers and skills, mandatory skill-read, file creation, file handling, search, copyright, harmful content, citations, images, memory privacy, execution, clarification, and communication.
|
|
164
142
|
|
|
165
|
-
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI,
|
|
143
|
+
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI, Obsidian, agent-browser, the dashboard artifact pipeline). Do not duplicate the rules here — read the global baseline and apply it.
|
package/config/agents/odin.md
CHANGED
|
@@ -10,10 +10,6 @@ permission:
|
|
|
10
10
|
todowrite: allow
|
|
11
11
|
webfetch: allow
|
|
12
12
|
websearch: allow
|
|
13
|
-
hindsight_recall: allow
|
|
14
|
-
hindsight_retain: allow
|
|
15
|
-
hindsight_list_banks: allow
|
|
16
|
-
hindsight_create_bank: allow
|
|
17
13
|
---
|
|
18
14
|
|
|
19
15
|
## Codebase Search — Use Semble First
|
|
@@ -222,26 +218,6 @@ Update .bizar/ in this project.
|
|
|
222
218
|
2. Update PROJECT.md if this task revealed new project info
|
|
223
219
|
```
|
|
224
220
|
|
|
225
|
-
## Hindsight Memory Protocol
|
|
226
|
-
|
|
227
|
-
You MUST use **per-project banks** — never the default bank for project work.
|
|
228
|
-
|
|
229
|
-
### At Session Start
|
|
230
|
-
1. Call `hindsight_list_banks` to discover available banks
|
|
231
|
-
2. Determine the project name from the working directory or task context
|
|
232
|
-
3. Use `bank_id: "<project-name>"` in all Hindsight calls
|
|
233
|
-
4. If no bank exists for the project, create it with `hindsight_create_bank(bank_id: "<project-name>")`
|
|
234
|
-
|
|
235
|
-
### During Work
|
|
236
|
-
- `hindsight_recall` with the correct `bank_id` for relevant context
|
|
237
|
-
- `hindsight_retain` important context, architecture, conventions, decisions
|
|
238
|
-
- Before significant changes, `hindsight_recall` for related prior work
|
|
239
|
-
- Tag memories with `project:<repo-name>`
|
|
240
|
-
|
|
241
|
-
### On Task Completion
|
|
242
|
-
- `hindsight_retain` what was accomplished, key decisions, files changed
|
|
243
|
-
- Tag memories with `project:<repo-name>`
|
|
244
|
-
- Create or update mental models for sustained project context
|
|
245
221
|
|
|
246
222
|
## Parallel Dispatch Coordination
|
|
247
223
|
|
|
@@ -409,4 +385,4 @@ When uncertain or stuck, follow `config/rules/uncertainty.md` — stop and resea
|
|
|
409
385
|
|
|
410
386
|
**Follow the global baseline in `config/AGENTS.md` → "General Agent Baseline — Always-On Behavior".** It covers identity, refusal, tone, formatting, lists, user wellbeing, evenhandedness, mistakes, knowledge cutoff and research-first, MCP servers and skills, mandatory skill-read, file creation, file handling, search, copyright, harmful content, citations, images, memory privacy, execution, clarification, and communication.
|
|
411
387
|
|
|
412
|
-
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI,
|
|
388
|
+
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI, Obsidian vault, agent-browser, the dashboard artifact pipeline). Do not duplicate the rules here — read the global baseline and apply it.
|
package/config/agents/quick.md
CHANGED
|
@@ -15,8 +15,6 @@ permission:
|
|
|
15
15
|
webfetch: allow
|
|
16
16
|
websearch: allow
|
|
17
17
|
task: deny
|
|
18
|
-
hindsight_recall: allow
|
|
19
|
-
hindsight_retain: allow
|
|
20
18
|
---
|
|
21
19
|
|
|
22
20
|
## Codebase Search — Use Semble First
|
|
@@ -62,21 +60,6 @@ If a task requires:
|
|
|
62
60
|
|
|
63
61
|
…then tell the user to use `@odin` instead. You are not a router.
|
|
64
62
|
|
|
65
|
-
## Hindsight Memory Protocol
|
|
66
|
-
|
|
67
|
-
You MUST use **per-project banks** — never the default bank for project work.
|
|
68
|
-
|
|
69
|
-
### Bank Selection
|
|
70
|
-
1. Call `hindsight_list_banks` to discover available banks
|
|
71
|
-
2. Use `bank_id: "<project-name>"` in all Hindsight calls
|
|
72
|
-
3. If no bank exists for the project, create it with `hindsight_create_bank(bank_id: "<project-name>")`
|
|
73
|
-
4. The default bank is for general/system knowledge only
|
|
74
|
-
|
|
75
|
-
### Before Work
|
|
76
|
-
- `hindsight_recall` with the correct `bank_id` for existing context
|
|
77
|
-
|
|
78
|
-
### After Work
|
|
79
|
-
- `hindsight_retain` completion summary into the project bank
|
|
80
63
|
|
|
81
64
|
## Loop Guard Handling
|
|
82
65
|
|
|
@@ -102,4 +85,4 @@ When uncertain or stuck, follow `config/rules/uncertainty.md` — stop and resea
|
|
|
102
85
|
|
|
103
86
|
**Follow the global baseline in `config/AGENTS.md` → "General Agent Baseline — Always-On Behavior".** It covers identity, refusal, tone, formatting, lists, user wellbeing, evenhandedness, mistakes, knowledge cutoff and research-first, MCP servers and skills, mandatory skill-read, file creation, file handling, search, copyright, harmful content, citations, images, memory privacy, execution, clarification, and communication.
|
|
104
87
|
|
|
105
|
-
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI,
|
|
88
|
+
The section above was adapted from the upstream Claude Fable 5 system prompt, with every Claude-specific tool / function / directory translated to the BizarHarness equivalent (opencode tools, Semble, Skills CLI, Obsidian, agent-browser, the dashboard artifact pipeline). Do not duplicate the rules here — read the global baseline and apply it.
|