@sapiom/harness 0.2.2 → 0.2.4

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/CHANGELOG.md CHANGED
@@ -1,5 +1,56 @@
1
1
  # @sapiom/harness
2
2
 
3
+ ## 0.2.4
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [a1e0e4f]
8
+ - Updated dependencies [a1e0e4f]
9
+ - @sapiom/agent@0.8.0
10
+ - @sapiom/agent-core@0.9.12
11
+
12
+ ## 0.2.3
13
+
14
+ ### Patch Changes
15
+
16
+ - a258741: Deploy now links (or creates) the remote agent for a project that has never
17
+ been linked, instead of failing.
18
+
19
+ A gallery-template clone lands with `sapiom.json` carrying its fork provenance
20
+ and no `definitionId` — by design, since the definition was always meant to be
21
+ created at deploy. That half was missing, so `POST /api/workflows/:id/deploy`
22
+ answered 409 "workflow is not linked to a Sapiom agent" and the Deploy button
23
+ could not succeed on a fresh template.
24
+
25
+ The route now resolves-or-creates the agent first (`link({ create: true })`,
26
+ which matches an existing definition by name/slug before creating one, so
27
+ re-deploying never duplicates it), caches the id in `sapiom.json`, and continues
28
+ into the build. The stream gains a non-terminal `linking` line so the UI can say
29
+ what it is doing; terminal lines are unchanged. The agent is named after its
30
+ declared `defineAgent({ name })` where resolvable, falling back to the cached
31
+ name or the workflow's own name. An unparseable `sapiom.json` still 409s — now
32
+ with a message that says so, because creating a remote agent we could not
33
+ record would orphan it.
34
+
35
+ Caching the newly-linked id in `sapiom.json` is best-effort: the file is a
36
+ re-resolvable cache and `link` re-resolves the same agent by name, so a failed
37
+ write (read-only checkout, a permissions error, the config turning invalid
38
+ between the initial check and this write) must not cost the user their build.
39
+ On that path the stream emits a non-terminal `warning` line instead of failing
40
+ — the agent was created on Sapiom but not recorded locally, so the Deployed
41
+ chip will not flip and the next deploy re-links, but nothing is duplicated
42
+ because `link` resolves the same agent again. The SPA renders both the
43
+ `linking` and `warning` lines, and a double-click on Deploy can no longer
44
+ create two remote agents for the same project.
45
+
46
+ Because linking matches by name, two gallery clones of the same template —
47
+ which share the same declared `defineAgent({ name })` — resolve to the same
48
+ remote agent, so deploying the second one replaces the first's build; this is
49
+ inherent to link-by-name (unchanged from `sapiom agents link --create`), not
50
+ a new bug, but it's now reachable from a single button click.
51
+ - @sapiom/agent@0.7.1
52
+ - @sapiom/agent-core@0.9.11
53
+
3
54
  ## 0.2.2
4
55
 
5
56
  ### Patch Changes
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The name to give a server-side agent the deploy route has to create for a
3
+ * project that was never linked (a gallery-template clone).
4
+ *
5
+ * The honest answer is the agent's own `defineAgent({ name })`, which the
6
+ * canvas extraction already surfaces as `graph.manifestName` — and which the
7
+ * registry stores as `definitionSlug` and `sapiom.json` caches as `name`. Read
8
+ * through the fingerprint cache (core/canvas-cache.ts), so this is normally
9
+ * free: the canvas renders on bind, so the extraction is already warm.
10
+ *
11
+ * Never throws and never blocks a deploy: any failure (no `node_modules` yet,
12
+ * a bundle error, the check process timing out) comes back as null and the
13
+ * caller falls back to a weaker name source.
14
+ */
15
+ import { extractWorkflowGraphCached } from "./canvas-cache.js";
16
+ export declare function resolveManifestName(projectDir: string, extract?: typeof extractWorkflowGraphCached): Promise<string | null>;
17
+ //# sourceMappingURL=definition-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition-name.d.ts","sourceRoot":"","sources":["../../src/core/definition-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,OAAO,0BAAuD,GACtE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASxB"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The name to give a server-side agent the deploy route has to create for a
3
+ * project that was never linked (a gallery-template clone).
4
+ *
5
+ * The honest answer is the agent's own `defineAgent({ name })`, which the
6
+ * canvas extraction already surfaces as `graph.manifestName` — and which the
7
+ * registry stores as `definitionSlug` and `sapiom.json` caches as `name`. Read
8
+ * through the fingerprint cache (core/canvas-cache.ts), so this is normally
9
+ * free: the canvas renders on bind, so the extraction is already warm.
10
+ *
11
+ * Never throws and never blocks a deploy: any failure (no `node_modules` yet,
12
+ * a bundle error, the check process timing out) comes back as null and the
13
+ * caller falls back to a weaker name source.
14
+ */
15
+ import { extractWorkflowGraphCached } from "./canvas-cache.js";
16
+ export async function resolveManifestName(projectDir, extract = extractWorkflowGraphCached) {
17
+ try {
18
+ const { result } = await extract(projectDir);
19
+ if (!result.ok)
20
+ return null;
21
+ return result.graph.manifestName.trim() || null;
22
+ }
23
+ catch {
24
+ // Extraction is best-effort here — a name is a nicety, a deploy is not.
25
+ return null;
26
+ }
27
+ }
28
+ //# sourceMappingURL=definition-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition-name.js","sourceRoot":"","sources":["../../src/core/definition-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB,EAClB,UAA6C,0BAA0B;IAEvE,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAC5B,OAAO,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -24,7 +24,7 @@
24
24
  * API key and makes no network call, so it works signed-out and at zero cost.
25
25
  */
26
26
  import { Router } from "express";
27
- import { createClient, deploy as coreDeploy, run as coreRun, readConfig as coreReadConfig } from "@sapiom/agent-core";
27
+ import { createClient, deploy as coreDeploy, link as coreLink, run as coreRun, readConfig as coreReadConfig, writeConfig as coreWriteConfig } from "@sapiom/agent-core";
28
28
  import { type ApiKeyProvider } from "../core/api-key-provider.js";
29
29
  /**
30
30
  * A registered workflow the actions router can act on — the subset of
@@ -35,13 +35,29 @@ import { type ApiKeyProvider } from "../core/api-key-provider.js";
35
35
  export interface ActionWorkflow {
36
36
  /** Absolute path to the agent project directory (deploy's `projectDir`). */
37
37
  path: string;
38
+ /**
39
+ * Registry display name (`package.json`'s `name`, else the folder basename).
40
+ * Optional so a host that only knows the path still works; used as a
41
+ * mid-priority fallback when naming an agent this route has to create.
42
+ */
43
+ name?: string;
38
44
  }
39
45
  /**
40
- * One line of the deploy NDJSON stream. `building` is emitted once the build is
41
- * triggered; exactly one terminal line (`ready` | `error`) closes the stream.
42
- * `capability`-agnostic and credential-free by construction.
46
+ * One line of the deploy NDJSON stream. `linking` is emitted only when the
47
+ * project had no `definitionId` and the route is resolving-or-creating its
48
+ * remote agent; `warning` is non-terminal and advisory — it never replaces a
49
+ * terminal line and may appear alongside either outcome (e.g. linking
50
+ * succeeded but caching the id in `sapiom.json` failed); `building` is emitted
51
+ * once the build is triggered; exactly one terminal line (`ready` | `error`)
52
+ * closes the stream. `capability`-agnostic and credential-free by construction.
43
53
  */
44
54
  export type DeployStreamEvent = {
55
+ phase: "linking";
56
+ name: string;
57
+ } | {
58
+ phase: "warning";
59
+ message: string;
60
+ } | {
45
61
  phase: "building";
46
62
  definitionId: string;
47
63
  } | {
@@ -65,6 +81,10 @@ export interface ActionsCoreDeps {
65
81
  deploy: typeof coreDeploy;
66
82
  run: typeof coreRun;
67
83
  readConfig: typeof coreReadConfig;
84
+ /** Resolve-or-create the server-side agent for an unlinked project. */
85
+ link: typeof coreLink;
86
+ /** Cache the linked id back into `sapiom.json` (merges; never clobbers). */
87
+ writeConfig: typeof coreWriteConfig;
68
88
  }
69
89
  /**
70
90
  * The slice of node's ChildProcess the run-local route uses — injectable so
@@ -157,6 +177,30 @@ export interface ActionsRouterOpts {
157
177
  * registry — the router does not read the registry directly.
158
178
  */
159
179
  resolveWorkflow: (id: string) => ActionWorkflow | null;
180
+ /**
181
+ * The agent's DECLARED name (`defineAgent({ name })`) for a project the route
182
+ * has to link on the fly, or null when it cannot be determined. Optional: the
183
+ * route falls back to `sapiom.json`'s cached name, then
184
+ * {@link ActionWorkflow.name}, then the project folder's basename.
185
+ *
186
+ * A seam rather than a direct call so this router keeps knowing nothing about
187
+ * the canvas extraction cache (see core/definition-name.ts, which
188
+ * `server/index.ts` wires in here). Never expected to throw — a rejection is
189
+ * treated as "could not determine".
190
+ */
191
+ resolveDefinitionName?: (workflow: ActionWorkflow) => Promise<string | null>;
192
+ /**
193
+ * Called after the route has linked a previously-unlinked project and cached
194
+ * its new `definitionId`, so the host can refresh whatever it derives from
195
+ * `sapiom.json`. The registry's `list()` never re-reads the file and the
196
+ * workspace watcher ignores a content-only edit, so without this a
197
+ * first-time deploy leaves the SPA showing "Draft" with Prod Run gated.
198
+ *
199
+ * A seam rather than a direct call so this router keeps knowing nothing about
200
+ * the workflow registry (`server/index.ts` wires it). Never expected to
201
+ * throw — a rejection must not cost the user their build.
202
+ */
203
+ onLinked?: (workflow: ActionWorkflow) => Promise<void>;
160
204
  /** Injectable core operations. Test seam; defaults to the real exports. */
161
205
  coreDeps?: Partial<ActionsCoreDeps>;
162
206
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"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"}
@@ -25,10 +25,10 @@
25
25
  */
26
26
  import { spawn as spawnChildProcess } from "node:child_process";
27
27
  import { createInterface } from "node:readline";
28
- import { dirname, join } from "node:path";
28
+ import { basename, dirname, join } from "node:path";
29
29
  import { fileURLToPath } from "node:url";
30
30
  import { Router } from "express";
31
- import { AgentOperationError, createClient, deploy as coreDeploy, run as coreRun, readConfig as coreReadConfig, } from "@sapiom/agent-core";
31
+ import { AgentOperationError, createClient, deploy as coreDeploy, link as coreLink, run as coreRun, readConfig as coreReadConfig, writeConfig as coreWriteConfig, } from "@sapiom/agent-core";
32
32
  import { resolveCoreBaseUrl } from "../core/definition-slug-resolver.js";
33
33
  import { HOST_ESBUILD_PIN, unpackedPath } from "../core/asar-path.js";
34
34
  import { staticApiKeyProvider, } from "../core/api-key-provider.js";
@@ -37,6 +37,8 @@ const DEFAULT_CORE_DEPS = {
37
37
  deploy: coreDeploy,
38
38
  run: coreRun,
39
39
  readConfig: coreReadConfig,
40
+ link: coreLink,
41
+ writeConfig: coreWriteConfig,
40
42
  };
41
43
  /**
42
44
  * Resolve the compiled run-local bootstrap entry. This module lives at
@@ -134,23 +136,18 @@ function parseRunLocalBody(body) {
134
136
  : undefined,
135
137
  };
136
138
  }
137
- /**
138
- * Extract the linked `definitionId` from a project's `sapiom.json`. The config
139
- * file — not the registry — is the source of truth for a project's server-side
140
- * definition id, so both deploy and (a future) resolve path read it here. Never
141
- * throws: an unlinked/unreadable project returns null and the route maps that to
142
- * a 409.
143
- */
144
- function readDefinitionId(readConfig, projectDir) {
139
+ function readProjectConfigState(readConfig, projectDir) {
145
140
  let config;
146
141
  try {
147
142
  config = readConfig(projectDir);
148
143
  }
149
144
  catch {
150
- // BAD_CONFIG (unparseable sapiom.json) — treat as "not linked" for the route.
151
- return null;
145
+ return { kind: "bad-config" };
152
146
  }
153
- return config?.definitionId ?? null;
147
+ const definitionId = config?.definitionId;
148
+ if (definitionId)
149
+ return { kind: "linked", definitionId };
150
+ return config?.name ? { kind: "unlinked", name: config.name } : { kind: "unlinked" };
154
151
  }
155
152
  /**
156
153
  * Map an {@link AgentOperationError} (or any thrown value) to a terminal deploy
@@ -243,12 +240,16 @@ export function createActionsRouter(opts) {
243
240
  * pushes the synthesized tree, triggers a build, and polls to a terminal
244
241
  * status — all inside @sapiom/agent-core's {@link deploy}. Streams NDJSON: a
245
242
  * `building` line up front, then exactly one terminal `ready`/`error` line.
243
+ * A project with no `definitionId` yet is linked on the fly first (a
244
+ * `linking` line precedes `building`) rather than rejected; if the resolved
245
+ * agent's id could not be cached in `sapiom.json`, a non-terminal `warning`
246
+ * line follows before `building` continues.
246
247
  *
247
248
  * 200 NDJSON stream (even a build failure is a 200 with a terminal `error`
248
249
  * line — the request itself succeeded; the build outcome is in-band).
249
250
  * 400 id missing/empty
250
251
  * 404 workflow id not registered
251
- * 409 workflow is not linked to a Sapiom agent (no definitionId)
252
+ * 409 sapiom.json is unparseable
252
253
  * 503 harness is not signed in to Sapiom
253
254
  */
254
255
  router.post("/api/workflows/:id/deploy", async (req, res) => {
@@ -266,11 +267,9 @@ export function createActionsRouter(opts) {
266
267
  res.status(404).json({ error: "workflow not found" });
267
268
  return;
268
269
  }
269
- const definitionId = readDefinitionId(deps.readConfig, workflow.path);
270
- if (!definitionId) {
271
- res
272
- .status(409)
273
- .json({ error: "workflow is not linked to a Sapiom agent" });
270
+ const configState = readProjectConfigState(deps.readConfig, workflow.path);
271
+ if (configState.kind === "bad-config") {
272
+ res.status(409).json({ error: "sapiom.json is not valid JSON" });
274
273
  return;
275
274
  }
276
275
  // From here the outcome is streamed in-band as NDJSON — status is 200 and
@@ -281,8 +280,68 @@ export function createActionsRouter(opts) {
281
280
  const write = (event) => {
282
281
  res.write(JSON.stringify(event) + "\n");
283
282
  };
284
- write({ phase: "building", definitionId });
283
+ /**
284
+ * The definition id to build against: the linked one, or a freshly
285
+ * resolved-or-created one for a project that has never been linked (a
286
+ * gallery-template clone lands exactly this way — `clone` writes the fork
287
+ * provenance and leaves `definitionId` for deploy to fill in).
288
+ *
289
+ * `link({ create: true })` matches an existing remote agent by name/slug
290
+ * BEFORE creating one, so this is resync-or-create: re-deploying never
291
+ * duplicates an agent, and a template already deployed from another machine
292
+ * re-attaches to the same definition.
293
+ */
294
+ const ensureDefinitionId = async () => {
295
+ if (configState.kind === "linked")
296
+ return configState.definitionId;
297
+ const fromSeam = opts.resolveDefinitionName
298
+ ? await opts.resolveDefinitionName(workflow).catch(() => null)
299
+ : null;
300
+ const name = fromSeam?.trim() ||
301
+ configState.name?.trim() ||
302
+ workflow.name?.trim() ||
303
+ basename(workflow.path);
304
+ write({ phase: "linking", name });
305
+ // Same refresh-on-rejected-key recovery the build gets; the retry is
306
+ // transparent to the stream (no second linking line).
307
+ const linked = await withKeyRefreshRetry(provider, clientFor, (client) => deps.link({ name, create: true }, client));
308
+ // Cache under the name the SERVER settled on, matching what
309
+ // `sapiom agents link` writes. writeConfig merges, so the clone's
310
+ // forkId/templateId/repoFullName survive.
311
+ //
312
+ // Best-effort: sapiom.json is a re-resolvable cache (agent-core's
313
+ // config.ts) and `link` re-resolves the same agent by name, so a failed
314
+ // write here (read-only checkout, EACCES, a config that turned invalid
315
+ // between the 409 check above and this write) must not cost the user
316
+ // their deploy — warn and carry on with the id already in hand.
317
+ try {
318
+ deps.writeConfig(workflow.path, {
319
+ definitionId: linked.definitionId,
320
+ name: linked.name,
321
+ });
322
+ }
323
+ catch (cacheErr) {
324
+ write({
325
+ phase: "warning",
326
+ message: `The agent "${linked.name}" was created on Sapiom (${linked.definitionId}) but not recorded locally: ${cacheErr instanceof Error ? cacheErr.message : String(cacheErr)}. The build continues; re-deploying re-resolves it by name.`,
327
+ });
328
+ }
329
+ // Best-effort, same as the cache write above, and run whether or not it
330
+ // succeeded: a rescan is harmless either way, and there is nothing new to
331
+ // re-read when the write failed. Without this, the registry's list()
332
+ // never re-reads sapiom.json and the workspace watcher ignores a
333
+ // content-only edit, so the SPA would keep showing "Draft" after the
334
+ // very first successful deploy of a project.
335
+ if (opts.onLinked)
336
+ await opts.onLinked(workflow).catch(() => undefined);
337
+ return linked.definitionId;
338
+ };
285
339
  try {
340
+ // A link failure throws out of here and is mapped by the same
341
+ // toDeployErrorEvent below — reported as itself, never as a build
342
+ // failure, and `deploy` is never reached.
343
+ const definitionId = await ensureDefinitionId();
344
+ write({ phase: "building", definitionId });
286
345
  // Auth against the live key, refreshing + retrying once on a rejected key
287
346
  // (same recovery the runs router gets). The building/terminal streaming
288
347
  // shape is unchanged — the retry is transparent to the NDJSON stream.
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,KAAK,IAAI,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,MAAM,IAAI,UAAU,EACpB,IAAI,IAAI,QAAQ,EAChB,GAAG,IAAI,OAAO,EACd,UAAU,IAAI,cAAc,EAC5B,WAAW,IAAI,eAAe,GAK/B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAEL,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAmDrC,MAAM,iBAAiB,GAAoB;IACzC,YAAY;IACZ,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,OAAO;IACZ,UAAU,EAAE,cAAc;IAC1B,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,eAAe;CAC7B,CAAC;AAsBF;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAAC,SAAiB;IAC5D,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,sBAAsB,GAAG,EAAE,CAAC,CAAC;AACxE,CAAC;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAiB,EACjB,OAA0E;IAE1E,MAAM,SAAS,GAAG,YAAY,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpC,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC;QAChC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChB,gFAAgF;IAChF,iFAAiF;IACjF,gFAAgF;IAChF,8EAA8E;IAC9E,wDAAwD;IACxD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAClC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,gBAAgB,CAAC,CACxE,CAAC;IACF,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,QAAQ;QACzB,IAAI;QACJ,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtE,GAAG,EAAE;YACH,GAAG,SAAS;YACZ,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D;KACF,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,SAAS,oBAAoB;IAC3B,MAAM,IAAI,GAAG,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACrD,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAC/C,CAAC,CAAC;IACH,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;QAChD,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AAED,wEAAwE;AACxE,MAAM,2BAA2B,GAAG,IAAK,CAAC;AAE1C;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAa;IACtC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,CAAC,GAAG,IAA+B,CAAC;IAC1C,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC9E,OAAO;QACL,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,KAAiC;QAC1C,kBAAkB,EAChB,OAAO,CAAC,CAAC,kBAAkB,KAAK,QAAQ;YACtC,CAAC,CAAC,CAAC,CAAC,kBAAkB;YACtB,CAAC,CAAC,SAAS;KAChB,CAAC;AACJ,CAAC;AA4ED,SAAS,sBAAsB,CAC7B,UAAiC,EACjC,UAAkB;IAElB,IAAI,MAA2B,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IAChC,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,EAAE,YAAY,CAAC;IAC1C,IAAI,YAAY;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IAC1D,OAAO,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACvF,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CACzB,GAAY;IAEZ,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;QACvC,OAAO;YACL,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;KAC1D,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,GAAY;IACxC,OAAO,CACL,GAAG,YAAY,mBAAmB;QAClC,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,CACrD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,mBAAmB,CAChC,QAAwB,EACxB,eAAoE,EACpE,MAA+D;IAE/D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IACjC,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,MAAO,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;YAAE,MAAM,GAAG,CAAC;QAC1C,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,MAAM;YAAE,MAAM,GAAG,CAAC;QAClD,OAAO,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IACzD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,IAAI,GAAoB,EAAE,GAAG,iBAAiB,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,kBAAkB,EAAE,CAAC;IACzD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,oBAAoB,CAAC;IACjE,0EAA0E;IAC1E,2EAA2E;IAC3E,6EAA6E;IAC7E,qEAAqE;IACrE,MAAM,QAAQ,GACZ,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QACrD,CAAC,CAAC,IAAI,CAAC,MAAM;QACb,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,4EAA4E;IAC5E,MAAM,SAAS,GAAG,CAAC,MAAc,EAAmC,EAAE,CACpE,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAE/C;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1D,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,0EAA0E;QAC1E,kEAAkE;QAClE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,qCAAqC,CAAC,CAAC;QACrE,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,CAAC,KAAwB,EAAQ,EAAE;YAC/C,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF;;;;;;;;;;WAUG;QACH,MAAM,kBAAkB,GAAG,KAAK,IAAqB,EAAE;YACrD,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,WAAW,CAAC,YAAY,CAAC;YAEnE,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB;gBACzC,CAAC,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gBAC9D,CAAC,CAAC,IAAI,CAAC;YACT,MAAM,IAAI,GACR,QAAQ,EAAE,IAAI,EAAE;gBAChB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;gBACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE;gBACrB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE1B,KAAK,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClC,qEAAqE;YACrE,sDAAsD;YACtD,MAAM,MAAM,GAAe,MAAM,mBAAmB,CAClD,QAAQ,EACR,SAAS,EACT,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CACtD,CAAC;YACF,4DAA4D;YAC5D,kEAAkE;YAClE,0CAA0C;YAC1C,EAAE;YACF,kEAAkE;YAClE,wEAAwE;YACxE,uEAAuE;YACvE,qEAAqE;YACrE,gEAAgE;YAChE,IAAI,CAAC;gBACH,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAC9B,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,KAAK,CAAC;oBACJ,KAAK,EAAE,SAAS;oBAChB,OAAO,EACL,cAAc,MAAM,CAAC,IAAI,4BAA4B,MAAM,CAAC,YAAY,+BAA+B,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,6DAA6D;iBACtO,CAAC,CAAC;YACL,CAAC;YACD,wEAAwE;YACxE,0EAA0E;YAC1E,qEAAqE;YACrE,iEAAiE;YACjE,qEAAqE;YACrE,6CAA6C;YAC7C,IAAI,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACxE,OAAO,MAAM,CAAC,YAAY,CAAC;QAC7B,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,8DAA8D;YAC9D,kEAAkE;YAClE,0CAA0C;YAC1C,MAAM,YAAY,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAChD,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;YAC3C,0EAA0E;YAC1E,wEAAwE;YACxE,sEAAsE;YACtE,MAAM,MAAM,GAAiB,MAAM,mBAAmB,CACpD,QAAQ,EACR,SAAS,EACT,CAAC,MAAM,EAAE,EAAE,CACT,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,MAAM,CAAC,CACnE,CAAC;YACF,KAAK,CAAC;gBACJ,KAAK,EAAE,OAAO;gBACd,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAG3B,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACnE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,0EAA0E;YAC1E,qEAAqE;YACrE,MAAM,MAAM,GAAc,MAAM,mBAAmB,CACjD,QAAQ,EACR,SAAS,EACT,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAClE,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;gBACvC,uEAAuE;gBACvE,yEAAyE;gBACzE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,GAAG;qBACA,MAAM,CAAC,GAAG,CAAC;qBACX,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,IAAI,KAA2B,CAAC;QAChC,IAAI,CAAC;YACH,KAAK,GAAG,aAAa,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sEAAsE;YACtE,wEAAwE;YACxE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,qCAAqC,CAAC,CAAC;YACrE,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YAC3C,GAAG,CAAC,KAAK,CACP,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,QAAQ;gBACjB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,GAAG,IAAI,CACV,CAAC;YACF,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,mEAAmE;QACnE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,qCAAqC,CAAC,CAAC;QACrE,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAE3C,yEAAyE;QACzE,yBAAyB;QACzB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAE1C,4EAA4E;QAC5E,4EAA4E;QAC5E,wEAAwE;QACxE,4EAA4E;QAC5E,wDAAwD;QACxD,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,CAAC,IAAY,EAAQ,EAAE;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,OAAO,KAAK,EAAE;gBAAE,OAAO;YAC3B,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,6CAA6C;YACvD,CAAC;YACD,uEAAuE;YACvE,8CAA8C;YAC9C,MAAM,IAAI,GAAI,MAA6B,CAAC,IAAI,CAAC;YACjD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO;gBAAE,eAAe,GAAG,IAAI,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEF,0EAA0E;QAC1E,2DAA2D;QAC3D,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;YAClD,UAAU,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAC7C,CAAC,2BAA2B,CAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,yEAAyE;QACzE,6EAA6E;QAC7E,8EAA8E;QAC9E,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,WAAW,GAAkB,IAAI,CAAC;QACtC,MAAM,MAAM,GAAG,GAAS,EAAE;YACxB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,2EAA2E;YAC3E,yEAAyE;YACzE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,GAAG,CAAC,KAAK,CACP,IAAI,CAAC,SAAS,CAAC;oBACb,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,QAAQ;oBACjB,KAAK,EACH,UAAU,CAAC,IAAI,EAAE,IAAI,WAAW,IAAI,8BAA8B;iBACrE,CAAC,GAAG,IAAI,CACV,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,yEAAyE;QACzE,2EAA2E;QAC3E,6EAA6E;QAC7E,mCAAmC;QACnC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACvD,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACzB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,WAAW,KAAX,WAAW,GAAK,sCAAsC,IAAI,IAAI,MAAM,EAAE,EAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC1B,MAAM,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,WAAW,KAAX,WAAW,GAAK,sCAAsC,IAAI,IAAI,MAAM,EAAE,EAAC;gBACvE,MAAM,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,KAAK,EAEV,QAAQ,EACR,cAAc,EACd,WAAW,EAKZ,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,cAAc,EACd,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAuCpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAkFtD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAClC,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IACxD;;;;;;;wDAOoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC;;0EAEsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;6CAEyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;+EAE2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;gFAE4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;yEAEqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;uDAMmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;mFAE+E;IAC/E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;gEAG4D;IAC5D,kBAAkB,CAAC,EAAE,WAAW,CAAC;IACjC;;6DAEyD;IACzD,kBAAkB,CAAC,EAAE,WAAW,EAAE,CAAC;IACnC;;+EAE2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC1C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;CAChC;AA8GD,eAAO,MAAM,WAAW,GACtB,SAAS,oBAAoB,KAC5B,OAAO,CAAC,aAAa,CA8qCvB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,KAAK,EAEV,QAAQ,EACR,cAAc,EACd,WAAW,EAKZ,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,cAAc,EACd,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAuCpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAmFtD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAClC,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IACxD;;;;;;;wDAOoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC;;0EAEsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;6CAEyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;+EAE2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;gFAE4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;yEAEqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;uDAMmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;mFAE+E;IAC/E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;gEAG4D;IAC5D,kBAAkB,CAAC,EAAE,WAAW,CAAC;IACjC;;6DAEyD;IACzD,kBAAkB,CAAC,EAAE,WAAW,EAAE,CAAC;IACnC;;+EAE2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC1C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;CAChC;AA8GD,eAAO,MAAM,WAAW,GACtB,SAAS,oBAAoB,KAC5B,OAAO,CAAC,aAAa,CA2rCvB,CAAC"}
@@ -50,6 +50,7 @@ import { renderCanvasForSession } from "../core/canvas-render.js";
50
50
  import { invalidateExtractionCache } from "../core/canvas-cache.js";
51
51
  import { sweepNdjson } from "../core/collector/store-retention.js";
52
52
  import { createDefinitionSlugResolver, resolveAgentsBaseUrl, } from "../core/definition-slug-resolver.js";
53
+ import { resolveManifestName } from "../core/definition-name.js";
53
54
  import { createBootTokenMiddleware } from "./auth.js";
54
55
  import { createApiKeyProvider } from "../core/api-key-provider.js";
55
56
  import { createRestRouter } from "./rest.js";
@@ -910,7 +911,21 @@ export const startServer = async (options) => {
910
911
  apiKey: apiKeyProvider,
911
912
  // coreBaseUrl omitted: the router self-defaults via resolveCoreBaseUrl()
912
913
  // (see actions.ts), which derives the core host from the agents env.
913
- resolveWorkflow: (id) => workflowsCache.find((w) => w.path === id) ?? null,
914
+ resolveWorkflow: (id) => {
915
+ const workflow = workflowsCache.find((w) => w.path === id);
916
+ // `name` is the registry's display name — a fallback for naming an
917
+ // agent the deploy route has to create.
918
+ return workflow ? { path: workflow.path, name: workflow.name } : null;
919
+ },
920
+ // Prefer the agent's DECLARED name when deploy has to create it, read
921
+ // from the same warm extraction cache the canvas renders from.
922
+ resolveDefinitionName: (workflow) => resolveManifestName(workflow.path),
923
+ // A first-time deploy writes definitionId into an existing sapiom.json,
924
+ // which the watcher's directory-set diff cannot see — rescan that project
925
+ // so the Draft→Deployed chip and the deploy-gated actions update.
926
+ onLinked: async (workflow) => {
927
+ await scanWorkflowsAndBroadcast(workflow.path);
928
+ },
914
929
  }));
915
930
  app.use(createWorkflowsRouter(enrichedWorkflowRegistry), createFsRouter(), createMacrosRouter({
916
931
  listMacros: () => DEFAULT_MACROS,