@tryinget/pi-agent-vent 0.1.1 → 0.2.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/README.md +10 -3
- package/docs/engineering.local.md +13 -0
- package/docs/project/2026-05-21-agent-vent-design.md +7 -5
- package/docs/project/2026-06-05-self-toolbox-agent-vent-diagnostic-boundary.md +66 -0
- package/docs/project/product-posture.md +3 -1
- package/docs/project/vision.md +4 -0
- package/extensions/agent-vent.ts +93 -14
- package/package.json +16 -7
- package/policy/engineering-lane.json +13 -1
- package/prompts/{implementation-planning.md → pi-agent-vent-implementation-planning.md} +3 -3
- package/prompts/{security-review.md → pi-agent-vent-security-review.md} +3 -3
- package/scripts/release-check.sh +96 -51
- package/scripts/release-smoke-check.mjs +26 -1
- package/scripts/release-smoke.sh +12 -15
- package/scripts/validate-structure.mjs +3 -3
- package/scripts/validate-structure.sh +2 -2
- package/src/vent-store.js +78 -6
- package/tests/agent-vent-extension.test.js +166 -1
- package/tests/release-smoke-check.test.js +19 -0
- package/tests/vent-store.test.js +24 -0
|
@@ -5,6 +5,7 @@ import path from "node:path";
|
|
|
5
5
|
import test from "node:test";
|
|
6
6
|
import {
|
|
7
7
|
assertAgentVentPathSmokeOutput,
|
|
8
|
+
assertExactHostContract,
|
|
8
9
|
assertInstalledArtifactPackage,
|
|
9
10
|
assertLocalTarballInstallSource,
|
|
10
11
|
assertPackageSpecInstalled,
|
|
@@ -13,6 +14,24 @@ import {
|
|
|
13
14
|
packageSourcesFromSettings,
|
|
14
15
|
} from "../scripts/release-smoke-check.mjs";
|
|
15
16
|
|
|
17
|
+
test("release smoke release-age bypass is gated by one exact host contract", () => {
|
|
18
|
+
const packageJson = {
|
|
19
|
+
devDependencies: {
|
|
20
|
+
"@earendil-works/pi-ai": "0.80.6",
|
|
21
|
+
"@earendil-works/pi-coding-agent": "0.80.6",
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
assert.equal(assertExactHostContract({ packageJson, hostVersion: "0.80.6" }), "0.80.6");
|
|
25
|
+
assert.throws(
|
|
26
|
+
() => assertExactHostContract({ packageJson, hostVersion: "^0.80.6" }),
|
|
27
|
+
/requires an exact Pi host version/,
|
|
28
|
+
);
|
|
29
|
+
assert.throws(
|
|
30
|
+
() => assertExactHostContract({ packageJson, hostVersion: "0.80.7" }),
|
|
31
|
+
/host contract mismatch/,
|
|
32
|
+
);
|
|
33
|
+
});
|
|
34
|
+
|
|
16
35
|
test("release smoke settings check accepts only unfiltered string package entries", () => {
|
|
17
36
|
const settings = {
|
|
18
37
|
packages: [
|
package/tests/vent-store.test.js
CHANGED
|
@@ -111,6 +111,30 @@ test("createVentRecord minimizes, redacts, and derives recurrence key", () => {
|
|
|
111
111
|
assert.deepEqual(tagOnlySecret.privacy.redactionPatterns, ["assigned_secret"]);
|
|
112
112
|
});
|
|
113
113
|
|
|
114
|
+
test("category aliases normalize at record and review-filter boundaries", () => {
|
|
115
|
+
const workflow = createVentRecord({
|
|
116
|
+
summary: "Workflow alias should not degrade",
|
|
117
|
+
category: "workflow_friction",
|
|
118
|
+
recurrenceKey: "workflow alias",
|
|
119
|
+
});
|
|
120
|
+
const missing = createVentRecord({
|
|
121
|
+
summary: "Missing affordance alias should preserve meaning",
|
|
122
|
+
category: "missing_affordance",
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
assert.equal(workflow.category, "workflow");
|
|
126
|
+
assert.equal(workflow.recurrenceKey, "workflow:workflow-alias");
|
|
127
|
+
assert.equal(missing.category, "missing_capability");
|
|
128
|
+
assert.match(missing.recurrenceKey, /^missing_capability:/);
|
|
129
|
+
|
|
130
|
+
const queue = summarizeReviewQueue([workflow, missing], [], {
|
|
131
|
+
filters: { category: "workflow_friction" },
|
|
132
|
+
});
|
|
133
|
+
assert.equal(queue.filters.category, "workflow");
|
|
134
|
+
assert.equal(queue.matchingGroupCount, 1);
|
|
135
|
+
assert.equal(queue.items[0].recurrenceKey, workflow.recurrenceKey);
|
|
136
|
+
});
|
|
137
|
+
|
|
114
138
|
test("explicit recurrence keys are redacted before slugging", () => {
|
|
115
139
|
const record = createVentRecord({
|
|
116
140
|
summary: "Explicit key should not leak",
|