@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.
Files changed (126) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +195 -0
  3. package/dist/block-api.d.ts +328 -0
  4. package/dist/block-api.d.ts.map +1 -0
  5. package/dist/block-api.js +1167 -0
  6. package/dist/block-api.js.map +1 -0
  7. package/dist/block-validation.d.ts +33 -0
  8. package/dist/block-validation.d.ts.map +1 -0
  9. package/dist/block-validation.js +213 -0
  10. package/dist/block-validation.js.map +1 -0
  11. package/dist/context-dir.d.ts +93 -0
  12. package/dist/context-dir.d.ts.map +1 -0
  13. package/dist/context-dir.js +224 -0
  14. package/dist/context-dir.js.map +1 -0
  15. package/dist/context-sdk.d.ts +428 -0
  16. package/dist/context-sdk.d.ts.map +1 -0
  17. package/dist/context-sdk.js +1327 -0
  18. package/dist/context-sdk.js.map +1 -0
  19. package/dist/context.d.ts +497 -0
  20. package/dist/context.d.ts.map +1 -0
  21. package/dist/context.js +1060 -0
  22. package/dist/context.js.map +1 -0
  23. package/dist/dispatch-context.d.ts +112 -0
  24. package/dist/dispatch-context.d.ts.map +1 -0
  25. package/dist/dispatch-context.js +119 -0
  26. package/dist/dispatch-context.js.map +1 -0
  27. package/dist/execution-context.d.ts +138 -0
  28. package/dist/execution-context.d.ts.map +1 -0
  29. package/dist/execution-context.js +151 -0
  30. package/dist/execution-context.js.map +1 -0
  31. package/dist/index.d.ts +34 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +1655 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/lens-validator.d.ts +50 -0
  36. package/dist/lens-validator.d.ts.map +1 -0
  37. package/dist/lens-validator.js +46 -0
  38. package/dist/lens-validator.js.map +1 -0
  39. package/dist/lens-view.d.ts +75 -0
  40. package/dist/lens-view.d.ts.map +1 -0
  41. package/dist/lens-view.js +253 -0
  42. package/dist/lens-view.js.map +1 -0
  43. package/dist/rename-canonical-id.d.ts +64 -0
  44. package/dist/rename-canonical-id.d.ts.map +1 -0
  45. package/dist/rename-canonical-id.js +378 -0
  46. package/dist/rename-canonical-id.js.map +1 -0
  47. package/dist/roadmap-plan.d.ts +186 -0
  48. package/dist/roadmap-plan.d.ts.map +1 -0
  49. package/dist/roadmap-plan.js +534 -0
  50. package/dist/roadmap-plan.js.map +1 -0
  51. package/dist/samples-catalog.d.ts +48 -0
  52. package/dist/samples-catalog.d.ts.map +1 -0
  53. package/dist/samples-catalog.js +128 -0
  54. package/dist/samples-catalog.js.map +1 -0
  55. package/dist/schema-migrations.d.ts +82 -0
  56. package/dist/schema-migrations.d.ts.map +1 -0
  57. package/dist/schema-migrations.js +106 -0
  58. package/dist/schema-migrations.js.map +1 -0
  59. package/dist/schema-validator.d.ts +76 -0
  60. package/dist/schema-validator.d.ts.map +1 -0
  61. package/dist/schema-validator.js +219 -0
  62. package/dist/schema-validator.js.map +1 -0
  63. package/dist/schema-write.d.ts +122 -0
  64. package/dist/schema-write.d.ts.map +1 -0
  65. package/dist/schema-write.js +210 -0
  66. package/dist/schema-write.js.map +1 -0
  67. package/dist/status-vocab.d.ts +60 -0
  68. package/dist/status-vocab.d.ts.map +1 -0
  69. package/dist/status-vocab.js +109 -0
  70. package/dist/status-vocab.js.map +1 -0
  71. package/dist/test-helpers.d.ts +12 -0
  72. package/dist/test-helpers.d.ts.map +1 -0
  73. package/dist/test-helpers.js +28 -0
  74. package/dist/test-helpers.js.map +1 -0
  75. package/dist/topo.d.ts +19 -0
  76. package/dist/topo.d.ts.map +1 -0
  77. package/dist/topo.js +99 -0
  78. package/dist/topo.js.map +1 -0
  79. package/dist/update-check.d.ts +6 -0
  80. package/dist/update-check.d.ts.map +1 -0
  81. package/dist/update-check.js +82 -0
  82. package/dist/update-check.js.map +1 -0
  83. package/package.json +115 -0
  84. package/samples/blocks/context-contracts.json +3 -0
  85. package/samples/blocks/conventions.json +3 -0
  86. package/samples/blocks/decisions.json +3 -0
  87. package/samples/blocks/features.json +3 -0
  88. package/samples/blocks/framework-gaps.json +3 -0
  89. package/samples/blocks/issues.json +3 -0
  90. package/samples/blocks/layer-plans.json +3 -0
  91. package/samples/blocks/phase.json +3 -0
  92. package/samples/blocks/rationale.json +3 -0
  93. package/samples/blocks/requirements.json +3 -0
  94. package/samples/blocks/research.json +3 -0
  95. package/samples/blocks/spec-reviews.json +3 -0
  96. package/samples/blocks/story.json +3 -0
  97. package/samples/blocks/tasks.json +3 -0
  98. package/samples/blocks/verification.json +3 -0
  99. package/samples/conception.json +467 -0
  100. package/samples/schemas/context-contracts.schema.json +89 -0
  101. package/samples/schemas/conventions.schema.json +34 -0
  102. package/samples/schemas/decisions.schema.json +87 -0
  103. package/samples/schemas/features.schema.json +53 -0
  104. package/samples/schemas/framework-gaps.schema.json +64 -0
  105. package/samples/schemas/issues.schema.json +39 -0
  106. package/samples/schemas/layer-plans.schema.json +92 -0
  107. package/samples/schemas/phase.schema.json +118 -0
  108. package/samples/schemas/rationale.schema.json +24 -0
  109. package/samples/schemas/requirements.schema.json +34 -0
  110. package/samples/schemas/research.schema.json +134 -0
  111. package/samples/schemas/spec-reviews.schema.json +62 -0
  112. package/samples/schemas/story.schema.json +73 -0
  113. package/samples/schemas/tasks.schema.json +34 -0
  114. package/samples/schemas/verification.schema.json +37 -0
  115. package/schemas/bootstrap.schema.json +24 -0
  116. package/schemas/config.schema.json +193 -0
  117. package/schemas/layer.schema.json +9 -0
  118. package/schemas/priority.schema.json +9 -0
  119. package/schemas/relations.schema.json +31 -0
  120. package/schemas/severity.schema.json +9 -0
  121. package/schemas/source.schema.json +9 -0
  122. package/schemas/status.schema.json +9 -0
  123. package/schemas/verification-method.schema.json +9 -0
  124. package/skill-narrative.md +130 -0
  125. package/skills/pi-context/SKILL.md +684 -0
  126. 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