@shivaedev/work-board 0.7.2 → 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 +44 -0
- package/README.md +110 -2
- package/assets/agent.js +37 -0
- package/assets/native.js +54 -25
- package/dist/board.d.ts +1 -0
- package/dist/board.d.ts.map +1 -1
- package/dist/board.js +15 -2
- package/dist/board.js.map +1 -1
- package/dist/browser/client.d.ts +19 -79
- package/dist/browser/client.d.ts.map +1 -1
- package/dist/browser/client.js +12 -1
- package/dist/browser/client.js.map +1 -1
- package/dist/browser/entry.d.ts +3 -0
- package/dist/browser/entry.d.ts.map +1 -0
- package/dist/browser/entry.js +7 -0
- package/dist/browser/entry.js.map +1 -0
- 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 +8 -0
- package/dist/browser/responses/draftSession.d.ts.map +1 -0
- package/dist/browser/responses/draftSession.js +105 -0
- package/dist/browser/responses/draftSession.js.map +1 -0
- package/dist/browser/responses/drafts.d.ts +21 -0
- package/dist/browser/responses/drafts.d.ts.map +1 -0
- package/dist/browser/responses/drafts.js +68 -0
- package/dist/browser/responses/drafts.js.map +1 -0
- package/dist/browser/responses/preview.d.ts +4 -0
- package/dist/browser/responses/preview.d.ts.map +1 -0
- package/dist/browser/responses/preview.js +5 -0
- package/dist/browser/responses/preview.js.map +1 -0
- 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 +168 -0
- package/dist/browser/responses/schema.d.ts.map +1 -0
- package/dist/browser/responses/schema.js +57 -0
- package/dist/browser/responses/schema.js.map +1 -0
- package/dist/browser/responses/setup.d.ts +2 -0
- package/dist/browser/responses/setup.d.ts.map +1 -0
- package/dist/browser/responses/setup.js +129 -0
- package/dist/browser/responses/setup.js.map +1 -0
- 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 +4 -0
- package/dist/browser/responses/submit.d.ts.map +1 -0
- package/dist/browser/responses/submit.js +30 -0
- package/dist/browser/responses/submit.js.map +1 -0
- package/dist/browser/session.d.ts +1 -79
- package/dist/browser/session.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +24 -15
- package/dist/cli.js.map +1 -1
- package/dist/files/changes.d.ts +1 -0
- package/dist/files/changes.d.ts.map +1 -1
- package/dist/files/changes.js +1 -1
- package/dist/files/changes.js.map +1 -1
- package/dist/http/respond.d.ts.map +1 -1
- package/dist/http/respond.js +2 -0
- package/dist/http/respond.js.map +1 -1
- package/dist/metadata/backlinks.d.ts.map +1 -1
- package/dist/metadata/backlinks.js +5 -0
- package/dist/metadata/backlinks.js.map +1 -1
- package/dist/metadata/fields.d.ts +23 -1
- package/dist/metadata/fields.d.ts.map +1 -1
- package/dist/metadata/problems.d.ts.map +1 -1
- package/dist/metadata/problems.js +3 -0
- package/dist/metadata/problems.js.map +1 -1
- package/dist/metadata/schema.d.ts +23 -1
- package/dist/metadata/schema.d.ts.map +1 -1
- package/dist/metadata/schema.js +6 -2
- package/dist/metadata/schema.js.map +1 -1
- package/dist/page/attentionDetails.d.ts.map +1 -1
- package/dist/page/attentionDetails.js +2 -1
- package/dist/page/attentionDetails.js.map +1 -1
- package/dist/page/metadataDetails.d.ts.map +1 -1
- package/dist/page/metadataDetails.js +6 -0
- package/dist/page/metadataDetails.js.map +1 -1
- package/dist/page/navigationScript.js +1 -1
- package/dist/page/shell.d.ts +1 -1
- package/dist/page/shell.d.ts.map +1 -1
- package/dist/page/shell.js.map +1 -1
- package/dist/page/style.d.ts.map +1 -1
- package/dist/page/style.js +3 -1
- package/dist/page/style.js.map +1 -1
- package/dist/page/swap.d.ts +1 -1
- package/dist/page/swap.d.ts.map +1 -1
- package/dist/page/swap.js +3 -0
- package/dist/page/swap.js.map +1 -1
- package/dist/path/Identity.d.ts +3 -0
- package/dist/path/Identity.d.ts.map +1 -0
- package/dist/path/Identity.js +3 -0
- package/dist/path/Identity.js.map +1 -0
- 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-cli.d.ts +2 -0
- package/dist/responses/agent-cli.d.ts.map +1 -0
- package/dist/responses/agent-cli.js +31 -0
- package/dist/responses/agent-cli.js.map +1 -0
- package/dist/responses/agent.d.ts +80 -0
- package/dist/responses/agent.d.ts.map +1 -0
- package/dist/responses/agent.js +49 -0
- package/dist/responses/agent.js.map +1 -0
- package/dist/responses/await.d.ts +39 -0
- package/dist/responses/await.d.ts.map +1 -0
- package/dist/responses/await.js +21 -0
- package/dist/responses/await.js.map +1 -0
- 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/flags.d.ts +6 -0
- package/dist/responses/flags.d.ts.map +1 -0
- package/dist/responses/flags.js +23 -0
- package/dist/responses/flags.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 +13 -0
- package/dist/responses/locate.d.ts.map +1 -0
- package/dist/responses/locate.js +55 -0
- package/dist/responses/locate.js.map +1 -0
- 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 +71 -0
- package/dist/responses/outcome.d.ts.map +1 -0
- package/dist/responses/outcome.js +14 -0
- package/dist/responses/outcome.js.map +1 -0
- package/dist/responses/page.d.ts +6 -0
- package/dist/responses/page.d.ts.map +1 -0
- package/dist/responses/page.js +22 -0
- package/dist/responses/page.js.map +1 -0
- package/dist/responses/publish.d.ts +4 -0
- package/dist/responses/publish.d.ts.map +1 -0
- package/dist/responses/publish.js +56 -0
- package/dist/responses/publish.js.map +1 -0
- package/dist/responses/publishIn.d.ts +3 -0
- package/dist/responses/publishIn.d.ts.map +1 -0
- package/dist/responses/publishIn.js +69 -0
- package/dist/responses/publishIn.js.map +1 -0
- package/dist/responses/read.d.ts +36 -0
- package/dist/responses/read.d.ts.map +1 -0
- package/dist/responses/read.js +43 -0
- package/dist/responses/read.js.map +1 -0
- package/dist/responses/records.d.ts +12 -0
- package/dist/responses/records.d.ts.map +1 -0
- package/dist/responses/records.js +49 -0
- package/dist/responses/records.js.map +1 -0
- package/dist/responses/retry.d.ts +34 -0
- package/dist/responses/retry.d.ts.map +1 -0
- package/dist/responses/retry.js +14 -0
- package/dist/responses/retry.js.map +1 -0
- package/dist/responses/service.d.ts +142 -0
- package/dist/responses/service.d.ts.map +1 -0
- package/dist/responses/service.js +95 -0
- package/dist/responses/service.js.map +1 -0
- 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 +37 -0
- package/dist/responses/waitFor.d.ts.map +1 -0
- package/dist/responses/waitFor.js +47 -0
- package/dist/responses/waitFor.js.map +1 -0
- package/dist/rpc/contract.d.ts +125 -2
- package/dist/rpc/contract.d.ts.map +1 -1
- package/dist/rpc/contract.js +3 -2
- package/dist/rpc/contract.js.map +1 -1
- package/dist/rpc/responseContract.d.ts +260 -0
- package/dist/rpc/responseContract.d.ts.map +1 -0
- package/dist/rpc/responseContract.js +37 -0
- package/dist/rpc/responseContract.js.map +1 -0
- package/dist/rpc/server.d.ts +3 -1
- package/dist/rpc/server.d.ts.map +1 -1
- package/dist/rpc/server.js +6 -1
- package/dist/rpc/server.js.map +1 -1
- package/dist/serve-cli.d.ts +3 -0
- package/dist/serve-cli.d.ts.map +1 -0
- package/dist/serve-cli.js +20 -0
- package/dist/serve-cli.js.map +1 -0
- package/package.json +3 -3
- package/src/board.ts +16 -2
- package/src/browser/client.ts +30 -4
- package/src/browser/entry.ts +9 -0
- package/src/browser/responses/Prompt.ts +6 -0
- package/src/browser/responses/answerBody.ts +11 -0
- package/src/browser/responses/draftSession.ts +101 -0
- package/src/browser/responses/drafts.ts +82 -0
- package/src/browser/responses/preview.ts +7 -0
- package/src/browser/responses/questionnaireControls.ts +74 -0
- package/src/browser/responses/schema.ts +63 -0
- package/src/browser/responses/setup.ts +132 -0
- package/src/browser/responses/submissionFields.ts +15 -0
- package/src/browser/responses/submit.ts +33 -0
- package/src/cli.ts +14 -22
- package/src/files/changes.ts +2 -1
- package/src/http/respond.ts +2 -0
- package/src/metadata/backlinks.ts +5 -0
- package/src/metadata/problems.ts +3 -0
- package/src/metadata/schema.ts +6 -2
- package/src/page/attentionDetails.ts +2 -1
- package/src/page/metadataDetails.ts +6 -0
- package/src/page/navigationScript.ts +1 -1
- package/src/page/shell.ts +1 -1
- package/src/page/style.ts +3 -1
- package/src/page/swap.ts +3 -0
- package/src/path/Identity.ts +3 -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/agent-cli.ts +35 -0
- package/src/responses/agent.ts +59 -0
- package/src/responses/await.ts +21 -0
- package/src/responses/composerHtml.ts +28 -0
- package/src/responses/flags.ts +22 -0
- package/src/responses/history.ts +18 -0
- package/src/responses/locate.ts +60 -0
- package/src/responses/make.ts +17 -0
- package/src/responses/outcome.ts +15 -0
- package/src/responses/page.ts +30 -0
- package/src/responses/publish.ts +53 -0
- package/src/responses/publishIn.ts +64 -0
- package/src/responses/read.ts +45 -0
- package/src/responses/records.ts +55 -0
- package/src/responses/retry.ts +23 -0
- package/src/responses/service.ts +117 -0
- 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/responses/waitFor.ts +58 -0
- package/src/rpc/contract.ts +3 -2
- package/src/rpc/responseContract.ts +46 -0
- package/src/rpc/server.ts +8 -1
- package/src/serve-cli.ts +37 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
function restoreAnswers(fields, draft, same) {
|
|
2
|
+
for (const field of fields) {
|
|
3
|
+
const answer = draft.answers?.find((entry) => entry.prompt === field.dataset.prompt);
|
|
4
|
+
for (const input of field.querySelectorAll("input")) {
|
|
5
|
+
input.checked = same && (answer?.selected.includes(input.value) ?? false);
|
|
6
|
+
}
|
|
7
|
+
const text = field.querySelector("textarea");
|
|
8
|
+
if (text) {
|
|
9
|
+
text.value = answer?.text ?? "";
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function questionnaireControls(form) {
|
|
14
|
+
function modeOf(field) {
|
|
15
|
+
if (field.dataset.mode === "text") {
|
|
16
|
+
return "text";
|
|
17
|
+
}
|
|
18
|
+
return field.dataset.mode === "many" ? "many" : "one";
|
|
19
|
+
}
|
|
20
|
+
const fields = [...form.querySelectorAll("fieldset[data-prompt]")];
|
|
21
|
+
const models = fields.map((field) => ({
|
|
22
|
+
id: field.dataset.prompt ?? "",
|
|
23
|
+
mode: modeOf(field),
|
|
24
|
+
options: [...field.querySelectorAll("input[data-option-source]")].map((input) => ({
|
|
25
|
+
id: input.value,
|
|
26
|
+
source: input.dataset.optionSource ?? "",
|
|
27
|
+
})),
|
|
28
|
+
source: field.dataset.source ?? "",
|
|
29
|
+
}));
|
|
30
|
+
function read() {
|
|
31
|
+
return fields.length === 0
|
|
32
|
+
? undefined
|
|
33
|
+
: fields.map((field) => ({
|
|
34
|
+
prompt: field.dataset.prompt ?? "",
|
|
35
|
+
selected: [...field.querySelectorAll("input:checked")].map((input) => input.value),
|
|
36
|
+
text: field.querySelector("textarea")?.value ?? "",
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
function restore(draft, revision) {
|
|
40
|
+
const same = draft.revision === revision && (draft.question === undefined || draft.question === form.dataset.question);
|
|
41
|
+
restoreAnswers(fields, draft, same);
|
|
42
|
+
const recovery = form.querySelector("#response-draft-recovery");
|
|
43
|
+
const retained = !same && draft.answers
|
|
44
|
+
? `Earlier template answers (selections cleared; review before choosing again):\n${JSON.stringify(draft.answers, null, 2)}\n${draft.recovery ?? ""}`
|
|
45
|
+
: draft.recovery;
|
|
46
|
+
if (recovery) {
|
|
47
|
+
recovery.textContent = retained ?? "";
|
|
48
|
+
recovery.hidden = !retained;
|
|
49
|
+
}
|
|
50
|
+
return retained;
|
|
51
|
+
}
|
|
52
|
+
function validate(type) {
|
|
53
|
+
for (const field of fields) {
|
|
54
|
+
const text = field.querySelector("textarea");
|
|
55
|
+
text?.setCustomValidity(type === "answer" && !text.value.trim() && !field.querySelector("input:checked") ? "Choose an option or answer in your own words." : "");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
for (const field of fields) {
|
|
59
|
+
field.querySelector("[data-clear-choices]")?.addEventListener("click", () => {
|
|
60
|
+
for (const input of field.querySelectorAll("input")) {
|
|
61
|
+
input.checked = false;
|
|
62
|
+
}
|
|
63
|
+
form.dispatchEvent(new Event("input", { bubbles: true }));
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return { models, read, restore, validate };
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=questionnaireControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questionnaireControls.js","sourceRoot":"","sources":["../../../src/browser/responses/questionnaireControls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
export declare const Revision: Schema.String;
|
|
3
|
+
export declare const ResponseKind: Schema.Literals<readonly ["answer", "clarify", "not_now"]>;
|
|
4
|
+
export declare const PromptAnswer: Schema.Struct<{
|
|
5
|
+
readonly prompt: Schema.String;
|
|
6
|
+
readonly selected: Schema.$Array<Schema.String>;
|
|
7
|
+
readonly text: Schema.String;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const Answers: Schema.$Array<Schema.Struct<{
|
|
10
|
+
readonly prompt: Schema.String;
|
|
11
|
+
readonly selected: Schema.$Array<Schema.String>;
|
|
12
|
+
readonly text: Schema.String;
|
|
13
|
+
}>>;
|
|
14
|
+
export type PromptAnswer = typeof PromptAnswer.Type;
|
|
15
|
+
export declare const QuestionRecord: Schema.Struct<{
|
|
16
|
+
readonly deadline: Schema.Number;
|
|
17
|
+
readonly item: Schema.String;
|
|
18
|
+
readonly reason: Schema.String;
|
|
19
|
+
readonly registeredAt: Schema.Number;
|
|
20
|
+
readonly request: Schema.String;
|
|
21
|
+
readonly reviewedRevision: Schema.String;
|
|
22
|
+
readonly source: Schema.String;
|
|
23
|
+
}>;
|
|
24
|
+
export declare const ResponseRecord: Schema.Struct<{
|
|
25
|
+
readonly answers: Schema.optional<Schema.$Array<Schema.Struct<{
|
|
26
|
+
readonly prompt: Schema.String;
|
|
27
|
+
readonly selected: Schema.$Array<Schema.String>;
|
|
28
|
+
readonly text: Schema.String;
|
|
29
|
+
}>>>;
|
|
30
|
+
readonly author: Schema.String;
|
|
31
|
+
readonly question: Schema.String;
|
|
32
|
+
readonly recordedAt: Schema.Number;
|
|
33
|
+
readonly reviewedRevision: Schema.String;
|
|
34
|
+
readonly supersedes: Schema.optional<Schema.String>;
|
|
35
|
+
readonly type: Schema.Literals<readonly ["answer", "clarify", "not_now"]>;
|
|
36
|
+
}>;
|
|
37
|
+
export declare const QuestionPreview: Schema.Struct<{
|
|
38
|
+
readonly context: Schema.String;
|
|
39
|
+
readonly id: Schema.String;
|
|
40
|
+
readonly item: Schema.String;
|
|
41
|
+
readonly reason: Schema.String;
|
|
42
|
+
readonly request: Schema.String;
|
|
43
|
+
readonly reviewedRevision: Schema.String;
|
|
44
|
+
readonly source: Schema.String;
|
|
45
|
+
}>;
|
|
46
|
+
export type QuestionPreview = typeof QuestionPreview.Type;
|
|
47
|
+
export declare const Question: Schema.Struct<{
|
|
48
|
+
readonly context: Schema.String;
|
|
49
|
+
readonly id: Schema.String;
|
|
50
|
+
readonly question: Schema.Struct<{
|
|
51
|
+
readonly deadline: Schema.Number;
|
|
52
|
+
readonly item: Schema.String;
|
|
53
|
+
readonly reason: Schema.String;
|
|
54
|
+
readonly registeredAt: Schema.Number;
|
|
55
|
+
readonly request: Schema.String;
|
|
56
|
+
readonly reviewedRevision: Schema.String;
|
|
57
|
+
readonly source: Schema.String;
|
|
58
|
+
}>;
|
|
59
|
+
}>;
|
|
60
|
+
export declare const RecordedResponse: Schema.Struct<{
|
|
61
|
+
readonly body: Schema.String;
|
|
62
|
+
readonly id: Schema.String;
|
|
63
|
+
readonly response: Schema.Struct<{
|
|
64
|
+
readonly answers: Schema.optional<Schema.$Array<Schema.Struct<{
|
|
65
|
+
readonly prompt: Schema.String;
|
|
66
|
+
readonly selected: Schema.$Array<Schema.String>;
|
|
67
|
+
readonly text: Schema.String;
|
|
68
|
+
}>>>;
|
|
69
|
+
readonly author: Schema.String;
|
|
70
|
+
readonly question: Schema.String;
|
|
71
|
+
readonly recordedAt: Schema.Number;
|
|
72
|
+
readonly reviewedRevision: Schema.String;
|
|
73
|
+
readonly supersedes: Schema.optional<Schema.String>;
|
|
74
|
+
readonly type: Schema.Literals<readonly ["answer", "clarify", "not_now"]>;
|
|
75
|
+
}>;
|
|
76
|
+
}>;
|
|
77
|
+
export declare const Reading: Schema.Struct<{
|
|
78
|
+
readonly question: Schema.Struct<{
|
|
79
|
+
readonly context: Schema.String;
|
|
80
|
+
readonly id: Schema.String;
|
|
81
|
+
readonly question: Schema.Struct<{
|
|
82
|
+
readonly deadline: Schema.Number;
|
|
83
|
+
readonly item: Schema.String;
|
|
84
|
+
readonly reason: Schema.String;
|
|
85
|
+
readonly registeredAt: Schema.Number;
|
|
86
|
+
readonly request: Schema.String;
|
|
87
|
+
readonly reviewedRevision: Schema.String;
|
|
88
|
+
readonly source: Schema.String;
|
|
89
|
+
}>;
|
|
90
|
+
}>;
|
|
91
|
+
readonly responses: Schema.$Array<Schema.Struct<{
|
|
92
|
+
readonly body: Schema.String;
|
|
93
|
+
readonly id: Schema.String;
|
|
94
|
+
readonly response: Schema.Struct<{
|
|
95
|
+
readonly answers: Schema.optional<Schema.$Array<Schema.Struct<{
|
|
96
|
+
readonly prompt: Schema.String;
|
|
97
|
+
readonly selected: Schema.$Array<Schema.String>;
|
|
98
|
+
readonly text: Schema.String;
|
|
99
|
+
}>>>;
|
|
100
|
+
readonly author: Schema.String;
|
|
101
|
+
readonly question: Schema.String;
|
|
102
|
+
readonly recordedAt: Schema.Number;
|
|
103
|
+
readonly reviewedRevision: Schema.String;
|
|
104
|
+
readonly supersedes: Schema.optional<Schema.String>;
|
|
105
|
+
readonly type: Schema.Literals<readonly ["answer", "clarify", "not_now"]>;
|
|
106
|
+
}>;
|
|
107
|
+
}>>;
|
|
108
|
+
}>;
|
|
109
|
+
export declare const WaitReading: Schema.Struct<{
|
|
110
|
+
readonly expired: Schema.Boolean;
|
|
111
|
+
readonly question: Schema.Struct<{
|
|
112
|
+
readonly context: Schema.String;
|
|
113
|
+
readonly id: Schema.String;
|
|
114
|
+
readonly question: Schema.Struct<{
|
|
115
|
+
readonly deadline: Schema.Number;
|
|
116
|
+
readonly item: Schema.String;
|
|
117
|
+
readonly reason: Schema.String;
|
|
118
|
+
readonly registeredAt: Schema.Number;
|
|
119
|
+
readonly request: Schema.String;
|
|
120
|
+
readonly reviewedRevision: Schema.String;
|
|
121
|
+
readonly source: Schema.String;
|
|
122
|
+
}>;
|
|
123
|
+
}>;
|
|
124
|
+
readonly response: Schema.optional<Schema.Struct<{
|
|
125
|
+
readonly body: Schema.String;
|
|
126
|
+
readonly id: Schema.String;
|
|
127
|
+
readonly response: Schema.Struct<{
|
|
128
|
+
readonly answers: Schema.optional<Schema.$Array<Schema.Struct<{
|
|
129
|
+
readonly prompt: Schema.String;
|
|
130
|
+
readonly selected: Schema.$Array<Schema.String>;
|
|
131
|
+
readonly text: Schema.String;
|
|
132
|
+
}>>>;
|
|
133
|
+
readonly author: Schema.String;
|
|
134
|
+
readonly question: Schema.String;
|
|
135
|
+
readonly recordedAt: Schema.Number;
|
|
136
|
+
readonly reviewedRevision: Schema.String;
|
|
137
|
+
readonly supersedes: Schema.optional<Schema.String>;
|
|
138
|
+
readonly type: Schema.Literals<readonly ["answer", "clarify", "not_now"]>;
|
|
139
|
+
}>;
|
|
140
|
+
}>>;
|
|
141
|
+
}>;
|
|
142
|
+
export type WaitReading = typeof WaitReading.Type;
|
|
143
|
+
declare const ResponseFailed_base: Schema.Class<ResponseFailed, Schema.TaggedStruct<"ResponseFailed", {
|
|
144
|
+
readonly cause: Schema.optional<Schema.Defect>;
|
|
145
|
+
readonly code: Schema.Literals<readonly ["Disabled", "Missing", "Stale", "Conflict", "Unavailable", "Unsupported", "Uncertain", "Unanswered"]>;
|
|
146
|
+
readonly message: Schema.String;
|
|
147
|
+
}>, import("effect/Cause").YieldableError>;
|
|
148
|
+
export declare class ResponseFailed extends ResponseFailed_base {
|
|
149
|
+
}
|
|
150
|
+
export declare const DraftInput: Schema.Struct<{
|
|
151
|
+
readonly answers: Schema.optional<Schema.$Array<Schema.Struct<{
|
|
152
|
+
readonly prompt: Schema.String;
|
|
153
|
+
readonly selected: Schema.$Array<Schema.String>;
|
|
154
|
+
readonly text: Schema.String;
|
|
155
|
+
}>>>;
|
|
156
|
+
readonly author: Schema.String;
|
|
157
|
+
readonly body: Schema.String;
|
|
158
|
+
readonly id: Schema.String;
|
|
159
|
+
readonly question: Schema.String;
|
|
160
|
+
readonly supersedes: Schema.optional<Schema.String>;
|
|
161
|
+
readonly type: Schema.Literals<readonly ["answer", "clarify", "not_now"]>;
|
|
162
|
+
}>;
|
|
163
|
+
export type Question = typeof Question.Type;
|
|
164
|
+
export type RecordedResponse = typeof RecordedResponse.Type;
|
|
165
|
+
export type Reading = typeof Reading.Type;
|
|
166
|
+
export type DraftInput = typeof DraftInput.Type;
|
|
167
|
+
export {};
|
|
168
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,eAAO,MAAM,QAAQ,eAA0D,CAAC;AAChF,eAAO,MAAM,YAAY,4DAAoD,CAAC;AAC9E,eAAO,MAAM,YAAY;;;;EAIvB,CAAC;AACH,eAAO,MAAM,OAAO;;;;GAA2D,CAAC;AAChF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC;AACpD,eAAO,MAAM,cAAc;;;;;;;;EAQzB,CAAC;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;EAQzB,CAAC;AACH,eAAO,MAAM,eAAe;;;;;;;;EAQ1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC;AAC1D,eAAO,MAAM,QAAQ;;;;;;;;;;;;EAAoF,CAAC;AAC1G,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;EAAiF,CAAC;AAC/G,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAmF,CAAC;AACxG,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA8G,CAAC;AACvI,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;;;;;;AAClD,qBAAa,cAAe,SAAQ,mBAIlC;CAAG;AACL,eAAO,MAAM,UAAU;;;;;;;;;;;;EAQrB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAC5D,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC;AAC1C,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import { Identity } from "#path/Identity.ts";
|
|
3
|
+
export const Revision = Schema.String.check(Schema.isPattern(/^[a-f\d]{64}$/u));
|
|
4
|
+
export const ResponseKind = Schema.Literals(["answer", "clarify", "not_now"]);
|
|
5
|
+
export const PromptAnswer = Schema.Struct({
|
|
6
|
+
prompt: Identity.check(Schema.isMaxLength(128)),
|
|
7
|
+
selected: Schema.Array(Identity.check(Schema.isMaxLength(128))).check(Schema.isMaxLength(32)),
|
|
8
|
+
text: Schema.String.check(Schema.isMaxLength(8192)),
|
|
9
|
+
});
|
|
10
|
+
export const Answers = Schema.Array(PromptAnswer).check(Schema.isMaxLength(32));
|
|
11
|
+
export const QuestionRecord = Schema.Struct({
|
|
12
|
+
deadline: Schema.Number.check(Schema.isFinite(), Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(8_640_000_000_000_000)),
|
|
13
|
+
item: Identity,
|
|
14
|
+
reason: Schema.String,
|
|
15
|
+
registeredAt: Schema.Number.check(Schema.isFinite(), Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(8_640_000_000_000_000)),
|
|
16
|
+
request: Identity,
|
|
17
|
+
reviewedRevision: Revision,
|
|
18
|
+
source: Schema.String,
|
|
19
|
+
});
|
|
20
|
+
export const ResponseRecord = Schema.Struct({
|
|
21
|
+
answers: Schema.optional(Answers),
|
|
22
|
+
author: Schema.String.check(Schema.isPattern(/\S/u), Schema.isMaxLength(200)),
|
|
23
|
+
question: Identity,
|
|
24
|
+
recordedAt: Schema.Number.check(Schema.isFinite(), Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(8_640_000_000_000_000)),
|
|
25
|
+
reviewedRevision: Revision,
|
|
26
|
+
supersedes: Schema.optional(Identity),
|
|
27
|
+
type: ResponseKind,
|
|
28
|
+
});
|
|
29
|
+
export const QuestionPreview = Schema.Struct({
|
|
30
|
+
context: Schema.String,
|
|
31
|
+
id: Identity,
|
|
32
|
+
item: Identity,
|
|
33
|
+
reason: Schema.String,
|
|
34
|
+
request: Identity,
|
|
35
|
+
reviewedRevision: Revision,
|
|
36
|
+
source: Schema.String,
|
|
37
|
+
});
|
|
38
|
+
export const Question = Schema.Struct({ context: Schema.String, id: Identity, question: QuestionRecord });
|
|
39
|
+
export const RecordedResponse = Schema.Struct({ body: Schema.String, id: Identity, response: ResponseRecord });
|
|
40
|
+
export const Reading = Schema.Struct({ question: Question, responses: Schema.Array(RecordedResponse) });
|
|
41
|
+
export const WaitReading = Schema.Struct({ expired: Schema.Boolean, question: Question, response: Schema.optional(RecordedResponse) });
|
|
42
|
+
export class ResponseFailed extends Schema.TaggedError()("ResponseFailed", {
|
|
43
|
+
cause: Schema.optional(Schema.Defect()),
|
|
44
|
+
code: Schema.Literals(["Disabled", "Missing", "Stale", "Conflict", "Unavailable", "Unsupported", "Uncertain", "Unanswered"]),
|
|
45
|
+
message: Schema.String,
|
|
46
|
+
}) {
|
|
47
|
+
}
|
|
48
|
+
export const DraftInput = Schema.Struct({
|
|
49
|
+
answers: Schema.optional(Answers),
|
|
50
|
+
author: ResponseRecord.fields.author,
|
|
51
|
+
body: Schema.String.check(Schema.isMaxLength(32_768)),
|
|
52
|
+
id: Identity,
|
|
53
|
+
question: Identity,
|
|
54
|
+
supersedes: Schema.optional(Identity),
|
|
55
|
+
type: ResponseKind,
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/browser/responses/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/setup.ts"],"names":[],"mappings":"AA+HA,wBAAgB,cAAc,SAI7B"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { draftSession } from "./draftSession.js";
|
|
2
|
+
import { responsePreview } from "./preview.js";
|
|
3
|
+
import { questionnaireControls } from "./questionnaireControls.js";
|
|
4
|
+
import { submitResponse } from "./submit.js";
|
|
5
|
+
function attach() {
|
|
6
|
+
const doc = document.getElementById("doc");
|
|
7
|
+
if (doc?.dataset.view !== "response") {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const form = doc.querySelector("#response-form");
|
|
11
|
+
if (!form || form.dataset.bound === "true") {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
form.dataset.bound = "true";
|
|
15
|
+
const status = form.querySelector("#response-status");
|
|
16
|
+
const author = form.elements.namedItem("author");
|
|
17
|
+
const body = form.elements.namedItem("body");
|
|
18
|
+
const type = form.elements.namedItem("type");
|
|
19
|
+
const supersedes = form.elements.namedItem("supersedes");
|
|
20
|
+
const submit = form.querySelector("#response-submit");
|
|
21
|
+
const preview = form.querySelector("#response-preview-content");
|
|
22
|
+
const clear = form.querySelector("#response-clear");
|
|
23
|
+
const previewButton = form.querySelector("#response-preview");
|
|
24
|
+
if (!(status
|
|
25
|
+
&& author instanceof HTMLInputElement
|
|
26
|
+
&& body instanceof HTMLTextAreaElement
|
|
27
|
+
&& type instanceof HTMLSelectElement
|
|
28
|
+
&& submit
|
|
29
|
+
&& preview
|
|
30
|
+
&& clear
|
|
31
|
+
&& previewButton)) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (status.textContent?.includes("JavaScript is required")) {
|
|
35
|
+
status.textContent = "Draft ready. Preview the Markdown before recording it.";
|
|
36
|
+
}
|
|
37
|
+
const item = form.dataset.item ?? "";
|
|
38
|
+
const request = form.dataset.request ?? "";
|
|
39
|
+
const revision = form.dataset.revision ?? "";
|
|
40
|
+
const questionId = form.dataset.question ?? "";
|
|
41
|
+
const key = `${item}/${request}`;
|
|
42
|
+
const storage = `work-board:drafts:${document.documentElement.dataset.workspace}`;
|
|
43
|
+
let storageApi;
|
|
44
|
+
try {
|
|
45
|
+
storageApi = window.localStorage;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
storageApi = undefined;
|
|
49
|
+
}
|
|
50
|
+
const drafts = draftSession(key, revision, storageApi, storage, (message) => {
|
|
51
|
+
status.textContent = message;
|
|
52
|
+
});
|
|
53
|
+
let draft = drafts.current();
|
|
54
|
+
const controls = questionnaireControls(form);
|
|
55
|
+
let recovery = controls.restore(draft, revision);
|
|
56
|
+
if (draft.question && draft.question !== questionId && draft.revision === revision) {
|
|
57
|
+
status.textContent = "Source moved since this draft. Text is retained and selections cleared; review the source and preview before responding.";
|
|
58
|
+
}
|
|
59
|
+
if (supersedes instanceof HTMLSelectElement) {
|
|
60
|
+
supersedes.value = draft.supersedes ?? "";
|
|
61
|
+
}
|
|
62
|
+
author.value = draft.author;
|
|
63
|
+
body.value = draft.body;
|
|
64
|
+
type.value = draft.type;
|
|
65
|
+
const fields = { author, body, type };
|
|
66
|
+
function save() {
|
|
67
|
+
draft = drafts.update({
|
|
68
|
+
answers: controls.read(),
|
|
69
|
+
author: fields.author.value,
|
|
70
|
+
body: fields.body.value,
|
|
71
|
+
question: draft.question ?? questionId,
|
|
72
|
+
recovery,
|
|
73
|
+
revision: draft.revision,
|
|
74
|
+
supersedes: supersedes instanceof HTMLSelectElement ? supersedes.value || undefined : undefined,
|
|
75
|
+
type: fields.type.value,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
form.addEventListener("input", () => {
|
|
79
|
+
save();
|
|
80
|
+
preview.hidden = true;
|
|
81
|
+
submit.disabled = true;
|
|
82
|
+
});
|
|
83
|
+
previewButton.disabled = false;
|
|
84
|
+
clear.disabled = false;
|
|
85
|
+
previewButton.addEventListener("click", () => {
|
|
86
|
+
controls.validate(type.value);
|
|
87
|
+
draft = drafts.update({
|
|
88
|
+
answers: controls.read(),
|
|
89
|
+
author: author.value,
|
|
90
|
+
body: body.value,
|
|
91
|
+
id: draft.revision === revision && (!draft.question || draft.question === questionId) ? drafts.current().id : `response.${crypto.randomUUID()}`,
|
|
92
|
+
question: questionId,
|
|
93
|
+
recovery,
|
|
94
|
+
revision,
|
|
95
|
+
supersedes: supersedes instanceof HTMLSelectElement ? supersedes.value || undefined : undefined,
|
|
96
|
+
type: type.value,
|
|
97
|
+
});
|
|
98
|
+
preview.textContent = responsePreview(draft, questionId ?? "", controls.models);
|
|
99
|
+
preview.hidden = false;
|
|
100
|
+
submit.disabled = form.dataset.writable !== "true" || !form.checkValidity();
|
|
101
|
+
});
|
|
102
|
+
clear.addEventListener("click", drafts.clear);
|
|
103
|
+
form.addEventListener("submit", async (event) => {
|
|
104
|
+
event.preventDefault();
|
|
105
|
+
if (submit.disabled || draft.revision !== revision || draft.question !== questionId || !form.reportValidity()) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
submit.disabled = true;
|
|
109
|
+
previewButton.disabled = true;
|
|
110
|
+
if (await submitResponse(form, status, drafts, draft)) {
|
|
111
|
+
draft = drafts.current();
|
|
112
|
+
recovery = draft.recovery;
|
|
113
|
+
if (form.isConnected) {
|
|
114
|
+
body.value = "";
|
|
115
|
+
controls.restore(draft, revision);
|
|
116
|
+
if (supersedes instanceof HTMLSelectElement) {
|
|
117
|
+
supersedes.value = "";
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
previewButton.disabled = false;
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
export function setupResponses() {
|
|
125
|
+
document.addEventListener("board-page", attach);
|
|
126
|
+
window.addEventListener("pageshow", attach);
|
|
127
|
+
attach();
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/browser/responses/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Draft } from "./drafts.ts";
|
|
2
|
+
export declare function submissionFields(pending: Draft, question: string): {
|
|
3
|
+
answers?: readonly {
|
|
4
|
+
readonly prompt: string;
|
|
5
|
+
readonly selected: readonly string[];
|
|
6
|
+
readonly text: string;
|
|
7
|
+
}[];
|
|
8
|
+
supersedes?: string;
|
|
9
|
+
author: string;
|
|
10
|
+
body: string;
|
|
11
|
+
id: string;
|
|
12
|
+
question: string;
|
|
13
|
+
type: "answer" | "clarify" | "not_now";
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=submissionFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submissionFields.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/submissionFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;EAUhE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import { ResponseKind } from "./schema.js";
|
|
3
|
+
export function submissionFields(pending, question) {
|
|
4
|
+
return {
|
|
5
|
+
...(pending.answers === undefined ? {} : { answers: pending.answers }),
|
|
6
|
+
...(pending.supersedes === undefined ? {} : { supersedes: pending.supersedes }),
|
|
7
|
+
author: pending.author,
|
|
8
|
+
body: pending.body,
|
|
9
|
+
id: pending.id,
|
|
10
|
+
question,
|
|
11
|
+
type: Schema.decodeUnknownSync(ResponseKind)(pending.type),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=submissionFields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submissionFields.js","sourceRoot":"","sources":["../../../src/browser/responses/submissionFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,UAAU,gBAAgB,CAAC,OAAc,EAAE,QAAgB;IAChE,OAAO;QACN,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACtE,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/E,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,QAAQ;QACR,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;KAC1D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { draftSession } from "./draftSession.ts";
|
|
2
|
+
import type { Draft } from "./drafts.ts";
|
|
3
|
+
export declare function submitResponse(form: HTMLFormElement, status: HTMLParagraphElement, drafts: ReturnType<typeof draftSession>, pending: Draft): Promise<boolean>;
|
|
4
|
+
//# sourceMappingURL=submit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../src/browser/responses/submit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIzC,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,oBA0BhJ"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { session } from "#browser/session.ts";
|
|
2
|
+
import { ResponseFailed } from "./schema.js";
|
|
3
|
+
import { submissionFields } from "./submissionFields.js";
|
|
4
|
+
export async function submitResponse(form, status, drafts, pending) {
|
|
5
|
+
status.dataset.outcome = "pending";
|
|
6
|
+
status.textContent = "Pending: registering reviewed context, then recording response…";
|
|
7
|
+
const native = session(window);
|
|
8
|
+
try {
|
|
9
|
+
const question = await native.mutate(native.responses.registerQuestion.run({ item: form.dataset.item ?? "", request: form.dataset.request ?? "", revision: pending.revision }));
|
|
10
|
+
await native.mutate(native.responses.recordResponse.run(submissionFields(pending, question.id)));
|
|
11
|
+
if (form.isConnected) {
|
|
12
|
+
status.dataset.outcome = "saved";
|
|
13
|
+
status.textContent = `Saved: responses/${pending.id}.md. This records feedback, not acceptance.`;
|
|
14
|
+
}
|
|
15
|
+
const cleared = drafts.saved(pending);
|
|
16
|
+
if (!cleared && form.isConnected) {
|
|
17
|
+
status.textContent += " Your current draft remains unsaved.";
|
|
18
|
+
}
|
|
19
|
+
return cleared;
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
if (form.isConnected) {
|
|
23
|
+
const outcome = error instanceof ResponseFailed && error.code !== "Uncertain" ? "rejected" : "uncertain";
|
|
24
|
+
status.dataset.outcome = outcome;
|
|
25
|
+
status.textContent = `${outcome === "rejected" ? "Rejected" : "Uncertain"}: ${String(error)}. Draft retained. Preview and retry with the same identity; saved content will be reconciled.`;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=submit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/browser/responses/submit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAqB,EAAE,MAA4B,EAAE,MAAuC,EAAE,OAAc;IAChJ,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IACnC,MAAM,CAAC,WAAW,GAAG,iEAAiE,CAAC;IACvF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CACnC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CACzI,CAAC;QACF,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;YACjC,MAAM,CAAC,WAAW,GAAG,oBAAoB,OAAO,CAAC,EAAE,6CAA6C,CAAC;QAClG,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,WAAW,IAAI,sCAAsC,CAAC;QAC9D,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;YACzG,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;YACjC,MAAM,CAAC,WAAW,GAAG,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC,KAAK,CAAC,+FAA+F,CAAC;QAC5L,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC"}
|
|
@@ -6,84 +6,6 @@ type BrowserEnvironment = ResumeWindow & {
|
|
|
6
6
|
readonly addEventListener: (type: "pagehide", listener: () => void) => void;
|
|
7
7
|
readonly removeEventListener: (type: "pagehide", listener: () => void) => void;
|
|
8
8
|
};
|
|
9
|
-
export declare function session(environment: BrowserEnvironment):
|
|
10
|
-
api: import("@shivaedev/effect-contract/bind.ts").Bound<"work-board", readonly [import("@shivaedev/effect-contract/operation.ts").Query<"page", import("effect/Schema").Struct<{
|
|
11
|
-
url: import("effect/Schema").String;
|
|
12
|
-
}>, import("effect/Schema").Struct<{
|
|
13
|
-
readonly html: import("effect/Schema").String;
|
|
14
|
-
readonly status: import("effect/Schema").Number;
|
|
15
|
-
}>, {
|
|
16
|
-
readonly ReadFailed: typeof import("../rpc/contract.ts").ReadFailed;
|
|
17
|
-
}>, import("@shivaedev/effect-contract/operation.ts").Query<"navigation", import("effect/Schema").Void, import("effect/Schema").String, {
|
|
18
|
-
readonly ReadFailed: typeof import("../rpc/contract.ts").ReadFailed;
|
|
19
|
-
}>, import("@shivaedev/effect-contract/operation.ts").Query<"search", import("effect/Schema").Struct<{
|
|
20
|
-
query: import("effect/Schema").String;
|
|
21
|
-
}>, import("effect/Schema").Struct<{
|
|
22
|
-
readonly results: import("effect/Schema").$Array<import("effect/Schema").Struct<{
|
|
23
|
-
readonly file: import("effect/Schema").String;
|
|
24
|
-
readonly href: import("effect/Schema").String;
|
|
25
|
-
readonly kind: import("effect/Schema").Literals<readonly ["document", "heading", "passage"]>;
|
|
26
|
-
readonly line: import("effect/Schema").optional<import("effect/Schema").Number>;
|
|
27
|
-
readonly snippet: import("effect/Schema").String;
|
|
28
|
-
readonly text: import("effect/Schema").String;
|
|
29
|
-
readonly title: import("effect/Schema").String;
|
|
30
|
-
}>>;
|
|
31
|
-
readonly total: import("effect/Schema").Number;
|
|
32
|
-
readonly unavailable: import("effect/Schema").$Array<import("effect/Schema").String>;
|
|
33
|
-
}>, {
|
|
34
|
-
readonly ReadFailed: typeof import("../rpc/contract.ts").ReadFailed;
|
|
35
|
-
}>, import("@shivaedev/effect-contract/operation.ts").Query<"history", import("effect/Schema").Struct<{
|
|
36
|
-
readonly action: import("effect/Schema").Literals<readonly ["check", "compare", "observe"]>;
|
|
37
|
-
readonly baseline: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
38
|
-
}>, import("effect/Schema").Struct<{
|
|
39
|
-
readonly discardBaseline: import("effect/Schema").Boolean;
|
|
40
|
-
readonly html: import("effect/Schema").String;
|
|
41
|
-
readonly reason: import("effect/Schema").String;
|
|
42
|
-
readonly snapshot: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
43
|
-
}>, {
|
|
44
|
-
readonly ReadFailed: typeof import("../rpc/contract.ts").ReadFailed;
|
|
45
|
-
}>, import("@shivaedev/effect-contract/operation.ts").Query<"watcher", import("effect/Schema").Void, import("effect/Schema").Struct<{
|
|
46
|
-
readonly watching: import("effect/Schema").Boolean;
|
|
47
|
-
}>, {
|
|
48
|
-
readonly ReadFailed: typeof import("../rpc/contract.ts").ReadFailed;
|
|
49
|
-
}>], readonly [], import("effect/unstable/rpc/Rpc").Rpc<"work-board.history", import("effect/Schema").Struct<{
|
|
50
|
-
readonly action: import("effect/Schema").Literals<readonly ["check", "compare", "observe"]>;
|
|
51
|
-
readonly baseline: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
52
|
-
}>, import("effect/Schema").Struct<{
|
|
53
|
-
readonly discardBaseline: import("effect/Schema").Boolean;
|
|
54
|
-
readonly html: import("effect/Schema").String;
|
|
55
|
-
readonly reason: import("effect/Schema").String;
|
|
56
|
-
readonly snapshot: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
57
|
-
}>, import("effect/Schema").Union<readonly typeof import("../rpc/contract.ts").ReadFailed[]>, never, never> | import("effect/unstable/rpc/Rpc").Rpc<"work-board.navigation", import("effect/Schema").Void, import("effect/Schema").String, import("effect/Schema").Union<readonly typeof import("../rpc/contract.ts").ReadFailed[]>, never, never> | import("effect/unstable/rpc/Rpc").Rpc<"work-board.page", import("effect/Schema").Struct<{
|
|
58
|
-
url: import("effect/Schema").String;
|
|
59
|
-
}>, import("effect/Schema").Struct<{
|
|
60
|
-
readonly html: import("effect/Schema").String;
|
|
61
|
-
readonly status: import("effect/Schema").Number;
|
|
62
|
-
}>, import("effect/Schema").Union<readonly typeof import("../rpc/contract.ts").ReadFailed[]>, never, never> | import("effect/unstable/rpc/Rpc").Rpc<"work-board.search", import("effect/Schema").Struct<{
|
|
63
|
-
query: import("effect/Schema").String;
|
|
64
|
-
}>, import("effect/Schema").Struct<{
|
|
65
|
-
readonly results: import("effect/Schema").$Array<import("effect/Schema").Struct<{
|
|
66
|
-
readonly file: import("effect/Schema").String;
|
|
67
|
-
readonly href: import("effect/Schema").String;
|
|
68
|
-
readonly kind: import("effect/Schema").Literals<readonly ["document", "heading", "passage"]>;
|
|
69
|
-
readonly line: import("effect/Schema").optional<import("effect/Schema").Number>;
|
|
70
|
-
readonly snippet: import("effect/Schema").String;
|
|
71
|
-
readonly text: import("effect/Schema").String;
|
|
72
|
-
readonly title: import("effect/Schema").String;
|
|
73
|
-
}>>;
|
|
74
|
-
readonly total: import("effect/Schema").Number;
|
|
75
|
-
readonly unavailable: import("effect/Schema").$Array<import("effect/Schema").String>;
|
|
76
|
-
}>, import("effect/Schema").Union<readonly typeof import("../rpc/contract.ts").ReadFailed[]>, never, never> | import("effect/unstable/rpc/Rpc").Rpc<"work-board.watcher", import("effect/Schema").Void, import("effect/Schema").Struct<{
|
|
77
|
-
readonly watching: import("effect/Schema").Boolean;
|
|
78
|
-
}>, import("effect/Schema").Union<readonly typeof import("../rpc/contract.ts").ReadFailed[]>, never, never>, import("./client.ts").Reader>;
|
|
79
|
-
read: <A, E>(atom: import("effect/unstable/reactivity/Atom").Atom<import("effect/unstable/reactivity/AsyncResult").AsyncResult<A, E>>, signal?: AbortSignal) => Promise<A>;
|
|
80
|
-
registry: import("effect/unstable/reactivity/AtomRegistry").AtomRegistry;
|
|
81
|
-
run: <A, E>(effect: import("effect/Effect").Effect<A, E, import("./client.ts").Reader>, signal?: AbortSignal) => Promise<A>;
|
|
82
|
-
updates: {
|
|
83
|
-
connection: import("effect/unstable/reactivity/Atom").Atom<import("effect/unstable/reactivity/AsyncResult").AsyncResult<void, never>>;
|
|
84
|
-
paused: import("effect/unstable/reactivity/Atom").Writable<boolean, boolean>;
|
|
85
|
-
status: import("effect/unstable/reactivity/Atom").Writable<import("@shivaedev/effect-contract/live.ts").LiveStatus<import("../rpc/contract.ts").ReadFailed | import("effect/unstable/rpc/RpcClientError").RpcClientError>, import("@shivaedev/effect-contract/live.ts").LiveStatus<import("../rpc/contract.ts").ReadFailed | import("effect/unstable/rpc/RpcClientError").RpcClientError>>;
|
|
86
|
-
};
|
|
87
|
-
};
|
|
9
|
+
export declare function session(environment: BrowserEnvironment): import("./client.ts").BrowserClient;
|
|
88
10
|
export {};
|
|
89
11
|
//# sourceMappingURL=session.d.ts.map
|