@satelliteoflove/godot-mcp 3.15.0 → 3.16.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.
- package/addon/commands/runtime_state_commands.gd +2 -1
- package/addon/game_bridge/mcp_game_bridge.gd +6 -3
- package/addon/game_bridge/mcp_runtime_state_sampler.gd +172 -5
- package/addon/plugin.cfg +1 -1
- package/dist/__tests__/tools/runtime-state.test.js +247 -5
- package/dist/__tests__/tools/runtime-state.test.js.map +1 -1
- package/dist/tools/runtime-state.d.ts +34 -3
- package/dist/tools/runtime-state.d.ts.map +1 -1
- package/dist/tools/runtime-state.js +129 -17
- package/dist/tools/runtime-state.js.map +1 -1
- package/package.json +1 -1
|
@@ -28,7 +28,8 @@ func watch_start(params: Dictionary) -> Dictionary:
|
|
|
28
28
|
var specs: Array = params.get("specs", [])
|
|
29
29
|
var hz: int = params.get("hz", 20)
|
|
30
30
|
var duration_ms: int = params.get("duration_ms", 1000)
|
|
31
|
-
var
|
|
31
|
+
var sigs: Array = params.get("signals", [])
|
|
32
|
+
var result = await _send_and_wait("watch_start", [specs, hz, duration_ms, sigs])
|
|
32
33
|
if result == null:
|
|
33
34
|
return _last_error
|
|
34
35
|
if result is Dictionary:
|
|
@@ -1063,23 +1063,26 @@ func _handle_watch_start(data: Array) -> void:
|
|
|
1063
1063
|
var specs: Array = data[0] if data.size() > 0 else []
|
|
1064
1064
|
var hz: int = data[1] if data.size() > 1 else 20
|
|
1065
1065
|
var duration_ms: int = data[2] if data.size() > 2 else 1000
|
|
1066
|
-
var
|
|
1066
|
+
var signal_specs: Array = data[3] if data.size() > 3 else []
|
|
1067
|
+
var start_result := _sampler.start(specs, hz, duration_ms, signal_specs)
|
|
1067
1068
|
EngineDebugger.send_message("godot_mcp:game_response", ["watch_start", {
|
|
1068
1069
|
"started": true,
|
|
1069
1070
|
"resolved_fields": start_result.get("resolved_fields", 0),
|
|
1071
|
+
"connected_signals": start_result.get("connected_signals", 0),
|
|
1072
|
+
"unresolved_signals": start_result.get("unresolved_signals", []),
|
|
1070
1073
|
}])
|
|
1071
1074
|
|
|
1072
1075
|
|
|
1073
1076
|
func _handle_watch_collect() -> void:
|
|
1074
1077
|
if _sampler == null:
|
|
1075
|
-
EngineDebugger.send_message("godot_mcp:game_response", ["watch_collect", {"window_ms": 0, "sample_count": 0, "fields": {}}])
|
|
1078
|
+
EngineDebugger.send_message("godot_mcp:game_response", ["watch_collect", {"window_ms": 0, "sample_count": 0, "fields": {}, "events": [], "events_truncated": false}])
|
|
1076
1079
|
return
|
|
1077
1080
|
EngineDebugger.send_message("godot_mcp:game_response", ["watch_collect", _sampler.collect()])
|
|
1078
1081
|
|
|
1079
1082
|
|
|
1080
1083
|
func _handle_watch_stop() -> void:
|
|
1081
1084
|
if _sampler == null:
|
|
1082
|
-
EngineDebugger.send_message("godot_mcp:game_response", ["watch_stop", {"window_ms": 0, "sample_count": 0, "fields": {}}])
|
|
1085
|
+
EngineDebugger.send_message("godot_mcp:game_response", ["watch_stop", {"window_ms": 0, "sample_count": 0, "fields": {}, "events": [], "events_truncated": false}])
|
|
1083
1086
|
return
|
|
1084
1087
|
EngineDebugger.send_message("godot_mcp:game_response", ["watch_stop", _sampler.stop()])
|
|
1085
1088
|
|
|
@@ -3,6 +3,11 @@ class_name MCPRuntimeStateSampler
|
|
|
3
3
|
|
|
4
4
|
const MAX_FIELDS := 32
|
|
5
5
|
const MAX_SAMPLES_PER_FIELD := 200
|
|
6
|
+
const MAX_SIGNALS := 16
|
|
7
|
+
const MAX_EVENTS := 200
|
|
8
|
+
const MAX_ARGS_CHARS := 100 # total stringified-args cap per event
|
|
9
|
+
const MAX_ARG_CHARS := 40 # per-arg cap before joining
|
|
10
|
+
const MAX_SIGNAL_ARITY := 5
|
|
6
11
|
|
|
7
12
|
var _active: bool = false
|
|
8
13
|
var _specs: Array = [] # [{node, fields: [{key, resolver}]}]
|
|
@@ -13,11 +18,17 @@ var _stop_time: int = 0 # set on auto-stop or manual stop; 0 = still runnin
|
|
|
13
18
|
var _frame_index: int = 0
|
|
14
19
|
var _sample_interval: int = 1 # sample every N frames
|
|
15
20
|
var _samples: Dictionary = {} # field_key -> Array of {t_ms, value}
|
|
21
|
+
var _events: Array = [] # [{t_ms, source, signal, args?}] -- signal emissions this window
|
|
22
|
+
var _events_truncated: bool = false
|
|
23
|
+
var _connections: Array = [] # [{node, sig_name, callable}] -- live connections to tear down
|
|
16
24
|
|
|
17
25
|
|
|
18
|
-
func start(specs: Array, hz: int, duration_ms: int) -> Dictionary:
|
|
26
|
+
func start(specs: Array, hz: int, duration_ms: int, signal_specs: Array = []) -> Dictionary:
|
|
27
|
+
_disconnect_all() # a restart while connections are live must tear the old ones down
|
|
19
28
|
_specs = []
|
|
20
29
|
_samples = {}
|
|
30
|
+
_events = []
|
|
31
|
+
_events_truncated = false
|
|
21
32
|
_hz = clampi(hz, 1, 60)
|
|
22
33
|
_duration_ms = clampi(duration_ms, 100, 5000)
|
|
23
34
|
_start_time = Time.get_ticks_msec()
|
|
@@ -52,7 +63,128 @@ func start(specs: Array, hz: int, duration_ms: int) -> Dictionary:
|
|
|
52
63
|
_stop_time = 0
|
|
53
64
|
_active = true
|
|
54
65
|
set_process(true)
|
|
55
|
-
|
|
66
|
+
|
|
67
|
+
var connected := 0
|
|
68
|
+
var unresolved: Array = []
|
|
69
|
+
var seen := {}
|
|
70
|
+
for sig_spec in signal_specs:
|
|
71
|
+
if not sig_spec is Dictionary:
|
|
72
|
+
continue
|
|
73
|
+
var sig_path: String = str(sig_spec.get("path", ""))
|
|
74
|
+
var sig_name: String = str(sig_spec.get("signal", ""))
|
|
75
|
+
if sig_path.is_empty() or sig_name.is_empty():
|
|
76
|
+
continue
|
|
77
|
+
var emitter := _resolve_node(sig_path)
|
|
78
|
+
if emitter == null:
|
|
79
|
+
unresolved.append({"path": sig_path, "signal": sig_name, "reason": "node_not_found"})
|
|
80
|
+
continue
|
|
81
|
+
# Dedupe on the RESOLVED node, not the path string: two spellings of the
|
|
82
|
+
# same node ("/root/Scene/Child" vs "Child") would otherwise both
|
|
83
|
+
# connect (our lambdas are distinct Callables, so connect() would not
|
|
84
|
+
# reject the second one) and double-record every emission.
|
|
85
|
+
var dedupe_key := str(emitter.get_instance_id()) + "\n" + sig_name
|
|
86
|
+
if seen.has(dedupe_key):
|
|
87
|
+
unresolved.append({"path": sig_path, "signal": sig_name, "reason": "duplicate"})
|
|
88
|
+
continue
|
|
89
|
+
seen[dedupe_key] = true
|
|
90
|
+
if connected >= MAX_SIGNALS:
|
|
91
|
+
unresolved.append({"path": sig_path, "signal": sig_name, "reason": "signal_cap"})
|
|
92
|
+
continue
|
|
93
|
+
var arg_count := _signal_arg_count(emitter, sig_name)
|
|
94
|
+
if arg_count < 0:
|
|
95
|
+
unresolved.append({"path": sig_path, "signal": sig_name, "reason": "signal_not_found"})
|
|
96
|
+
continue
|
|
97
|
+
if arg_count > MAX_SIGNAL_ARITY:
|
|
98
|
+
unresolved.append({"path": sig_path, "signal": sig_name, "reason": "unsupported_arity"})
|
|
99
|
+
continue
|
|
100
|
+
var cb := _make_recorder(sig_path, sig_name, arg_count)
|
|
101
|
+
# Immediate (not deferred) connect: emission-time recording, and the
|
|
102
|
+
# recorder only appends to an Array -- safe inside main-thread physics
|
|
103
|
+
# callbacks. NOT safe for signals emitted off the main thread (worker
|
|
104
|
+
# threads, run_on_separate_thread physics): the append races collect().
|
|
105
|
+
# Deferred connect would fix that but quantizes t_ms to frame
|
|
106
|
+
# boundaries, destroying the exact-timing property -- documented as a
|
|
107
|
+
# main-thread-emission limitation instead.
|
|
108
|
+
if emitter.connect(StringName(sig_name), cb) != OK:
|
|
109
|
+
unresolved.append({"path": sig_path, "signal": sig_name, "reason": "connect_failed"})
|
|
110
|
+
continue
|
|
111
|
+
_connections.append({"node": emitter, "sig_name": sig_name, "callable": cb})
|
|
112
|
+
connected += 1
|
|
113
|
+
|
|
114
|
+
return {
|
|
115
|
+
"resolved_fields": field_count,
|
|
116
|
+
"connected_signals": connected,
|
|
117
|
+
"unresolved_signals": unresolved,
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
func _signal_arg_count(node: Node, sig_name: String) -> int:
|
|
122
|
+
# Covers script signals AND built-ins (body_entered etc.). -1 = not found.
|
|
123
|
+
for info in node.get_signal_list():
|
|
124
|
+
if str(info.get("name", "")) == sig_name:
|
|
125
|
+
return (info.get("args", []) as Array).size()
|
|
126
|
+
return -1
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
func _make_recorder(path: String, sig_name: String, arg_count: int) -> Callable:
|
|
130
|
+
# connect() requires the Callable arity to match the signal's; lambdas capture
|
|
131
|
+
# path/sig_name by value so no get_path() happens at record time.
|
|
132
|
+
match arg_count:
|
|
133
|
+
0: return func() -> void: _record_event(path, sig_name, [])
|
|
134
|
+
1: return func(a1) -> void: _record_event(path, sig_name, [a1])
|
|
135
|
+
2: return func(a1, a2) -> void: _record_event(path, sig_name, [a1, a2])
|
|
136
|
+
3: return func(a1, a2, a3) -> void: _record_event(path, sig_name, [a1, a2, a3])
|
|
137
|
+
4: return func(a1, a2, a3, a4) -> void: _record_event(path, sig_name, [a1, a2, a3, a4])
|
|
138
|
+
_: return func(a1, a2, a3, a4, a5) -> void: _record_event(path, sig_name, [a1, a2, a3, a4, a5])
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
func _record_event(source: String, sig_name: String, args: Array) -> void:
|
|
142
|
+
if not _active:
|
|
143
|
+
return
|
|
144
|
+
if _events.size() >= MAX_EVENTS:
|
|
145
|
+
_events_truncated = true
|
|
146
|
+
return
|
|
147
|
+
var ev := {
|
|
148
|
+
"t_ms": Time.get_ticks_msec() - _start_time,
|
|
149
|
+
"source": source,
|
|
150
|
+
"signal": sig_name,
|
|
151
|
+
}
|
|
152
|
+
if not args.is_empty():
|
|
153
|
+
# Stringify AT RECORD TIME -- an arg object may be freed before collect().
|
|
154
|
+
# str() on an Object invokes its _to_string(); a _to_string() that mutates
|
|
155
|
+
# the tree is the game's bug, not ours.
|
|
156
|
+
ev["args"] = _stringify_args(args)
|
|
157
|
+
_events.append(ev)
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
func _stringify_args(args: Array) -> String:
|
|
161
|
+
var parts: PackedStringArray = []
|
|
162
|
+
for a in args:
|
|
163
|
+
var s := str(a)
|
|
164
|
+
if s.length() > MAX_ARG_CHARS:
|
|
165
|
+
s = s.substr(0, MAX_ARG_CHARS) + "..."
|
|
166
|
+
parts.append(s)
|
|
167
|
+
var joined := "[" + ", ".join(parts) + "]"
|
|
168
|
+
if joined.length() > MAX_ARGS_CHARS:
|
|
169
|
+
joined = joined.substr(0, MAX_ARGS_CHARS) + "..."
|
|
170
|
+
return joined
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
func _disconnect_all() -> void:
|
|
174
|
+
for c in _connections:
|
|
175
|
+
# UNTYPED on purpose: assigning a freed instance to a typed Node var is
|
|
176
|
+
# itself a script error that would abort this loop before
|
|
177
|
+
# is_instance_valid ever ran, leaving stale entries behind. Freed
|
|
178
|
+
# emitters drop their connections with the object; disconnecting a dead
|
|
179
|
+
# entry would error too, hence both guards.
|
|
180
|
+
var node = c.node
|
|
181
|
+
if is_instance_valid(node) and node.is_connected(StringName(c.sig_name), c.callable):
|
|
182
|
+
node.disconnect(StringName(c.sig_name), c.callable)
|
|
183
|
+
_connections.clear()
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
func _exit_tree() -> void:
|
|
187
|
+
_disconnect_all()
|
|
56
188
|
|
|
57
189
|
|
|
58
190
|
func _process(_delta: float) -> void:
|
|
@@ -65,6 +197,10 @@ func _process(_delta: float) -> void:
|
|
|
65
197
|
_active = false
|
|
66
198
|
_stop_time = Time.get_ticks_msec()
|
|
67
199
|
set_process(false)
|
|
200
|
+
# Window over: stop recording signal emissions too. An emission landing
|
|
201
|
+
# between duration_ms elapsing and this frame is recorded with t_ms
|
|
202
|
+
# slightly past the window -- harmless and honest.
|
|
203
|
+
_disconnect_all()
|
|
68
204
|
return
|
|
69
205
|
|
|
70
206
|
_frame_index += 1
|
|
@@ -72,7 +208,9 @@ func _process(_delta: float) -> void:
|
|
|
72
208
|
return
|
|
73
209
|
|
|
74
210
|
for spec in _specs:
|
|
75
|
-
|
|
211
|
+
# Untyped: a typed assignment of a freed instance is a script error that
|
|
212
|
+
# would abort the whole sampling pass (same hazard as _disconnect_all).
|
|
213
|
+
var node = spec.node
|
|
76
214
|
if not is_instance_valid(node):
|
|
77
215
|
# node was freed — mark all fields and skip
|
|
78
216
|
for field_info in spec.fields:
|
|
@@ -105,13 +243,21 @@ func collect() -> Dictionary:
|
|
|
105
243
|
"window_ms": elapsed,
|
|
106
244
|
"sample_count": total_samples,
|
|
107
245
|
"fields": _samples.duplicate(true),
|
|
246
|
+
# duplicate: a mid-window collect leaves recording live, so the caller's
|
|
247
|
+
# copy must not alias the still-growing array.
|
|
248
|
+
"events": _events.duplicate(true),
|
|
249
|
+
"events_truncated": _events_truncated,
|
|
108
250
|
}
|
|
109
251
|
|
|
110
252
|
|
|
111
253
|
func stop() -> Dictionary:
|
|
112
254
|
_active = false
|
|
113
|
-
|
|
255
|
+
# Don't clobber an auto-stop's timestamp: a late manual stop would inflate
|
|
256
|
+
# window_ms to the call time instead of the actual window end.
|
|
257
|
+
if _stop_time == 0:
|
|
258
|
+
_stop_time = Time.get_ticks_msec()
|
|
114
259
|
set_process(false)
|
|
260
|
+
_disconnect_all()
|
|
115
261
|
return collect()
|
|
116
262
|
|
|
117
263
|
|
|
@@ -124,10 +270,24 @@ func _resolve_node(path: String) -> Node:
|
|
|
124
270
|
if tree == null:
|
|
125
271
|
return null
|
|
126
272
|
var scene_root := tree.current_scene
|
|
273
|
+
|
|
274
|
+
# "/" means the scene root, NOT the root Window -- keep ahead of the absolute
|
|
275
|
+
# attempt or a bare-/ NodePath would return the Window.
|
|
276
|
+
if path == "/":
|
|
277
|
+
return scene_root
|
|
278
|
+
|
|
279
|
+
# Absolute paths resolve from /root regardless of current_scene -- this is
|
|
280
|
+
# what makes autoloads (/root/G) watchable, including during scene
|
|
281
|
+
# transitions when current_scene is null.
|
|
282
|
+
if path.begins_with("/") and tree.root != null:
|
|
283
|
+
var abs_hit := tree.root.get_node_or_null(NodePath(path))
|
|
284
|
+
if abs_hit != null:
|
|
285
|
+
return abs_hit
|
|
286
|
+
|
|
127
287
|
if scene_root == null:
|
|
128
288
|
return null
|
|
129
289
|
|
|
130
|
-
if path == "/root/" + scene_root.name
|
|
290
|
+
if path == "/root/" + scene_root.name:
|
|
131
291
|
return scene_root
|
|
132
292
|
|
|
133
293
|
if path.begins_with("/root/"):
|
|
@@ -190,6 +350,13 @@ func _read_field(node: Node, key: String) -> Variant:
|
|
|
190
350
|
return (node as AnimationPlayer).current_animation
|
|
191
351
|
if node is AnimatedSprite2D:
|
|
192
352
|
return (node as AnimatedSprite2D).animation
|
|
353
|
+
if node is AnimationTree:
|
|
354
|
+
# Only state-machine roots expose parameters/playback; BlendTree
|
|
355
|
+
# and other roots fall through to null (silent skip, matching the
|
|
356
|
+
# other inapplicable-field arms).
|
|
357
|
+
var playback = node.get("parameters/playback")
|
|
358
|
+
if playback is AnimationNodeStateMachinePlayback:
|
|
359
|
+
return String(playback.get_current_node())
|
|
193
360
|
"anim_frame":
|
|
194
361
|
if node is AnimatedSprite2D:
|
|
195
362
|
return (node as AnimatedSprite2D).frame
|
package/addon/plugin.cfg
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2
2
|
import { createMockGodot, createToolContext, structuredOf, } from '../helpers/mock-godot.js';
|
|
3
|
-
import { runtimeState, summarizeNumericField, summarizeStringField, } from '../../tools/runtime-state.js';
|
|
3
|
+
import { runtimeState, summarizeNumericField, summarizeStringField, buildTimeline, } from '../../tools/runtime-state.js';
|
|
4
4
|
describe('runtimeState tool', () => {
|
|
5
5
|
let mock;
|
|
6
6
|
beforeEach(() => {
|
|
@@ -55,6 +55,34 @@ describe('runtimeState tool', () => {
|
|
|
55
55
|
expect(runtimeState.schema.safeParse({ action: 'watch_collect' }).success).toBe(true);
|
|
56
56
|
expect(runtimeState.schema.safeParse({ action: 'watch_stop' }).success).toBe(true);
|
|
57
57
|
});
|
|
58
|
+
it('accepts a signals-only watch_start (no specs)', () => {
|
|
59
|
+
expect(runtimeState.schema.safeParse({
|
|
60
|
+
action: 'watch_start',
|
|
61
|
+
signals: [{ path: '/root/G', signal: 'wave_started' }],
|
|
62
|
+
}).success).toBe(true);
|
|
63
|
+
});
|
|
64
|
+
it('accepts watch_start with both specs and signals', () => {
|
|
65
|
+
expect(runtimeState.schema.safeParse({
|
|
66
|
+
action: 'watch_start',
|
|
67
|
+
specs: [{ path: '/root/Player', fields: ['pos.x'] }],
|
|
68
|
+
signals: [{ path: '/root/Player', signal: 'died' }],
|
|
69
|
+
}).success).toBe(true);
|
|
70
|
+
});
|
|
71
|
+
it('rejects watch_start with neither specs nor signals (incl. empty arrays)', () => {
|
|
72
|
+
expect(runtimeState.schema.safeParse({ action: 'watch_start' }).success).toBe(false);
|
|
73
|
+
expect(runtimeState.schema.safeParse({ action: 'watch_start', specs: [], signals: [] }).success).toBe(false);
|
|
74
|
+
});
|
|
75
|
+
it('rejects more than 16 signals', () => {
|
|
76
|
+
const signals = Array.from({ length: 17 }, (_, i) => ({ path: `/root/E${i}`, signal: 'fired' }));
|
|
77
|
+
expect(runtimeState.schema.safeParse({ action: 'watch_start', signals }).success).toBe(false);
|
|
78
|
+
});
|
|
79
|
+
it('rejects a signal entry missing the signal name', () => {
|
|
80
|
+
expect(runtimeState.schema.safeParse({ action: 'watch_start', signals: [{ path: '/root/G' }] }).success).toBe(false);
|
|
81
|
+
});
|
|
82
|
+
it('rejects blank signal paths and names (blank entries would skew the drop detection)', () => {
|
|
83
|
+
expect(runtimeState.schema.safeParse({ action: 'watch_start', signals: [{ path: '', signal: 'died' }] }).success).toBe(false);
|
|
84
|
+
expect(runtimeState.schema.safeParse({ action: 'watch_start', signals: [{ path: '/root/G', signal: '' }] }).success).toBe(false);
|
|
85
|
+
});
|
|
58
86
|
});
|
|
59
87
|
// ── digest ───────────────────────────────────────────────────────────────
|
|
60
88
|
describe('digest', () => {
|
|
@@ -136,8 +164,8 @@ describe('runtimeState tool', () => {
|
|
|
136
164
|
});
|
|
137
165
|
// ── watch_start ──────────────────────────────────────────────────────────
|
|
138
166
|
describe('watch_start', () => {
|
|
139
|
-
it('calls watch_start with specs, hz, duration_ms and returns confirmation', async () => {
|
|
140
|
-
mock.mockResponse({ started: true });
|
|
167
|
+
it('calls watch_start with specs, hz, duration_ms and returns a structured confirmation', async () => {
|
|
168
|
+
mock.mockResponse({ started: true, resolved_fields: 2 });
|
|
141
169
|
const ctx = createToolContext(mock);
|
|
142
170
|
const result = await runtimeState.execute({
|
|
143
171
|
action: 'watch_start',
|
|
@@ -145,8 +173,11 @@ describe('runtimeState tool', () => {
|
|
|
145
173
|
hz: 30,
|
|
146
174
|
duration_ms: 500,
|
|
147
175
|
}, ctx);
|
|
148
|
-
|
|
149
|
-
expect(
|
|
176
|
+
const data = structuredOf(result);
|
|
177
|
+
expect(data.started).toBe(true);
|
|
178
|
+
expect(data.note).toContain('500');
|
|
179
|
+
expect(data.resolved_fields).toBe(2);
|
|
180
|
+
expect(data.warnings).toEqual([]);
|
|
150
181
|
expect(mock.calls[0].command).toBe('watch_start');
|
|
151
182
|
expect(mock.calls[0].params.hz).toBe(30);
|
|
152
183
|
expect(mock.calls[0].params.duration_ms).toBe(500);
|
|
@@ -158,6 +189,101 @@ describe('runtimeState tool', () => {
|
|
|
158
189
|
expect(mock.calls[0].params.hz).toBe(20);
|
|
159
190
|
expect(mock.calls[0].params.duration_ms).toBe(1000);
|
|
160
191
|
});
|
|
192
|
+
it('passes signals through and defaults them to [] when omitted', async () => {
|
|
193
|
+
mock.mockResponse({ started: true, resolved_fields: 1 });
|
|
194
|
+
const ctx = createToolContext(mock);
|
|
195
|
+
await runtimeState.execute({ action: 'watch_start', specs: [{ path: '/root/Player', fields: ['pos.x'] }] }, ctx);
|
|
196
|
+
expect(mock.calls[0].params.signals).toEqual([]);
|
|
197
|
+
mock.mockResponse({ started: true, connected_signals: 1, unresolved_signals: [] });
|
|
198
|
+
await runtimeState.execute({ action: 'watch_start', signals: [{ path: '/root/G', signal: 'wave_started' }] }, ctx);
|
|
199
|
+
expect(mock.calls[1].params.signals).toEqual([{ path: '/root/G', signal: 'wave_started' }]);
|
|
200
|
+
expect(mock.calls[1].params.specs).toEqual([]);
|
|
201
|
+
});
|
|
202
|
+
it('reports the connected signal count structurally', async () => {
|
|
203
|
+
mock.mockResponse({ started: true, resolved_fields: 0, connected_signals: 2, unresolved_signals: [] });
|
|
204
|
+
const ctx = createToolContext(mock);
|
|
205
|
+
const result = await runtimeState.execute({
|
|
206
|
+
action: 'watch_start',
|
|
207
|
+
signals: [
|
|
208
|
+
{ path: '/root/G', signal: 'wave_started' },
|
|
209
|
+
{ path: '/root/Player', signal: 'died' },
|
|
210
|
+
],
|
|
211
|
+
}, ctx);
|
|
212
|
+
const data = structuredOf(result);
|
|
213
|
+
expect(data.connected_signals).toBe(2);
|
|
214
|
+
expect(data.unresolved_signals).toEqual([]);
|
|
215
|
+
expect(data.warnings).toEqual([]);
|
|
216
|
+
});
|
|
217
|
+
it('passes unresolved signals through structurally and names them in warnings', async () => {
|
|
218
|
+
mock.mockResponse({
|
|
219
|
+
started: true,
|
|
220
|
+
resolved_fields: 0,
|
|
221
|
+
connected_signals: 0,
|
|
222
|
+
unresolved_signals: [{ path: '/root/Bogus', signal: 'died', reason: 'node_not_found' }],
|
|
223
|
+
});
|
|
224
|
+
const ctx = createToolContext(mock);
|
|
225
|
+
const result = await runtimeState.execute({ action: 'watch_start', signals: [{ path: '/root/Bogus', signal: 'died' }] }, ctx);
|
|
226
|
+
const data = structuredOf(result);
|
|
227
|
+
expect(data.unresolved_signals).toEqual([{ path: '/root/Bogus', signal: 'died', reason: 'node_not_found' }]);
|
|
228
|
+
expect(data.warnings.some((w) => w.includes('/root/Bogus:died (node_not_found)'))).toBe(true);
|
|
229
|
+
});
|
|
230
|
+
it('does not warn about 0 fields on a signals-only watch', async () => {
|
|
231
|
+
mock.mockResponse({ started: true, resolved_fields: 0, connected_signals: 1, unresolved_signals: [] });
|
|
232
|
+
const ctx = createToolContext(mock);
|
|
233
|
+
const result = await runtimeState.execute({ action: 'watch_start', signals: [{ path: '/root/G', signal: 'wave_started' }] }, ctx);
|
|
234
|
+
expect(structuredOf(result).warnings).toEqual([]);
|
|
235
|
+
});
|
|
236
|
+
it('still warns when specs were requested but none resolved', async () => {
|
|
237
|
+
mock.mockResponse({ started: true, resolved_fields: 0 });
|
|
238
|
+
const ctx = createToolContext(mock);
|
|
239
|
+
const result = await runtimeState.execute({ action: 'watch_start', specs: [{ path: '/root/Nope', fields: ['pos.x'] }] }, ctx);
|
|
240
|
+
expect(structuredOf(result).warnings.some((w) => w.includes('0 fields resolved'))).toBe(true);
|
|
241
|
+
});
|
|
242
|
+
it('detects an addon that predates the timeline (signals silently ignored)', async () => {
|
|
243
|
+
// Old game bridge: response has no connected_signals key at all.
|
|
244
|
+
mock.mockResponse({ started: true, resolved_fields: 1 });
|
|
245
|
+
const ctx = createToolContext(mock);
|
|
246
|
+
const result = await runtimeState.execute({
|
|
247
|
+
action: 'watch_start',
|
|
248
|
+
specs: [{ path: '/root/Player', fields: ['pos.x'] }],
|
|
249
|
+
signals: [{ path: '/root/G', signal: 'wave_started' }],
|
|
250
|
+
}, ctx);
|
|
251
|
+
const data = structuredOf(result);
|
|
252
|
+
expect(data.warnings.some((w) => w.includes('update the godot-mcp addon'))).toBe(true);
|
|
253
|
+
});
|
|
254
|
+
it('detects a stale editor relay dropping signal specs in transit', async () => {
|
|
255
|
+
// New bridge (keys present) but fewer accounted-for signals than requested:
|
|
256
|
+
// the editor-loaded relay predates the 4th wire element.
|
|
257
|
+
mock.mockResponse({ started: true, resolved_fields: 0, connected_signals: 0, unresolved_signals: [] });
|
|
258
|
+
const ctx = createToolContext(mock);
|
|
259
|
+
const result = await runtimeState.execute({
|
|
260
|
+
action: 'watch_start',
|
|
261
|
+
signals: [
|
|
262
|
+
{ path: '/root/G', signal: 'wave_started' },
|
|
263
|
+
{ path: '/root/G', signal: 'score_changed' },
|
|
264
|
+
],
|
|
265
|
+
}, ctx);
|
|
266
|
+
const data = structuredOf(result);
|
|
267
|
+
expect(data.warnings.some((w) => w.includes('restart the Godot editor'))).toBe(true);
|
|
268
|
+
});
|
|
269
|
+
it('raises no skew warning when every requested signal is accounted for', async () => {
|
|
270
|
+
mock.mockResponse({
|
|
271
|
+
started: true,
|
|
272
|
+
resolved_fields: 0,
|
|
273
|
+
connected_signals: 1,
|
|
274
|
+
unresolved_signals: [{ path: '/root/Bogus', signal: 'nope', reason: 'node_not_found' }],
|
|
275
|
+
});
|
|
276
|
+
const ctx = createToolContext(mock);
|
|
277
|
+
const result = await runtimeState.execute({
|
|
278
|
+
action: 'watch_start',
|
|
279
|
+
signals: [
|
|
280
|
+
{ path: '/root/G', signal: 'wave_started' },
|
|
281
|
+
{ path: '/root/Bogus', signal: 'nope' },
|
|
282
|
+
],
|
|
283
|
+
}, ctx);
|
|
284
|
+
const data = structuredOf(result);
|
|
285
|
+
expect(data.warnings.some((w) => w.includes('restart') || w.includes('update'))).toBe(false);
|
|
286
|
+
});
|
|
161
287
|
});
|
|
162
288
|
// ── watch_collect ────────────────────────────────────────────────────────
|
|
163
289
|
describe('watch_collect', () => {
|
|
@@ -209,6 +335,69 @@ describe('runtimeState tool', () => {
|
|
|
209
335
|
expect(summary.changes).toHaveLength(1);
|
|
210
336
|
expect(summary.changes[0]).toEqual({ t_ms: 350, from: 'idle', to: 'run' });
|
|
211
337
|
});
|
|
338
|
+
it('merges signal events and string transitions into a time-sorted timeline', async () => {
|
|
339
|
+
const raw = {
|
|
340
|
+
window_ms: 1000,
|
|
341
|
+
sample_count: 4,
|
|
342
|
+
fields: {
|
|
343
|
+
'/root/Player:anim': [
|
|
344
|
+
{ t_ms: 0, value: 'idle' },
|
|
345
|
+
{ t_ms: 400, value: 'run' },
|
|
346
|
+
],
|
|
347
|
+
'/root/Player:state': [
|
|
348
|
+
{ t_ms: 0, value: 'alive' },
|
|
349
|
+
{ t_ms: 900, value: 'dead' },
|
|
350
|
+
],
|
|
351
|
+
// Numeric events (zero_cross here) must stay per-field only.
|
|
352
|
+
'/root/Player:vel.x': [
|
|
353
|
+
{ t_ms: 0, value: 0 },
|
|
354
|
+
{ t_ms: 600, value: 5 },
|
|
355
|
+
],
|
|
356
|
+
},
|
|
357
|
+
events: [
|
|
358
|
+
{ t_ms: 120, source: '/root/G', signal: 'wave_started', args: '[2]' },
|
|
359
|
+
{ t_ms: 880, source: '/root/Player', signal: 'died' },
|
|
360
|
+
],
|
|
361
|
+
events_truncated: false,
|
|
362
|
+
};
|
|
363
|
+
mock.mockResponse(raw);
|
|
364
|
+
const ctx = createToolContext(mock);
|
|
365
|
+
const result = await runtimeState.execute({ action: 'watch_collect' }, ctx);
|
|
366
|
+
const data = structuredOf(result);
|
|
367
|
+
expect(data.timeline.map((e) => [e.t_ms, e.kind])).toEqual([
|
|
368
|
+
[120, 'signal'],
|
|
369
|
+
[400, 'anim_transition'],
|
|
370
|
+
[880, 'signal'],
|
|
371
|
+
[900, 'field_change'],
|
|
372
|
+
]);
|
|
373
|
+
expect(data.timeline[0].args).toBe('[2]');
|
|
374
|
+
expect(data.timeline[1]).toEqual({
|
|
375
|
+
t_ms: 400, kind: 'anim_transition', source: '/root/Player', from: 'idle', to: 'run',
|
|
376
|
+
});
|
|
377
|
+
expect(data.timeline[3].field).toBe('state');
|
|
378
|
+
expect(data.timeline_truncated).toBe(false);
|
|
379
|
+
// numeric zero_cross stayed per-field
|
|
380
|
+
expect(data.fields['/root/Player:vel.x'].events).toHaveLength(1);
|
|
381
|
+
});
|
|
382
|
+
it('keeps a stable shape against pre-timeline addons (no events key)', async () => {
|
|
383
|
+
mock.mockResponse({ window_ms: 500, sample_count: 0, fields: {} });
|
|
384
|
+
const ctx = createToolContext(mock);
|
|
385
|
+
const data = structuredOf(await runtimeState.execute({ action: 'watch_collect' }, ctx));
|
|
386
|
+
expect(data.timeline).toEqual([]);
|
|
387
|
+
expect(data.timeline_truncated).toBe(false);
|
|
388
|
+
});
|
|
389
|
+
it('surfaces event truncation as timeline_truncated', async () => {
|
|
390
|
+
mock.mockResponse({
|
|
391
|
+
window_ms: 500,
|
|
392
|
+
sample_count: 0,
|
|
393
|
+
fields: {},
|
|
394
|
+
events: [{ t_ms: 1, source: '/root/A', signal: 'spam' }],
|
|
395
|
+
events_truncated: true,
|
|
396
|
+
});
|
|
397
|
+
const ctx = createToolContext(mock);
|
|
398
|
+
const data = structuredOf(await runtimeState.execute({ action: 'watch_collect' }, ctx));
|
|
399
|
+
expect(data.timeline_truncated).toBe(true);
|
|
400
|
+
});
|
|
212
401
|
});
|
|
213
402
|
// ── watch_stop ───────────────────────────────────────────────────────────
|
|
214
403
|
describe('watch_stop', () => {
|
|
@@ -234,6 +423,59 @@ describe('runtimeState tool', () => {
|
|
|
234
423
|
});
|
|
235
424
|
});
|
|
236
425
|
});
|
|
426
|
+
// ── buildTimeline unit tests ─────────────────────────────────────────────────
|
|
427
|
+
describe('buildTimeline', () => {
|
|
428
|
+
it('returns [] for no events and no fields', () => {
|
|
429
|
+
expect(buildTimeline([], {})).toEqual([]);
|
|
430
|
+
});
|
|
431
|
+
it('omits args when the event carries none', () => {
|
|
432
|
+
const [entry] = buildTimeline([{ t_ms: 5, source: '/root/A', signal: 'fired' }], {});
|
|
433
|
+
expect(entry).toEqual({ t_ms: 5, kind: 'signal', source: '/root/A', name: 'fired' });
|
|
434
|
+
expect('args' in entry).toBe(false);
|
|
435
|
+
});
|
|
436
|
+
it('splits field keys on the LAST colon (paths may contain colons)', () => {
|
|
437
|
+
const fields = {
|
|
438
|
+
'/root/Player:anim': { start: 'a', end: 'b', changes: [{ t_ms: 10, from: 'a', to: 'b' }] },
|
|
439
|
+
};
|
|
440
|
+
const [entry] = buildTimeline([], fields);
|
|
441
|
+
expect(entry).toEqual({ t_ms: 10, kind: 'anim_transition', source: '/root/Player', from: 'a', to: 'b' });
|
|
442
|
+
});
|
|
443
|
+
it('orders t_ms ties deterministically: signal < anim_transition < field_change', () => {
|
|
444
|
+
const fields = {
|
|
445
|
+
'/root/P:state': { start: 'x', end: 'y', changes: [{ t_ms: 100, from: 'x', to: 'y' }] },
|
|
446
|
+
'/root/P:anim': { start: 'a', end: 'b', changes: [{ t_ms: 100, from: 'a', to: 'b' }] },
|
|
447
|
+
};
|
|
448
|
+
const events = [{ t_ms: 100, source: '/root/P', signal: 'tick' }];
|
|
449
|
+
expect(buildTimeline(events, fields).map((e) => e.kind)).toEqual([
|
|
450
|
+
'signal',
|
|
451
|
+
'anim_transition',
|
|
452
|
+
'field_change',
|
|
453
|
+
]);
|
|
454
|
+
});
|
|
455
|
+
it('preserves emission order for same-millisecond signal bursts (stable sort)', () => {
|
|
456
|
+
const events = [
|
|
457
|
+
{ t_ms: 100, source: '/root/G', signal: 'score_changed', args: '[111]' },
|
|
458
|
+
{ t_ms: 100, source: '/root/G', signal: 'wave_changed', args: '[2]' },
|
|
459
|
+
{ t_ms: 100, source: '/root/G', signal: 'score_changed', args: '[222]' },
|
|
460
|
+
];
|
|
461
|
+
// An alphabetical tiebreak would reorder to score, score, wave and destroy
|
|
462
|
+
// the real emission order — buffer order must survive the sort.
|
|
463
|
+
expect(buildTimeline(events, {}).map((e) => (e.kind === 'signal' ? e.args : ''))).toEqual([
|
|
464
|
+
'[111]',
|
|
465
|
+
'[2]',
|
|
466
|
+
'[222]',
|
|
467
|
+
]);
|
|
468
|
+
});
|
|
469
|
+
it('ignores numeric field summaries entirely', () => {
|
|
470
|
+
const fields = {
|
|
471
|
+
'/root/P:vel.x': {
|
|
472
|
+
start: 0, end: 5, min: 0, max: 5, mean: 2.5, slope: 5,
|
|
473
|
+
events: [{ t_ms: 50, from: 0, to: 5, kind: 'zero_cross' }],
|
|
474
|
+
},
|
|
475
|
+
};
|
|
476
|
+
expect(buildTimeline([], fields)).toEqual([]);
|
|
477
|
+
});
|
|
478
|
+
});
|
|
237
479
|
// ── summarizeNumericField unit tests ─────────────────────────────────────────
|
|
238
480
|
describe('summarizeNumericField', () => {
|
|
239
481
|
it('returns zeros for empty input', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-state.test.js","sourceRoot":"","sources":["../../../src/__tests__/tools/runtime-state.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime-state.test.js","sourceRoot":"","sources":["../../../src/__tests__/tools/runtime-state.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,12 @@ interface WatchRawSample {
|
|
|
4
4
|
t_ms: number;
|
|
5
5
|
value: number | string;
|
|
6
6
|
}
|
|
7
|
+
interface WatchRawEvent {
|
|
8
|
+
t_ms: number;
|
|
9
|
+
source: string;
|
|
10
|
+
signal: string;
|
|
11
|
+
args?: string;
|
|
12
|
+
}
|
|
7
13
|
export interface NumericFieldSummary {
|
|
8
14
|
start: number;
|
|
9
15
|
end: number;
|
|
@@ -29,6 +35,27 @@ export interface StringFieldSummary {
|
|
|
29
35
|
}
|
|
30
36
|
export declare function summarizeNumericField(samples: WatchRawSample[], windowMs: number): NumericFieldSummary;
|
|
31
37
|
export declare function summarizeStringField(samples: WatchRawSample[]): StringFieldSummary;
|
|
38
|
+
export type TimelineEntry = {
|
|
39
|
+
t_ms: number;
|
|
40
|
+
kind: 'signal';
|
|
41
|
+
source: string;
|
|
42
|
+
name: string;
|
|
43
|
+
args?: string;
|
|
44
|
+
} | {
|
|
45
|
+
t_ms: number;
|
|
46
|
+
kind: 'anim_transition';
|
|
47
|
+
source: string;
|
|
48
|
+
from: string;
|
|
49
|
+
to: string;
|
|
50
|
+
} | {
|
|
51
|
+
t_ms: number;
|
|
52
|
+
kind: 'field_change';
|
|
53
|
+
source: string;
|
|
54
|
+
field: string;
|
|
55
|
+
from: string;
|
|
56
|
+
to: string;
|
|
57
|
+
};
|
|
58
|
+
export declare function buildTimeline(events: WatchRawEvent[], fields: Record<string, NumericFieldSummary | StringFieldSummary>): TimelineEntry[];
|
|
32
59
|
export declare const runtimeState: import("../core/types.js").ToolDefinition<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
33
60
|
action: z.ZodLiteral<"digest">;
|
|
34
61
|
select: z.ZodOptional<z.ZodEnum<{
|
|
@@ -44,18 +71,22 @@ export declare const runtimeState: import("../core/types.js").ToolDefinition<z.Z
|
|
|
44
71
|
max_nodes: z.ZodOptional<z.ZodNumber>;
|
|
45
72
|
include: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
46
73
|
transform: "transform";
|
|
47
|
-
velocity: "velocity";
|
|
48
74
|
anim: "anim";
|
|
75
|
+
velocity: "velocity";
|
|
49
76
|
groups: "groups";
|
|
50
77
|
onscreen: "onscreen";
|
|
51
78
|
state: "state";
|
|
52
79
|
}>>>;
|
|
53
80
|
}, z.core.$strip>, z.ZodObject<{
|
|
54
81
|
action: z.ZodLiteral<"watch_start">;
|
|
55
|
-
specs: z.ZodArray<z.ZodObject<{
|
|
82
|
+
specs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
56
83
|
path: z.ZodString;
|
|
57
84
|
fields: z.ZodArray<z.ZodString>;
|
|
58
|
-
}, z.core.$strip
|
|
85
|
+
}, z.core.$strip>>>;
|
|
86
|
+
signals: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
87
|
+
path: z.ZodString;
|
|
88
|
+
signal: z.ZodString;
|
|
89
|
+
}, z.core.$strip>>>;
|
|
59
90
|
hz: z.ZodOptional<z.ZodNumber>;
|
|
60
91
|
duration_ms: z.ZodOptional<z.ZodNumber>;
|
|
61
92
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../../src/tools/runtime-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAkC1D,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../../src/tools/runtime-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAkC1D,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAaD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,aAAa,GAAG,YAAY,CAAA;KAAE,CAAC,CAAC;CAC/F;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,MAAM,GACf,mBAAmB,CAyBrB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,kBAAkB,CAkBlF;AAcD,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAYpG,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,kBAAkB,CAAC,GAC/D,aAAa,EAAE,CAsCjB;AA0KD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA0FvB,CAAC;AAEH,eAAO,MAAM,iBAAiB,EAAqB,iBAAiB,EAAE,CAAC"}
|
|
@@ -53,6 +53,62 @@ function summarizeWatchRaw(raw) {
|
|
|
53
53
|
}
|
|
54
54
|
return result;
|
|
55
55
|
}
|
|
56
|
+
const TIMELINE_KIND_RANK = {
|
|
57
|
+
// PRESENTATION order for same-t_ms entries, not chronology: cross-kind order
|
|
58
|
+
// at a tie is unknowable (signal t_ms is emission time, sampled t_ms is
|
|
59
|
+
// detection time — the change may have happened earlier). Any fixed choice
|
|
60
|
+
// is fine; what matters is determinism.
|
|
61
|
+
signal: 0,
|
|
62
|
+
anim_transition: 1,
|
|
63
|
+
field_change: 2,
|
|
64
|
+
};
|
|
65
|
+
export function buildTimeline(events, fields) {
|
|
66
|
+
const timeline = [];
|
|
67
|
+
for (const e of events) {
|
|
68
|
+
timeline.push({
|
|
69
|
+
t_ms: e.t_ms,
|
|
70
|
+
kind: 'signal',
|
|
71
|
+
source: e.source,
|
|
72
|
+
name: e.signal,
|
|
73
|
+
...(e.args !== undefined && { args: e.args }),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
for (const [key, summary] of Object.entries(fields)) {
|
|
77
|
+
if (!('changes' in summary))
|
|
78
|
+
continue; // numeric events stay per-field only
|
|
79
|
+
// full_key is node_path + ":" + field_key; lastIndexOf guards colons in paths.
|
|
80
|
+
const sep = key.lastIndexOf(':');
|
|
81
|
+
const source = sep >= 0 ? key.slice(0, sep) : key;
|
|
82
|
+
const field = sep >= 0 ? key.slice(sep + 1) : key;
|
|
83
|
+
for (const change of summary.changes) {
|
|
84
|
+
timeline.push(field === 'anim'
|
|
85
|
+
? { t_ms: change.t_ms, kind: 'anim_transition', source, from: change.from, to: change.to }
|
|
86
|
+
: { t_ms: change.t_ms, kind: 'field_change', source, field, from: change.from, to: change.to });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// No further tiebreakers on purpose: sort() is spec-stable (ES2019), so
|
|
90
|
+
// same-t_ms same-kind entries keep buffer order — which for signals IS
|
|
91
|
+
// emission order, real information a name/source tiebreak would destroy
|
|
92
|
+
// (sub-ms bursts land on one t_ms).
|
|
93
|
+
timeline.sort((a, b) => {
|
|
94
|
+
if (a.t_ms !== b.t_ms)
|
|
95
|
+
return a.t_ms - b.t_ms;
|
|
96
|
+
return TIMELINE_KIND_RANK[a.kind] - TIMELINE_KIND_RANK[b.kind];
|
|
97
|
+
});
|
|
98
|
+
return timeline;
|
|
99
|
+
}
|
|
100
|
+
function summarizeWatchResponse(raw) {
|
|
101
|
+
const fields = summarizeWatchRaw(raw);
|
|
102
|
+
return structured({
|
|
103
|
+
window_ms: raw.window_ms,
|
|
104
|
+
sample_count: raw.sample_count,
|
|
105
|
+
fields,
|
|
106
|
+
// Always present (empty array included) so the shape is stable for
|
|
107
|
+
// structured readers; `?? []` degrades gracefully against older addons.
|
|
108
|
+
timeline: buildTimeline(raw.events ?? [], fields),
|
|
109
|
+
timeline_truncated: raw.events_truncated ?? false,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
56
112
|
// ── Schema ───────────────────────────────────────────────────────────────────
|
|
57
113
|
const INCLUDE_VALUES = ['transform', 'velocity', 'anim', 'groups', 'onscreen', 'state'];
|
|
58
114
|
const RuntimeStateSchema = z.discriminatedUnion('action', [
|
|
@@ -123,7 +179,29 @@ const RuntimeStateSchema = z.discriminatedUnion('action', [
|
|
|
123
179
|
.array(z.string())
|
|
124
180
|
.describe('Field keys to sample (e.g. ["pos.x", "vel.x", "health"])'),
|
|
125
181
|
}))
|
|
126
|
-
.
|
|
182
|
+
.optional()
|
|
183
|
+
.describe('Which nodes and fields to watch. Optional when signals is provided.'),
|
|
184
|
+
signals: z
|
|
185
|
+
.array(z.object({
|
|
186
|
+
path: z
|
|
187
|
+
.string()
|
|
188
|
+
.min(1)
|
|
189
|
+
.describe('Node path; absolute /root/... paths reach autoloads (e.g. "/root/G")'),
|
|
190
|
+
signal: z
|
|
191
|
+
.string()
|
|
192
|
+
.min(1)
|
|
193
|
+
.describe('Signal name on that node — script or built-in (e.g. "body_entered")'),
|
|
194
|
+
}))
|
|
195
|
+
.max(16)
|
|
196
|
+
.optional()
|
|
197
|
+
.describe('Signals to record as discrete timeline events during the window. Each emission is ' +
|
|
198
|
+
'buffered as {t_ms, source, signal, args} (max 200 events/window, then truncated with a ' +
|
|
199
|
+
'flag; args stringified to ~100 chars). watch_collect merges these with string-field ' +
|
|
200
|
+
'transitions into a time-sorted `timeline`. Signals with more than 5 parameters are ' +
|
|
201
|
+
'skipped and reported in unresolved_signals, as are bad paths/names. Connections stay ' +
|
|
202
|
+
'live until duration_ms elapses or watch_stop. Signals must be emitted on the main ' +
|
|
203
|
+
'thread (worker-thread emissions are unsupported). At least one of specs/signals is ' +
|
|
204
|
+
'required.'),
|
|
127
205
|
hz: z
|
|
128
206
|
.number()
|
|
129
207
|
.int()
|
|
@@ -138,19 +216,27 @@ const RuntimeStateSchema = z.discriminatedUnion('action', [
|
|
|
138
216
|
.max(5000)
|
|
139
217
|
.optional()
|
|
140
218
|
.describe('Auto-stop after this many milliseconds (default: 1000)'),
|
|
219
|
+
}).refine((v) => (v.specs?.length ?? 0) > 0 || (v.signals?.length ?? 0) > 0, {
|
|
220
|
+
message: 'watch_start requires at least one of specs or signals',
|
|
141
221
|
}),
|
|
142
222
|
z.object({
|
|
143
223
|
action: z
|
|
144
224
|
.literal('watch_collect')
|
|
145
|
-
.describe('Collect the current sampler buffer and return a per-field summary
|
|
146
|
-
'start/end/min/max/mean/slope for numeric fields; transition events for string fields
|
|
147
|
-
'
|
|
225
|
+
.describe('Collect the current sampler buffer and return a per-field summary ' +
|
|
226
|
+
'(start/end/min/max/mean/slope for numeric fields; transition events for string fields) ' +
|
|
227
|
+
'plus a time-sorted `timeline` merging watched signal emissions with string-field ' +
|
|
228
|
+
'transitions (kinds: signal, anim_transition, field_change). TIMESTAMPS: signal t_ms is ' +
|
|
229
|
+
'emission time (ms resolution); anim/field t_ms is DETECTION time at the sample rate — ' +
|
|
230
|
+
'the change happened up to one sample interval earlier, so do not infer cross-kind ' +
|
|
231
|
+
'ordering from nearby timestamps. ' +
|
|
232
|
+
'Safe to call before auto-stop — returns whatever has been recorded so far; ' +
|
|
233
|
+
'signal connections stay live until the window ends.'),
|
|
148
234
|
}),
|
|
149
235
|
z.object({
|
|
150
236
|
action: z
|
|
151
237
|
.literal('watch_stop')
|
|
152
|
-
.describe('Stop the sampler early and return the final
|
|
153
|
-
'Equivalent to watch_collect + stopping the sampler.'),
|
|
238
|
+
.describe('Stop the sampler early (disconnecting watched signals) and return the final ' +
|
|
239
|
+
'per-field summary and merged `timeline`. Equivalent to watch_collect + stopping the sampler.'),
|
|
154
240
|
}),
|
|
155
241
|
]);
|
|
156
242
|
// ── Tool definition ──────────────────────────────────────────────────────────
|
|
@@ -189,25 +275,51 @@ export const runtimeState = defineTool({
|
|
|
189
275
|
}
|
|
190
276
|
case 'watch_start': {
|
|
191
277
|
const watchResult = await godot.sendCommand('watch_start', {
|
|
192
|
-
specs: args.specs,
|
|
278
|
+
specs: args.specs ?? [],
|
|
193
279
|
hz: args.hz ?? 20,
|
|
194
280
|
duration_ms: args.duration_ms ?? 1000,
|
|
281
|
+
signals: args.signals ?? [],
|
|
195
282
|
});
|
|
196
|
-
const
|
|
197
|
-
|
|
198
|
-
|
|
283
|
+
const wantFields = (args.specs?.length ?? 0) > 0;
|
|
284
|
+
const requestedSignals = args.signals?.length ?? 0;
|
|
285
|
+
const unresolved = watchResult.unresolved_signals ?? [];
|
|
286
|
+
const warnings = [];
|
|
287
|
+
if (wantFields && (watchResult.resolved_fields ?? 0) === 0) {
|
|
288
|
+
warnings.push('0 fields resolved — verify that all node paths in specs exist in the running scene.');
|
|
199
289
|
}
|
|
200
|
-
|
|
290
|
+
if (requestedSignals > 0) {
|
|
291
|
+
// Version-skew detection: without it, dropped signal specs read as
|
|
292
|
+
// "Connected 0 signal(s)" + an empty timeline, and the agent
|
|
293
|
+
// concludes the signals never fired — a confident lie about game
|
|
294
|
+
// behavior. Both stale layers are precisely distinguishable here.
|
|
295
|
+
if (watchResult.connected_signals === undefined) {
|
|
296
|
+
warnings.push('signals were IGNORED: the running addon predates the signal timeline feature — update the godot-mcp addon.');
|
|
297
|
+
}
|
|
298
|
+
else if (watchResult.connected_signals + unresolved.length < requestedSignals) {
|
|
299
|
+
warnings.push(`${requestedSignals - watchResult.connected_signals - unresolved.length} signal spec(s) were dropped in ` +
|
|
300
|
+
'transit: the addon on disk is newer than what the editor has loaded — restart the Godot editor.');
|
|
301
|
+
}
|
|
302
|
+
if (unresolved.length > 0) {
|
|
303
|
+
warnings.push(`unresolved signals: ${unresolved.map((u) => `${u.path}:${u.signal} (${u.reason})`).join(', ')}.`);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Structured with a stable shape (unresolved_signals/warnings always
|
|
307
|
+
// arrays): an agent must branch on unresolved reasons to retry
|
|
308
|
+
// correctly, which prose can't carry reliably.
|
|
309
|
+
return structured({
|
|
310
|
+
started: watchResult.started,
|
|
311
|
+
note: `Sampler started. Call watch_collect after ~${args.duration_ms ?? 1000}ms to get results.`,
|
|
312
|
+
resolved_fields: watchResult.resolved_fields ?? 0,
|
|
313
|
+
connected_signals: watchResult.connected_signals ?? 0,
|
|
314
|
+
unresolved_signals: unresolved,
|
|
315
|
+
warnings,
|
|
316
|
+
});
|
|
201
317
|
}
|
|
202
318
|
case 'watch_collect': {
|
|
203
|
-
|
|
204
|
-
const fields = summarizeWatchRaw(raw);
|
|
205
|
-
return structured({ window_ms: raw.window_ms, sample_count: raw.sample_count, fields });
|
|
319
|
+
return summarizeWatchResponse(await godot.sendCommand('watch_collect'));
|
|
206
320
|
}
|
|
207
321
|
case 'watch_stop': {
|
|
208
|
-
|
|
209
|
-
const fields = summarizeWatchRaw(raw);
|
|
210
|
-
return structured({ window_ms: raw.window_ms, sample_count: raw.sample_count, fields });
|
|
322
|
+
return summarizeWatchResponse(await godot.sendCommand('watch_stop'));
|
|
211
323
|
}
|
|
212
324
|
}
|
|
213
325
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../../src/tools/runtime-state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../../src/tools/runtime-state.ts"],"names":[],"mappings":"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"}
|