@polderlabs/bizar 3.17.0 → 3.20.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/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 · per-project Hindsight memory · RTK · Semble · Skills CLI'));
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/plan
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, plan, update, test-gate, service, dash
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 runPlan from './plan.mjs';
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
- plan <subcommand> Manage visual plans
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 runPlan(args.slice(1), {});
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 || keys.hindsight) {
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: 'hindsight',
111
- message: 'Hindsight API key (memory persistence):',
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, `hindsight_recall` 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.
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`, Hindsight, project files), then only asks targeted, project-specific questions if still unclear. Never asks generic questions.
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 Hindsight bank.** See Hindsight Memory Protocol below for bank selection rules.
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, Hindsight, Semble, Skills CLI, agent-browser, the opencode tool set). All agents **MUST** follow these rules at all times.
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), `hindsight` (memory), and any user-added servers in `config/opencode.json` |
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 `hindsight_recall` with the project's `bank_id` at session start to retrieve prior project context before answering anything project-specific.
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
- - `hindsight` — persistent memory with per-project banks. Use `hindsight_recall` with `bank_id: "<project-name>"` to retrieve prior context; `hindsight_retain` to store new findings.
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 (Hindsight for project memory, Semble for code) **before** `websearch` when working on the user's own projects.
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 (`hindsight_retain`) only when the information is stable, useful, and not sensitive unless explicitly requested.
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.