@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":"context-dir.js","sourceRoot":"","sources":["../src/context-dir.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,428 @@
1
+ /**
2
+ * Project SDK — queryable surface for project block state, discovery,
3
+ * and derived metrics. Computes everything dynamically from filesystem
4
+ * and git — no cache, no stale data.
5
+ */
6
+ import { type ConfigBlock } from "./context.js";
7
+ export { type BlockKindDecl, type CompositionMember, type ConfigBlock, type ContextData, type CurationSuggestion, displayName, type Edge, edgesForLens, groupByLens, type HierarchyDecl, type InvariantDecl, type ItemRecord, type LayerDecl, type LensSpec, listUncategorized, loadConfig, loadContext, loadRelations, type RelationTypeDecl, type StatusBucket, type SubstrateValidationIssue, type SubstrateValidationResult, synthesizeFromField, validateRelations, walkDescendants, } from "./context.js";
8
+ export interface BlockInfo {
9
+ name: string;
10
+ hasSchema: boolean;
11
+ }
12
+ export declare function availableBlocks(cwd: string): BlockInfo[];
13
+ /**
14
+ * Discover schemas in the substrate dir's `schemas/` subdirectory (resolved
15
+ * via `schemasDir(cwd)` per DEC-0015). Returns sorted list of
16
+ * absolute paths to .schema.json files.
17
+ */
18
+ export declare function availableSchemas(cwd: string): string[];
19
+ /**
20
+ * Discover blocks with array properties by scanning the substrate dir's
21
+ * `schemas/` subdirectory (resolved via `schemasDir(cwd)` per
22
+ * DEC-0015) for schemas whose root type has at least one array property.
23
+ * Returns block name, first array key, and schema path for each.
24
+ */
25
+ export declare function findAppendableBlocks(cwd: string): Array<{
26
+ block: string;
27
+ arrayKey: string;
28
+ schemaPath: string;
29
+ }>;
30
+ /** Default planning lifecycle block types shipped with /context init. */
31
+ export declare const CONTEXT_BLOCK_TYPES: readonly ["project", "domain", "requirements", "architecture", "tasks", "decisions", "issues", "rationale", "verification", "handoff", "conformance-reference", "audit"];
32
+ export interface SchemaProperty {
33
+ name: string;
34
+ type: string;
35
+ required: boolean;
36
+ description?: string;
37
+ enum?: string[];
38
+ }
39
+ export interface SchemaInfo {
40
+ name: string;
41
+ title: string;
42
+ properties: SchemaProperty[];
43
+ arrayKeys: string[];
44
+ itemProperties?: Record<string, SchemaProperty[]>;
45
+ }
46
+ /**
47
+ * Read and parse a schema, extracting property metadata.
48
+ * Returns null if the schema file doesn't exist or is unparseable.
49
+ */
50
+ export declare function schemaInfo(cwd: string, schemaName: string): SchemaInfo | null;
51
+ /**
52
+ * Extract schema property metadata from an ABSOLUTE schema file path.
53
+ * Identical extraction to `schemaInfo` but addressed by path rather than
54
+ * (cwd, name) — lets package-intrinsic consumers (e.g. samples-catalog) read
55
+ * the extension's bundled samples/schemas/*.schema.json without a project
56
+ * substrate. Returns null if the schema file doesn't exist or is unparseable.
57
+ */
58
+ export declare function schemaInfoFromPath(absSchemaPath: string, schemaName: string): SchemaInfo | null;
59
+ /**
60
+ * All schemas with their property metadata.
61
+ * Scans the substrate dir's `schemas/` subdirectory (resolved via
62
+ * `schemasDir(cwd)` per DEC-0015) and parses each schema.
63
+ */
64
+ export declare function schemaVocabulary(cwd: string): SchemaInfo[];
65
+ export interface BlockStructure {
66
+ name: string;
67
+ exists: boolean;
68
+ hasSchema: boolean;
69
+ arrays: {
70
+ key: string;
71
+ itemCount: number;
72
+ }[];
73
+ }
74
+ /**
75
+ * What blocks exist and their structure — combines availableBlocks
76
+ * and block summaries into a single queryable function.
77
+ */
78
+ export declare function blockStructure(cwd: string): BlockStructure[];
79
+ export interface ArraySummary {
80
+ total: number;
81
+ byStatus?: Record<string, number>;
82
+ }
83
+ export interface BlockSummary {
84
+ arrays: Record<string, ArraySummary>;
85
+ }
86
+ /**
87
+ * Zero-loss derived "where are we + what's next" state (DEC-0040 / FGAP-072 /
88
+ * FGAP-059). A pure function of `.project` substrate — focus, in-flight units,
89
+ * atomic-next ranked actions, and blocked tasks are all DERIVED, never
90
+ * hand-stored. Built to serve `.context` identically once that substrate-dir
91
+ * lands. Reuses existing primitives (buildIdIndex / loadRelations / topoSort);
92
+ * introduces no new traversal or status logic.
93
+ */
94
+ export interface CurrentState {
95
+ /** one-line: active in-flight ids, else current in-progress phase, else "no active focus." */
96
+ focus: string;
97
+ /** tasks with status "in-progress" */
98
+ inFlight: {
99
+ id: string;
100
+ block: string;
101
+ description: string;
102
+ }[];
103
+ /** atomic-next, ranked: open framework-gaps (by priority) then unblocked planned tasks (topo order) */
104
+ nextActions: {
105
+ id: string;
106
+ kind: string;
107
+ priority?: string;
108
+ reason: string;
109
+ }[];
110
+ /** planned tasks whose task_depends_on_task dependency parents are not ALL completed */
111
+ blocked: {
112
+ id: string;
113
+ block: string;
114
+ blockedBy: string[];
115
+ }[];
116
+ }
117
+ /**
118
+ * The four-state bootstrap progression, derived purely from the filesystem
119
+ * (DEC-0040 — nothing stored). Consumed by the `/context start` conductor, the
120
+ * dispatch READY-gate, and the startup-slot hint (DEC-0042 / FGAP-095).
121
+ */
122
+ export type BootstrapState = "no-pointer" | "no-config" | "not-installed" | "ready";
123
+ export interface BootstrapStatus {
124
+ /** which stop in the bootstrap progression `cwd` is at */
125
+ state: BootstrapState;
126
+ /** absolute substrate dir once the `.pi-context.json` pointer exists, else null */
127
+ contextDir: string | null;
128
+ /** declared-but-unmaterialized installed assets — populated only for "not-installed", else empty */
129
+ missing: {
130
+ schemas: string[];
131
+ blocks: string[];
132
+ };
133
+ }
134
+ /**
135
+ * Derive the bootstrap progression for `cwd` from the filesystem, in order:
136
+ * no-pointer — no `.pi-context.json` (checked directly so this NEVER throws
137
+ * pre-bootstrap — it is the unset-substrate detection read the
138
+ * harness-confined LLM uses to redirect the human to `/context start`)
139
+ * no-config — pointer present, no `config.json`
140
+ * not-installed — config present, some declared installed_* asset is absent
141
+ * ready — config present, all declared assets materialized (or none declared)
142
+ *
143
+ * Does NOT swallow corruption: a malformed `config.json` propagates
144
+ * `loadConfig`'s ValidationError — the four states are the NORMAL progression;
145
+ * corruption is a separate error condition, not a bootstrap stop.
146
+ */
147
+ export declare function deriveBootstrapState(cwd: string): BootstrapStatus;
148
+ export interface ContextState {
149
+ testCount: number;
150
+ sourceFiles: number;
151
+ sourceLines: number;
152
+ lastCommit: string;
153
+ lastCommitMessage: string;
154
+ recentCommits: string[];
155
+ blockSummaries: Record<string, BlockSummary>;
156
+ phases: {
157
+ total: number;
158
+ current: number;
159
+ };
160
+ blocks: number;
161
+ schemas: number;
162
+ requirements?: {
163
+ total: number;
164
+ byStatus: Record<string, number>;
165
+ byPriority: Record<string, number>;
166
+ };
167
+ tasks?: {
168
+ total: number;
169
+ byStatus: Record<string, number>;
170
+ };
171
+ domain?: {
172
+ total: number;
173
+ };
174
+ verifications?: {
175
+ total: number;
176
+ passed: number;
177
+ failed: number;
178
+ };
179
+ hasHandoff?: boolean;
180
+ }
181
+ /**
182
+ * Derive project state from authoritative sources at query time.
183
+ * No cache, no stale data — computed fresh on every call.
184
+ */
185
+ export declare function contextState(cwd: string): ContextState;
186
+ /**
187
+ * Derive {@link CurrentState} ("where are we + what's next") purely from
188
+ * `.project` substrate. No writes; tolerant of absent optional blocks (every
189
+ * branch defaults to empty rather than throwing).
190
+ *
191
+ * Edge-direction contract for blocked/ready derivation (verified against
192
+ * roadmap-plan.ts:471 — the topoSort-deps mapping for phase_depends_on uses the
193
+ * identical convention): a `task_depends_on_task` edge `{parent: D, child: T}`
194
+ * means task T DEPENDS ON task D, so D must reach status "completed" before T is
195
+ * unblocked. (relation name source_verb_target = task_depends_on_task ⇒ child is
196
+ * the source/dependent, parent is the target/prerequisite; config display_name
197
+ * "depends on task".)
198
+ */
199
+ export declare function currentState(cwd: string): CurrentState;
200
+ /**
201
+ * Predicate operators for filterBlockItems. Each operator carries a
202
+ * documented semantic against `item[field]`:
203
+ * - `eq` : strict-equality (===) against `value`
204
+ * - `neq` : strict-inequality (!==) against `value`
205
+ * - `in` : `value` must be an array; matches when item[field] is in it
206
+ * - `matches` : item[field] must be a string; tested against `new RegExp(value)`
207
+ *
208
+ * The match policy for items missing the predicate field is uniform:
209
+ * `item[field] === undefined` → NOT a match (returns false) for every
210
+ * operator. Rationale: returning early avoids throwing on heterogeneous
211
+ * block arrays where some items legitimately lack the field; callers that
212
+ * want a hard "field must exist" gate compose with `op: "neq", value: undefined`
213
+ * (still excluded by the undefined branch — current semantic is filter, not
214
+ * schema assertion). Documented here rather than via throw so callers get a
215
+ * cleanly-typed empty/partial array rather than a runtime trap.
216
+ */
217
+ export interface FilterPredicate {
218
+ field: string;
219
+ op: "eq" | "neq" | "in" | "matches";
220
+ value: unknown;
221
+ }
222
+ /**
223
+ * Filter the array items of a block by a predicate. Reads the block via the
224
+ * canonical block-api `readBlock`, discovers the single top-level array key,
225
+ * and returns a new array of items satisfying the predicate. The source
226
+ * block is never mutated.
227
+ *
228
+ * Behavior contract:
229
+ * - Block must exist; underlying `readBlock` throw propagates.
230
+ * - Block must have exactly one top-level array property (single-array
231
+ * assumption — same as inject-context-items.ts).
232
+ * - Items missing the predicate field never match (see FilterPredicate
233
+ * docstring for rationale).
234
+ * - `op: "in"` requires `value` to be an array; otherwise no items match.
235
+ * - `op: "matches"` constructs `new RegExp(String(value))`; a malformed
236
+ * regex pattern throws synchronously from the RegExp constructor.
237
+ *
238
+ * Closes part of the FGAP-026 phase 2 query-surface gap (TASK-034).
239
+ */
240
+ export declare function filterBlockItems(cwd: string, blockName: string, predicate: FilterPredicate): unknown[];
241
+ export interface BlockPage {
242
+ items: unknown[];
243
+ total: number;
244
+ hasMore: boolean;
245
+ }
246
+ /**
247
+ * Read a single item from ONE named block by its id, or null if absent.
248
+ * Block-scoped (no cross-substrate idIndex, no prefix-vs-block invariant — that is resolveItemById).
249
+ * Reuses filterBlockItems(id eq) so it inherits readBlock + discoverArrayKey + edge semantics
250
+ * (missing block / multiple top-level arrays THROW; no-array block or id-not-found → null). FGAP-045.
251
+ */
252
+ export declare function readBlockItem(cwd: string, blockName: string, id: string): unknown | null;
253
+ /**
254
+ * Paginate a block's items. Reuses readBlock + discoverArrayKey. Returns the FULL count as `total`
255
+ * (not the page length) and `hasMore = offset + limit < total`. No-array block → {items:[],total:0,
256
+ * hasMore:false}; offset ≥ total → empty items with correct total. Missing block / multiple top-level
257
+ * arrays propagate the throw (consistent with filterBlockItems). FGAP-045.
258
+ */
259
+ export declare function readBlockPage(cwd: string, blockName: string, opts?: {
260
+ offset?: number;
261
+ limit?: number;
262
+ }): BlockPage;
263
+ export interface JoinSpec {
264
+ leftBlock: string;
265
+ rightBlock: string;
266
+ relationType?: string;
267
+ leftField?: string;
268
+ rightField?: string;
269
+ leftEndpoint?: "parent" | "child";
270
+ leftPredicate?: FilterPredicate;
271
+ }
272
+ export interface JoinResult {
273
+ left: Record<string, unknown>;
274
+ right: Record<string, unknown>[];
275
+ }
276
+ /**
277
+ * Cross-block join (FGAP-043, HYBRID). Mode = exactly one of relationType (edge) XOR
278
+ * leftField+rightField (field). Returns one JoinResult per left item (after leftPredicate),
279
+ * right always an array. Edge mode is DEC-0013-native (relations.json); field mode joins on a
280
+ * shared field value (legacy inline-FK + arbitrary shared fields). Reuses filterBlockItems /
281
+ * readBlock / discoverArrayKey / loadRelations / buildIdIndex.
282
+ */
283
+ export declare function joinBlocks(cwd: string, spec: JoinSpec): JoinResult[];
284
+ /**
285
+ * Locator for a single item discovered by buildIdIndex: which block file it
286
+ * lives in, which array key inside that block holds it, and the item payload.
287
+ * Intended as the substrate for renderer-driven cross-reference resolution
288
+ * (e.g., a per-item macro inlining a related decision by ID).
289
+ */
290
+ export interface ItemLocation {
291
+ block: string;
292
+ arrayKey: string;
293
+ item: Record<string, unknown>;
294
+ }
295
+ /**
296
+ * Look up the block expected to host an ID based on its prefix, driven by
297
+ * the config registry.
298
+ *
299
+ * Resolution: scan `cfg.block_kinds[]` for the longest-matching `prefix`
300
+ * and return its `canonical_id`. Returns null when:
301
+ * - `cfg` is null (no config / pre-bootstrap project — graceful fallback)
302
+ * - no `block_kinds[].prefix` matches the id (bare phase IDs, legacy
303
+ * unprefixed IDs, future prefixes not yet registered)
304
+ *
305
+ * Registry is config-driven from line 1 — prefix conflicts surface at
306
+ * config-registration time rather than fixture-write time. Closes issue-089
307
+ * class (PLAN- vs PLAN-NNN collision) structurally.
308
+ *
309
+ * Longest-prefix wins so that compatible registrations like `R-` and
310
+ * `REVIEW-` resolve unambiguously.
311
+ */
312
+ export declare function expectedBlockForId(id: string, cfg: ConfigBlock | null): string | null;
313
+ /**
314
+ * Build a map from item-ID to its location across every block in `.project/`.
315
+ *
316
+ * Scan strategy:
317
+ * - `.project/*.json` — every array property whose items are objects with
318
+ * a string `id` field becomes an indexed entry. Phases participate as an
319
+ * ordinary array-block since DEC-0028 (PHASE-NNN ids in `phase.json` under
320
+ * the plural `phases` array key); there is no dedicated file-per-phase branch.
321
+ *
322
+ * Prefix invariant: when an item ID starts with one of the prefixes registered
323
+ * in `config.block_kinds[]`, the block it was found in must match that
324
+ * registry's `canonical_id`. Mismatches throw immediately — schema patterns
325
+ * make this state unreachable through validated writes, so encountering one
326
+ * indicates either a direct-fs corruption or an unmapped prefix collision that
327
+ * needs explicit resolution. When no config exists (pre-bootstrap project),
328
+ * the prefix invariant is silently skipped — every encountered id is indexed
329
+ * without enforcement.
330
+ *
331
+ * Collisions on identical IDs across different blocks: first writer wins
332
+ * (no overwrite) — duplicate entries are intentionally ignored to keep
333
+ * the resolver deterministic without allocating warning channels here.
334
+ */
335
+ export declare function buildIdIndex(cwd: string): Map<string, ItemLocation>;
336
+ /**
337
+ * One-off lookup — builds the full index then performs a single get.
338
+ * Callers performing multiple lookups in one render pass should call
339
+ * `buildIdIndex` once and reuse the returned map.
340
+ */
341
+ export declare function resolveItemById(cwd: string, id: string): ItemLocation | null;
342
+ /**
343
+ * Bulk variant of `resolveItemById` — resolve N ids against a single
344
+ * `buildIdIndex` traversal. Complements the singular form (which remains
345
+ * available for one-off renderer-driven lookups) by collapsing N independent
346
+ * `buildIdIndex` rebuilds into one. Coexists with the singular surface;
347
+ * neither supersedes the other.
348
+ *
349
+ * Semantics:
350
+ * - Returns a `Map<string, ItemLocation | null>` whose entries are keyed
351
+ * by the INPUT ids exactly as supplied (no normalization, no dedup
352
+ * beyond Map's intrinsic key-uniqueness). Duplicate input ids therefore
353
+ * collapse to one map entry — caller-side responsibility if multiplicity
354
+ * matters; the canonical bulk-lookup contract is "set of ids → set of
355
+ * resolutions" rather than "list → list".
356
+ * - For each input id: present in the index → its `ItemLocation`; absent
357
+ * → null entry. Every input id has an entry in the returned map (no
358
+ * silent drops); this is the property that distinguishes the bulk
359
+ * surface from a partial-result `getMany`.
360
+ * - Empty input (`ids: []`) returns an empty Map (no index build cost
361
+ * beyond the unavoidable directory existence check inside buildIdIndex).
362
+ * - Insertion order matches the first-encounter order of `ids` (standard
363
+ * ES Map semantics on `.set`).
364
+ *
365
+ * Behavior contract:
366
+ * - Single `buildIdIndex(cwd)` invocation regardless of `ids.length`
367
+ * (closes the N×singular-call pattern that motivated the bulk surface).
368
+ * - Prefix-vs-block invariant violations inside the index build propagate
369
+ * out as-is — same surface contract as `resolveItemById`.
370
+ *
371
+ * Closes part of the FGAP-026 phase 2 query-surface gap (TASK-035).
372
+ */
373
+ export declare function resolveItemsByIds(cwd: string, ids: string[]): Map<string, ItemLocation | null>;
374
+ export interface ContextValidationIssue {
375
+ severity: "error" | "warning";
376
+ message: string;
377
+ block: string;
378
+ /**
379
+ * Defect locator within the block. Required for cross-block reference
380
+ * diagnostics; optional for lens-validator-sourced issues whose
381
+ * locator (e.g. phase_id) does not always map to a field path.
382
+ */
383
+ field?: string;
384
+ /**
385
+ * Opaque diagnostic slug from a registered lens-validator
386
+ * (e.g. roadmap_lens_missing). Absent on issues produced by the
387
+ * built-in cross-block reference scan, which has no slug surface
388
+ * (its diagnostics are uniquely identified by block + field).
389
+ */
390
+ code?: string;
391
+ }
392
+ export interface ContextValidationResult {
393
+ status: "clean" | "warnings" | "invalid";
394
+ issues: ContextValidationIssue[];
395
+ }
396
+ /**
397
+ * Validate cross-block referential integrity against the EDGE model
398
+ * (DEC-0013: `relations.json` closure-table edges are THE reference surface).
399
+ * Returns structured issues rather than throwing.
400
+ *
401
+ * Edge integrity replaces the pre-DEC-0036 per-block inline-FK reference scan:
402
+ * each edge's `parent`/`child` must resolve to a known item id (via the unified
403
+ * `buildIdIndex`), and each edge's `relation_type` must be registered in
404
+ * `config.relation_types[]` (DEC-0030 tripartite canonical_ids). Cycle
405
+ * detection is delegated to `validateRelations` (its `edge_cycle_detected`
406
+ * diagnostics are merged in).
407
+ *
408
+ * Substrate invariants beyond edge integrity are enforced generically from
409
+ * `config.invariants[]` per the `requires-edge` class — no invariant vocabulary
410
+ * (block kind / status / relation_type / direction) lives in source (DEC-0025).
411
+ * The canonical pi-context conception declares two invariants as config DATA:
412
+ * `completed-task-has-verification` and `decision-cites-forcing-artifact`; a
413
+ * project ships only the invariants its own conception requires.
414
+ */
415
+ export declare function validateContext(cwd: string): ContextValidationResult;
416
+ export interface CompleteTaskResult {
417
+ taskId: string;
418
+ verificationId: string;
419
+ verificationStatus: string;
420
+ previousStatus: string;
421
+ }
422
+ /**
423
+ * Gate task completion on verification. Reads the verification block to confirm
424
+ * a passing verification entry exists targeting this task, then atomically
425
+ * updates the task status to "completed" with the verification cross-reference.
426
+ */
427
+ export declare function completeTask(cwd: string, taskId: string, verificationId: string): CompleteTaskResult;
428
+ //# sourceMappingURL=context-sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-sdk.d.ts","sourceRoot":"","sources":["../src/context-sdk.ts"],"names":[],"mappings":"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"}