@rifts_to/mcp 0.1.0 → 0.2.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/README.md +48 -14
- package/dist/client.d.ts +36 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +33 -0
- package/dist/client.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +58 -5
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# rifts.to MCP server
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@rifts_to/mcp)
|
|
3
4
|
[](https://github.com/riftsto/mcp/actions/workflows/ci.yml)
|
|
4
5
|
[](./LICENSE)
|
|
5
6
|
|
|
@@ -21,6 +22,30 @@ own copy](#run-it-yourself) is supported too.
|
|
|
21
22
|
- **`get_survey_results`**: returns a survey's questions and every response.
|
|
22
23
|
- **`close_survey`**: stops a survey from accepting new responses. Reopening, retitling, and editing questions stay in the rifts.to admin dashboard, not here.
|
|
23
24
|
|
|
25
|
+
### Optional and conditional questions
|
|
26
|
+
|
|
27
|
+
Every question defaults to required, exactly as it always has. A question can opt out of that with a `requirement` field:
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{ "type": "free_text", "text": "Anything else?",
|
|
31
|
+
"requirement": { "mode": "optional" } }
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{ "type": "free_text", "text": "What kept you away?",
|
|
36
|
+
"requirement": {
|
|
37
|
+
"mode": "conditional",
|
|
38
|
+
"when": {
|
|
39
|
+
"op": "all",
|
|
40
|
+
"conditions": [{ "questionIndex": 0, "values": ["No"] }]
|
|
41
|
+
}
|
|
42
|
+
} }
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`questionIndex` is the 0-based position of an earlier question in the same `questions` array — questions have no separate id, so position is the only way to point at one — and it must name a `multiple_choice` question, since only those have a fixed set of `options` for `values` to match against. `op` is `"all"` for AND or `"any"` for OR across `conditions`.
|
|
46
|
+
|
|
47
|
+
Either mode changes only whether an answer is *required*, never whether the question is *shown*: a conditional question is always visible to every respondent, and just carries an "Optional" marker when it isn't currently required for them. This is not branching or skip logic.
|
|
48
|
+
|
|
24
49
|
## Hosted, with sign-in
|
|
25
50
|
|
|
26
51
|
rifts.to runs this server at `https://mcp.rifts.to/mcp`. Add it as a remote MCP
|
|
@@ -34,7 +59,22 @@ Running it yourself, with a token you paste in, is the rest of this document.
|
|
|
34
59
|
|
|
35
60
|
## Run it yourself
|
|
36
61
|
|
|
37
|
-
|
|
62
|
+
```bash
|
|
63
|
+
npx @rifts_to/mcp
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Releases are published from CI with [npm provenance](https://docs.npmjs.com/generating-provenance-statements),
|
|
67
|
+
so each version on npm carries a signed attestation linking it to the commit
|
|
68
|
+
and workflow run that built it. You can check the one you installed:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npm audit signatures
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Cutting a GitHub release triggers the publish; the tag has to match the version
|
|
75
|
+
in `package.json` or the run fails.
|
|
76
|
+
|
|
77
|
+
Building from source works too, and is the same code:
|
|
38
78
|
|
|
39
79
|
```bash
|
|
40
80
|
git clone https://github.com/riftsto/mcp.git rifts-mcp
|
|
@@ -44,14 +84,6 @@ npm run build
|
|
|
44
84
|
node dist/stdio.js
|
|
45
85
|
```
|
|
46
86
|
|
|
47
|
-
When `@rifts_to/mcp` is published, `npx @rifts_to/mcp` will replace all of that,
|
|
48
|
-
and every `node /path/to/...` below becomes `npx -y @rifts_to/mcp`.
|
|
49
|
-
|
|
50
|
-
Releases are published from CI with [npm provenance](https://docs.npmjs.com/generating-provenance-statements),
|
|
51
|
-
so each version on npm carries a signed attestation linking it to the commit
|
|
52
|
-
and workflow run that built it. Cutting a GitHub release triggers the publish;
|
|
53
|
-
the tag has to match the version in `package.json` or the run fails.
|
|
54
|
-
|
|
55
87
|
The server reads its configuration from two environment variables:
|
|
56
88
|
|
|
57
89
|
- `RIFTS_TOKEN` (required): your personal access token.
|
|
@@ -59,15 +91,14 @@ The server reads its configuration from two environment variables:
|
|
|
59
91
|
|
|
60
92
|
### Claude Desktop
|
|
61
93
|
|
|
62
|
-
Add this to your `claude_desktop_config.json
|
|
63
|
-
build:
|
|
94
|
+
Add this to your `claude_desktop_config.json`:
|
|
64
95
|
|
|
65
96
|
```json
|
|
66
97
|
{
|
|
67
98
|
"mcpServers": {
|
|
68
99
|
"rifts": {
|
|
69
|
-
"command": "
|
|
70
|
-
"args": ["/
|
|
100
|
+
"command": "npx",
|
|
101
|
+
"args": ["-y", "@rifts_to/mcp"],
|
|
71
102
|
"env": {
|
|
72
103
|
"RIFTS_TOKEN": "your-token-here"
|
|
73
104
|
}
|
|
@@ -76,10 +107,13 @@ build:
|
|
|
76
107
|
}
|
|
77
108
|
```
|
|
78
109
|
|
|
110
|
+
Running from a clone instead means `"command": "node"` with
|
|
111
|
+
`"args": ["/path/to/rifts-mcp/dist/stdio.js"]`.
|
|
112
|
+
|
|
79
113
|
### Claude Code
|
|
80
114
|
|
|
81
115
|
```bash
|
|
82
|
-
claude mcp add rifts -e RIFTS_TOKEN=your-token-here --
|
|
116
|
+
claude mcp add rifts -e RIFTS_TOKEN=your-token-here -- npx -y @rifts_to/mcp
|
|
83
117
|
```
|
|
84
118
|
|
|
85
119
|
Add `-s user` to make it available in every project instead of just the
|
package/dist/client.d.ts
CHANGED
|
@@ -14,14 +14,49 @@
|
|
|
14
14
|
*/
|
|
15
15
|
/** Public rifts.to. Overridable so a self-hoster can point at their own deploy. */
|
|
16
16
|
export declare const DEFAULT_BASE_URL = "https://rifts.to";
|
|
17
|
+
/**
|
|
18
|
+
* Whether an answer is required. Absent (the historical default, and still
|
|
19
|
+
* what every existing survey means) is "always required". `optional` lets
|
|
20
|
+
* the respondent skip the question outright; `conditional` requires it only
|
|
21
|
+
* when an earlier multiple-choice answer matches `when`, and is optional
|
|
22
|
+
* otherwise. Neither mode hides the question — see the note on `when` below.
|
|
23
|
+
*/
|
|
24
|
+
export type Requirement = RequirementOptional | RequirementConditional;
|
|
25
|
+
export interface RequirementOptional {
|
|
26
|
+
mode: "optional";
|
|
27
|
+
}
|
|
28
|
+
export interface RequirementConditional {
|
|
29
|
+
mode: "conditional";
|
|
30
|
+
when: ConditionGroup;
|
|
31
|
+
}
|
|
32
|
+
export interface ConditionGroup {
|
|
33
|
+
/** "all" is AND across `conditions`; "any" is OR. */
|
|
34
|
+
op: "all" | "any";
|
|
35
|
+
/** 1–5 conditions. */
|
|
36
|
+
conditions: Condition[];
|
|
37
|
+
}
|
|
38
|
+
export interface Condition {
|
|
39
|
+
/**
|
|
40
|
+
* 0-based position, in this same request's `questions` array, of the
|
|
41
|
+
* multiple-choice question this condition reads. Must be strictly less
|
|
42
|
+
* than the position of the question the condition belongs to — the server
|
|
43
|
+
* rejects anything else, which is also what makes a dependency cycle
|
|
44
|
+
* impossible to express.
|
|
45
|
+
*/
|
|
46
|
+
questionIndex: number;
|
|
47
|
+
/** Matched by exact string equality against the trigger's `options`; OR'd. */
|
|
48
|
+
values: string[];
|
|
49
|
+
}
|
|
17
50
|
export interface MultipleChoiceQuestionInput {
|
|
18
51
|
type: "multiple_choice";
|
|
19
52
|
text: string;
|
|
20
53
|
options: string[];
|
|
54
|
+
requirement?: Requirement;
|
|
21
55
|
}
|
|
22
56
|
export interface FreeTextQuestionInput {
|
|
23
57
|
type: "free_text";
|
|
24
58
|
text: string;
|
|
59
|
+
requirement?: Requirement;
|
|
25
60
|
}
|
|
26
61
|
export interface RatingQuestionInput {
|
|
27
62
|
type: "rating";
|
|
@@ -31,6 +66,7 @@ export interface RatingQuestionInput {
|
|
|
31
66
|
min: number;
|
|
32
67
|
max: number;
|
|
33
68
|
};
|
|
69
|
+
requirement?: Requirement;
|
|
34
70
|
}
|
|
35
71
|
/** A question as sent to the API. No `index`: the server reindexes on write. */
|
|
36
72
|
export type QuestionInput = MultipleChoiceQuestionInput | FreeTextQuestionInput | RatingQuestionInput;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -110,6 +110,10 @@ export class RiftsClient {
|
|
|
110
110
|
async function toApiError(response) {
|
|
111
111
|
const { error, code } = await readErrorBody(response);
|
|
112
112
|
switch (response.status) {
|
|
113
|
+
case 400: {
|
|
114
|
+
const readable = requirementErrorMessage(error);
|
|
115
|
+
return new RiftsApiError(readable ?? `rifts.to rejected the request (400)${suffix(error)}`, 400, code);
|
|
116
|
+
}
|
|
113
117
|
case 401:
|
|
114
118
|
return new RiftsApiError("rifts.to rejected the token (401). Check RIFTS_TOKEN: it may be mistyped, revoked, or from a different rifts.to deployment.", 401, code);
|
|
115
119
|
case 403:
|
|
@@ -154,6 +158,35 @@ async function readErrorBody(response) {
|
|
|
154
158
|
return {};
|
|
155
159
|
}
|
|
156
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* `validateQuestions` on the server answers a bad `requirement` with one of a
|
|
163
|
+
* fixed set of English strings. Turned into wording a model can act on
|
|
164
|
+
* instead of surfacing the validator's own vocabulary ("condition group",
|
|
165
|
+
* "trigger") verbatim. Returns `undefined` for a 400 this isn't — some other
|
|
166
|
+
* validation failure, or none of these rules applying — so the caller falls
|
|
167
|
+
* back to the generic message.
|
|
168
|
+
*/
|
|
169
|
+
function requirementErrorMessage(error) {
|
|
170
|
+
if (!error)
|
|
171
|
+
return undefined;
|
|
172
|
+
const badMode = /^invalid requirement mode: (.+)$/.exec(error);
|
|
173
|
+
if (badMode) {
|
|
174
|
+
return `requirement.mode must be "optional" or "conditional", not "${badMode[1]}".`;
|
|
175
|
+
}
|
|
176
|
+
const badOption = /^a condition names an option that does not exist: (.+)$/.exec(error);
|
|
177
|
+
if (badOption) {
|
|
178
|
+
return `a condition's values must exactly match one of the trigger question's options; "${badOption[1]}" is not one of them.`;
|
|
179
|
+
}
|
|
180
|
+
const fixed = {
|
|
181
|
+
"a condition group must combine with all or any": 'when.op must be "all" (every condition must match) or "any" (at least one must match).',
|
|
182
|
+
"a conditional question needs at least one condition": "a conditional requirement's when.conditions must have at least one condition.",
|
|
183
|
+
"a question may have at most 5 conditions": "when.conditions can have at most 5 conditions.",
|
|
184
|
+
"a condition must point at an earlier question": "a condition's questionIndex must be the position of a question earlier in the questions array — it can't point at itself or at a later question.",
|
|
185
|
+
"a condition's trigger must be a multiple choice question": "a condition's questionIndex must point at a multiple_choice question; free_text and rating questions can't trigger one.",
|
|
186
|
+
"a condition must name at least one option": "a condition's values must list at least one of the trigger question's options.",
|
|
187
|
+
};
|
|
188
|
+
return fixed[error];
|
|
189
|
+
}
|
|
157
190
|
const suffix = (error) => (error ? `: ${error}` : "");
|
|
158
191
|
function errorMessage(value) {
|
|
159
192
|
return value instanceof Error ? value.message : String(value);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ import type { RiftsClient } from "./client.js";
|
|
|
13
13
|
*/
|
|
14
14
|
export declare const SERVER_NAME = "rifts";
|
|
15
15
|
/** Kept in step with package.json by hand; nothing imports JSON at runtime. */
|
|
16
|
-
export declare const SERVER_VERSION = "0.
|
|
16
|
+
export declare const SERVER_VERSION = "0.2.0";
|
|
17
17
|
export declare function createServer(client: RiftsClient): McpServer;
|
|
18
18
|
export { RiftsClient, RiftsApiError, DEFAULT_BASE_URL } from "./client.js";
|
|
19
19
|
export type { CreateSurveyInput, CreatedSurvey, Question, QuestionInput, RiftsClientOptions, SurveyResults, SurveySummary, } from "./client.js";
|
package/dist/server.js
CHANGED
|
@@ -13,7 +13,7 @@ import { registerTools } from "./tools.js";
|
|
|
13
13
|
*/
|
|
14
14
|
export const SERVER_NAME = "rifts";
|
|
15
15
|
/** Kept in step with package.json by hand; nothing imports JSON at runtime. */
|
|
16
|
-
export const SERVER_VERSION = "0.
|
|
16
|
+
export const SERVER_VERSION = "0.2.0";
|
|
17
17
|
export function createServer(client) {
|
|
18
18
|
const server = new McpServer({
|
|
19
19
|
name: SERVER_NAME,
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAGV,WAAW,EAGZ,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAGV,WAAW,EAGZ,MAAM,aAAa,CAAC;AAmFrB,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CA6H1E"}
|
package/dist/tools.js
CHANGED
|
@@ -33,6 +33,35 @@ import { z } from "zod";
|
|
|
33
33
|
const RATING_SCALE = { min: 1, max: 10 };
|
|
34
34
|
/** Matches isValidCustomSlug in src/lib/slugs.ts. */
|
|
35
35
|
const CUSTOM_SLUG = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
36
|
+
const conditionSchema = z.object({
|
|
37
|
+
questionIndex: z
|
|
38
|
+
.number()
|
|
39
|
+
.int()
|
|
40
|
+
.min(0)
|
|
41
|
+
.describe("The 0-based position, in this same `questions` array, of the multiple-choice question this condition reads — questions have no separate id or index field, position is the only way to refer to one. Must be strictly less than the position of the question this condition belongs to: a condition can only point at an earlier question, never itself or one that comes later. That rule is also why a dependency cycle can never be expressed."),
|
|
42
|
+
values: z
|
|
43
|
+
.array(z.string().min(1))
|
|
44
|
+
.min(1)
|
|
45
|
+
.describe("One or more strings, each matching one of the trigger question's `options` exactly. The condition is met if the respondent's answer is any of these (an OR within this one condition)."),
|
|
46
|
+
});
|
|
47
|
+
const requirementSchema = z
|
|
48
|
+
.discriminatedUnion("mode", [
|
|
49
|
+
z.object({ mode: z.literal("optional") }),
|
|
50
|
+
z.object({
|
|
51
|
+
mode: z.literal("conditional"),
|
|
52
|
+
when: z.object({
|
|
53
|
+
op: z
|
|
54
|
+
.enum(["all", "any"])
|
|
55
|
+
.describe('"all" requires every condition to match (AND); "any" requires at least one (OR).'),
|
|
56
|
+
conditions: z
|
|
57
|
+
.array(conditionSchema)
|
|
58
|
+
.min(1)
|
|
59
|
+
.max(5)
|
|
60
|
+
.describe("1 to 5 conditions, combined by `op`."),
|
|
61
|
+
}),
|
|
62
|
+
}),
|
|
63
|
+
])
|
|
64
|
+
.describe("Whether an answer to this question is required. Omit this field entirely and the question is required, same as every question has always been — omitting it changes nothing for an existing caller. `optional` lets the respondent skip it outright. `conditional` requires an answer only when `when` matches the respondent's answer(s) to an earlier multiple-choice question; the rest of the time it is optional. Neither mode ever hides the question — this is not branching or skip logic, the question is always shown to every respondent, and only whether an answer is required changes. A question that is not currently required renders with an \"Optional\" marker that appears and disappears live as the trigger question is answered.");
|
|
36
65
|
const questionSchema = z
|
|
37
66
|
.discriminatedUnion("type", [
|
|
38
67
|
z.object({
|
|
@@ -41,11 +70,13 @@ const questionSchema = z
|
|
|
41
70
|
options: z
|
|
42
71
|
.array(z.string().min(1))
|
|
43
72
|
.min(1)
|
|
44
|
-
.describe("The choices. Respondents pick exactly one."),
|
|
73
|
+
.describe("The choices. Respondents pick exactly one. Also the only values a later question's conditional `requirement` can name in `values` — and the only questions a later `requirement` can point at, since only multiple_choice questions can trigger one."),
|
|
74
|
+
requirement: requirementSchema.optional(),
|
|
45
75
|
}),
|
|
46
76
|
z.object({
|
|
47
77
|
type: z.literal("free_text"),
|
|
48
78
|
text: z.string().min(1).describe("The question, as the respondent reads it."),
|
|
79
|
+
requirement: requirementSchema.optional(),
|
|
49
80
|
}),
|
|
50
81
|
z.object({
|
|
51
82
|
type: z.literal("rating"),
|
|
@@ -53,14 +84,15 @@ const questionSchema = z
|
|
|
53
84
|
.string()
|
|
54
85
|
.min(1)
|
|
55
86
|
.describe("The question, as the respondent reads it. Answered on a 1-10 scale."),
|
|
87
|
+
requirement: requirementSchema.optional(),
|
|
56
88
|
}),
|
|
57
89
|
])
|
|
58
|
-
.describe("A single question. Questions are answered in the order given.");
|
|
90
|
+
.describe("A single question. Questions are answered in the order given, and that order is also what a `requirement.when.questionIndex` elsewhere in this array refers to.");
|
|
59
91
|
/** Registers every tool on `server`. Split out so server.ts stays a wiring file. */
|
|
60
92
|
export function registerTools(server, client) {
|
|
61
93
|
server.registerTool("create_survey", {
|
|
62
94
|
title: "Create a survey",
|
|
63
|
-
description: "Create a live audience survey on rifts.to and get back the two links that run it: a public URL to share with the audience (anyone with the link can answer, no account or sign-in needed) and an admin URL that shows the results updating in real time. Questions can be multiple choice, free text, or a 1-10 rating, and are answered in the order given. Use this whenever someone wants to poll a room, run a quick vote, or collect open-ended feedback. The survey is open for responses immediately.",
|
|
95
|
+
description: "Create a live audience survey on rifts.to and get back the two links that run it: a public URL to share with the audience (anyone with the link can answer, no account or sign-in needed) and an admin URL that shows the results updating in real time. Questions can be multiple choice, free text, or a 1-10 rating, and are answered in the order given. Any question can be made optional, or required only when an earlier multiple-choice answer matches a condition — see each question's `requirement` field; every question stays visible either way. Use this whenever someone wants to poll a room, run a quick vote, or collect open-ended feedback. The survey is open for responses immediately.",
|
|
64
96
|
inputSchema: {
|
|
65
97
|
title: z
|
|
66
98
|
.string()
|
|
@@ -115,7 +147,7 @@ export function registerTools(server, client) {
|
|
|
115
147
|
}));
|
|
116
148
|
server.registerTool("get_survey_results", {
|
|
117
149
|
title: "Read survey results",
|
|
118
|
-
description: "Read the answers to one of your surveys. Returns the questions with a summary of how they were answered: the tally per option for multiple choice, the average for ratings, and every free-text answer in full, plus the total response count and the survey's current status. Responses carry no respondent identity: rifts.to never records who answered, so results cannot be attributed to a person.",
|
|
150
|
+
description: "Read the answers to one of your surveys. Returns the questions with a summary of how they were answered: the tally per option for multiple choice, the average for ratings, and every free-text answer in full, plus the total response count and the survey's current status. A question marked optional or conditionally required can have fewer answers than the survey has responses; that's respondents skipping a question that wasn't required for them, not missing or lost data, and the summary says so. Responses carry no respondent identity: rifts.to never records who answered, so results cannot be attributed to a person.",
|
|
119
151
|
inputSchema: {
|
|
120
152
|
id: z
|
|
121
153
|
.string()
|
|
@@ -199,10 +231,31 @@ function formatResults(results) {
|
|
|
199
231
|
const answers = results.responses
|
|
200
232
|
.map((r) => r.answers[String(question.index)])
|
|
201
233
|
.filter((a) => a !== undefined && a !== null && a !== "");
|
|
202
|
-
|
|
234
|
+
const label = requirementLabel(question.requirement);
|
|
235
|
+
const lines = [
|
|
236
|
+
`Q${question.index + 1}. ${question.text}${label ? ` (${label})` : ""}`,
|
|
237
|
+
...summarise(question, answers),
|
|
238
|
+
];
|
|
239
|
+
// Only a question that could ever be skipped gets this line: a question
|
|
240
|
+
// with no `requirement` is always required, so a shortfall there would be
|
|
241
|
+
// a real anomaly rather than the expected shape of optional answers.
|
|
242
|
+
const skipped = results.response_count - answers.length;
|
|
243
|
+
if (question.requirement && skipped > 0) {
|
|
244
|
+
lines.push(` (${plural(skipped, "response")} skipped this question — it wasn't required for them)`);
|
|
245
|
+
}
|
|
246
|
+
return lines.join("\n");
|
|
203
247
|
});
|
|
204
248
|
return [header.join("\n"), ...blocks].join("\n\n");
|
|
205
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* A short, factual label — never "hidden" or "skipped" wording, since the
|
|
252
|
+
* question is shown to every respondent regardless of `requirement`.
|
|
253
|
+
*/
|
|
254
|
+
function requirementLabel(requirement) {
|
|
255
|
+
if (!requirement)
|
|
256
|
+
return undefined;
|
|
257
|
+
return requirement.mode === "optional" ? "optional" : "required only for some respondents";
|
|
258
|
+
}
|
|
206
259
|
function summarise(question, answers) {
|
|
207
260
|
if (answers.length === 0)
|
|
208
261
|
return [" (no answers)"];
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB;;;;;GAKG;AACH,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAW,CAAC;AAElD,qDAAqD;AACrD,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAE/C,MAAM,cAAc,GAAG,CAAC;KACrB,kBAAkB,CAAC,MAAM,EAAE;IAC1B,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QAC7E,OAAO,EAAE,CAAC;aACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACxB,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED