baxian 1.2.21 → 1.2.22

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 (39) hide show
  1. package/dist/agent/manager.d.ts +5 -0
  2. package/dist/agent/manager.d.ts.map +1 -1
  3. package/dist/agent/manager.js +263 -9
  4. package/dist/agent/manager.js.map +1 -1
  5. package/dist/agent/phase-signal-watcher.d.ts +6 -0
  6. package/dist/agent/phase-signal-watcher.d.ts.map +1 -1
  7. package/dist/agent/phase-signal-watcher.js +62 -0
  8. package/dist/agent/phase-signal-watcher.js.map +1 -1
  9. package/dist/agent/phase-signal.d.ts +4 -1
  10. package/dist/agent/phase-signal.d.ts.map +1 -1
  11. package/dist/agent/phase-signal.js +2 -1
  12. package/dist/agent/phase-signal.js.map +1 -1
  13. package/dist/agent/prompt.d.ts +2 -1
  14. package/dist/agent/prompt.d.ts.map +1 -1
  15. package/dist/agent/prompt.js +152 -278
  16. package/dist/agent/prompt.js.map +1 -1
  17. package/dist/api/projects.js +8 -1
  18. package/dist/api/projects.js.map +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +2 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/shared/constants.js +5 -5
  23. package/dist/shared/constants.js.map +1 -1
  24. package/dist/skill/registry.d.ts +2 -0
  25. package/dist/skill/registry.d.ts.map +1 -1
  26. package/dist/skill/registry.js +16 -0
  27. package/dist/skill/registry.js.map +1 -1
  28. package/dist/skills/baxian-greeting/SKILL.md +15 -0
  29. package/dist/skills/baxian-greeting/agents/openai.yaml +2 -0
  30. package/dist/skills/baxian-pr-feedback/SKILL.md +20 -3
  31. package/dist/skills/baxian-pr-recheck/SKILL.md +11 -11
  32. package/dist/skills/baxian-pr-review/SKILL.md +11 -11
  33. package/dist/skills/baxian-server-feedback/SKILL.md +38 -0
  34. package/dist/skills/baxian-server-feedback/agents/openai.yaml +2 -0
  35. package/dist/skills/baxian-server-review/SKILL.md +55 -0
  36. package/dist/skills/baxian-server-review/agents/openai.yaml +2 -0
  37. package/dist/skills/baxian-signals/SKILL.md +11 -5
  38. package/dist/skills/baxian-task-check/SKILL.md +35 -20
  39. package/package.json +1 -1
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: baxian-server-review
3
+ description: QA reviews injected server-review content (a code diff or a spec doc) — judge against the task spec, write findings.json with a verdict. Covers code review, recheck closure, and spec review.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ baxian dispatches you with a block of `key: value` dispatch fields; the review input rides in trailing blocks — `diff:` (code) or `spec:` (spec review), plus `prior-findings:` / `prior-response:` on a recheck. Do NOT fetch branches or use `gh` — those blocks ARE the review input. Work in `worktree:`. QA judges risk independently — human authorization is input, not a bypass. If a `content: truncated` field is present, request the missing context via the read-file side-channel.
8
+
9
+ Route on `phase:`: `server-review` → §Code Review; `server-recheck` → §Code Review + §Recheck Closure; `server-spec-review` → §Spec Review.
10
+
11
+ ## Code Review
12
+
13
+ Judge the `diff:` block against the task spec: correctness, tests, edge cases, security, regressions.
14
+
15
+ - Severity: `critical` = broken/unsafe, `major` = must fix before merge, `minor` = improvement.
16
+ - Reference file + line for every code finding.
17
+ - For unchanged files, read them directly from your own base-branch worktree; use the read-file side-channel only for content not present locally.
18
+
19
+ ## Recheck Closure
20
+
21
+ The `prior-findings:` and `prior-response:` blocks carry the earlier findings and the dev response. Close them out before judging anything new.
22
+
23
+ - Resolve the status of EVERY prior finding first.
24
+ - A finding the dev claims fixed → verify it in the new diff. No "fixed" without evidence.
25
+ - A finding the dev rejected / called out-of-scope → judge the rationale on merit; re-raise it with concrete counter-evidence if it is wrong.
26
+ - Any prior finding NOT closed reappears in `findings.json` with its ORIGINAL id and the evidence restated — do not renumber or drop it.
27
+ - Verdict `approve` ONLY when every prior finding is closed AND the new diff is clean. An unresolved finding may not be downgraded to a minor suggestion to justify approve — otherwise `request-changes`.
28
+ - After closure, scan the new diff for regressions AND for behavior the fixes introduced that lacks test coverage.
29
+
30
+ ## Spec Review
31
+
32
+ Judge the `spec:` block:
33
+
34
+ - completeness — every requirement covered, interfaces and data flows defined, error paths specified.
35
+ - correctness — internally consistent, no contradicting sections, feasible against the existing codebase.
36
+ - ambiguity — any requirement readable two ways is a finding.
37
+
38
+ Need a referenced file or codebase section to judge feasibility? Use the read-file side-channel. When `prior-findings:` / `prior-response:` blocks are present, verify every finding is closed before judging the rest of the spec.
39
+
40
+ ## Findings Output
41
+
42
+ Write findings to `.baxian/review/findings.json` in YOUR worktree (`mkdir -p .baxian/review` first). Atomic write: write `findings.json.tmp` first, then `mv findings.json.tmp findings.json`.
43
+
44
+ Schema — substitute `<round>` with your `round:` field:
45
+
46
+ ```json
47
+ {"round":<round>,"verdict":"approve"|"request-changes","findings":[{"id":"f-1","severity":"critical"|"major"|"minor","message":"...","file":"path","line":N}]}
48
+ ```
49
+
50
+ Spec-review findings use `"location":"Section ..."` in place of `"file"`/`"line"`.
51
+
52
+ - Finding ids are `f-1`, `f-2`, … sequential and unique within `findings.json` — the dev coverage check and QA closure verification key off them.
53
+ - `approve` MAY carry minor findings as suggestions; the `verdict` field is authoritative.
54
+
55
+ Then emit your `signal:` (`code-reviewed` or `spec-reviewed`) with `token:`. Signal wire format and the read-file side-channel: see the **baxian-signals** skill.
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -18,22 +18,28 @@ baxian scans the pane fuzzily (strips ANSI escapes and whitespace), so a TUI sof
18
18
 
19
19
  ## How to emit
20
20
 
21
- The dispatch prompt hands you a template with placeholders plus the literal values on companion lines:
21
+ The dispatch descriptor names the signal kind in a signal field and the token in `token:`. The default completion is `signal:`; some phases also expose an alternate field for an optional branch (e.g. `spec-signal:` on develop's SDD route). Your phase skill's flow tells you which field applies — emit the one for the route you took, never both:
22
22
 
23
23
  ```
24
- [bx:pr-fixed:<token>]
24
+ signal: pr-fixed
25
25
  token: a1b2c3d4e5f6
26
26
  ```
27
27
 
28
- 1. Substitute `<token>` with the value on the `token:` line. `<pr_number>` (only `pr-created`, and `code-ready` when publishing as a PR) is the number of the PR you just created/opened with `gh pr create` — the dispatch prompt carries no PR-number line.
28
+ 1. Build the wire form `[bx:KIND:TOKEN]` from the field your skill's flow selects — KIND = that field's value (the `signal:` value by default, or an alternate like `spec-signal:`), TOKEN = the `token:` value — and emit it filled. `<pr_number>` (only `pr-created`, and `code-ready` when publishing as a PR) is the number of the PR you just created/opened with `gh pr create` — the descriptor carries no PR-number field.
29
29
  2. Emit the filled signal **alone on its own line**.
30
- 3. **Never echo the `<…>` placeholder verbatim** — the scanner's strict regex cannot match angle-bracket placeholders, so a verbatim template echo fires nothing and the task hangs forever waiting on a signal.
31
- 4. Emit the kind the prompt asks for, **exactly once**, only when its precondition holds. baxian consumes the first matching signal whose token matches the active dispatch; the token rotates every dispatch, so a stale or guessed token never fires.
30
+ 3. **Never emit an angle-bracket placeholder** like `[bx:pr-fixed:<token>]` verbatim — the scanner's strict regex cannot match placeholders, so it fires nothing and the task hangs forever waiting on a signal.
31
+ 4. Emit the single kind your phase skill's flow selects, **exactly once**, only when its precondition holds. baxian consumes the first matching signal whose token matches the active dispatch; the token rotates every dispatch, so a stale or guessed token never fires.
32
32
 
33
33
  ## Signal catalog
34
34
 
35
35
  Phase signals — the per-dispatch transition signals baxian consumes to advance a task. The dispatch prompt always names which one to emit and when.
36
36
 
37
+ Bootstrap handshake (before any task):
38
+
39
+ | Signal | Meaning |
40
+ |---|---|
41
+ | `greeting` | one-time capability check at agent startup; prove you can load this skill and signal back. baxian holds the agent until it sees a valid `greeting` echo |
42
+
37
43
  GitHub PR flow:
38
44
 
39
45
  | Signal | Meaning |
@@ -1,35 +1,50 @@
1
1
  ---
2
2
  name: baxian-task-check
3
- description: How to analyze a baxian-managed task before starting development
3
+ description: How a dev analyzes and executes a baxian-managed develop/code task read the structured prompt, plan, run the develop or code flow, signal back.
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
7
- Before writing any code, read the task in your prompt the `Phase:` / `Role:` header followed by the `Title:` line and its description.
7
+ baxian dispatches you with a block of `key: value` dispatch fields followed by the task `title:` and its description. Work in the directory named by `worktree:` cd there before any file operation. Route on `phase:`: `develop` → §Develop, `code` → §Code.
8
8
 
9
- ## Steps
10
- 1. Read the prompt's `Title:` line and description — the authoritative task source (no `.baxian/task.md` file).
11
- 2. Identify acceptance criteria.
12
- 3. Plan: files to modify, tests to write.
9
+ If an `images:` list is present, read each path (baxian downloaded the user's uploads to the agent host) and factor them into the task.
13
10
 
14
- ## What to look for
15
- - Explicit vs implied requirements
16
- - Edge cases
17
- - File/function references
18
- - Linked docs, screenshots, specs
11
+ ## Analyze
19
12
 
20
- ## When to ask vs. proceed
13
+ 1. Read `title:` and the description — the authoritative task source (no `.baxian/task.md` file).
14
+ 2. Identify acceptance criteria, explicit vs implied requirements, edge cases, file/function references, linked docs/specs.
15
+ 3. Plan the files to modify and the tests to write.
16
+
17
+ When to ask vs proceed:
21
18
  - Clear → start.
22
- - Missing info + PR exists record in PR description.
23
- - Missing info + no PR → pick reasonable interpretation, write assumption after `<!-- baxian:managed -->` marker (marker MUST be line 1), or create task if blocked.
24
- - Minor ambiguity → proceed, note in PR.
25
- - Always record assumptions (PR, task, or commit message).
19
+ - Minor ambiguity proceed, record the assumption (PR description, task note, or commit message).
20
+ - Blocked → pick a reasonable interpretation and record it after the `<!-- baxian:managed -->` marker (marker MUST be line 1), or create a task if truly blocked.
21
+
22
+ ## Conventions
23
+
24
+ Your `exchange:` field selects the cross-agent medium:
25
+ - `github-pr` — communicate via the GitHub PR (description, commits, reviews, comments). A managed PR's description first line MUST be `<!-- baxian:managed -->`. Stay in scope — out-of-scope work goes to a new GitHub Issue.
26
+ - `server-files` — baxian reads your worktree directly; do NOT push or open a PR (the publish phase does that). Stay in scope.
27
+
28
+ A PR you open MUST be ready for review (not Draft): do NOT use `--draft`; if it is draft after creation, run `gh pr ready` before signaling.
29
+
30
+ ## Develop
31
+
32
+ Two mutually-exclusive routes — pick ONE and emit only its signal:
33
+
34
+ - **SDD** (only when a `spec-signal:` field is present, i.e. a QA partner exists) — get your design reviewed first: follow §Specification-Driven Development, then emit `spec-signal:` (`spec-done`) with `token:`. Do NOT emit the default `signal:` on this route — that would skip spec review and push an unimplemented task forward. After QA approves the spec, baxian dispatches the code phase. Use SDD when the design is non-trivial; skip it when the change is small or unambiguous.
35
+ - **Direct** — implement the change, then emit `signal:` with `token:`: `exchange: github-pr` → after `gh pr create` (ready for review), emit `pr-created`; `exchange: server-files` → after a local commit (do NOT push), emit `code-done`.
36
+
37
+ ## Code
38
+
39
+ The spec is approved at `.baxian/spec.md`. Implement it, then emit your `signal:` with `token:`:
40
+ - `exchange: github-pr` → commit + push, `gh pr create` (ready for review), emit `pr-created`.
41
+ - `exchange: server-files` → local commit only (do NOT push, no PR), emit `code-done`.
26
42
 
27
43
  ## Specification-Driven Development (SDD)
28
44
 
29
- Optional, and offered only when the dispatch prompt gives you a `spec-done` signal (a QA partner exists). Use it to have QA review your design before you write code.
45
+ Use it to have QA review your design before you write code.
30
46
 
31
47
  - Write the spec to `.baxian/spec.md` in your worktree. Do NOT commit or push it — baxian reads the file directly for QA review.
32
- - Then emit the `spec-done` signal the prompt gives you (with its token). Signal wire format and emit rules: see the baxian-signals skill.
33
- - Skip it and implement directly when the change is small or the design is unambiguous.
48
+ - Then emit the `spec-signal:` (`spec-done`) with `token:`.
34
49
 
35
- After QA approves the spec, baxian dispatches the code phase to implement it.
50
+ Signal wire format and emit rules: see the baxian-signals skill.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "baxian",
3
- "version": "1.2.21",
3
+ "version": "1.2.22",
4
4
  "description": "AI agent orchestration",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {