@shivaedev/work-board 0.8.0 → 0.9.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 +20 -0
- package/README.md +18 -1
- package/assets/agent.js +14 -14
- package/assets/native.js +49 -27
- package/dist/browser/responses/Prompt.d.ts +10 -0
- package/dist/browser/responses/Prompt.d.ts.map +1 -0
- package/dist/browser/responses/Prompt.js +2 -0
- package/dist/browser/responses/Prompt.js.map +1 -0
- package/dist/browser/responses/answerBody.d.ts +4 -0
- package/dist/browser/responses/answerBody.d.ts.map +1 -0
- package/dist/browser/responses/answerBody.js +9 -0
- package/dist/browser/responses/answerBody.js.map +1 -0
- package/dist/browser/responses/draftSession.d.ts.map +1 -1
- package/dist/browser/responses/draftSession.js +23 -10
- package/dist/browser/responses/draftSession.js.map +1 -1
- package/dist/browser/responses/drafts.d.ts +5 -0
- package/dist/browser/responses/drafts.d.ts.map +1 -1
- package/dist/browser/responses/drafts.js +20 -1
- package/dist/browser/responses/drafts.js.map +1 -1
- package/dist/browser/responses/preview.d.ts +2 -1
- package/dist/browser/responses/preview.d.ts.map +1 -1
- package/dist/browser/responses/preview.js +3 -2
- package/dist/browser/responses/preview.js.map +1 -1
- package/dist/browser/responses/questionnaireControls.d.ts +10 -0
- package/dist/browser/responses/questionnaireControls.d.ts.map +1 -0
- package/dist/browser/responses/questionnaireControls.js +68 -0
- package/dist/browser/responses/questionnaireControls.js.map +1 -0
- package/dist/browser/responses/schema.d.ts +41 -0
- package/dist/browser/responses/schema.d.ts.map +1 -1
- package/dist/browser/responses/schema.js +11 -1
- package/dist/browser/responses/schema.js.map +1 -1
- package/dist/browser/responses/setup.d.ts.map +1 -1
- package/dist/browser/responses/setup.js +34 -4
- package/dist/browser/responses/setup.js.map +1 -1
- package/dist/browser/responses/submissionFields.d.ts +15 -0
- package/dist/browser/responses/submissionFields.d.ts.map +1 -0
- package/dist/browser/responses/submissionFields.js +14 -0
- package/dist/browser/responses/submissionFields.js.map +1 -0
- package/dist/browser/responses/submit.d.ts.map +1 -1
- package/dist/browser/responses/submit.js +3 -9
- package/dist/browser/responses/submit.js.map +1 -1
- package/dist/metadata/backlinks.d.ts.map +1 -1
- package/dist/metadata/backlinks.js +3 -0
- package/dist/metadata/backlinks.js.map +1 -1
- package/dist/metadata/fields.d.ts +6 -0
- package/dist/metadata/fields.d.ts.map +1 -1
- package/dist/metadata/problems.d.ts.map +1 -1
- package/dist/metadata/problems.js +1 -0
- package/dist/metadata/problems.js.map +1 -1
- package/dist/metadata/schema.d.ts +6 -0
- package/dist/metadata/schema.d.ts.map +1 -1
- package/dist/page/metadataDetails.js +1 -1
- package/dist/page/metadataDetails.js.map +1 -1
- package/dist/page/style.d.ts.map +1 -1
- package/dist/page/style.js +1 -0
- package/dist/page/style.js.map +1 -1
- package/dist/render/markdown.d.ts +1 -0
- package/dist/render/markdown.d.ts.map +1 -1
- package/dist/render/markdown.js +4 -2
- package/dist/render/markdown.js.map +1 -1
- package/dist/render/questionnaireDocuments.d.ts +3 -0
- package/dist/render/questionnaireDocuments.d.ts.map +1 -0
- package/dist/render/questionnaireDocuments.js +11 -0
- package/dist/render/questionnaireDocuments.js.map +1 -0
- package/dist/render/visualDocuments.d.ts.map +1 -1
- package/dist/render/visualDocuments.js +3 -0
- package/dist/render/visualDocuments.js.map +1 -1
- package/dist/responses/agent.d.ts +12 -0
- package/dist/responses/agent.d.ts.map +1 -1
- package/dist/responses/await.d.ts +6 -0
- package/dist/responses/await.d.ts.map +1 -1
- package/dist/responses/composerHtml.d.ts +27 -0
- package/dist/responses/composerHtml.d.ts.map +1 -0
- package/dist/responses/composerHtml.js +14 -0
- package/dist/responses/composerHtml.js.map +1 -0
- package/dist/responses/history.d.ts +20 -0
- package/dist/responses/history.d.ts.map +1 -0
- package/dist/responses/history.js +16 -0
- package/dist/responses/history.js.map +1 -0
- package/dist/responses/locate.d.ts.map +1 -1
- package/dist/responses/locate.js +5 -0
- package/dist/responses/locate.js.map +1 -1
- package/dist/responses/make.d.ts +3 -0
- package/dist/responses/make.d.ts.map +1 -0
- package/dist/responses/make.js +16 -0
- package/dist/responses/make.js.map +1 -0
- package/dist/responses/outcome.d.ts +6 -0
- package/dist/responses/outcome.d.ts.map +1 -1
- package/dist/responses/page.d.ts +1 -1
- package/dist/responses/page.d.ts.map +1 -1
- package/dist/responses/page.js +7 -10
- package/dist/responses/page.js.map +1 -1
- package/dist/responses/read.d.ts +6 -0
- package/dist/responses/read.d.ts.map +1 -1
- package/dist/responses/records.d.ts.map +1 -1
- package/dist/responses/records.js +2 -0
- package/dist/responses/records.js.map +1 -1
- package/dist/responses/retry.d.ts +12 -0
- package/dist/responses/retry.d.ts.map +1 -1
- package/dist/responses/service.d.ts +37 -1
- package/dist/responses/service.d.ts.map +1 -1
- package/dist/responses/service.js +19 -14
- package/dist/responses/service.js.map +1 -1
- package/dist/responses/template.d.ts +7 -0
- package/dist/responses/template.d.ts.map +1 -0
- package/dist/responses/template.js +58 -0
- package/dist/responses/template.js.map +1 -0
- package/dist/responses/templateHtml.d.ts +7 -0
- package/dist/responses/templateHtml.d.ts.map +1 -0
- package/dist/responses/templateHtml.js +18 -0
- package/dist/responses/templateHtml.js.map +1 -0
- package/dist/responses/templateLinks.d.ts +3 -0
- package/dist/responses/templateLinks.d.ts.map +1 -0
- package/dist/responses/templateLinks.js +45 -0
- package/dist/responses/templateLinks.js.map +1 -0
- package/dist/responses/templateNodes.d.ts +17 -0
- package/dist/responses/templateNodes.d.ts.map +1 -0
- package/dist/responses/templateNodes.js +47 -0
- package/dist/responses/templateNodes.js.map +1 -0
- package/dist/responses/validateSupersedes.d.ts +5 -0
- package/dist/responses/validateSupersedes.d.ts.map +1 -0
- package/dist/responses/validateSupersedes.js +21 -0
- package/dist/responses/validateSupersedes.js.map +1 -0
- package/dist/responses/validatedInput.d.ts +3 -0
- package/dist/responses/validatedInput.d.ts.map +1 -0
- package/dist/responses/validatedInput.js +43 -0
- package/dist/responses/validatedInput.js.map +1 -0
- package/dist/responses/waitFor.d.ts +6 -0
- package/dist/responses/waitFor.d.ts.map +1 -1
- package/dist/rpc/contract.d.ts +24 -0
- package/dist/rpc/contract.d.ts.map +1 -1
- package/dist/rpc/responseContract.d.ts +48 -0
- package/dist/rpc/responseContract.d.ts.map +1 -1
- package/dist/serve-cli.js +1 -1
- package/package.json +2 -2
- package/src/browser/responses/Prompt.ts +6 -0
- package/src/browser/responses/answerBody.ts +11 -0
- package/src/browser/responses/draftSession.ts +23 -10
- package/src/browser/responses/drafts.ts +25 -1
- package/src/browser/responses/preview.ts +4 -2
- package/src/browser/responses/questionnaireControls.ts +74 -0
- package/src/browser/responses/schema.ts +12 -1
- package/src/browser/responses/setup.ts +34 -4
- package/src/browser/responses/submissionFields.ts +15 -0
- package/src/browser/responses/submit.ts +3 -11
- package/src/metadata/backlinks.ts +3 -0
- package/src/metadata/problems.ts +1 -0
- package/src/page/metadataDetails.ts +1 -1
- package/src/page/style.ts +1 -0
- package/src/render/markdown.ts +5 -2
- package/src/render/questionnaireDocuments.ts +12 -0
- package/src/render/visualDocuments.ts +3 -0
- package/src/responses/composerHtml.ts +28 -0
- package/src/responses/history.ts +18 -0
- package/src/responses/locate.ts +5 -0
- package/src/responses/make.ts +17 -0
- package/src/responses/page.ts +7 -18
- package/src/responses/records.ts +2 -0
- package/src/responses/service.ts +26 -15
- package/src/responses/template.ts +72 -0
- package/src/responses/templateHtml.ts +26 -0
- package/src/responses/templateLinks.ts +43 -0
- package/src/responses/templateNodes.ts +55 -0
- package/src/responses/validateSupersedes.ts +24 -0
- package/src/responses/validatedInput.ts +45 -0
- package/src/serve-cli.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locate.js","sourceRoot":"","sources":["../../src/responses/locate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAmB,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAwB,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"locate.js","sourceRoot":"","sources":["../../src/responses/locate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../src/responses/make.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAE3F,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAcxG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function makeResponse(input, question, recordedAt) {
|
|
2
|
+
return {
|
|
3
|
+
body: input.body,
|
|
4
|
+
id: input.id,
|
|
5
|
+
response: {
|
|
6
|
+
...(input.answers === undefined ? {} : { answers: input.answers }),
|
|
7
|
+
...(input.supersedes === undefined ? {} : { supersedes: input.supersedes }),
|
|
8
|
+
author: input.author,
|
|
9
|
+
question: input.question,
|
|
10
|
+
recordedAt,
|
|
11
|
+
reviewedRevision: question.question.reviewedRevision,
|
|
12
|
+
type: input.type,
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=make.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make.js","sourceRoot":"","sources":["../../src/responses/make.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAE,QAAkB,EAAE,UAAkB;IACrF,OAAO;QACN,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,QAAQ,EAAE;YACT,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;YAC3E,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU;YACV,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,gBAAgB;YACpD,IAAI,EAAE,KAAK,CAAC,IAAI;SAChB;KACD,CAAC;AACH,CAAC"}
|
|
@@ -22,10 +22,16 @@ export declare function outcome(reading: Reading, after: string | undefined, now
|
|
|
22
22
|
readonly body: string;
|
|
23
23
|
readonly id: string;
|
|
24
24
|
readonly response: {
|
|
25
|
+
readonly answers?: readonly {
|
|
26
|
+
readonly prompt: string;
|
|
27
|
+
readonly selected: readonly string[];
|
|
28
|
+
readonly text: string;
|
|
29
|
+
}[] | undefined;
|
|
25
30
|
readonly author: string;
|
|
26
31
|
readonly question: string;
|
|
27
32
|
readonly recordedAt: number;
|
|
28
33
|
readonly reviewedRevision: string;
|
|
34
|
+
readonly supersedes?: string | undefined;
|
|
29
35
|
readonly type: "answer" | "clarify" | "not_now";
|
|
30
36
|
};
|
|
31
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../../src/responses/outcome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../../src/responses/outcome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY/E"}
|
package/dist/responses/page.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import { Effect } from "effect";
|
|
|
2
2
|
import type { HttpServerRequest } from "effect/unstable/http";
|
|
3
3
|
import type { Changes } from "#files/changes.ts";
|
|
4
4
|
import type { responseService } from "./service.ts";
|
|
5
|
-
export declare function responsePage(service: Effect.Success<ReturnType<typeof responseService>>, changes: Changes, home: string | undefined, enabled: boolean): (request: HttpServerRequest.HttpServerRequest) => Effect.Effect<import("effect/unstable/http/HttpServerResponse").HttpServerResponse, import("effect/PlatformError").PlatformError, import("effect/FileSystem").FileSystem | import("effect/Path").Path>;
|
|
5
|
+
export declare function responsePage(service: Effect.Success<ReturnType<typeof responseService>>, changes: Changes, home: string | undefined, enabled: boolean): (request: HttpServerRequest.HttpServerRequest) => Effect.Effect<import("effect/unstable/http/HttpServerResponse").HttpServerResponse, import("effect/PlatformError").PlatformError, import("effect/FileSystem").FileSystem | import("../render/highlighter.ts").Highlighter | import("effect/Path").Path>;
|
|
6
6
|
//# sourceMappingURL=page.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/responses/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAMjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,wBAAgB,YAAY,CAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,EAC3D,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/responses/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAMjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,wBAAgB,YAAY,CAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,EAC3D,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,OAAO,6SAehB"}
|
package/dist/responses/page.js
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import { fileUrl } from "#files/url.ts";
|
|
3
2
|
import { respond } from "#http/respond.ts";
|
|
4
3
|
import { escapeHtml } from "#page/escape.ts";
|
|
5
4
|
import { navHtml } from "#page/nav.ts";
|
|
6
5
|
import { shell } from "#page/shell.ts";
|
|
6
|
+
import { composerHtml } from "./composerHtml.js";
|
|
7
7
|
export function responsePage(service, changes, home, enabled) {
|
|
8
8
|
return Effect.fn("WorkBoard.responsePage")(function* (request) {
|
|
9
9
|
const params = new URL(request.url, "http://127.0.0.1").searchParams;
|
|
10
|
-
const item = params.get("item") ?? "";
|
|
11
|
-
const requestId = params.get("request") ?? "";
|
|
12
10
|
const files = yield* changes.files;
|
|
13
11
|
function layout(body, status = 200) {
|
|
14
12
|
return respond(shell("Respond", navHtml(files, "", home), body, changes.realRoot, false, undefined, "response"), "text/html", status);
|
|
15
13
|
}
|
|
16
|
-
return yield*
|
|
17
|
-
.
|
|
18
|
-
.pipe(Effect.catch((error) => (error.code === "Missing" ? Effect.
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
})), Effect.catch((error) => Effect.succeed(layout(`<h1>Response unavailable</h1><p>${escapeHtml(error.message)}</p>`, 409))));
|
|
14
|
+
return yield* Effect.gen(function* () {
|
|
15
|
+
const question = yield* service.locate(params.get("item") ?? "", params.get("request") ?? "");
|
|
16
|
+
yield* service.read(question.id).pipe(Effect.catch((error) => (error.code === "Missing" ? Effect.void : Effect.fail(error))));
|
|
17
|
+
const records = yield* service.history(question);
|
|
18
|
+
return layout(yield* composerHtml(question, records, enabled));
|
|
19
|
+
}).pipe(Effect.catch((error) => Effect.succeed(layout(`<h1>Response unavailable</h1><p>${escapeHtml(String(error))}</p>`, 409))));
|
|
23
20
|
});
|
|
24
21
|
}
|
|
25
22
|
//# sourceMappingURL=page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/responses/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/responses/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,UAAU,YAAY,CAC3B,OAA2D,EAC3D,OAAgB,EAChB,IAAwB,EACxB,OAAgB;IAEhB,OAAO,MAAM,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAA4C;QACjG,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,YAAY,CAAC;QACrE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,SAAS,MAAM,CAAC,IAAY,EAAE,MAAM,GAAG,GAAG;YACzC,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACvI,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9F,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9H,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,mCAAmC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnI,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/responses/read.d.ts
CHANGED
|
@@ -19,10 +19,16 @@ export declare function readResponses(snapshot: Effect.Effect<Snapshot, Response
|
|
|
19
19
|
readonly body: string;
|
|
20
20
|
readonly id: string;
|
|
21
21
|
readonly response: {
|
|
22
|
+
readonly answers?: readonly {
|
|
23
|
+
readonly prompt: string;
|
|
24
|
+
readonly selected: readonly string[];
|
|
25
|
+
readonly text: string;
|
|
26
|
+
}[] | undefined;
|
|
22
27
|
readonly author: string;
|
|
23
28
|
readonly question: string;
|
|
24
29
|
readonly recordedAt: number;
|
|
25
30
|
readonly reviewedRevision: string;
|
|
31
|
+
readonly supersedes?: string | undefined;
|
|
26
32
|
readonly type: "answer" | "clarify" | "not_now";
|
|
27
33
|
};
|
|
28
34
|
}[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/responses/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAmBpD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/responses/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAmBpD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAsB9E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/responses/records.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,UAExC;AACD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAEzF;AACD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAEzD;AACD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAEjE;AACD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAS7E;AACD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,CAGrF;AACD,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAOhG;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/responses/records.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,UAExC;AACD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAEzF;AACD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAEzD;AACD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAEjE;AACD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAS7E;AACD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,CAGrF;AACD,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAOhG;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,WAS1E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,WAG3D"}
|
|
@@ -36,6 +36,8 @@ export function responsesFor(documents, question) {
|
|
|
36
36
|
}
|
|
37
37
|
export function matchesResponse(record, input) {
|
|
38
38
|
return (record.body === input.body
|
|
39
|
+
&& JSON.stringify(record.response.answers) === JSON.stringify(input.answers)
|
|
40
|
+
&& record.response.supersedes === input.supersedes
|
|
39
41
|
&& record.response.author === input.author
|
|
40
42
|
&& record.response.type === input.type
|
|
41
43
|
&& record.response.question === input.question);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.js","sourceRoot":"","sources":["../../src/responses/records.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"records.js","sourceRoot":"","sources":["../../src/responses/records.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAIjC,MAAM,UAAU,UAAU,CAAC,MAAc;IACxC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AACD,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,OAAe,EAAE,QAAgB,EAAE,MAAc;IACzF,OAAO,YAAY,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACpF,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,MAAgB;IAChD,OAAO,QAAQ,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;AAClH,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACxD,OAAO,QAAQ,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;AAC/G,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,QAA0B;IACtD,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtD,OAAO,EAAE;WACL,IAAI,KAAK,UAAU;WACnB,QAAQ;WACR,QAAQ,CAAC,gBAAgB,KAAK,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;WAC9D,EAAE,KAAK,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC;QACjG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE;QACjD,CAAC,CAAC,SAAS,CAAC;AACd,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,QAA0B;IACtD,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtD,OAAO,EAAE,IAAI,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzG,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,SAAsC,EAAE,QAAkB;IACtF,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,MAAM,EAAE,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,KAAK,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7I,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpG,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAwB,EAAE,KAAiB;IAC1E,OAAO,CACN,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;WACzE,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;WAC/C,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;WACvC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WACnC,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAC9C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAA0B;IAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -6,17 +6,29 @@ export declare const retryResponse: (existing: {
|
|
|
6
6
|
readonly body: string;
|
|
7
7
|
readonly id: string;
|
|
8
8
|
readonly response: {
|
|
9
|
+
readonly answers?: readonly {
|
|
10
|
+
readonly prompt: string;
|
|
11
|
+
readonly selected: readonly string[];
|
|
12
|
+
readonly text: string;
|
|
13
|
+
}[] | undefined;
|
|
9
14
|
readonly author: string;
|
|
10
15
|
readonly question: string;
|
|
11
16
|
readonly recordedAt: number;
|
|
12
17
|
readonly reviewedRevision: string;
|
|
18
|
+
readonly supersedes?: string | undefined;
|
|
13
19
|
readonly type: "answer" | "clarify" | "not_now";
|
|
14
20
|
};
|
|
15
21
|
}, input: {
|
|
22
|
+
readonly answers?: readonly {
|
|
23
|
+
readonly prompt: string;
|
|
24
|
+
readonly selected: readonly string[];
|
|
25
|
+
readonly text: string;
|
|
26
|
+
}[] | undefined;
|
|
16
27
|
readonly author: string;
|
|
17
28
|
readonly body: string;
|
|
18
29
|
readonly id: string;
|
|
19
30
|
readonly question: string;
|
|
31
|
+
readonly supersedes?: string | undefined;
|
|
20
32
|
readonly type: "answer" | "clarify" | "not_now";
|
|
21
33
|
}, snapshot: Effect.Effect<Snapshot, ResponseFailed, never>, options: ResponseOptions) => Effect.Effect<undefined, ResponseFailed, never>;
|
|
22
34
|
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/responses/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAA0C,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACtG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/responses/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAA0C,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACtG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;yIAexB,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { Effect, FileSystem } from "effect";
|
|
|
2
2
|
import { type DraftInput, ResponseFailed } from "#browser/responses/schema.ts";
|
|
3
3
|
import type { Changes } from "#files/changes.ts";
|
|
4
4
|
import type { Snapshot } from "#search/snapshot.ts";
|
|
5
|
+
import { responseHistory } from "./history.ts";
|
|
5
6
|
export interface ResponseOptions {
|
|
6
7
|
readonly changes: Changes;
|
|
7
8
|
readonly enabled: boolean;
|
|
@@ -31,14 +32,37 @@ export declare const responseService: (options: ResponseOptions) => Effect.Effec
|
|
|
31
32
|
readonly body: string;
|
|
32
33
|
readonly id: string;
|
|
33
34
|
readonly response: {
|
|
35
|
+
readonly answers?: readonly {
|
|
36
|
+
readonly prompt: string;
|
|
37
|
+
readonly selected: readonly string[];
|
|
38
|
+
readonly text: string;
|
|
39
|
+
}[] | undefined;
|
|
34
40
|
readonly author: string;
|
|
35
41
|
readonly question: string;
|
|
36
42
|
readonly recordedAt: number;
|
|
37
43
|
readonly reviewedRevision: string;
|
|
44
|
+
readonly supersedes?: string | undefined;
|
|
38
45
|
readonly type: "answer" | "clarify" | "not_now";
|
|
39
46
|
};
|
|
40
47
|
} | undefined;
|
|
41
48
|
}, ResponseFailed, never>;
|
|
49
|
+
history: (preview: Parameters<typeof responseHistory>[1]) => Effect.Effect<{
|
|
50
|
+
readonly body: string;
|
|
51
|
+
readonly id: string;
|
|
52
|
+
readonly response: {
|
|
53
|
+
readonly answers?: readonly {
|
|
54
|
+
readonly prompt: string;
|
|
55
|
+
readonly selected: readonly string[];
|
|
56
|
+
readonly text: string;
|
|
57
|
+
}[] | undefined;
|
|
58
|
+
readonly author: string;
|
|
59
|
+
readonly question: string;
|
|
60
|
+
readonly recordedAt: number;
|
|
61
|
+
readonly reviewedRevision: string;
|
|
62
|
+
readonly supersedes?: string | undefined;
|
|
63
|
+
readonly type: "answer" | "clarify" | "not_now";
|
|
64
|
+
};
|
|
65
|
+
}[], ResponseFailed, never>;
|
|
42
66
|
locate: (item: string, request: string) => Effect.Effect<{
|
|
43
67
|
readonly context: string;
|
|
44
68
|
readonly id: string;
|
|
@@ -66,22 +90,34 @@ export declare const responseService: (options: ResponseOptions) => Effect.Effec
|
|
|
66
90
|
readonly body: string;
|
|
67
91
|
readonly id: string;
|
|
68
92
|
readonly response: {
|
|
93
|
+
readonly answers?: readonly {
|
|
94
|
+
readonly prompt: string;
|
|
95
|
+
readonly selected: readonly string[];
|
|
96
|
+
readonly text: string;
|
|
97
|
+
}[] | undefined;
|
|
69
98
|
readonly author: string;
|
|
70
99
|
readonly question: string;
|
|
71
100
|
readonly recordedAt: number;
|
|
72
101
|
readonly reviewedRevision: string;
|
|
102
|
+
readonly supersedes?: string | undefined;
|
|
73
103
|
readonly type: "answer" | "clarify" | "not_now";
|
|
74
104
|
};
|
|
75
105
|
}[];
|
|
76
106
|
}, ResponseFailed, never>;
|
|
77
|
-
record: (
|
|
107
|
+
record: (draft: DraftInput) => Effect.Effect<{
|
|
78
108
|
readonly body: string;
|
|
79
109
|
readonly id: string;
|
|
80
110
|
readonly response: {
|
|
111
|
+
readonly answers?: readonly {
|
|
112
|
+
readonly prompt: string;
|
|
113
|
+
readonly selected: readonly string[];
|
|
114
|
+
readonly text: string;
|
|
115
|
+
}[] | undefined;
|
|
81
116
|
readonly author: string;
|
|
82
117
|
readonly question: string;
|
|
83
118
|
readonly recordedAt: number;
|
|
84
119
|
readonly reviewedRevision: string;
|
|
120
|
+
readonly supersedes?: string | undefined;
|
|
85
121
|
readonly type: "answer" | "clarify" | "not_now";
|
|
86
122
|
};
|
|
87
123
|
}, ResponseFailed, FileSystem.FileSystem | import("effect/Path").Path>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/responses/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,UAAU,EAAa,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/responses/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,UAAU,EAAa,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,KAAK,UAAU,EAAiB,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAU/C,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAKD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAkFD,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBApCxC,UAAU;;;;;;;;;;;;;;;;;sBAvCR;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;gCAoFtG,CAAC"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { Clock, Effect, FileSystem, Semaphore } from "effect";
|
|
2
2
|
import { ResponseFailed } from "#browser/responses/schema.ts";
|
|
3
3
|
import { awaitResponse } from "./await.js";
|
|
4
|
+
import { responseHistory } from "./history.js";
|
|
4
5
|
import { locate as locateQuestion } from "./locate.js";
|
|
6
|
+
import { makeResponse } from "./make.js";
|
|
5
7
|
import { publish } from "./publish.js";
|
|
6
8
|
import { readResponses } from "./read.js";
|
|
7
9
|
import { questionMarkdown, responseMarkdown } from "./records.js";
|
|
8
10
|
import { retryResponse } from "./retry.js";
|
|
11
|
+
import { validatedInput } from "./validatedInput.js";
|
|
12
|
+
import { validateSupersedes } from "./validateSupersedes.js";
|
|
9
13
|
function reject(code, message) {
|
|
10
14
|
return Effect.fail(new ResponseFailed({ code, message }));
|
|
11
15
|
}
|
|
@@ -52,10 +56,14 @@ export const responseService = Effect.fn("WorkBoard.responseService")(function*
|
|
|
52
56
|
return question;
|
|
53
57
|
}));
|
|
54
58
|
}
|
|
55
|
-
function record(
|
|
59
|
+
function record(draft) {
|
|
56
60
|
return lock.withPermit(Effect.gen(function* () {
|
|
57
61
|
yield* enabled;
|
|
58
|
-
const result = yield* read(
|
|
62
|
+
const result = yield* read(draft.question);
|
|
63
|
+
const input = yield* Effect.try({
|
|
64
|
+
catch: (cause) => new ResponseFailed({ code: "Conflict", message: String(cause) }),
|
|
65
|
+
try: () => validatedInput(draft, result.question.context, result.question.question.request, result.question.question.source),
|
|
66
|
+
});
|
|
59
67
|
const existing = result.responses.find((candidate) => candidate.id === input.id);
|
|
60
68
|
if (existing) {
|
|
61
69
|
yield* retryResponse(existing, input, snapshot, options);
|
|
@@ -67,24 +75,21 @@ export const responseService = Effect.fn("WorkBoard.responseService")(function*
|
|
|
67
75
|
return yield* reject("Stale", "Source changed or moved. Keep the draft and review the new revision before responding.");
|
|
68
76
|
}
|
|
69
77
|
const data = yield* snapshot;
|
|
78
|
+
yield* validateSupersedes(input, question, data);
|
|
70
79
|
if (data.model.ids.has(input.id)) {
|
|
71
80
|
return yield* reject("Conflict", "This response identity is already used.");
|
|
72
81
|
}
|
|
73
|
-
const response =
|
|
74
|
-
body: input.body,
|
|
75
|
-
id: input.id,
|
|
76
|
-
response: {
|
|
77
|
-
author: input.author,
|
|
78
|
-
question: input.question,
|
|
79
|
-
recordedAt: result.responses.reduce((time, saved) => Math.max(time, saved.response.recordedAt + 1), yield* Clock.currentTimeMillis),
|
|
80
|
-
reviewedRevision: question.question.reviewedRevision,
|
|
81
|
-
type: input.type,
|
|
82
|
-
},
|
|
83
|
-
};
|
|
82
|
+
const response = makeResponse(input, question, result.responses.reduce((time, saved) => Math.max(time, saved.response.recordedAt + 1), yield* Clock.currentTimeMillis));
|
|
84
83
|
yield* publish(options.root, options.changes.realRoot, response.id, responseMarkdown(response)).pipe(Effect.ensuring(options.changes.refresh ?? Effect.void));
|
|
85
84
|
return response;
|
|
86
85
|
}));
|
|
87
86
|
}
|
|
88
|
-
|
|
87
|
+
function history(preview) {
|
|
88
|
+
return Effect.flatMap(snapshot, (data) => Effect.try({
|
|
89
|
+
catch: (cause) => new ResponseFailed({ code: "Unavailable", message: String(cause) }),
|
|
90
|
+
try: () => responseHistory(data, preview),
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
return { awaitResponse: awaitResponse(read), history, locate, read, record, register };
|
|
89
94
|
});
|
|
90
95
|
//# sourceMappingURL=service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/responses/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/responses/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Prompt } from "#browser/responses/Prompt.ts";
|
|
2
|
+
export interface Template {
|
|
3
|
+
readonly context: string;
|
|
4
|
+
readonly prompts: readonly Prompt[];
|
|
5
|
+
}
|
|
6
|
+
export declare function questionTemplate(context: string, request: string, file?: string): Template;
|
|
7
|
+
//# sourceMappingURL=template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/responses/template.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAK3D,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAuBD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAmC1F"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import remarkDirective from "remark-directive";
|
|
2
|
+
import remarkParse from "remark-parse";
|
|
3
|
+
import { unified } from "unified";
|
|
4
|
+
import { metadataParse } from "#metadata/parse.ts";
|
|
5
|
+
import { templateLinks } from "./templateLinks.js";
|
|
6
|
+
import { isContainer, promptFrom, sliceNode } from "./templateNodes.js";
|
|
7
|
+
function nestedControl(node) {
|
|
8
|
+
return (((node.type === "leafDirective" || node.type === "textDirective" || node.type === "containerDirective")
|
|
9
|
+
&& ["question", "option"].includes(node.name))
|
|
10
|
+
|| ("children" in node && node.children.some(nestedControl)));
|
|
11
|
+
}
|
|
12
|
+
function scopedPrompt(node, source, requests, request) {
|
|
13
|
+
const result = promptFrom(node, source);
|
|
14
|
+
if (result.request !== undefined && !requests.some((entry) => entry.id === result.request)) {
|
|
15
|
+
throw new Error("A question's request= must name an attention request in this document.");
|
|
16
|
+
}
|
|
17
|
+
if (result.request === undefined && requests.filter((entry) => entry.state === "open").length > 1) {
|
|
18
|
+
throw new Error("Use request= on question directives when a document has several open attention requests.");
|
|
19
|
+
}
|
|
20
|
+
return result.request === undefined || result.request === request ? result.prompt : undefined;
|
|
21
|
+
}
|
|
22
|
+
export function questionTemplate(context, request, file) {
|
|
23
|
+
const parsed = metadataParse(context);
|
|
24
|
+
const parser = unified().use(remarkParse).use(remarkDirective);
|
|
25
|
+
const body = parsed.body.replace(/\r\n?/gu, "\n");
|
|
26
|
+
const original = parser.parse(body);
|
|
27
|
+
const source = file === undefined ? body : templateLinks(body, original.children, file);
|
|
28
|
+
const tree = parser.parse(source);
|
|
29
|
+
const definitions = tree.children
|
|
30
|
+
.filter((node) => node.type === "definition")
|
|
31
|
+
.map((node) => sliceNode(source, node))
|
|
32
|
+
.join("\n\n");
|
|
33
|
+
const prompts = [];
|
|
34
|
+
const plain = [];
|
|
35
|
+
for (const node of tree.children) {
|
|
36
|
+
if (isContainer(node) && node.name === "question") {
|
|
37
|
+
const prompt = scopedPrompt(node, source, parsed.fields.attention ?? [], request);
|
|
38
|
+
if (prompt) {
|
|
39
|
+
prompts.push({
|
|
40
|
+
...prompt,
|
|
41
|
+
options: prompt.options.map((option) => ({ ...option, source: `${option.source}\n\n${definitions}`.trim() })),
|
|
42
|
+
source: `${prompt.source}\n\n${definitions}`.trim(),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
if (nestedControl(node)) {
|
|
48
|
+
throw new Error("Use top-level question containers with direct option children.");
|
|
49
|
+
}
|
|
50
|
+
plain.push(sliceNode(source, node));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (prompts.length > 32 || new Set(prompts.map((prompt) => prompt.id)).size !== prompts.length) {
|
|
54
|
+
throw new Error("Use at most 32 questions with unique IDs per attention request.");
|
|
55
|
+
}
|
|
56
|
+
return { context: plain.join("\n\n"), prompts };
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/responses/template.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
export declare const templateHtml: (context: string, request: string, file: string) => Effect.Effect<{
|
|
3
|
+
background: string;
|
|
4
|
+
controls: string;
|
|
5
|
+
hasPrompts: boolean;
|
|
6
|
+
}, import("../render/failed.ts").RenderFailed, import("../render/highlighter.ts").Highlighter>;
|
|
7
|
+
//# sourceMappingURL=templateHtml.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateHtml.d.ts","sourceRoot":"","sources":["../../src/responses/templateHtml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,eAAO,MAAM,YAAY;;;;8FAoBvB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { escapeHtml } from "#page/escape.ts";
|
|
3
|
+
import { renderMarkdown } from "#render/markdown.ts";
|
|
4
|
+
import { questionTemplate } from "./template.js";
|
|
5
|
+
export const templateHtml = Effect.fn("WorkBoard.templateHtml")(function* (context, request, file) {
|
|
6
|
+
const template = questionTemplate(context, request, file);
|
|
7
|
+
function render(source) {
|
|
8
|
+
return renderMarkdown(source, { file, safe: true });
|
|
9
|
+
}
|
|
10
|
+
const background = yield* render(template.context);
|
|
11
|
+
const controls = yield* Effect.forEach(template.prompts, (prompt, index) => Effect.gen(function* () {
|
|
12
|
+
const description = yield* render(prompt.source);
|
|
13
|
+
const options = yield* Effect.forEach(prompt.options, (option, choice) => Effect.map(render(option.source), (html) => `<div class="question-option"><input id="question-${index}-${choice}" type="${prompt.mode === "one" ? "radio" : "checkbox"}" name="choice-${escapeHtml(prompt.id)}" value="${escapeHtml(option.id)}" data-option-source="${escapeHtml(option.source)}"><div><label for="question-${index}-${choice}">Option ${escapeHtml(option.id)}</label>${html}</div></div>`));
|
|
14
|
+
return `<fieldset data-prompt="${escapeHtml(prompt.id)}" data-mode="${prompt.mode}" data-source="${escapeHtml(prompt.source)}"><legend>Question ${index + 1} · ${escapeHtml(prompt.id)}</legend>${description}<p>${prompt.mode === "text" ? "Answer in your own words" : `${prompt.mode === "one" ? "Choose one option" : "Choose any combination"}, or answer in your own words`}. Nothing is selected for you.</p>${options.join("")}${prompt.mode === "text" ? "" : '<button type="button" data-clear-choices>Clear selections</button>'}<label>Additional text / another answer<textarea data-answer-text maxlength="8192" rows="3"></textarea></label></fieldset>`;
|
|
15
|
+
}));
|
|
16
|
+
return { background, controls: controls.join(""), hasPrompts: template.prompts.length > 0 };
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=templateHtml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateHtml.js","sourceRoot":"","sources":["../../src/responses/templateHtml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAe,EAAE,OAAe,EAAE,IAAY;IACxH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1D,SAAS,MAAM,CAAC,MAAc;QAC7B,OAAO,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAC1E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CACxE,MAAM,CAAC,GAAG,CACT,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EACrB,CAAC,IAAI,EAAE,EAAE,CACR,oDAAoD,KAAK,IAAI,MAAM,WAAW,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,kBAAkB,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,yBAAyB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,+BAA+B,KAAK,IAAI,MAAM,YAAY,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,IAAI,cAAc,CACjW,CACD,CAAC;QACF,OAAO,0BAA0B,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,MAAM,CAAC,IAAI,kBAAkB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,KAAK,GAAG,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,WAAW,MAAM,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,wBAAwB,+BAA+B,qCAAqC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oEAAoE,4HAA4H,CAAC;IACzoB,CAAC,CAAC,CACF,CAAC;IACF,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AAC7F,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateLinks.d.ts","sourceRoot":"","sources":["../../src/responses/templateLinks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAazC,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,UA6BxF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { fileUrl } from "#files/url.ts";
|
|
2
|
+
function destination(url, file) {
|
|
3
|
+
if (url.startsWith("//") || url.search(/^[a-z][a-z\d+.-]*:/iu) === 0) {
|
|
4
|
+
return url;
|
|
5
|
+
}
|
|
6
|
+
const resolved = new URL(url, `http://work-board.local${fileUrl(file)}`);
|
|
7
|
+
return resolved.pathname + resolved.search + resolved.hash;
|
|
8
|
+
}
|
|
9
|
+
function titleSuffix(title) {
|
|
10
|
+
return title ? ` "${title.replaceAll("\\", "\\\\").replaceAll('"', '\\"')}"` : "";
|
|
11
|
+
}
|
|
12
|
+
export function templateLinks(source, nodes, file) {
|
|
13
|
+
const edits = [];
|
|
14
|
+
function visit(node) {
|
|
15
|
+
const start = node.position?.start.offset;
|
|
16
|
+
const end = node.position?.end.offset;
|
|
17
|
+
if (start === undefined || end === undefined) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (node.type === "link") {
|
|
21
|
+
const label = source.slice(node.children.at(0)?.position?.start.offset, node.children.at(-1)?.position?.end.offset);
|
|
22
|
+
edits.push({ end, start, text: `[${label}](<${destination(node.url, file)}>${titleSuffix(node.title)})` });
|
|
23
|
+
}
|
|
24
|
+
else if (node.type === "image") {
|
|
25
|
+
edits.push({
|
|
26
|
+
end,
|
|
27
|
+
start,
|
|
28
|
+
text: `![${(node.alt ?? "").replaceAll("[", "\\[").replaceAll("]", "\\]")}](<${destination(node.url, file)}>${titleSuffix(node.title)})`,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
else if (node.type === "definition") {
|
|
32
|
+
edits.push({ end, start, text: `[${node.label ?? node.identifier}]: <${destination(node.url, file)}>${titleSuffix(node.title)}` });
|
|
33
|
+
}
|
|
34
|
+
else if ("children" in node) {
|
|
35
|
+
node.children.forEach(visit);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
nodes.forEach(visit);
|
|
39
|
+
let result = source;
|
|
40
|
+
for (const edit of edits.sort((a, b) => b.start - a.start)) {
|
|
41
|
+
result = result.slice(0, edit.start) + edit.text + result.slice(edit.end);
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=templateLinks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateLinks.js","sourceRoot":"","sources":["../../src/responses/templateLinks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,SAAS,WAAW,CAAC,GAAW,EAAE,IAAY;IAC7C,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,0BAA0B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC5D,CAAC;AACD,SAAS,WAAW,CAAC,KAAgC;IACpD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACnF,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAA6B,EAAE,IAAY;IACxF,MAAM,KAAK,GAA8E,EAAE,CAAC;IAC5F,SAAS,KAAK,CAAC,IAAiB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;QACtC,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO;QACR,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACpH,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5G,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC;gBACV,GAAG;gBACH,KAAK;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;aACxI,CAAC,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACpI,CAAC;aAAM,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACF,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrB,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC"}
|