@json-layout/core 2.9.0 → 2.9.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@json-layout/core",
3
- "version": "2.9.0",
3
+ "version": "2.9.1",
4
4
  "description": "Compilation and state management utilities for JSON Layout.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -95,15 +95,20 @@ export function helpToText (html) {
95
95
  }
96
96
 
97
97
  /**
98
- * Which nodes are currently rendered, by path. A node hidden by an `if` condition stays
99
- * in the tree as comp "none", so what a write changes is visibility rather than the set
100
- * of paths — comparing paths alone would report nothing.
98
+ * Which nodes are currently rendered, by path. A node hidden by a layout `if` stays in
99
+ * the tree as comp "none", so what a write changes there is visibility rather than the
100
+ * set of paths — comparing paths alone would report nothing. A node governed by a schema
101
+ * if/then is the other way round: it is absent until the condition holds, so the set of
102
+ * paths is all there is to compare. Recording both facts lets one diff serve both.
101
103
  * @param {import('../state/types.js').StateNode} node
102
- * @param {Map<string, string>} [into]
103
- * @returns {Map<string, string>}
104
+ * @param {Map<string, {comp: string, owns: boolean}>} [into]
105
+ * @returns {Map<string, {comp: string, owns: boolean}>}
104
106
  */
105
107
  export function visibilitySnapshot (node, into = new Map()) {
106
- if (node.fullKey !== undefined) into.set(node.fullKey, node.layout?.comp)
108
+ // `owns` separates a field from the wrappers around it. A condition turning true brings
109
+ // its `$then` section along with the fields inside it, and naming the section among the
110
+ // things that "became available" would point the agent at a path it cannot write.
111
+ if (node.fullKey !== undefined) into.set(node.fullKey, { comp: node.layout?.comp, owns: node.dataPath !== node.parentDataPath })
107
112
  for (const child of node.children ?? []) visibilitySnapshot(child, into)
108
113
  return into
109
114
  }
@@ -111,24 +116,40 @@ export function visibilitySnapshot (node, into = new Map()) {
111
116
  /**
112
117
  * What a write turned visible or invisible.
113
118
  *
114
- * Only paths present in both snapshots count. Activating a variant replaces one branch
115
- * with another, so its nodes are new paths rather than nodes that changed visibility
116
- * setFieldValue already lists the activated branch, and counting them here would print
117
- * the same subtree twice.
118
- * @param {Map<string, string>} before
119
- * @param {Map<string, string>} after
119
+ * A field can arrive two ways: a layout `if` toggles a node that already exists between
120
+ * comp "none" and its real component, while a schema-level if/then has no node at all
121
+ * until the condition holds and then creates one. Both are the same event to an agent —
122
+ * something it must now fill that it could not before — so both count.
123
+ *
124
+ * `activated` is the variant selector a write just switched, if any. Activating a variant
125
+ * replaces a whole branch, and setFieldValue already lists the branch it activated;
126
+ * counting those nodes here too would print the same subtree twice.
127
+ * @param {Map<string, {comp: string, owns: boolean}>} before
128
+ * @param {Map<string, {comp: string, owns: boolean}>} after
129
+ * @param {string} [activated] - fullKey of a variant selector whose subtree is reported elsewhere
120
130
  * @returns {{ revealed: string[], hidden: string[] }}
121
131
  */
122
- export function diffVisibility (before, after) {
132
+ export function diffVisibility (before, after, activated) {
123
133
  /** @type {string[]} */
124
134
  const revealed = []
125
135
  /** @type {string[]} */
126
136
  const hidden = []
127
- for (const [path, comp] of after) {
128
- if (!before.has(path)) continue
137
+ /** @param {string} path */
138
+ const reportedElsewhere = (path) => activated !== undefined && (path === activated || path.startsWith(activated + '/'))
139
+ for (const [path, node] of after) {
140
+ if (reportedElsewhere(path)) continue
129
141
  const was = before.get(path)
130
- if (was === 'none' && comp !== 'none') revealed.push(path)
131
- else if (was !== 'none' && comp === 'none') hidden.push(path)
142
+ if (was === undefined) {
143
+ if (node.comp !== 'none' && node.owns) revealed.push(path)
144
+ } else if (was.comp === 'none' && node.comp !== 'none') revealed.push(path)
145
+ else if (was.comp !== 'none' && node.comp === 'none') hidden.push(path)
146
+ }
147
+ // A condition turning false takes its subtree away entirely rather than hiding it. That
148
+ // is worth one line: an agent holding a path from an earlier describeState would
149
+ // otherwise keep trying to write somewhere that no longer exists.
150
+ for (const [path, node] of before) {
151
+ if (after.has(path) || reportedElsewhere(path)) continue
152
+ if (node.comp !== 'none' && node.owns) hidden.push(path)
132
153
  }
133
154
  return { revealed, hidden }
134
155
  }
@@ -441,16 +462,25 @@ export function projectNodeToMarkdown (node, statefulLayout, depth = 0, errorsBy
441
462
  // variants list
442
463
  if (node.layout.comp === 'one-of-select' && Array.isArray(layout.oneOfItems)) {
443
464
  const variants = layout.oneOfItems.filter((item) => !item.header)
465
+ // Which branch is live was only ever implied, by the index in the path of the section
466
+ // printed underneath. That reads as "a branch exists" rather than "this one is
467
+ // active", and an agent that cannot tell the two apart cannot tell a switch that
468
+ // worked from one that did nothing — which is the whole question it asks a variant
469
+ // selector. The activated branch is always this node's first child.
470
+ const activeKey = node.children?.[0]?.key
444
471
  const listedAt = variantsMemo?.listedAt(node.skeleton.pointer)
445
472
  if (listedAt === undefined) {
446
473
  variantsMemo?.record(node.skeleton.pointer, path)
447
474
  for (const v of variants) {
448
- lines.push(`${indent} - variant ${v.key}: ${v.title}`)
475
+ lines.push(`${indent} - variant ${v.key}: ${v.title}${v.key === activeKey ? ' (active)' : ''}`)
449
476
  }
450
477
  } else {
451
478
  // a recursive schema reaches the same union at many paths; the list is a constant,
452
- // so name where it was given rather than repeat it
453
- lines.push(`${indent} - ${variants.length} variants, the same list already given for ${listedAt} — call describeState on ${path} to see them again`)
479
+ // so name where it was given rather than repeat it — but which branch is active is
480
+ // this node's own, so it still has to be said here
481
+ const active = variants.find((v) => v.key === activeKey)
482
+ const activeLabel = active ? ` (variant ${active.key}: ${active.title} active)` : ''
483
+ lines.push(`${indent} - ${variants.length} variants${activeLabel}, the same list already given for ${listedAt} — call describeState on ${path} to see them again`)
454
484
  }
455
485
  }
456
486
 
@@ -622,6 +652,35 @@ function dataPointerOf (error) {
622
652
  return original?.instancePath ?? ''
623
653
  }
624
654
 
655
+ /**
656
+ * Whether an error belongs to a branch of a union the form is actually showing.
657
+ *
658
+ * ajv validates every branch of a `oneOf` and reports the failures of all of them, so
659
+ * while the chosen branch is still incomplete the losing branches complain too. Those
660
+ * complaints name properties of a shape that was not chosen: there is no node for them,
661
+ * no way to write them and no way to clear them. The state tree already draws this line —
662
+ * it matches an error to a node by schema pointer, so only the active branch's errors
663
+ * ever land on one — and this keeps the raw list that is appended afterwards to the same
664
+ * line rather than undoing the work.
665
+ *
666
+ * The test is per `oneOf` crossed on the way down, not on the error's path as a whole: an
667
+ * error below an unhydrated list item has no node either, and that one must survive.
668
+ * @param {any} error
669
+ * @param {Set<string>} renderedPointers - skeleton pointers of the nodes the form has built
670
+ * @returns {boolean}
671
+ */
672
+ function isRenderedBranch (error, renderedPointers) {
673
+ for (const schemaPath of [error?.schemaPath, error?.params?.errors?.[0]?.schemaPath]) {
674
+ if (typeof schemaPath !== 'string') continue
675
+ const branches = /\/oneOf\/\d+/g
676
+ let match
677
+ while ((match = branches.exec(schemaPath)) !== null) {
678
+ if (!renderedPointers.has(schemaPath.slice(0, match.index + match[0].length))) return false
679
+ }
680
+ }
681
+ return true
682
+ }
683
+
625
684
  /**
626
685
  * Errors of the whole form, each named by the location it actually applies to.
627
686
  *
@@ -639,9 +698,12 @@ function dataPointerOf (error) {
639
698
  export function collectErrors (statefulLayout) {
640
699
  /** @type {Array<{fullKey: string, dataPath: string, message: string}>} */
641
700
  const nodeErrors = []
701
+ /** @type {Set<string>} */
702
+ const renderedPointers = new Set()
642
703
  /** @param {import('../state/types.js').StateNode} node */
643
704
  const recurse = (node) => {
644
705
  if (node.error) nodeErrors.push({ fullKey: node.fullKey, dataPath: node.dataPath, message: node.error })
706
+ if (node.skeleton?.pointer) renderedPointers.add(node.skeleton.pointer)
645
707
  // all children, not visibleChildren: in "menu"/"dialog" list edit modes the two
646
708
  // occurrences of an activated item do not carry the same errors, and deduplicating
647
709
  // here silently drops them (verified: 2 errors became 0).
@@ -651,6 +713,7 @@ export function collectErrors (statefulLayout) {
651
713
 
652
714
  const named = new Set(nodeErrors.map((e) => e.dataPath))
653
715
  const unnamed = statefulLayout.validationErrors
716
+ .filter((error) => isRenderedBranch(error, renderedPointers))
654
717
  .map((error) => ({ pointer: dataPointerOf(error), message: error.message ?? 'invalid' }))
655
718
  .filter((error) => !named.has(error.pointer))
656
719
 
@@ -31,6 +31,31 @@ export function getDescription (dataTitle) {
31
31
  return `Set the value of a specific field of "${dataTitle}" by path. To switch a variant selector, set value to the desired variant index (shown in describeState); the answer then lists the fields of the branch it activated. The returned errors are scoped to the modified field.`
32
32
  }
33
33
 
34
+ /**
35
+ * The variant index an agent meant, from either spelling of it. A tool call is JSON and a
36
+ * model writes 0 and "0" interchangeably; both name the same branch.
37
+ * @param {unknown} value
38
+ * @returns {number|undefined}
39
+ */
40
+ function variantIndex (value) {
41
+ if (typeof value === 'number') return Number.isInteger(value) ? value : undefined
42
+ if (typeof value === 'string' && /^\s*\d+\s*$/.test(value)) return Number(value)
43
+ return undefined
44
+ }
45
+
46
+ /**
47
+ * The branches a variant selector offers, as describeState lists them, so that refusing a
48
+ * call can name what to write instead of only what was wrong.
49
+ * @param {import('../../state/types.js').StateNode} node
50
+ * @returns {Array<{key: number, title: string}>|undefined}
51
+ */
52
+ function listVariants (node) {
53
+ const oneOfItems = /** @type {Array<{header?: boolean, key: number, title: string}>|undefined} */(
54
+ /** @type {Record<string, unknown>} */(node.layout).oneOfItems
55
+ )
56
+ return Array.isArray(oneOfItems) ? oneOfItems.filter((item) => !item.header) : undefined
57
+ }
58
+
34
59
  /**
35
60
  * @param {import('../../state/index.js').StatefulLayout} statefulLayout
36
61
  * @param {{ path: string, value?: unknown, suggestionIndex?: number }} args
@@ -64,9 +89,23 @@ export function execute (statefulLayout, args, store, variantsMemo) {
64
89
  const visibleBefore = visibilitySnapshot(statefulLayout.stateTree.root)
65
90
 
66
91
  let activating = false
67
- if (node.key === '$oneOf' && typeof value === 'number') {
92
+ if (node.key === '$oneOf') {
93
+ // A variant selector holds no data of its own — its value IS the object around it —
94
+ // so anything that is not an index does not land on the selector, it is merged into
95
+ // that object: the string "0" became {"0":"0"} beside the branch's own properties.
96
+ // The guard used to demand a number and let everything else through to that write,
97
+ // which reported no error and left the form valid. Models emit tool arguments as
98
+ // JSON and write an index as "0" at least as readily as 0, so the common spelling of
99
+ // a correct call was silently doing nothing at all — app-chloropleth-map's agent
100
+ // repeated it fifteen times, each answer as reassuring as the last.
101
+ const index = variantIndex(value)
102
+ const variants = listVariants(node)
103
+ if (index === undefined || (variants && !variants.some((v) => v.key === index))) {
104
+ const listed = variants?.map((v) => `variant ${v.key}: ${v.title}`).join(', ')
105
+ throw new Error(`"${args.path}" is a variant selector: its value is the index of the branch to activate${listed ? `, one of ${listed}` : ''}.`)
106
+ }
68
107
  activating = true
69
- statefulLayout.activateItem(node, value)
108
+ statefulLayout.activateItem(node, index)
70
109
  } else {
71
110
  statefulLayout.input(node, value)
72
111
  statefulLayout.blur(node)
@@ -80,7 +119,7 @@ export function execute (statefulLayout, args, store, variantsMemo) {
80
119
  // was written leaves the agent knowing a branch appeared but not what is in it. This
81
120
  // mirrors what editArray already does for an item it activates.
82
121
  const activated = activating ? (updatedNode || node).children?.[0] : undefined
83
- const visibility = diffVisibility(visibleBefore, visibilitySnapshot(statefulLayout.stateTree.root))
122
+ const visibility = diffVisibility(visibleBefore, visibilitySnapshot(statefulLayout.stateTree.root), activating ? args.path : undefined)
84
123
 
85
124
  return {
86
125
  valid: statefulLayout.valid,
@@ -8,26 +8,45 @@
8
8
  */
9
9
  export function helpToText(html: string): string;
10
10
  /**
11
- * Which nodes are currently rendered, by path. A node hidden by an `if` condition stays
12
- * in the tree as comp "none", so what a write changes is visibility rather than the set
13
- * of paths — comparing paths alone would report nothing.
11
+ * Which nodes are currently rendered, by path. A node hidden by a layout `if` stays in
12
+ * the tree as comp "none", so what a write changes there is visibility rather than the
13
+ * set of paths — comparing paths alone would report nothing. A node governed by a schema
14
+ * if/then is the other way round: it is absent until the condition holds, so the set of
15
+ * paths is all there is to compare. Recording both facts lets one diff serve both.
14
16
  * @param {import('../state/types.js').StateNode} node
15
- * @param {Map<string, string>} [into]
16
- * @returns {Map<string, string>}
17
- */
18
- export function visibilitySnapshot(node: import("../state/types.js").StateNode, into?: Map<string, string>): Map<string, string>;
17
+ * @param {Map<string, {comp: string, owns: boolean}>} [into]
18
+ * @returns {Map<string, {comp: string, owns: boolean}>}
19
+ */
20
+ export function visibilitySnapshot(node: import("../state/types.js").StateNode, into?: Map<string, {
21
+ comp: string;
22
+ owns: boolean;
23
+ }>): Map<string, {
24
+ comp: string;
25
+ owns: boolean;
26
+ }>;
19
27
  /**
20
28
  * What a write turned visible or invisible.
21
29
  *
22
- * Only paths present in both snapshots count. Activating a variant replaces one branch
23
- * with another, so its nodes are new paths rather than nodes that changed visibility
24
- * setFieldValue already lists the activated branch, and counting them here would print
25
- * the same subtree twice.
26
- * @param {Map<string, string>} before
27
- * @param {Map<string, string>} after
30
+ * A field can arrive two ways: a layout `if` toggles a node that already exists between
31
+ * comp "none" and its real component, while a schema-level if/then has no node at all
32
+ * until the condition holds and then creates one. Both are the same event to an agent —
33
+ * something it must now fill that it could not before — so both count.
34
+ *
35
+ * `activated` is the variant selector a write just switched, if any. Activating a variant
36
+ * replaces a whole branch, and setFieldValue already lists the branch it activated;
37
+ * counting those nodes here too would print the same subtree twice.
38
+ * @param {Map<string, {comp: string, owns: boolean}>} before
39
+ * @param {Map<string, {comp: string, owns: boolean}>} after
40
+ * @param {string} [activated] - fullKey of a variant selector whose subtree is reported elsewhere
28
41
  * @returns {{ revealed: string[], hidden: string[] }}
29
42
  */
30
- export function diffVisibility(before: Map<string, string>, after: Map<string, string>): {
43
+ export function diffVisibility(before: Map<string, {
44
+ comp: string;
45
+ owns: boolean;
46
+ }>, after: Map<string, {
47
+ comp: string;
48
+ owns: boolean;
49
+ }>, activated?: string): {
31
50
  revealed: string[];
32
51
  hidden: string[];
33
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/webmcp/project.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/webmcp/project.js"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"set-field-value.d.ts","sourceRoot":"","sources":["../../../src/webmcp/tools/set-field-value.js"],"names":[],"mappings":"AAyBA;;;GAGG;AACH,0CAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;;;GAOG;AACH,wCAPW,OAAO,sBAAsB,EAAE,cAAc,QAC7C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,UAC3D,OAAO,yBAAyB,EAAE,gBAAgB,iBAClD,OAAO,qBAAqB,EAAE,YAAY,GAExC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAAE,CAqDpO;;;;;;;;;;;;;;;;;;;;;;mCAxFkH,eAAe"}
1
+ {"version":3,"file":"set-field-value.d.ts","sourceRoot":"","sources":["../../../src/webmcp/tools/set-field-value.js"],"names":[],"mappings":"AAyBA;;;GAGG;AACH,0CAHW,MAAM,GACJ,MAAM,CAIlB;AA2BD;;;;;;;GAOG;AACH,wCAPW,OAAO,sBAAsB,EAAE,cAAc,QAC7C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,UAC3D,OAAO,yBAAyB,EAAE,gBAAgB,iBAClD,OAAO,qBAAqB,EAAE,YAAY,GAExC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAAE,CAmEpO;;;;;;;;;;;;;;;;;;;;;;mCA/HkH,eAAe"}