@sharpee/chord 3.0.0 → 3.3.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.
Files changed (55) hide show
  1. package/analyzer.d.ts +11 -3
  2. package/analyzer.d.ts.map +1 -1
  3. package/analyzer.js +1217 -33
  4. package/analyzer.js.map +1 -1
  5. package/ast.d.ts +458 -9
  6. package/ast.d.ts.map +1 -1
  7. package/catalog.d.ts +57 -1
  8. package/catalog.d.ts.map +1 -1
  9. package/catalog.js +95 -3
  10. package/catalog.js.map +1 -1
  11. package/diagnostics.d.ts +1 -1
  12. package/diagnostics.d.ts.map +1 -1
  13. package/index.d.ts +31 -13
  14. package/index.d.ts.map +1 -1
  15. package/index.js +110 -30
  16. package/index.js.map +1 -1
  17. package/ir.d.ts +316 -7
  18. package/ir.d.ts.map +1 -1
  19. package/lexer.d.ts +11 -3
  20. package/lexer.d.ts.map +1 -1
  21. package/lexer.js +36 -8
  22. package/lexer.js.map +1 -1
  23. package/manifests/combat.d.ts +16 -0
  24. package/manifests/combat.d.ts.map +1 -0
  25. package/manifests/combat.js +38 -0
  26. package/manifests/combat.js.map +1 -0
  27. package/manifests/index.d.ts +21 -0
  28. package/manifests/index.d.ts.map +1 -0
  29. package/manifests/index.js +46 -0
  30. package/manifests/index.js.map +1 -0
  31. package/manifests/npc.d.ts +19 -0
  32. package/manifests/npc.d.ts.map +1 -0
  33. package/manifests/npc.js +38 -0
  34. package/manifests/npc.js.map +1 -0
  35. package/manifests/state-machines.d.ts +17 -0
  36. package/manifests/state-machines.d.ts.map +1 -0
  37. package/manifests/state-machines.js +8 -0
  38. package/manifests/state-machines.js.map +1 -0
  39. package/manifests/types.d.ts +41 -0
  40. package/manifests/types.d.ts.map +1 -0
  41. package/manifests/types.js +18 -0
  42. package/manifests/types.js.map +1 -0
  43. package/message-alias-catalog.d.ts +22 -0
  44. package/message-alias-catalog.d.ts.map +1 -0
  45. package/message-alias-catalog.js +830 -0
  46. package/message-alias-catalog.js.map +1 -0
  47. package/package.json +1 -1
  48. package/parser.d.ts +2 -2
  49. package/parser.d.ts.map +1 -1
  50. package/parser.js +1566 -148
  51. package/parser.js.map +1 -1
  52. package/phrasebooks.d.ts +28 -0
  53. package/phrasebooks.d.ts.map +1 -0
  54. package/phrasebooks.js +6 -0
  55. package/phrasebooks.js.map +1 -0
package/ir.d.ts CHANGED
@@ -13,21 +13,47 @@
13
13
  * Contract 1, owner-confirmed 2026-07-10); @sharpee/ide-protocol re-exports
14
14
  * it. Invariant: pure data — JSON.parse(JSON.stringify(ir)) is identity.
15
15
  */
16
- import type { Span } from './span';
16
+ import type { Span } from './span.js';
17
17
  /** Format stamp of this IR schema. Consumers refuse unknown formats. */
18
18
  export declare const IR_FORMAT = "story language 1";
19
19
  /** Root of a compiled story. */
20
20
  export interface StoryIR {
21
21
  format: typeof IR_FORMAT;
22
22
  meta: IRMeta;
23
- /** The story object's declared phases (ownership package D2). */
23
+ /**
24
+ * The story object's declared phases (ownership package D2) and its
25
+ * owned `on every turn` clauses (ADR-236 D7, ratchet R4) — daemons with
26
+ * NO presence gate; `it` is unbound (compile-gated), narration
27
+ * broadcasts.
28
+ */
24
29
  story: {
25
30
  states: string[];
26
31
  reversible: boolean;
32
+ onClauses: IROnClause[];
27
33
  };
34
+ /**
35
+ * `use <extension>` names (ADR-215), validated against the manifest
36
+ * registry — the loader registers each against its trusted runtime
37
+ * registry at load (unknown names there are load errors).
38
+ */
39
+ uses: string[];
28
40
  entities: IREntity[];
29
41
  conditions: IRNamedCondition[];
30
42
  phrases: IRPhrases;
43
+ /**
44
+ * ADR-255 standard-action message overrides, keyed by ACL alias per locale
45
+ * (never a dotted platform id — the loader resolves the alias to `if.action.*`
46
+ * via Interface Contract 3). Each entry is a full IRPhrase body, so cycling /
47
+ * variants ride the same phrasebook resolution seam a platform message uses.
48
+ */
49
+ messageOverrides: IRMessageOverrides;
50
+ /**
51
+ * Phrasebooks in arbitration order — file-appearance order of
52
+ * `use phrasebook` (header) and `define phrasebook`/import-spliced
53
+ * blocks (body). First predicate-match in this order, per key, wins;
54
+ * a `condition: null` book is the default (always) book (ADR-250 D3).
55
+ */
56
+ phrasebooks: IRPhrasebook[];
31
57
  verbs: IRVerbDef[];
32
58
  hatches: IRHatch[];
33
59
  traits: IRTraitDef[];
@@ -35,6 +61,17 @@ export interface StoryIR {
35
61
  /** Owner-attached score identities (D12) — names are owner-qualified (`pygmy-goats.fed`). */
36
62
  scores: IRScoreDef[];
37
63
  sequences: IRSequenceDef[];
64
+ /** `define machine` blocks (ADR-215 `use state-machines` depth). */
65
+ machines: IRMachineDef[];
66
+ /** `define channel` data projections (ADR-216) — pure IR; renderers are platform/extension territory. */
67
+ channels: IRChannelDef[];
68
+ /**
69
+ * `define pronouns` named sets (ADR-242 D7) — declared case forms as
70
+ * DATA. The loader registers each into the language provider through
71
+ * the `extendLanguage` seam; the forms are locale text and render only
72
+ * in lang-{locale}, never here.
73
+ */
74
+ pronounSets: IRPronounSetDef[];
38
75
  /** True when any hatch is declared — the pure-IR profile refuses these (AC-4). */
39
76
  hasHatches: boolean;
40
77
  }
@@ -52,17 +89,46 @@ export interface IREntity {
52
89
  /** Leading article as written (`the`), or null. */
53
90
  article: string | null;
54
91
  aka: string[];
92
+ /**
93
+ * `pronouns <word>` (ADR-242 D5) — a standard set (`he`/`she`/`it`/
94
+ * `they`) or a `define pronouns` set name. Present only when declared:
95
+ * no default is injected (ruled Q-2) — absent means the platform's
96
+ * by-number fallback.
97
+ */
98
+ pronouns?: string;
55
99
  /** True for the story's player entity (`create the player`). */
56
100
  isPlayer: boolean;
57
101
  /** Kind-noun compositions (`a room`), in declaration order. */
58
102
  kinds: IRComposition[];
59
103
  /** Trait-adjective compositions (`scenery`, `dark while …`). */
60
104
  traits: IRComposition[];
105
+ /**
106
+ * `starts <state>` initializers (ADR-231 D5a), in declaration order —
107
+ * accepted state words (`locked`, `open`, `on`, …) whose pairing with a
108
+ * composed trait the analyzer has already enforced. The loader maps each
109
+ * to the paired trait's initial-value field (`isLocked`, `isOpen`,
110
+ * `isOn`); the state adjective itself is never stored story state.
111
+ */
112
+ startsStates: string[];
61
113
  placement: IRPlacement | null;
62
114
  /** Entity IDs this entity wears at start (player wears the cloak). */
63
115
  wears: string[];
116
+ /** Entity IDs carried at start, not worn (player carries the knife — ADR-230 Phase 6). */
117
+ carries: string[];
118
+ /**
119
+ * Region membership (`containing <list>`, ADR-236 D2/D3) — resolved member
120
+ * entity IDs in declaration order, additive across lines. Members are
121
+ * rooms (loader: `assignRoom`) or nested regions (member's
122
+ * `parentRegionId` = this region). Non-empty only on region-kind entities
123
+ * (analyzer-gated).
124
+ */
125
+ containing: IRContainedMember[];
64
126
  exits: IRExit[];
65
127
  blockedExits: IRBlockedExit[];
128
+ /** `<direction> is deadly: <phrase>` lines (ADR-227). */
129
+ deadlyExits: IRDeadlyExit[];
130
+ /** `deadly: <phrase>` no-escape room marker (ADR-227); null = not deadly. */
131
+ deadly: IRDeadlyRoom | null;
66
132
  /**
67
133
  * Ordered state names — the entity's own `states:` line first, then every
68
134
  * composed trait's declared set in composition order (D8 merge; one
@@ -83,6 +149,31 @@ export interface IREntity {
83
149
  */
84
150
  initialDescriptionKey: string | null;
85
151
  onClauses: IROnClause[];
152
+ /**
153
+ * The entity's declared ask/tell topic table (`define topics for …`,
154
+ * ADR-239 D3/D4) — rows in declaration order; empty when no block is
155
+ * declared. Runtime matching is normalized whole-topic lookup, never
156
+ * fuzzy; a miss falls to the owner's `on asking it` catch-all (D5).
157
+ */
158
+ topics: IRTopicRow[];
159
+ span: Span;
160
+ }
161
+ /**
162
+ * One resolved topic-table row (ADR-239). Entity tier carries the resolved
163
+ * entity id (matched against the platform's `topicEntityId`); free-text
164
+ * tier carries the primary spelling plus declared aliases (matched against
165
+ * the normalized asked text). The body executes with `it` = the owner.
166
+ */
167
+ export interface IRTopicRow {
168
+ filter: {
169
+ kind: 'entity';
170
+ id: string;
171
+ } | {
172
+ kind: 'text';
173
+ primary: string;
174
+ aliases: string[];
175
+ };
176
+ body: IRStatement[];
86
177
  span: Span;
87
178
  }
88
179
  export interface IRComposition {
@@ -96,8 +187,20 @@ export interface IRConfigSetting {
96
187
  /** Setting key words joined with a space (`max items`). */
97
188
  key: string;
98
189
  value: string;
99
- /** 'name' = multi-word entity-name value (`with food the handful of feed`, Phase B). */
100
- valueKind: 'number' | 'string' | 'word' | 'name';
190
+ /**
191
+ * 'name' = multi-word entity-name value (`with food the handful of
192
+ * feed`, Phase B); 'list' = bracketed name list (`with route [Hall,
193
+ * Study]`, ADR-215) — resolved entity IDs in `values`, `value` empty.
194
+ */
195
+ valueKind: 'number' | 'string' | 'word' | 'name' | 'list';
196
+ /** Resolved entity IDs when valueKind is 'list'. */
197
+ values?: string[];
198
+ }
199
+ /** One resolved `containing` member (ADR-236 D2) — a room or nested region. */
200
+ export interface IRContainedMember {
201
+ /** Entity ID of the member. */
202
+ id: string;
203
+ span: Span;
101
204
  }
102
205
  export interface IRPlacement {
103
206
  relation: 'in' | 'on' | 'starts-in';
@@ -109,6 +212,12 @@ export interface IRExit {
109
212
  direction: string;
110
213
  /** Entity ID of the destination room. */
111
214
  to: string;
215
+ /**
216
+ * Entity ID of the door this exit passes through (`through the <door>`,
217
+ * ADR-234 D1) — null on plain exits. The loader stamps it as `via` on
218
+ * both directions and places the door in the declaring room.
219
+ */
220
+ via: string | null;
112
221
  span: Span;
113
222
  }
114
223
  export interface IRBlockedExit {
@@ -118,6 +227,21 @@ export interface IRBlockedExit {
118
227
  condition: IRCondition | null;
119
228
  span: Span;
120
229
  }
230
+ /** `<direction> is deadly: <phrase>` (ADR-227) — a lethal exit. */
231
+ export interface IRDeadlyExit {
232
+ direction: string;
233
+ /** Phrase key carrying the death text (also the derived cause). */
234
+ phraseKey: string;
235
+ /** `is deadly while <cond>` — parsed but not yet wired (post-scope). */
236
+ condition: IRCondition | null;
237
+ span: Span;
238
+ }
239
+ /** `deadly: <phrase>` (ADR-227) — the no-escape room marker. */
240
+ export interface IRDeadlyRoom {
241
+ /** Phrase key carrying the death text (also the derived cause). */
242
+ phraseKey: string;
243
+ span: Span;
244
+ }
121
245
  export interface IROnClause {
122
246
  /** `on` = intercept (may refuse; primary text), `after` = react (appends; ratchet D3). */
123
247
  clauseKind: 'on' | 'after';
@@ -165,6 +289,17 @@ export interface IRPhrases {
165
289
  /** locale → phrase key → phrase. */
166
290
  locales: Record<string, Record<string, IRPhrase>>;
167
291
  }
292
+ /**
293
+ * ADR-255 message overrides. Same shape as {@link IRPhrases} but keyed by ACL
294
+ * alias (`taking-fixed-in-place`), not a story phrase key; the loader resolves
295
+ * each alias to its `if.action.*` id and registers the phrase body on the
296
+ * phrasebook resolution seam so strategy/cycling works for a platform message.
297
+ */
298
+ export interface IRMessageOverrides {
299
+ defaultLocale: string;
300
+ /** locale → override alias → phrase body. */
301
+ locales: Record<string, Record<string, IRPhrase>>;
302
+ }
168
303
  export interface IRPhrase {
169
304
  /** Choice strategy for multi-variant phrases, or null for a single text (Z5 adverbs, ADR-211 Decision 4). */
170
305
  strategy: 'randomly' | 'cycling' | 'stopping' | 'sticky' | 'first-time' | null;
@@ -192,6 +327,23 @@ export interface IRPhraseVariant {
192
327
  */
193
328
  markers: string[];
194
329
  }
330
+ /**
331
+ * One phrasebook (ADR-245/ADR-250 D3): a named, predicated collection of
332
+ * story-key phrase entries. `define`d (and import-spliced) books carry
333
+ * their entries; `use`d books carry none — the loader resolves them from
334
+ * the packaged-book data registry at load (manifest keys ≡ data keys,
335
+ * conformance-checked).
336
+ */
337
+ export interface IRPhrasebook {
338
+ /** Single kebab-case book name. */
339
+ name: string;
340
+ source: 'define' | 'use';
341
+ /** Activity predicate, evaluated at render time; null = always (the default book). */
342
+ condition: IRCondition | null;
343
+ /** Present for 'define'; absent for 'use'. Keys are story keys (never dotted platform IDs). */
344
+ entries?: Record<string, IRPhrase>;
345
+ span: Span;
346
+ }
195
347
  export interface IRNamedCondition {
196
348
  name: string;
197
349
  /**
@@ -218,8 +370,13 @@ export type IRPatternPart = {
218
370
  export interface IRHatch {
219
371
  name: string;
220
372
  modulePath: string;
221
- /** Target interface: dynamic-text producer, Action, or CapabilityBehavior. */
222
- hatchKind: 'text' | 'action' | 'behavior';
373
+ /**
374
+ * Target interface: dynamic-text producer, Action, or event `chain`
375
+ * (ADR-094 — a chain hatch replaces a stdlib chain like `opened-revealed`).
376
+ * (`behavior` was removed by ADR-235 D2 — the hatch had no binding key and
377
+ * could never fire.)
378
+ */
379
+ hatchKind: 'text' | 'action' | 'chain';
223
380
  span: Span;
224
381
  }
225
382
  /** `define trait` — data fields, trait-declared states, behavior clauses. */
@@ -313,6 +470,117 @@ export interface IRSequenceStep {
313
470
  body: IRStatement[];
314
471
  span: Span;
315
472
  }
473
+ /**
474
+ * `define machine` (ADR-215 `use state-machines` depth; spelling A,
475
+ * 2026-07-18). The loader lowers onto the ADR-119 plugin: platform machine
476
+ * id `chord.machine.<slug>`, role bindings as `$<role>` refs, Chord
477
+ * conditions as custom guards, Chord bodies as custom effects.
478
+ */
479
+ export interface IRMachineDef {
480
+ /** Name words joined with a space (`drawbridge works`). */
481
+ name: string;
482
+ /** Role name → resolved entity id (the machine's bindings). */
483
+ roles: Array<{
484
+ name: string;
485
+ entity: string;
486
+ }>;
487
+ initialState: string;
488
+ states: IRMachineState[];
489
+ span: Span;
490
+ }
491
+ export interface IRMachineState {
492
+ name: string;
493
+ terminal: boolean;
494
+ transitions: IRMachineTransition[];
495
+ onEnter: IRStatement[];
496
+ onExit: IRStatement[];
497
+ span: Span;
498
+ }
499
+ export interface IRMachineTransition {
500
+ /** Resolved trigger: action targets are `$<role>` refs or entity ids. */
501
+ trigger: {
502
+ kind: 'action';
503
+ action: string;
504
+ target: string | null;
505
+ } | {
506
+ kind: 'event';
507
+ event: string;
508
+ } | {
509
+ kind: 'condition';
510
+ condition: IRCondition;
511
+ };
512
+ /** Optional `while` guard riding the trigger. */
513
+ condition: IRCondition | null;
514
+ /** Target state name. */
515
+ target: string;
516
+ span: Span;
517
+ }
518
+ /**
519
+ * The construct a channel `return`s (ADR-253 D1). The loader evaluates it
520
+ * against the turn's last matching event to produce the channel's value:
521
+ * - `field` — the raw event field value;
522
+ * - `text` — a text template whose `(slot)` names project event fields
523
+ * (the phrase slot spelling), yielding finished text;
524
+ * - `phrase` — the named phrase's rendered text.
525
+ */
526
+ export type IRChannelReturn = {
527
+ kind: 'field';
528
+ field: string;
529
+ } | {
530
+ kind: 'text';
531
+ text: string;
532
+ } | {
533
+ kind: 'phrase';
534
+ phrase: string;
535
+ };
536
+ /**
537
+ * `define channel` (ADR-216; spelling A, 2026-07-18; ADR-253 replaced
538
+ * `take`/`from event` with `return … from <event>`): a declarative data
539
+ * projection — the loader lowers it to a real IOChannel whose produce
540
+ * evaluates `returns` against the turn's last event of `fromEvent`.
541
+ * `gatedBy` carries the PLATFORM camelCase capability key. The `family`
542
+ * discriminator is ADR-241's additive extension: every data projection
543
+ * reads as `family: 'data'`.
544
+ */
545
+ export interface IRDataChannelDef {
546
+ name: string;
547
+ family: 'data';
548
+ mode: 'replace' | 'append' | 'event';
549
+ gatedBy: string | null;
550
+ fromEvent: string;
551
+ returns: IRChannelReturn;
552
+ span: Span;
553
+ }
554
+ /**
555
+ * A named family channel (ADR-241 D2): `define ambient <word>` /
556
+ * `define layer <word>`, or the implied `main` bed when used. `name` is
557
+ * the author's word (`wind`); the registered id (`ambient:wind`,
558
+ * `image:wind`) and the channel's mode/gate/produce are the loader's
559
+ * business via stdlib's family builders — never carried here.
560
+ */
561
+ export interface IRFamilyChannelDef {
562
+ name: string;
563
+ family: 'ambient' | 'layer';
564
+ span: Span;
565
+ }
566
+ /** Any story-declared dynamic channel (ADR-163 §7 / ADR-241 D1). */
567
+ export type IRChannelDef = IRDataChannelDef | IRFamilyChannelDef;
568
+ /**
569
+ * One `define pronouns <name>` set (ADR-242 D7) — the five case forms the
570
+ * lang-{locale} assembler's pronoun table keys. Forms are carried as data;
571
+ * they become rendered text only inside the language provider's registry.
572
+ */
573
+ export interface IRPronounSetDef {
574
+ name: string;
575
+ forms: {
576
+ subject: string;
577
+ object: string;
578
+ possessive: string;
579
+ possessivePronoun: string;
580
+ reflexive: string;
581
+ };
582
+ span: Span;
583
+ }
316
584
  export type IRStatement = {
317
585
  kind: 'refuse';
318
586
  phraseKey: string;
@@ -324,9 +592,12 @@ export type IRStatement = {
324
592
  params: IRParam[];
325
593
  stmtWhen?: IRCondition | null;
326
594
  span: Span;
327
- } | {
595
+ }
596
+ /** Payload present only when authored (`with …`, ADR-216) — additive field. */
597
+ | {
328
598
  kind: 'emit';
329
599
  event: string;
600
+ payload?: IREmitField[];
330
601
  stmtWhen?: IRCondition | null;
331
602
  span: Span;
332
603
  } | {
@@ -369,6 +640,11 @@ export type IRStatement = {
369
640
  phraseKey: string | null;
370
641
  stmtWhen?: IRCondition | null;
371
642
  span: Span;
643
+ } | {
644
+ kind: 'kill';
645
+ phraseKey: string | null;
646
+ stmtWhen?: IRCondition | null;
647
+ span: Span;
372
648
  }
373
649
  /** `must` requirement as a body statement (ratchet D6). */
374
650
  | {
@@ -421,6 +697,30 @@ export interface IRParam {
421
697
  value: IRValue;
422
698
  span: Span;
423
699
  }
700
+ /** One resolved emit-payload field (ADR-216): key words joined with a space, passed VERBATIM to the event data. */
701
+ export interface IREmitField {
702
+ key: string;
703
+ value: IREmitValue;
704
+ }
705
+ /**
706
+ * One resolved emit-payload value (ADR-216): a literal, a resolved value
707
+ * expression (evaluated live at emit time — `true`/`false` symbols become
708
+ * booleans), an array, or a nested object.
709
+ */
710
+ export type IREmitValue = {
711
+ kind: 'literal';
712
+ value: string;
713
+ valueType: 'number' | 'string';
714
+ } | {
715
+ kind: 'value';
716
+ value: IRValue;
717
+ } | {
718
+ kind: 'array';
719
+ items: IREmitValue[];
720
+ } | {
721
+ kind: 'object';
722
+ fields: IREmitField[];
723
+ };
424
724
  export type IRValue = {
425
725
  kind: 'literal';
426
726
  value: string;
@@ -500,6 +800,15 @@ export type IRCondition = {
500
800
  kind: 'satisfies';
501
801
  subject: IRValue;
502
802
  condition: string;
803
+ }
804
+ /**
805
+ * `client has <capability>` (ADR-216): the live negotiated client
806
+ * capability flag, by its PLATFORM camelCase key. Text-only when no
807
+ * client negotiated.
808
+ */
809
+ | {
810
+ kind: 'client-has';
811
+ capability: string;
503
812
  } | {
504
813
  kind: 'predicate';
505
814
  /** 'can-see'/'can-reach' land with Phase B (design.md §2.7). */
package/ir.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../../repos/sharpee_v2/packages/chord/src/ir.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../../repos/sharpee_v2/packages/chord/src/ir.ts"],"names":[],"mappings":"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"}
package/lexer.d.ts CHANGED
@@ -12,14 +12,16 @@
12
12
  *
13
13
  * Invariants:
14
14
  * - Every non-blank source line yields exactly one Line, in source order.
15
+ * Comment lines (ADR-249) are flagged, never dropped — the parser is
16
+ * the enforcement point for where a comment may legally appear.
15
17
  * - `Line.raw` is the untrimmed source text — prose reconstruction never
16
18
  * loses characters the tokenizer didn't understand.
17
19
  * - Indentation is spaces only; a tab in leading whitespace is an error
18
20
  * (reported once per line) and is measured as one column.
19
21
  */
20
- import { DiagnosticBag } from './diagnostics';
21
- import { Span } from './span';
22
- export type TokenKind = 'word' | 'number' | 'string' | 'colon' | 'comma' | 'lparen' | 'rparen' | 'punct';
22
+ import { DiagnosticBag } from './diagnostics.js';
23
+ import { Span } from './span.js';
24
+ export type TokenKind = 'word' | 'number' | 'string' | 'colon' | 'comma' | 'lparen' | 'rparen' | 'lbracket' | 'rbracket' | 'lbrace' | 'rbrace' | 'punct';
23
25
  export interface Token {
24
26
  kind: TokenKind;
25
27
  /** Exact source text (for strings, WITHOUT the surrounding quotes). */
@@ -38,6 +40,12 @@ export interface Line {
38
40
  tokens: Token[];
39
41
  /** True when a blank line (or start of file) immediately precedes this line. */
40
42
  afterBlank: boolean;
43
+ /**
44
+ * True for an indent-0 `##` comment line (ADR-249). Comment lines are
45
+ * flagged, never dropped: the parser skips them at top-level dispatch
46
+ * only and diagnoses them everywhere else.
47
+ */
48
+ comment: boolean;
41
49
  }
42
50
  /**
43
51
  * Tokenize source into logical lines.
package/lexer.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../../repos/sharpee_v2/packages/chord/src/lexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAU,MAAM,QAAQ,CAAC;AAEtC,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,4CAA4C;AAC5C,MAAM,WAAW,IAAI;IACnB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,gFAAgF;IAChF,UAAU,EAAE,OAAO,CAAC;CACrB;AAKD;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,EAAE,CAsCtE"}
1
+ {"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../../repos/sharpee_v2/packages/chord/src/lexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAU,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,4CAA4C;AAC5C,MAAM,WAAW,IAAI;IACnB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,gFAAgF;IAChF,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAKD;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,EAAE,CAwCtE"}
package/lexer.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.lex = lex;
4
- const span_1 = require("./span");
4
+ const span_js_1 = require("./span.js");
5
5
  const WORD_RE = /^[A-Za-zÀ-ɏ][A-Za-z0-9À-ɏ'_-]*/;
6
6
  const NUMBER_RE = /^[0-9]+(?:\.[0-9]+)*/;
7
7
  /**
@@ -25,7 +25,7 @@ function lex(source, diagnostics) {
25
25
  let col = 0;
26
26
  while (col < raw.length && (raw[col] === ' ' || raw[col] === '\t')) {
27
27
  if (raw[col] === '\t') {
28
- diagnostics.error('lex.tab-indent', 'Tabs are not allowed in indentation — use spaces.', (0, span_1.spanOf)(lineNo, col + 1));
28
+ diagnostics.error('lex.tab-indent', 'Tabs are not allowed in indentation — use spaces.', (0, span_js_1.spanOf)(lineNo, col + 1));
29
29
  }
30
30
  indent++;
31
31
  col++;
@@ -36,11 +36,39 @@ function lex(source, diagnostics) {
36
36
  raw,
37
37
  tokens: tokenizeLine(raw, lineNo, col, diagnostics),
38
38
  afterBlank,
39
+ comment: indent === 0 && raw.startsWith('##'),
39
40
  });
40
41
  afterBlank = false;
41
42
  }
43
+ checkCommentDelimitation(lines, diagnostics);
42
44
  return lines;
43
45
  }
46
+ /**
47
+ * ADR-249 hard rule: a comment run (maximal consecutive indent-0 `##`
48
+ * lines) must be preceded AND followed by blank lines. Start and end of
49
+ * file count as blank — `##` as the very first line is the file-header
50
+ * comment. One diagnostic per violating run.
51
+ */
52
+ function checkCommentDelimitation(lines, diagnostics) {
53
+ let i = 0;
54
+ while (i < lines.length) {
55
+ if (!lines[i].comment) {
56
+ i++;
57
+ continue;
58
+ }
59
+ const start = i;
60
+ while (i + 1 < lines.length && lines[i + 1].comment && !lines[i + 1].afterBlank)
61
+ i++;
62
+ const blankBefore = lines[start].afterBlank; // start of file counts as blank
63
+ const next = lines[i + 1];
64
+ const blankAfter = !next || next.afterBlank; // end of file counts as blank
65
+ if (!blankBefore || !blankAfter) {
66
+ const at = blankBefore ? lines[i] : lines[start];
67
+ diagnostics.error('lex.comment-blank-lines', 'A `##` comment must have a blank line before and after it.', (0, span_js_1.spanOf)(at.lineNo, 1, at.raw.length));
68
+ }
69
+ i++;
70
+ }
71
+ }
44
72
  function tokenizeLine(raw, lineNo, start, diagnostics) {
45
73
  const tokens = [];
46
74
  let pos = start;
@@ -57,11 +85,11 @@ function tokenizeLine(raw, lineNo, start, diagnostics) {
57
85
  // A lone quote is prose punctuation (multi-line dialogue in prose
58
86
  // blocks, e.g. design.md §3.3 PA announcements). Positions that
59
87
  // REQUIRE a string (header, hatch paths) diagnose at parse time.
60
- tokens.push({ kind: 'punct', text: ch, span: (0, span_1.spanOf)(lineNo, column) });
88
+ tokens.push({ kind: 'punct', text: ch, span: (0, span_js_1.spanOf)(lineNo, column) });
61
89
  pos++;
62
90
  }
63
91
  else {
64
- tokens.push({ kind: 'string', text: raw.slice(pos + 1, close), span: (0, span_1.spanOf)(lineNo, column, close - pos + 1) });
92
+ tokens.push({ kind: 'string', text: raw.slice(pos + 1, close), span: (0, span_js_1.spanOf)(lineNo, column, close - pos + 1) });
65
93
  pos = close + 1;
66
94
  }
67
95
  continue;
@@ -69,18 +97,18 @@ function tokenizeLine(raw, lineNo, start, diagnostics) {
69
97
  const rest = raw.slice(pos);
70
98
  const word = WORD_RE.exec(rest);
71
99
  if (word) {
72
- tokens.push({ kind: 'word', text: word[0], span: (0, span_1.spanOf)(lineNo, column, word[0].length) });
100
+ tokens.push({ kind: 'word', text: word[0], span: (0, span_js_1.spanOf)(lineNo, column, word[0].length) });
73
101
  pos += word[0].length;
74
102
  continue;
75
103
  }
76
104
  const num = NUMBER_RE.exec(rest);
77
105
  if (num) {
78
- tokens.push({ kind: 'number', text: num[0], span: (0, span_1.spanOf)(lineNo, column, num[0].length) });
106
+ tokens.push({ kind: 'number', text: num[0], span: (0, span_js_1.spanOf)(lineNo, column, num[0].length) });
79
107
  pos += num[0].length;
80
108
  continue;
81
109
  }
82
- const single = { ':': 'colon', ',': 'comma', '(': 'lparen', ')': 'rparen' };
83
- tokens.push({ kind: single[ch] ?? 'punct', text: ch, span: (0, span_1.spanOf)(lineNo, column) });
110
+ const single = { ':': 'colon', ',': 'comma', '(': 'lparen', ')': 'rparen', '[': 'lbracket', ']': 'rbracket', '{': 'lbrace', '}': 'rbrace' };
111
+ tokens.push({ kind: single[ch] ?? 'punct', text: ch, span: (0, span_js_1.spanOf)(lineNo, column) });
84
112
  pos++;
85
113
  }
86
114
  return tokens;
package/lexer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lexer.js","sourceRoot":"","sources":["../../../repos/sharpee_v2/packages/chord/src/lexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lexer.js","sourceRoot":"","sources":["../../../repos/sharpee_v2/packages/chord/src/lexer.ts"],"names":[],"mappings":"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"}