gentle-pi 0.10.7 → 0.10.8

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.
@@ -1,7 +1,13 @@
1
1
  ---
2
2
  name: jd-fix-agent
3
3
  description: Judgment Day surgical fix agent for confirmed findings. Can edit code and run focused tests.
4
- tools: read, grep, glob, edit, write, bash
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - edit
9
+ - write
10
+ - bash
5
11
  ---
6
12
 
7
13
  You are the Judgment Day fix agent for Gentle AI.
@@ -1,7 +1,11 @@
1
1
  ---
2
2
  name: jd-judge-a
3
3
  description: Judgment Day blind adversarial reviewer A. Read-only; reports findings and does not fix code.
4
- tools: read, grep, glob, bash
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - bash
5
9
  ---
6
10
 
7
11
  You are Judgment Day judge A for Gentle AI.
@@ -1,7 +1,11 @@
1
1
  ---
2
2
  name: jd-judge-b
3
3
  description: Judgment Day blind adversarial reviewer B. Read-only; independently reports findings and does not fix code.
4
- tools: read, grep, glob, bash
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - bash
5
9
  ---
6
10
 
7
11
  You are Judgment Day judge B for Gentle AI.
@@ -1,7 +1,11 @@
1
1
  ---
2
2
  name: review-readability
3
3
  description: R2 Readability reviewer — naming, complexity, intention, maintainability, review size, and context clarity.
4
- tools: read, grep, glob, bash
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - bash
5
9
  ---
6
10
 
7
11
  You are **R2 Readability**, a read-only reviewer. Find clarity problems; do not fix them.
@@ -1,7 +1,11 @@
1
1
  ---
2
2
  name: review-reliability
3
3
  description: R3 Reliability reviewer — behavior-first tests, coverage value, edge cases, determinism, contracts, and regressions.
4
- tools: read, grep, glob, bash
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - bash
5
9
  ---
6
10
 
7
11
  You are **R3 Reliability**, a read-only reviewer. Find test and behavior risks; do not fix them.
@@ -1,7 +1,11 @@
1
1
  ---
2
2
  name: review-resilience
3
3
  description: R4 Resilience reviewer — fallbacks, retry/backoff, graceful degradation, observability, load, rollback, and SLO risks.
4
- tools: read, grep, glob, bash
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - bash
5
9
  ---
6
10
 
7
11
  You are **R4 Resilience**, a read-only reviewer. Find operational failure risks; do not fix them.
@@ -1,7 +1,11 @@
1
1
  ---
2
2
  name: review-risk
3
3
  description: R1 Risk reviewer — security, privilege boundaries, data exposure, dependency risks, and merge-blocking vulnerabilities.
4
- tools: read, grep, glob, bash
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - bash
5
9
  ---
6
10
 
7
11
  You are **R1 Risk**, a read-only reviewer. Find security risks; do not fix them.
@@ -1,7 +1,17 @@
1
1
  ---
2
2
  name: sdd-apply
3
3
  description: Implement SDD tasks with strict TDD evidence and review workload guard.
4
- tools: read, grep, glob, edit, write, bash, mem_search, mem_get_observation, mem_save, mem_update
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - edit
9
+ - write
10
+ - bash
11
+ - mem_search
12
+ - mem_get_observation
13
+ - mem_save
14
+ - mem_update
5
15
  ---
6
16
 
7
17
  You are the SDD apply executor for Gentle AI.
@@ -1,7 +1,16 @@
1
1
  ---
2
2
  name: sdd-archive
3
3
  description: Archive a verified SDD change into OpenSpec source specs.
4
- tools: read, grep, glob, write, edit, bash, mem_search, mem_get_observation, mem_save
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - write
9
+ - edit
10
+ - bash
11
+ - mem_search
12
+ - mem_get_observation
13
+ - mem_save
5
14
  ---
6
15
 
7
16
  You are the SDD archive executor for Gentle AI.
@@ -1,7 +1,15 @@
1
1
  ---
2
2
  name: sdd-design
3
3
  description: Design the technical approach for an SDD change.
4
- tools: read, grep, glob, write, edit, mem_search, mem_get_observation, mem_save
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - write
9
+ - edit
10
+ - mem_search
11
+ - mem_get_observation
12
+ - mem_save
5
13
  ---
6
14
 
7
15
  You are the SDD design executor for Gentle AI.
@@ -1,7 +1,12 @@
1
1
  ---
2
2
  name: sdd-explore
3
3
  description: Explore an SDD change idea before proposal.
4
- tools: read, grep, glob, webfetch, mem_save
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - webfetch
9
+ - mem_save
5
10
  ---
6
11
 
7
12
  You are the SDD explore executor for Gentle AI.
@@ -2,7 +2,16 @@
2
2
  name: sdd-init
3
3
  description: Initialize project SDD context, testing capabilities, and skill registry.
4
4
  model: openai-codex/gpt-5.3-codex
5
- tools: read, grep, glob, write, bash, mem_search, mem_get_observation, mem_save, mem_update
5
+ tools:
6
+ - read
7
+ - grep
8
+ - glob
9
+ - write
10
+ - bash
11
+ - mem_search
12
+ - mem_get_observation
13
+ - mem_save
14
+ - mem_update
6
15
  ---
7
16
 
8
17
  You are the SDD init executor for Gentle AI.
@@ -1,7 +1,17 @@
1
1
  ---
2
2
  name: sdd-onboard
3
3
  description: Guide a user through a complete SDD cycle on a small real project change.
4
- tools: read, grep, glob, write, edit, bash, mem_search, mem_get_observation, mem_save, mem_update
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - write
9
+ - edit
10
+ - bash
11
+ - mem_search
12
+ - mem_get_observation
13
+ - mem_save
14
+ - mem_update
5
15
  ---
6
16
 
7
17
  You are the SDD onboard executor for Gentle AI.
@@ -1,7 +1,15 @@
1
1
  ---
2
2
  name: sdd-proposal
3
3
  description: Write an SDD proposal for an approved change idea.
4
- tools: read, grep, glob, write, edit, mem_search, mem_get_observation, mem_save
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - write
9
+ - edit
10
+ - mem_search
11
+ - mem_get_observation
12
+ - mem_save
5
13
  ---
6
14
 
7
15
  You are the SDD proposal executor for Gentle AI.
@@ -1,7 +1,15 @@
1
1
  ---
2
2
  name: sdd-spec
3
3
  description: Write SDD delta specs with requirements and scenarios.
4
- tools: read, grep, glob, write, edit, mem_search, mem_get_observation, mem_save
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - write
9
+ - edit
10
+ - mem_search
11
+ - mem_get_observation
12
+ - mem_save
5
13
  ---
6
14
 
7
15
  You are the SDD spec executor for Gentle AI.
@@ -1,7 +1,13 @@
1
1
  ---
2
2
  name: sdd-status
3
3
  description: Show read-only structured SDD status for an active change.
4
- tools: read, grep, glob, bash, mem_search, mem_get_observation
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - bash
9
+ - mem_search
10
+ - mem_get_observation
5
11
  ---
6
12
 
7
13
  You are the SDD status executor for Gentle AI.
@@ -1,7 +1,17 @@
1
1
  ---
2
2
  name: sdd-sync
3
3
  description: Sync verified SDD delta specs into OpenSpec canonical specs without archiving the change.
4
- tools: read, grep, glob, write, edit, bash, mem_search, mem_get_observation, mem_save, mem_update
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - write
9
+ - edit
10
+ - bash
11
+ - mem_search
12
+ - mem_get_observation
13
+ - mem_save
14
+ - mem_update
5
15
  ---
6
16
 
7
17
  You are the SDD sync executor for Gentle AI.
@@ -1,7 +1,15 @@
1
1
  ---
2
2
  name: sdd-tasks
3
3
  description: Break SDD design/specs into implementation tasks with review workload forecast.
4
- tools: read, grep, glob, write, edit, mem_search, mem_get_observation, mem_save
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - write
9
+ - edit
10
+ - mem_search
11
+ - mem_get_observation
12
+ - mem_save
5
13
  ---
6
14
 
7
15
  You are the SDD tasks executor for Gentle AI.
@@ -1,7 +1,16 @@
1
1
  ---
2
2
  name: sdd-verify
3
3
  description: Verify implementation against SDD specs, tasks, strict TDD evidence, and review workload boundaries.
4
- tools: read, grep, glob, bash, write, edit, mem_search, mem_get_observation, mem_save
4
+ tools:
5
+ - read
6
+ - grep
7
+ - glob
8
+ - bash
9
+ - write
10
+ - edit
11
+ - mem_search
12
+ - mem_get_observation
13
+ - mem_save
5
14
  ---
6
15
 
7
16
  You are the SDD verify executor for Gentle AI.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gentle-pi",
3
- "version": "0.10.7",
3
+ "version": "0.10.8",
4
4
  "description": "Turn Pi into el Gentleman: a senior-architect development harness with SDD/OpenSpec, subagents, strict TDD evidence, review guardrails, and skill discovery.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,5 +1,5 @@
1
1
  import assert from "node:assert/strict";
2
- import { existsSync, readFileSync } from "node:fs";
2
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
3
3
  import { dirname, join } from "node:path";
4
4
  import test from "node:test";
5
5
  import { fileURLToPath } from "node:url";
@@ -60,6 +60,42 @@ test("package manifest installs pi-pretty through a wrapper without bundling nat
60
60
  });
61
61
 
62
62
 
63
+ function readAgentFrontmatter(file: string): string {
64
+ const source = readFileSync(file, "utf8");
65
+ const match = source.match(/^---\n([\s\S]*?)\n---/);
66
+ assert.ok(match, `${file} must have frontmatter`);
67
+ return match[1];
68
+ }
69
+
70
+ test("packaged agents use YAML list syntax for tool allowlists", () => {
71
+ const agentsDir = join(PACKAGE_ROOT, "assets", "agents");
72
+ const agentFiles = readdirSync(agentsDir).flatMap((entry) =>
73
+ entry.endsWith(".md") ? [join(agentsDir, entry)] : [],
74
+ );
75
+
76
+ assert.ok(agentFiles.length > 0, "gentle-pi must ship packaged agents");
77
+
78
+ for (const file of agentFiles) {
79
+ const frontmatter = readAgentFrontmatter(file);
80
+ assert.doesNotMatch(
81
+ frontmatter,
82
+ /^tools:\s*[^\n,]+(?:,\s*[^\n,]+)+$/m,
83
+ `${file} must not use comma-separated inline tools; pi-subagents expects a YAML list`,
84
+ );
85
+ assert.match(frontmatter, /^tools:\n(?: {2}- [\w-]+\n?)+/m, `${file} must declare tools as a YAML list`);
86
+ }
87
+ });
88
+
89
+ test("jd-fix-agent packaged allowlist includes write tools", () => {
90
+ const frontmatter = readAgentFrontmatter(
91
+ join(PACKAGE_ROOT, "assets", "agents", "jd-fix-agent.md"),
92
+ );
93
+
94
+ for (const tool of ["read", "edit", "write", "bash"]) {
95
+ assert.match(frontmatter, new RegExp(`^ - ${tool}$`, "m"));
96
+ }
97
+ });
98
+
63
99
  test("pi-pretty wrapper uses real package path resolution for pnpm symlink installs", () => {
64
100
  const wrapper = readFileSync(
65
101
  join(PACKAGE_ROOT, "extensions", "pi-pretty.ts"),