@ue-shed/game-text 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-query.d.ts","sourceRoot":"","sources":["../src/quality-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,259 @@
1
+ import { Schema } from "effect";
2
+ import { TextQualityAffectedOccurrence, TextQualityRuleDocument, TextQualityRoleSummary, TextQualityRuleSummary } from "./quality-schema.js";
3
+ import { TextCorpus, TextOccurrenceId, TextUnitId } from "./schema.js";
4
+ const Count = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
5
+ const PageSize = Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 50 }));
6
+ export const TextQualityFindingId = Schema.String.pipe(Schema.brand("TextQualityFindingId"));
7
+ export const makeTextQualityFindingId = TextQualityFindingId.make;
8
+ export const TextQualityFindingKind = Schema.Literals(["character_budget", "terminology"]);
9
+ export const TextQualityFilter = Schema.Literals(["all", "character_budget", "terminology"]);
10
+ export const TextQualityQuerySummary = Schema.Struct({
11
+ characterBudgetCount: Count,
12
+ coverage: TextCorpus.fields.coverage,
13
+ diagnosticCount: Count,
14
+ findingCount: Count,
15
+ roles: Schema.Array(TextQualityRoleSummary),
16
+ rules: Schema.Array(TextQualityRuleSummary),
17
+ ruleDocumentVersion: Schema.Literal(1),
18
+ schemaVersion: Schema.Literal(1),
19
+ status: TextCorpus.fields.status,
20
+ terminologyCount: Count
21
+ });
22
+ export const TextQualityQueryRunResult = Schema.Union([
23
+ Schema.Struct({
24
+ document: TextQualityRuleDocument,
25
+ status: Schema.Literal("completed"),
26
+ summary: TextQualityQuerySummary
27
+ }),
28
+ Schema.Struct({ status: Schema.Literal("cancelled") }),
29
+ Schema.Struct({ status: Schema.Literal("not_ready") }),
30
+ Schema.Struct({
31
+ status: Schema.Literal("failed"),
32
+ error: Schema.Struct({
33
+ code: Schema.Literals(["invalid_rules", "read_failed", "contract_failure"]),
34
+ message: Schema.String,
35
+ recovery: Schema.String,
36
+ retrySafe: Schema.Boolean
37
+ })
38
+ })
39
+ ]);
40
+ export const decodeTextQualityQueryRunResult = Schema.decodeUnknownEffect(TextQualityQueryRunResult);
41
+ export const TextQualityRuleUpdateResult = Schema.Union([
42
+ Schema.Struct({
43
+ document: TextQualityRuleDocument,
44
+ status: Schema.Literal("completed"),
45
+ summary: TextQualityQuerySummary
46
+ }),
47
+ Schema.Struct({ status: Schema.Literal("not_ready") }),
48
+ Schema.Struct({
49
+ status: Schema.Literal("failed"),
50
+ error: Schema.Struct({
51
+ code: Schema.Literals(["invalid_rules", "write_failed", "contract_failure"]),
52
+ message: Schema.String,
53
+ recovery: Schema.String,
54
+ retrySafe: Schema.Boolean
55
+ })
56
+ })
57
+ ]);
58
+ export const decodeTextQualityRuleUpdateResult = Schema.decodeUnknownEffect(TextQualityRuleUpdateResult);
59
+ export const TextQualityFindingSummary = Schema.Struct({
60
+ actual: Schema.String.check(Schema.isMaxLength(512)),
61
+ expectation: Schema.String.check(Schema.isMaxLength(512)),
62
+ id: TextQualityFindingId,
63
+ kind: TextQualityFindingKind,
64
+ occurrenceCount: Count,
65
+ recovery: Schema.String.check(Schema.isMaxLength(2048)),
66
+ role: Schema.String,
67
+ ruleId: Schema.String,
68
+ sourceExcerpt: Schema.String.check(Schema.isMaxLength(512)),
69
+ textUnitId: TextUnitId
70
+ });
71
+ export const TextQualitySearchRequest = Schema.Struct({
72
+ cursor: Schema.optional(TextQualityFindingId),
73
+ filter: TextQualityFilter,
74
+ pageSize: PageSize
75
+ });
76
+ export const TextQualitySearchPage = Schema.Struct({
77
+ findings: Schema.Array(TextQualityFindingSummary).check(Schema.isMaxLength(50)),
78
+ nextCursor: Schema.optional(TextQualityFindingId),
79
+ total: Count
80
+ });
81
+ export const TextQualitySearchResult = Schema.Union([
82
+ Schema.Struct({ status: Schema.Literal("ready"), page: TextQualitySearchPage }),
83
+ Schema.Struct({ status: Schema.Literal("not_ready") })
84
+ ]);
85
+ export const decodeTextQualitySearchResult = Schema.decodeUnknownEffect(TextQualitySearchResult);
86
+ export const TextQualityFocusRequest = Schema.Struct({
87
+ id: TextQualityFindingId,
88
+ occurrenceCursor: Schema.optional(TextOccurrenceId),
89
+ pageSize: PageSize
90
+ });
91
+ const FocusBase = {
92
+ affectedOccurrences: Schema.Array(TextQualityAffectedOccurrence).check(Schema.isMaxLength(50)),
93
+ id: TextQualityFindingId,
94
+ nextOccurrenceCursor: Schema.optional(TextOccurrenceId),
95
+ recovery: Schema.String,
96
+ role: Schema.String,
97
+ ruleId: Schema.String,
98
+ sourceExcerpt: Schema.String.check(Schema.isMaxLength(4096)),
99
+ sourceTruncated: Schema.Boolean,
100
+ textUnitId: TextUnitId,
101
+ totalOccurrences: Count
102
+ };
103
+ export const TextQualityFocus = Schema.Union([
104
+ Schema.Struct({
105
+ ...FocusBase,
106
+ actual: Schema.Struct({ characterCount: Count, kind: Schema.Literal("character_count") }),
107
+ expectation: Schema.Struct({
108
+ kind: Schema.Literal("maximum_characters"),
109
+ maximumCharacters: Schema.Int.check(Schema.isGreaterThan(0))
110
+ }),
111
+ kind: Schema.Literal("character_budget")
112
+ }),
113
+ Schema.Struct({
114
+ ...FocusBase,
115
+ actual: Schema.Struct({
116
+ end: Count,
117
+ kind: Schema.Literal("terminology_match"),
118
+ start: Count,
119
+ term: Schema.String
120
+ }),
121
+ expectation: Schema.Union([
122
+ Schema.Struct({ kind: Schema.Literal("forbidden_term"), term: Schema.String }),
123
+ Schema.Struct({
124
+ discouragedTerm: Schema.String,
125
+ kind: Schema.Literal("preferred_term"),
126
+ preferredTerm: Schema.String
127
+ })
128
+ ]),
129
+ kind: Schema.Literal("terminology")
130
+ })
131
+ ]);
132
+ export const TextQualityFocusResult = Schema.Union([
133
+ Schema.Struct({ status: Schema.Literal("found"), focus: TextQualityFocus }),
134
+ Schema.Struct({ status: Schema.Literal("not_found") }),
135
+ Schema.Struct({ status: Schema.Literal("not_ready") })
136
+ ]);
137
+ export const decodeTextQualityFocusResult = Schema.decodeUnknownEffect(TextQualityFocusResult);
138
+ function excerpt(source, maximum) {
139
+ return source.length <= maximum ? source : `${source.slice(0, maximum - 1)}…`;
140
+ }
141
+ function actualLabel(finding) {
142
+ return finding.kind === "character_budget"
143
+ ? `${finding.actual.characterCount} characters`
144
+ : `“${finding.actual.term}” at ${finding.actual.start}–${finding.actual.end}`;
145
+ }
146
+ function expectationLabel(finding) {
147
+ if (finding.kind === "character_budget") {
148
+ return `Maximum ${finding.expectation.maximumCharacters} characters`;
149
+ }
150
+ return finding.expectation.kind === "forbidden_term"
151
+ ? `Remove forbidden term “${finding.expectation.term}”`
152
+ : `Prefer “${finding.expectation.preferredTerm}”`;
153
+ }
154
+ function sourceOf(finding) {
155
+ return finding.actual.source;
156
+ }
157
+ export function textQualityQuery(report) {
158
+ const indexed = report.findings.map((finding, index) => {
159
+ const id = makeTextQualityFindingId(`quality-finding:${index + 1}`);
160
+ return {
161
+ finding,
162
+ id,
163
+ summary: {
164
+ actual: excerpt(actualLabel(finding), 512),
165
+ expectation: excerpt(expectationLabel(finding), 512),
166
+ id,
167
+ kind: finding.kind,
168
+ occurrenceCount: finding.affectedOccurrences.length,
169
+ recovery: excerpt(finding.recovery, 2048),
170
+ role: finding.role,
171
+ ruleId: finding.ruleId,
172
+ sourceExcerpt: excerpt(sourceOf(finding), 512),
173
+ textUnitId: finding.textUnitId
174
+ }
175
+ };
176
+ });
177
+ const summary = {
178
+ characterBudgetCount: indexed.filter(({ finding }) => finding.kind === "character_budget")
179
+ .length,
180
+ coverage: report.coverage,
181
+ diagnosticCount: report.diagnostics.length,
182
+ findingCount: indexed.length,
183
+ roles: report.roles,
184
+ rules: report.rules,
185
+ ruleDocumentVersion: report.ruleDocumentVersion,
186
+ schemaVersion: 1,
187
+ status: report.status,
188
+ terminologyCount: indexed.filter(({ finding }) => finding.kind === "terminology").length
189
+ };
190
+ return {
191
+ summary: () => summary,
192
+ search: (request) => {
193
+ const matched = indexed.filter(({ finding }) => request.filter === "all" || finding.kind === request.filter);
194
+ const cursorIndex = request.cursor
195
+ ? matched.findIndex(({ id }) => id === request.cursor) + 1
196
+ : 0;
197
+ const start = Math.max(0, cursorIndex);
198
+ const page = matched.slice(start, start + request.pageSize);
199
+ const final = page.at(-1)?.id;
200
+ return {
201
+ findings: page.map(({ summary: finding }) => finding),
202
+ total: matched.length,
203
+ ...(final !== undefined && start + page.length < matched.length
204
+ ? { nextCursor: final }
205
+ : {})
206
+ };
207
+ },
208
+ focus: (request) => {
209
+ const indexedFinding = indexed.find(({ id }) => id === request.id);
210
+ if (!indexedFinding)
211
+ return undefined;
212
+ const { finding, id } = indexedFinding;
213
+ const cursorIndex = request.occurrenceCursor
214
+ ? finding.affectedOccurrences.findIndex((occurrence) => occurrence.id === request.occurrenceCursor) + 1
215
+ : 0;
216
+ const start = Math.max(0, cursorIndex);
217
+ const affectedOccurrences = finding.affectedOccurrences.slice(start, start + request.pageSize);
218
+ const final = affectedOccurrences.at(-1)?.id;
219
+ const source = sourceOf(finding);
220
+ const base = {
221
+ affectedOccurrences,
222
+ id,
223
+ recovery: finding.recovery,
224
+ role: finding.role,
225
+ ruleId: finding.ruleId,
226
+ sourceExcerpt: excerpt(source, 4096),
227
+ sourceTruncated: source.length > 4096,
228
+ textUnitId: finding.textUnitId,
229
+ totalOccurrences: finding.affectedOccurrences.length,
230
+ ...(final !== undefined &&
231
+ start + affectedOccurrences.length < finding.affectedOccurrences.length
232
+ ? { nextOccurrenceCursor: final }
233
+ : {})
234
+ };
235
+ return finding.kind === "character_budget"
236
+ ? {
237
+ ...base,
238
+ actual: {
239
+ characterCount: finding.actual.characterCount,
240
+ kind: finding.actual.kind
241
+ },
242
+ expectation: finding.expectation,
243
+ kind: finding.kind
244
+ }
245
+ : {
246
+ ...base,
247
+ actual: {
248
+ end: finding.actual.end,
249
+ kind: finding.actual.kind,
250
+ start: finding.actual.start,
251
+ term: finding.actual.term
252
+ },
253
+ expectation: finding.expectation,
254
+ kind: finding.kind
255
+ };
256
+ }
257
+ };
258
+ }
259
+ //# sourceMappingURL=quality-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-query.js","sourceRoot":"","sources":["../src/quality-query.ts"],"names":[],"mappings":"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"}