open-wiki-spec 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/README.md +50 -3
- package/dist/cli/commands/apply.d.ts.map +1 -1
- package/dist/cli/commands/apply.js +96 -4
- package/dist/cli/commands/apply.js.map +1 -1
- package/dist/cli/commands/archive.d.ts.map +1 -1
- package/dist/cli/commands/archive.js +19 -5
- package/dist/cli/commands/archive.js.map +1 -1
- package/dist/cli/commands/bulk-archive.d.ts +15 -0
- package/dist/cli/commands/bulk-archive.d.ts.map +1 -0
- package/dist/cli/commands/bulk-archive.js +97 -0
- package/dist/cli/commands/bulk-archive.js.map +1 -0
- package/dist/cli/commands/continue.d.ts.map +1 -1
- package/dist/cli/commands/continue.js +15 -2
- package/dist/cli/commands/continue.js.map +1 -1
- package/dist/cli/commands/error-handler.d.ts +1 -5
- package/dist/cli/commands/error-handler.d.ts.map +1 -1
- package/dist/cli/commands/error-handler.js +48 -3
- package/dist/cli/commands/error-handler.js.map +1 -1
- package/dist/cli/commands/init.d.ts +0 -3
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +22 -4
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list.d.ts +2 -17
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +15 -3
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +6 -9
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/propose.d.ts.map +1 -1
- package/dist/cli/commands/propose.js +46 -6
- package/dist/cli/commands/propose.js.map +1 -1
- package/dist/cli/commands/query.d.ts.map +1 -1
- package/dist/cli/commands/query.js +99 -4
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/retrieve.d.ts +7 -0
- package/dist/cli/commands/retrieve.d.ts.map +1 -0
- package/dist/cli/commands/retrieve.js +70 -0
- package/dist/cli/commands/retrieve.js.map +1 -0
- package/dist/cli/commands/revert.d.ts +18 -0
- package/dist/cli/commands/revert.d.ts.map +1 -0
- package/dist/cli/commands/revert.js +109 -0
- package/dist/cli/commands/revert.js.map +1 -0
- package/dist/cli/commands/status.d.ts +2 -19
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +42 -3
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +12 -1
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +68 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/init-engine.d.ts.map +1 -1
- package/dist/cli/init/init-engine.js +19 -6
- package/dist/cli/init/init-engine.js.map +1 -1
- package/dist/cli/init/meta-files.d.ts +2 -1
- package/dist/cli/init/meta-files.d.ts.map +1 -1
- package/dist/cli/init/meta-files.js +167 -8
- package/dist/cli/init/meta-files.js.map +1 -1
- package/dist/cli/init/skill-generator.d.ts +3 -0
- package/dist/cli/init/skill-generator.d.ts.map +1 -1
- package/dist/cli/init/skill-generator.js +184 -3
- package/dist/cli/init/skill-generator.js.map +1 -1
- package/dist/cli/json-envelope.d.ts +15 -0
- package/dist/cli/json-envelope.d.ts.map +1 -0
- package/dist/cli/json-envelope.js +86 -0
- package/dist/cli/json-envelope.js.map +1 -0
- package/dist/cli/schema-check.d.ts +27 -0
- package/dist/cli/schema-check.d.ts.map +1 -0
- package/dist/cli/schema-check.js +33 -0
- package/dist/cli/schema-check.js.map +1 -0
- package/dist/cli/vault-discovery.d.ts.map +1 -1
- package/dist/cli/vault-discovery.js +16 -2
- package/dist/cli/vault-discovery.js.map +1 -1
- package/dist/core/embedding/cache.d.ts +12 -3
- package/dist/core/embedding/cache.d.ts.map +1 -1
- package/dist/core/embedding/cache.js +42 -5
- package/dist/core/embedding/cache.js.map +1 -1
- package/dist/core/embedding/embedder.d.ts.map +1 -1
- package/dist/core/embedding/embedder.js +73 -6
- package/dist/core/embedding/embedder.js.map +1 -1
- package/dist/core/index/build.d.ts.map +1 -1
- package/dist/core/index/build.js +54 -6
- package/dist/core/index/build.js.map +1 -1
- package/dist/core/index/resolve.d.ts.map +1 -1
- package/dist/core/index/resolve.js +27 -12
- package/dist/core/index/resolve.js.map +1 -1
- package/dist/core/index/scan.d.ts +10 -1
- package/dist/core/index/scan.d.ts.map +1 -1
- package/dist/core/index/scan.js +59 -10
- package/dist/core/index/scan.js.map +1 -1
- package/dist/core/index/schema-version.d.ts +28 -0
- package/dist/core/index/schema-version.d.ts.map +1 -1
- package/dist/core/index/schema-version.js +47 -0
- package/dist/core/index/schema-version.js.map +1 -1
- package/dist/core/migrate/change-converter.d.ts.map +1 -1
- package/dist/core/migrate/change-converter.js +52 -5
- package/dist/core/migrate/change-converter.js.map +1 -1
- package/dist/core/migrate/migrate.d.ts.map +1 -1
- package/dist/core/migrate/migrate.js +115 -1
- package/dist/core/migrate/migrate.js.map +1 -1
- package/dist/core/migrate/spec-converter.js +5 -0
- package/dist/core/migrate/spec-converter.js.map +1 -1
- package/dist/core/migrate/types.d.ts +9 -0
- package/dist/core/migrate/types.d.ts.map +1 -1
- package/dist/core/parser/frontmatter-parser.d.ts +0 -6
- package/dist/core/parser/frontmatter-parser.d.ts.map +1 -1
- package/dist/core/parser/frontmatter-parser.js +59 -2
- package/dist/core/parser/frontmatter-parser.js.map +1 -1
- package/dist/core/parser/requirement-parser.js +4 -0
- package/dist/core/parser/requirement-parser.js.map +1 -1
- package/dist/core/parser/task-parser.d.ts.map +1 -1
- package/dist/core/parser/task-parser.js +19 -0
- package/dist/core/parser/task-parser.js.map +1 -1
- package/dist/core/parser/wikilink-parser.d.ts.map +1 -1
- package/dist/core/parser/wikilink-parser.js +21 -5
- package/dist/core/parser/wikilink-parser.js.map +1 -1
- package/dist/core/retrieval/classify.d.ts +11 -4
- package/dist/core/retrieval/classify.d.ts.map +1 -1
- package/dist/core/retrieval/classify.js +76 -14
- package/dist/core/retrieval/classify.js.map +1 -1
- package/dist/core/retrieval/lexical.d.ts.map +1 -1
- package/dist/core/retrieval/lexical.js +31 -12
- package/dist/core/retrieval/lexical.js.map +1 -1
- package/dist/core/retrieval/retrieve.d.ts.map +1 -1
- package/dist/core/retrieval/retrieve.js +45 -5
- package/dist/core/retrieval/retrieve.js.map +1 -1
- package/dist/core/retrieval/scoring.d.ts.map +1 -1
- package/dist/core/retrieval/scoring.js +37 -12
- package/dist/core/retrieval/scoring.js.map +1 -1
- package/dist/core/schema/change.schema.d.ts.map +1 -1
- package/dist/core/schema/change.schema.js +6 -1
- package/dist/core/schema/change.schema.js.map +1 -1
- package/dist/core/schema/feature.schema.d.ts +1 -1
- package/dist/core/schema/feature.schema.d.ts.map +1 -1
- package/dist/core/schema/feature.schema.js +1 -0
- package/dist/core/schema/feature.schema.js.map +1 -1
- package/dist/core/schema/frontmatter.d.ts +15 -0
- package/dist/core/schema/frontmatter.d.ts.map +1 -1
- package/dist/core/schema/index.d.ts +15 -0
- package/dist/core/schema/index.d.ts.map +1 -1
- package/dist/core/schema/query.schema.d.ts +15 -0
- package/dist/core/schema/query.schema.d.ts.map +1 -1
- package/dist/core/schema/query.schema.js +5 -0
- package/dist/core/schema/query.schema.js.map +1 -1
- package/dist/core/schema/templates.d.ts +0 -4
- package/dist/core/schema/templates.d.ts.map +1 -1
- package/dist/core/schema/templates.js +25 -7
- package/dist/core/schema/templates.js.map +1 -1
- package/dist/core/sequencing/analyze.d.ts.map +1 -1
- package/dist/core/sequencing/analyze.js +3 -1
- package/dist/core/sequencing/analyze.js.map +1 -1
- package/dist/core/sequencing/priority-queue.d.ts +9 -3
- package/dist/core/sequencing/priority-queue.d.ts.map +1 -1
- package/dist/core/sequencing/priority-queue.js +10 -4
- package/dist/core/sequencing/priority-queue.js.map +1 -1
- package/dist/core/sequencing/stale-detector.d.ts.map +1 -1
- package/dist/core/sequencing/stale-detector.js +5 -0
- package/dist/core/sequencing/stale-detector.js.map +1 -1
- package/dist/core/workflow/apply/apply.d.ts.map +1 -1
- package/dist/core/workflow/apply/apply.js +429 -25
- package/dist/core/workflow/apply/apply.js.map +1 -1
- package/dist/core/workflow/apply/delta-parser.d.ts.map +1 -1
- package/dist/core/workflow/apply/delta-parser.js +43 -9
- package/dist/core/workflow/apply/delta-parser.js.map +1 -1
- package/dist/core/workflow/apply/feature-updater.d.ts.map +1 -1
- package/dist/core/workflow/apply/feature-updater.js +27 -11
- package/dist/core/workflow/apply/feature-updater.js.map +1 -1
- package/dist/core/workflow/apply/types.d.ts +9 -0
- package/dist/core/workflow/apply/types.d.ts.map +1 -1
- package/dist/core/workflow/continue/continue.d.ts +18 -0
- package/dist/core/workflow/continue/continue.d.ts.map +1 -1
- package/dist/core/workflow/continue/continue.js +134 -15
- package/dist/core/workflow/continue/continue.js.map +1 -1
- package/dist/core/workflow/continue/next-action.d.ts.map +1 -1
- package/dist/core/workflow/continue/next-action.js +16 -3
- package/dist/core/workflow/continue/next-action.js.map +1 -1
- package/dist/core/workflow/continue/types.d.ts +12 -0
- package/dist/core/workflow/continue/types.d.ts.map +1 -1
- package/dist/core/workflow/propose/note-creator.d.ts +2 -2
- package/dist/core/workflow/propose/note-creator.d.ts.map +1 -1
- package/dist/core/workflow/propose/note-creator.js +89 -12
- package/dist/core/workflow/propose/note-creator.js.map +1 -1
- package/dist/core/workflow/propose/propose.d.ts.map +1 -1
- package/dist/core/workflow/propose/propose.js +189 -47
- package/dist/core/workflow/propose/propose.js.map +1 -1
- package/dist/core/workflow/propose/query-normalizer.d.ts.map +1 -1
- package/dist/core/workflow/propose/query-normalizer.js +37 -5
- package/dist/core/workflow/propose/query-normalizer.js.map +1 -1
- package/dist/core/workflow/propose/types.d.ts +15 -0
- package/dist/core/workflow/propose/types.d.ts.map +1 -1
- package/dist/core/workflow/propose/types.js +6 -1
- package/dist/core/workflow/propose/types.js.map +1 -1
- package/dist/core/workflow/query/query-note-creator.js +4 -0
- package/dist/core/workflow/query/query-note-creator.js.map +1 -1
- package/dist/core/workflow/verify/coherence.d.ts +10 -0
- package/dist/core/workflow/verify/coherence.d.ts.map +1 -1
- package/dist/core/workflow/verify/coherence.js +91 -4
- package/dist/core/workflow/verify/coherence.js.map +1 -1
- package/dist/core/workflow/verify/completeness.d.ts +1 -1
- package/dist/core/workflow/verify/completeness.d.ts.map +1 -1
- package/dist/core/workflow/verify/completeness.js +53 -10
- package/dist/core/workflow/verify/completeness.js.map +1 -1
- package/dist/core/workflow/verify/correctness.d.ts +1 -1
- package/dist/core/workflow/verify/correctness.d.ts.map +1 -1
- package/dist/core/workflow/verify/correctness.js +95 -14
- package/dist/core/workflow/verify/correctness.js.map +1 -1
- package/dist/core/workflow/verify/vault-integrity.d.ts +11 -0
- package/dist/core/workflow/verify/vault-integrity.d.ts.map +1 -1
- package/dist/core/workflow/verify/vault-integrity.js +80 -3
- package/dist/core/workflow/verify/vault-integrity.js.map +1 -1
- package/dist/core/workflow/verify/verify.d.ts +0 -5
- package/dist/core/workflow/verify/verify.d.ts.map +1 -1
- package/dist/core/workflow/verify/verify.js +54 -3
- package/dist/core/workflow/verify/verify.js.map +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/types/cli-contracts.d.ts +78 -0
- package/dist/types/cli-contracts.d.ts.map +1 -0
- package/dist/types/cli-contracts.js +2 -0
- package/dist/types/cli-contracts.js.map +1 -0
- package/dist/types/error-codes.d.ts +25 -0
- package/dist/types/error-codes.d.ts.map +1 -0
- package/dist/types/error-codes.js +27 -0
- package/dist/types/error-codes.js.map +1 -0
- package/dist/types/frontmatter.d.ts +9 -2
- package/dist/types/frontmatter.d.ts.map +1 -1
- package/dist/types/next-action.d.ts +21 -0
- package/dist/types/next-action.d.ts.map +1 -1
- package/dist/types/retrieval.d.ts +17 -0
- package/dist/types/retrieval.d.ts.map +1 -1
- package/dist/types/verify.d.ts +58 -1
- package/dist/types/verify.d.ts.map +1 -1
- package/dist/types/verify.js +58 -1
- package/dist/types/verify.js.map +1 -1
- package/dist/utils/conventions.d.ts +9 -0
- package/dist/utils/conventions.d.ts.map +1 -0
- package/dist/utils/conventions.js +22 -0
- package/dist/utils/conventions.js.map +1 -0
- package/dist/utils/id-generator.d.ts.map +1 -1
- package/dist/utils/id-generator.js +8 -0
- package/dist/utils/id-generator.js.map +1 -1
- package/dist/utils/normalize.d.ts +7 -4
- package/dist/utils/normalize.d.ts.map +1 -1
- package/dist/utils/normalize.js +43 -6
- package/dist/utils/normalize.js.map +1 -1
- package/package.json +3 -2
|
@@ -64,12 +64,18 @@ export function ambiguousAliasCheck(index) {
|
|
|
64
64
|
/**
|
|
65
65
|
* Check for orphan notes (notes with no incoming or outgoing links).
|
|
66
66
|
* Meta files are excluded from this check.
|
|
67
|
+
*
|
|
68
|
+
* Bootstrap exemption: if the vault contains only a single typed note, it
|
|
69
|
+
* cannot possibly link anywhere (there is nothing to link to), so flagging
|
|
70
|
+
* it as an orphan is noise that would break the first-note experience
|
|
71
|
+
* under `--strict`. Skip the check in that case.
|
|
67
72
|
*/
|
|
68
73
|
export function orphanNoteCheck(index) {
|
|
69
74
|
const issues = [];
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
75
|
+
const typedNotes = Array.from(index.records.values()).filter((r) => !r.path.startsWith('wiki/00-meta/'));
|
|
76
|
+
if (typedNotes.length <= 1)
|
|
77
|
+
return issues;
|
|
78
|
+
for (const record of typedNotes) {
|
|
73
79
|
if (record.links_in.length === 0 && record.links_out.length === 0) {
|
|
74
80
|
issues.push({
|
|
75
81
|
dimension: 'vault_integrity',
|
|
@@ -86,9 +92,19 @@ export function orphanNoteCheck(index) {
|
|
|
86
92
|
}
|
|
87
93
|
/**
|
|
88
94
|
* Check for notes in 99-archive/ that don't have 'applied' status.
|
|
95
|
+
* Also check that note type matches its typed folder location (e.g., feature → 03-features/).
|
|
89
96
|
*/
|
|
90
97
|
export function archivePlacementCheck(index) {
|
|
91
98
|
const issues = [];
|
|
99
|
+
// Expected folder per note type (archived notes exempt — they live in 99-archive/)
|
|
100
|
+
const TYPE_TO_FOLDER = {
|
|
101
|
+
source: 'wiki/01-sources/',
|
|
102
|
+
system: 'wiki/02-systems/',
|
|
103
|
+
feature: 'wiki/03-features/',
|
|
104
|
+
change: 'wiki/04-changes/',
|
|
105
|
+
decision: 'wiki/05-decisions/',
|
|
106
|
+
query: 'wiki/06-queries/',
|
|
107
|
+
};
|
|
92
108
|
for (const record of index.records.values()) {
|
|
93
109
|
const isInArchive = record.path.startsWith('wiki/99-archive/');
|
|
94
110
|
if (isInArchive && record.status !== 'applied') {
|
|
@@ -102,6 +118,21 @@ export function archivePlacementCheck(index) {
|
|
|
102
118
|
suggestion: 'Only applied changes should be in the archive. Move the note back or update its status.',
|
|
103
119
|
});
|
|
104
120
|
}
|
|
121
|
+
// Type/folder mismatch check (skip archived notes — they're allowed anywhere under 99-archive/)
|
|
122
|
+
if (!isInArchive) {
|
|
123
|
+
const expectedFolder = TYPE_TO_FOLDER[record.type];
|
|
124
|
+
if (expectedFolder && !record.path.startsWith(expectedFolder)) {
|
|
125
|
+
issues.push({
|
|
126
|
+
dimension: 'vault_integrity',
|
|
127
|
+
severity: 'error',
|
|
128
|
+
code: 'TYPE_FOLDER_MISMATCH',
|
|
129
|
+
message: `Note "${record.id}" has type "${record.type}" but is located in "${record.path}" instead of "${expectedFolder}"`,
|
|
130
|
+
note_id: record.id,
|
|
131
|
+
note_path: record.path,
|
|
132
|
+
suggestion: `Move the note to ${expectedFolder} or correct the "type" field in frontmatter.`,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
105
136
|
}
|
|
106
137
|
return issues;
|
|
107
138
|
}
|
|
@@ -165,6 +196,52 @@ export function titleIdCollisionCheck(index) {
|
|
|
165
196
|
}
|
|
166
197
|
return issues;
|
|
167
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Common secret patterns that should never appear in vault frontmatter.
|
|
201
|
+
* Scans values (not keys) for these patterns and warns the user.
|
|
202
|
+
*/
|
|
203
|
+
const SECRET_PATTERNS = [
|
|
204
|
+
{ name: 'OpenAI API key', regex: /\bsk-[A-Za-z0-9]{20,}\b/ },
|
|
205
|
+
{ name: 'Anthropic API key', regex: /\bsk-ant-[A-Za-z0-9-]{20,}\b/ },
|
|
206
|
+
{ name: 'GitHub token', regex: /\bghp_[A-Za-z0-9]{30,}\b/ },
|
|
207
|
+
{ name: 'GitHub fine-grained token', regex: /\bgithub_pat_[A-Za-z0-9_]{30,}\b/ },
|
|
208
|
+
// AWS long-lived (AKIA) and temporary session (ASIA) access key IDs
|
|
209
|
+
{ name: 'AWS access key', regex: /\b(?:AKIA|ASIA)[0-9A-Z]{16}\b/ },
|
|
210
|
+
{ name: 'Google API key', regex: /\bAIza[0-9A-Za-z_-]{35}\b/ },
|
|
211
|
+
// GCP service account key (JSON)
|
|
212
|
+
{ name: 'GCP service account key', regex: /"type"\s*:\s*"service_account"/ },
|
|
213
|
+
{ name: 'Slack token', regex: /\bxox[baprs]-[A-Za-z0-9-]{10,}\b/ },
|
|
214
|
+
{ name: 'JWT token', regex: /\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/ },
|
|
215
|
+
{ name: 'Private key header', regex: /-----BEGIN (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----/ },
|
|
216
|
+
// Generic "password = ..." or "secret = ..." in config-like blocks
|
|
217
|
+
{ name: 'Hardcoded credential', regex: /(?:password|secret|token|api_key)\s*[:=]\s*["'][A-Za-z0-9+/=_-]{16,}["']/i },
|
|
218
|
+
];
|
|
219
|
+
/**
|
|
220
|
+
* Scan note body for accidental secret leakage.
|
|
221
|
+
* Returns warnings (not errors) to encourage removal without blocking work.
|
|
222
|
+
*/
|
|
223
|
+
export function secretLeakCheck(notes) {
|
|
224
|
+
const issues = [];
|
|
225
|
+
for (const note of notes) {
|
|
226
|
+
// Scan the raw_text (body) for secret patterns
|
|
227
|
+
const scanText = note.raw_text ?? '';
|
|
228
|
+
for (const { name, regex } of SECRET_PATTERNS) {
|
|
229
|
+
if (regex.test(scanText)) {
|
|
230
|
+
issues.push({
|
|
231
|
+
dimension: 'vault_integrity',
|
|
232
|
+
severity: 'warning',
|
|
233
|
+
code: 'POTENTIAL_SECRET_LEAK',
|
|
234
|
+
message: `Note "${note.id}" may contain a ${name}`,
|
|
235
|
+
note_id: note.id,
|
|
236
|
+
note_path: note.path,
|
|
237
|
+
suggestion: 'Remove the secret and rotate the credential. Use environment variables instead.',
|
|
238
|
+
});
|
|
239
|
+
break; // one warning per note is enough
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return issues;
|
|
244
|
+
}
|
|
168
245
|
/**
|
|
169
246
|
* Resolve a wikilink target against the vault index.
|
|
170
247
|
* Checks id, title, and aliases.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault-integrity.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/vault-integrity.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAiB;IAChD,OAAO,KAAK,CAAC,QAAQ;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,SAAS,EAAE,iBAA0B;QACrC,QAAQ,EAAE,OAAgB;QAC1B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,gEAAgE;KAC7E,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAiB;IAC9C,OAAO,KAAK,CAAC,QAAQ;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,SAAS,EAAE,iBAA0B;QACrC,QAAQ,EAAE,OAAgB;QAC1B,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,4DAA4D;KACzE,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAiB;IACvD,OAAO,KAAK,CAAC,QAAQ;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC;SAC/C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,SAAS,EAAE,iBAA0B;QACrC,QAAQ,EAAE,OAAgB;QAC1B,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,qDAAqD;KAClE,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAiB;IACnD,OAAO,KAAK,CAAC,QAAQ;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,SAAS,EAAE,iBAA0B;QACrC,QAAQ,EAAE,OAAgB;QAC1B,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,oFAAoF;KACjG,CAAC,CAAC,CAAC;AACR,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"vault-integrity.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/vault-integrity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Verify orchestrator.
|
|
3
|
-
* Runs all verification checks across completeness, correctness, coherence,
|
|
4
|
-
* and vault integrity dimensions. Takes a VaultIndex and returns a VerifyReport.
|
|
5
|
-
*/
|
|
6
1
|
import type { VaultIndex } from '../../../types/index.js';
|
|
7
2
|
import type { VerifyReport } from '../../../types/verify.js';
|
|
8
3
|
export interface VerifyOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/verify.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAgC,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAmC3F,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,CAoK/E"}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Verify orchestrator.
|
|
3
|
+
* Runs all verification checks across completeness, correctness, coherence,
|
|
4
|
+
* and vault integrity dimensions. Takes a VaultIndex and returns a VerifyReport.
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync } from 'node:fs';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import { VERIFY_REPORT_SCHEMA_VERSION } from '../../../types/verify.js';
|
|
9
|
+
import { duplicateIdCheck, missingIdCheck, unresolvedWikilinkCheck, ambiguousAliasCheck, orphanNoteCheck, archivePlacementCheck, invalidFrontmatterTypeCheck, emptyTypedNoteCheck, titleIdCollisionCheck, secretLeakCheck, } from './vault-integrity.js';
|
|
2
10
|
import { checkFeatureCompleteness, checkChangeCompleteness, checkMinimumSections, } from './completeness.js';
|
|
3
11
|
import { runOperationValidationMatrix, checkStaleBase, checkStatusTransition, checkSchemaVersionMatch, checkDriftForStatus, checkUnfilledApplyMarkers, } from './correctness.js';
|
|
4
|
-
import { checkConflictsViaSequencing, checkDescriptionConsistency, checkDecisionConsistency, checkDependsOnConsistency, } from './coherence.js';
|
|
12
|
+
import { checkConflictsViaSequencing, checkDescriptionConsistency, checkDecisionConsistency, checkDependsOnConsistency, checkFeatureChangeBacklinks, } from './coherence.js';
|
|
5
13
|
/**
|
|
6
14
|
* Main verify entry point.
|
|
7
15
|
* Stateless: takes a VaultIndex, does NOT build its own index.
|
|
@@ -10,11 +18,48 @@ export function verify(index, options) {
|
|
|
10
18
|
const issues = [];
|
|
11
19
|
const allRecords = Array.from(index.records.values());
|
|
12
20
|
const schemaVersion = index.schema_version;
|
|
21
|
+
// Concurrency warning: an in-flight `ows apply` holds wiki/.ows-lock and
|
|
22
|
+
// shuffles Feature files through temp/backup names. If verify runs while
|
|
23
|
+
// that's happening, buildIndex silently skips ENOENT on moved files and
|
|
24
|
+
// produces a phantom "everything is missing" report. Detect the lock up
|
|
25
|
+
// front and emit an info issue so operators know the verify results are
|
|
26
|
+
// against a half-mutated vault.
|
|
27
|
+
if (index.vaultRoot) {
|
|
28
|
+
const lockPath = join(index.vaultRoot, 'wiki', '.ows-lock');
|
|
29
|
+
if (existsSync(lockPath)) {
|
|
30
|
+
issues.push({
|
|
31
|
+
dimension: 'vault_integrity',
|
|
32
|
+
severity: 'info',
|
|
33
|
+
code: 'APPLY_IN_PROGRESS',
|
|
34
|
+
message: 'wiki/.ows-lock is present — another process is running `ows apply`. ' +
|
|
35
|
+
'Verify results may reflect a half-mutated state (files may be in ' +
|
|
36
|
+
'temp/backup names). Re-run verify after apply completes.',
|
|
37
|
+
suggestion: 'Wait for the apply to finish, then run `ows verify` again.',
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
13
41
|
// Determine which records to check based on options
|
|
14
42
|
let targetRecords = allRecords;
|
|
15
43
|
if (options?.changeId) {
|
|
16
44
|
const targetChange = index.records.get(options.changeId);
|
|
17
45
|
if (targetChange) {
|
|
46
|
+
// Archived changes: verify scope is narrower. Archived changes are
|
|
47
|
+
// historical records and shouldn't run pre-apply correctness checks
|
|
48
|
+
// (they've already been applied) or be treated like active ones for
|
|
49
|
+
// coherence. Surface an info-level note so users know the
|
|
50
|
+
// interpretation of the report.
|
|
51
|
+
const isArchived = targetChange.path.startsWith('wiki/99-archive/');
|
|
52
|
+
if (isArchived) {
|
|
53
|
+
issues.push({
|
|
54
|
+
dimension: 'vault_integrity',
|
|
55
|
+
severity: 'info',
|
|
56
|
+
code: 'ARCHIVED_TARGET',
|
|
57
|
+
message: `Change "${options.changeId}" is archived. Verify runs with reduced scope — ` +
|
|
58
|
+
'no pre-apply matrix, no status transition check. Use `ows list --json` to see active changes.',
|
|
59
|
+
note_id: targetChange.id,
|
|
60
|
+
note_path: targetChange.path,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
18
63
|
// Include the target change and its directly related notes
|
|
19
64
|
const relatedIds = new Set([options.changeId]);
|
|
20
65
|
if (targetChange.feature)
|
|
@@ -42,6 +87,7 @@ export function verify(index, options) {
|
|
|
42
87
|
issues.push(...invalidFrontmatterTypeCheck(index));
|
|
43
88
|
issues.push(...emptyTypedNoteCheck(index));
|
|
44
89
|
issues.push(...titleIdCollisionCheck(index));
|
|
90
|
+
issues.push(...secretLeakCheck(targetRecords));
|
|
45
91
|
// 2. Completeness checks
|
|
46
92
|
for (const record of targetRecords) {
|
|
47
93
|
if (record.type === 'feature') {
|
|
@@ -90,10 +136,14 @@ export function verify(index, options) {
|
|
|
90
136
|
// Always use allRecords for conflict detection — scoping to targetRecords
|
|
91
137
|
// would hide parallel changes that touch the same feature/system.
|
|
92
138
|
const activeChanges = allRecords.filter((r) => r.type === 'change' && r.status !== 'applied');
|
|
93
|
-
|
|
139
|
+
// Run sequencing even with a single active change so we still detect
|
|
140
|
+
// self-referencing cycles (change depends_on includes itself), stale base
|
|
141
|
+
// fingerprints, and requirement conflicts within that single change.
|
|
142
|
+
if (activeChanges.length >= 1) {
|
|
94
143
|
issues.push(...checkConflictsViaSequencing(activeChanges, index));
|
|
95
144
|
}
|
|
96
145
|
issues.push(...checkDependsOnConsistency(activeChanges, index));
|
|
146
|
+
issues.push(...checkFeatureChangeBacklinks(options?.changeId ? targetRecords : allRecords));
|
|
97
147
|
issues.push(...checkDescriptionConsistency(options?.changeId ? targetRecords : allRecords));
|
|
98
148
|
issues.push(...checkDecisionConsistency((options?.changeId ? targetRecords : allRecords).filter((r) => r.type === 'decision'), (options?.changeId ? targetRecords : allRecords).filter((r) => r.type === 'feature')));
|
|
99
149
|
}
|
|
@@ -103,6 +153,7 @@ export function verify(index, options) {
|
|
|
103
153
|
? issues.filter((i) => i.severity === 'error' || i.severity === 'warning').length === 0
|
|
104
154
|
: issues.filter((i) => i.severity === 'error').length === 0;
|
|
105
155
|
return {
|
|
156
|
+
schema_version: VERIFY_REPORT_SCHEMA_VERSION,
|
|
106
157
|
scanned_at: new Date().toISOString(),
|
|
107
158
|
total_notes: allRecords.length,
|
|
108
159
|
issues,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/verify.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,18 @@ export { analyzeSequencing } from './core/sequencing/analyze.js';
|
|
|
5
5
|
export { parseNote } from './core/parser/note-parser.js';
|
|
6
6
|
export { propose } from './core/workflow/propose/propose.js';
|
|
7
7
|
export { continueChange } from './core/workflow/continue/continue.js';
|
|
8
|
+
export { applyChange } from './core/workflow/apply/apply.js';
|
|
9
|
+
export { queryWorkflow } from './core/workflow/query/query.js';
|
|
10
|
+
export { revertChange } from './cli/commands/revert.js';
|
|
11
|
+
export type { RevertResult } from './cli/commands/revert.js';
|
|
12
|
+
export { executeMigration } from './core/migrate/migrate.js';
|
|
13
|
+
export { scanOpenSpec } from './core/migrate/scanner.js';
|
|
14
|
+
export { CURRENT_SCHEMA_VERSION, SUPPORTED_SCHEMA_VERSIONS, isSchemaVersionSupported, readSchemaVersion, } from './core/index/schema-version.js';
|
|
15
|
+
export { VERIFY_CODES, VERIFY_REPORT_SCHEMA_VERSION } from './types/verify.js';
|
|
16
|
+
export { ERROR_CODES } from './types/error-codes.js';
|
|
17
|
+
export type { ErrorCode } from './types/error-codes.js';
|
|
18
|
+
export { PROPOSE_RESULT_SCHEMA_VERSION } from './core/workflow/propose/types.js';
|
|
19
|
+
export { ENVELOPE_VERSION } from './cli/json-envelope.js';
|
|
8
20
|
export type { NoteType, ChangeStatus, FeatureStatus, GeneralStatus, } from './types/notes.js';
|
|
9
21
|
export type { BaseFrontmatter, FeatureFrontmatter, ChangeFrontmatter, SystemFrontmatter, DecisionFrontmatter, SourceFrontmatter, QueryFrontmatter, Frontmatter, } from './types/frontmatter.js';
|
|
10
22
|
export type { Requirement, Scenario, } from './types/requirement.js';
|
|
@@ -14,4 +26,5 @@ export type { IndexRecord, VaultIndex, IndexWarning, } from './types/index-recor
|
|
|
14
26
|
export type { RetrievalQuery, Classification, Confidence, ScoredCandidate, SequencingSummary, RetrievalResult, } from './types/retrieval.js';
|
|
15
27
|
export type { NextActionType, NextAction, } from './types/next-action.js';
|
|
16
28
|
export type { VerifyIssue, VerifyReport, IssueSeverity, VerifyDimension, } from './types/verify.js';
|
|
29
|
+
export type { CliJsonEnvelope, ListItem, ListResult, StatusResult, StatusSectionCompleteness, CliErrorPayload, } from './types/cli-contracts.js';
|
|
17
30
|
//# 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":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACV,WAAW,EACX,QAAQ,GACT,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACV,OAAO,EACP,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,YAAY,EACV,WAAW,EACX,UAAU,EACV,YAAY,GACb,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,cAAc,EACd,UAAU,GACX,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,yBAAyB,EACzB,eAAe,GAChB,MAAM,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,4 +6,15 @@ export { analyzeSequencing } from './core/sequencing/analyze.js';
|
|
|
6
6
|
export { parseNote } from './core/parser/note-parser.js';
|
|
7
7
|
export { propose } from './core/workflow/propose/propose.js';
|
|
8
8
|
export { continueChange } from './core/workflow/continue/continue.js';
|
|
9
|
+
export { applyChange } from './core/workflow/apply/apply.js';
|
|
10
|
+
export { queryWorkflow } from './core/workflow/query/query.js';
|
|
11
|
+
export { revertChange } from './cli/commands/revert.js';
|
|
12
|
+
export { executeMigration } from './core/migrate/migrate.js';
|
|
13
|
+
export { scanOpenSpec } from './core/migrate/scanner.js';
|
|
14
|
+
export { CURRENT_SCHEMA_VERSION, SUPPORTED_SCHEMA_VERSIONS, isSchemaVersionSupported, readSchemaVersion, } from './core/index/schema-version.js';
|
|
15
|
+
export { VERIFY_CODES, VERIFY_REPORT_SCHEMA_VERSION } from './types/verify.js';
|
|
16
|
+
export { ERROR_CODES } from './types/error-codes.js';
|
|
17
|
+
export { PROPOSE_RESULT_SCHEMA_VERSION } from './core/workflow/propose/types.js';
|
|
18
|
+
// Envelope version constant — consumers can pin against this to detect drift.
|
|
19
|
+
export { ENVELOPE_VERSION } from './cli/json-envelope.js';
|
|
9
20
|
//# 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,oBAAoB;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,8EAA8E;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public JSON output contracts for the `ows` CLI.
|
|
3
|
+
*
|
|
4
|
+
* These interfaces define the stable wire-shape of `--json` output for each
|
|
5
|
+
* command. AI agents and automation scripts should type their consumers
|
|
6
|
+
* against these types to survive minor implementation changes.
|
|
7
|
+
*
|
|
8
|
+
* Stability: Adding new OPTIONAL fields is non-breaking. Removing or renaming
|
|
9
|
+
* existing fields requires a schema_version bump in CURRENT_SCHEMA_VERSION
|
|
10
|
+
* and a release note.
|
|
11
|
+
*/
|
|
12
|
+
import type { NoteType } from './notes.js';
|
|
13
|
+
import type { NextAction } from './next-action.js';
|
|
14
|
+
/** Single item returned by `ows list --json`. */
|
|
15
|
+
export interface ListItem {
|
|
16
|
+
id: string;
|
|
17
|
+
type: NoteType;
|
|
18
|
+
title: string;
|
|
19
|
+
status: string;
|
|
20
|
+
path: string;
|
|
21
|
+
linkedFeature?: string;
|
|
22
|
+
taskProgress?: {
|
|
23
|
+
total: number;
|
|
24
|
+
completed: number;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** Result of `ows list --json`. */
|
|
28
|
+
export interface ListResult {
|
|
29
|
+
type: 'changes' | 'features' | 'all';
|
|
30
|
+
items: ListItem[];
|
|
31
|
+
}
|
|
32
|
+
/** Section completeness map returned by `ows status --json`. */
|
|
33
|
+
export interface StatusSectionCompleteness {
|
|
34
|
+
why: boolean;
|
|
35
|
+
deltaSummary: boolean;
|
|
36
|
+
tasks: boolean;
|
|
37
|
+
validation: boolean;
|
|
38
|
+
designApproach?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/** Result of `ows status <id> --json`. */
|
|
41
|
+
export interface StatusResult {
|
|
42
|
+
changeId: string;
|
|
43
|
+
status: string;
|
|
44
|
+
/** Linked Feature note IDs (resolved from the change's `feature`/`features` field). */
|
|
45
|
+
features: string[];
|
|
46
|
+
sectionCompleteness: StatusSectionCompleteness;
|
|
47
|
+
taskProgress: {
|
|
48
|
+
total: number;
|
|
49
|
+
completed: number;
|
|
50
|
+
};
|
|
51
|
+
nextAction: NextAction;
|
|
52
|
+
/** Change IDs (or raw wikilink targets) blocking this change. */
|
|
53
|
+
blockedBy: string[];
|
|
54
|
+
}
|
|
55
|
+
/** Unified success envelope for all CLI --json output. */
|
|
56
|
+
export interface CliJsonEnvelope<T = unknown> {
|
|
57
|
+
ok: true;
|
|
58
|
+
command: string;
|
|
59
|
+
/**
|
|
60
|
+
* Envelope schema version. Current CLI always emits `"1"` (see
|
|
61
|
+
* `ENVELOPE_VERSION`). Typed as `string` so consumers can parse
|
|
62
|
+
* future versions without retyping; check against `ENVELOPE_VERSION`
|
|
63
|
+
* at runtime if strict version pinning is needed.
|
|
64
|
+
*/
|
|
65
|
+
envelope_version: string;
|
|
66
|
+
/** CLI package version that produced this envelope. */
|
|
67
|
+
version: string;
|
|
68
|
+
data: T;
|
|
69
|
+
}
|
|
70
|
+
/** Unified error payload produced by handleCliError() in --json mode. */
|
|
71
|
+
export interface CliErrorPayload {
|
|
72
|
+
error: true;
|
|
73
|
+
code: string;
|
|
74
|
+
message: string;
|
|
75
|
+
/** Extra structured data carried by typed errors (e.g., AmbiguousChangeError candidates). */
|
|
76
|
+
details?: Record<string, unknown>;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=cli-contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-contracts.d.ts","sourceRoot":"","sources":["../../src/types/cli-contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,iDAAiD;AACjD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD;AAED,mCAAmC;AACnC,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;IACrC,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,gEAAgE;AAChE,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,OAAO,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mBAAmB,EAAE,yBAAyB,CAAC;IAC/C,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,UAAU,EAAE,UAAU,CAAC;IACvB,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,0DAA0D;AAC1D,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,CAAC,CAAC;CACT;AAED,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-contracts.js","sourceRoot":"","sources":["../../src/types/cli-contracts.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Central taxonomy of runtime/usage error codes emitted by ows CLI commands
|
|
3
|
+
* and workflow functions. These are distinct from VerifyIssue codes (see
|
|
4
|
+
* `./verify.ts` → `VERIFY_CODES`), which classify findings inside a
|
|
5
|
+
* `VerifyReport`. ERROR_CODES classify thrown errors and --json error payloads.
|
|
6
|
+
*
|
|
7
|
+
* AI agents and automation scripts should branch on these values when
|
|
8
|
+
* `handleCliError()` emits `{ error: true, code, message }` in JSON mode.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ERROR_CODES: {
|
|
11
|
+
readonly RUNTIME_ERROR: "RUNTIME_ERROR";
|
|
12
|
+
readonly COMMANDER_ERROR: "COMMANDER_ERROR";
|
|
13
|
+
readonly READ_ONLY_FILESYSTEM: "READ_ONLY_FILESYSTEM";
|
|
14
|
+
readonly PERMISSION_DENIED: "PERMISSION_DENIED";
|
|
15
|
+
readonly DISK_FULL: "DISK_FULL";
|
|
16
|
+
readonly AMBIGUOUS_CHANGE_SELECTION: "AMBIGUOUS_CHANGE_SELECTION";
|
|
17
|
+
readonly CHANGE_NOT_FOUND: "CHANGE_NOT_FOUND";
|
|
18
|
+
readonly FEATURE_NOT_FOUND: "FEATURE_NOT_FOUND";
|
|
19
|
+
readonly INVALID_STATUS: "INVALID_STATUS";
|
|
20
|
+
readonly STALE_BASE: "STALE_BASE";
|
|
21
|
+
readonly EMPTY_INPUT: "EMPTY_INPUT";
|
|
22
|
+
readonly VAULT_NOT_FOUND: "VAULT_NOT_FOUND";
|
|
23
|
+
};
|
|
24
|
+
export type ErrorCode = typeof ERROR_CODES[keyof typeof ERROR_CODES];
|
|
25
|
+
//# sourceMappingURL=error-codes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/types/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAkBd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Central taxonomy of runtime/usage error codes emitted by ows CLI commands
|
|
3
|
+
* and workflow functions. These are distinct from VerifyIssue codes (see
|
|
4
|
+
* `./verify.ts` → `VERIFY_CODES`), which classify findings inside a
|
|
5
|
+
* `VerifyReport`. ERROR_CODES classify thrown errors and --json error payloads.
|
|
6
|
+
*
|
|
7
|
+
* AI agents and automation scripts should branch on these values when
|
|
8
|
+
* `handleCliError()` emits `{ error: true, code, message }` in JSON mode.
|
|
9
|
+
*/
|
|
10
|
+
export const ERROR_CODES = {
|
|
11
|
+
// Generic fallbacks
|
|
12
|
+
RUNTIME_ERROR: 'RUNTIME_ERROR',
|
|
13
|
+
COMMANDER_ERROR: 'COMMANDER_ERROR',
|
|
14
|
+
// Filesystem errors (translated from errno)
|
|
15
|
+
READ_ONLY_FILESYSTEM: 'READ_ONLY_FILESYSTEM',
|
|
16
|
+
PERMISSION_DENIED: 'PERMISSION_DENIED',
|
|
17
|
+
DISK_FULL: 'DISK_FULL',
|
|
18
|
+
// Domain errors
|
|
19
|
+
AMBIGUOUS_CHANGE_SELECTION: 'AMBIGUOUS_CHANGE_SELECTION',
|
|
20
|
+
CHANGE_NOT_FOUND: 'CHANGE_NOT_FOUND',
|
|
21
|
+
FEATURE_NOT_FOUND: 'FEATURE_NOT_FOUND',
|
|
22
|
+
INVALID_STATUS: 'INVALID_STATUS',
|
|
23
|
+
STALE_BASE: 'STALE_BASE',
|
|
24
|
+
EMPTY_INPUT: 'EMPTY_INPUT',
|
|
25
|
+
VAULT_NOT_FOUND: 'VAULT_NOT_FOUND',
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=error-codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../../src/types/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,oBAAoB;IACpB,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAElC,4CAA4C;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,iBAAiB,EAAE,mBAAmB;IACtC,SAAS,EAAE,WAAW;IAEtB,gBAAgB;IAChB,0BAA0B,EAAE,4BAA4B;IACxD,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,iBAAiB;CAC1B,CAAC"}
|
|
@@ -4,6 +4,8 @@ export interface BaseFrontmatter {
|
|
|
4
4
|
id: string;
|
|
5
5
|
status: string;
|
|
6
6
|
tags: string[];
|
|
7
|
+
/** Obsidian-compatible aliases for the note. */
|
|
8
|
+
aliases?: string[];
|
|
7
9
|
}
|
|
8
10
|
export interface FeatureFrontmatter extends BaseFrontmatter {
|
|
9
11
|
type: 'feature';
|
|
@@ -22,8 +24,8 @@ export interface ChangeFrontmatter extends BaseFrontmatter {
|
|
|
22
24
|
depends_on: string[];
|
|
23
25
|
touches: string[];
|
|
24
26
|
systems: string[];
|
|
25
|
-
sources
|
|
26
|
-
decisions
|
|
27
|
+
sources?: string[];
|
|
28
|
+
decisions?: string[];
|
|
27
29
|
}
|
|
28
30
|
export interface SystemFrontmatter extends BaseFrontmatter {
|
|
29
31
|
type: 'system';
|
|
@@ -46,6 +48,11 @@ export interface QueryFrontmatter extends BaseFrontmatter {
|
|
|
46
48
|
consulted?: string[];
|
|
47
49
|
features?: string[];
|
|
48
50
|
systems?: string[];
|
|
51
|
+
changes?: string[];
|
|
52
|
+
decisions?: string[];
|
|
53
|
+
sources?: string[];
|
|
54
|
+
related_queries?: string[];
|
|
55
|
+
created_at?: string;
|
|
49
56
|
}
|
|
50
57
|
export type Frontmatter = FeatureFrontmatter | ChangeFrontmatter | SystemFrontmatter | DecisionFrontmatter | SourceFrontmatter | QueryFrontmatter;
|
|
51
58
|
//# sourceMappingURL=frontmatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/types/frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/types/frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,CAAC"}
|
|
@@ -2,7 +2,28 @@ import type { ChangeStatus } from './notes.js';
|
|
|
2
2
|
export type NextActionType = 'fill_section' | 'transition' | 'start_implementation' | 'continue_task' | 'blocked' | 'ready_to_apply' | 'verify_then_archive';
|
|
3
3
|
export interface NextAction {
|
|
4
4
|
action: NextActionType;
|
|
5
|
+
/**
|
|
6
|
+
* Human-readable target name. For `fill_section` this is the section name
|
|
7
|
+
* (e.g. "Why"). For `continue_task`/`start_implementation` this is the task
|
|
8
|
+
* description (e.g. "Add OAuth support").
|
|
9
|
+
*/
|
|
5
10
|
target?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Zero-based task index, present for `continue_task` and `start_implementation`.
|
|
13
|
+
* Agents can use this to know exactly which task in the Tasks list to work on
|
|
14
|
+
* even if multiple tasks share the same description prefix.
|
|
15
|
+
*/
|
|
16
|
+
taskIndex?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Agent-facing guidance for `fill_section`. Explains what content the section
|
|
19
|
+
* should contain so an automation can fill it without re-reading docs.
|
|
20
|
+
*/
|
|
21
|
+
guidance?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Markdown template snippet for `fill_section`. Can be inserted verbatim and
|
|
24
|
+
* then populated with specifics.
|
|
25
|
+
*/
|
|
26
|
+
templateHint?: string;
|
|
6
27
|
to?: ChangeStatus;
|
|
7
28
|
reason?: string;
|
|
8
29
|
blockers?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-action.d.ts","sourceRoot":"","sources":["../../src/types/next-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,YAAY,GACZ,sBAAsB,GACtB,eAAe,GACf,SAAS,GACT,gBAAgB,GAChB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,YAAY,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB"}
|
|
1
|
+
{"version":3,"file":"next-action.d.ts","sourceRoot":"","sources":["../../src/types/next-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,YAAY,GACZ,sBAAsB,GACtB,eAAe,GACf,SAAS,GACT,gBAAgB,GAChB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,YAAY,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB"}
|
|
@@ -30,5 +30,22 @@ export interface RetrievalResult {
|
|
|
30
30
|
sequencing: SequencingSummary;
|
|
31
31
|
candidates: ScoredCandidate[];
|
|
32
32
|
warnings: string[];
|
|
33
|
+
/**
|
|
34
|
+
* Human-readable justification for the chosen classification/confidence
|
|
35
|
+
* pair. Especially important for `needs_confirmation` — without this
|
|
36
|
+
* field, agents (and users reading `--json`) have no way to tell WHY
|
|
37
|
+
* the engine asked for confirmation (top-two tie? sequencing conflict?
|
|
38
|
+
* under-specified query? index quality issues?). Always set by
|
|
39
|
+
* `classify()` so downstream consumers can trust its presence.
|
|
40
|
+
*/
|
|
41
|
+
classification_reason?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Whether semantic (embedding-based) search was available for this
|
|
44
|
+
* retrieval run. When false, results are lexical-only — lower recall
|
|
45
|
+
* for semantically-similar but lexically-different queries. JSON
|
|
46
|
+
* consumers (CI, agents) can use this to decide whether the
|
|
47
|
+
* classification is trustworthy enough to auto-act on.
|
|
48
|
+
*/
|
|
49
|
+
semantic_used?: boolean;
|
|
33
50
|
}
|
|
34
51
|
//# sourceMappingURL=retrieval.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retrieval.d.ts","sourceRoot":"","sources":["../../src/types/retrieval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,aAAa,GAAG,oBAAoB,CAAC;AAC3G,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,GAAG,cAAc,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAClG,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"retrieval.d.ts","sourceRoot":"","sources":["../../src/types/retrieval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,aAAa,GAAG,oBAAoB,CAAC;AAC3G,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,GAAG,cAAc,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAClG,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
|