@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
package/src/webmcp/project.js
CHANGED
|
@@ -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
|
|
99
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
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
|
-
|
|
128
|
-
|
|
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 ===
|
|
131
|
-
|
|
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
|
-
|
|
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'
|
|
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,
|
|
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
|
|
12
|
-
*
|
|
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,
|
|
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
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
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,
|
|
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":"AA6EA;;;;;;;GAOG;AACH,iCAHW,MAAM,GACJ,MAAM,CAWlB;AAED
|
|
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;
|
|
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"}
|