pi-advisor-flow 0.3.3 → 0.3.4

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/CHANGELOG.md CHANGED
@@ -4,6 +4,20 @@ All notable changes to this project are documented here.
4
4
 
5
5
  The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## 0.3.4
8
+
9
+ ### Changed
10
+
11
+ - Updated the development toolchain and Pi compatibility test matrix to the current supported patch releases.
12
+ - Added pull-request validation and made release tags wait for frozen-install, typecheck, test, lint, package, and security-audit checks.
13
+ - Kept Bun security auditing outside the publish workflow so an audit failure prevents a new tag instead of invalidating an existing release tag.
14
+ - Added a package allowlist check for the published tarball and retained npm provenance publishing.
15
+
16
+ ### Security
17
+
18
+ - Confirmed the Socket URL-string findings for `advisor-preferences.md` and `notification.show` are intentional command/path identifiers, not network endpoints.
19
+ - Retained the constrained filesystem access required for explicit repository-file handoff; no new Socket issues were reported for 0.3.3.
20
+
7
21
  ## 0.3.3
8
22
 
9
23
  ### Added
@@ -15,6 +29,12 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
15
29
  - Kept Scout history within the Advisor's remaining context budget, including zero-budget behavior, and kept pending Advisor drafts and attachment paths outside Scout's input.
16
30
  - Included the current repeated tool invocation in automatic-gate Scout context.
17
31
 
32
+ ## 0.3.2
33
+
34
+ ### Release status
35
+
36
+ - Not published because the release validation workflow failed three tests before publication.
37
+
18
38
  ## 0.3.1
19
39
 
20
40
  ### Changed
package/README.md CHANGED
@@ -24,7 +24,7 @@ The idea is simple: keep implementation on a fast model and borrow frontier reas
24
24
 
25
25
  ## Install
26
26
 
27
- Current release: **0.3.2**. Requires Pi 0.84.1 or later and is compatible with Herdr 0.8.0. The extension installs no dependencies of its own; Pi supplies its runtime modules.
27
+ Current release: **0.3.4**. Requires Pi 0.84.1 or later and is compatible with Herdr 0.8.0. The extension installs no dependencies of its own; Pi supplies its runtime modules.
28
28
 
29
29
  ```bash
30
30
  # npm
package/package.json CHANGED
@@ -1,24 +1,60 @@
1
1
  {
2
2
  "name": "pi-advisor-flow",
3
- "version": "0.3.3",
4
- "author": "Philip Brembeck",
3
+ "version": "0.3.4",
4
+ "description": "Advanced Executor/Advisor flow for Pi, fully configurable and extendable.",
5
+ "keywords": [
6
+ "pi-package",
7
+ "pi-extension",
8
+ "pi-coding-agent",
9
+ "advisor",
10
+ "pi-advisor",
11
+ "herdr"
12
+ ],
13
+ "homepage": "https://github.com/philipbrembeck/pi-advisor",
5
14
  "repository": {
6
15
  "type": "git",
7
16
  "url": "https://github.com/philipbrembeck/pi-advisor.git"
8
17
  },
18
+ "license": "MIT",
19
+ "author": "Philip Brembeck",
20
+ "type": "module",
9
21
  "main": "extensions/index.ts",
22
+ "types": "extensions/index.ts",
23
+ "files": [
24
+ "extensions",
25
+ "src",
26
+ "CHANGELOG.md",
27
+ "LICENSE",
28
+ "README.md"
29
+ ],
30
+ "scripts": {
31
+ "format": "bunx ultracite fix --linter-enabled=false",
32
+ "lint": "bunx ultracite check",
33
+ "lint:fix": "bunx ultracite fix",
34
+ "package:check": "node scripts/check-package.mjs",
35
+ "prepare": "husky",
36
+ "test": "bun test",
37
+ "typecheck": "tsc --noEmit"
38
+ },
39
+ "lint-staged": {
40
+ "*.{json,jsonc,ts}": "bun run lint:fix --"
41
+ },
42
+ "overrides": {
43
+ "brace-expansion": "5.0.9",
44
+ "undici": "8.9.0"
45
+ },
10
46
  "devDependencies": {
11
- "@biomejs/biome": "2.5.3",
12
- "@earendil-works/pi-ai": "^0.84.1",
13
- "@earendil-works/pi-coding-agent": "^0.84.1",
14
- "@earendil-works/pi-tui": "^0.84.1",
47
+ "@biomejs/biome": "2.5.8",
48
+ "@earendil-works/pi-ai": "^0.84.2",
49
+ "@earendil-works/pi-coding-agent": "^0.84.2",
50
+ "@earendil-works/pi-tui": "^0.84.2",
15
51
  "@types/node": "^20.11.0",
16
52
  "bun-types": "^1.0.0",
17
53
  "husky": "^9.1.7",
18
- "lint-staged": "^17.1.0",
19
- "typebox": "^1.1.38",
54
+ "lint-staged": "^17.3.0",
55
+ "typebox": "^1.3.14",
20
56
  "typescript": "^5.3.3",
21
- "ultracite": "7.9.4"
57
+ "ultracite": "7.10.4"
22
58
  },
23
59
  "peerDependencies": {
24
60
  "@earendil-works/pi-ai": "^0.84.1",
@@ -40,46 +76,10 @@
40
76
  "optional": true
41
77
  }
42
78
  },
43
- "description": "Advanced Executor/Advisor flow for Pi, fully configurable and extendable.",
44
- "files": [
45
- "extensions",
46
- "src",
47
- "CHANGELOG.md",
48
- "LICENSE",
49
- "README.md"
50
- ],
51
- "homepage": "https://github.com/philipbrembeck/pi-advisor",
52
- "keywords": [
53
- "pi-package",
54
- "pi-extension",
55
- "pi-coding-agent",
56
- "advisor",
57
- "pi-advisor",
58
- "herdr"
59
- ],
60
- "license": "MIT",
61
- "lint-staged": {
62
- "*.{json,jsonc,ts}": "bun run lint:fix --"
63
- },
64
- "overrides": {
65
- "brace-expansion": "5.0.9",
66
- "undici": "8.9.0"
67
- },
68
79
  "pi": {
69
80
  "extensions": [
70
81
  "./extensions/index.ts"
71
82
  ],
72
83
  "image": "https://raw.githubusercontent.com/philipbrembeck/pi-advisor/refs/heads/main/assets/hero.png"
73
- },
74
- "scripts": {
75
- "test": "bun test",
76
- "typecheck": "tsc --noEmit",
77
- "format": "bunx ultracite fix --linter-enabled=false",
78
- "lint": "bunx ultracite check",
79
- "lint:fix": "bunx ultracite fix",
80
- "package:check": "npm pack --dry-run --json >/dev/null",
81
- "prepare": "husky"
82
- },
83
- "type": "module",
84
- "types": "extensions/index.ts"
84
+ }
85
85
  }
package/src/outcomes.ts CHANGED
@@ -126,16 +126,16 @@ export const appendOutcome = async (
126
126
  ) => {
127
127
  const path = outcomeLogPath();
128
128
  await mkdir(getAgentDir(), { mode: 0o700, recursive: true });
129
- const next: OutcomeRecord = {
130
- adoption: record.adoption,
131
- adviceHash: adviceDigest(record.advice, await salt()),
132
- timestamp: new Date().toISOString(),
133
- trigger: record.trigger,
134
- v: 1,
135
- validationStatus: record.validationStatus,
136
- };
137
- const line = `${JSON.stringify(next)}\n`;
138
- await withOutcomeLock(async () => {
129
+ return withOutcomeLock(async () => {
130
+ const next: OutcomeRecord = {
131
+ adoption: record.adoption,
132
+ adviceHash: adviceDigest(record.advice, await salt()),
133
+ timestamp: new Date().toISOString(),
134
+ trigger: record.trigger,
135
+ v: 1,
136
+ validationStatus: record.validationStatus,
137
+ };
138
+ const line = `${JSON.stringify(next)}\n`;
139
139
  const currentBytes = await stat(path)
140
140
  .then((value) => value.size)
141
141
  .catch((error: NodeJS.ErrnoException) => {
@@ -150,6 +150,6 @@ export const appendOutcome = async (
150
150
  await appendFile(path, line, { encoding: "utf8", mode: 0o600 });
151
151
  }
152
152
  await chmod(path, 0o600);
153
+ return next;
153
154
  });
154
- return next;
155
155
  };