mewkit 1.11.1 → 1.12.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/commands/build-plugin.d.ts +8 -0
- package/dist/commands/build-plugin.d.ts.map +1 -0
- package/dist/commands/build-plugin.js +48 -0
- package/dist/commands/build-plugin.js.map +1 -0
- package/dist/commands/doctor-checks.d.ts +9 -0
- package/dist/commands/doctor-checks.d.ts.map +1 -1
- package/dist/commands/doctor-checks.js +42 -0
- package/dist/commands/doctor-checks.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +2 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/index-command.d.ts.map +1 -1
- package/dist/commands/index-command.js +2 -1
- package/dist/commands/index-command.js.map +1 -1
- package/dist/commands/validate.d.ts +3 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +9 -0
- package/dist/commands/validate.js.map +1 -1
- package/dist/core/check-plugin-manifests.d.ts +10 -0
- package/dist/core/check-plugin-manifests.d.ts.map +1 -0
- package/dist/core/check-plugin-manifests.js +150 -0
- package/dist/core/check-plugin-manifests.js.map +1 -0
- package/dist/core/derived-index.d.ts +5 -3
- package/dist/core/derived-index.d.ts.map +1 -1
- package/dist/core/derived-index.js +35 -10
- package/dist/core/derived-index.js.map +1 -1
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/plugin-agent-refs.d.ts +22 -0
- package/dist/core/plugin-agent-refs.d.ts.map +1 -0
- package/dist/core/plugin-agent-refs.js +87 -0
- package/dist/core/plugin-agent-refs.js.map +1 -0
- package/dist/core/plugin-hooks.d.ts +15 -0
- package/dist/core/plugin-hooks.d.ts.map +1 -0
- package/dist/core/plugin-hooks.js +58 -0
- package/dist/core/plugin-hooks.js.map +1 -0
- package/dist/core/plugin-manifest.d.ts +289 -0
- package/dist/core/plugin-manifest.d.ts.map +1 -0
- package/dist/core/plugin-manifest.js +125 -0
- package/dist/core/plugin-manifest.js.map +1 -0
- package/dist/core/plugin-payload.d.ts +26 -0
- package/dist/core/plugin-payload.d.ts.map +1 -0
- package/dist/core/plugin-payload.js +138 -0
- package/dist/core/plugin-payload.js.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/wiki/application/ports.d.ts +111 -0
- package/dist/wiki/application/ports.d.ts.map +1 -0
- package/dist/wiki/application/ports.js +33 -0
- package/dist/wiki/application/ports.js.map +1 -0
- package/dist/wiki/application/queries.d.ts +5 -0
- package/dist/wiki/application/queries.d.ts.map +1 -0
- package/dist/wiki/application/queries.js +10 -0
- package/dist/wiki/application/queries.js.map +1 -0
- package/dist/wiki/application/research.d.ts +16 -0
- package/dist/wiki/application/research.d.ts.map +1 -0
- package/dist/wiki/application/research.js +48 -0
- package/dist/wiki/application/research.js.map +1 -0
- package/dist/wiki/application/service.d.ts +27 -0
- package/dist/wiki/application/service.d.ts.map +1 -0
- package/dist/wiki/application/service.js +153 -0
- package/dist/wiki/application/service.js.map +1 -0
- package/dist/wiki/domain/index.d.ts +5 -0
- package/dist/wiki/domain/index.d.ts.map +1 -0
- package/dist/wiki/domain/index.js +6 -0
- package/dist/wiki/domain/index.js.map +1 -0
- package/dist/wiki/domain/invariants.d.ts +28 -0
- package/dist/wiki/domain/invariants.d.ts.map +1 -0
- package/dist/wiki/domain/invariants.js +84 -0
- package/dist/wiki/domain/invariants.js.map +1 -0
- package/dist/wiki/domain/salience.d.ts +11 -0
- package/dist/wiki/domain/salience.d.ts.map +1 -0
- package/dist/wiki/domain/salience.js +40 -0
- package/dist/wiki/domain/salience.js.map +1 -0
- package/dist/wiki/domain/types.d.ts +151 -0
- package/dist/wiki/domain/types.d.ts.map +1 -0
- package/dist/wiki/domain/types.js +27 -0
- package/dist/wiki/domain/types.js.map +1 -0
- package/dist/wiki/domain/write-decision.d.ts +25 -0
- package/dist/wiki/domain/write-decision.d.ts.map +1 -0
- package/dist/wiki/domain/write-decision.js +71 -0
- package/dist/wiki/domain/write-decision.js.map +1 -0
- package/dist/wiki/infrastructure/fetcher-adapter.d.ts +45 -0
- package/dist/wiki/infrastructure/fetcher-adapter.d.ts.map +1 -0
- package/dist/wiki/infrastructure/fetcher-adapter.js +99 -0
- package/dist/wiki/infrastructure/fetcher-adapter.js.map +1 -0
- package/dist/wiki/infrastructure/inventory-adapter.d.ts +13 -0
- package/dist/wiki/infrastructure/inventory-adapter.d.ts.map +1 -0
- package/dist/wiki/infrastructure/inventory-adapter.js +46 -0
- package/dist/wiki/infrastructure/inventory-adapter.js.map +1 -0
- package/dist/wiki/infrastructure/markdown-repository.d.ts +23 -0
- package/dist/wiki/infrastructure/markdown-repository.d.ts.map +1 -0
- package/dist/wiki/infrastructure/markdown-repository.js +168 -0
- package/dist/wiki/infrastructure/markdown-repository.js.map +1 -0
- package/dist/wiki/infrastructure/scan-patterns.d.ts +20 -0
- package/dist/wiki/infrastructure/scan-patterns.d.ts.map +1 -0
- package/dist/wiki/infrastructure/scan-patterns.js +106 -0
- package/dist/wiki/infrastructure/scan-patterns.js.map +1 -0
- package/dist/wiki/infrastructure/scanner-adapter.d.ts +10 -0
- package/dist/wiki/infrastructure/scanner-adapter.d.ts.map +1 -0
- package/dist/wiki/infrastructure/scanner-adapter.js +147 -0
- package/dist/wiki/infrastructure/scanner-adapter.js.map +1 -0
- package/dist/wiki/infrastructure/sqlite-index.d.ts +9 -0
- package/dist/wiki/infrastructure/sqlite-index.d.ts.map +1 -0
- package/dist/wiki/infrastructure/sqlite-index.js +36 -0
- package/dist/wiki/infrastructure/sqlite-index.js.map +1 -0
- package/dist/wiki/infrastructure/trace-adapter.d.ts +7 -0
- package/dist/wiki/infrastructure/trace-adapter.d.ts.map +1 -0
- package/dist/wiki/infrastructure/trace-adapter.js +42 -0
- package/dist/wiki/infrastructure/trace-adapter.js.map +1 -0
- package/dist/wiki/infrastructure/wiki-ingest.d.ts +14 -0
- package/dist/wiki/infrastructure/wiki-ingest.d.ts.map +1 -0
- package/dist/wiki/infrastructure/wiki-ingest.js +138 -0
- package/dist/wiki/infrastructure/wiki-ingest.js.map +1 -0
- package/dist/wiki/infrastructure/wiki-query.d.ts +15 -0
- package/dist/wiki/infrastructure/wiki-query.d.ts.map +1 -0
- package/dist/wiki/infrastructure/wiki-query.js +46 -0
- package/dist/wiki/infrastructure/wiki-query.js.map +1 -0
- package/dist/wiki/infrastructure/wiki-schema.d.ts +3 -0
- package/dist/wiki/infrastructure/wiki-schema.d.ts.map +1 -0
- package/dist/wiki/infrastructure/wiki-schema.js +43 -0
- package/dist/wiki/infrastructure/wiki-schema.js.map +1 -0
- package/dist/wiki/interface/cli.d.ts +7 -0
- package/dist/wiki/interface/cli.d.ts.map +1 -0
- package/dist/wiki/interface/cli.js +160 -0
- package/dist/wiki/interface/cli.js.map +1 -0
- package/dist/wiki/render.d.ts +3 -0
- package/dist/wiki/render.d.ts.map +1 -0
- package/dist/wiki/render.js +58 -0
- package/dist/wiki/render.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { DupCheck, InjectionVerdict, SalienceComponents, VerificationState, WikiCandidate, WikiIntervention, WikiOrigin, WikiPage, WikiSeed, WikiSlug, WikiSource, WikiWriteDecision } from "../domain/index.js";
|
|
2
|
+
export interface ScanInput {
|
|
3
|
+
content: string;
|
|
4
|
+
origin: WikiOrigin;
|
|
5
|
+
/** Present when the draft came from a fetched source; the scanner URL-guards it. */
|
|
6
|
+
sourceUrl?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ScanOutput {
|
|
9
|
+
verdict: InjectionVerdict;
|
|
10
|
+
/** Content with secrets scrubbed — the only form that may ever be persisted. */
|
|
11
|
+
scrubbed: string;
|
|
12
|
+
secretsFound: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The write-authorization token. Its constructor is private, so the ONLY way to obtain
|
|
16
|
+
* an instance is `ApprovedWrite.issue(...)`, which throws unless the verdict is clean and
|
|
17
|
+
* adequately scanned. `WikiRepository.writePage` accepts ONLY this type — a raw string or
|
|
18
|
+
* a plain object will not type-check — so the canonical-write chokepoint is enforced by
|
|
19
|
+
* the type system, not by lint.
|
|
20
|
+
*/
|
|
21
|
+
export declare class ApprovedWrite {
|
|
22
|
+
readonly page: WikiPage;
|
|
23
|
+
readonly verdict: InjectionVerdict;
|
|
24
|
+
private constructor();
|
|
25
|
+
/** Mint a token from a scan result. Throws unless the verdict is clean AND meets the
|
|
26
|
+
* multi-pass floor. The token is bound to the scanner's SCRUBBED content —
|
|
27
|
+
* the page that gets persisted always carries `scan.scrubbed`, never caller-supplied
|
|
28
|
+
* raw content — so a secret/injection cannot ride into a canonical page via a valid
|
|
29
|
+
* token. This is the single gate between scanning and canonical writing. */
|
|
30
|
+
static issue(page: WikiPage, scan: ScanOutput): ApprovedWrite;
|
|
31
|
+
}
|
|
32
|
+
export interface Scanner {
|
|
33
|
+
/** Run the full gate (URL-guard → size cap → normalize → multi-pass injection scan →
|
|
34
|
+
* secret scrub) and return a verdict plus the scrubbed content. */
|
|
35
|
+
scan(input: ScanInput): ScanOutput;
|
|
36
|
+
}
|
|
37
|
+
export interface WikiRepository {
|
|
38
|
+
createWiki(slug: WikiSlug, title: string): void;
|
|
39
|
+
/** Canonical page write — accepts ONLY a scanner-issued token. */
|
|
40
|
+
writePage(token: ApprovedWrite): void;
|
|
41
|
+
readPage(slug: WikiSlug, file: string): WikiPage | null;
|
|
42
|
+
listPages(slug: WikiSlug): string[];
|
|
43
|
+
/** Park rejected/injected content in a read-blocked .quarantined file; returns its path. */
|
|
44
|
+
quarantine(slug: WikiSlug, content: string, verdict: InjectionVerdict): string;
|
|
45
|
+
appendCandidate(candidate: WikiCandidate): void;
|
|
46
|
+
appendIntervention(slug: WikiSlug, intervention: WikiIntervention): void;
|
|
47
|
+
appendSeed(slug: WikiSlug, seed: WikiSeed): void;
|
|
48
|
+
appendSource(slug: WikiSlug, source: WikiSource): void;
|
|
49
|
+
listCandidates(slug: WikiSlug): WikiCandidate[];
|
|
50
|
+
getCandidate(slug: WikiSlug, id: string): WikiCandidate | null;
|
|
51
|
+
}
|
|
52
|
+
/** A document returned by the fetcher. Stubbed here so this layer type-checks
|
|
53
|
+
* standalone; the concrete FetcherAdapter and runResearchStep wiring land with the research loop. */
|
|
54
|
+
export interface FetchedDoc {
|
|
55
|
+
content: string;
|
|
56
|
+
sourceUrl: string;
|
|
57
|
+
source: WikiSource;
|
|
58
|
+
}
|
|
59
|
+
export interface Fetcher {
|
|
60
|
+
fetch(seed: WikiSeed): Promise<FetchedDoc>;
|
|
61
|
+
}
|
|
62
|
+
export interface WikiSearchHit {
|
|
63
|
+
pageId: string;
|
|
64
|
+
slug: string;
|
|
65
|
+
title: string;
|
|
66
|
+
snippet: string;
|
|
67
|
+
tokenEstimate: number;
|
|
68
|
+
}
|
|
69
|
+
export interface WikiIndex {
|
|
70
|
+
upsertPage(page: WikiPage): void;
|
|
71
|
+
searchFts(query: string, limit?: number): WikiSearchHit[];
|
|
72
|
+
}
|
|
73
|
+
export interface Tracer {
|
|
74
|
+
recordWikiTrace(event: string, data: Record<string, unknown>): void;
|
|
75
|
+
}
|
|
76
|
+
export interface InventoryRegistrar {
|
|
77
|
+
register(artifactPath: string, meta?: {
|
|
78
|
+
criticality?: string;
|
|
79
|
+
status?: string;
|
|
80
|
+
}): void;
|
|
81
|
+
}
|
|
82
|
+
export interface WikiServiceDeps {
|
|
83
|
+
repo: WikiRepository;
|
|
84
|
+
scanner: Scanner;
|
|
85
|
+
index: WikiIndex;
|
|
86
|
+
tracer: Tracer;
|
|
87
|
+
/** Optional — present only when the research loop is enabled. */
|
|
88
|
+
fetcher?: Fetcher;
|
|
89
|
+
}
|
|
90
|
+
export interface ProposeInput {
|
|
91
|
+
slug: WikiSlug;
|
|
92
|
+
title: string;
|
|
93
|
+
content: string;
|
|
94
|
+
origin: WikiOrigin;
|
|
95
|
+
whySave: string;
|
|
96
|
+
evidence: string;
|
|
97
|
+
sourceIds: string[];
|
|
98
|
+
salience: SalienceComponents;
|
|
99
|
+
noveltyDelta?: number;
|
|
100
|
+
reuseScope?: string;
|
|
101
|
+
verificationState?: VerificationState;
|
|
102
|
+
riskScore?: number;
|
|
103
|
+
reviewAfter?: string;
|
|
104
|
+
sourceUrl?: string;
|
|
105
|
+
dup?: DupCheck;
|
|
106
|
+
}
|
|
107
|
+
export interface ProposeResult {
|
|
108
|
+
decision: WikiWriteDecision;
|
|
109
|
+
candidate?: WikiCandidate;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=ports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../../src/wiki/application/ports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Hexagonal ports: domain-facing interfaces the infrastructure adapters
|
|
2
|
+
// implement and the application service depends on. No concrete IO here.
|
|
3
|
+
import { MIN_SCAN_PASSES } from "../domain/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* The write-authorization token. Its constructor is private, so the ONLY way to obtain
|
|
6
|
+
* an instance is `ApprovedWrite.issue(...)`, which throws unless the verdict is clean and
|
|
7
|
+
* adequately scanned. `WikiRepository.writePage` accepts ONLY this type — a raw string or
|
|
8
|
+
* a plain object will not type-check — so the canonical-write chokepoint is enforced by
|
|
9
|
+
* the type system, not by lint.
|
|
10
|
+
*/
|
|
11
|
+
export class ApprovedWrite {
|
|
12
|
+
page;
|
|
13
|
+
verdict;
|
|
14
|
+
constructor(page, verdict) {
|
|
15
|
+
this.page = page;
|
|
16
|
+
this.verdict = verdict;
|
|
17
|
+
}
|
|
18
|
+
/** Mint a token from a scan result. Throws unless the verdict is clean AND meets the
|
|
19
|
+
* multi-pass floor. The token is bound to the scanner's SCRUBBED content —
|
|
20
|
+
* the page that gets persisted always carries `scan.scrubbed`, never caller-supplied
|
|
21
|
+
* raw content — so a secret/injection cannot ride into a canonical page via a valid
|
|
22
|
+
* token. This is the single gate between scanning and canonical writing. */
|
|
23
|
+
static issue(page, scan) {
|
|
24
|
+
if (scan.verdict.status !== "clean") {
|
|
25
|
+
throw new Error(`cannot authorize write: scan verdict is ${scan.verdict.status}`);
|
|
26
|
+
}
|
|
27
|
+
if (scan.verdict.passes < MIN_SCAN_PASSES) {
|
|
28
|
+
throw new Error(`cannot authorize write: only ${scan.verdict.passes} scan pass(es) (< ${MIN_SCAN_PASSES})`);
|
|
29
|
+
}
|
|
30
|
+
return new ApprovedWrite({ ...page, content: scan.scrubbed }, scan.verdict);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=ports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/wiki/application/ports.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,yEAAyE;AAgBzE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAgBrD;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IAEf;IACA;IAFV,YACU,IAAc,EACd,OAAyB;QADzB,SAAI,GAAJ,IAAI,CAAU;QACd,YAAO,GAAP,OAAO,CAAkB;IAChC,CAAC;IAEJ;;;;gFAI4E;IAC5E,MAAM,CAAC,KAAK,CAAC,IAAc,EAAE,IAAgB;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,OAAO,CAAC,MAAM,qBAAqB,eAAe,GAAG,CAAC,CAAC;QAC7G,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7E,CAAC;CACD"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { WikiSlug } from "../domain/index.js";
|
|
2
|
+
import type { WikiIndex, WikiRepository, WikiSearchHit } from "./ports.js";
|
|
3
|
+
export declare function searchWiki(index: Pick<WikiIndex, "searchFts">, query: string, limit?: number): WikiSearchHit[];
|
|
4
|
+
export declare function listWikiPages(repo: Pick<WikiRepository, "listPages">, slug: WikiSlug): string[];
|
|
5
|
+
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/wiki/application/queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAM3E,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,aAAa,EAAE,CAE1G;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAE/F"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Query side (CQS). These take ONLY the read-capable slice of each port via Pick<>, so a
|
|
2
|
+
// query physically cannot reach a write method (searchFts only, listPages only). searchWiki
|
|
3
|
+
// is side-effect-free — the FTS match string is bound, never interpolated (see wiki-query.ts).
|
|
4
|
+
export function searchWiki(index, query, limit = 10) {
|
|
5
|
+
return index.searchFts(query, limit);
|
|
6
|
+
}
|
|
7
|
+
export function listWikiPages(repo, slug) {
|
|
8
|
+
return repo.listPages(slug);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/wiki/application/queries.ts"],"names":[],"mappings":"AAGA,yFAAyF;AACzF,4FAA4F;AAC5F,+FAA+F;AAE/F,MAAM,UAAU,UAAU,CAAC,KAAmC,EAAE,KAAa,EAAE,KAAK,GAAG,EAAE;IACxF,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAuC,EAAE,IAAc;IACpF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { WikiSeed, WikiSlug, WikiSource, WikiWriteDecision } from "../domain/index.js";
|
|
2
|
+
import type { Fetcher, ProposeInput, ProposeResult, WikiIndex } from "./ports.js";
|
|
3
|
+
export interface ResearchContext {
|
|
4
|
+
fetcher: Fetcher;
|
|
5
|
+
index: Pick<WikiIndex, "searchFts">;
|
|
6
|
+
propose: (input: ProposeInput) => ProposeResult;
|
|
7
|
+
appendSource: (slug: WikiSlug, source: WikiSource) => void;
|
|
8
|
+
trace: (event: string, data: Record<string, unknown>) => void;
|
|
9
|
+
}
|
|
10
|
+
export interface ResearchOutcome {
|
|
11
|
+
decision: WikiWriteDecision["kind"];
|
|
12
|
+
candidateId?: string;
|
|
13
|
+
sourceUrl: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function runResearchStep(ctx: ResearchContext, slug: WikiSlug, seed: WikiSeed): Promise<ResearchOutcome>;
|
|
16
|
+
//# sourceMappingURL=research.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../../src/wiki/application/research.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1H,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQlF,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,aAAa,CAAC;IAChD,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC3D,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC9D;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CAClB;AA+BD,wBAAsB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAmBpH"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { makeWikiPageId } from "../domain/index.js";
|
|
2
|
+
function titleFor(seed, content) {
|
|
3
|
+
const firstLine = content
|
|
4
|
+
.split("\n")
|
|
5
|
+
.map((l) => l.replace(/^#+\s*/, "").trim())
|
|
6
|
+
.find((l) => l.length > 0);
|
|
7
|
+
return (firstLine ?? seed.query).slice(0, 80);
|
|
8
|
+
}
|
|
9
|
+
function salienceFor(seed, novel) {
|
|
10
|
+
const sourceQuality = seed.kind === "arxiv" || seed.kind === "github" ? 2 : 1;
|
|
11
|
+
return {
|
|
12
|
+
explicit_user_intent: 2, // the seed was enqueued — explicit intent to research this
|
|
13
|
+
verified_outcome: 0, // fetched content is unverified until a human approves
|
|
14
|
+
recurrence_or_friction: 0,
|
|
15
|
+
novelty_vs_existing_wiki: novel ? 2 : 0,
|
|
16
|
+
future_reuse_likelihood: 2,
|
|
17
|
+
source_quality: sourceQuality,
|
|
18
|
+
blast_radius: 1,
|
|
19
|
+
security_risk_penalty: 0,
|
|
20
|
+
staleness_penalty: 0,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function computeDup(index, title) {
|
|
24
|
+
const hits = index.searchFts(title, 3);
|
|
25
|
+
const match = hits.find((h) => h.title.toLowerCase() === title.toLowerCase());
|
|
26
|
+
return match ? { isHighDuplicate: true, existingPageId: makeWikiPageId(match.pageId) } : { isHighDuplicate: false };
|
|
27
|
+
}
|
|
28
|
+
export async function runResearchStep(ctx, slug, seed) {
|
|
29
|
+
const doc = await ctx.fetcher.fetch(seed); // url-guard + size-cap + redirect re-validation enforced in the fetcher
|
|
30
|
+
ctx.appendSource(slug, doc.source);
|
|
31
|
+
const title = titleFor(seed, doc.content);
|
|
32
|
+
const dup = computeDup(ctx.index, title);
|
|
33
|
+
const result = ctx.propose({
|
|
34
|
+
slug,
|
|
35
|
+
title,
|
|
36
|
+
content: doc.content,
|
|
37
|
+
origin: "agent",
|
|
38
|
+
whySave: "research:" + seed.kind,
|
|
39
|
+
evidence: doc.sourceUrl,
|
|
40
|
+
sourceIds: [doc.source.id],
|
|
41
|
+
salience: salienceFor(seed, !dup.isHighDuplicate),
|
|
42
|
+
sourceUrl: doc.sourceUrl,
|
|
43
|
+
dup,
|
|
44
|
+
});
|
|
45
|
+
ctx.trace("wiki_research_step", { slug, kind: seed.kind, url: doc.sourceUrl, decision: result.decision.kind });
|
|
46
|
+
return { decision: result.decision.kind, candidateId: result.candidate?.id, sourceUrl: doc.sourceUrl };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=research.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research.js","sourceRoot":"","sources":["../../../src/wiki/application/research.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { SalienceComponents, SalienceScore, WikiPage, WikiSeed, WikiSlug } from "../domain/index.js";
|
|
2
|
+
import { type IndexResult } from "../../core/derived-index.js";
|
|
3
|
+
import type { ProposeInput, ProposeResult, WikiServiceDeps } from "./ports.js";
|
|
4
|
+
import { type ResearchOutcome } from "./research.js";
|
|
5
|
+
export type { ProposeInput, ProposeResult, WikiServiceDeps } from "./ports.js";
|
|
6
|
+
export declare class WikiService {
|
|
7
|
+
private readonly deps;
|
|
8
|
+
constructor(deps: WikiServiceDeps);
|
|
9
|
+
createWiki(slug: WikiSlug, title: string): void;
|
|
10
|
+
scoreCandidate(components: SalienceComponents): SalienceScore;
|
|
11
|
+
/** Agent/system entry point. NEVER writes a canonical page — at most a candidate. */
|
|
12
|
+
proposeCandidate(input: ProposeInput): ProposeResult;
|
|
13
|
+
/** The ONLY canonical-page minting path. Human approval confirms intent but the scanner
|
|
14
|
+
* ALWAYS re-runs — approval can never bypass it. */
|
|
15
|
+
approveCandidate(slug: WikiSlug, candidateId: string, approvedBy: string): WikiPage;
|
|
16
|
+
rejectCandidate(slug: WikiSlug, candidateId: string, reason: string): void;
|
|
17
|
+
enqueueSeed(slug: WikiSlug, seed: WikiSeed): void;
|
|
18
|
+
reindexWiki(claudeDir: string): IndexResult;
|
|
19
|
+
recordWikiTrace(event: string, data: Record<string, unknown>): void;
|
|
20
|
+
/** Fetched content → candidate ONLY (never a canonical page). Requires a Fetcher dep. */
|
|
21
|
+
runResearchStep(slug: WikiSlug, seed: WikiSeed): Promise<ResearchOutcome>;
|
|
22
|
+
private recordIntervention;
|
|
23
|
+
/** The "writePage" step and the SOLE caller of repo.writePage. Write order: the caller
|
|
24
|
+
* has already scrubbed+scanned; here we mint the token (gate), write, index, then trace. */
|
|
25
|
+
private commitWrite;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/wiki/application/service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACX,kBAAkB,EAClB,aAAa,EAGb,QAAQ,EACR,QAAQ,EACR,QAAQ,EAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAc,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3F,OAAO,EAAkC,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrF,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAa/E,qBAAa,WAAW;IACX,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,eAAe;IAElD,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/C,cAAc,CAAC,UAAU,EAAE,kBAAkB,GAAG,aAAa;IAI7D,qFAAqF;IACrF,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa;IA8CpD;wDACoD;IACpD,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ;IAiCnF,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAK1E,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAKjD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW;IAM3C,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAInE,yFAAyF;IACnF,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;IAe/E,OAAO,CAAC,kBAAkB;IAa1B;gGAC4F;IAC5F,OAAO,CAAC,WAAW;CAMnB"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { canTransition, decideWrite, makeWikiPageId, scoreSalience, } from "../domain/index.js";
|
|
3
|
+
import { buildIndex } from "../../core/derived-index.js";
|
|
4
|
+
import { ApprovedWrite } from "./ports.js";
|
|
5
|
+
import { runResearchStep as runResearch } from "./research.js";
|
|
6
|
+
// The application service: orchestrates domain + adapters with strict command/query
|
|
7
|
+
// separation. The write-transaction order is the spine — scrub+scan precede every
|
|
8
|
+
// canonical write, and `commitWrite` is the ONLY caller of repo.writePage (the
|
|
9
|
+
// "writePage" step). approveCandidate is the sole canonical-page minting path; agent-origin
|
|
10
|
+
// content has no code path to a canonical page. Reads live in queries.ts (no write port).
|
|
11
|
+
function slugifyTitle(title) {
|
|
12
|
+
const s = title.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
|
|
13
|
+
return s || "page";
|
|
14
|
+
}
|
|
15
|
+
export class WikiService {
|
|
16
|
+
deps;
|
|
17
|
+
constructor(deps) {
|
|
18
|
+
this.deps = deps;
|
|
19
|
+
}
|
|
20
|
+
createWiki(slug, title) {
|
|
21
|
+
this.deps.repo.createWiki(slug, title);
|
|
22
|
+
this.deps.tracer.recordWikiTrace("wiki_create", { slug, title });
|
|
23
|
+
}
|
|
24
|
+
scoreCandidate(components) {
|
|
25
|
+
return scoreSalience(components);
|
|
26
|
+
}
|
|
27
|
+
/** Agent/system entry point. NEVER writes a canonical page — at most a candidate. */
|
|
28
|
+
proposeCandidate(input) {
|
|
29
|
+
const scan = this.deps.scanner.scan({ content: input.content, origin: input.origin, sourceUrl: input.sourceUrl });
|
|
30
|
+
const score = scoreSalience(input.salience);
|
|
31
|
+
const decision = decideWrite(score, scan.verdict, input.dup ?? { isHighDuplicate: false });
|
|
32
|
+
const now = new Date().toISOString();
|
|
33
|
+
if (decision.kind === "quarantine") {
|
|
34
|
+
const p = this.deps.repo.quarantine(input.slug, input.content, scan.verdict);
|
|
35
|
+
this.recordIntervention(input.slug, "quarantine", undefined, decision.reason, input.origin, scan);
|
|
36
|
+
this.deps.tracer.recordWikiTrace("wiki_quarantine", { slug: input.slug, reason: decision.reason, path: p });
|
|
37
|
+
return { decision };
|
|
38
|
+
}
|
|
39
|
+
if (decision.kind === "link-existing") {
|
|
40
|
+
this.recordIntervention(input.slug, "link", undefined, decision.reason, input.origin);
|
|
41
|
+
this.deps.tracer.recordWikiTrace("wiki_link", { slug: input.slug, existing: decision.existingPageId });
|
|
42
|
+
return { decision };
|
|
43
|
+
}
|
|
44
|
+
if (decision.kind === "discard") {
|
|
45
|
+
this.deps.tracer.recordWikiTrace("wiki_discard", { slug: input.slug, reason: decision.reason });
|
|
46
|
+
return { decision };
|
|
47
|
+
}
|
|
48
|
+
// propose-candidate | append-candidate → persist a candidate carrying SCRUBBED content.
|
|
49
|
+
const candidate = {
|
|
50
|
+
id: input.slug + "/cand-" + randomUUID().slice(0, 8),
|
|
51
|
+
slug: input.slug,
|
|
52
|
+
origin: input.origin,
|
|
53
|
+
title: input.title,
|
|
54
|
+
content: scan.scrubbed,
|
|
55
|
+
whySave: input.whySave,
|
|
56
|
+
evidence: input.evidence,
|
|
57
|
+
sourceIds: input.sourceIds,
|
|
58
|
+
noveltyDelta: input.noveltyDelta ?? 0,
|
|
59
|
+
reuseScope: input.reuseScope ?? "",
|
|
60
|
+
verificationState: input.verificationState ?? "unverified",
|
|
61
|
+
riskScore: input.riskScore ?? 0,
|
|
62
|
+
salience: score,
|
|
63
|
+
state: "proposed",
|
|
64
|
+
createdAt: now,
|
|
65
|
+
reviewAfter: input.reviewAfter,
|
|
66
|
+
};
|
|
67
|
+
this.deps.repo.appendCandidate(candidate);
|
|
68
|
+
this.deps.tracer.recordWikiTrace("wiki_candidate", { id: candidate.id, kind: decision.kind, total: score.total });
|
|
69
|
+
return { decision, candidate };
|
|
70
|
+
}
|
|
71
|
+
/** The ONLY canonical-page minting path. Human approval confirms intent but the scanner
|
|
72
|
+
* ALWAYS re-runs — approval can never bypass it. */
|
|
73
|
+
approveCandidate(slug, candidateId, approvedBy) {
|
|
74
|
+
const candidate = this.deps.repo.getCandidate(slug, candidateId);
|
|
75
|
+
if (!candidate)
|
|
76
|
+
throw new Error("candidate not found: " + candidateId);
|
|
77
|
+
const scan = this.deps.scanner.scan({ content: candidate.content, origin: "human" });
|
|
78
|
+
if (scan.verdict.status !== "clean") {
|
|
79
|
+
const p = this.deps.repo.quarantine(slug, candidate.content, scan.verdict);
|
|
80
|
+
this.recordIntervention(slug, "quarantine", candidateId, "approval re-scan failed", "human", scan);
|
|
81
|
+
this.deps.tracer.recordWikiTrace("wiki_approve_blocked", { candidateId, verdict: scan.verdict.status, path: p });
|
|
82
|
+
throw new Error("approval blocked: candidate failed re-scan (" + scan.verdict.status + ")");
|
|
83
|
+
}
|
|
84
|
+
const now = new Date().toISOString();
|
|
85
|
+
const page = {
|
|
86
|
+
id: makeWikiPageId(slug + "/" + slugifyTitle(candidate.title)),
|
|
87
|
+
slug,
|
|
88
|
+
title: candidate.title,
|
|
89
|
+
path: "pages/" + slugifyTitle(candidate.title) + ".md",
|
|
90
|
+
content: scan.scrubbed,
|
|
91
|
+
state: "committed",
|
|
92
|
+
createdAt: candidate.createdAt,
|
|
93
|
+
updatedAt: now,
|
|
94
|
+
provenance: { origin: "human", sourceIds: candidate.sourceIds, candidateId, approvedBy },
|
|
95
|
+
links: [],
|
|
96
|
+
};
|
|
97
|
+
// Defense-in-depth: a human commit is allowed; an agent-origin commit would be barred.
|
|
98
|
+
const t = canTransition("approved", "committed", { origin: page.provenance.origin });
|
|
99
|
+
if (!t.ok)
|
|
100
|
+
throw new Error(t.reason);
|
|
101
|
+
this.commitWrite(page, scan, { candidateId, approvedBy });
|
|
102
|
+
return page;
|
|
103
|
+
}
|
|
104
|
+
rejectCandidate(slug, candidateId, reason) {
|
|
105
|
+
this.recordIntervention(slug, "reject", candidateId, reason, "human");
|
|
106
|
+
this.deps.tracer.recordWikiTrace("wiki_reject", { candidateId, reason });
|
|
107
|
+
}
|
|
108
|
+
enqueueSeed(slug, seed) {
|
|
109
|
+
this.deps.repo.appendSeed(slug, seed);
|
|
110
|
+
this.deps.tracer.recordWikiTrace("wiki_seed", { slug, query: seed.query });
|
|
111
|
+
}
|
|
112
|
+
reindexWiki(claudeDir) {
|
|
113
|
+
const result = buildIndex(claudeDir);
|
|
114
|
+
this.deps.tracer.recordWikiTrace("wiki_reindex", { pages: result.wiki.pages });
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
recordWikiTrace(event, data) {
|
|
118
|
+
this.deps.tracer.recordWikiTrace(event, data);
|
|
119
|
+
}
|
|
120
|
+
/** Fetched content → candidate ONLY (never a canonical page). Requires a Fetcher dep. */
|
|
121
|
+
async runResearchStep(slug, seed) {
|
|
122
|
+
if (!this.deps.fetcher)
|
|
123
|
+
throw new Error("research is not enabled: no Fetcher configured");
|
|
124
|
+
return runResearch({
|
|
125
|
+
fetcher: this.deps.fetcher,
|
|
126
|
+
index: this.deps.index,
|
|
127
|
+
propose: (i) => this.proposeCandidate(i),
|
|
128
|
+
appendSource: (s, src) => this.deps.repo.appendSource(s, src),
|
|
129
|
+
trace: (e, d) => this.deps.tracer.recordWikiTrace(e, d),
|
|
130
|
+
}, slug, seed);
|
|
131
|
+
}
|
|
132
|
+
recordIntervention(slug, kind, candidateId, reason, actor, scan) {
|
|
133
|
+
const intervention = {
|
|
134
|
+
id: "int-" + randomUUID().slice(0, 8),
|
|
135
|
+
kind,
|
|
136
|
+
candidateId,
|
|
137
|
+
reason,
|
|
138
|
+
verdict: scan?.verdict,
|
|
139
|
+
actor,
|
|
140
|
+
createdAt: new Date().toISOString(),
|
|
141
|
+
};
|
|
142
|
+
this.deps.repo.appendIntervention(slug, intervention);
|
|
143
|
+
}
|
|
144
|
+
/** The "writePage" step and the SOLE caller of repo.writePage. Write order: the caller
|
|
145
|
+
* has already scrubbed+scanned; here we mint the token (gate), write, index, then trace. */
|
|
146
|
+
commitWrite(page, scan, traceData) {
|
|
147
|
+
const token = ApprovedWrite.issue(page, scan);
|
|
148
|
+
this.deps.repo.writePage(token);
|
|
149
|
+
this.deps.index.upsertPage(token.page);
|
|
150
|
+
this.deps.tracer.recordWikiTrace("wiki_write", { slug: page.slug, id: page.id, ...traceData });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/wiki/application/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wiki/domain/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wiki/domain/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { WikiClaim, WikiPage, WikiState, WikiOrigin } from "./types.js";
|
|
2
|
+
/** Reject any path segment that could escape the wiki root. Pure string check —
|
|
3
|
+
* the caller passes a repo-relative path, never an absolute one. */
|
|
4
|
+
export declare function assertNoTraversal(path: string): void;
|
|
5
|
+
/** A canonical page must carry title, slug, created_at, updated_at, and a
|
|
6
|
+
* provenance with a named origin (invariant). */
|
|
7
|
+
export declare function assertCanonicalComplete(page: WikiPage): void;
|
|
8
|
+
/** A claim drawn from an external source must name that source. */
|
|
9
|
+
export declare function assertClaimHasSource(claim: WikiClaim): void;
|
|
10
|
+
export interface TransitionContext {
|
|
11
|
+
/** Origin of the content being transitioned. */
|
|
12
|
+
origin: WikiOrigin;
|
|
13
|
+
}
|
|
14
|
+
export interface TransitionResult {
|
|
15
|
+
ok: boolean;
|
|
16
|
+
reason?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Decide whether a lifecycle transition is permitted. Two security invariants
|
|
20
|
+
* are enforced structurally:
|
|
21
|
+
* - Only `scanned` content can reach `approved` (unscanned content is barred).
|
|
22
|
+
* - Agent-origin content can never reach `committed` (no self-commit).
|
|
23
|
+
*/
|
|
24
|
+
export declare function canTransition(from: WikiState, to: WikiState, ctx: TransitionContext): TransitionResult;
|
|
25
|
+
/** Throwing wrapper around `canTransition` for call sites that treat an illegal
|
|
26
|
+
* transition as a programming error. */
|
|
27
|
+
export declare function assertTransition(from: WikiState, to: WikiState, ctx: TransitionContext): void;
|
|
28
|
+
//# sourceMappingURL=invariants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invariants.d.ts","sourceRoot":"","sources":["../../../src/wiki/domain/invariants.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7E;oEACoE;AACpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAiBpD;AAED;iDACiD;AACjD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAW5D;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAI3D;AAaD,MAAM,WAAW,iBAAiB;IACjC,gDAAgD;IAChD,MAAM,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC5B,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,iBAAiB,GACpB,gBAAgB,CAWlB;AAED;wCACwC;AACxC,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,iBAAiB,GACpB,IAAI,CAKN"}
|