@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
@@ -0,0 +1,184 @@
1
+ /**
2
+ * English Parser Implementation
3
+ *
4
+ * This parser handles English-specific grammar patterns and preserves all information
5
+ * in rich structured commands.
6
+ */
7
+ import { Parser, ParserOptions, Token as InternalToken, InternalParseResult, ParserLanguageProvider, VerbVocabulary, VocabularyEntry, Constraint } from '@sharpee/if-domain';
8
+ import type { IParsedCommand, IValidatedCommand, IParseError as CoreParseError } from '@sharpee/world-model';
9
+ import type { ISystemEvent, Result } from '@sharpee/core';
10
+ import { GrammarBuilder } from '@sharpee/if-domain';
11
+ import { PronounContextManager } from './pronoun-context';
12
+ type CommandResult<T, E> = Result<T, E>;
13
+ /**
14
+ * English parser with rich information preservation
15
+ */
16
+ export declare class EnglishParser implements Parser {
17
+ private options;
18
+ private language;
19
+ private onDebugEvent?;
20
+ private platformEventEmitter?;
21
+ private grammarEngine;
22
+ private worldContext;
23
+ /** Pronoun context manager for "it", "them", "him", "her" resolution (ADR-089) */
24
+ private pronounContext;
25
+ constructor(language: ParserLanguageProvider, options?: ParserOptions);
26
+ /**
27
+ * Initialize vocabulary from language provider
28
+ */
29
+ private initializeVocabulary;
30
+ /**
31
+ * Set debug event callback
32
+ */
33
+ setDebugCallback(callback: ((event: ISystemEvent) => void) | undefined): void;
34
+ /**
35
+ * Set platform event emitter for parser debugging
36
+ */
37
+ setPlatformEventEmitter(emitter: ((event: any) => void) | undefined): void;
38
+ /**
39
+ * Set the world context for scope constraint evaluation
40
+ */
41
+ setWorldContext(world: any, actorId: string, currentLocation: string): void;
42
+ /**
43
+ * Emit a platform debug event
44
+ */
45
+ private emitPlatformEvent;
46
+ /**
47
+ * Register additional verbs after parser creation
48
+ * Used for story-specific vocabulary
49
+ */
50
+ registerVerbs(verbs: VerbVocabulary[]): void;
51
+ /**
52
+ * Register additional vocabulary entries
53
+ * More generic than registerVerbs - can handle any part of speech
54
+ */
55
+ registerVocabulary(entries: VocabularyEntry[]): void;
56
+ /**
57
+ * Parse input text into structured command with rich information
58
+ */
59
+ parse(input: string): CommandResult<IParsedCommand, CoreParseError>;
60
+ /**
61
+ * Parse input that may contain multiple commands separated by periods or commas.
62
+ * Returns an array of parsed commands (or errors).
63
+ *
64
+ * Period chaining:
65
+ * - "take sword. go north." → [take sword, go north]
66
+ *
67
+ * Comma chaining (only when verb detected after comma):
68
+ * - "take sword, drop it" → [take sword, drop it] (verb after comma)
69
+ * - "take knife, lamp" → single command with list (no verb after comma)
70
+ *
71
+ * Examples:
72
+ * - "take sword. go north." → [take sword, go north]
73
+ * - "take sword" → [take sword]
74
+ * - "take sword. invalid. go north" → [take sword, error, go north]
75
+ */
76
+ parseChain(input: string): CommandResult<IParsedCommand, CoreParseError>[];
77
+ /**
78
+ * Split a segment on commas only if a verb is detected after the comma.
79
+ * "take knife, drop lamp" → ["take knife", "drop lamp"] (verb after comma)
80
+ * "take knife, lamp" → ["take knife, lamp"] (no verb, treat as list)
81
+ */
82
+ private splitOnCommasIfChain;
83
+ /**
84
+ * Split input on periods, preserving quoted strings.
85
+ * Handles edge cases like trailing periods and empty segments.
86
+ */
87
+ private splitOnPeriods;
88
+ /**
89
+ * Tokenize input with rich information preservation
90
+ */
91
+ private tokenizeRich;
92
+ /**
93
+ * Find possible command structures in the tokens
94
+ */
95
+ private findCommandStructures;
96
+ /**
97
+ * Convert a grammar match to a RichCandidate
98
+ */
99
+ private convertGrammarMatch;
100
+ /**
101
+ * Register story-specific grammar rules
102
+ * @deprecated Use getStoryGrammar() for full API
103
+ */
104
+ registerGrammar(pattern: string, action: string, constraints?: Record<string, Constraint>): void;
105
+ /**
106
+ * Get the grammar builder for story-specific rules.
107
+ * Stories use this to define custom grammar patterns.
108
+ *
109
+ * ADR-084: Returns the grammar builder directly instead of a wrapper,
110
+ * giving stories full access to all PatternBuilder methods.
111
+ */
112
+ getStoryGrammar(): GrammarBuilder;
113
+ /**
114
+ * Get candidate interpretations for a token
115
+ */
116
+ private getTokenCandidates;
117
+ /**
118
+ * Old tokenize method for compatibility
119
+ */
120
+ tokenize(input: string): InternalToken[];
121
+ /**
122
+ * Parse with errors for testing compatibility
123
+ */
124
+ parseWithErrors(input: string, options?: ParserOptions): InternalParseResult;
125
+ /**
126
+ * Add a custom verb to the parser vocabulary
127
+ * @param actionId The action ID this verb maps to
128
+ * @param verbs Array of verb forms to recognize
129
+ * @param pattern Optional grammar pattern for the verb (e.g., 'VERB_OBJ')
130
+ * @param prepositions Optional prepositions this verb can use
131
+ */
132
+ addVerb(actionId: string, verbs: string[], pattern?: string, prepositions?: string[]): void;
133
+ /**
134
+ * Add a custom noun/synonym to the parser vocabulary
135
+ * @param word The word to add
136
+ * @param canonical The canonical form it maps to
137
+ */
138
+ addNoun(word: string, canonical: string): void;
139
+ /**
140
+ * Add a custom adjective to the parser vocabulary
141
+ * @param word The adjective to add
142
+ */
143
+ addAdjective(word: string): void;
144
+ /**
145
+ * Add a custom preposition to the parser vocabulary
146
+ * @param word The preposition to add
147
+ */
148
+ addPreposition(word: string): void;
149
+ /**
150
+ * Build a detailed parse error from failure analysis
151
+ */
152
+ private buildParseError;
153
+ /**
154
+ * Update pronoun context after a successful command execution
155
+ * Called by the engine after command execution succeeds
156
+ * @param command The validated command with resolved entity IDs
157
+ * @param turnNumber Current turn number
158
+ */
159
+ updatePronounContext(command: IValidatedCommand, turnNumber: number): void;
160
+ /**
161
+ * Register an entity that was mentioned in context
162
+ * Used when entities are referenced outside of standard parsing
163
+ * @param entityId The entity's ID
164
+ * @param text How the player referred to it
165
+ * @param turnNumber Current turn number
166
+ */
167
+ registerPronounEntity(entityId: string, text: string, turnNumber: number): void;
168
+ /**
169
+ * Reset the pronoun context
170
+ * Called on game restart or when context should be cleared
171
+ */
172
+ resetPronounContext(): void;
173
+ /**
174
+ * Get the last successfully parsed command
175
+ * Used for "again" / "g" command support
176
+ */
177
+ getLastCommand(): IParsedCommand | null;
178
+ /**
179
+ * Get the pronoun context manager (for testing/debugging)
180
+ */
181
+ getPronounContextManager(): PronounContextManager;
182
+ }
183
+ export {};
184
+ //# sourceMappingURL=english-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"english-parser.d.ts","sourceRoot":"","sources":["../src/english-parser.ts"],"names":[],"mappings":"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"}