@tryinget/pi-agent-vent 0.2.2 → 0.3.1
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/docs/engineering.local.md +1 -1
- package/package.json +9 -10
- package/policy/engineering-lane.json +11 -5
- package/scripts/release-check.sh +19 -77
- package/scripts/release-smoke.sh +7 -3
- package/scripts/validate-structure.mjs +4 -3
- package/scripts/validate-structure.sh +0 -2
- package/tests/vent-store-curation.test.js +427 -0
- package/tests/vent-store-diagnostics.test.js +148 -0
- package/tests/vent-store-lifecycle.test.js +245 -0
- package/tests/vent-store-records.test.js +304 -0
- package/tests/vent-store-retention.test.js +606 -0
- package/tests/vent-store-review-outcomes.test.js +378 -0
- package/scripts/docs-list.sh +0 -55
- package/tests/vent-store.test.js +0 -2015
|
@@ -19,7 +19,7 @@ Primary lane:
|
|
|
19
19
|
Retrieval command:
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
uv tool -n run --from
|
|
22
|
+
uv tool -n run --from git+https://github.com/tryingET/core_engineering-core.git@27ff32a529b6da6b27051e97fdb1d95a0a9be4ae engineering-core show pi-ts --prefer-repo
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
## Selected disciplines
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tryinget/pi-agent-vent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Local pi tool for agents to record recurring frustrations, bugs, and workflow friction without creating incidents or external telemetry",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"quality:ci": "bash ./scripts/quality-gate.sh ci",
|
|
40
40
|
"check": "npm run quality:ci",
|
|
41
41
|
"test": "npm run quality:ci",
|
|
42
|
-
"docs:list": "
|
|
43
|
-
"docs:list:workspace": "
|
|
44
|
-
"docs:list:json": "
|
|
42
|
+
"docs:list": "node ~/ai-society/core/agent-scripts/scripts/docs-list.mjs",
|
|
43
|
+
"docs:list:workspace": "node ~/ai-society/core/agent-scripts/scripts/docs-list.mjs --workspace --discover",
|
|
44
|
+
"docs:list:json": "node ~/ai-society/core/agent-scripts/scripts/docs-list.mjs --json",
|
|
45
45
|
"release:check": "bash ./scripts/release-check.sh",
|
|
46
46
|
"release:check:quick": "SKIP_PI_SMOKE=1 bash ./scripts/release-check.sh",
|
|
47
47
|
"loop-doctor": "bash -lc 'node --version; npm --version; npm pkg get name version >/dev/null; git status --short -- . || true; exit 0'",
|
|
@@ -87,18 +87,17 @@
|
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
89
|
"@biomejs/biome": "2.3.14",
|
|
90
|
-
"@earendil-works/pi-
|
|
91
|
-
"@earendil-works/pi-
|
|
90
|
+
"@earendil-works/pi-agent-core": "1.1.0",
|
|
91
|
+
"@earendil-works/pi-ai": "1.1.0",
|
|
92
|
+
"@earendil-works/pi-coding-agent": "1.1.0",
|
|
93
|
+
"typebox": "1.3.7"
|
|
92
94
|
},
|
|
93
95
|
"overrides": {
|
|
94
|
-
"fast-xml-parser": "5.
|
|
96
|
+
"fast-xml-parser": "5.7.0"
|
|
95
97
|
},
|
|
96
98
|
"peerDependencies": {
|
|
97
99
|
"@earendil-works/pi-ai": "*",
|
|
98
100
|
"@earendil-works/pi-coding-agent": "*",
|
|
99
101
|
"typebox": "*"
|
|
100
|
-
},
|
|
101
|
-
"dependencies": {
|
|
102
|
-
"typebox": "1.3.7"
|
|
103
102
|
}
|
|
104
103
|
}
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
"tool": "engineering-core",
|
|
5
5
|
"lane": "pi-ts",
|
|
6
6
|
"repository": "https://github.com/tryingET/core_engineering-core",
|
|
7
|
-
"ref": "
|
|
8
|
-
"command": "uv tool -n run --from
|
|
9
|
-
"catalog_command": "uv tool -n run --from
|
|
10
|
-
"list_disciplines_command": "uv tool -n run --from
|
|
11
|
-
"list_templates_command": "uv tool -n run --from
|
|
7
|
+
"ref": "v0.12.2",
|
|
8
|
+
"command": "uv tool -n run --from git+https://github.com/tryingET/core_engineering-core.git@27ff32a529b6da6b27051e97fdb1d95a0a9be4ae engineering-core show pi-ts",
|
|
9
|
+
"catalog_command": "uv tool -n run --from git+https://github.com/tryingET/core_engineering-core.git@27ff32a529b6da6b27051e97fdb1d95a0a9be4ae engineering-core catalog --pretty",
|
|
10
|
+
"list_disciplines_command": "uv tool -n run --from git+https://github.com/tryingET/core_engineering-core.git@27ff32a529b6da6b27051e97fdb1d95a0a9be4ae engineering-core list-disciplines",
|
|
11
|
+
"list_templates_command": "uv tool -n run --from git+https://github.com/tryingET/core_engineering-core.git@27ff32a529b6da6b27051e97fdb1d95a0a9be4ae engineering-core list-templates",
|
|
12
12
|
"disciplines": [
|
|
13
13
|
"validation",
|
|
14
14
|
"testing",
|
|
@@ -29,6 +29,12 @@
|
|
|
29
29
|
"loop-impact-wide": "npm run loop-impact-wide",
|
|
30
30
|
"loop-landing-check": "npm run loop-landing-check"
|
|
31
31
|
}
|
|
32
|
+
},
|
|
33
|
+
"release_pin": {
|
|
34
|
+
"kind": "git-commit",
|
|
35
|
+
"ref": "v0.12.2",
|
|
36
|
+
"resolved_commit": "27ff32a529b6da6b27051e97fdb1d95a0a9be4ae",
|
|
37
|
+
"source": "git+https://github.com/tryingET/core_engineering-core.git@27ff32a529b6da6b27051e97fdb1d95a0a9be4ae"
|
|
32
38
|
}
|
|
33
39
|
}
|
|
34
40
|
}
|
package/scripts/release-check.sh
CHANGED
|
@@ -9,6 +9,8 @@ set -euo pipefail
|
|
|
9
9
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
10
10
|
REPO_ROOT="$(cd "$ROOT_DIR/../.." && pwd)"
|
|
11
11
|
cd "$ROOT_DIR"
|
|
12
|
+
RELEASE_SANDBOX_ROOT="$(git -C "$ROOT_DIR" rev-parse --show-toplevel)"
|
|
13
|
+
source "$RELEASE_SANDBOX_ROOT/scripts/release-sandbox.sh"
|
|
12
14
|
|
|
13
15
|
# Scratch-root resolution, from first principles:
|
|
14
16
|
# the invariant is "release-check scratch lands on a managed, disposable root",
|
|
@@ -43,46 +45,11 @@ REPOSITORY_URL="$(node -p "(() => { const pkg = JSON.parse(require('node:fs').re
|
|
|
43
45
|
|
|
44
46
|
HOST_VERSION="$(node -p "JSON.parse(require('node:fs').readFileSync('package.json', 'utf8')).devDependencies['@earendil-works/pi-coding-agent'] || ''")"
|
|
45
47
|
|
|
46
|
-
# One release-only policy membrane. Every dependency-resolving command, including
|
|
47
|
-
# Pi's nested npm invocation, must enter through here with disposable cache/prefix.
|
|
48
|
-
RELEASE_MIN_AGE=0
|
|
49
|
-
with_release_npm_policy() {
|
|
50
|
-
local cache="$1"
|
|
51
|
-
local prefix="$2"
|
|
52
|
-
shift 2
|
|
53
|
-
case "$cache" in
|
|
54
|
-
"$TMP_ROOT"/pi-agent-vent-*-npm-cache-*) ;;
|
|
55
|
-
*)
|
|
56
|
-
echo "Release command refused non-isolated npm cache: $cache" >&2
|
|
57
|
-
return 1
|
|
58
|
-
;;
|
|
59
|
-
esac
|
|
60
|
-
if [[ "$prefix" != "-" ]]; then
|
|
61
|
-
case "$prefix" in
|
|
62
|
-
"$TMP_ROOT"/pi-agent-vent-*-npm-prefix-*) ;;
|
|
63
|
-
*)
|
|
64
|
-
echo "Release command refused non-isolated npm prefix: $prefix" >&2
|
|
65
|
-
return 1
|
|
66
|
-
;;
|
|
67
|
-
esac
|
|
68
|
-
(
|
|
69
|
-
export NPM_CONFIG_PREFIX="$prefix" NPM_CONFIG_CACHE="$cache"
|
|
70
|
-
export NPM_CONFIG_MIN_RELEASE_AGE="$RELEASE_MIN_AGE"
|
|
71
|
-
"$@"
|
|
72
|
-
)
|
|
73
|
-
else
|
|
74
|
-
(
|
|
75
|
-
export NPM_CONFIG_CACHE="$cache" NPM_CONFIG_MIN_RELEASE_AGE="$RELEASE_MIN_AGE"
|
|
76
|
-
"$@"
|
|
77
|
-
)
|
|
78
|
-
fi
|
|
79
|
-
}
|
|
80
|
-
|
|
81
48
|
release_npm_install() {
|
|
82
|
-
local
|
|
83
|
-
local
|
|
49
|
+
local _cache="$1"
|
|
50
|
+
local _prefix="$2"
|
|
84
51
|
shift 2
|
|
85
|
-
|
|
52
|
+
release_sandbox_npm install \
|
|
86
53
|
--include=optional --ignore-scripts --no-audit --fund=false "$@"
|
|
87
54
|
}
|
|
88
55
|
|
|
@@ -128,7 +95,7 @@ if [[ "$NAME" != "${NAME,,}" ]]; then
|
|
|
128
95
|
fi
|
|
129
96
|
|
|
130
97
|
echo "== npm pack --dry-run --json"
|
|
131
|
-
PACK_JSON="$(
|
|
98
|
+
PACK_JSON="$(release_sandbox_npm pack --dry-run --json)"
|
|
132
99
|
echo "$PACK_JSON"
|
|
133
100
|
if [[ -f "$REPO_ROOT/scripts/npm-pack-json.mjs" ]]; then
|
|
134
101
|
PACK_JSON="$(printf '%s' "$PACK_JSON" | node "$REPO_ROOT/scripts/npm-pack-json.mjs")"
|
|
@@ -138,7 +105,7 @@ PACK_JSON="$PACK_JSON" node ./scripts/release-artifact-check.mjs
|
|
|
138
105
|
|
|
139
106
|
echo "== npm publish --dry-run"
|
|
140
107
|
set +e
|
|
141
|
-
PUBLISH_DRY_RUN_OUTPUT="$(
|
|
108
|
+
PUBLISH_DRY_RUN_OUTPUT="$(release_sandbox_npm publish --dry-run 2>&1)"
|
|
142
109
|
PUBLISH_DRY_RUN_EXIT=$?
|
|
143
110
|
set -e
|
|
144
111
|
echo "$PUBLISH_DRY_RUN_OUTPUT"
|
|
@@ -152,7 +119,7 @@ if [[ "$PUBLISH_DRY_RUN_EXIT" -ne 0 ]]; then
|
|
|
152
119
|
fi
|
|
153
120
|
|
|
154
121
|
echo "== npm pack"
|
|
155
|
-
TARBALL="$(
|
|
122
|
+
TARBALL="$(release_sandbox_npm pack --silent | tail -n 1)"
|
|
156
123
|
TARBALL_PATH="$ROOT_DIR/$TARBALL"
|
|
157
124
|
echo "Tarball: $TARBALL_PATH"
|
|
158
125
|
|
|
@@ -165,13 +132,13 @@ tar -xzf "$TARBALL_PATH" -C "$TARBALL_CHECK_DIR"
|
|
|
165
132
|
# This isolated artifact probe intentionally selects the exact host contract above.
|
|
166
133
|
# Ordinary installs retain the workstation's npm release-age policy.
|
|
167
134
|
release_npm_install "$TARBALL_NPM_CACHE" -
|
|
168
|
-
|
|
135
|
+
release_sandbox_npm run check
|
|
169
136
|
)
|
|
170
137
|
|
|
171
138
|
ARTIFACT_NPM_PREFIX="$(release_tmp_dir artifact-npm-prefix)"
|
|
172
139
|
ARTIFACT_NPM_CACHE="$(release_tmp_dir artifact-npm-cache)"
|
|
173
140
|
ARTIFACT_TOOL_VENT_DIR="$(release_tmp_dir artifact-tool-store)"
|
|
174
|
-
ARTIFACT_PACKAGE_ROOT="$(
|
|
141
|
+
ARTIFACT_PACKAGE_ROOT="$(release_sandbox_npm --prefix "$ARTIFACT_NPM_PREFIX" root -g)/$NAME"
|
|
175
142
|
|
|
176
143
|
case "$ARTIFACT_PACKAGE_ROOT" in
|
|
177
144
|
"$ARTIFACT_NPM_PREFIX"/*) ;;
|
|
@@ -199,41 +166,16 @@ else
|
|
|
199
166
|
echo "pi CLI not found in PATH." >&2
|
|
200
167
|
exit 1
|
|
201
168
|
fi
|
|
202
|
-
INSTALLED_PI_VERSION="$(pi --version)"
|
|
203
|
-
node ./scripts/release-smoke-check.mjs assert-exact-host-contract \
|
|
204
|
-
--package-json package.json \
|
|
205
|
-
--host-version "$INSTALLED_PI_VERSION"
|
|
206
|
-
if [[ ! -f "$HOME/.pi/agent/auth.json" ]]; then
|
|
207
|
-
echo "Missing $HOME/.pi/agent/auth.json (needed for isolated pi smoke tests)." >&2
|
|
208
|
-
echo "Tip: set SKIP_PI_SMOKE=1 for artifact-only checks." >&2
|
|
209
|
-
exit 1
|
|
210
|
-
fi
|
|
211
|
-
|
|
212
169
|
TEST_AGENT_DIR="$(release_tmp_dir pi-agent-dir)"
|
|
213
170
|
TEST_NPM_PREFIX="$(release_tmp_dir pi-npm-prefix)"
|
|
214
171
|
TEST_NPM_CACHE="$(release_tmp_dir pi-npm-cache)"
|
|
172
|
+
release_sandbox_prepare_runtime "$TEST_AGENT_DIR" "$TEST_NPM_PREFIX" "$TEST_NPM_CACHE"
|
|
215
173
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
# Allow override via environment variables for different provider configurations
|
|
219
|
-
PI_TEST_DEFAULT_PROVIDER="${PI_TEST_DEFAULT_PROVIDER:-openai}"
|
|
220
|
-
PI_TEST_DEFAULT_MODEL="${PI_TEST_DEFAULT_MODEL:-gpt-4o}"
|
|
221
|
-
PI_TEST_ENABLED_MODELS="${PI_TEST_ENABLED_MODELS:-[\"openai/gpt-4*\"]}"
|
|
222
|
-
|
|
223
|
-
cat > "$TEST_AGENT_DIR/settings.json" <<JSON
|
|
224
|
-
{
|
|
225
|
-
"defaultProvider": "${PI_TEST_DEFAULT_PROVIDER}",
|
|
226
|
-
"defaultModel": "${PI_TEST_DEFAULT_MODEL}",
|
|
227
|
-
"enabledModels": ${PI_TEST_ENABLED_MODELS},
|
|
228
|
-
"npmCommand": ["npm", "--prefix", "${TEST_NPM_PREFIX}", "--cache", "${TEST_NPM_CACHE}"],
|
|
229
|
-
"extensions": []
|
|
230
|
-
}
|
|
231
|
-
JSON
|
|
232
|
-
|
|
233
|
-
echo "== pi install tarball (isolated PI_CODING_AGENT_DIR and npm prefix)"
|
|
174
|
+
echo "== pi install tarball (credential-isolated Pi and npm roots)"
|
|
234
175
|
PACKAGE_SPEC="npm:$TARBALL_PATH"
|
|
235
|
-
|
|
236
|
-
|
|
176
|
+
release_sandbox_exec "$TEST_AGENT_DIR" "$TEST_NPM_PREFIX" "$TEST_NPM_CACHE" \
|
|
177
|
+
pi install "$PACKAGE_SPEC"
|
|
178
|
+
release_sandbox_link_available_peers "$TEST_AGENT_DIR" "$ROOT_DIR"
|
|
237
179
|
|
|
238
180
|
echo "== verify tarball package recorded in settings"
|
|
239
181
|
TEST_AGENT_DIR="$TEST_AGENT_DIR" PACKAGE_SPEC="$PACKAGE_SPEC" node <<'NODE'
|
|
@@ -258,15 +200,15 @@ NODE
|
|
|
258
200
|
if [[ -x "./scripts/release-smoke.sh" ]]; then
|
|
259
201
|
echo "== extension-specific smoke checks (scripts/release-smoke.sh)"
|
|
260
202
|
PI_INSTALLED_PACKAGE_ROOT="$TEST_AGENT_DIR/npm/node_modules/$NAME"
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
203
|
+
release_sandbox_exec "$TEST_AGENT_DIR" "$TEST_NPM_PREFIX" "$TEST_NPM_CACHE" \
|
|
204
|
+
env PACKAGE_SPEC="$PACKAGE_SPEC" INSTALLED_PACKAGE_ROOT="$PI_INSTALLED_PACKAGE_ROOT" \
|
|
205
|
+
bash ./scripts/release-smoke.sh
|
|
264
206
|
fi
|
|
265
207
|
fi
|
|
266
208
|
|
|
267
209
|
echo "== npm view ${NAME} version (pre-publish may be 404)"
|
|
268
210
|
set +e
|
|
269
|
-
|
|
211
|
+
release_sandbox_npm view "$NAME" version --json --registry https://registry.npmjs.org/
|
|
270
212
|
VIEW_EXIT=$?
|
|
271
213
|
set -e
|
|
272
214
|
echo "npm view exit: $VIEW_EXIT"
|
package/scripts/release-smoke.sh
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
# ---
|
|
7
7
|
set -euo pipefail
|
|
8
8
|
|
|
9
|
+
: "${TMPDIR:?TMPDIR is required for managed release-smoke scratch}"
|
|
10
|
+
|
|
9
11
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
10
12
|
cd "$ROOT_DIR"
|
|
11
13
|
|
|
@@ -42,7 +44,7 @@ cleanup() {
|
|
|
42
44
|
}
|
|
43
45
|
trap cleanup EXIT
|
|
44
46
|
|
|
45
|
-
SMOKE_DIR="$(mktemp -d /
|
|
47
|
+
SMOKE_DIR="$(mktemp -d "$TMPDIR/pi-agent-vent-release-smoke.XXXXXX")"
|
|
46
48
|
SMOKE_LOCAL_PATH_VENT_DIR="$SMOKE_DIR/agent-vent-local-path-store"
|
|
47
49
|
SMOKE_TOOL_VENT_DIR="$SMOKE_DIR/agent-vent-tool-store"
|
|
48
50
|
SMOKE_LOCAL_PATH_OUTPUT="$SMOKE_DIR/agent-vent-local-path.out"
|
|
@@ -50,8 +52,10 @@ PACKAGE_NAME="$(node -p "JSON.parse(require('node:fs').readFileSync('package.jso
|
|
|
50
52
|
PACKAGE_VERSION="$(node -p "JSON.parse(require('node:fs').readFileSync('package.json', 'utf8')).version")"
|
|
51
53
|
INSTALLED_EXTENSION_PATH="$INSTALLED_PACKAGE_ROOT/extensions/agent-vent.ts"
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
INSTALLED_PACKAGE_ROOT="$(node -e 'console.log(require("node:fs").realpathSync(process.argv[1]))' "$INSTALLED_PACKAGE_ROOT")"
|
|
56
|
+
PI_CODING_AGENT_DIR_REAL="$(node -e 'console.log(require("node:fs").realpathSync(process.argv[1]))' "$PI_CODING_AGENT_DIR")"
|
|
57
|
+
case "$INSTALLED_PACKAGE_ROOT" in
|
|
58
|
+
"$PI_CODING_AGENT_DIR_REAL"/*) ;;
|
|
55
59
|
*)
|
|
56
60
|
echo "Installed package root escaped isolated Pi agent directory: $INSTALLED_PACKAGE_ROOT" >&2
|
|
57
61
|
exit 1
|
|
@@ -113,9 +113,10 @@ function validatePackageJson() {
|
|
|
113
113
|
"quality:ci": "bash ./scripts/quality-gate.sh ci",
|
|
114
114
|
check: "npm run quality:ci",
|
|
115
115
|
test: "npm run quality:ci",
|
|
116
|
-
"docs:list": "
|
|
117
|
-
"docs:list:workspace":
|
|
118
|
-
|
|
116
|
+
"docs:list": "node ~/ai-society/core/agent-scripts/scripts/docs-list.mjs",
|
|
117
|
+
"docs:list:workspace":
|
|
118
|
+
"node ~/ai-society/core/agent-scripts/scripts/docs-list.mjs --workspace --discover",
|
|
119
|
+
"docs:list:json": "node ~/ai-society/core/agent-scripts/scripts/docs-list.mjs --json",
|
|
119
120
|
"release:check": "bash ./scripts/release-check.sh",
|
|
120
121
|
"release:check:quick": "SKIP_PI_SMOKE=1 bash ./scripts/release-check.sh",
|
|
121
122
|
};
|
|
@@ -32,7 +32,6 @@ required_files=(
|
|
|
32
32
|
"policy/engineering-lane.json"
|
|
33
33
|
"policy/security-policy.json"
|
|
34
34
|
".pi/prompts/commit.md"
|
|
35
|
-
"scripts/docs-list.sh"
|
|
36
35
|
"scripts/release-artifact-check.mjs"
|
|
37
36
|
"scripts/release-check.sh"
|
|
38
37
|
"scripts/validate-structure.sh"
|
|
@@ -62,7 +61,6 @@ required_dirs=(
|
|
|
62
61
|
)
|
|
63
62
|
|
|
64
63
|
required_executables=(
|
|
65
|
-
"scripts/docs-list.sh"
|
|
66
64
|
"scripts/release-check.sh"
|
|
67
65
|
"scripts/validate-structure.sh"
|
|
68
66
|
"scripts/validate-structure.mjs"
|