@miadi/inquiry-weave 0.1.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/LICENSE +21 -0
- package/README.md +174 -0
- package/dist/artefact.d.ts +33 -0
- package/dist/artefact.d.ts.map +1 -0
- package/dist/artefact.js +59 -0
- package/dist/artefact.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +4 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli.d.ts +21 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +339 -0
- package/dist/cli.js.map +1 -0
- package/dist/env.d.ts +22 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +26 -0
- package/dist/env.js.map +1 -0
- package/dist/episode.d.ts +38 -0
- package/dist/episode.d.ts.map +1 -0
- package/dist/episode.js +109 -0
- package/dist/episode.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/issue.d.ts +27 -0
- package/dist/issue.d.ts.map +1 -0
- package/dist/issue.js +55 -0
- package/dist/issue.js.map +1 -0
- package/dist/legacy-hch.d.ts +28 -0
- package/dist/legacy-hch.d.ts.map +1 -0
- package/dist/legacy-hch.js +120 -0
- package/dist/legacy-hch.js.map +1 -0
- package/dist/relate.d.ts +31 -0
- package/dist/relate.d.ts.map +1 -0
- package/dist/relate.js +79 -0
- package/dist/relate.js.map +1 -0
- package/dist/status.d.ts +47 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +142 -0
- package/dist/status.js.map +1 -0
- package/dist/sync.d.ts +28 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +80 -0
- package/dist/sync.js.map +1 -0
- package/dist/tree.d.ts +19 -0
- package/dist/tree.d.ts.map +1 -0
- package/dist/tree.js +44 -0
- package/dist/tree.js.map +1 -0
- package/dist/weave.d.ts +83 -0
- package/dist/weave.d.ts.map +1 -0
- package/dist/weave.js +101 -0
- package/dist/weave.js.map +1 -0
- package/package.json +51 -0
- package/rispecs/medicine-wheel-registration.spec.md +72 -0
package/dist/issue.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub issue creation — delegated to the sourced functions in
|
|
3
|
+
* fn_github_issue.sh (gh CLI wrappers), the successor of issue_add_V2.sh.
|
|
4
|
+
*
|
|
5
|
+
* The functions write their own `.hch/` cache in the cwd; this package treats
|
|
6
|
+
* that as fn's private cache and records the issue identity into .weave.yaml
|
|
7
|
+
* from the parsed stdout, so nothing downstream depends on `.hch`.
|
|
8
|
+
*/
|
|
9
|
+
import { execFile } from "node:child_process";
|
|
10
|
+
import { existsSync } from "node:fs";
|
|
11
|
+
import { promisify } from "node:util";
|
|
12
|
+
import { issueRefFromUrl, formatIssueRef, issueUrlFromRef, parseIssueRef } from "./legacy-hch.js";
|
|
13
|
+
const execFileAsync = promisify(execFile);
|
|
14
|
+
export const ISSUE_LIB_CANDIDATES = [
|
|
15
|
+
"/a/src/scripts/fn_github_issue.sh",
|
|
16
|
+
"/src/scripts/fn_github_issue.sh",
|
|
17
|
+
];
|
|
18
|
+
export class IssueCreationError extends Error {
|
|
19
|
+
}
|
|
20
|
+
export function resolveIssueLib(env = process.env) {
|
|
21
|
+
const override = env.INQUIRY_WEAVE_ISSUE_LIB;
|
|
22
|
+
if (override && override.trim() !== "")
|
|
23
|
+
return override;
|
|
24
|
+
return ISSUE_LIB_CANDIDATES.find((candidate) => existsSync(candidate));
|
|
25
|
+
}
|
|
26
|
+
export async function createIssue(input) {
|
|
27
|
+
const env = input.env ?? process.env;
|
|
28
|
+
const lib = resolveIssueLib(env);
|
|
29
|
+
if (!lib || !existsSync(lib)) {
|
|
30
|
+
throw new IssueCreationError(`fn_github_issue.sh not found (tried INQUIRY_WEAVE_ISSUE_LIB, ${ISSUE_LIB_CANDIDATES.join(", ")}). ` +
|
|
31
|
+
`Install it or pass --no-issue and create the issue manually.`);
|
|
32
|
+
}
|
|
33
|
+
let stdout;
|
|
34
|
+
try {
|
|
35
|
+
const result = await execFileAsync("bash", ["-c", '. "$0" && issue_add "$1" "$2" "$3"', lib, input.title, input.body, input.repo], { cwd: input.cwd, env: { ...env } });
|
|
36
|
+
stdout = result.stdout;
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
const failure = error;
|
|
40
|
+
throw new IssueCreationError(`issue_add failed (is 'gh' installed and authenticated?): ${failure.stderr || failure.stdout || failure.message}`);
|
|
41
|
+
}
|
|
42
|
+
// issue_add prints `* owner/repo#N` on success — authoritative capture.
|
|
43
|
+
const refMatch = /\*\s+([A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+#\d+)/.exec(stdout);
|
|
44
|
+
const ref = refMatch ? parseIssueRef(refMatch[1]) : undefined;
|
|
45
|
+
if (ref) {
|
|
46
|
+
return { issue: formatIssueRef(ref), issue_url: issueUrlFromRef(ref), stdout };
|
|
47
|
+
}
|
|
48
|
+
const urlMatch = /https:\/\/github\.com\/[^\s]+\/issues\/\d+/.exec(stdout);
|
|
49
|
+
const fromUrl = urlMatch ? issueRefFromUrl(urlMatch[0]) : undefined;
|
|
50
|
+
if (fromUrl) {
|
|
51
|
+
return { issue: formatIssueRef(fromUrl), issue_url: issueUrlFromRef(fromUrl), stdout };
|
|
52
|
+
}
|
|
53
|
+
throw new IssueCreationError(`could not parse issue reference from issue_add output:\n${stdout}`);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=issue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../src/issue.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEjG,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,mCAAmC;IACnC,iCAAiC;CAClC,CAAA;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;CAAG;AAEhD,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IAClE,MAAM,QAAQ,GAAG,GAAG,CAAC,uBAAuB,CAAA;IAC5C,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAA;IACvD,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;AACxE,CAAC;AAiBD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAyB;IACzD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACpC,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,kBAAkB,CAC1B,gEAAgE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAClG,8DAA8D,CACjE,CAAA;IACH,CAAC;IACD,IAAI,MAAc,CAAA;IAClB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,MAAM,EACN,CAAC,IAAI,EAAE,oCAAoC,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EACtF,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CACpC,CAAA;QACD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAA8D,CAAA;QAC9E,MAAM,IAAI,kBAAkB,CAC1B,4DAA4D,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAClH,CAAA;IACH,CAAC;IACD,wEAAwE;IACxE,MAAM,QAAQ,GAAG,6CAA6C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3E,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC7D,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IAChF,CAAC;IACD,MAAM,QAAQ,GAAG,4CAA4C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1E,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACnE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IACxF,CAAC;IACD,MAAM,IAAI,kBAAkB,CAAC,2DAA2D,MAAM,EAAE,CAAC,CAAA;AACnG,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Best-effort reader for the legacy `.hch/` issue-harness cache.
|
|
3
|
+
*
|
|
4
|
+
* `.hch` is NOT a contract of this package: it is read once to seed
|
|
5
|
+
* `.weave.yaml` when relating a pre-existing artefact, and never written.
|
|
6
|
+
* Its fate (formalize / map / retire) is an open decision — see README.
|
|
7
|
+
*
|
|
8
|
+
* Tolerated shapes:
|
|
9
|
+
* - correct: .hch/issue_<N>.env with issue_id / issue_title / issue_url
|
|
10
|
+
* - V2-era bug: literal .hch/issue_.env, no issue_url line
|
|
11
|
+
* - fallback: newest .hch/issue_add__<tlid>.json (gh/REST issue payload)
|
|
12
|
+
*/
|
|
13
|
+
export interface IssueRef {
|
|
14
|
+
owner: string;
|
|
15
|
+
repo: string;
|
|
16
|
+
number: number;
|
|
17
|
+
}
|
|
18
|
+
export interface LegacyIssueSeed {
|
|
19
|
+
issue?: string;
|
|
20
|
+
issue_url?: string;
|
|
21
|
+
diagnostics: string[];
|
|
22
|
+
}
|
|
23
|
+
export declare function parseIssueRef(ref: string): IssueRef | undefined;
|
|
24
|
+
export declare function formatIssueRef(ref: IssueRef): string;
|
|
25
|
+
export declare function issueRefFromUrl(url: string): IssueRef | undefined;
|
|
26
|
+
export declare function issueUrlFromRef(ref: IssueRef): string;
|
|
27
|
+
export declare function readLegacyHch(artefactDir: string, fallbackRepo?: string): Promise<LegacyIssueSeed | undefined>;
|
|
28
|
+
//# sourceMappingURL=legacy-hch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-hch.d.ts","sourceRoot":"","sources":["../src/legacy-hch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAID,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAI/D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAEpD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAIjE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAErD;AAmBD,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CA2EtC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Best-effort reader for the legacy `.hch/` issue-harness cache.
|
|
3
|
+
*
|
|
4
|
+
* `.hch` is NOT a contract of this package: it is read once to seed
|
|
5
|
+
* `.weave.yaml` when relating a pre-existing artefact, and never written.
|
|
6
|
+
* Its fate (formalize / map / retire) is an open decision — see README.
|
|
7
|
+
*
|
|
8
|
+
* Tolerated shapes:
|
|
9
|
+
* - correct: .hch/issue_<N>.env with issue_id / issue_title / issue_url
|
|
10
|
+
* - V2-era bug: literal .hch/issue_.env, no issue_url line
|
|
11
|
+
* - fallback: newest .hch/issue_add__<tlid>.json (gh/REST issue payload)
|
|
12
|
+
*/
|
|
13
|
+
import { readdir, readFile } from "node:fs/promises";
|
|
14
|
+
import { existsSync } from "node:fs";
|
|
15
|
+
import { join } from "node:path";
|
|
16
|
+
const ISSUE_URL_PATTERN = /github\.com\/([^/\s]+)\/([^/\s]+)\/issues\/(\d+)/;
|
|
17
|
+
export function parseIssueRef(ref) {
|
|
18
|
+
const match = /^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)#(\d+)$/.exec(ref.trim());
|
|
19
|
+
if (!match)
|
|
20
|
+
return undefined;
|
|
21
|
+
return { owner: match[1], repo: match[2], number: Number(match[3]) };
|
|
22
|
+
}
|
|
23
|
+
export function formatIssueRef(ref) {
|
|
24
|
+
return `${ref.owner}/${ref.repo}#${ref.number}`;
|
|
25
|
+
}
|
|
26
|
+
export function issueRefFromUrl(url) {
|
|
27
|
+
const match = ISSUE_URL_PATTERN.exec(url);
|
|
28
|
+
if (!match)
|
|
29
|
+
return undefined;
|
|
30
|
+
return { owner: match[1], repo: match[2], number: Number(match[3]) };
|
|
31
|
+
}
|
|
32
|
+
export function issueUrlFromRef(ref) {
|
|
33
|
+
return `https://github.com/${ref.owner}/${ref.repo}/issues/${ref.number}`;
|
|
34
|
+
}
|
|
35
|
+
function parseEnvLines(content) {
|
|
36
|
+
const values = {};
|
|
37
|
+
for (const line of content.split("\n")) {
|
|
38
|
+
const match = /^([A-Za-z_][A-Za-z0-9_]*)=(.*)$/.exec(line.trim());
|
|
39
|
+
if (!match)
|
|
40
|
+
continue;
|
|
41
|
+
let value = match[2].trim();
|
|
42
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
43
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
44
|
+
value = value.slice(1, -1);
|
|
45
|
+
}
|
|
46
|
+
values[match[1]] = value;
|
|
47
|
+
}
|
|
48
|
+
return values;
|
|
49
|
+
}
|
|
50
|
+
export async function readLegacyHch(artefactDir, fallbackRepo) {
|
|
51
|
+
const hchDir = join(artefactDir, ".hch");
|
|
52
|
+
if (!existsSync(hchDir))
|
|
53
|
+
return undefined;
|
|
54
|
+
const entries = await readdir(hchDir);
|
|
55
|
+
const diagnostics = [];
|
|
56
|
+
const envFiles = entries.filter((name) => /^issue_\d*\.env$/.test(name)).sort();
|
|
57
|
+
let issueId;
|
|
58
|
+
for (const name of envFiles) {
|
|
59
|
+
const values = parseEnvLines(await readFile(join(hchDir, name), "utf8"));
|
|
60
|
+
if (values.issue_url) {
|
|
61
|
+
const ref = issueRefFromUrl(values.issue_url);
|
|
62
|
+
if (ref) {
|
|
63
|
+
return { issue: formatIssueRef(ref), issue_url: values.issue_url, diagnostics };
|
|
64
|
+
}
|
|
65
|
+
diagnostics.push(`.hch/${name}: unparseable issue_url ${values.issue_url}`);
|
|
66
|
+
}
|
|
67
|
+
if (values.issue_id && /^\d+$/.test(values.issue_id)) {
|
|
68
|
+
issueId = Number(values.issue_id);
|
|
69
|
+
if (name === "issue_.env") {
|
|
70
|
+
diagnostics.push(".hch/issue_.env found (issue_add_V2-era bug shape, no issue_url recorded)");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const jsonFiles = entries
|
|
75
|
+
.filter((name) => /^issue_add__.*\.json$/.test(name))
|
|
76
|
+
.sort()
|
|
77
|
+
.reverse();
|
|
78
|
+
for (const name of jsonFiles) {
|
|
79
|
+
let payload;
|
|
80
|
+
try {
|
|
81
|
+
payload = JSON.parse(await readFile(join(hchDir, name), "utf8"));
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
diagnostics.push(`.hch/${name}: unreadable JSON, skipped`);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const record = payload;
|
|
88
|
+
const url = typeof record.url === "string"
|
|
89
|
+
? record.url
|
|
90
|
+
: typeof record.html_url === "string"
|
|
91
|
+
? record.html_url
|
|
92
|
+
: undefined;
|
|
93
|
+
if (url) {
|
|
94
|
+
const ref = issueRefFromUrl(url);
|
|
95
|
+
if (ref) {
|
|
96
|
+
diagnostics.push(`issue identity recovered from .hch/${name}`);
|
|
97
|
+
return { issue: formatIssueRef(ref), issue_url: url, diagnostics };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (issueId === undefined && typeof record.number === "number")
|
|
101
|
+
issueId = record.number;
|
|
102
|
+
}
|
|
103
|
+
if (issueId !== undefined && fallbackRepo) {
|
|
104
|
+
const ref = parseIssueRef(`${fallbackRepo}#${issueId}`);
|
|
105
|
+
if (ref) {
|
|
106
|
+
diagnostics.push(`issue_url missing in legacy .hch; repo ${fallbackRepo} assumed from configuration`);
|
|
107
|
+
return {
|
|
108
|
+
issue: formatIssueRef(ref),
|
|
109
|
+
issue_url: issueUrlFromRef(ref),
|
|
110
|
+
diagnostics,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (issueId !== undefined) {
|
|
115
|
+
diagnostics.push(`legacy .hch knows issue #${issueId} but no repo could be determined`);
|
|
116
|
+
return { diagnostics };
|
|
117
|
+
}
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=legacy-hch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-hch.js","sourceRoot":"","sources":["../src/legacy-hch.ts"],"names":[],"mappings":"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"}
|
package/dist/relate.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The relate operation — records the three-identity relation on both sides
|
|
3
|
+
* and appends the artefact's AGENTS.md back-link. No copying, no content.
|
|
4
|
+
*/
|
|
5
|
+
import { type ArtefactIdentity } from "./artefact.js";
|
|
6
|
+
import type { EpisodeIdentity } from "./episode.js";
|
|
7
|
+
export type IssueSeedSource = "flag" | "created" | "artefact-weave" | "legacy-hch";
|
|
8
|
+
export interface RelateInput {
|
|
9
|
+
artefact: ArtefactIdentity;
|
|
10
|
+
episode: EpisodeIdentity;
|
|
11
|
+
/** Explicit owner/repo#N — from --issue or a just-created issue. */
|
|
12
|
+
issue?: string;
|
|
13
|
+
issueUrl?: string;
|
|
14
|
+
issueSource?: IssueSeedSource;
|
|
15
|
+
/** Repo assumed when legacy .hch knows only an issue id. */
|
|
16
|
+
fallbackRepo: string;
|
|
17
|
+
now?: () => Date;
|
|
18
|
+
}
|
|
19
|
+
export interface RelateResult {
|
|
20
|
+
artefact: string;
|
|
21
|
+
artefactDir: string;
|
|
22
|
+
episodePath: string;
|
|
23
|
+
episodeDir: string;
|
|
24
|
+
issue?: string;
|
|
25
|
+
issue_url?: string;
|
|
26
|
+
issueSource?: IssueSeedSource;
|
|
27
|
+
backLinkAppended: boolean;
|
|
28
|
+
diagnostics: string[];
|
|
29
|
+
}
|
|
30
|
+
export declare function relate(input: RelateInput): Promise<RelateResult>;
|
|
31
|
+
//# sourceMappingURL=relate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relate.d.ts","sourceRoot":"","sources":["../src/relate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAcnD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,YAAY,CAAA;AAElF,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,OAAO,EAAE,eAAe,CAAA;IACxB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,gBAAgB,EAAE,OAAO,CAAA;IACzB,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAiFtE"}
|
package/dist/relate.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The relate operation — records the three-identity relation on both sides
|
|
3
|
+
* and appends the artefact's AGENTS.md back-link. No copying, no content.
|
|
4
|
+
*/
|
|
5
|
+
import { appendBackLink } from "./artefact.js";
|
|
6
|
+
import { parseIssueRef, issueUrlFromRef, readLegacyHch } from "./legacy-hch.js";
|
|
7
|
+
import { newArtefactWeave, newEpisodeWeave, readArtefactWeave, readEpisodeWeave, upsertEpisodeLink, upsertInquiry, writeArtefactWeave, writeEpisodeWeave, WeaveError, } from "./weave.js";
|
|
8
|
+
export async function relate(input) {
|
|
9
|
+
const diagnostics = [];
|
|
10
|
+
const relatedAt = (input.now?.() ?? new Date()).toISOString();
|
|
11
|
+
let issue = input.issue;
|
|
12
|
+
let issueUrl = input.issueUrl;
|
|
13
|
+
let issueSource = input.issueSource ?? (input.issue ? "flag" : undefined);
|
|
14
|
+
if (issue && !parseIssueRef(issue)) {
|
|
15
|
+
throw new WeaveError(`invalid issue reference '${issue}' — expected owner/repo#N`);
|
|
16
|
+
}
|
|
17
|
+
if (issue && !issueUrl) {
|
|
18
|
+
issueUrl = issueUrlFromRef(parseIssueRef(issue));
|
|
19
|
+
}
|
|
20
|
+
const artefactWeave = (await readArtefactWeave(input.artefact.dir)) ?? newArtefactWeave(input.artefact.dir);
|
|
21
|
+
if (!issue && artefactWeave.issue) {
|
|
22
|
+
issue = artefactWeave.issue;
|
|
23
|
+
issueUrl = artefactWeave.issue_url;
|
|
24
|
+
issueSource = "artefact-weave";
|
|
25
|
+
}
|
|
26
|
+
if (!issue) {
|
|
27
|
+
const seed = await readLegacyHch(input.artefact.dir, input.fallbackRepo);
|
|
28
|
+
if (seed) {
|
|
29
|
+
diagnostics.push(...seed.diagnostics);
|
|
30
|
+
if (seed.issue) {
|
|
31
|
+
issue = seed.issue;
|
|
32
|
+
issueUrl = seed.issue_url;
|
|
33
|
+
issueSource = "legacy-hch";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (!issue) {
|
|
38
|
+
diagnostics.push("no GitHub issue is woven yet — pass --issue owner/repo#N or use 'inquire' to create one");
|
|
39
|
+
}
|
|
40
|
+
if (issue) {
|
|
41
|
+
artefactWeave.issue = issue;
|
|
42
|
+
artefactWeave.issue_url = issueUrl;
|
|
43
|
+
}
|
|
44
|
+
upsertEpisodeLink(artefactWeave, {
|
|
45
|
+
path: input.episode.path,
|
|
46
|
+
number: input.episode.number,
|
|
47
|
+
related_at: relatedAt,
|
|
48
|
+
});
|
|
49
|
+
await writeArtefactWeave(input.artefact.dir, artefactWeave);
|
|
50
|
+
const episodeWeave = (await readEpisodeWeave(input.episode.dir)) ??
|
|
51
|
+
newEpisodeWeave({
|
|
52
|
+
number: input.episode.number,
|
|
53
|
+
slug: input.episode.slug,
|
|
54
|
+
path: input.episode.path,
|
|
55
|
+
});
|
|
56
|
+
upsertInquiry(episodeWeave, {
|
|
57
|
+
artefact: input.artefact.name,
|
|
58
|
+
issue,
|
|
59
|
+
issue_url: issueUrl,
|
|
60
|
+
related_at: relatedAt,
|
|
61
|
+
});
|
|
62
|
+
await writeEpisodeWeave(input.episode.dir, episodeWeave);
|
|
63
|
+
const backLinkAppended = await appendBackLink(input.artefact.dir, {
|
|
64
|
+
episodeAbsPath: input.episode.dir,
|
|
65
|
+
issue,
|
|
66
|
+
});
|
|
67
|
+
return {
|
|
68
|
+
artefact: input.artefact.name,
|
|
69
|
+
artefactDir: input.artefact.dir,
|
|
70
|
+
episodePath: input.episode.path,
|
|
71
|
+
episodeDir: input.episode.dir,
|
|
72
|
+
issue,
|
|
73
|
+
issue_url: issueUrl,
|
|
74
|
+
issueSource,
|
|
75
|
+
backLinkAppended,
|
|
76
|
+
diagnostics,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=relate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relate.js","sourceRoot":"","sources":["../src/relate.ts"],"names":[],"mappings":"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"}
|
package/dist/status.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Three-identity status report with sync freshness.
|
|
3
|
+
*
|
|
4
|
+
* episode.yaml is read-only here: parsed with yaml, observed through
|
|
5
|
+
* @miadi/episodic-memory-schema's compatibility layer, and only ever the
|
|
6
|
+
* source of warnings (e.g. an issue missing from issue_anchors).
|
|
7
|
+
*/
|
|
8
|
+
import type { WeaveEnv } from "./env.js";
|
|
9
|
+
import type { EpisodeIdentity } from "./episode.js";
|
|
10
|
+
import type { ArtefactIdentity } from "./artefact.js";
|
|
11
|
+
import { type Freshness } from "./sync.js";
|
|
12
|
+
import { type EpisodeIdentityBlock } from "./weave.js";
|
|
13
|
+
export interface InquiryStatus {
|
|
14
|
+
artefact: string;
|
|
15
|
+
artefactDir: string;
|
|
16
|
+
artefactExists: boolean;
|
|
17
|
+
issue?: string;
|
|
18
|
+
issue_url?: string;
|
|
19
|
+
freshness: Freshness;
|
|
20
|
+
diagnostics: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface EpisodeStatusReport {
|
|
23
|
+
kind: "episode";
|
|
24
|
+
episode: EpisodeIdentityBlock;
|
|
25
|
+
episodeDir: string;
|
|
26
|
+
inquiries: InquiryStatus[];
|
|
27
|
+
warnings: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface ArtefactEpisodeStatus {
|
|
30
|
+
path: string;
|
|
31
|
+
episodeDir: string;
|
|
32
|
+
episodeExists: boolean;
|
|
33
|
+
freshness: Freshness;
|
|
34
|
+
diagnostics: string[];
|
|
35
|
+
}
|
|
36
|
+
export interface ArtefactStatusReport {
|
|
37
|
+
kind: "artefact";
|
|
38
|
+
artefact: string;
|
|
39
|
+
artefactDir: string;
|
|
40
|
+
issue?: string;
|
|
41
|
+
issue_url?: string;
|
|
42
|
+
episodes: ArtefactEpisodeStatus[];
|
|
43
|
+
warnings: string[];
|
|
44
|
+
}
|
|
45
|
+
export declare function episodeStatus(env: WeaveEnv, episode: EpisodeIdentity): Promise<EpisodeStatusReport>;
|
|
46
|
+
export declare function artefactStatus(env: WeaveEnv, artefact: ArtefactIdentity): Promise<ArtefactStatusReport>;
|
|
47
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAA;AAC7D,OAAO,EAAuC,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAE3F,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,oBAAoB,CAAA;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,aAAa,EAAE,CAAA;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,qBAAqB,EAAE,CAAA;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAiCD,wBAAsB,aAAa,CACjC,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAuC9B;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAyD/B"}
|
package/dist/status.js
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Three-identity status report with sync freshness.
|
|
3
|
+
*
|
|
4
|
+
* episode.yaml is read-only here: parsed with yaml, observed through
|
|
5
|
+
* @miadi/episodic-memory-schema's compatibility layer, and only ever the
|
|
6
|
+
* source of warnings (e.g. an issue missing from issue_anchors).
|
|
7
|
+
*/
|
|
8
|
+
import { readFile } from "node:fs/promises";
|
|
9
|
+
import { existsSync } from "node:fs";
|
|
10
|
+
import { isAbsolute, join } from "node:path";
|
|
11
|
+
import { parse } from "yaml";
|
|
12
|
+
import { observeEpisodeYamlManifest } from "@miadi/episodic-memory-schema";
|
|
13
|
+
import { classifyFreshness } from "./sync.js";
|
|
14
|
+
import { readArtefactWeave, readEpisodeWeave } from "./weave.js";
|
|
15
|
+
function episodeDirFromPath(chronicleRoot, path) {
|
|
16
|
+
return isAbsolute(path) ? path : join(chronicleRoot, path);
|
|
17
|
+
}
|
|
18
|
+
async function episodeYamlWarnings(episodeDir, issues) {
|
|
19
|
+
const warnings = [];
|
|
20
|
+
const yamlPath = join(episodeDir, "episode.yaml");
|
|
21
|
+
if (!existsSync(yamlPath))
|
|
22
|
+
return warnings;
|
|
23
|
+
const raw = await readFile(yamlPath, "utf8");
|
|
24
|
+
for (const issue of issues) {
|
|
25
|
+
if (!raw.includes(issue)) {
|
|
26
|
+
warnings.push(`episode.yaml does not reference ${issue} — consider adding it to issue_anchors (manually; this package never rewrites episode.yaml)`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const observation = observeEpisodeYamlManifest(parse(raw), {
|
|
31
|
+
relativePath: "episode.yaml",
|
|
32
|
+
});
|
|
33
|
+
for (const diagnostic of observation.diagnostics) {
|
|
34
|
+
if (diagnostic.level !== "info") {
|
|
35
|
+
warnings.push(`episode.yaml (${diagnostic.level}): ${diagnostic.message}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
warnings.push("episode.yaml could not be parsed as YAML");
|
|
41
|
+
}
|
|
42
|
+
return warnings;
|
|
43
|
+
}
|
|
44
|
+
export async function episodeStatus(env, episode) {
|
|
45
|
+
const weave = await readEpisodeWeave(episode.dir);
|
|
46
|
+
const warnings = [];
|
|
47
|
+
if (!weave) {
|
|
48
|
+
warnings.push("no inquiry/weave.yaml — nothing is related to this episode yet");
|
|
49
|
+
return {
|
|
50
|
+
kind: "episode",
|
|
51
|
+
episode: { number: episode.number, slug: episode.slug, path: episode.path },
|
|
52
|
+
episodeDir: episode.dir,
|
|
53
|
+
inquiries: [],
|
|
54
|
+
warnings,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const inquiries = [];
|
|
58
|
+
for (const entry of weave.inquiries) {
|
|
59
|
+
const artefactDir = join(env.inquiryRoot, entry.artefact);
|
|
60
|
+
const artefactExists = existsSync(artefactDir);
|
|
61
|
+
const freshness = await classifyFreshness(artefactDir, episode.dir, entry);
|
|
62
|
+
inquiries.push({
|
|
63
|
+
artefact: entry.artefact,
|
|
64
|
+
artefactDir,
|
|
65
|
+
artefactExists,
|
|
66
|
+
issue: entry.issue,
|
|
67
|
+
issue_url: entry.issue_url,
|
|
68
|
+
freshness: freshness.state,
|
|
69
|
+
diagnostics: freshness.diagnostics,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
const wovenIssues = weave.inquiries
|
|
73
|
+
.map((entry) => entry.issue)
|
|
74
|
+
.filter((issue) => issue !== undefined);
|
|
75
|
+
warnings.push(...(await episodeYamlWarnings(episode.dir, wovenIssues)));
|
|
76
|
+
return {
|
|
77
|
+
kind: "episode",
|
|
78
|
+
episode: weave.episode,
|
|
79
|
+
episodeDir: episode.dir,
|
|
80
|
+
inquiries,
|
|
81
|
+
warnings,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export async function artefactStatus(env, artefact) {
|
|
85
|
+
const weave = await readArtefactWeave(artefact.dir);
|
|
86
|
+
const warnings = [];
|
|
87
|
+
if (!weave) {
|
|
88
|
+
warnings.push("no .weave.yaml — this artefact is not related to any episode yet");
|
|
89
|
+
return {
|
|
90
|
+
kind: "artefact",
|
|
91
|
+
artefact: artefact.name,
|
|
92
|
+
artefactDir: artefact.dir,
|
|
93
|
+
episodes: [],
|
|
94
|
+
warnings,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const episodes = [];
|
|
98
|
+
for (const link of weave.episodes) {
|
|
99
|
+
const episodeDir = episodeDirFromPath(env.chronicleRoot, link.path);
|
|
100
|
+
const episodeExists = existsSync(episodeDir);
|
|
101
|
+
if (!episodeExists) {
|
|
102
|
+
episodes.push({
|
|
103
|
+
path: link.path,
|
|
104
|
+
episodeDir,
|
|
105
|
+
episodeExists,
|
|
106
|
+
freshness: "never-synced",
|
|
107
|
+
diagnostics: ["episode directory not found under the chronicle root"],
|
|
108
|
+
});
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const episodeWeave = await readEpisodeWeave(episodeDir);
|
|
112
|
+
const entry = episodeWeave?.inquiries.find((inquiry) => inquiry.artefact === artefact.name);
|
|
113
|
+
if (!entry) {
|
|
114
|
+
episodes.push({
|
|
115
|
+
path: link.path,
|
|
116
|
+
episodeDir,
|
|
117
|
+
episodeExists,
|
|
118
|
+
freshness: "never-synced",
|
|
119
|
+
diagnostics: ["episode weave.yaml has no entry for this artefact (one-sided relation)"],
|
|
120
|
+
});
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
const freshness = await classifyFreshness(artefact.dir, episodeDir, entry);
|
|
124
|
+
episodes.push({
|
|
125
|
+
path: link.path,
|
|
126
|
+
episodeDir,
|
|
127
|
+
episodeExists,
|
|
128
|
+
freshness: freshness.state,
|
|
129
|
+
diagnostics: freshness.diagnostics,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
kind: "artefact",
|
|
134
|
+
artefact: weave.artefact,
|
|
135
|
+
artefactDir: artefact.dir,
|
|
136
|
+
issue: weave.issue,
|
|
137
|
+
issue_url: weave.issue_url,
|
|
138
|
+
episodes,
|
|
139
|
+
warnings,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
|
package/dist/sync.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One-way artefact → episode mirror sync.
|
|
3
|
+
*
|
|
4
|
+
* The inquiry root (IAIP tree) is the system-of-record: the episode copy is a
|
|
5
|
+
* snapshot, deletions propagate, and local edits to the copy are flagged as
|
|
6
|
+
* divergence (a warning that sync will overwrite them).
|
|
7
|
+
*/
|
|
8
|
+
import { type TreeManifest } from "./tree.js";
|
|
9
|
+
import { type InquiryEntry } from "./weave.js";
|
|
10
|
+
export type Freshness = "in-sync" | "stale" | "never-synced" | "episode-copy-diverged";
|
|
11
|
+
export interface SyncResult {
|
|
12
|
+
status: "synced" | "up-to-date" | "dry-run";
|
|
13
|
+
artefact: string;
|
|
14
|
+
episodeDir: string;
|
|
15
|
+
copyDir: string;
|
|
16
|
+
manifest: TreeManifest;
|
|
17
|
+
}
|
|
18
|
+
export interface FreshnessReport {
|
|
19
|
+
state: Freshness;
|
|
20
|
+
diagnostics: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface SyncOptions {
|
|
23
|
+
dryRun?: boolean;
|
|
24
|
+
now?: () => Date;
|
|
25
|
+
}
|
|
26
|
+
export declare function syncArtefact(artefactDir: string, episodeDir: string, options?: SyncOptions): Promise<SyncResult>;
|
|
27
|
+
export declare function classifyFreshness(artefactDir: string, episodeDir: string, entry: InquiryEntry): Promise<FreshnessReport>;
|
|
28
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAIL,KAAK,YAAY,EAElB,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,cAAc,GAAG,uBAAuB,CAAA;AAEtF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAA;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,YAAY,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAA;IAChB,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CACjB;AAYD,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CA+BrB;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,eAAe,CAAC,CA6B1B"}
|