@archmax-ai/harness 0.0.0 → 0.1.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/README.md +19 -43
- package/dist/agent.d.ts +0 -11
- package/dist/agent.js.map +1 -1
- package/dist/assembly/index.d.ts +1 -1
- package/dist/assembly/index.js +0 -1
- package/dist/assembly/index.js.map +1 -1
- package/dist/authoring-skill/archmax-harness/README.md +0 -2
- package/dist/authoring-skill/archmax-harness/references/backend-integration.md +8 -9
- package/dist/authoring-skill/archmax-harness/references/cases.md +1 -1
- package/dist/authoring-skill/archmax-harness/references/hook-and-test-scripts.md +2 -2
- package/dist/authoring-skill/archmax-harness/references/wiring.md +1 -1
- package/dist/cli/bootstrap.d.ts +7 -3
- package/dist/cli/bootstrap.js.map +1 -1
- package/dist/cli/state-flow.js +3 -3
- package/dist/cli/state-flow.js.map +1 -1
- package/dist/cli/turn.js +2 -2
- package/dist/cli/turn.js.map +1 -1
- package/dist/cli.js +5 -5
- package/dist/cli.js.map +1 -1
- package/dist/core/events.d.ts +4 -9
- package/dist/core/events.js +5 -5
- package/dist/core/events.js.map +1 -1
- package/dist/core/workspace-context.d.ts +0 -2
- package/dist/core/workspace-context.js +0 -2
- package/dist/core/workspace-context.js.map +1 -1
- package/dist/core/zones.d.ts +0 -2
- package/dist/core/zones.js +0 -2
- package/dist/core/zones.js.map +1 -1
- package/dist/env.d.ts +0 -2
- package/dist/env.js +0 -2
- package/dist/env.js.map +1 -1
- package/dist/index.d.ts +3 -13
- package/dist/index.js +3 -7
- package/dist/index.js.map +1 -1
- package/dist/public/spec.d.ts +3 -1
- package/dist/public/spec.js +3 -1
- package/dist/public/spec.js.map +1 -1
- package/dist/sandbox/executor.js.map +1 -1
- package/dist/sessions/resolve.d.ts +0 -2
- package/dist/sessions/resolve.js +1 -4
- package/dist/sessions/resolve.js.map +1 -1
- package/dist/sessions/resume.d.ts +0 -8
- package/dist/sessions/resume.js +2 -4
- package/dist/sessions/resume.js.map +1 -1
- package/dist/sessions/summary.d.ts +0 -2
- package/dist/sessions/summary.js +1 -1
- package/dist/sessions/summary.js.map +1 -1
- package/dist/testing/assertions.js +1 -5
- package/dist/testing/assertions.js.map +1 -1
- package/dist/testing/case-document.d.ts +1 -7
- package/dist/testing/case-document.js.map +1 -1
- package/dist/testing/case-schema.d.ts +2 -2
- package/dist/testing/case-schema.js +8 -21
- package/dist/testing/case-schema.js.map +1 -1
- package/dist/testing/driver.d.ts +4 -2
- package/dist/testing/driver.js +1 -1
- package/dist/testing/driver.js.map +1 -1
- package/dist/testing/grade.d.ts +2 -2
- package/dist/testing/grade.js +1 -1
- package/dist/testing/interpreter.d.ts +4 -2
- package/dist/testing/interpreter.js.map +1 -1
- package/dist/testing/runner.d.ts +13 -9
- package/dist/testing/runner.js +0 -1
- package/dist/testing/runner.js.map +1 -1
- package/dist/testing/target.d.ts +4 -2
- package/dist/workflow/on-error.js +0 -1
- package/dist/workflow/on-error.js.map +1 -1
- package/dist/workflow/parks.js +9 -13
- package/dist/workflow/parks.js.map +1 -1
- package/dist/workflow/paths.d.ts +0 -1
- package/dist/workflow/paths.js +0 -1
- package/dist/workflow/paths.js.map +1 -1
- package/dist/workflow/session-artifacts.d.ts +1 -3
- package/dist/workflow/session-artifacts.js +1 -2
- package/dist/workflow/session-artifacts.js.map +1 -1
- package/dist/workflow/session-view.d.ts +1 -1
- package/dist/workflow/state.d.ts +2 -14
- package/dist/workflow/state.js +3 -10
- package/dist/workflow/state.js.map +1 -1
- package/dist/workflow/tool-service.js +2 -4
- package/dist/workflow/tool-service.js.map +1 -1
- package/dist/workflow/turn-boundary.js +1 -1
- package/dist/workflow/turn-boundary.js.map +1 -1
- package/package.json +4 -4
- package/dist/behaviour/support.d.ts +0 -232
- package/dist/behaviour/support.js +0 -339
- package/dist/behaviour/support.js.map +0 -1
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared support for the behaviour-level suite.
|
|
3
|
-
*
|
|
4
|
-
* Everything here drives the runtime through the **public API only** — the
|
|
5
|
-
* `../index.js` barrel and `../public/testing.js` — so that an internal
|
|
6
|
-
* restructuring can be verified against these tests without touching them. No
|
|
7
|
-
* test in this directory imports from `src/workflow/*`, `src/machine/*`,
|
|
8
|
-
* `src/kernel/*` or any other internal module.
|
|
9
|
-
*
|
|
10
|
-
* Three pieces:
|
|
11
|
-
*
|
|
12
|
-
* - {@link ScriptedModel}: a fake chat model that replays a queue of turns —
|
|
13
|
-
* tool calls (`archmax_advance`, `archmax_wait`, `write_file`, a delegation
|
|
14
|
-
* tool, …) and final text replies — and records what it was bound with.
|
|
15
|
-
* - {@link makeWorkspace}: writes an authored workspace (workflow.yaml, hooks,
|
|
16
|
-
* skills) into a temp directory, cleaned up by {@link cleanupWorkspaces}.
|
|
17
|
-
* - {@link assemble} / {@link turn}: assemble a governed agent over a memory
|
|
18
|
-
* session store with an event sink, and drive one conversational turn.
|
|
19
|
-
*/
|
|
20
|
-
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
21
|
-
import { tmpdir } from "node:os";
|
|
22
|
-
import { dirname, join, resolve } from "node:path";
|
|
23
|
-
import { stringify as toYaml } from "yaml";
|
|
24
|
-
import { AIMessage } from "@langchain/core/messages";
|
|
25
|
-
import { BaseChatModel } from "@langchain/core/language_models/chat_models";
|
|
26
|
-
import { contentToString, createAgent, createMemorySessionStore, isAiMessage, } from "../index.js";
|
|
27
|
-
/**
|
|
28
|
-
* A model that replays a fixed script of turns. `bindTools` returns the same
|
|
29
|
-
* instance so the cursor is shared across every binding the agent performs —
|
|
30
|
-
* the script is the run's plan, not one binding's. When the script runs out the
|
|
31
|
-
* model replies with a final `done`, so every turn terminates.
|
|
32
|
-
*/
|
|
33
|
-
export class ScriptedModel extends BaseChatModel {
|
|
34
|
-
turns;
|
|
35
|
-
cursor = 0;
|
|
36
|
-
lastBound = [];
|
|
37
|
-
seq = 0;
|
|
38
|
-
/** Tool calls the script actually issued, in order. */
|
|
39
|
-
issued = [];
|
|
40
|
-
/** Every model invocation, in order. */
|
|
41
|
-
calls = [];
|
|
42
|
-
/** What to say when the script is exhausted. */
|
|
43
|
-
fallbackReply;
|
|
44
|
-
/**
|
|
45
|
-
* The id this model was configured to run, as a real client exposes it — what
|
|
46
|
-
* `modelIdOf` reads and what the runtime prices against when a response names
|
|
47
|
-
* no model. Left undefined by default so an existing case is unchanged.
|
|
48
|
-
*/
|
|
49
|
-
model;
|
|
50
|
-
constructor(turns, opts = {}) {
|
|
51
|
-
super({});
|
|
52
|
-
this.turns = turns;
|
|
53
|
-
this.fallbackReply = opts.fallbackReply ?? "done";
|
|
54
|
-
if (opts.model !== undefined)
|
|
55
|
-
this.model = opts.model;
|
|
56
|
-
}
|
|
57
|
-
_llmType() {
|
|
58
|
-
return "archmax-behaviour-scripted";
|
|
59
|
-
}
|
|
60
|
-
/** How many scripted turns are still unplayed. */
|
|
61
|
-
get remaining() {
|
|
62
|
-
return Math.max(0, this.turns.length - this.cursor);
|
|
63
|
-
}
|
|
64
|
-
/** Append turns to the script — for a later conversational turn on the same agent. */
|
|
65
|
-
enqueue(...turns) {
|
|
66
|
-
this.turns.push(...turns);
|
|
67
|
-
}
|
|
68
|
-
bindTools(tools) {
|
|
69
|
-
this.lastBound = tools.map((t) => String(t?.name ?? ""));
|
|
70
|
-
return this;
|
|
71
|
-
}
|
|
72
|
-
async _generate(messages) {
|
|
73
|
-
const system = messages.find((m) => m.getType() === "system");
|
|
74
|
-
this.calls.push({
|
|
75
|
-
tools: [...this.lastBound],
|
|
76
|
-
systemPrompt: system ? contentToString(system.content) : "",
|
|
77
|
-
messageTypes: messages.map((m) => m.getType()),
|
|
78
|
-
});
|
|
79
|
-
// The cursor only moves past a scripted turn: a fallback reply consumes
|
|
80
|
-
// nothing, so turns enqueued later are still played in order.
|
|
81
|
-
const scripted = this.turns[this.cursor];
|
|
82
|
-
if (scripted)
|
|
83
|
-
this.cursor += 1;
|
|
84
|
-
const turn = scripted ?? { reply: this.fallbackReply };
|
|
85
|
-
const usage = turn.usage
|
|
86
|
-
? {
|
|
87
|
-
usage_metadata: {
|
|
88
|
-
input_tokens: turn.usage.input,
|
|
89
|
-
output_tokens: turn.usage.output,
|
|
90
|
-
total_tokens: turn.usage.input + turn.usage.output,
|
|
91
|
-
},
|
|
92
|
-
...(turn.reports ? { response_metadata: { model_name: turn.reports } } : {}),
|
|
93
|
-
}
|
|
94
|
-
: {};
|
|
95
|
-
if ("reply" in turn) {
|
|
96
|
-
const message = new AIMessage({ content: turn.reply, ...usage });
|
|
97
|
-
return { generations: [{ text: turn.reply, message }] };
|
|
98
|
-
}
|
|
99
|
-
const calls = "batch" in turn ? turn.batch : [{ tool: turn.tool, args: turn.args }];
|
|
100
|
-
const toolCalls = calls.map((c) => {
|
|
101
|
-
this.issued.push({ name: c.tool, args: c.args });
|
|
102
|
-
return { id: `call-${++this.seq}`, name: c.tool, args: c.args };
|
|
103
|
-
});
|
|
104
|
-
const message = new AIMessage({ content: "", tool_calls: toolCalls, ...usage });
|
|
105
|
-
return { generations: [{ text: "", message }] };
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
// --- Temp workspaces ----------------------------------------------------------
|
|
109
|
-
const tmpRoots = [];
|
|
110
|
-
/**
|
|
111
|
-
* Write an authored workspace into a fresh temp directory. Values are file
|
|
112
|
-
* contents; a non-string value is serialized as YAML (handy for `workflow.yaml`
|
|
113
|
-
* declared as an object). Returns the root path.
|
|
114
|
-
*/
|
|
115
|
-
export function makeWorkspace(files) {
|
|
116
|
-
const root = mkdtempSync(join(tmpdir(), "archmax-behaviour-"));
|
|
117
|
-
tmpRoots.push(root);
|
|
118
|
-
for (const [rel, contents] of Object.entries(files)) {
|
|
119
|
-
const full = resolve(root, rel);
|
|
120
|
-
mkdirSync(dirname(full), { recursive: true });
|
|
121
|
-
writeFileSync(full, typeof contents === "string" ? contents : toYaml(contents));
|
|
122
|
-
}
|
|
123
|
-
return root;
|
|
124
|
-
}
|
|
125
|
-
/** Remove every workspace {@link makeWorkspace} created. Call from `afterEach`. */
|
|
126
|
-
export function cleanupWorkspaces() {
|
|
127
|
-
while (tmpRoots.length)
|
|
128
|
-
rmSync(tmpRoots.pop(), { recursive: true, force: true });
|
|
129
|
-
}
|
|
130
|
-
/** A `SKILL.md` body with the frontmatter the skill loader requires. */
|
|
131
|
-
export function skillMarkdown(name, description = `The ${name} skill.`) {
|
|
132
|
-
return `---\nname: ${name}\ndescription: ${description}\n---\n\n# ${name}\n`;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* One inline rubric, as the value of a `{ rubric: … }` hook. A rubric is
|
|
136
|
-
* declared on the hook that applies it, so a fixture builds the declaration and
|
|
137
|
-
* drops it straight into a state's `before`/`after`.
|
|
138
|
-
*/
|
|
139
|
-
export function rubricDeclaration(opts = {}) {
|
|
140
|
-
return {
|
|
141
|
-
instructions: opts.instructions ?? "Judge the reply. Reply with a JSON verdict.",
|
|
142
|
-
...(opts.maxIterations !== undefined ? { max_iterations: opts.maxIterations } : {}),
|
|
143
|
-
...(opts.model !== undefined ? { model: opts.model } : {}),
|
|
144
|
-
...(opts.metadata !== undefined ? { metadata: opts.metadata } : {}),
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
/** The default persona file every workspace here carries. */
|
|
148
|
-
export const AGENTS_MD = "# Agent\n\nDo what the workflow says.\n";
|
|
149
|
-
/** Assemble a governed agent over `root` with an event sink and memory storage. */
|
|
150
|
-
export async function assemble(root, opts = {}) {
|
|
151
|
-
const model = opts.model ?? new ScriptedModel(opts.turns ?? []);
|
|
152
|
-
const events = [];
|
|
153
|
-
const store = opts.store ?? createMemorySessionStore();
|
|
154
|
-
const rubricModel = opts.rubricModel;
|
|
155
|
-
const agent = await createAgent({
|
|
156
|
-
workflow: opts.workflow ?? "w",
|
|
157
|
-
...(opts.modelFactory
|
|
158
|
-
? { modelFactory: opts.modelFactory }
|
|
159
|
-
: rubricModel
|
|
160
|
-
? {
|
|
161
|
-
modelFactory: (role) => (role === "agent" ? model : rubricModel),
|
|
162
|
-
}
|
|
163
|
-
: { model: model }),
|
|
164
|
-
onEvent: (event) => events.push(event),
|
|
165
|
-
workspace: { rootDir: root, sessionStore: store },
|
|
166
|
-
...opts.params,
|
|
167
|
-
});
|
|
168
|
-
if (!agent.workflow)
|
|
169
|
-
throw new Error("expected a governed assembly");
|
|
170
|
-
return { agent: agent, model, events, store, root };
|
|
171
|
-
}
|
|
172
|
-
/** Drive one conversational turn on `sessionId`. */
|
|
173
|
-
export async function turn(agent, sessionId, text, opts = {}) {
|
|
174
|
-
const input = {
|
|
175
|
-
messages: [{ role: "user", content: text }],
|
|
176
|
-
...(opts.trigger ? { trigger: opts.trigger } : {}),
|
|
177
|
-
};
|
|
178
|
-
const result = (await agent.invoke(input, {
|
|
179
|
-
configurable: { thread_id: sessionId },
|
|
180
|
-
}));
|
|
181
|
-
const messages = result.messages ?? [];
|
|
182
|
-
return { messages, reply: lastAgentText(messages) };
|
|
183
|
-
}
|
|
184
|
-
/** The final assistant message carrying text, skipping tool results. */
|
|
185
|
-
export function lastAgentText(messages) {
|
|
186
|
-
for (let i = messages.length - 1; i >= 0; i--) {
|
|
187
|
-
const message = messages[i];
|
|
188
|
-
if (!isAiMessage(message))
|
|
189
|
-
continue;
|
|
190
|
-
const text = contentToString(message.content).trim();
|
|
191
|
-
if (text)
|
|
192
|
-
return text;
|
|
193
|
-
}
|
|
194
|
-
return "";
|
|
195
|
-
}
|
|
196
|
-
/** The type of a message (`ai`, `human`, `tool`, `system`), read across shapes. */
|
|
197
|
-
export function messageType(message) {
|
|
198
|
-
const msg = message;
|
|
199
|
-
const t = msg._getType?.call(msg) ??
|
|
200
|
-
msg.getType?.call(msg) ??
|
|
201
|
-
msg.type ??
|
|
202
|
-
msg.role ??
|
|
203
|
-
"";
|
|
204
|
-
return String(t);
|
|
205
|
-
}
|
|
206
|
-
/** Tool results in a transcript: `{ name, content, status }`. */
|
|
207
|
-
export function toolResults(messages) {
|
|
208
|
-
return messages
|
|
209
|
-
.filter((m) => messageType(m) === "tool")
|
|
210
|
-
.map((m) => {
|
|
211
|
-
const msg = m;
|
|
212
|
-
return {
|
|
213
|
-
name: String(msg.name ?? ""),
|
|
214
|
-
content: contentToString(msg.content),
|
|
215
|
-
...(msg.status ? { status: msg.status } : {}),
|
|
216
|
-
};
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
// --- Event selectors ----------------------------------------------------------
|
|
220
|
-
/** Events of one type, narrowed. */
|
|
221
|
-
export function eventsOf(events, type) {
|
|
222
|
-
return events.filter((e) => e.type === type);
|
|
223
|
-
}
|
|
224
|
-
/** The states entered, in order. */
|
|
225
|
-
export function statesEntered(events) {
|
|
226
|
-
return eventsOf(events, "state-enter").map((e) => e.state);
|
|
227
|
-
}
|
|
228
|
-
/** The agent-driven transitions (`from -> to`), in order — the opening arrival excluded. */
|
|
229
|
-
export function advances(events) {
|
|
230
|
-
return eventsOf(events, "advance")
|
|
231
|
-
.filter((e) => e.from !== "__start__")
|
|
232
|
-
.map((e) => ({ from: e.from, to: e.to, ...(e.reason ? { reason: e.reason } : {}) }));
|
|
233
|
-
}
|
|
234
|
-
/** Names of the tools governance refused, in order. */
|
|
235
|
-
export function blockedTools(events) {
|
|
236
|
-
return eventsOf(events, "tool-blocked").map((e) => e.tool);
|
|
237
|
-
}
|
|
238
|
-
/** Events emitted for one session only. */
|
|
239
|
-
export function forSession(events, sessionId) {
|
|
240
|
-
return events.filter((e) => e.sessionId === sessionId);
|
|
241
|
-
}
|
|
242
|
-
// --- Spec builders ------------------------------------------------------------
|
|
243
|
-
/**
|
|
244
|
-
* A two-state linear machine: `start` (manual) → `done` (terminal), with the
|
|
245
|
-
* runtime contract pinned. Extra keys are merged into the spec root.
|
|
246
|
-
*/
|
|
247
|
-
export function linearSpec(extra = {}) {
|
|
248
|
-
return {
|
|
249
|
-
runtime: { engine: "archmax-harness", version: "2" },
|
|
250
|
-
states: {
|
|
251
|
-
start: { triggers: { manual: null }, transitions: [{ to: "done", description: "Test edge to done." }] },
|
|
252
|
-
done: {},
|
|
253
|
-
},
|
|
254
|
-
...extra,
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
/** The scripted turn that advances `to` with a reason. */
|
|
258
|
-
export function advanceTo(to, reason = `moving to ${to}`) {
|
|
259
|
-
return { tool: "archmax_advance", args: { to, reason } };
|
|
260
|
-
}
|
|
261
|
-
/** A workspace with a persona and one workflow spec under `workflows/w/`. */
|
|
262
|
-
export function workspaceWith(spec, extraFiles = {}) {
|
|
263
|
-
return makeWorkspace({
|
|
264
|
-
"AGENTS.md": AGENTS_MD,
|
|
265
|
-
"workflows/w/workflow.yaml": spec,
|
|
266
|
-
...extraFiles,
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* A fake model for the `rubric` role that answers each dispatch with the next
|
|
271
|
-
* scripted verdict. When the framework binds a structured-output tool
|
|
272
|
-
* (`extract-*`) it is called with the verdict; otherwise the verdict is the reply
|
|
273
|
-
* text as JSON — both reach the lifecycle runner as a parseable verdict.
|
|
274
|
-
*/
|
|
275
|
-
export class JudgeModel extends BaseChatModel {
|
|
276
|
-
verdicts;
|
|
277
|
-
fallback;
|
|
278
|
-
failWith;
|
|
279
|
-
cursor = 0;
|
|
280
|
-
lastBound = [];
|
|
281
|
-
seq = 0;
|
|
282
|
-
/** How many times the judge was asked. */
|
|
283
|
-
get dispatches() {
|
|
284
|
-
return this.calls;
|
|
285
|
-
}
|
|
286
|
-
calls = 0;
|
|
287
|
-
constructor(verdicts, fallback = { verdict: "ok", reason: "fine" },
|
|
288
|
-
/**
|
|
289
|
-
* Fail every dispatch instead of answering — how an unusable `model` id
|
|
290
|
-
* surfaces, since a bad id is refused at invocation, not construction.
|
|
291
|
-
*/
|
|
292
|
-
failWith) {
|
|
293
|
-
super({});
|
|
294
|
-
this.verdicts = verdicts;
|
|
295
|
-
this.fallback = fallback;
|
|
296
|
-
this.failWith = failWith;
|
|
297
|
-
}
|
|
298
|
-
_llmType() {
|
|
299
|
-
return "archmax-behaviour-judge";
|
|
300
|
-
}
|
|
301
|
-
bindTools(tools) {
|
|
302
|
-
this.lastBound = tools.map((t) => String(t?.name ?? ""));
|
|
303
|
-
return this;
|
|
304
|
-
}
|
|
305
|
-
async _generate() {
|
|
306
|
-
this.calls += 1;
|
|
307
|
-
if (this.failWith)
|
|
308
|
-
throw new Error(this.failWith);
|
|
309
|
-
const verdict = this.verdicts[this.cursor++] ?? this.fallback;
|
|
310
|
-
const extract = this.lastBound.find((name) => name.startsWith("extract-"));
|
|
311
|
-
if (extract) {
|
|
312
|
-
const message = new AIMessage({
|
|
313
|
-
content: "",
|
|
314
|
-
tool_calls: [{ id: `judge-${++this.seq}`, name: extract, args: { ...verdict } }],
|
|
315
|
-
});
|
|
316
|
-
return { generations: [{ text: "", message }] };
|
|
317
|
-
}
|
|
318
|
-
const text = JSON.stringify(verdict);
|
|
319
|
-
return { generations: [{ text, message: new AIMessage(text) }] };
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
// --- Store access -------------------------------------------------------------
|
|
323
|
-
/** Read one file from a session store by store-relative path, or `undefined`. */
|
|
324
|
-
export async function storeFile(store, path) {
|
|
325
|
-
const result = await store.backend.readRaw(path);
|
|
326
|
-
const data = result.data;
|
|
327
|
-
return typeof data?.content === "string" ? data.content : undefined;
|
|
328
|
-
}
|
|
329
|
-
// --- Session ids ---------------------------------------------------------------
|
|
330
|
-
let sessionSeq = 0;
|
|
331
|
-
/**
|
|
332
|
-
* A session id no other test in this process has used. Sandbox REPL sessions
|
|
333
|
-
* and other per-session resources are keyed by session id for the life of the
|
|
334
|
-
* process, so tests that run hooks or scripts must not share one.
|
|
335
|
-
*/
|
|
336
|
-
export function freshSessionId(prefix = "s") {
|
|
337
|
-
return `${prefix}-${process.pid}-${++sessionSeq}`;
|
|
338
|
-
}
|
|
339
|
-
//# sourceMappingURL=support.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/behaviour/support.ts"],"names":[],"mappings":"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"}
|