@sharpee/parser-en-us 0.9.60-beta

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.
Files changed (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +123 -0
  3. package/dist/direction-mappings.d.ts +24 -0
  4. package/dist/direction-mappings.d.ts.map +1 -0
  5. package/dist/direction-mappings.js +82 -0
  6. package/dist/direction-mappings.js.map +1 -0
  7. package/dist/english-grammar-engine.d.ts +85 -0
  8. package/dist/english-grammar-engine.d.ts.map +1 -0
  9. package/dist/english-grammar-engine.js +562 -0
  10. package/dist/english-grammar-engine.js.map +1 -0
  11. package/dist/english-parser.d.ts +184 -0
  12. package/dist/english-parser.d.ts.map +1 -0
  13. package/dist/english-parser.js +1268 -0
  14. package/dist/english-parser.js.map +1 -0
  15. package/dist/english-pattern-compiler.d.ts +29 -0
  16. package/dist/english-pattern-compiler.d.ts.map +1 -0
  17. package/dist/english-pattern-compiler.js +211 -0
  18. package/dist/english-pattern-compiler.js.map +1 -0
  19. package/dist/grammar.d.ts +19 -0
  20. package/dist/grammar.d.ts.map +1 -0
  21. package/dist/grammar.js +620 -0
  22. package/dist/grammar.js.map +1 -0
  23. package/dist/index.d.ts +24 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +44 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/parse-failure.d.ts +59 -0
  28. package/dist/parse-failure.d.ts.map +1 -0
  29. package/dist/parse-failure.js +132 -0
  30. package/dist/parse-failure.js.map +1 -0
  31. package/dist/parser-types.d.ts +185 -0
  32. package/dist/parser-types.d.ts.map +1 -0
  33. package/dist/parser-types.js +134 -0
  34. package/dist/parser-types.js.map +1 -0
  35. package/dist/pronoun-context.d.ts +119 -0
  36. package/dist/pronoun-context.d.ts.map +1 -0
  37. package/dist/pronoun-context.js +249 -0
  38. package/dist/pronoun-context.js.map +1 -0
  39. package/dist/scope-evaluator.d.ts +58 -0
  40. package/dist/scope-evaluator.d.ts.map +1 -0
  41. package/dist/scope-evaluator.js +205 -0
  42. package/dist/scope-evaluator.js.map +1 -0
  43. package/dist/slot-consumers/entity-slot-consumer.d.ts +36 -0
  44. package/dist/slot-consumers/entity-slot-consumer.d.ts.map +1 -0
  45. package/dist/slot-consumers/entity-slot-consumer.js +413 -0
  46. package/dist/slot-consumers/entity-slot-consumer.js.map +1 -0
  47. package/dist/slot-consumers/index.d.ts +43 -0
  48. package/dist/slot-consumers/index.d.ts.map +1 -0
  49. package/dist/slot-consumers/index.js +78 -0
  50. package/dist/slot-consumers/index.js.map +1 -0
  51. package/dist/slot-consumers/slot-consumer.d.ts +61 -0
  52. package/dist/slot-consumers/slot-consumer.d.ts.map +1 -0
  53. package/dist/slot-consumers/slot-consumer.js +31 -0
  54. package/dist/slot-consumers/slot-consumer.js.map +1 -0
  55. package/dist/slot-consumers/text-slot-consumer.d.ts +33 -0
  56. package/dist/slot-consumers/text-slot-consumer.d.ts.map +1 -0
  57. package/dist/slot-consumers/text-slot-consumer.js +157 -0
  58. package/dist/slot-consumers/text-slot-consumer.js.map +1 -0
  59. package/dist/slot-consumers/typed-slot-consumer.d.ts +35 -0
  60. package/dist/slot-consumers/typed-slot-consumer.d.ts.map +1 -0
  61. package/dist/slot-consumers/typed-slot-consumer.js +151 -0
  62. package/dist/slot-consumers/typed-slot-consumer.js.map +1 -0
  63. package/dist/slot-consumers/vocabulary-slot-consumer.d.ts +42 -0
  64. package/dist/slot-consumers/vocabulary-slot-consumer.d.ts.map +1 -0
  65. package/dist/slot-consumers/vocabulary-slot-consumer.js +186 -0
  66. package/dist/slot-consumers/vocabulary-slot-consumer.js.map +1 -0
  67. package/package.json +65 -0
package/dist/index.js ADDED
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ * English (US) Parser for Sharpee Interactive Fiction Platform
4
+ *
5
+ * This package provides English-specific parsing functionality
6
+ * for converting natural language commands into structured commands.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.metadata = exports.INANIMATE_THEM = exports.INANIMATE_IT = exports.RECOGNIZED_PRONOUNS = exports.isRecognizedPronoun = exports.PronounContextManager = exports.analyzeBestFailure = exports.Parser = exports.EnglishParser = void 0;
10
+ var english_parser_1 = require("./english-parser");
11
+ Object.defineProperty(exports, "EnglishParser", { enumerable: true, get: function () { return english_parser_1.EnglishParser; } });
12
+ var english_parser_2 = require("./english-parser"); // For convenience
13
+ Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return english_parser_2.EnglishParser; } });
14
+ var parse_failure_1 = require("./parse-failure");
15
+ Object.defineProperty(exports, "analyzeBestFailure", { enumerable: true, get: function () { return parse_failure_1.analyzeBestFailure; } });
16
+ var pronoun_context_1 = require("./pronoun-context");
17
+ Object.defineProperty(exports, "PronounContextManager", { enumerable: true, get: function () { return pronoun_context_1.PronounContextManager; } });
18
+ Object.defineProperty(exports, "isRecognizedPronoun", { enumerable: true, get: function () { return pronoun_context_1.isRecognizedPronoun; } });
19
+ Object.defineProperty(exports, "RECOGNIZED_PRONOUNS", { enumerable: true, get: function () { return pronoun_context_1.RECOGNIZED_PRONOUNS; } });
20
+ Object.defineProperty(exports, "INANIMATE_IT", { enumerable: true, get: function () { return pronoun_context_1.INANIMATE_IT; } });
21
+ Object.defineProperty(exports, "INANIMATE_THEM", { enumerable: true, get: function () { return pronoun_context_1.INANIMATE_THEM; } });
22
+ /**
23
+ * Package metadata
24
+ */
25
+ exports.metadata = {
26
+ languageCode: 'en-US',
27
+ languageName: 'English (United States)',
28
+ parserVersion: '1.0.0',
29
+ supportedPatterns: [
30
+ 'VERB_ONLY',
31
+ 'VERB_NOUN',
32
+ 'VERB_PREP_NOUN',
33
+ 'VERB_NOUN_PREP_NOUN',
34
+ 'DIRECTION_ONLY'
35
+ ],
36
+ features: [
37
+ 'compound-verbs',
38
+ 'articles',
39
+ 'adjectives',
40
+ 'abbreviations',
41
+ 'multi-word-nouns'
42
+ ]
43
+ };
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,mDAA2D,CAAC,kBAAkB;AAArE,wGAAA,aAAa,OAAU;AAWhC,iDAAqD;AAA5C,mHAAA,kBAAkB,OAAA;AAI3B,qDAM2B;AALzB,wHAAA,qBAAqB,OAAA;AACrB,sHAAA,mBAAmB,OAAA;AACnB,sHAAA,mBAAmB,OAAA;AACnB,+GAAA,YAAY,OAAA;AACZ,iHAAA,cAAc,OAAA;AAGhB;;GAEG;AACU,QAAA,QAAQ,GAAG;IACtB,YAAY,EAAE,OAAO;IACrB,YAAY,EAAE,yBAAyB;IACvC,aAAa,EAAE,OAAO;IACtB,iBAAiB,EAAE;QACjB,WAAW;QACX,WAAW;QACX,gBAAgB;QAChB,qBAAqB;QACrB,gBAAgB;KACjB;IACD,QAAQ,EAAE;QACR,gBAAgB;QAChB,UAAU;QACV,YAAY;QACZ,eAAe;QACf,kBAAkB;KACnB;CACF,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @file Parse Failure Tracking
3
+ * @description Types and utilities for tracking partial match failures
4
+ * to provide better error messages (Phase 1.2 of parser recommendations)
5
+ */
6
+ import type { ParseErrorCode } from '@sharpee/world-model';
7
+ /**
8
+ * Reason why a pattern match failed
9
+ */
10
+ export type MatchFailureReason = 'NO_TOKENS' | 'VERB_MISMATCH' | 'LITERAL_MISMATCH' | 'SLOT_FAILED' | 'LEFTOVER_TOKENS' | 'NOT_ENOUGH_TOKENS';
11
+ /**
12
+ * Detailed slot failure information
13
+ */
14
+ export interface SlotFailure {
15
+ /** Slot name (e.g., 'target', 'container') */
16
+ slotName: string;
17
+ /** Tokens that were tried for this slot */
18
+ attemptedText: string;
19
+ /** Why the slot failed */
20
+ reason: 'NO_MATCH' | 'SCOPE_VIOLATION' | 'AMBIGUOUS';
21
+ /** For NO_MATCH: the word(s) that couldn't be resolved */
22
+ unknownWord?: string;
23
+ /** For SCOPE_VIOLATION: entities found but out of scope */
24
+ outOfScopeEntities?: string[];
25
+ /** For AMBIGUOUS: multiple matches found */
26
+ candidates?: string[];
27
+ }
28
+ /**
29
+ * Information about a partial pattern match failure
30
+ */
31
+ export interface PartialMatchFailure {
32
+ /** The pattern that was attempted */
33
+ pattern: string;
34
+ /** The action this pattern maps to */
35
+ action: string;
36
+ /** How far into the pattern we got (0-1, higher = more matched) */
37
+ progress: number;
38
+ /** Number of tokens consumed before failure */
39
+ tokensConsumed: number;
40
+ /** Why the match failed */
41
+ reason: MatchFailureReason;
42
+ /** If verb was recognized, what was it */
43
+ matchedVerb?: string;
44
+ /** If a slot failed, details about that failure */
45
+ slotFailure?: SlotFailure;
46
+ /** The token that caused the mismatch (if applicable) */
47
+ failedAtToken?: string;
48
+ /** What was expected at the failure point */
49
+ expected?: string;
50
+ }
51
+ /**
52
+ * Analyze partial match failures to determine the best error to report
53
+ */
54
+ export declare function analyzeBestFailure(failures: PartialMatchFailure[], input: string, hasVerb: boolean): {
55
+ code: ParseErrorCode;
56
+ messageId: string;
57
+ context: Record<string, any>;
58
+ };
59
+ //# sourceMappingURL=parse-failure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-failure.d.ts","sourceRoot":"","sources":["../src/parse-failure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,WAAW,GACX,eAAe,GACf,kBAAkB,GAClB,aAAa,GACb,iBAAiB,GACjB,mBAAmB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IAEjB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IAEtB,0BAA0B;IAC1B,MAAM,EAAE,UAAU,GAAG,iBAAiB,GAAG,WAAW,CAAC;IAErD,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAEhB,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IAEf,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IAEjB,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IAEvB,2BAA2B;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAE3B,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mDAAmD;IACnD,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE,CAgI3E"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ /**
3
+ * @file Parse Failure Tracking
4
+ * @description Types and utilities for tracking partial match failures
5
+ * to provide better error messages (Phase 1.2 of parser recommendations)
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.analyzeBestFailure = analyzeBestFailure;
9
+ /**
10
+ * Analyze partial match failures to determine the best error to report
11
+ */
12
+ function analyzeBestFailure(failures, input, hasVerb) {
13
+ if (failures.length === 0) {
14
+ // No patterns even tried
15
+ if (!input.trim()) {
16
+ return {
17
+ code: 'NO_VERB',
18
+ messageId: 'parser.error.noInput',
19
+ context: {}
20
+ };
21
+ }
22
+ return {
23
+ code: 'UNKNOWN_VERB',
24
+ messageId: 'parser.error.unknownVerb',
25
+ context: { verb: input.split(/\s+/)[0] }
26
+ };
27
+ }
28
+ // Sort by progress descending - most progress = best failure info
29
+ const sorted = [...failures].sort((a, b) => b.progress - a.progress);
30
+ const best = sorted[0];
31
+ // If best failure has verb matched and slot failure, we have good info
32
+ if (best.matchedVerb && best.slotFailure) {
33
+ const sf = best.slotFailure;
34
+ if (sf.reason === 'NO_MATCH') {
35
+ return {
36
+ code: 'ENTITY_NOT_FOUND',
37
+ messageId: 'parser.error.entityNotFound',
38
+ context: {
39
+ verb: best.matchedVerb,
40
+ noun: sf.unknownWord || sf.attemptedText,
41
+ slot: sf.slotName
42
+ }
43
+ };
44
+ }
45
+ if (sf.reason === 'SCOPE_VIOLATION') {
46
+ return {
47
+ code: 'SCOPE_VIOLATION',
48
+ messageId: 'parser.error.scopeViolation',
49
+ context: {
50
+ verb: best.matchedVerb,
51
+ noun: sf.attemptedText,
52
+ slot: sf.slotName
53
+ }
54
+ };
55
+ }
56
+ if (sf.reason === 'AMBIGUOUS') {
57
+ return {
58
+ code: 'AMBIGUOUS_INPUT',
59
+ messageId: 'parser.error.ambiguous',
60
+ context: {
61
+ verb: best.matchedVerb,
62
+ noun: sf.attemptedText,
63
+ candidates: sf.candidates
64
+ }
65
+ };
66
+ }
67
+ }
68
+ // If verb matched but we ran out of tokens (missing object)
69
+ if (best.matchedVerb && best.reason === 'NOT_ENOUGH_TOKENS') {
70
+ // Check if it was looking for a slot
71
+ if (best.expected?.startsWith(':')) {
72
+ const slotName = best.expected.slice(1);
73
+ // Determine if it's direct or indirect object
74
+ if (slotName === 'target' || slotName === 'item' || slotName === 'object') {
75
+ return {
76
+ code: 'MISSING_OBJECT',
77
+ messageId: 'parser.error.missingObject',
78
+ context: { verb: best.matchedVerb }
79
+ };
80
+ }
81
+ else {
82
+ return {
83
+ code: 'MISSING_INDIRECT',
84
+ messageId: 'parser.error.missingIndirect',
85
+ context: {
86
+ verb: best.matchedVerb,
87
+ slot: slotName
88
+ }
89
+ };
90
+ }
91
+ }
92
+ return {
93
+ code: 'MISSING_OBJECT',
94
+ messageId: 'parser.error.missingObject',
95
+ context: { verb: best.matchedVerb }
96
+ };
97
+ }
98
+ // Verb matched but slot failed without details (generic slot failure)
99
+ if (best.matchedVerb && best.reason === 'SLOT_FAILED') {
100
+ return {
101
+ code: 'MISSING_OBJECT',
102
+ messageId: 'parser.error.missingObject',
103
+ context: { verb: best.matchedVerb }
104
+ };
105
+ }
106
+ // If first token matched verb patterns but all failed
107
+ if (best.matchedVerb && best.reason === 'LEFTOVER_TOKENS') {
108
+ return {
109
+ code: 'INVALID_SYNTAX',
110
+ messageId: 'parser.error.invalidSyntax',
111
+ context: {
112
+ verb: best.matchedVerb,
113
+ extraWords: best.failedAtToken
114
+ }
115
+ };
116
+ }
117
+ // No verb matched at all - unknown verb
118
+ if (!hasVerb) {
119
+ return {
120
+ code: 'UNKNOWN_VERB',
121
+ messageId: 'parser.error.unknownVerb',
122
+ context: { verb: input.split(/\s+/)[0] }
123
+ };
124
+ }
125
+ // Fallback
126
+ return {
127
+ code: 'INVALID_SYNTAX',
128
+ messageId: 'parser.error.invalidSyntax',
129
+ context: {}
130
+ };
131
+ }
132
+ //# sourceMappingURL=parse-failure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-failure.js","sourceRoot":"","sources":["../src/parse-failure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Parser-specific types
3
+ * These were previously in @sharpee/if-domain but are now local to the parser
4
+ */
5
+ import type { IParsedCommand, IParseError as CoreParseError } from '@sharpee/world-model';
6
+ /**
7
+ * Parser interface
8
+ */
9
+ export interface Parser {
10
+ parse(input: string): CommandResult<IParsedCommand, CoreParseError>;
11
+ setDebugCallback?(callback: ((event: any) => void) | undefined): void;
12
+ }
13
+ /**
14
+ * Parser options
15
+ */
16
+ export interface ParserOptions {
17
+ allowPartial?: boolean;
18
+ expandAbbreviations?: boolean;
19
+ ignoreArticles?: boolean;
20
+ minConfidence?: number;
21
+ }
22
+ /**
23
+ * Internal token representation
24
+ */
25
+ export interface Token {
26
+ word: string;
27
+ normalized: string;
28
+ position: number;
29
+ candidates: TokenCandidate[];
30
+ }
31
+ /**
32
+ * Token candidate
33
+ */
34
+ export interface TokenCandidate {
35
+ partOfSpeech: PartOfSpeech;
36
+ mapsTo: string;
37
+ priority?: number;
38
+ source?: string;
39
+ metadata?: Record<string, any>;
40
+ }
41
+ /**
42
+ * Command result wrapper
43
+ */
44
+ export type CommandResult<T, E> = {
45
+ success: true;
46
+ value: T;
47
+ } | {
48
+ success: false;
49
+ error: E;
50
+ };
51
+ /**
52
+ * Candidate command (legacy format)
53
+ */
54
+ export interface CandidateCommand {
55
+ action: string;
56
+ originalInput: string;
57
+ tokens: Token[];
58
+ pattern: string;
59
+ confidence: number;
60
+ nounText?: string;
61
+ nounCandidates?: string[];
62
+ preposition?: string;
63
+ secondNounText?: string;
64
+ secondNounCandidates?: string[];
65
+ }
66
+ /**
67
+ * Internal parse result (legacy format)
68
+ */
69
+ export interface InternalParseResult {
70
+ candidates: CandidateCommand[];
71
+ errors: ParseError[];
72
+ partial: boolean;
73
+ }
74
+ /**
75
+ * Parse error types
76
+ */
77
+ export declare enum ParseErrorType {
78
+ UNKNOWN_WORD = "UNKNOWN_WORD",
79
+ PATTERN_MISMATCH = "PATTERN_MISMATCH",
80
+ AMBIGUOUS = "AMBIGUOUS",
81
+ NO_COMMAND = "NO_COMMAND"
82
+ }
83
+ /**
84
+ * Parse error
85
+ */
86
+ export interface ParseError {
87
+ type: ParseErrorType;
88
+ message: string;
89
+ words?: string[];
90
+ position?: number;
91
+ }
92
+ /**
93
+ * Vocabulary part of speech
94
+ */
95
+ export declare enum PartOfSpeech {
96
+ VERB = "VERB",
97
+ NOUN = "NOUN",
98
+ ADJECTIVE = "ADJECTIVE",
99
+ ARTICLE = "ARTICLE",
100
+ PREPOSITION = "PREPOSITION",
101
+ PRONOUN = "PRONOUN",
102
+ DIRECTION = "DIRECTION",
103
+ SPECIAL = "SPECIAL"
104
+ }
105
+ /**
106
+ * Grammar patterns
107
+ */
108
+ export interface GrammarPatterns {
109
+ patterns: Array<{
110
+ name: string;
111
+ pattern: string;
112
+ action?: string;
113
+ }>;
114
+ }
115
+ /**
116
+ * Language provider interface
117
+ */
118
+ export interface LanguageProvider {
119
+ getVerbs?(): Array<{
120
+ actionId: string;
121
+ verbs: string[];
122
+ }>;
123
+ getDirections?(): Array<{
124
+ directionId: string;
125
+ words: string[];
126
+ }>;
127
+ getSpecialWords?(): Record<string, string[]>;
128
+ }
129
+ /**
130
+ * Vocabulary entry
131
+ */
132
+ export interface VocabularyEntry {
133
+ word: string;
134
+ partOfSpeech: PartOfSpeech;
135
+ mapsTo: string;
136
+ priority?: number;
137
+ source?: string;
138
+ metadata?: Record<string, any>;
139
+ }
140
+ /**
141
+ * Simple vocabulary registry
142
+ */
143
+ export declare class VocabularyRegistry {
144
+ private entries;
145
+ clear(): void;
146
+ register(entry: VocabularyEntry): void;
147
+ registerVerbs(verbs: Array<{
148
+ word: string;
149
+ mapsTo: string;
150
+ priority?: number;
151
+ }>): void;
152
+ registerDirections(directions: Array<{
153
+ word: string;
154
+ mapsTo: string;
155
+ }>): void;
156
+ registerSpecial(special: Array<{
157
+ word: string;
158
+ type: string;
159
+ }>): void;
160
+ lookup(word: string): VocabularyEntry[];
161
+ }
162
+ export declare const vocabularyRegistry: VocabularyRegistry;
163
+ /**
164
+ * Adapt verb vocabulary from language provider format
165
+ */
166
+ export declare function adaptVerbVocabulary(language: LanguageProvider): Array<{
167
+ word: string;
168
+ mapsTo: string;
169
+ priority?: number;
170
+ }>;
171
+ /**
172
+ * Adapt direction vocabulary from language provider format
173
+ */
174
+ export declare function adaptDirectionVocabulary(language: LanguageProvider): Array<{
175
+ word: string;
176
+ mapsTo: string;
177
+ }>;
178
+ /**
179
+ * Adapt special vocabulary from language provider format
180
+ */
181
+ export declare function adaptSpecialVocabulary(language: LanguageProvider): Array<{
182
+ word: string;
183
+ type: string;
184
+ }>;
185
+ //# sourceMappingURL=parser-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-types.d.ts","sourceRoot":"","sources":["../src/parser-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IACpE,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;CACvE;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,IAC1B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAC3B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB,YAAY,iBAAiB;IAC7B,gBAAgB,qBAAqB;IACrC,SAAS,cAAc;IACvB,UAAU,eAAe;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,KAAK,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC,CAAC;IAEH,aAAa,CAAC,IAAI,KAAK,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC,CAAC;IAEH,eAAe,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAA6C;IAE5D,KAAK,IAAI,IAAI;IAIb,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAQtC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAWtF,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAU7E,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAUrE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CAGxC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC;AAE3D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB1H;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAe5G;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAaxG"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * Parser-specific types
4
+ * These were previously in @sharpee/if-domain but are now local to the parser
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.vocabularyRegistry = exports.VocabularyRegistry = exports.PartOfSpeech = exports.ParseErrorType = void 0;
8
+ exports.adaptVerbVocabulary = adaptVerbVocabulary;
9
+ exports.adaptDirectionVocabulary = adaptDirectionVocabulary;
10
+ exports.adaptSpecialVocabulary = adaptSpecialVocabulary;
11
+ /**
12
+ * Parse error types
13
+ */
14
+ var ParseErrorType;
15
+ (function (ParseErrorType) {
16
+ ParseErrorType["UNKNOWN_WORD"] = "UNKNOWN_WORD";
17
+ ParseErrorType["PATTERN_MISMATCH"] = "PATTERN_MISMATCH";
18
+ ParseErrorType["AMBIGUOUS"] = "AMBIGUOUS";
19
+ ParseErrorType["NO_COMMAND"] = "NO_COMMAND";
20
+ })(ParseErrorType || (exports.ParseErrorType = ParseErrorType = {}));
21
+ /**
22
+ * Vocabulary part of speech
23
+ */
24
+ var PartOfSpeech;
25
+ (function (PartOfSpeech) {
26
+ PartOfSpeech["VERB"] = "VERB";
27
+ PartOfSpeech["NOUN"] = "NOUN";
28
+ PartOfSpeech["ADJECTIVE"] = "ADJECTIVE";
29
+ PartOfSpeech["ARTICLE"] = "ARTICLE";
30
+ PartOfSpeech["PREPOSITION"] = "PREPOSITION";
31
+ PartOfSpeech["PRONOUN"] = "PRONOUN";
32
+ PartOfSpeech["DIRECTION"] = "DIRECTION";
33
+ PartOfSpeech["SPECIAL"] = "SPECIAL";
34
+ })(PartOfSpeech || (exports.PartOfSpeech = PartOfSpeech = {}));
35
+ /**
36
+ * Simple vocabulary registry
37
+ */
38
+ class VocabularyRegistry {
39
+ entries = new Map();
40
+ clear() {
41
+ this.entries.clear();
42
+ }
43
+ register(entry) {
44
+ const word = entry.word.toLowerCase();
45
+ if (!this.entries.has(word)) {
46
+ this.entries.set(word, []);
47
+ }
48
+ this.entries.get(word).push(entry);
49
+ }
50
+ registerVerbs(verbs) {
51
+ for (const verb of verbs) {
52
+ this.register({
53
+ word: verb.word,
54
+ partOfSpeech: PartOfSpeech.VERB,
55
+ mapsTo: verb.mapsTo,
56
+ priority: verb.priority
57
+ });
58
+ }
59
+ }
60
+ registerDirections(directions) {
61
+ for (const dir of directions) {
62
+ this.register({
63
+ word: dir.word,
64
+ partOfSpeech: PartOfSpeech.DIRECTION,
65
+ mapsTo: dir.mapsTo
66
+ });
67
+ }
68
+ }
69
+ registerSpecial(special) {
70
+ for (const spec of special) {
71
+ this.register({
72
+ word: spec.word,
73
+ partOfSpeech: PartOfSpeech.SPECIAL,
74
+ mapsTo: spec.type
75
+ });
76
+ }
77
+ }
78
+ lookup(word) {
79
+ return this.entries.get(word.toLowerCase()) || [];
80
+ }
81
+ }
82
+ exports.VocabularyRegistry = VocabularyRegistry;
83
+ exports.vocabularyRegistry = new VocabularyRegistry();
84
+ /**
85
+ * Adapt verb vocabulary from language provider format
86
+ */
87
+ function adaptVerbVocabulary(language) {
88
+ const verbs = [];
89
+ if (language.getVerbs) {
90
+ for (const verbDef of language.getVerbs()) {
91
+ for (const verb of verbDef.verbs) {
92
+ verbs.push({
93
+ word: verb,
94
+ mapsTo: verbDef.actionId,
95
+ priority: 1.0
96
+ });
97
+ }
98
+ }
99
+ }
100
+ return verbs;
101
+ }
102
+ /**
103
+ * Adapt direction vocabulary from language provider format
104
+ */
105
+ function adaptDirectionVocabulary(language) {
106
+ const directions = [];
107
+ if (language.getDirections) {
108
+ for (const dirDef of language.getDirections()) {
109
+ for (const word of dirDef.words) {
110
+ directions.push({
111
+ word,
112
+ mapsTo: dirDef.directionId
113
+ });
114
+ }
115
+ }
116
+ }
117
+ return directions;
118
+ }
119
+ /**
120
+ * Adapt special vocabulary from language provider format
121
+ */
122
+ function adaptSpecialVocabulary(language) {
123
+ const special = [];
124
+ if (language.getSpecialWords) {
125
+ const specialWords = language.getSpecialWords();
126
+ for (const [type, words] of Object.entries(specialWords)) {
127
+ for (const word of words) {
128
+ special.push({ word, type });
129
+ }
130
+ }
131
+ }
132
+ return special;
133
+ }
134
+ //# sourceMappingURL=parser-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-types.js","sourceRoot":"","sources":["../src/parser-types.ts"],"names":[],"mappings":"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"}