/**
* @file
* @brief DPL intensity/focus natural-language word scales — the `$intensity-word` and
* `$focus-word` tokens. One curated word per percent (1..100). See
* notes/reference/intensity-design.md and notes/reference/focus-design.md.
*/
// A 100-step intensity word scale: one word per percent, least → most, with 50 ≈ "normal". Curated
// to size / amount / scale / proportion terms (kept the intentional "tiny" run). `$intensity-word`
// at intensity N renders INTENSITY_WORDS[N-1].
export const INTENSITY_WORDS = [
"barely-there", // 1
"near-zero", // 2
"negligible", // 3
"trace", // 4
"speck", // 5
"fleck", // 6
"smidge", // 7
"pinch", // 8
"dab", // 9
"sliver", // 10
"scrap", // 11
"crumb", // 12
"morsel", // 13
"drop", // 14
"sprinkle", // 15
"spoonful", // 16
"handful", // 17
"palmful", // 18
"pocketful", // 19
"ultra-tiny", // 20
"extra-tiny", // 21
"very tiny", // 22
"tiny", // 23
"teensy", // 24
"itty-bitty", // 25
"minuscule", // 26
"miniature", // 27
"mini", // 28
"diminutive", // 29
"little", // 30
"small", // 31
"compact", // 32
"undersized", // 33
"pint-sized", // 34
"scant", // 35
"sparse", // 36
"meager", // 37
"skimpy", // 38
"slight", // 39
"thin", // 40
"slim", // 41
"narrow", // 42
"short", // 43
"reduced", // 44
"partial", // 45
"modest", // 46
"moderate", // 47
"medium", // 48
"average", // 49
"normal", // 50
"full-size", // 51
"regular", // 52
"standard", // 53
"noticeable", // 54
"decent", // 55
"respectable", // 56
"sizable", // 57
"ample", // 58
"roomy", // 59
"generous", // 60
"broad", // 61
"wide", // 62
"large", // 63
"big", // 64
"hefty", // 65
"bulky", // 66
"oversized", // 67
"substantial", // 68
"considerable", // 69
"abundant", // 70
"plentiful", // 71
"copious", // 72
"overflowing", // 73
"packed", // 74
"crowded", // 75
"expansive", // 76
"extensive", // 77
"sweeping", // 78
"great", // 79
"major", // 80
"giant", // 81
"jumbo", // 82
"huge", // 83
"enormous", // 84
"immense", // 85
"massive", // 86
"gigantic", // 87
"tremendous", // 88
"colossal", // 89
"mammoth", // 90
"titanic", // 91
"monumental", // 92
"vast", // 93
"towering", // 94
"gargantuan", // 95
"humongous", // 96
"mega", // 97
"immeasurable", // 98
"limitless", // 99
"beyond measure", // 100
];
/** The natural-language word for an intensity percent 1..100 (the `$intensity-word` token). */
export function intensityWord(p) {
const i = Math.min(100, Math.max(1, Math.round(p)));
return INTENSITY_WORDS[i - 1];
}
// A 100-step focus word scale: one word per percent on the RELEVANCE axis — how much non-topic detail
// is allowed. 1 = anything loosely touching the topic may appear; 50 ≈ normal on-topic; 100 = only the
// exact subject, nothing else. `$focus-word` at focus N renders FOCUS_WORDS[N-1].
export const FOCUS_WORDS = [
"anything-goes", // 1
"unbounded", // 2
"unrestricted", // 3
"unlimited", // 4
"freeform", // 5
"open-ended", // 6
"loose", // 7
"lax", // 8
"permissive", // 9
"lenient", // 10
"relaxed", // 11
"forgiving", // 12
"tolerant", // 13
"generous", // 14
"allowing", // 15
"broad", // 16
"general", // 17
"wide-scope", // 18
"full-range", // 19
"far-reaching", // 20
"low-filter", // 21
"high-leeway", // 22
"loose-fit", // 23
"low-precision", // 24
"low-adherence", // 25
"indirect", // 26
"remote", // 27
"distant", // 28
"faintly-related", // 29
"vaguely-related", // 30
"loosely-related", // 31
"side-detail", // 32
"background-detail", // 33
"outer-detail", // 34
"extra-detail", // 35
"fringe-detail", // 36
"edge-detail", // 37
"nearby-detail", // 38
"related-detail", // 39
"peripheral", // 40
"tangential", // 41
"adjacent", // 42
"connected", // 43
"related", // 44
"relevant", // 45
"applicable", // 46
"suitable", // 47
"balanced", // 48
"moderate", // 49
"normal", // 50
"appropriate", // 51
"pertinent", // 52
"germane", // 53
"on-subject", // 54
"on-topic", // 55
"in-scope", // 56
"within-bounds", // 57
"subject-bound", // 58
"topic-bound", // 59
"bounded", // 60
"contained", // 61
"limited", // 62
"restricted", // 63
"constrained", // 64
"filtered", // 65
"selective", // 66
"relevant-only", // 67
"topic-centered", // 68
"subject-centered", // 69
"direct", // 70
"specific", // 71
"particular", // 72
"defined", // 73
"explicit", // 74
"literal", // 75
"close-fit", // 76
"tight-fit", // 77
"narrow", // 78
"exact", // 79
"accurate", // 80
"precise", // 81
"clean", // 82
"uncluttered", // 83
"spare", // 84
"minimal", // 85
"trimmed", // 86
"pared-down", // 87
"bare", // 88
"strict", // 89
"rigorous", // 90
"stringent", // 91
"restrictive", // 92
"exacting", // 93
"exclusive", // 94
"isolated", // 95
"singular", // 96
"single-subject", // 97
"pure", // 98
"absolute", // 99
"topic-only", // 100
];
/** The natural-language word for a focus percent 1..100 (the `$focus-word` token); loose → topic-only. */
export function focusWord(p) {
const i = Math.min(100, Math.max(1, Math.round(p)));
return FOCUS_WORDS[i - 1];
}