@davidorex/pi-context 0.26.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/CHANGELOG.md +23 -0
- package/README.md +195 -0
- package/dist/block-api.d.ts +328 -0
- package/dist/block-api.d.ts.map +1 -0
- package/dist/block-api.js +1167 -0
- package/dist/block-api.js.map +1 -0
- package/dist/block-validation.d.ts +33 -0
- package/dist/block-validation.d.ts.map +1 -0
- package/dist/block-validation.js +213 -0
- package/dist/block-validation.js.map +1 -0
- package/dist/context-dir.d.ts +93 -0
- package/dist/context-dir.d.ts.map +1 -0
- package/dist/context-dir.js +224 -0
- package/dist/context-dir.js.map +1 -0
- package/dist/context-sdk.d.ts +428 -0
- package/dist/context-sdk.d.ts.map +1 -0
- package/dist/context-sdk.js +1327 -0
- package/dist/context-sdk.js.map +1 -0
- package/dist/context.d.ts +497 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +1060 -0
- package/dist/context.js.map +1 -0
- package/dist/dispatch-context.d.ts +112 -0
- package/dist/dispatch-context.d.ts.map +1 -0
- package/dist/dispatch-context.js +119 -0
- package/dist/dispatch-context.js.map +1 -0
- package/dist/execution-context.d.ts +138 -0
- package/dist/execution-context.d.ts.map +1 -0
- package/dist/execution-context.js +151 -0
- package/dist/execution-context.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1655 -0
- package/dist/index.js.map +1 -0
- package/dist/lens-validator.d.ts +50 -0
- package/dist/lens-validator.d.ts.map +1 -0
- package/dist/lens-validator.js +46 -0
- package/dist/lens-validator.js.map +1 -0
- package/dist/lens-view.d.ts +75 -0
- package/dist/lens-view.d.ts.map +1 -0
- package/dist/lens-view.js +253 -0
- package/dist/lens-view.js.map +1 -0
- package/dist/rename-canonical-id.d.ts +64 -0
- package/dist/rename-canonical-id.d.ts.map +1 -0
- package/dist/rename-canonical-id.js +378 -0
- package/dist/rename-canonical-id.js.map +1 -0
- package/dist/roadmap-plan.d.ts +186 -0
- package/dist/roadmap-plan.d.ts.map +1 -0
- package/dist/roadmap-plan.js +534 -0
- package/dist/roadmap-plan.js.map +1 -0
- package/dist/samples-catalog.d.ts +48 -0
- package/dist/samples-catalog.d.ts.map +1 -0
- package/dist/samples-catalog.js +128 -0
- package/dist/samples-catalog.js.map +1 -0
- package/dist/schema-migrations.d.ts +82 -0
- package/dist/schema-migrations.d.ts.map +1 -0
- package/dist/schema-migrations.js +106 -0
- package/dist/schema-migrations.js.map +1 -0
- package/dist/schema-validator.d.ts +76 -0
- package/dist/schema-validator.d.ts.map +1 -0
- package/dist/schema-validator.js +219 -0
- package/dist/schema-validator.js.map +1 -0
- package/dist/schema-write.d.ts +122 -0
- package/dist/schema-write.d.ts.map +1 -0
- package/dist/schema-write.js +210 -0
- package/dist/schema-write.js.map +1 -0
- package/dist/status-vocab.d.ts +60 -0
- package/dist/status-vocab.d.ts.map +1 -0
- package/dist/status-vocab.js +109 -0
- package/dist/status-vocab.js.map +1 -0
- package/dist/test-helpers.d.ts +12 -0
- package/dist/test-helpers.d.ts.map +1 -0
- package/dist/test-helpers.js +28 -0
- package/dist/test-helpers.js.map +1 -0
- package/dist/topo.d.ts +19 -0
- package/dist/topo.d.ts.map +1 -0
- package/dist/topo.js +99 -0
- package/dist/topo.js.map +1 -0
- package/dist/update-check.d.ts +6 -0
- package/dist/update-check.d.ts.map +1 -0
- package/dist/update-check.js +82 -0
- package/dist/update-check.js.map +1 -0
- package/package.json +115 -0
- package/samples/blocks/context-contracts.json +3 -0
- package/samples/blocks/conventions.json +3 -0
- package/samples/blocks/decisions.json +3 -0
- package/samples/blocks/features.json +3 -0
- package/samples/blocks/framework-gaps.json +3 -0
- package/samples/blocks/issues.json +3 -0
- package/samples/blocks/layer-plans.json +3 -0
- package/samples/blocks/phase.json +3 -0
- package/samples/blocks/rationale.json +3 -0
- package/samples/blocks/requirements.json +3 -0
- package/samples/blocks/research.json +3 -0
- package/samples/blocks/spec-reviews.json +3 -0
- package/samples/blocks/story.json +3 -0
- package/samples/blocks/tasks.json +3 -0
- package/samples/blocks/verification.json +3 -0
- package/samples/conception.json +467 -0
- package/samples/schemas/context-contracts.schema.json +89 -0
- package/samples/schemas/conventions.schema.json +34 -0
- package/samples/schemas/decisions.schema.json +87 -0
- package/samples/schemas/features.schema.json +53 -0
- package/samples/schemas/framework-gaps.schema.json +64 -0
- package/samples/schemas/issues.schema.json +39 -0
- package/samples/schemas/layer-plans.schema.json +92 -0
- package/samples/schemas/phase.schema.json +118 -0
- package/samples/schemas/rationale.schema.json +24 -0
- package/samples/schemas/requirements.schema.json +34 -0
- package/samples/schemas/research.schema.json +134 -0
- package/samples/schemas/spec-reviews.schema.json +62 -0
- package/samples/schemas/story.schema.json +73 -0
- package/samples/schemas/tasks.schema.json +34 -0
- package/samples/schemas/verification.schema.json +37 -0
- package/schemas/bootstrap.schema.json +24 -0
- package/schemas/config.schema.json +193 -0
- package/schemas/layer.schema.json +9 -0
- package/schemas/priority.schema.json +9 -0
- package/schemas/relations.schema.json +31 -0
- package/schemas/severity.schema.json +9 -0
- package/schemas/source.schema.json +9 -0
- package/schemas/status.schema.json +9 -0
- package/schemas/verification-method.schema.json +9 -0
- package/skill-narrative.md +130 -0
- package/skills/pi-context/SKILL.md +684 -0
- package/skills/pi-context/references/bundled-resources.md +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-api.js","sourceRoot":"","sources":["../src/block-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface BlockFileSnapshot {
|
|
2
|
+
mtime: number;
|
|
3
|
+
content: string;
|
|
4
|
+
}
|
|
5
|
+
export type BlockSnapshot = Map<string, BlockFileSnapshot>;
|
|
6
|
+
/**
|
|
7
|
+
* Snapshot mtimes and contents of all .project/*.json files, including
|
|
8
|
+
* known subdirectories (phases/, audits/).
|
|
9
|
+
* Returns a Map of absolute filepath → { mtime, content }.
|
|
10
|
+
* If .project/ doesn't exist, returns an empty map.
|
|
11
|
+
*/
|
|
12
|
+
export declare function snapshotBlockFiles(cwd: string): BlockSnapshot;
|
|
13
|
+
/**
|
|
14
|
+
* Compare current .project/*.json mtimes against a prior snapshot.
|
|
15
|
+
* Validate any changed or newly created files against their schemas.
|
|
16
|
+
* Also checks known subdirectories (phases/, audits/).
|
|
17
|
+
*
|
|
18
|
+
* Schema path convention:
|
|
19
|
+
* .project/foo.json → .project/schemas/foo.schema.json
|
|
20
|
+
* .project/phases/*.json → .project/schemas/phase.schema.json
|
|
21
|
+
* .project/audits/*.json → .project/schemas/audit.schema.json
|
|
22
|
+
*
|
|
23
|
+
* Files with no corresponding schema are silently skipped.
|
|
24
|
+
*
|
|
25
|
+
* @throws Error if any changed block file fails schema validation
|
|
26
|
+
*/
|
|
27
|
+
export declare function validateChangedBlocks(cwd: string, before: BlockSnapshot): void;
|
|
28
|
+
/**
|
|
29
|
+
* Rollback .project/*.json files (including known subdirectories) to their pre-step state.
|
|
30
|
+
* Returns list of rolled-back file paths.
|
|
31
|
+
*/
|
|
32
|
+
export declare function rollbackBlockFiles(cwd: string, before: BlockSnapshot): string[];
|
|
33
|
+
//# sourceMappingURL=block-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-validation.d.ts","sourceRoot":"","sources":["../src/block-validation.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAsC3D;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAc7D;AA2DD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAkB9E;AAmDD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAc/E"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Post-step block validation — snapshot .project/*.json contents before step
|
|
3
|
+
* execution, then validate any changed files against their schemas after.
|
|
4
|
+
* Supports rollback of block files to pre-step state on validation failure.
|
|
5
|
+
* Covers top-level .project/*.json and known subdirectories (phases/, audits/).
|
|
6
|
+
*/
|
|
7
|
+
import fs from "node:fs";
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
import { SCHEMAS_DIR, tryResolveContextDir } from "./context-dir.js";
|
|
10
|
+
import { validateFromFile } from "./schema-validator.js";
|
|
11
|
+
/**
|
|
12
|
+
* Known subdirectories of .project/ that contain JSON block files.
|
|
13
|
+
* Each maps plural directory name → singular schema name:
|
|
14
|
+
* phases/*.json → phase.schema.json
|
|
15
|
+
* audits/*.json → audit.schema.json
|
|
16
|
+
*/
|
|
17
|
+
const BLOCK_SUBDIRS = [
|
|
18
|
+
// phases/ removed — phase is a top-level array-block (phase.json) since DEC-0028.
|
|
19
|
+
{ dir: "audits", schemaBase: "audit" },
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Snapshot a single directory's .json files into the result map.
|
|
23
|
+
* Tolerates missing directories (returns without error).
|
|
24
|
+
*/
|
|
25
|
+
function snapshotDir(dirPath, result) {
|
|
26
|
+
try {
|
|
27
|
+
const entries = fs.readdirSync(dirPath);
|
|
28
|
+
for (const entry of entries) {
|
|
29
|
+
if (!entry.endsWith(".json"))
|
|
30
|
+
continue;
|
|
31
|
+
const fullPath = path.join(dirPath, entry);
|
|
32
|
+
try {
|
|
33
|
+
const stat = fs.statSync(fullPath);
|
|
34
|
+
if (stat.isFile()) {
|
|
35
|
+
const content = fs.readFileSync(fullPath, "utf-8");
|
|
36
|
+
result.set(fullPath, { mtime: stat.mtimeMs, content });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// File disappeared between readdir and stat — skip
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Directory doesn't exist — nothing to snapshot
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Snapshot mtimes and contents of all .project/*.json files, including
|
|
50
|
+
* known subdirectories (phases/, audits/).
|
|
51
|
+
* Returns a Map of absolute filepath → { mtime, content }.
|
|
52
|
+
* If .project/ doesn't exist, returns an empty map.
|
|
53
|
+
*/
|
|
54
|
+
export function snapshotBlockFiles(cwd) {
|
|
55
|
+
const result = new Map();
|
|
56
|
+
const projectDirPath = tryResolveContextDir(cwd);
|
|
57
|
+
if (projectDirPath === null)
|
|
58
|
+
return result;
|
|
59
|
+
// Top-level <substrateDir>/*.json
|
|
60
|
+
snapshotDir(projectDirPath, result);
|
|
61
|
+
// Known subdirectories
|
|
62
|
+
for (const sub of BLOCK_SUBDIRS) {
|
|
63
|
+
snapshotDir(path.join(projectDirPath, sub.dir), result);
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Validate changed .json files in a single directory against schemas.
|
|
69
|
+
* For top-level files, schema is derived from filename: foo.json → foo.schema.json.
|
|
70
|
+
* For subdirectory files, a fixed schemaBase is used: phases/01.json → phase.schema.json.
|
|
71
|
+
* Appends validation errors to the provided errors array.
|
|
72
|
+
*/
|
|
73
|
+
function validateChangedInDir(dirPath, schemasDir, before, errors, schemaBase) {
|
|
74
|
+
let currentEntries;
|
|
75
|
+
try {
|
|
76
|
+
currentEntries = fs.readdirSync(dirPath).filter((e) => e.endsWith(".json"));
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return; // directory doesn't exist
|
|
80
|
+
}
|
|
81
|
+
for (const entry of currentEntries) {
|
|
82
|
+
const fullPath = path.join(dirPath, entry);
|
|
83
|
+
let stat;
|
|
84
|
+
try {
|
|
85
|
+
stat = fs.statSync(fullPath);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (!stat.isFile())
|
|
91
|
+
continue;
|
|
92
|
+
const prev = before.get(fullPath);
|
|
93
|
+
const isChanged = prev === undefined || stat.mtimeMs !== prev.mtime;
|
|
94
|
+
if (!isChanged)
|
|
95
|
+
continue;
|
|
96
|
+
// Changed or new file — look for a schema
|
|
97
|
+
const baseName = schemaBase ?? entry.replace(/\.json$/, "");
|
|
98
|
+
const schemaPath = path.join(schemasDir, `${baseName}.schema.json`);
|
|
99
|
+
if (!fs.existsSync(schemaPath)) {
|
|
100
|
+
console.error(`[block-validation] skipping ${baseName}: no schema found`);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
// Validate
|
|
104
|
+
const label = schemaBase ? `${schemaBase}/${entry}` : entry;
|
|
105
|
+
try {
|
|
106
|
+
const content = fs.readFileSync(fullPath, "utf-8");
|
|
107
|
+
const data = JSON.parse(content);
|
|
108
|
+
validateFromFile(schemaPath, data, `block file '${label}'`);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
112
|
+
errors.push(`${label}: ${msg}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Compare current .project/*.json mtimes against a prior snapshot.
|
|
118
|
+
* Validate any changed or newly created files against their schemas.
|
|
119
|
+
* Also checks known subdirectories (phases/, audits/).
|
|
120
|
+
*
|
|
121
|
+
* Schema path convention:
|
|
122
|
+
* .project/foo.json → .project/schemas/foo.schema.json
|
|
123
|
+
* .project/phases/*.json → .project/schemas/phase.schema.json
|
|
124
|
+
* .project/audits/*.json → .project/schemas/audit.schema.json
|
|
125
|
+
*
|
|
126
|
+
* Files with no corresponding schema are silently skipped.
|
|
127
|
+
*
|
|
128
|
+
* @throws Error if any changed block file fails schema validation
|
|
129
|
+
*/
|
|
130
|
+
export function validateChangedBlocks(cwd, before) {
|
|
131
|
+
const projectDirPath = tryResolveContextDir(cwd);
|
|
132
|
+
if (projectDirPath === null)
|
|
133
|
+
return;
|
|
134
|
+
const schemasDirPath = path.join(projectDirPath, SCHEMAS_DIR);
|
|
135
|
+
const errors = [];
|
|
136
|
+
// Top-level .project/*.json
|
|
137
|
+
validateChangedInDir(projectDirPath, schemasDirPath, before, errors);
|
|
138
|
+
// Known subdirectories
|
|
139
|
+
for (const sub of BLOCK_SUBDIRS) {
|
|
140
|
+
validateChangedInDir(path.join(projectDirPath, sub.dir), schemasDirPath, before, errors, sub.schemaBase);
|
|
141
|
+
}
|
|
142
|
+
if (errors.length > 0) {
|
|
143
|
+
throw new Error(`Block validation failed:\n${errors.join("\n")}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Rollback .json files in a single directory to their pre-step state.
|
|
148
|
+
* - Files that existed in the snapshot and changed: restore content via atomic write (tmp + rename)
|
|
149
|
+
* - New files (not in snapshot): delete them
|
|
150
|
+
* Appends rolled-back file paths to the provided array.
|
|
151
|
+
*/
|
|
152
|
+
function rollbackDir(dirPath, before, rolledBack) {
|
|
153
|
+
let currentEntries;
|
|
154
|
+
try {
|
|
155
|
+
currentEntries = fs.readdirSync(dirPath).filter((e) => e.endsWith(".json"));
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
for (const entry of currentEntries) {
|
|
161
|
+
const fullPath = path.join(dirPath, entry);
|
|
162
|
+
let stat;
|
|
163
|
+
try {
|
|
164
|
+
stat = fs.statSync(fullPath);
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
if (!stat.isFile())
|
|
170
|
+
continue;
|
|
171
|
+
const prev = before.get(fullPath);
|
|
172
|
+
if (prev === undefined) {
|
|
173
|
+
// New file — delete it
|
|
174
|
+
try {
|
|
175
|
+
fs.unlinkSync(fullPath);
|
|
176
|
+
rolledBack.push(fullPath);
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
// best effort
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else if (stat.mtimeMs !== prev.mtime) {
|
|
183
|
+
// Changed file — restore content via atomic write
|
|
184
|
+
try {
|
|
185
|
+
const tmpPath = `${fullPath}.rollback-${process.pid}.tmp`;
|
|
186
|
+
fs.writeFileSync(tmpPath, prev.content);
|
|
187
|
+
fs.renameSync(tmpPath, fullPath);
|
|
188
|
+
rolledBack.push(fullPath);
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// best effort
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Rollback .project/*.json files (including known subdirectories) to their pre-step state.
|
|
198
|
+
* Returns list of rolled-back file paths.
|
|
199
|
+
*/
|
|
200
|
+
export function rollbackBlockFiles(cwd, before) {
|
|
201
|
+
const projectDirPath = tryResolveContextDir(cwd);
|
|
202
|
+
if (projectDirPath === null)
|
|
203
|
+
return [];
|
|
204
|
+
const rolledBack = [];
|
|
205
|
+
// Top-level .project/*.json
|
|
206
|
+
rollbackDir(projectDirPath, before, rolledBack);
|
|
207
|
+
// Known subdirectories
|
|
208
|
+
for (const sub of BLOCK_SUBDIRS) {
|
|
209
|
+
rollbackDir(path.join(projectDirPath, sub.dir), before, rolledBack);
|
|
210
|
+
}
|
|
211
|
+
return rolledBack;
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=block-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-validation.js","sourceRoot":"","sources":["../src/block-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/** @deprecated Same status as the removed PROJECT_DIR — Phase 7 cascade target. */
|
|
2
|
+
export declare const SCHEMAS_DIR = "schemas";
|
|
3
|
+
/**
|
|
4
|
+
* Thrown by `resolveContextDir(cwd)` when no `.pi-context.json` bootstrap
|
|
5
|
+
* pointer exists at the cwd. Carries `cwd` and `bootstrapPath` fields so
|
|
6
|
+
* callers can surface the absent-pointer site in error messages without
|
|
7
|
+
* re-deriving the path. Per DEC-0015 hard-throw policy — there is no
|
|
8
|
+
* fallback default; callers must materialize the pointer (via
|
|
9
|
+
* `writeBootstrapPointer`) before any substrate operation.
|
|
10
|
+
*/
|
|
11
|
+
export declare class BootstrapNotFoundError extends Error {
|
|
12
|
+
readonly cwd: string;
|
|
13
|
+
readonly bootstrapPath: string;
|
|
14
|
+
constructor(cwd: string, bootstrapPath: string);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the substrate dir for a given cwd. Reads the
|
|
18
|
+
* `<cwd>/.pi-context.json` bootstrap pointer, AJV-validates the parsed
|
|
19
|
+
* pointer object against the URN-registered bootstrap schema (FGAP-026
|
|
20
|
+
* phase 1.1 schema), caches the resolution by absolute cwd keyed on
|
|
21
|
+
* pointer mtime, and returns `path.join(cwd, contextDir)` as an absolute
|
|
22
|
+
* path (subject to whatever cwd the caller passed).
|
|
23
|
+
*
|
|
24
|
+
* Hard-throws `BootstrapNotFoundError` when the pointer file is absent —
|
|
25
|
+
* no fallback to `.project`. Per DEC-0015 the substrate dir name is
|
|
26
|
+
* config-driven; defaulting would be hardcode-dressed-as-default. Callers
|
|
27
|
+
* bootstrapping a fresh repo write the pointer first via
|
|
28
|
+
* `writeBootstrapPointer(cwd, contextDir)` before any path-builder runs.
|
|
29
|
+
*
|
|
30
|
+
* Throws plain `Error` with file-context message on read/parse failure
|
|
31
|
+
* (mirrors `loadConfig` at context.ts:188-196). Throws
|
|
32
|
+
* `ValidationError` (re-raised from canonical `validate()`) when the
|
|
33
|
+
* pointer fails AJV validation against the bootstrap schema.
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveContextDir(cwd: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Non-throwing variant of `resolveContextDir` for READ / CLASSIFY / SNAPSHOT
|
|
38
|
+
* consumers that must degrade gracefully when no `.pi-context.json` bootstrap
|
|
39
|
+
* pointer exists (DEC-0015) rather than hard-throwing `BootstrapNotFoundError`.
|
|
40
|
+
*
|
|
41
|
+
* Returns the resolved substrate dir when the pointer is present (identical to
|
|
42
|
+
* `resolveContextDir`); returns `null` only on the absent-pointer
|
|
43
|
+
* `BootstrapNotFoundError` branch. Re-throws every other error — a malformed
|
|
44
|
+
* pointer / read failure is NOT degradation and must still surface (the
|
|
45
|
+
* pointer-present error semantics of `resolveContextDir` are preserved).
|
|
46
|
+
*
|
|
47
|
+
* Name-based catch per FGAP-080 (instanceof is unreliable across module-instance
|
|
48
|
+
* boundaries under tsx/dist dual-load).
|
|
49
|
+
*/
|
|
50
|
+
export declare function tryResolveContextDir(cwd: string): string | null;
|
|
51
|
+
/**
|
|
52
|
+
* Atomically write a `.pi-context.json` bootstrap pointer at `<cwd>/.pi-context.json`.
|
|
53
|
+
* `contextDir` is a required parameter chosen by the caller per DEC-0015 —
|
|
54
|
+
* no default, no transitional bridge.
|
|
55
|
+
*
|
|
56
|
+
* Pre-validates the pointer object against the URN-registered bootstrap
|
|
57
|
+
* schema BEFORE write so a malformed pointer never lands on disk. Atomic
|
|
58
|
+
* write via tmp + rename mirrors `writeTypedFile` in block-api.ts:407-422
|
|
59
|
+
* (process-pid-suffixed tmp path; cleanup on error). Invalidates the
|
|
60
|
+
* `bootstrapCache` entry for this cwd so the next `resolveContextDir(cwd)`
|
|
61
|
+
* call reads fresh data even if mtime granularity (1s on some filesystems)
|
|
62
|
+
* would otherwise mask the change.
|
|
63
|
+
*/
|
|
64
|
+
export declare function writeBootstrapPointer(cwd: string, contextDir: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* Reject substrate names that are not bare path segments (FGAP-079 / DEC-0045).
|
|
67
|
+
*
|
|
68
|
+
* Every name→path builder below (and in block-api / context /
|
|
69
|
+
* schema-write) interpolates a raw `name` into a substrate-relative file path
|
|
70
|
+
* (`${name}.schema.json`, `${name}.json`). A name containing a path separator
|
|
71
|
+
* (`/`, `\`), a `..` traversal segment, a `.` (`x.schema`), or an absolute
|
|
72
|
+
* prefix would escape the substrate dir. This validator constrains names to the
|
|
73
|
+
* block_kind canonical_id alphabet (`[A-Za-z0-9_-]+`) — which has no separators,
|
|
74
|
+
* dots, or empty form — so a traversal name throws BEFORE any path resolution.
|
|
75
|
+
*
|
|
76
|
+
* Guards BOTH read and write sides (the resolver unification of DEC-0045 routes
|
|
77
|
+
* `schemaWritePath` through `schemaPath`, so guarding here covers writes too).
|
|
78
|
+
* Now reachable from the in-pi tool surface — the write-schema tool (FGAP-077)
|
|
79
|
+
* exposes the schema name directly to in-pi agents.
|
|
80
|
+
*/
|
|
81
|
+
export declare function assertSubstrateName(name: string): void;
|
|
82
|
+
/**
|
|
83
|
+
* Canonical path-builder helpers for the substrate directory (config-driven
|
|
84
|
+
* via `resolveContextDir(cwd)` per DEC-0015). Every site that previously
|
|
85
|
+
* hand-built `path.join(cwd, ".project", ...)` now routes through these so
|
|
86
|
+
* the substrate-dir name is read from the bootstrap pointer rather than
|
|
87
|
+
* hardcoded.
|
|
88
|
+
*/
|
|
89
|
+
export declare function schemasDir(cwd: string): string;
|
|
90
|
+
export declare function schemaPath(cwd: string, blockName: string): string;
|
|
91
|
+
export declare function agentsDir(cwd: string): string;
|
|
92
|
+
export declare function contextTemplatesDir(cwd: string): string;
|
|
93
|
+
//# sourceMappingURL=context-dir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-dir.d.ts","sourceRoot":"","sources":["../src/context-dir.ts"],"names":[],"mappings":"AA+BA,mFAAmF;AACnF,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC;;;;;;;GAOG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBACnB,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;CAQ9C;AA6BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAuCrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CA+B3E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMtD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-context substrate-dir resolution surface.
|
|
3
|
+
*
|
|
4
|
+
* Per DEC-0015 (config drives substrate location, permanently): NO hardcoded
|
|
5
|
+
* substrate-dir paths anywhere in pi-context / pi-jit-agents / pi-workflows /
|
|
6
|
+
* pi-behavior-monitors. The substrate dir name is declared per-cwd in the
|
|
7
|
+
* `.pi-context.json` bootstrap pointer; `resolveContextDir(cwd)` reads that
|
|
8
|
+
* pointer, AJV-validates it against the URN-registered bootstrap schema, and
|
|
9
|
+
* returns the absolute path of the substrate dir.
|
|
10
|
+
*
|
|
11
|
+
* Hard-throw policy on absent pointer (no graceful fallback to ".project"):
|
|
12
|
+
* a default would be hardcode-dressed-as-default, which DEC-0015 explicitly
|
|
13
|
+
* rejects. Callers needing to bootstrap a fresh repo write the pointer first
|
|
14
|
+
* via `writeBootstrapPointer(cwd, contextDir)` before any path-builder is
|
|
15
|
+
* invoked; `contextDir` is a required parameter chosen by the caller per
|
|
16
|
+
* DEC-0015.
|
|
17
|
+
*
|
|
18
|
+
* Path-builders (schemasDir / schemaPath / agentsDir / contextTemplatesDir)
|
|
19
|
+
* all cascade through `resolveContextDir(cwd)` so the literal substrate-dir
|
|
20
|
+
* name lives exactly nowhere in pi-context source after Phase 1.2 of FGAP-026
|
|
21
|
+
* closure lands.
|
|
22
|
+
*
|
|
23
|
+
* The `SCHEMAS_DIR` export is retained as `@deprecated` for transitional
|
|
24
|
+
* cross-package compat (pi-workflows: workflow-sdk.ts, step-block.ts,
|
|
25
|
+
* workflow-executor.ts still import it as a bare segment); Phase 7 of
|
|
26
|
+
* FGAP-026 closure cascades those sites and removes the export.
|
|
27
|
+
*/
|
|
28
|
+
import fs from "node:fs";
|
|
29
|
+
import path from "node:path";
|
|
30
|
+
import { validate } from "./schema-validator.js";
|
|
31
|
+
/** @deprecated Same status as the removed PROJECT_DIR — Phase 7 cascade target. */
|
|
32
|
+
export const SCHEMAS_DIR = "schemas";
|
|
33
|
+
/**
|
|
34
|
+
* Thrown by `resolveContextDir(cwd)` when no `.pi-context.json` bootstrap
|
|
35
|
+
* pointer exists at the cwd. Carries `cwd` and `bootstrapPath` fields so
|
|
36
|
+
* callers can surface the absent-pointer site in error messages without
|
|
37
|
+
* re-deriving the path. Per DEC-0015 hard-throw policy — there is no
|
|
38
|
+
* fallback default; callers must materialize the pointer (via
|
|
39
|
+
* `writeBootstrapPointer`) before any substrate operation.
|
|
40
|
+
*/
|
|
41
|
+
export class BootstrapNotFoundError extends Error {
|
|
42
|
+
cwd;
|
|
43
|
+
bootstrapPath;
|
|
44
|
+
constructor(cwd, bootstrapPath) {
|
|
45
|
+
super(`pi-context: no .pi-context.json bootstrap pointer at ${bootstrapPath}; run /context init to declare substrate dir per DEC-0015`);
|
|
46
|
+
this.name = "BootstrapNotFoundError";
|
|
47
|
+
this.cwd = cwd;
|
|
48
|
+
this.bootstrapPath = bootstrapPath;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const bootstrapCache = new Map();
|
|
52
|
+
/**
|
|
53
|
+
* URN-anchored validation shape for the bootstrap pointer. The bootstrap
|
|
54
|
+
* schema is pre-registered into the shared AJV instance at
|
|
55
|
+
* `schema-validator.ts` module init under `pi-context://schemas/bootstrap`,
|
|
56
|
+
* so this `$ref` resolves synchronously without re-reading the schema file.
|
|
57
|
+
* Carrying it as a module-level constant avoids reconstructing on every
|
|
58
|
+
* resolve.
|
|
59
|
+
*/
|
|
60
|
+
const BOOTSTRAP_REF_SCHEMA = {
|
|
61
|
+
$ref: "pi-context://schemas/bootstrap",
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Resolve the substrate dir for a given cwd. Reads the
|
|
65
|
+
* `<cwd>/.pi-context.json` bootstrap pointer, AJV-validates the parsed
|
|
66
|
+
* pointer object against the URN-registered bootstrap schema (FGAP-026
|
|
67
|
+
* phase 1.1 schema), caches the resolution by absolute cwd keyed on
|
|
68
|
+
* pointer mtime, and returns `path.join(cwd, contextDir)` as an absolute
|
|
69
|
+
* path (subject to whatever cwd the caller passed).
|
|
70
|
+
*
|
|
71
|
+
* Hard-throws `BootstrapNotFoundError` when the pointer file is absent —
|
|
72
|
+
* no fallback to `.project`. Per DEC-0015 the substrate dir name is
|
|
73
|
+
* config-driven; defaulting would be hardcode-dressed-as-default. Callers
|
|
74
|
+
* bootstrapping a fresh repo write the pointer first via
|
|
75
|
+
* `writeBootstrapPointer(cwd, contextDir)` before any path-builder runs.
|
|
76
|
+
*
|
|
77
|
+
* Throws plain `Error` with file-context message on read/parse failure
|
|
78
|
+
* (mirrors `loadConfig` at context.ts:188-196). Throws
|
|
79
|
+
* `ValidationError` (re-raised from canonical `validate()`) when the
|
|
80
|
+
* pointer fails AJV validation against the bootstrap schema.
|
|
81
|
+
*/
|
|
82
|
+
export function resolveContextDir(cwd) {
|
|
83
|
+
const bootstrapPath = path.join(cwd, ".pi-context.json");
|
|
84
|
+
if (!fs.existsSync(bootstrapPath)) {
|
|
85
|
+
throw new BootstrapNotFoundError(cwd, bootstrapPath);
|
|
86
|
+
}
|
|
87
|
+
const mtime = fs.statSync(bootstrapPath).mtimeMs;
|
|
88
|
+
const key = path.resolve(cwd);
|
|
89
|
+
const cached = bootstrapCache.get(key);
|
|
90
|
+
if (cached && cached.bootstrapMtimeMs === mtime) {
|
|
91
|
+
return path.join(cwd, cached.contextDir);
|
|
92
|
+
}
|
|
93
|
+
let raw;
|
|
94
|
+
try {
|
|
95
|
+
raw = fs.readFileSync(bootstrapPath, "utf-8");
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
throw new Error(`resolveContextDir: failed to read ${bootstrapPath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
99
|
+
}
|
|
100
|
+
let data;
|
|
101
|
+
try {
|
|
102
|
+
data = JSON.parse(raw);
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
throw new Error(`resolveContextDir: invalid JSON in ${bootstrapPath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
106
|
+
}
|
|
107
|
+
// AJV-validate via the canonical `validate()` surface against the
|
|
108
|
+
// URN-registered bootstrap schema (`pi-context://schemas/bootstrap`,
|
|
109
|
+
// pre-registered in schema-validator.ts at module init). No parallel
|
|
110
|
+
// AJV instance per the rebuild-arc discipline.
|
|
111
|
+
validate(BOOTSTRAP_REF_SCHEMA, data, `bootstrap pointer (${bootstrapPath})`);
|
|
112
|
+
const contextDir = data.contextDir;
|
|
113
|
+
bootstrapCache.set(key, { contextDir, bootstrapMtimeMs: mtime });
|
|
114
|
+
return path.join(cwd, contextDir);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Non-throwing variant of `resolveContextDir` for READ / CLASSIFY / SNAPSHOT
|
|
118
|
+
* consumers that must degrade gracefully when no `.pi-context.json` bootstrap
|
|
119
|
+
* pointer exists (DEC-0015) rather than hard-throwing `BootstrapNotFoundError`.
|
|
120
|
+
*
|
|
121
|
+
* Returns the resolved substrate dir when the pointer is present (identical to
|
|
122
|
+
* `resolveContextDir`); returns `null` only on the absent-pointer
|
|
123
|
+
* `BootstrapNotFoundError` branch. Re-throws every other error — a malformed
|
|
124
|
+
* pointer / read failure is NOT degradation and must still surface (the
|
|
125
|
+
* pointer-present error semantics of `resolveContextDir` are preserved).
|
|
126
|
+
*
|
|
127
|
+
* Name-based catch per FGAP-080 (instanceof is unreliable across module-instance
|
|
128
|
+
* boundaries under tsx/dist dual-load).
|
|
129
|
+
*/
|
|
130
|
+
export function tryResolveContextDir(cwd) {
|
|
131
|
+
try {
|
|
132
|
+
return resolveContextDir(cwd);
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
if (err instanceof Error && err.name === "BootstrapNotFoundError")
|
|
136
|
+
return null;
|
|
137
|
+
throw err;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Atomically write a `.pi-context.json` bootstrap pointer at `<cwd>/.pi-context.json`.
|
|
142
|
+
* `contextDir` is a required parameter chosen by the caller per DEC-0015 —
|
|
143
|
+
* no default, no transitional bridge.
|
|
144
|
+
*
|
|
145
|
+
* Pre-validates the pointer object against the URN-registered bootstrap
|
|
146
|
+
* schema BEFORE write so a malformed pointer never lands on disk. Atomic
|
|
147
|
+
* write via tmp + rename mirrors `writeTypedFile` in block-api.ts:407-422
|
|
148
|
+
* (process-pid-suffixed tmp path; cleanup on error). Invalidates the
|
|
149
|
+
* `bootstrapCache` entry for this cwd so the next `resolveContextDir(cwd)`
|
|
150
|
+
* call reads fresh data even if mtime granularity (1s on some filesystems)
|
|
151
|
+
* would otherwise mask the change.
|
|
152
|
+
*/
|
|
153
|
+
export function writeBootstrapPointer(cwd, contextDir) {
|
|
154
|
+
const pointer = {
|
|
155
|
+
contextDir,
|
|
156
|
+
version: "1.0.0",
|
|
157
|
+
created_at: new Date().toISOString(),
|
|
158
|
+
};
|
|
159
|
+
// Validate before write — AJV via canonical `validate()` against
|
|
160
|
+
// pre-registered bootstrap schema URN.
|
|
161
|
+
validate(BOOTSTRAP_REF_SCHEMA, pointer, `bootstrap pointer (writeBootstrapPointer for ${cwd})`);
|
|
162
|
+
const bootstrapPath = path.join(cwd, ".pi-context.json");
|
|
163
|
+
fs.mkdirSync(path.dirname(bootstrapPath), { recursive: true });
|
|
164
|
+
const tmpPath = `${bootstrapPath}.bootstrap-${process.pid}.tmp`;
|
|
165
|
+
try {
|
|
166
|
+
fs.writeFileSync(tmpPath, JSON.stringify(pointer, null, 2), "utf-8");
|
|
167
|
+
fs.renameSync(tmpPath, bootstrapPath);
|
|
168
|
+
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
try {
|
|
171
|
+
fs.unlinkSync(tmpPath);
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
/* ignore cleanup failure */
|
|
175
|
+
}
|
|
176
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
177
|
+
throw new Error(`writeBootstrapPointer: failed to write ${bootstrapPath}: ${msg}`);
|
|
178
|
+
}
|
|
179
|
+
// Invalidate cache for this cwd so next resolveContextDir picks up the
|
|
180
|
+
// fresh pointer regardless of mtime-granularity edge cases.
|
|
181
|
+
bootstrapCache.delete(path.resolve(cwd));
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Reject substrate names that are not bare path segments (FGAP-079 / DEC-0045).
|
|
185
|
+
*
|
|
186
|
+
* Every name→path builder below (and in block-api / context /
|
|
187
|
+
* schema-write) interpolates a raw `name` into a substrate-relative file path
|
|
188
|
+
* (`${name}.schema.json`, `${name}.json`). A name containing a path separator
|
|
189
|
+
* (`/`, `\`), a `..` traversal segment, a `.` (`x.schema`), or an absolute
|
|
190
|
+
* prefix would escape the substrate dir. This validator constrains names to the
|
|
191
|
+
* block_kind canonical_id alphabet (`[A-Za-z0-9_-]+`) — which has no separators,
|
|
192
|
+
* dots, or empty form — so a traversal name throws BEFORE any path resolution.
|
|
193
|
+
*
|
|
194
|
+
* Guards BOTH read and write sides (the resolver unification of DEC-0045 routes
|
|
195
|
+
* `schemaWritePath` through `schemaPath`, so guarding here covers writes too).
|
|
196
|
+
* Now reachable from the in-pi tool surface — the write-schema tool (FGAP-077)
|
|
197
|
+
* exposes the schema name directly to in-pi agents.
|
|
198
|
+
*/
|
|
199
|
+
export function assertSubstrateName(name) {
|
|
200
|
+
if (!/^[A-Za-z0-9_-]+$/.test(name)) {
|
|
201
|
+
throw new Error(`Invalid substrate name '${name}': only letters, digits, '-', '_' are allowed (no path separators or '..').`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Canonical path-builder helpers for the substrate directory (config-driven
|
|
206
|
+
* via `resolveContextDir(cwd)` per DEC-0015). Every site that previously
|
|
207
|
+
* hand-built `path.join(cwd, ".project", ...)` now routes through these so
|
|
208
|
+
* the substrate-dir name is read from the bootstrap pointer rather than
|
|
209
|
+
* hardcoded.
|
|
210
|
+
*/
|
|
211
|
+
export function schemasDir(cwd) {
|
|
212
|
+
return path.join(resolveContextDir(cwd), SCHEMAS_DIR);
|
|
213
|
+
}
|
|
214
|
+
export function schemaPath(cwd, blockName) {
|
|
215
|
+
assertSubstrateName(blockName);
|
|
216
|
+
return path.join(resolveContextDir(cwd), SCHEMAS_DIR, `${blockName}.schema.json`);
|
|
217
|
+
}
|
|
218
|
+
export function agentsDir(cwd) {
|
|
219
|
+
return path.join(resolveContextDir(cwd), "agents");
|
|
220
|
+
}
|
|
221
|
+
export function contextTemplatesDir(cwd) {
|
|
222
|
+
return path.join(resolveContextDir(cwd), "templates");
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=context-dir.js.map
|