planfs-core 1.3.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -0
- package/dist/entity-content.d.ts +6 -0
- package/dist/entity-content.d.ts.map +1 -0
- package/dist/entity-content.js +94 -0
- package/dist/entity-content.js.map +1 -0
- package/dist/entity-factory.d.ts +13 -0
- package/dist/entity-factory.d.ts.map +1 -0
- package/dist/entity-factory.js +109 -0
- package/dist/entity-factory.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/repository.d.ts +3 -31
- package/dist/repository.d.ts.map +1 -1
- package/dist/repository.js +14 -204
- package/dist/repository.js.map +1 -1
- package/dist/semantic-analyzer.d.ts +50 -0
- package/dist/semantic-analyzer.d.ts.map +1 -0
- package/dist/semantic-analyzer.js +315 -0
- package/dist/semantic-analyzer.js.map +1 -0
- package/dist/semantic-context.d.ts +67 -0
- package/dist/semantic-context.d.ts.map +1 -0
- package/dist/semantic-context.js +109 -0
- package/dist/semantic-context.js.map +1 -0
- package/dist/semantic-formatter.d.ts +52 -0
- package/dist/semantic-formatter.d.ts.map +1 -0
- package/dist/semantic-formatter.js +354 -0
- package/dist/semantic-formatter.js.map +1 -0
- package/dist/semantic-inspection.d.ts +119 -0
- package/dist/semantic-inspection.d.ts.map +1 -0
- package/dist/semantic-inspection.js +295 -0
- package/dist/semantic-inspection.js.map +1 -0
- package/dist/semantic-profiles.d.ts +5 -0
- package/dist/semantic-profiles.d.ts.map +1 -0
- package/dist/semantic-profiles.js +70 -0
- package/dist/semantic-profiles.js.map +1 -0
- package/dist/semantic-types.d.ts +199 -0
- package/dist/semantic-types.d.ts.map +1 -0
- package/dist/semantic-types.js +3 -0
- package/dist/semantic-types.js.map +1 -0
- package/dist/semantic-validator.d.ts +46 -0
- package/dist/semantic-validator.d.ts.map +1 -0
- package/dist/semantic-validator.js +313 -0
- package/dist/semantic-validator.js.map +1 -0
- package/dist/semantic.d.ts +4 -0
- package/dist/semantic.d.ts.map +1 -0
- package/dist/semantic.js +641 -0
- package/dist/semantic.js.map +1 -0
- package/dist/task-update.d.ts +2 -2
- package/dist/task-update.d.ts.map +1 -1
- package/dist/task-update.js +9 -0
- package/dist/task-update.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LocalRuleSemanticAnalyzer = exports.LOCAL_RULE_ANALYZER_IDENTITY = void 0;
|
|
4
|
+
exports.runSemanticAnalysis = runSemanticAnalysis;
|
|
5
|
+
exports.LOCAL_RULE_ANALYZER_IDENTITY = Object.freeze({
|
|
6
|
+
id: 'planfs-local-english-rules',
|
|
7
|
+
version: '1.0.0'
|
|
8
|
+
});
|
|
9
|
+
const DEFAULT_CACHE_SIZE = 256;
|
|
10
|
+
const SUPPORTED_LANGUAGES = ['en'];
|
|
11
|
+
/**
|
|
12
|
+
* Local advisory prose analyzer containing only signals promoted by TASK-118.
|
|
13
|
+
* It never changes the semantic document or authoritative entity metadata.
|
|
14
|
+
*/
|
|
15
|
+
class LocalRuleSemanticAnalyzer {
|
|
16
|
+
constructor(options = {}) {
|
|
17
|
+
this.identity = exports.LOCAL_RULE_ANALYZER_IDENTITY;
|
|
18
|
+
this.supportedLanguages = SUPPORTED_LANGUAGES;
|
|
19
|
+
this.cache = new Map();
|
|
20
|
+
this.hits = 0;
|
|
21
|
+
this.misses = 0;
|
|
22
|
+
this.evictions = 0;
|
|
23
|
+
const requestedCapacity = options.cacheSize ?? DEFAULT_CACHE_SIZE;
|
|
24
|
+
if (!Number.isSafeInteger(requestedCapacity) || requestedCapacity < 0) {
|
|
25
|
+
throw new Error('cacheSize must be a non-negative safe integer');
|
|
26
|
+
}
|
|
27
|
+
this.capacity = requestedCapacity;
|
|
28
|
+
}
|
|
29
|
+
get cacheStats() {
|
|
30
|
+
return {
|
|
31
|
+
size: this.cache.size,
|
|
32
|
+
capacity: this.capacity,
|
|
33
|
+
hits: this.hits,
|
|
34
|
+
misses: this.misses,
|
|
35
|
+
evictions: this.evictions
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
clearCache() {
|
|
39
|
+
this.cache.clear();
|
|
40
|
+
}
|
|
41
|
+
async analyze(request) {
|
|
42
|
+
const language = normalizeLanguage(request.language);
|
|
43
|
+
if (!this.supportedLanguages.includes(language)) {
|
|
44
|
+
return {
|
|
45
|
+
analyzer: { ...this.identity },
|
|
46
|
+
language,
|
|
47
|
+
signals: [],
|
|
48
|
+
diagnostics: [unsupportedLanguageDiagnostic(this.identity, language)]
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const key = createCacheKey(request.document, language, this.identity);
|
|
52
|
+
const cached = this.cache.get(key);
|
|
53
|
+
if (cached) {
|
|
54
|
+
this.hits += 1;
|
|
55
|
+
this.cache.delete(key);
|
|
56
|
+
this.cache.set(key, cached);
|
|
57
|
+
return cloneAnalyzerResult(cached.value);
|
|
58
|
+
}
|
|
59
|
+
this.misses += 1;
|
|
60
|
+
const result = {
|
|
61
|
+
analyzer: { ...this.identity },
|
|
62
|
+
language,
|
|
63
|
+
signals: request.document.criteria
|
|
64
|
+
.flatMap(criterion => analyzeCriterion(request.document, criterion, language))
|
|
65
|
+
.sort(compareSignals),
|
|
66
|
+
diagnostics: []
|
|
67
|
+
};
|
|
68
|
+
if (this.capacity > 0) {
|
|
69
|
+
this.cache.set(key, { key, value: cloneAnalyzerResult(result) });
|
|
70
|
+
if (this.cache.size > this.capacity) {
|
|
71
|
+
const oldestKey = this.cache.keys().next().value;
|
|
72
|
+
if (oldestKey !== undefined)
|
|
73
|
+
this.cache.delete(oldestKey);
|
|
74
|
+
this.evictions += 1;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return cloneAnalyzerResult(result);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.LocalRuleSemanticAnalyzer = LocalRuleSemanticAnalyzer;
|
|
81
|
+
const defaultAnalyzer = new LocalRuleSemanticAnalyzer();
|
|
82
|
+
/**
|
|
83
|
+
* Explicit opt-in helper. A disabled request returns null and performs no analysis.
|
|
84
|
+
* Analyzer failures are converted into bounded advisory diagnostics.
|
|
85
|
+
*/
|
|
86
|
+
async function runSemanticAnalysis(document, options = {}) {
|
|
87
|
+
if (options.enabled !== true)
|
|
88
|
+
return null;
|
|
89
|
+
const analyzer = options.analyzer ?? defaultAnalyzer;
|
|
90
|
+
const language = normalizeLanguage(options.language ?? 'en');
|
|
91
|
+
try {
|
|
92
|
+
return await analyzer.analyze({ document, language });
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
return {
|
|
96
|
+
analyzer: { ...analyzer.identity },
|
|
97
|
+
language,
|
|
98
|
+
signals: [],
|
|
99
|
+
diagnostics: [analyzerFailureDiagnostic(analyzer.identity, error)]
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function analyzeCriterion(document, criterion, language) {
|
|
104
|
+
let eligible = maskIneligibleMarkdown(criterion.markdown);
|
|
105
|
+
for (const child of document.criteria.filter(candidate => candidate.parentCriterionId === criterion.id)) {
|
|
106
|
+
const start = child.range.start.offset - criterion.range.start.offset;
|
|
107
|
+
const end = child.range.end.offset - criterion.range.start.offset;
|
|
108
|
+
eligible = maskRange(eligible, start, end);
|
|
109
|
+
}
|
|
110
|
+
const matches = [];
|
|
111
|
+
collect(matches, eligible, /\b(must|should|may)\b/gi, 'modality', 0.98, 'exact-modal-token');
|
|
112
|
+
collect(matches, eligible, /\b(not|never|no|without)\b/gi, 'negation', 0.98, 'exact-negation-token');
|
|
113
|
+
collect(matches, eligible, /\b(if|when|unless|until|after|before|once)\b/gi, 'condition', 0.95, 'bounded-condition-introducer');
|
|
114
|
+
collect(matches, eligible, /\b(?:\d+(?:\.\d+)?\s*(?:ms|milliseconds?|seconds?|minutes?|hours?|days?)|per second|tomorrow|\d{4}-\d{2}-\d{2})\b/gi, 'date-duration', 0.95, 'explicit-date-or-duration');
|
|
115
|
+
collectRelationships(matches, eligible);
|
|
116
|
+
return deduplicateMatches(matches).map(match => toSignal(document, criterion, match, language));
|
|
117
|
+
}
|
|
118
|
+
function collectRelationships(matches, eligible) {
|
|
119
|
+
const entities = [...eligible.matchAll(/\b(?:TASK-[0-9]{3,}|EPIC-[A-Za-z0-9-]+|MILESTONE-[A-Za-z0-9-]+|DECISION-[A-Za-z0-9-]+)\b/g)];
|
|
120
|
+
const phrases = [...eligible.matchAll(/\b(?:after|before|block(?:s|ed by)?|depend(?:s|ed)? on|belongs under|parent)\b/gi)];
|
|
121
|
+
if (entities.length === 0 || phrases.length === 0)
|
|
122
|
+
return;
|
|
123
|
+
for (const entity of entities) {
|
|
124
|
+
const phrase = nearestMatch(entity, phrases);
|
|
125
|
+
const entityStart = entity.index ?? 0;
|
|
126
|
+
const phraseStart = phrase.index ?? 0;
|
|
127
|
+
const entityEnd = entityStart + entity[0].length;
|
|
128
|
+
const phraseEnd = phraseStart + phrase[0].length;
|
|
129
|
+
const gapStart = Math.min(entityEnd, phraseEnd);
|
|
130
|
+
const gapEnd = Math.max(entityStart, phraseStart);
|
|
131
|
+
const gap = eligible.slice(gapStart, gapEnd);
|
|
132
|
+
if (gap.length > 80 || /[.!?\n]/.test(gap))
|
|
133
|
+
continue;
|
|
134
|
+
matches.push({
|
|
135
|
+
kind: 'relationship-mention',
|
|
136
|
+
start: Math.min(entityStart, phraseStart),
|
|
137
|
+
end: Math.max(entityEnd, phraseEnd),
|
|
138
|
+
confidence: 0.90,
|
|
139
|
+
basis: 'exact-planfs-id-with-bounded-relationship-phrase',
|
|
140
|
+
evidence: [
|
|
141
|
+
{ start: phraseStart, end: phraseEnd },
|
|
142
|
+
{ start: entityStart, end: entityEnd }
|
|
143
|
+
],
|
|
144
|
+
data: {
|
|
145
|
+
targetId: entity[0],
|
|
146
|
+
relationshipPhrase: phrase[0].toLowerCase()
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function maskIneligibleMarkdown(markdown) {
|
|
152
|
+
let value = markdown;
|
|
153
|
+
const patterns = [
|
|
154
|
+
/(^|\n)[ \t]*(```+|~~~+)[^\n]*(?:\n[\s\S]*?(?:\n[ \t]*\2[^\n]*)?(?=\n|$)|$)/g,
|
|
155
|
+
/`+[^`\n]*`+/g,
|
|
156
|
+
/<!--[\s\S]*?-->/g,
|
|
157
|
+
/<([A-Za-z][A-Za-z0-9-]*)\b[^>]*>[\s\S]*?<\/\1\s*>/g,
|
|
158
|
+
/<https?:\/\/[^>]+>/gi,
|
|
159
|
+
/<[^>]*>/g,
|
|
160
|
+
/\]\([^)]*\)/g,
|
|
161
|
+
/https?:\/\/[^\s)>]+/gi,
|
|
162
|
+
/(^|\n)[ \t]*(?:[-+*]|\d+[.)])[ \t]+(?:\[[ xX]\][ \t]+)?/g
|
|
163
|
+
];
|
|
164
|
+
for (const pattern of patterns) {
|
|
165
|
+
value = value.replace(pattern, matched => ' '.repeat(matched.length));
|
|
166
|
+
}
|
|
167
|
+
return value.replace(/[_*~>#]/g, ' ').replace(/\[/g, ' ').replace(/\]/g, ' ');
|
|
168
|
+
}
|
|
169
|
+
function maskRange(value, start, end) {
|
|
170
|
+
const safeStart = Math.max(0, Math.min(value.length, start));
|
|
171
|
+
const safeEnd = Math.max(safeStart, Math.min(value.length, end));
|
|
172
|
+
return `${value.slice(0, safeStart)}${' '.repeat(safeEnd - safeStart)}${value.slice(safeEnd)}`;
|
|
173
|
+
}
|
|
174
|
+
function collect(target, text, pattern, kind, confidence, basis) {
|
|
175
|
+
for (const match of text.matchAll(pattern)) {
|
|
176
|
+
const start = match.index ?? 0;
|
|
177
|
+
target.push({
|
|
178
|
+
kind,
|
|
179
|
+
start,
|
|
180
|
+
end: start + match[0].length,
|
|
181
|
+
confidence,
|
|
182
|
+
basis,
|
|
183
|
+
evidence: [{ start, end: start + match[0].length }]
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function nearestMatch(target, matches) {
|
|
188
|
+
const targetIndex = target.index ?? 0;
|
|
189
|
+
return matches.reduce((nearest, candidate) => (Math.abs((candidate.index ?? 0) - targetIndex) < Math.abs((nearest.index ?? 0) - targetIndex)
|
|
190
|
+
? candidate
|
|
191
|
+
: nearest));
|
|
192
|
+
}
|
|
193
|
+
function deduplicateMatches(matches) {
|
|
194
|
+
const seen = new Set();
|
|
195
|
+
return matches.filter(match => {
|
|
196
|
+
const key = `${match.kind}:${match.start}:${match.end}`;
|
|
197
|
+
if (seen.has(key))
|
|
198
|
+
return false;
|
|
199
|
+
seen.add(key);
|
|
200
|
+
return true;
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
function toSignal(document, criterion, match, language) {
|
|
204
|
+
const criterionStart = criterion.range.start.offset;
|
|
205
|
+
const range = sourceRange(document.source.rawMarkdown, criterionStart + match.start, criterionStart + match.end);
|
|
206
|
+
const evidence = match.evidence.map(item => {
|
|
207
|
+
const evidenceRange = sourceRange(document.source.rawMarkdown, criterionStart + item.start, criterionStart + item.end);
|
|
208
|
+
return {
|
|
209
|
+
text: document.source.rawMarkdown.slice(evidenceRange.start.offset, evidenceRange.end.offset),
|
|
210
|
+
range: evidenceRange
|
|
211
|
+
};
|
|
212
|
+
});
|
|
213
|
+
return {
|
|
214
|
+
kind: match.kind,
|
|
215
|
+
message: messageFor(match.kind, evidence.map(item => item.text)),
|
|
216
|
+
language,
|
|
217
|
+
analyzer: { ...exports.LOCAL_RULE_ANALYZER_IDENTITY },
|
|
218
|
+
provenance: 'nlp-inferred',
|
|
219
|
+
range,
|
|
220
|
+
evidence,
|
|
221
|
+
confidence: match.confidence,
|
|
222
|
+
authoritative: false,
|
|
223
|
+
data: {
|
|
224
|
+
criterionId: criterion.id,
|
|
225
|
+
evidenceBasis: match.basis,
|
|
226
|
+
...match.data
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
function messageFor(kind, evidence) {
|
|
231
|
+
switch (kind) {
|
|
232
|
+
case 'modality':
|
|
233
|
+
return `Modal wording detected: ${evidence[0] ?? ''}`;
|
|
234
|
+
case 'negation':
|
|
235
|
+
return `Negation detected: ${evidence[0] ?? ''}`;
|
|
236
|
+
case 'condition':
|
|
237
|
+
return `Conditional wording detected: ${evidence[0] ?? ''}`;
|
|
238
|
+
case 'date-duration':
|
|
239
|
+
return `Date or duration wording detected: ${evidence[0] ?? ''}`;
|
|
240
|
+
case 'relationship-mention':
|
|
241
|
+
return `Possible planning relationship mentioned in prose: ${evidence[1] ?? evidence[0] ?? ''}`;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
function sourceRange(source, start, end) {
|
|
245
|
+
return { start: sourcePoint(source, start), end: sourcePoint(source, end) };
|
|
246
|
+
}
|
|
247
|
+
function sourcePoint(source, offset) {
|
|
248
|
+
const before = source.slice(0, offset);
|
|
249
|
+
const lastNewline = before.lastIndexOf('\n');
|
|
250
|
+
let line = 1;
|
|
251
|
+
for (let index = 0; index < before.length; index += 1) {
|
|
252
|
+
if (before.charCodeAt(index) === 10)
|
|
253
|
+
line += 1;
|
|
254
|
+
}
|
|
255
|
+
return {
|
|
256
|
+
offset,
|
|
257
|
+
line,
|
|
258
|
+
column: offset - lastNewline
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
function compareSignals(left, right) {
|
|
262
|
+
return left.range.start.offset - right.range.start.offset || left.kind.localeCompare(right.kind);
|
|
263
|
+
}
|
|
264
|
+
function createCacheKey(document, language, identity) {
|
|
265
|
+
return [
|
|
266
|
+
identity.id,
|
|
267
|
+
identity.version,
|
|
268
|
+
language,
|
|
269
|
+
document.profile.entityType,
|
|
270
|
+
document.profile.version,
|
|
271
|
+
document.source.rawMarkdown
|
|
272
|
+
].join('\0');
|
|
273
|
+
}
|
|
274
|
+
function normalizeLanguage(language) {
|
|
275
|
+
return language.trim().toLowerCase().split('-')[0] ?? '';
|
|
276
|
+
}
|
|
277
|
+
function unsupportedLanguageDiagnostic(identity, language) {
|
|
278
|
+
return {
|
|
279
|
+
code: 'analysis.language.unsupported',
|
|
280
|
+
severity: 'info',
|
|
281
|
+
message: `Analyzer ${identity.id} does not support language: ${language || '(empty)'}`,
|
|
282
|
+
range: null,
|
|
283
|
+
sectionIndex: null,
|
|
284
|
+
provenance: 'nlp-inferred',
|
|
285
|
+
conformance: 'analysis',
|
|
286
|
+
repair: {
|
|
287
|
+
summary: 'Disable advisory analysis or select a supported language',
|
|
288
|
+
kind: 'none',
|
|
289
|
+
previewable: false
|
|
290
|
+
},
|
|
291
|
+
data: { language }
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
function analyzerFailureDiagnostic(identity, error) {
|
|
295
|
+
const errorName = error instanceof Error && error.name ? error.name : 'Error';
|
|
296
|
+
return {
|
|
297
|
+
code: 'analysis.analyzer.unavailable',
|
|
298
|
+
severity: 'warning',
|
|
299
|
+
message: `Advisory analyzer ${identity.id} could not run locally.`,
|
|
300
|
+
range: null,
|
|
301
|
+
sectionIndex: null,
|
|
302
|
+
provenance: 'nlp-inferred',
|
|
303
|
+
conformance: 'analysis',
|
|
304
|
+
repair: {
|
|
305
|
+
summary: 'Retry without advisory analysis or check the local analyzer configuration',
|
|
306
|
+
kind: 'none',
|
|
307
|
+
previewable: false
|
|
308
|
+
},
|
|
309
|
+
data: { analyzerId: identity.id, analyzerVersion: identity.version, errorName }
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
function cloneAnalyzerResult(result) {
|
|
313
|
+
return JSON.parse(JSON.stringify(result));
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=semantic-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-analyzer.js","sourceRoot":"","sources":["../src/semantic-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/** Compact semantic planning context shared by agent and human workflows. */
|
|
2
|
+
import { TaskReadinessResult } from './next-work';
|
|
3
|
+
import { SemanticAdvisoryConclusion, SemanticInspectionOptions } from './semantic-inspection';
|
|
4
|
+
import { EntityMention, AnalyzerResult, SemanticCriterion, SemanticDecisionStatement, SemanticDiagnostic, SemanticFinding, SemanticQuestion, SemanticReference, SemanticProvenance, SourceRange } from './semantic-types';
|
|
5
|
+
import { Entity, Repository } from './types';
|
|
6
|
+
export type SemanticPlanningContextVersion = '1.0.0';
|
|
7
|
+
export type SemanticPlanningContextOptions = SemanticInspectionOptions;
|
|
8
|
+
export interface PlanningContextEntity {
|
|
9
|
+
id: string;
|
|
10
|
+
type: Entity['type'];
|
|
11
|
+
title: string;
|
|
12
|
+
status: Entity['status'];
|
|
13
|
+
filePath: string;
|
|
14
|
+
archived: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface PlanningContextText {
|
|
17
|
+
heading: string;
|
|
18
|
+
text: string;
|
|
19
|
+
markdown: string;
|
|
20
|
+
provenance: Exclude<SemanticProvenance, 'nlp-inferred'>;
|
|
21
|
+
range: SourceRange;
|
|
22
|
+
}
|
|
23
|
+
export interface PlanningContextReference {
|
|
24
|
+
id: string;
|
|
25
|
+
entity: PlanningContextEntity | null;
|
|
26
|
+
authoritative: true;
|
|
27
|
+
}
|
|
28
|
+
export interface PlanningContextRelationships {
|
|
29
|
+
dependsOn: PlanningContextReference[];
|
|
30
|
+
epic: PlanningContextReference | null;
|
|
31
|
+
milestone: PlanningContextReference | null;
|
|
32
|
+
supersedes: PlanningContextReference | null;
|
|
33
|
+
supersededBy: PlanningContextReference | null;
|
|
34
|
+
}
|
|
35
|
+
export interface PlanningContextReadiness extends TaskReadinessResult {
|
|
36
|
+
reasons: string[];
|
|
37
|
+
}
|
|
38
|
+
export interface SemanticPlanningContext {
|
|
39
|
+
contextVersion: SemanticPlanningContextVersion;
|
|
40
|
+
entity: PlanningContextEntity;
|
|
41
|
+
intent: {
|
|
42
|
+
text: string;
|
|
43
|
+
markdown: string;
|
|
44
|
+
range: SourceRange;
|
|
45
|
+
};
|
|
46
|
+
sections: Record<string, PlanningContextText[]>;
|
|
47
|
+
acceptanceCriteria: SemanticCriterion[];
|
|
48
|
+
findings: SemanticFinding[];
|
|
49
|
+
decisions: SemanticDecisionStatement[];
|
|
50
|
+
questions: SemanticQuestion[];
|
|
51
|
+
references: SemanticReference[];
|
|
52
|
+
relationships: PlanningContextRelationships;
|
|
53
|
+
readiness: PlanningContextReadiness | null;
|
|
54
|
+
advisory: {
|
|
55
|
+
enabled: boolean;
|
|
56
|
+
mentions: EntityMention[];
|
|
57
|
+
conclusions: SemanticAdvisoryConclusion[];
|
|
58
|
+
analysis: AnalyzerResult | null;
|
|
59
|
+
};
|
|
60
|
+
diagnostics: SemanticDiagnostic[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Project one entity into bounded, traceable planning context. Frontmatter
|
|
64
|
+
* relationships remain authoritative; body interpretation stays read-only.
|
|
65
|
+
*/
|
|
66
|
+
export declare function buildSemanticPlanningContext(repository: Repository, entityId: string, options?: SemanticPlanningContextOptions): Promise<SemanticPlanningContext>;
|
|
67
|
+
//# sourceMappingURL=semantic-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-context.d.ts","sourceRoot":"","sources":["../src/semantic-context.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO,EAAqC,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAEL,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAQ,MAAM,SAAS,CAAC;AAEnD,MAAM,MAAM,8BAA8B,GAAG,OAAO,CAAC;AAErD,MAAM,MAAM,8BAA8B,GAAG,yBAAyB,CAAC;AAEvE,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IACxD,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACrC,aAAa,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,IAAI,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC3C,UAAU,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC5C,YAAY,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,8BAA8B,CAAC;IAC/C,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,WAAW,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAChD,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,SAAS,EAAE,yBAAyB,EAAE,CAAC;IACvC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,aAAa,EAAE,4BAA4B,CAAC;IAC5C,SAAS,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC3C,QAAQ,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,aAAa,EAAE,CAAC;QAC1B,WAAW,EAAE,0BAA0B,EAAE,CAAC;QAC1C,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;KACjC,CAAC;IACF,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,uBAAuB,CAAC,CAgElC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** Compact semantic planning context shared by agent and human workflows. */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.buildSemanticPlanningContext = buildSemanticPlanningContext;
|
|
5
|
+
const next_work_1 = require("./next-work");
|
|
6
|
+
const repository_1 = require("./repository");
|
|
7
|
+
const semantic_inspection_1 = require("./semantic-inspection");
|
|
8
|
+
/**
|
|
9
|
+
* Project one entity into bounded, traceable planning context. Frontmatter
|
|
10
|
+
* relationships remain authoritative; body interpretation stays read-only.
|
|
11
|
+
*/
|
|
12
|
+
async function buildSemanticPlanningContext(repository, entityId, options = {}) {
|
|
13
|
+
const entities = (0, repository_1.getAllEntities)(repository, { includeArchived: true });
|
|
14
|
+
const entity = entities.find(candidate => candidate.id === entityId);
|
|
15
|
+
if (!entity) {
|
|
16
|
+
throw new Error(`Entity not found: ${entityId}`);
|
|
17
|
+
}
|
|
18
|
+
const inspection = await (0, semantic_inspection_1.inspectSemanticEntity)(entity, {
|
|
19
|
+
tier: options.tier ?? 'automation-ready',
|
|
20
|
+
lifecycle: options.lifecycle,
|
|
21
|
+
criterionCheckState: options.criterionCheckState,
|
|
22
|
+
analysis: options.analysis === true,
|
|
23
|
+
language: options.language,
|
|
24
|
+
analyzer: options.analyzer
|
|
25
|
+
});
|
|
26
|
+
const entityIndex = new Map(entities.map(candidate => [candidate.id, candidate]));
|
|
27
|
+
const relationship = (id) => {
|
|
28
|
+
if (!id)
|
|
29
|
+
return null;
|
|
30
|
+
const resolved = entityIndex.get(id);
|
|
31
|
+
return {
|
|
32
|
+
id,
|
|
33
|
+
entity: resolved ? toContextEntity(resolved) : null,
|
|
34
|
+
authoritative: true
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
const requiredRelationship = (id) => {
|
|
38
|
+
const resolved = relationship(id);
|
|
39
|
+
if (!resolved)
|
|
40
|
+
throw new Error('Relationship ID must not be empty');
|
|
41
|
+
return resolved;
|
|
42
|
+
};
|
|
43
|
+
const readiness = entity.type === 'task'
|
|
44
|
+
? taskReadiness(entity, repository)
|
|
45
|
+
: null;
|
|
46
|
+
return {
|
|
47
|
+
contextVersion: '1.0.0',
|
|
48
|
+
entity: toContextEntity(entity),
|
|
49
|
+
intent: {
|
|
50
|
+
text: inspection.semantic.preamble.text,
|
|
51
|
+
markdown: inspection.semantic.preamble.markdown,
|
|
52
|
+
range: inspection.semantic.preamble.range
|
|
53
|
+
},
|
|
54
|
+
sections: compactSections(inspection.semantic.sections),
|
|
55
|
+
acceptanceCriteria: inspection.semantic.criteria,
|
|
56
|
+
findings: inspection.semantic.findings,
|
|
57
|
+
decisions: inspection.semantic.decisions,
|
|
58
|
+
questions: inspection.semantic.questions,
|
|
59
|
+
references: inspection.semantic.references,
|
|
60
|
+
relationships: {
|
|
61
|
+
dependsOn: inspection.authoritative.relationships.dependsOn.map(requiredRelationship),
|
|
62
|
+
epic: relationship(inspection.authoritative.relationships.epic),
|
|
63
|
+
milestone: relationship(inspection.authoritative.relationships.milestone),
|
|
64
|
+
supersedes: relationship(inspection.authoritative.relationships.supersedes),
|
|
65
|
+
supersededBy: relationship(inspection.authoritative.relationships.supersededBy)
|
|
66
|
+
},
|
|
67
|
+
readiness,
|
|
68
|
+
advisory: {
|
|
69
|
+
enabled: inspection.analysis !== null,
|
|
70
|
+
mentions: inspection.advisory.mentions,
|
|
71
|
+
conclusions: inspection.advisory.conclusions,
|
|
72
|
+
analysis: inspection.analysis
|
|
73
|
+
},
|
|
74
|
+
diagnostics: inspection.diagnostics
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function compactSections(sections) {
|
|
78
|
+
var _a;
|
|
79
|
+
const result = {};
|
|
80
|
+
for (const section of sections) {
|
|
81
|
+
if (!section.key)
|
|
82
|
+
continue;
|
|
83
|
+
(result[_a = section.key] ?? (result[_a] = [])).push({
|
|
84
|
+
heading: section.heading,
|
|
85
|
+
text: section.text,
|
|
86
|
+
markdown: section.contentMarkdown,
|
|
87
|
+
provenance: section.provenance,
|
|
88
|
+
range: section.contentRange
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
function taskReadiness(task, repository) {
|
|
94
|
+
return {
|
|
95
|
+
...(0, next_work_1.getTaskReadiness)(task, repository),
|
|
96
|
+
reasons: (0, next_work_1.explainNextWork)(task, repository)
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function toContextEntity(entity) {
|
|
100
|
+
return {
|
|
101
|
+
id: entity.id,
|
|
102
|
+
type: entity.type,
|
|
103
|
+
title: entity.title,
|
|
104
|
+
status: entity.status,
|
|
105
|
+
filePath: entity.filePath,
|
|
106
|
+
archived: Boolean(entity.archive)
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=semantic-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-context.js","sourceRoot":"","sources":["../src/semantic-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { SourceRange } from './semantic-types';
|
|
2
|
+
import { Entity } from './types';
|
|
3
|
+
export declare const SEMANTIC_FORMAT_VERSION: "1.0.0";
|
|
4
|
+
export type SemanticFormatEditKind = 'canonicalize-heading' | 'canonicalize-task-marker' | 'add-task-marker';
|
|
5
|
+
export interface SemanticFormatEdit {
|
|
6
|
+
kind: SemanticFormatEditKind;
|
|
7
|
+
sectionKey: string;
|
|
8
|
+
range: SourceRange;
|
|
9
|
+
before: string;
|
|
10
|
+
after: string;
|
|
11
|
+
}
|
|
12
|
+
export interface SemanticFormatIssue {
|
|
13
|
+
code: string;
|
|
14
|
+
severity: 'info' | 'warning' | 'error';
|
|
15
|
+
message: string;
|
|
16
|
+
sectionKey: string | null;
|
|
17
|
+
range: SourceRange | null;
|
|
18
|
+
blocksApply: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface SemanticFormatEntityPreview {
|
|
21
|
+
formatVersion: typeof SEMANTIC_FORMAT_VERSION;
|
|
22
|
+
entityId: string;
|
|
23
|
+
entityType: Entity['type'];
|
|
24
|
+
filePath: string;
|
|
25
|
+
sourceFingerprint: string;
|
|
26
|
+
changed: boolean;
|
|
27
|
+
blocked: boolean;
|
|
28
|
+
edits: SemanticFormatEdit[];
|
|
29
|
+
issues: SemanticFormatIssue[];
|
|
30
|
+
diff: string;
|
|
31
|
+
formattedContent: string;
|
|
32
|
+
}
|
|
33
|
+
export interface SemanticFormatBatchPreview {
|
|
34
|
+
formatVersion: typeof SEMANTIC_FORMAT_VERSION;
|
|
35
|
+
entityIds: string[];
|
|
36
|
+
changedEntityIds: string[];
|
|
37
|
+
blockedEntityIds: string[];
|
|
38
|
+
expectedFingerprints: Record<string, string>;
|
|
39
|
+
previews: SemanticFormatEntityPreview[];
|
|
40
|
+
}
|
|
41
|
+
export interface SemanticFormatApplyResult extends SemanticFormatBatchPreview {
|
|
42
|
+
appliedEntityIds: string[];
|
|
43
|
+
}
|
|
44
|
+
/** Preview deterministic Markdown-only normalization for a bounded entity list. */
|
|
45
|
+
export declare function previewSemanticFormats(rootPath: string, entityIds: readonly string[]): Promise<SemanticFormatBatchPreview>;
|
|
46
|
+
/**
|
|
47
|
+
* Apply exactly the previously previewed source snapshots. Every proposed
|
|
48
|
+
* result is validated before the first bounded write occurs.
|
|
49
|
+
*/
|
|
50
|
+
export declare function applySemanticFormats(rootPath: string, entityIds: readonly string[], expectedFingerprints: Readonly<Record<string, string>>): Promise<SemanticFormatApplyResult>;
|
|
51
|
+
export declare function previewSemanticEntityFormat(entity: Entity, sourceContent: string, rootPath?: string): SemanticFormatEntityPreview;
|
|
52
|
+
//# sourceMappingURL=semantic-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-formatter.d.ts","sourceRoot":"","sources":["../src/semantic-formatter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAkB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,MAAM,EAAc,MAAM,SAAS,CAAC;AAE7C,eAAO,MAAM,uBAAuB,EAAG,OAAgB,CAAC;AAExD,MAAM,MAAM,sBAAsB,GAC9B,sBAAsB,GACtB,0BAA0B,GAC1B,iBAAiB,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,OAAO,uBAAuB,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,OAAO,uBAAuB,CAAC;IAC9C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,QAAQ,EAAE,2BAA2B,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,yBAA0B,SAAQ,0BAA0B;IAC3E,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAOD,mFAAmF;AACnF,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,OAAO,CAAC,0BAA0B,CAAC,CAOrC;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACrD,OAAO,CAAC,yBAAyB,CAAC,CA2DpC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,QAAQ,SAAK,GACZ,2BAA2B,CA6H7B"}
|