@codeledger/selector 0.2.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle-invalidation.d.ts +33 -0
- package/dist/bundle-invalidation.d.ts.map +1 -0
- package/dist/bundle-invalidation.js +98 -0
- package/dist/bundle-invalidation.js.map +1 -0
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +16 -4
- package/dist/bundle.js.map +1 -1
- package/dist/candidates.d.ts +18 -0
- package/dist/candidates.d.ts.map +1 -1
- package/dist/candidates.js +76 -2
- package/dist/candidates.js.map +1 -1
- package/dist/confidence.d.ts +2 -2
- package/dist/confidence.d.ts.map +1 -1
- package/dist/confidence.js +118 -2
- package/dist/confidence.js.map +1 -1
- package/dist/conflict-zones.d.ts +18 -0
- package/dist/conflict-zones.d.ts.map +1 -0
- package/dist/conflict-zones.js +66 -0
- package/dist/conflict-zones.js.map +1 -0
- package/dist/debt-detection.d.ts +15 -0
- package/dist/debt-detection.d.ts.map +1 -0
- package/dist/debt-detection.js +80 -0
- package/dist/debt-detection.js.map +1 -0
- package/dist/index.d.ts +18 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/intent/drift.d.ts +31 -0
- package/dist/intent/drift.d.ts.map +1 -0
- package/dist/intent/drift.js +120 -0
- package/dist/intent/drift.js.map +1 -0
- package/dist/intent/hash.d.ts +19 -0
- package/dist/intent/hash.d.ts.map +1 -0
- package/dist/intent/hash.js +38 -0
- package/dist/intent/hash.js.map +1 -0
- package/dist/intent/index.d.ts +5 -0
- package/dist/intent/index.d.ts.map +1 -0
- package/dist/intent/index.js +4 -0
- package/dist/intent/index.js.map +1 -0
- package/dist/intent/normalize.d.ts +23 -0
- package/dist/intent/normalize.d.ts.map +1 -0
- package/dist/intent/normalize.js +35 -0
- package/dist/intent/normalize.js.map +1 -0
- package/dist/intent/types.d.ts +37 -0
- package/dist/intent/types.d.ts.map +1 -0
- package/dist/intent/types.js +2 -0
- package/dist/intent/types.js.map +1 -0
- package/dist/knowledge-bundle.d.ts +41 -0
- package/dist/knowledge-bundle.d.ts.map +1 -0
- package/dist/knowledge-bundle.js +200 -0
- package/dist/knowledge-bundle.js.map +1 -0
- package/dist/knowledge-candidates.d.ts +27 -0
- package/dist/knowledge-candidates.d.ts.map +1 -0
- package/dist/knowledge-candidates.js +123 -0
- package/dist/knowledge-candidates.js.map +1 -0
- package/dist/knowledge-excerpt.d.ts +26 -0
- package/dist/knowledge-excerpt.d.ts.map +1 -0
- package/dist/knowledge-excerpt.js +179 -0
- package/dist/knowledge-excerpt.js.map +1 -0
- package/dist/knowledge-scorer.d.ts +33 -0
- package/dist/knowledge-scorer.d.ts.map +1 -0
- package/dist/knowledge-scorer.js +234 -0
- package/dist/knowledge-scorer.js.map +1 -0
- package/dist/loop-detection.d.ts +28 -0
- package/dist/loop-detection.d.ts.map +1 -0
- package/dist/loop-detection.js +124 -0
- package/dist/loop-detection.js.map +1 -0
- package/dist/mode-detect.d.ts +23 -0
- package/dist/mode-detect.d.ts.map +1 -0
- package/dist/mode-detect.js +76 -0
- package/dist/mode-detect.js.map +1 -0
- package/dist/scope-contract.d.ts +26 -0
- package/dist/scope-contract.d.ts.map +1 -0
- package/dist/scope-contract.js +79 -0
- package/dist/scope-contract.js.map +1 -0
- package/dist/scorer.d.ts.map +1 -1
- package/dist/scorer.js +21 -2
- package/dist/scorer.js.map +1 -1
- package/dist/security-surface.d.ts +13 -0
- package/dist/security-surface.d.ts.map +1 -0
- package/dist/security-surface.js +45 -0
- package/dist/security-surface.js.map +1 -0
- package/dist/task-type.d.ts.map +1 -1
- package/dist/task-type.js +4 -2
- package/dist/task-type.js.map +1 -1
- package/package.json +2 -2
package/dist/confidence.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confidence.js","sourceRoot":"","sources":["../src/confidence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"confidence.js","sourceRoot":"","sources":["../src/confidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ConflictZone, SessionId, SessionRecord } from '@codeledger/types';
|
|
2
|
+
/**
|
|
3
|
+
* Detect conflict zones between a new bundle and active sessions.
|
|
4
|
+
*
|
|
5
|
+
* A conflict zone is a file that appears in both the new bundle and
|
|
6
|
+
* another active session's bundle. This warns agents about concurrent
|
|
7
|
+
* edits that could cause merge conflicts.
|
|
8
|
+
*/
|
|
9
|
+
export declare function detectConflictZones(bundleFiles: string[], activeSessions: SessionRecord[], excludeSessionId: SessionId | null): ConflictZone[];
|
|
10
|
+
/**
|
|
11
|
+
* Count how many conflict zone files were actually touched during a session.
|
|
12
|
+
*/
|
|
13
|
+
export declare function countConflictZoneTouches(conflictZones: ConflictZone[], changedFiles: string[]): number;
|
|
14
|
+
/**
|
|
15
|
+
* Format conflict zones for the bundle markdown header.
|
|
16
|
+
*/
|
|
17
|
+
export declare function renderConflictZonesMarkdown(zones: ConflictZone[]): string;
|
|
18
|
+
//# sourceMappingURL=conflict-zones.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-zones.d.ts","sourceRoot":"","sources":["../src/conflict-zones.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EAAE,EACrB,cAAc,EAAE,aAAa,EAAE,EAC/B,gBAAgB,EAAE,SAAS,GAAG,IAAI,GACjC,YAAY,EAAE,CAoBhB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,YAAY,EAAE,EAC7B,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CA8BzE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect conflict zones between a new bundle and active sessions.
|
|
3
|
+
*
|
|
4
|
+
* A conflict zone is a file that appears in both the new bundle and
|
|
5
|
+
* another active session's bundle. This warns agents about concurrent
|
|
6
|
+
* edits that could cause merge conflicts.
|
|
7
|
+
*/
|
|
8
|
+
export function detectConflictZones(bundleFiles, activeSessions, excludeSessionId) {
|
|
9
|
+
const zones = [];
|
|
10
|
+
const bundleSet = new Set(bundleFiles);
|
|
11
|
+
for (const session of activeSessions) {
|
|
12
|
+
if (session.session_id === excludeSessionId)
|
|
13
|
+
continue;
|
|
14
|
+
if (session.status !== 'active')
|
|
15
|
+
continue;
|
|
16
|
+
for (const file of session.bundle_files) {
|
|
17
|
+
if (bundleSet.has(file)) {
|
|
18
|
+
zones.push({
|
|
19
|
+
file,
|
|
20
|
+
other_session: session.session_id,
|
|
21
|
+
other_task: session.task,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return zones;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Count how many conflict zone files were actually touched during a session.
|
|
30
|
+
*/
|
|
31
|
+
export function countConflictZoneTouches(conflictZones, changedFiles) {
|
|
32
|
+
const conflictFiles = new Set(conflictZones.map((z) => z.file));
|
|
33
|
+
return changedFiles.filter((f) => conflictFiles.has(f)).length;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Format conflict zones for the bundle markdown header.
|
|
37
|
+
*/
|
|
38
|
+
export function renderConflictZonesMarkdown(zones) {
|
|
39
|
+
if (zones.length === 0)
|
|
40
|
+
return '';
|
|
41
|
+
const lines = [];
|
|
42
|
+
lines.push('## Conflict Zones');
|
|
43
|
+
lines.push('');
|
|
44
|
+
lines.push('*These files are also being worked on by other active sessions. Concurrent edits may cause merge conflicts.*');
|
|
45
|
+
lines.push('');
|
|
46
|
+
// Group by session
|
|
47
|
+
const bySession = new Map();
|
|
48
|
+
for (const z of zones) {
|
|
49
|
+
const list = bySession.get(z.other_session) ?? [];
|
|
50
|
+
list.push(z);
|
|
51
|
+
bySession.set(z.other_session, list);
|
|
52
|
+
}
|
|
53
|
+
for (const [sessionId, sessionZones] of bySession) {
|
|
54
|
+
const task = sessionZones[0]?.other_task ?? 'unknown task';
|
|
55
|
+
lines.push(`**Session ${sessionId}** — "${task}":`);
|
|
56
|
+
for (const z of sessionZones.slice(0, 10)) {
|
|
57
|
+
lines.push(`- \`${z.file}\``);
|
|
58
|
+
}
|
|
59
|
+
if (sessionZones.length > 10) {
|
|
60
|
+
lines.push(`- ... and ${sessionZones.length - 10} more`);
|
|
61
|
+
}
|
|
62
|
+
lines.push('');
|
|
63
|
+
}
|
|
64
|
+
return lines.join('\n');
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=conflict-zones.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-zones.js","sourceRoot":"","sources":["../src/conflict-zones.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DebtWarning } from '@codeledger/types';
|
|
2
|
+
/**
|
|
3
|
+
* Scan diff lines for debt injection patterns.
|
|
4
|
+
* Only flags net-new additions (lines starting with '+').
|
|
5
|
+
*
|
|
6
|
+
* @param diffContent - Raw unified diff output
|
|
7
|
+
* @returns Array of debt warnings for newly introduced patterns
|
|
8
|
+
*/
|
|
9
|
+
export declare function scanDebtPatterns(diffContent: string): DebtWarning[];
|
|
10
|
+
/**
|
|
11
|
+
* Compute a debt score from 0.0 (no debt) to 1.0 (heavy debt injection).
|
|
12
|
+
* Score is based on the number of suppressions relative to diff size.
|
|
13
|
+
*/
|
|
14
|
+
export declare function computeDebtScore(warnings: DebtWarning[], diffLineCount: number): number;
|
|
15
|
+
//# sourceMappingURL=debt-detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debt-detection.d.ts","sourceRoot":"","sources":["../src/debt-detection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiBrD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,CAoDnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAKvF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/** Patterns that indicate technical debt injection by agents */
|
|
2
|
+
const DEBT_PATTERNS = [
|
|
3
|
+
{ pattern: /@Suppress\b/, message: '@Suppress annotation suppresses warnings instead of fixing them' },
|
|
4
|
+
{ pattern: /@SuppressWarnings\b/, message: '@SuppressWarnings hides compiler warnings instead of resolving them' },
|
|
5
|
+
{ pattern: /eslint-disable(?!-next-line)/, message: 'eslint-disable disables linting for entire block — prefer fixing the issue' },
|
|
6
|
+
{ pattern: /eslint-disable-next-line/, message: 'eslint-disable-next-line suppresses linting for this line' },
|
|
7
|
+
{ pattern: /@ts-ignore\b/, message: '@ts-ignore suppresses TypeScript errors — prefer @ts-expect-error or fixing the type' },
|
|
8
|
+
{ pattern: /@ts-expect-error\b/, message: '@ts-expect-error suppresses a TypeScript error' },
|
|
9
|
+
{ pattern: /:\s*any\b/, message: 'Explicit `any` type bypasses type safety' },
|
|
10
|
+
{ pattern: /as\s+any\b/, message: '`as any` assertion bypasses type safety' },
|
|
11
|
+
{ pattern: /\/\/\s*noinspection\b/, message: 'noinspection comment suppresses IDE warnings' },
|
|
12
|
+
{ pattern: /NOSONAR\b/, message: 'NOSONAR suppresses static analysis warnings' },
|
|
13
|
+
{ pattern: /--no-verify\b/, message: '--no-verify skips pre-commit hooks' },
|
|
14
|
+
];
|
|
15
|
+
/**
|
|
16
|
+
* Scan diff lines for debt injection patterns.
|
|
17
|
+
* Only flags net-new additions (lines starting with '+').
|
|
18
|
+
*
|
|
19
|
+
* @param diffContent - Raw unified diff output
|
|
20
|
+
* @returns Array of debt warnings for newly introduced patterns
|
|
21
|
+
*/
|
|
22
|
+
export function scanDebtPatterns(diffContent) {
|
|
23
|
+
const warnings = [];
|
|
24
|
+
const lines = diffContent.split('\n');
|
|
25
|
+
let currentFile = '';
|
|
26
|
+
let lineNumber = 0;
|
|
27
|
+
for (const line of lines) {
|
|
28
|
+
// Track current file from diff headers
|
|
29
|
+
const fileMatch = /^\+\+\+ b\/(.+)$/.exec(line);
|
|
30
|
+
if (fileMatch) {
|
|
31
|
+
currentFile = fileMatch[1];
|
|
32
|
+
lineNumber = 0;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
// Track line numbers from hunk headers
|
|
36
|
+
const hunkMatch = /^@@ -\d+(?:,\d+)? \+(\d+)/.exec(line);
|
|
37
|
+
if (hunkMatch) {
|
|
38
|
+
lineNumber = parseInt(hunkMatch[1], 10);
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
// Only check added lines (net-new debt)
|
|
42
|
+
if (line.startsWith('+') && !line.startsWith('+++')) {
|
|
43
|
+
const content = line.slice(1); // remove leading '+'
|
|
44
|
+
// Skip comment-only lines that are documentation
|
|
45
|
+
const trimmed = content.trim();
|
|
46
|
+
if (trimmed.startsWith('//') && !DEBT_PATTERNS.some((p) => p.pattern.test(trimmed))) {
|
|
47
|
+
lineNumber++;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
for (const { pattern, message } of DEBT_PATTERNS) {
|
|
51
|
+
if (pattern.test(content)) {
|
|
52
|
+
warnings.push({
|
|
53
|
+
file: currentFile,
|
|
54
|
+
line: lineNumber,
|
|
55
|
+
pattern: pattern.source,
|
|
56
|
+
message,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
lineNumber++;
|
|
61
|
+
}
|
|
62
|
+
else if (!line.startsWith('-')) {
|
|
63
|
+
// Context line — increment line number
|
|
64
|
+
lineNumber++;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return warnings;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Compute a debt score from 0.0 (no debt) to 1.0 (heavy debt injection).
|
|
71
|
+
* Score is based on the number of suppressions relative to diff size.
|
|
72
|
+
*/
|
|
73
|
+
export function computeDebtScore(warnings, diffLineCount) {
|
|
74
|
+
if (diffLineCount === 0 || warnings.length === 0)
|
|
75
|
+
return 0;
|
|
76
|
+
// 1 suppression per 10 lines of diff = 1.0 (maximum)
|
|
77
|
+
const ratio = warnings.length / (diffLineCount / 10);
|
|
78
|
+
return Math.min(1.0, Math.round(ratio * 100) / 100);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=debt-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debt-detection.js","sourceRoot":"","sources":["../src/debt-detection.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { generateCandidates, tokenizeTask, decomposeTask, computeTokenWeights } from './candidates.js';
|
|
1
|
+
export { generateCandidates, tokenizeTask, decomposeTask, computeTokenWeights, inferScope } from './candidates.js';
|
|
2
2
|
export type { CandidateResult } from './candidates.js';
|
|
3
3
|
export { computeFeatures, scoreFile, scoreAllCandidates, deriveReasons, gateTemporalFeatures } from './scorer.js';
|
|
4
4
|
export type { LedgerStats } from './scorer.js';
|
|
@@ -19,4 +19,21 @@ export { scanTodos, todoRelevanceScore } from './todo-scan.js';
|
|
|
19
19
|
export { estimateTokensCalibrated, estimateTokensByExtension } from './token-calibration.js';
|
|
20
20
|
export { getFileLayer, sortByLayer } from './layer-ordering.js';
|
|
21
21
|
export type { LayerRule } from './layer-ordering.js';
|
|
22
|
+
export { detectSecuritySurface, isSecurityTask } from './security-surface.js';
|
|
23
|
+
export { scanDebtPatterns, computeDebtScore } from './debt-detection.js';
|
|
24
|
+
export { detectStuckPatterns, buildActivityLogFromGit, DEFAULT_LOOP_THRESHOLDS } from './loop-detection.js';
|
|
25
|
+
export type { ActivityEntry } from './loop-detection.js';
|
|
26
|
+
export { deriveScopeContract, isInScope, detectScopeDrift, renderScopeContractMarkdown } from './scope-contract.js';
|
|
27
|
+
export { detectConflictZones, countConflictZoneTouches, renderConflictZonesMarkdown } from './conflict-zones.js';
|
|
28
|
+
export { detectAddressedFiles, parseCommittedFiles, renderInvalidationMarkdown } from './bundle-invalidation.js';
|
|
29
|
+
export { norm as intentNorm, normArr as intentNormArr, canonicalize, sha256 as intentSha256, intentHash, jaccardDistanceTokens, setDistance, computeDrift, recommendedAction, } from './intent/index.js';
|
|
30
|
+
export type { TaskContractV1, DriftLevel, DriftResult, DriftReason, IntentDriftEvent, } from './intent/index.js';
|
|
31
|
+
export { computeKnowledgeFeatures, scoreKnowledgeFile, deriveKnowledgeReasons, scoreAllKnowledgeCandidates, DEFAULT_KNOWLEDGE_WEIGHTS, } from './knowledge-scorer.js';
|
|
32
|
+
export { tokenizeIntent, computeKnowledgeTokenWeights, inferAnchorFolders, generateKnowledgeCandidates, } from './knowledge-candidates.js';
|
|
33
|
+
export { extractKnowledgeExcerpt } from './knowledge-excerpt.js';
|
|
34
|
+
export type { KnowledgeExcerptResult } from './knowledge-excerpt.js';
|
|
35
|
+
export { buildKnowledgeBundle, buildKnowledgeTrace } from './knowledge-bundle.js';
|
|
36
|
+
export type { KnowledgeBundleOptions } from './knowledge-bundle.js';
|
|
37
|
+
export { detectSelectionMode } from './mode-detect.js';
|
|
38
|
+
export type { ModeDetectionInput } from './mode-detect.js';
|
|
22
39
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { generateCandidates, tokenizeTask, decomposeTask, computeTokenWeights } from './candidates.js';
|
|
1
|
+
export { generateCandidates, tokenizeTask, decomposeTask, computeTokenWeights, inferScope } from './candidates.js';
|
|
2
2
|
export { computeFeatures, scoreFile, scoreAllCandidates, deriveReasons, gateTemporalFeatures } from './scorer.js';
|
|
3
3
|
export { shouldStop, estimateTokens } from './stop-rule.js';
|
|
4
4
|
export { extractExcerpt } from './excerpt.js';
|
|
@@ -14,4 +14,18 @@ export { inferTaskType, applyTaskTypeWeights } from './task-type.js';
|
|
|
14
14
|
export { scanTodos, todoRelevanceScore } from './todo-scan.js';
|
|
15
15
|
export { estimateTokensCalibrated, estimateTokensByExtension } from './token-calibration.js';
|
|
16
16
|
export { getFileLayer, sortByLayer } from './layer-ordering.js';
|
|
17
|
+
export { detectSecuritySurface, isSecurityTask } from './security-surface.js';
|
|
18
|
+
export { scanDebtPatterns, computeDebtScore } from './debt-detection.js';
|
|
19
|
+
export { detectStuckPatterns, buildActivityLogFromGit, DEFAULT_LOOP_THRESHOLDS } from './loop-detection.js';
|
|
20
|
+
export { deriveScopeContract, isInScope, detectScopeDrift, renderScopeContractMarkdown } from './scope-contract.js';
|
|
21
|
+
export { detectConflictZones, countConflictZoneTouches, renderConflictZonesMarkdown } from './conflict-zones.js';
|
|
22
|
+
export { detectAddressedFiles, parseCommittedFiles, renderInvalidationMarkdown } from './bundle-invalidation.js';
|
|
23
|
+
// ─── Intent Governance ──────────────────────────────────────────────────────
|
|
24
|
+
export { norm as intentNorm, normArr as intentNormArr, canonicalize, sha256 as intentSha256, intentHash, jaccardDistanceTokens, setDistance, computeDrift, recommendedAction, } from './intent/index.js';
|
|
25
|
+
// ─── Knowledge Mode ─────────────────────────────────────────────────────────
|
|
26
|
+
export { computeKnowledgeFeatures, scoreKnowledgeFile, deriveKnowledgeReasons, scoreAllKnowledgeCandidates, DEFAULT_KNOWLEDGE_WEIGHTS, } from './knowledge-scorer.js';
|
|
27
|
+
export { tokenizeIntent, computeKnowledgeTokenWeights, inferAnchorFolders, generateKnowledgeCandidates, } from './knowledge-candidates.js';
|
|
28
|
+
export { extractKnowledgeExcerpt } from './knowledge-excerpt.js';
|
|
29
|
+
export { buildKnowledgeBundle, buildKnowledgeTrace } from './knowledge-bundle.js';
|
|
30
|
+
export { detectSelectionMode } from './mode-detect.js';
|
|
17
31
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEnH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAElH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE5G,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACpH,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACjH,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEjH,+EAA+E;AAC/E,OAAO,EACL,IAAI,IAAI,UAAU,EAClB,OAAO,IAAI,aAAa,EACxB,YAAY,EACZ,MAAM,IAAI,YAAY,EACtB,UAAU,EACV,qBAAqB,EACrB,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAS3B,+EAA+E;AAC/E,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,4BAA4B,EAC5B,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAElF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { TaskContractV1, DriftResult, DriftLevel } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Token-level Jaccard distance between two strings.
|
|
4
|
+
*
|
|
5
|
+
* Deterministic: split on whitespace, compute |intersection|/|union|.
|
|
6
|
+
* Returns 0 for identical, 1 for completely different.
|
|
7
|
+
*/
|
|
8
|
+
export declare function jaccardDistanceTokens(a: string, b: string): number;
|
|
9
|
+
/**
|
|
10
|
+
* Set distance between two string arrays.
|
|
11
|
+
*
|
|
12
|
+
* 1 - (|intersection| / |union|). If both empty, distance is 0.
|
|
13
|
+
*/
|
|
14
|
+
export declare function setDistance(a: string[], b: string[]): number;
|
|
15
|
+
/**
|
|
16
|
+
* Compute deterministic drift between a baseline and current task contract.
|
|
17
|
+
*
|
|
18
|
+
* drift_score = Σ(weight_i * distance_i)
|
|
19
|
+
*
|
|
20
|
+
* Drift levels:
|
|
21
|
+
* - NONE: < 0.10
|
|
22
|
+
* - MINOR: 0.10–0.24
|
|
23
|
+
* - MAJOR: 0.25–0.44
|
|
24
|
+
* - CRITICAL: >= 0.45
|
|
25
|
+
*/
|
|
26
|
+
export declare function computeDrift(base: TaskContractV1, curr: TaskContractV1): DriftResult;
|
|
27
|
+
/**
|
|
28
|
+
* Determine recommended action based on drift level.
|
|
29
|
+
*/
|
|
30
|
+
export declare function recommendedAction(level: DriftLevel): 'NONE' | 'LOG_ONLY' | 'REFRESH_BUNDLE' | 'REQUIRE_ACK';
|
|
31
|
+
//# sourceMappingURL=drift.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/intent/drift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAe,MAAM,YAAY,CAAC;AAiBvF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAUlE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAU5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,GAAG,WAAW,CAsCpF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,GAChB,MAAM,GAAG,UAAU,GAAG,gBAAgB,GAAG,aAAa,CAOxD"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { norm, normArr } from './normalize.js';
|
|
2
|
+
/**
|
|
3
|
+
* Field weights for drift scoring.
|
|
4
|
+
* Sum = 1.0 (so drift_score is directly 0..1)
|
|
5
|
+
*/
|
|
6
|
+
const DRIFT_WEIGHTS = {
|
|
7
|
+
objective: 0.30,
|
|
8
|
+
deliverable: 0.10,
|
|
9
|
+
scope_in: 0.15,
|
|
10
|
+
scope_out: 0.10,
|
|
11
|
+
constraints: 0.15,
|
|
12
|
+
acceptance_criteria: 0.15,
|
|
13
|
+
repo_paths_in_scope: 0.05,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Token-level Jaccard distance between two strings.
|
|
17
|
+
*
|
|
18
|
+
* Deterministic: split on whitespace, compute |intersection|/|union|.
|
|
19
|
+
* Returns 0 for identical, 1 for completely different.
|
|
20
|
+
*/
|
|
21
|
+
export function jaccardDistanceTokens(a, b) {
|
|
22
|
+
const tokensA = new Set(norm(a).split(' ').filter(Boolean));
|
|
23
|
+
const tokensB = new Set(norm(b).split(' ').filter(Boolean));
|
|
24
|
+
const union = new Set([...tokensA, ...tokensB]);
|
|
25
|
+
if (union.size === 0)
|
|
26
|
+
return 0;
|
|
27
|
+
let intersection = 0;
|
|
28
|
+
for (const t of tokensA) {
|
|
29
|
+
if (tokensB.has(t))
|
|
30
|
+
intersection++;
|
|
31
|
+
}
|
|
32
|
+
return 1 - intersection / union.size;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Set distance between two string arrays.
|
|
36
|
+
*
|
|
37
|
+
* 1 - (|intersection| / |union|). If both empty, distance is 0.
|
|
38
|
+
*/
|
|
39
|
+
export function setDistance(a, b) {
|
|
40
|
+
const normA = new Set(normArr(a));
|
|
41
|
+
const normB = new Set(normArr(b));
|
|
42
|
+
const union = new Set([...normA, ...normB]);
|
|
43
|
+
if (union.size === 0)
|
|
44
|
+
return 0;
|
|
45
|
+
let intersection = 0;
|
|
46
|
+
for (const x of normA) {
|
|
47
|
+
if (normB.has(x))
|
|
48
|
+
intersection++;
|
|
49
|
+
}
|
|
50
|
+
return 1 - intersection / union.size;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Compute deterministic drift between a baseline and current task contract.
|
|
54
|
+
*
|
|
55
|
+
* drift_score = Σ(weight_i * distance_i)
|
|
56
|
+
*
|
|
57
|
+
* Drift levels:
|
|
58
|
+
* - NONE: < 0.10
|
|
59
|
+
* - MINOR: 0.10–0.24
|
|
60
|
+
* - MAJOR: 0.25–0.44
|
|
61
|
+
* - CRITICAL: >= 0.45
|
|
62
|
+
*/
|
|
63
|
+
export function computeDrift(base, curr) {
|
|
64
|
+
const reasons = [];
|
|
65
|
+
let score = 0;
|
|
66
|
+
for (const [field, weight] of Object.entries(DRIFT_WEIGHTS)) {
|
|
67
|
+
if (!weight)
|
|
68
|
+
continue;
|
|
69
|
+
const baseVal = getContractField(base, field);
|
|
70
|
+
const currVal = getContractField(curr, field);
|
|
71
|
+
let distance;
|
|
72
|
+
if (Array.isArray(baseVal) && Array.isArray(currVal)) {
|
|
73
|
+
distance = setDistance(baseVal, currVal);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
distance = jaccardDistanceTokens(String(baseVal ?? ''), String(currVal ?? ''));
|
|
77
|
+
}
|
|
78
|
+
reasons.push({
|
|
79
|
+
field: field,
|
|
80
|
+
distance: Math.round(distance * 1000) / 1000,
|
|
81
|
+
});
|
|
82
|
+
score += weight * distance;
|
|
83
|
+
}
|
|
84
|
+
const driftScore = Math.round(score * 1000) / 1000;
|
|
85
|
+
const driftLevel = driftScore < 0.10 ? 'NONE' :
|
|
86
|
+
driftScore < 0.25 ? 'MINOR' :
|
|
87
|
+
driftScore < 0.45 ? 'MAJOR' : 'CRITICAL';
|
|
88
|
+
// Sort reasons by distance descending (most significant drift first)
|
|
89
|
+
reasons.sort((a, b) => b.distance - a.distance);
|
|
90
|
+
return { drift_score: driftScore, drift_level: driftLevel, reasons };
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Determine recommended action based on drift level.
|
|
94
|
+
*/
|
|
95
|
+
export function recommendedAction(level) {
|
|
96
|
+
switch (level) {
|
|
97
|
+
case 'NONE': return 'NONE';
|
|
98
|
+
case 'MINOR': return 'LOG_ONLY';
|
|
99
|
+
case 'MAJOR': return 'REFRESH_BUNDLE';
|
|
100
|
+
case 'CRITICAL': return 'REQUIRE_ACK';
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Type-safe field accessor for TaskContractV1.
|
|
105
|
+
* Returns the field value as string | string[] | null.
|
|
106
|
+
*/
|
|
107
|
+
function getContractField(contract, field) {
|
|
108
|
+
switch (field) {
|
|
109
|
+
case 'objective': return contract.objective;
|
|
110
|
+
case 'deliverable': return contract.deliverable;
|
|
111
|
+
case 'scope_in': return contract.scope_in;
|
|
112
|
+
case 'scope_out': return contract.scope_out;
|
|
113
|
+
case 'constraints': return contract.constraints;
|
|
114
|
+
case 'acceptance_criteria': return contract.acceptance_criteria;
|
|
115
|
+
case 'risk_flags': return contract.risk_flags;
|
|
116
|
+
case 'repo_paths_in_scope': return contract.repo_paths_in_scope;
|
|
117
|
+
default: return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=drift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/intent/drift.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;GAGG;AACH,MAAM,aAAa,GAAkD;IACnE,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,mBAAmB,EAAE,IAAI;IACzB,mBAAmB,EAAE,IAAI;CAC1B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,CAAS,EAAE,CAAS;IACxD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,YAAY,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,GAAG,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,CAAW,EAAE,CAAW;IAClD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,YAAY,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,GAAG,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;AACvC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,IAAoB,EAAE,IAAoB;IACrE,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5D,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE9C,IAAI,QAAgB,CAAC;QACrB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,qBAAqB,CAC9B,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EACrB,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CACtB,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,KAA6B;YACpC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI;SAC7C,CAAC,CAAC;QACH,KAAK,IAAI,MAAM,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEnD,MAAM,UAAU,GACd,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5B,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC7B,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;IAE3C,qEAAqE;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEhD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAiB;IAEjB,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;QAC3B,KAAK,OAAO,CAAC,CAAC,OAAO,UAAU,CAAC;QAChC,KAAK,OAAO,CAAC,CAAC,OAAO,gBAAgB,CAAC;QACtC,KAAK,UAAU,CAAC,CAAC,OAAO,aAAa,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CACvB,QAAwB,EACxB,KAAa;IAEb,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,WAAW,CAAC,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC;QAC5C,KAAK,aAAa,CAAC,CAAC,OAAO,QAAQ,CAAC,WAAW,CAAC;QAChD,KAAK,UAAU,CAAC,CAAC,OAAO,QAAQ,CAAC,QAAQ,CAAC;QAC1C,KAAK,WAAW,CAAC,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC;QAC5C,KAAK,aAAa,CAAC,CAAC,OAAO,QAAQ,CAAC,WAAW,CAAC;QAChD,KAAK,qBAAqB,CAAC,CAAC,OAAO,QAAQ,CAAC,mBAAmB,CAAC;QAChE,KAAK,YAAY,CAAC,CAAC,OAAO,QAAQ,CAAC,UAAU,CAAC;QAC9C,KAAK,qBAAqB,CAAC,CAAC,OAAO,QAAQ,CAAC,mBAAmB,CAAC;QAChE,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { TaskContractV1 } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Create a canonical JSON representation of a task contract.
|
|
4
|
+
*
|
|
5
|
+
* Canonical = stable key order + normalized values + sorted arrays.
|
|
6
|
+
* This ensures the same logical contract always produces the same hash.
|
|
7
|
+
*/
|
|
8
|
+
export declare function canonicalize(contract: TaskContractV1): string;
|
|
9
|
+
/**
|
|
10
|
+
* Compute SHA-256 hash of a string.
|
|
11
|
+
*/
|
|
12
|
+
export declare function sha256(s: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Compute the intent hash for a task contract.
|
|
15
|
+
*
|
|
16
|
+
* intent_hash = sha256(canonical_json(task_contract))
|
|
17
|
+
*/
|
|
18
|
+
export declare function intentHash(contract: TaskContractV1): string;
|
|
19
|
+
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/intent/hash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAe7D;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAE3D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { norm, normArr } from './normalize.js';
|
|
3
|
+
/**
|
|
4
|
+
* Create a canonical JSON representation of a task contract.
|
|
5
|
+
*
|
|
6
|
+
* Canonical = stable key order + normalized values + sorted arrays.
|
|
7
|
+
* This ensures the same logical contract always produces the same hash.
|
|
8
|
+
*/
|
|
9
|
+
export function canonicalize(contract) {
|
|
10
|
+
// Build a normalized copy with stable key order
|
|
11
|
+
const normalized = {
|
|
12
|
+
acceptance_criteria: normArr(contract.acceptance_criteria),
|
|
13
|
+
constraints: normArr(contract.constraints),
|
|
14
|
+
deliverable: contract.deliverable ? norm(contract.deliverable) : null,
|
|
15
|
+
objective: norm(contract.objective),
|
|
16
|
+
repo_paths_in_scope: normArr(contract.repo_paths_in_scope),
|
|
17
|
+
risk_flags: normArr(contract.risk_flags),
|
|
18
|
+
scope_in: normArr(contract.scope_in),
|
|
19
|
+
scope_out: normArr(contract.scope_out),
|
|
20
|
+
version: contract.version,
|
|
21
|
+
};
|
|
22
|
+
return JSON.stringify(normalized);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Compute SHA-256 hash of a string.
|
|
26
|
+
*/
|
|
27
|
+
export function sha256(s) {
|
|
28
|
+
return createHash('sha256').update(s, 'utf8').digest('hex');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Compute the intent hash for a task contract.
|
|
32
|
+
*
|
|
33
|
+
* intent_hash = sha256(canonical_json(task_contract))
|
|
34
|
+
*/
|
|
35
|
+
export function intentHash(contract) {
|
|
36
|
+
return sha256(canonicalize(contract));
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/intent/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,QAAwB;IACnD,gDAAgD;IAChD,MAAM,UAAU,GAAG;QACjB,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC1D,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1C,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;QACrE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACnC,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC1D,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;QACxC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtC,OAAO,EAAE,QAAQ,CAAC,OAAO;KAC1B,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,CAAS;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,QAAwB;IACjD,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { TaskContractV1, DriftLevel, DriftResult, DriftReason, IntentDriftEvent } from './types.js';
|
|
2
|
+
export { norm, normArr } from './normalize.js';
|
|
3
|
+
export { canonicalize, sha256, intentHash } from './hash.js';
|
|
4
|
+
export { jaccardDistanceTokens, setDistance, computeDrift, recommendedAction } from './drift.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/intent/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACzG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/intent/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic normalization for intent governance.
|
|
3
|
+
*
|
|
4
|
+
* Rules:
|
|
5
|
+
* 1. Trim whitespace
|
|
6
|
+
* 2. Lowercase
|
|
7
|
+
* 3. Collapse internal whitespace to single spaces
|
|
8
|
+
* 4. Remove non-semantic punctuation: ,;:!? (keep / - _ . for paths/flags/extensions)
|
|
9
|
+
* 4b. Remove periods only at word boundaries or end of string (preserve .ts, .js, etc.)
|
|
10
|
+
* 5. Normalize path separators to /
|
|
11
|
+
* 6. Remove trailing /
|
|
12
|
+
* 7. Sort arrays lexicographically
|
|
13
|
+
* 8. Remove duplicates
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Normalize a single string value.
|
|
17
|
+
*/
|
|
18
|
+
export declare function norm(s: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Normalize an array of strings: norm each, deduplicate, sort.
|
|
21
|
+
*/
|
|
22
|
+
export declare function normArr(xs: string[]): string[];
|
|
23
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/intent/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAStC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAG9C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic normalization for intent governance.
|
|
3
|
+
*
|
|
4
|
+
* Rules:
|
|
5
|
+
* 1. Trim whitespace
|
|
6
|
+
* 2. Lowercase
|
|
7
|
+
* 3. Collapse internal whitespace to single spaces
|
|
8
|
+
* 4. Remove non-semantic punctuation: ,;:!? (keep / - _ . for paths/flags/extensions)
|
|
9
|
+
* 4b. Remove periods only at word boundaries or end of string (preserve .ts, .js, etc.)
|
|
10
|
+
* 5. Normalize path separators to /
|
|
11
|
+
* 6. Remove trailing /
|
|
12
|
+
* 7. Sort arrays lexicographically
|
|
13
|
+
* 8. Remove duplicates
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Normalize a single string value.
|
|
17
|
+
*/
|
|
18
|
+
export function norm(s) {
|
|
19
|
+
return s
|
|
20
|
+
.trim()
|
|
21
|
+
.toLowerCase()
|
|
22
|
+
.replace(/\\/g, '/') // normalize path separators early (before punctuation removal)
|
|
23
|
+
.replace(/[,;:!?]/g, '') // remove non-semantic punctuation (NOT periods)
|
|
24
|
+
.replace(/\.(?=\s|$)/g, '') // remove periods only at word boundaries or end of string
|
|
25
|
+
.replace(/\s+/g, ' ')
|
|
26
|
+
.replace(/\/+$/, ''); // remove trailing /
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Normalize an array of strings: norm each, deduplicate, sort.
|
|
30
|
+
*/
|
|
31
|
+
export function normArr(xs) {
|
|
32
|
+
const set = new Set(xs.map(norm).filter(Boolean));
|
|
33
|
+
return Array.from(set).sort();
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=normalize.js.map
|