schematex 0.9.9 → 0.9.10

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.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkEUN6FEGE_cjs = require('../chunk-EUN6FEGE.cjs');
3
+ var chunkCA54ESRT_cjs = require('../chunk-CA54ESRT.cjs');
4
4
  require('../chunk-OY2CXLVY.cjs');
5
5
  require('../chunk-UHRNFBWY.cjs');
6
6
  require('../chunk-TXWVJAMR.cjs');
@@ -31,7 +31,7 @@ var schematexTools = {
31
31
  listDiagrams: ai.tool({
32
32
  description: "List every Schematex diagram type with a tagline, 'use when' hint, domain cluster, and authoritative standard. Call this first to discover what's available.",
33
33
  inputSchema: zod.z.object({}),
34
- execute: async () => chunkEUN6FEGE_cjs.listDiagrams()
34
+ execute: async () => chunkCA54ESRT_cjs.listDiagrams()
35
35
  }),
36
36
  getSyntax: ai.tool({
37
37
  description: "Return syntax for one diagram type. Default `detail: canonical` is the compact first-shot generation path: canonical header, preferred forms, rules, and repair checks. Request `detail: reference` only for advanced forms or imported adapters after choosing a type.",
@@ -46,7 +46,7 @@ var schematexTools = {
46
46
  execute: async ({
47
47
  type,
48
48
  detail
49
- }) => chunkEUN6FEGE_cjs.getSyntax(type, { detail })
49
+ }) => chunkCA54ESRT_cjs.getSyntax(type, { detail })
50
50
  }),
51
51
  getExamples: ai.tool({
52
52
  description: "Return curated real-world DSL examples for a diagram type, each with scenario notes and tags. Use as few-shot context before generating DSL.",
@@ -56,7 +56,7 @@ var schematexTools = {
56
56
  preferFeatured: zod.z.boolean().optional().describe("Rank featured examples first."),
57
57
  maxComplexity: zod.z.number().int().min(1).max(5).optional().describe("Only return examples with complexity <= this value (1=simplest).")
58
58
  }),
59
- execute: async (args) => chunkEUN6FEGE_cjs.getExamples(args.type, {
59
+ execute: async (args) => chunkCA54ESRT_cjs.getExamples(args.type, {
60
60
  limit: args.limit,
61
61
  preferFeatured: args.preferFeatured,
62
62
  maxComplexity: args.maxComplexity
@@ -70,7 +70,7 @@ var schematexTools = {
70
70
  ),
71
71
  dsl: zod.z.string().describe("The DSL source text to validate.")
72
72
  }),
73
- execute: async ({ type, dsl }) => chunkEUN6FEGE_cjs.validateDsl(type, dsl)
73
+ execute: async ({ type, dsl }) => chunkCA54ESRT_cjs.validateDsl(type, dsl)
74
74
  }),
75
75
  renderDsl: ai.tool({
76
76
  description: "Render Schematex DSL to an SVG string. Returns { ok: true, svg } or { ok: false, errors }. Use when the caller needs the actual diagram output, not just validation.",
@@ -85,7 +85,7 @@ var schematexTools = {
85
85
  dsl,
86
86
  theme,
87
87
  padding
88
- }) => chunkEUN6FEGE_cjs.renderDsl(type, dsl, { theme, padding })
88
+ }) => chunkCA54ESRT_cjs.renderDsl(type, dsl, { theme, padding })
89
89
  })
90
90
  };
91
91
 
@@ -7,13 +7,13 @@ declare const schematexTools: {
7
7
  readonly listDiagrams: ai.Tool<{}, DiagramListItem[]>;
8
8
  readonly getSyntax: ai.Tool<{
9
9
  type: string;
10
- detail?: "reference" | "canonical" | undefined;
10
+ detail?: "canonical" | "reference" | undefined;
11
11
  }, GetSyntaxResult>;
12
12
  readonly getExamples: ai.Tool<{
13
13
  type: string;
14
14
  limit?: number | undefined;
15
- maxComplexity?: number | undefined;
16
15
  preferFeatured?: boolean | undefined;
16
+ maxComplexity?: number | undefined;
17
17
  }, GetExamplesResult>;
18
18
  readonly validateDsl: ai.Tool<{
19
19
  dsl: string;
@@ -7,13 +7,13 @@ declare const schematexTools: {
7
7
  readonly listDiagrams: ai.Tool<{}, DiagramListItem[]>;
8
8
  readonly getSyntax: ai.Tool<{
9
9
  type: string;
10
- detail?: "reference" | "canonical" | undefined;
10
+ detail?: "canonical" | "reference" | undefined;
11
11
  }, GetSyntaxResult>;
12
12
  readonly getExamples: ai.Tool<{
13
13
  type: string;
14
14
  limit?: number | undefined;
15
- maxComplexity?: number | undefined;
16
15
  preferFeatured?: boolean | undefined;
16
+ maxComplexity?: number | undefined;
17
17
  }, GetExamplesResult>;
18
18
  readonly validateDsl: ai.Tool<{
19
19
  dsl: string;
package/dist/ai/ai-sdk.js CHANGED
@@ -1,4 +1,4 @@
1
- import { renderDsl, validateDsl, getExamples, getSyntax, listDiagrams } from '../chunk-RCR4UGKV.js';
1
+ import { renderDsl, validateDsl, getExamples, getSyntax, listDiagrams } from '../chunk-CXA45HIT.js';
2
2
  import '../chunk-T5QOVX2I.js';
3
3
  import '../chunk-EB7T5SEO.js';
4
4
  import '../chunk-IHX6J4HF.js';
package/dist/ai/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkEUN6FEGE_cjs = require('../chunk-EUN6FEGE.cjs');
3
+ var chunkCA54ESRT_cjs = require('../chunk-CA54ESRT.cjs');
4
4
  require('../chunk-OY2CXLVY.cjs');
5
5
  require('../chunk-UHRNFBWY.cjs');
6
6
  require('../chunk-TXWVJAMR.cjs');
@@ -27,10 +27,10 @@ require('../chunk-3WNW5Y7P.cjs');
27
27
 
28
28
  // src/ai/prompt-context.ts
29
29
  function buildPromptContext(type, opts = {}) {
30
- const resolved = chunkEUN6FEGE_cjs.resolveDiagramType(type) ?? type;
30
+ const resolved = chunkCA54ESRT_cjs.resolveDiagramType(type) ?? type;
31
31
  const detail = opts.detail ?? "canonical";
32
32
  const limit = opts.examples ?? 2;
33
- const { type: canonical, name, standard, syntax } = chunkEUN6FEGE_cjs.getSyntax(resolved, {
33
+ const { type: canonical, name, standard, syntax } = chunkCA54ESRT_cjs.getSyntax(resolved, {
34
34
  detail
35
35
  });
36
36
  const parts = [
@@ -41,7 +41,7 @@ function buildPromptContext(type, opts = {}) {
41
41
  ];
42
42
  let exampleCount = 0;
43
43
  if (limit > 0) {
44
- const examples = chunkEUN6FEGE_cjs.getExamples(canonical, {
44
+ const examples = chunkCA54ESRT_cjs.getExamples(canonical, {
45
45
  preferFeatured: opts.preferFeatured ?? true,
46
46
  limit,
47
47
  maxComplexity: opts.maxComplexity
@@ -67,47 +67,47 @@ function buildPromptContext(type, opts = {}) {
67
67
 
68
68
  Object.defineProperty(exports, "DIAGRAM_REGISTRY", {
69
69
  enumerable: true,
70
- get: function () { return chunkEUN6FEGE_cjs.DIAGRAM_REGISTRY; }
70
+ get: function () { return chunkCA54ESRT_cjs.DIAGRAM_REGISTRY; }
71
71
  });
72
72
  Object.defineProperty(exports, "DIAGRAM_SINCE", {
73
73
  enumerable: true,
74
- get: function () { return chunkEUN6FEGE_cjs.DIAGRAM_SINCE; }
74
+ get: function () { return chunkCA54ESRT_cjs.DIAGRAM_SINCE; }
75
75
  });
76
76
  Object.defineProperty(exports, "getAllDiagramTypes", {
77
77
  enumerable: true,
78
- get: function () { return chunkEUN6FEGE_cjs.getAllDiagramTypes; }
78
+ get: function () { return chunkCA54ESRT_cjs.getAllDiagramTypes; }
79
79
  });
80
80
  Object.defineProperty(exports, "getDiagramMeta", {
81
81
  enumerable: true,
82
- get: function () { return chunkEUN6FEGE_cjs.getDiagramMeta; }
82
+ get: function () { return chunkCA54ESRT_cjs.getDiagramMeta; }
83
83
  });
84
84
  Object.defineProperty(exports, "getDiagramSince", {
85
85
  enumerable: true,
86
- get: function () { return chunkEUN6FEGE_cjs.getDiagramSince; }
86
+ get: function () { return chunkCA54ESRT_cjs.getDiagramSince; }
87
87
  });
88
88
  Object.defineProperty(exports, "getExamples", {
89
89
  enumerable: true,
90
- get: function () { return chunkEUN6FEGE_cjs.getExamples; }
90
+ get: function () { return chunkCA54ESRT_cjs.getExamples; }
91
91
  });
92
92
  Object.defineProperty(exports, "getSyntax", {
93
93
  enumerable: true,
94
- get: function () { return chunkEUN6FEGE_cjs.getSyntax; }
94
+ get: function () { return chunkCA54ESRT_cjs.getSyntax; }
95
95
  });
96
96
  Object.defineProperty(exports, "listDiagrams", {
97
97
  enumerable: true,
98
- get: function () { return chunkEUN6FEGE_cjs.listDiagrams; }
98
+ get: function () { return chunkCA54ESRT_cjs.listDiagrams; }
99
99
  });
100
100
  Object.defineProperty(exports, "renderDsl", {
101
101
  enumerable: true,
102
- get: function () { return chunkEUN6FEGE_cjs.renderDsl; }
102
+ get: function () { return chunkCA54ESRT_cjs.renderDsl; }
103
103
  });
104
104
  Object.defineProperty(exports, "resolveDiagramType", {
105
105
  enumerable: true,
106
- get: function () { return chunkEUN6FEGE_cjs.resolveDiagramType; }
106
+ get: function () { return chunkCA54ESRT_cjs.resolveDiagramType; }
107
107
  });
108
108
  Object.defineProperty(exports, "validateDsl", {
109
109
  enumerable: true,
110
- get: function () { return chunkEUN6FEGE_cjs.validateDsl; }
110
+ get: function () { return chunkCA54ESRT_cjs.validateDsl; }
111
111
  });
112
112
  exports.buildPromptContext = buildPromptContext;
113
113
  //# sourceMappingURL=index.cjs.map
package/dist/ai/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { resolveDiagramType, getSyntax, getExamples } from '../chunk-RCR4UGKV.js';
2
- export { DIAGRAM_REGISTRY, DIAGRAM_SINCE, getAllDiagramTypes, getDiagramMeta, getDiagramSince, getExamples, getSyntax, listDiagrams, renderDsl, resolveDiagramType, validateDsl } from '../chunk-RCR4UGKV.js';
1
+ import { resolveDiagramType, getSyntax, getExamples } from '../chunk-CXA45HIT.js';
2
+ export { DIAGRAM_REGISTRY, DIAGRAM_SINCE, getAllDiagramTypes, getDiagramMeta, getDiagramSince, getExamples, getSyntax, listDiagrams, renderDsl, resolveDiagramType, validateDsl } from '../chunk-CXA45HIT.js';
3
3
  import '../chunk-T5QOVX2I.js';
4
4
  import '../chunk-EB7T5SEO.js';
5
5
  import '../chunk-IHX6J4HF.js';
@@ -2039,7 +2039,7 @@ If the LED doesn't light up, three things to check, in order: LED polarity (the
2039
2039
  "seating-chart"
2040
2040
  ],
2041
2041
  "complexity": 3,
2042
- "featured": false,
2042
+ "featured": true,
2043
2043
  "dsl": 'floorplan "Wedding Seating Chart" unit m\nroom hall "Grand Ballroom" at 0,0 size 17x13 nolabel\ndoor hall south at 50% width 1.8\nfurniture head-table "Head Table" in hall at 5.5,0.6 size 6x0.9 seats "Bride" "Groom" "Mom" "Dad" "MOH" "Best Man"\nfurniture round-table-8 "Table 1" in hall at 1,3.6 seats "Alice" "Bob" "Carol" "Dave" "Eve" "Frank" "Grace" "Heidi"\nfurniture round-table-8 "Table 2" in hall at 7,3.6 seats "Ivan" "Judy" "Mallory" "Niaj" "Olivia" "Peggy"\nfurniture round-table-8 "Table 3" in hall at 13,3.6 seats "\u5F20\u4F1F" "\u674E\u5A1C" "\u738B\u82B3" "\u5218\u6D0B"\nfurniture round-table-8 "Table 4" in hall at 1,8.4 seats "Quinn" "Rupert" "Sybil" "Trent" "Uma" "Vera"\nfurniture round-table-8 "Table 5" in hall at 7,8.4 seats "Walt" "Xena" "Yuki" "Zane"\nfurniture dance-floor "Dance Floor" in hall at 12,8 size 4.5x4.5',
2044
2044
  "notes": '## What this shows\n\nEach table is an individual `furniture` statement with a `seats "\u2026"` clause, so the engine writes guest names onto the chairs in seating order \u2014 round tables clockwise from the top, the head table along its single facing edge. That is the difference between a *venue plan* (where the tables go) and a *seating chart* (who sits where), which is the deliverable guests actually read off the easel.\n\nNames map to chairs one-for-one: **Table 3** lists four guests on an eight-chair round, so four chairs are named and four stay empty \u2014 no error. CJK names (`\u5F20\u4F1F`, `\u674E\u5A1C`) are quoted like any label. Because names render horizontally, the tables are left unrotated.'
2045
2045
  },
@@ -2664,7 +2664,7 @@ If the LED doesn't light up, three things to check, in order: LED polarity (the
2664
2664
  "biology"
2665
2665
  ],
2666
2666
  "complexity": 1,
2667
- "featured": false,
2667
+ "featured": true,
2668
2668
  "dsl": 'matrix punnett "Eye color (Bb \xD7 Bb)"\ncross: Bb x Bb\ntrait B: "Brown eyes" / "Blue eyes"',
2669
2669
  "notes": "## What this shows\n\nThe **monohybrid cross** is where every genetics course starts: one gene, two heterozygous parents. Here both parents are `Bb` for eye colour \u2014 `B` (brown) is dominant, `b` (blue) recessive. You write only the cross; the engine does the Mendelian bookkeeping.\n\nEach `Bb` parent makes two gametes, `B` and `b`, so the grid is 2\xD72. The engine fills it \u2014 `BB`, `Bb`, `Bb`, `bb` \u2014 and computes the two ratios every student memorises: a **3:1 phenotype ratio** (3 brown-eyed : 1 blue-eyed) and a **1:2:1 genotype ratio** (1 `BB` : 2 `Bb` : 1 `bb`). The single recessive `bb` box is tinted apart from the three dominant boxes, and the `trait` line names the phenotypes so the legend reads in plain English. Allele case sets dominance \u2014 uppercase is dominant \u2014 so the notation is exactly what a textbook uses."
2670
2670
  },
@@ -2701,7 +2701,7 @@ If the LED doesn't light up, three things to check, in order: LED polarity (the
2701
2701
  "voice-of-customer"
2702
2702
  ],
2703
2703
  "complexity": 3,
2704
- "featured": false,
2704
+ "featured": true,
2705
2705
  "dsl": 'matrix qfd "Coffee maker"\nwhat: "Quiet operation" weight: 5\nwhat: "Brews fast" weight: 3\nwhat: "Energy efficient" weight: 4\nhow: "Fan RPM" dir: down\nhow: "Heater watts" dir: up\nhow: "Insulation" dir: up\nrel (0,0): 9\nrel (0,2): 3\nrel (1,1): 9\nrel (2,1): 3\nrel (2,2): 9\nroof (0,1): --\nroof (1,2): +',
2706
2706
  "notes": "## What this shows\n\nThe **House of Quality** \u2014 the core matrix of Akao's Quality Function Deployment \u2014 translates what customers want into the engineering characteristics that deliver it. Customer requirements (**WHATs**) are the rows, each with an importance weight; engineering characteristics (**HOWs**) are the columns; the body cells record how strongly each HOW serves each WHAT on the 9 / 3 / 1 strong-medium-weak scale.\n\nThe differentiator is the computed row at the foot of the house: each column's **technical importance** is the sum of `weight \xD7 strength` down that column, here **45 / 39 / 51** \u2014 so Insulation (51) is the highest-leverage characteristic to invest in and Heater watts (39) the lowest. (Add `normalize: true` to read these as 33% / 29% / 38% instead.) Above the columns, the **roof** is a half-matrix of diamond cells recording HOW-to-HOW correlations: `roof (0,1): --` flags that lowering Fan RPM while raising Heater watts is a trade-off, while `roof (1,2): +` flags that Heater watts and Insulation reinforce each other."
2707
2707
  },
@@ -2719,7 +2719,7 @@ If the LED doesn't light up, three things to check, in order: LED polarity (the
2719
2719
  "process-scoping"
2720
2720
  ],
2721
2721
  "complexity": 2,
2722
- "featured": false,
2722
+ "featured": true,
2723
2723
  "dsl": 'matrix sipoc "Order fulfilment"\nsuppliers: "Vendor", "Warehouse"\ninputs: "PO", "Stock levels"\nprocess: "Receive order", "Pick", "Pack", "Ship"\noutputs: "Shipped package", "Invoice"\ncustomers: "End customer", "Finance"',
2724
2724
  "notes": "## What this shows\n\nA **SIPOC** is the first artifact a Six Sigma team builds in the *Define* phase of DMAIC. It names \u2014 in five columns read left to right \u2014 everyone and everything the process touches: **S**uppliers hand in **I**nputs, the **P**rocess turns them into **O**utputs, and **C**ustomers receive them. Here the order-fulfilment process runs `Receive order \u2192 Pick \u2192 Pack \u2192 Ship`, fed by purchase orders and stock levels from the vendor and warehouse, and producing a shipped package for the end customer and an invoice for finance.\n\nThe point of a SIPOC is boundary-setting before measurement: it forces the team to agree where the process starts, where it ends, and who hands work in and out of it. The five columns always render in canonical S-I-P-O-C order, so the diagram reads correctly even when the blocks are authored out of sequence."
2725
2725
  },
@@ -4937,7 +4937,7 @@ var PROFILES = {
4937
4937
  type: "timing",
4938
4938
  header: 'timing "Title"',
4939
4939
  mode: "WaveDrom signals, with clock/run-length shorthands",
4940
- keywords: 'timing "title" [hscale: N] \xB7 SIGNAME: wave_spec \xB7 wave chars 0 1 x z = . u d p P n N h H l L 2-9 \xB7 clock N [neg] \xB7 rle <state>*<count> \u2026 \xB7 data: ["a","b"] for = and digit segments \xB7 [GroupName] or group "name" { \u2026 } \xB7 --- spacer \xB7 phase: FLOAT (0.0\u20131.0)',
4940
+ keywords: 'timing "title" [hscale: N] \xB7 SIGNAME: wave_spec \xB7 wave chars 0 1 x z = . u d p P n N h H l L 2-9 \xB7 clock N [neg] \xB7 rle <state>*<count> \u2026 \xB7 data: ["a","b"] for = and digit segments \xB7 [GroupName] or group "name" { \u2026 } \xB7 --- spacer',
4941
4941
  forms: [
4942
4942
  'timing "Synchronous Bus Read"',
4943
4943
  "CLK: clock 8",
@@ -5289,7 +5289,7 @@ var PROFILES = {
5289
5289
  type: "matrix",
5290
5290
  header: 'matrix "Title"',
5291
5291
  mode: "quadrant scatter (default) | named templates | heatmap | sipoc | qfd | punnett",
5292
- keywords: 'header variants: matrix "Title" | matrix <template> "Title" | matrix heatmap NxM | matrix correlation | matrix sipoc | matrix qfd | matrix punnett \xB7 templates: eisenhower impact-effort rice bcg ansoff johari 9-box risk-matrix \xB7 quadrant: x-axis: Low -> High \xB7 y-axis: Low -> High \xB7 "Label" at (x,y) [size:N category:C shape:circle|square|triangle|diamond] \xB7 quadrant Q1..Q4 "name" \xB7 Q1:/"Q1: text" cell shortcuts \xB7 style: table \xB7 config: offChartPolicy=clamp-badge|drop bubbleScale=area|radius',
5292
+ keywords: 'header variants: matrix "Title" | matrix <template> "Title" | matrix heatmap NxM | matrix correlation | matrix sipoc | matrix qfd | matrix punnett \xB7 templates: eisenhower impact-effort rice bcg ansoff johari 9-box risk-matrix \xB7 quadrant: x-axis: Low -> High \xB7 y-axis: Low -> High \xB7 "Label" at (x,y) [size:N category:C shape:circle|square|triangle|diamond] \xB7 quadrant Q1..Q4 "name" \xB7 Q1:/"Q1: text" cell shortcuts \xB7 style: table \xB7 config: offChartPolicy=clamp-badge|drop bubbleScale=area|radius \xB7 QFD body (under `matrix qfd`): what: "Need" [weight: N] \xB7 how: "Spec" [dir: up|down|target] \xB7 rel (whatIdx, howIdx): 9|3|1 \xB7 roof (i, j): ++|+|-|-- \xB7 [normalize: percent] \u2014 engine computes the technical-importance row \xB7 SIPOC body (under `matrix sipoc`): suppliers:/inputs:/process:/outputs:/customers: "A", "B", \u2026 (each column one line) \xB7 Punnett body (under `matrix punnett`): cross: Bb x Bb (genotype pairs, separator x/\xD7/*) \xB7 trait B: "Brown" / "Blue" (dominant / recessive phenotype names) \u2014 engine computes the genotype + phenotype ratios',
5293
5293
  forms: [
5294
5294
  'matrix eisenhower "This Week"',
5295
5295
  "style: table",
@@ -5299,12 +5299,24 @@ var PROFILES = {
5299
5299
  "",
5300
5300
  'matrix bcg "Product Portfolio"',
5301
5301
  '"Platform SDK" at (0.8, 0.8) size: 5 category: star',
5302
- '"Legacy API" at (0.85, 0.15) size: 4 category: cashcow'
5302
+ '"Legacy API" at (0.85, 0.15) size: 4 category: cashcow',
5303
+ "",
5304
+ 'matrix qfd "House of Quality"',
5305
+ 'what: "Quiet operation" weight: 5',
5306
+ 'how: "Fan RPM" dir: down',
5307
+ "rel (1, 1): 9",
5308
+ "",
5309
+ 'matrix punnett "Monohybrid Cross"',
5310
+ "cross: Bb x Bb",
5311
+ 'trait B: "Brown" / "Blue"'
5303
5312
  ],
5304
5313
  prefer: [
5305
5314
  "Use a named template (`eisenhower`, `impact-effort`, `bcg`, `ansoff`, `johari`, `9-box`, `risk-matrix`, `rice`) for first-shot generation \u2014 it pre-fills axes and quadrant labels.",
5306
5315
  "Add `style: table` with `Q1:`/`Q2:`/`Q3:`/`Q4:` item lines for the four-cell list layout instead of a scatter.",
5307
- "Quadrant scatter coordinates are normalized `[0,1]` fractions; add `size: N` for a bubble chart and `category:` to drive legend color."
5316
+ "Quadrant scatter coordinates are normalized `[0,1]` fractions; add `size: N` for a bubble chart and `category:` to drive legend color.",
5317
+ 'For QFD / House of Quality, lead with the header `matrix qfd "\u2026"`, then list customer needs as `what: "\u2026" weight: N` and engineering specs as `how: "\u2026" dir: up|down`, then weight the cells with `rel (whatIdx, howIdx): 9|3|1` (1-based, in declaration order) \u2014 the engine computes the technical-importance row, so never type it yourself.',
5318
+ 'For SIPOC, header `matrix sipoc "\u2026"`, then one line per column: `suppliers:`, `inputs:`, `process:`, `outputs:`, `customers:`, each a comma-separated quoted list.',
5319
+ 'For a Punnett square, header `matrix punnett "\u2026"`, then `cross: <genotype> x <genotype>` (even-length allele pairs like `Bb` or `RrYy`) and optional `trait <Letter>: "Dominant" / "Recessive"` \u2014 the engine fills the grid and computes the genotype/phenotype ratios.'
5308
5320
  ],
5309
5321
  avoid: [
5310
5322
  "Don't mix `sipoc:`/`qfd:`/`punnett:` sub-keywords in plain quadrant mode \u2014 they activate only under the matching header mode (`matrix sipoc`).",
@@ -6337,7 +6349,7 @@ var PROFILES = {
6337
6349
  type: "floorplan",
6338
6350
  header: 'floorplan "Title" [unit m|ft]',
6339
6351
  mode: "explicit dimensions + relative room placement; furniture room-relative from each room's top-left",
6340
- keywords: 'room id "Label" at x,y | right-of/left-of/above/below ref [offset n] [align start|center|end] size WxH [fill #hex] [nolabel] \xB7 extend <room> at x,y | right-of ref size WxH (L/T/U rooms) \xB7 north [deg] \xB7 door <room> north|south|east|west | between A B at N% [width n] [hinge left|right] [swing in|out] [type single|double|sliding|pocket|bifold] \xB7 window <wallref> at N% [width n] [type fixed|sliding|casement|bay] \xB7 opening <wallref|between A B> at N% [width n] \xB7 furniture <type> in room at x,y [size WxH] [rotate deg] ["label"] \xB7 grid|row <type> in room rows R cols C [count N] area x1,y1 x2,y2 [itemsize WxH] \xB7 arc <type> in room count N center x,y radius r from deg to deg \xB7 types: bed-double/single/queen/king bunk-bed crib sofa loveseat sectional armchair ottoman coffee-table side-table tv tv-stand fireplace floor-lamp rug wardrobe dresser nightstand bookshelf plant piano piano-upright pool-table ceiling-fan dining-table counter wall-cabinet island kitchen-sink stove range-hood fridge dishwasher bar-stool toilet sink vanity bidet urinal bathtub shower washer dryer stairs stairs-l stairs-u spiral-stairs elevator column desk-chair desk desk-l chair whiteboard smartboard bookcase cubbies filing-cabinet lockers kidney-table round-table-4/6/8/10 conference-table banquet-table head-table stage dance-floor bar dj-booth cocktail-table podium row-chairs shelving checkout clothing-rack fitting-room pallet-rack loading-dock forklift salon-chair shampoo-bowl manicure-table treadmill weight-bench power-rack yoga-mat tree car',
6352
+ keywords: 'room id "Label" at x,y | right-of/left-of/above/below ref [offset n] [align start|center|end] size WxH [fill #hex] [nolabel] \xB7 extend <room> at x,y | right-of ref size WxH (L/T/U rooms) \xB7 north [deg] \xB7 door <room> north|south|east|west | between A B at N% [width n] [hinge left|right] [swing in|out] [type single|double|sliding|pocket|bifold] \xB7 window <wallref> at N% [width n] [type fixed|sliding|casement|bay] \xB7 opening <wallref|between A B> at N% [width n] \xB7 furniture <type> in room at x,y [size WxH] [rotate deg] ["label"] [seats "Name" "Name" \u2026] \xB7 grid|row <type> in room rows R cols C [count N] area x1,y1 x2,y2 [itemsize WxH] \xB7 arc <type> in room count N center x,y radius r from deg to deg \xB7 types: bed-double/single/queen/king bunk-bed crib sofa loveseat sectional armchair ottoman coffee-table side-table tv tv-stand fireplace floor-lamp rug wardrobe dresser nightstand bookshelf plant piano piano-upright pool-table ceiling-fan dining-table counter wall-cabinet island kitchen-sink stove range-hood fridge dishwasher bar-stool toilet sink vanity bidet urinal bathtub shower washer dryer stairs stairs-l stairs-u spiral-stairs elevator column desk-chair desk desk-l chair whiteboard smartboard bookcase cubbies filing-cabinet lockers kidney-table round-table-4/6/8/10 conference-table banquet-table head-table stage dance-floor bar dj-booth cocktail-table podium row-chairs shelving checkout clothing-rack fitting-room pallet-rack loading-dock forklift salon-chair shampoo-bowl manicure-table treadmill weight-bench power-rack yoga-mat tree car',
6341
6353
  forms: [
6342
6354
  'floorplan "Two-Bedroom Apartment" unit m',
6343
6355
  'room living "Living Room" at 0,0 size 5.2x4.2',
@@ -6353,6 +6365,7 @@ var PROFILES = {
6353
6365
  "Furniture `at x,y` is relative to its room's interior top-left corner, in the plan unit.",
6354
6366
  "Use `grid`/`row`/`arc` for repeated items (desks, banquet tables, ceremony chairs) instead of many `furniture` lines; `count` truncates row-major.",
6355
6367
  "Round tables auto-seat their chairs (round-table-8 = 8 chairs); dining/banquet/conference tables auto-seat both long edges; leave chair clearance \u2265 0.5 m around tables.",
6368
+ 'For a seating chart / plan de table / \u5E2D\u6B21\u8868 \u2014 who sits where, not just where the tables go \u2014 add `seats "Alice" "Bob" \u2026` to each table: the names are written onto the chairs in seating order (round tables clockwise from top, head/long tables along the seated edge). Fewer names than chairs is fine (extras stay empty); CJK names quote like any label.',
6356
6369
  "For L/T/U-shaped rooms, declare the main rectangle then `extend <room> at x,y size WxH` \u2014 the extension must share an edge; the engine merges walls and sums the area.",
6357
6370
  'Stairs are furniture: `furniture stairs in hall at x,y` (also stairs-l, stairs-u, spiral-stairs) \u2014 they draw treads, the UP arrow, and the cut-plane break line automatically; label "DN" for a descending run.',
6358
6371
  "Commercial & site symbols: retail uses shelving/checkout/clothing-rack/fitting-room; warehouse uses pallet-rack/loading-dock/forklift; salon uses salon-chair/shampoo-bowl/manicure-table; gym uses treadmill/weight-bench/power-rack/yoga-mat; `tree` and `car` are sized for site plans, landscaping, and parking stalls."
@@ -6573,5 +6586,5 @@ exports.listDiagrams = listDiagrams;
6573
6586
  exports.renderDsl = renderDsl;
6574
6587
  exports.resolveDiagramType = resolveDiagramType;
6575
6588
  exports.validateDsl = validateDsl;
6576
- //# sourceMappingURL=chunk-EUN6FEGE.cjs.map
6577
- //# sourceMappingURL=chunk-EUN6FEGE.cjs.map
6589
+ //# sourceMappingURL=chunk-CA54ESRT.cjs.map
6590
+ //# sourceMappingURL=chunk-CA54ESRT.cjs.map