local-operator-ui 0.34.43 → 0.34.45

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.
Files changed (113) hide show
  1. package/out/main/index.js +948 -66
  2. package/out/preload/index.js +234 -18
  3. package/out/renderer/assets/{_basePickBy-CooCYmcM.js → _basePickBy-AOIZJtmP.js} +1 -1
  4. package/out/renderer/assets/{_baseUniq-4qtqmZW_.js → _baseUniq-6rYoQPQm.js} +1 -1
  5. package/out/renderer/assets/{agent-details-page-DNEAnxOm.js → agent-details-page-B9MNIwUW.js} +2 -2
  6. package/out/renderer/assets/agent-hub-page-Bj3VsEfD.js +11 -0
  7. package/out/renderer/assets/agents-page-y_fPy8cB.js +7 -0
  8. package/out/renderer/assets/arc-DEIVtaqP.js +1 -0
  9. package/out/renderer/assets/architectureDiagram-IEHRJDOE-C6lgf3ft.js +36 -0
  10. package/out/renderer/assets/{blockDiagram-JOT3LUYC-DCrmg4AS.js → blockDiagram-JOT3LUYC-rUXOYgBS.js} +6 -6
  11. package/out/renderer/assets/{book-open-C9onOH1C.js → book-open-BWUyDXVa.js} +1 -1
  12. package/out/renderer/assets/browser-page-BENwHsVf.js +1 -0
  13. package/out/renderer/assets/browser-webauthn-prompt-BlawzvV4.js +1 -0
  14. package/out/renderer/assets/{c4Diagram-VJAJSXHY-JN7qYmAl.js → c4Diagram-VJAJSXHY-B5DZCCX3.js} +1 -1
  15. package/out/renderer/assets/channel-vM9rusk9.js +1 -0
  16. package/out/renderer/assets/{chunk-4BMEZGHF-D-g_YScr.js → chunk-4BMEZGHF-LYO-H6gm.js} +1 -1
  17. package/out/renderer/assets/{chunk-A2AXSNBT-B1PwQjty.js → chunk-A2AXSNBT-C-eXpCGB.js} +1 -1
  18. package/out/renderer/assets/{chunk-AEK57VVT-D0YdN5Ie.js → chunk-AEK57VVT-CkjgDW9B.js} +1 -1
  19. package/out/renderer/assets/{chunk-D6G4REZN-BdxlZ78D.js → chunk-D6G4REZN-hAERljt9.js} +1 -1
  20. package/out/renderer/assets/{chunk-RZ5BOZE2-DpgIrz96.js → chunk-RZ5BOZE2-D1aP9fPZ.js} +1 -1
  21. package/out/renderer/assets/{chunk-XZIHB7SX-CkrN_GSN.js → chunk-XZIHB7SX-Chv37Bqx.js} +1 -1
  22. package/out/renderer/assets/classDiagram-GIVACNV2-BCqIuRq4.js +1 -0
  23. package/out/renderer/assets/classDiagram-v2-COTLJTTW-BCqIuRq4.js +1 -0
  24. package/out/renderer/assets/clone-Bj8HwBLn.js +1 -0
  25. package/out/renderer/assets/{console-mirror-D1YYJxrt.js → console-mirror-DF_IQ1r-.js} +14 -14
  26. package/out/renderer/assets/consoleCapture-CAbvxCQS.js +1 -0
  27. package/out/renderer/assets/{conversation-input-sync-Czj2IfIc.js → conversation-input-sync-BdhFw-JY.js} +259 -261
  28. package/out/renderer/assets/dagre-OKDRZEBW-ClDfyejg.js +4 -0
  29. package/out/renderer/assets/diagram-SSKATNLV-BECmfn9C.js +43 -0
  30. package/out/renderer/assets/diagram-VNBRO52H-82BMsx_Z.js +24 -0
  31. package/out/renderer/assets/{erDiagram-Q7BY3M3F-BkfNqIb2.js → erDiagram-Q7BY3M3F-BiCriqsZ.js} +1 -1
  32. package/out/renderer/assets/{error-boundary-YxH9ow-2.js → error-boundary-B4K6A3dS.js} +2 -2
  33. package/out/renderer/assets/{flowDiagram-4HSFHLVR-bHw80L96.js → flowDiagram-4HSFHLVR-D4PQMO6X.js} +1 -1
  34. package/out/renderer/assets/ganttDiagram-APWFNJXF-Rts_QpVD.js +257 -0
  35. package/out/renderer/assets/gitGraphDiagram-7IBYFJ6S-B1rxvfyh.js +65 -0
  36. package/out/renderer/assets/{graph-JbWlVICO.js → graph-DxQCKx-L.js} +1 -1
  37. package/out/renderer/assets/index-BJ-AJLyd.js +804 -0
  38. package/out/renderer/assets/index-BhsV-ipc.js +1 -0
  39. package/out/renderer/assets/index-C7mMgpwT.css +1 -0
  40. package/out/renderer/assets/index-XFXAg7sM.js +7 -0
  41. package/out/renderer/assets/infoDiagram-PH2N3AL5-CDvWuX2O.js +2 -0
  42. package/out/renderer/assets/{installer-BzSW3GXd.js → installer-B4Bd2pBF.js} +1 -1
  43. package/out/renderer/assets/{journeyDiagram-U35MCT3I-ClvPQIft.js → journeyDiagram-U35MCT3I-CnefKX-i.js} +1 -1
  44. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-BZbzppxG.js → kanban-definition-NDS4AKOZ-Kd7aNO4_.js} +1 -1
  45. package/out/renderer/assets/{layout-5OTy0Dif.js → layout-CMQ0zdhs.js} +1 -1
  46. package/out/renderer/assets/legacy-agents-page-PBvD5xd9.js +33 -0
  47. package/out/renderer/assets/{mermaid.core-CPsHLTy1.js → mermaid.core-x5Fva3t5.js} +5 -5
  48. package/out/renderer/assets/mesh-page-IOGN512j.js +1 -0
  49. package/out/renderer/assets/messages-D3mGACg6.js +3 -0
  50. package/out/renderer/assets/mindmap-definition-ALO5MXBD-DJwQ3wYh.js +95 -0
  51. package/out/renderer/assets/mini-DHQCkYmb.js +1 -0
  52. package/out/renderer/assets/{notebook-pen-rCh1XFso.js → notebook-pen-CKFoYavJ.js} +1 -1
  53. package/out/renderer/assets/org-access-_jPzS_wW.js +1 -0
  54. package/out/renderer/assets/org-surface-gate-D29XdDTt.js +1 -0
  55. package/out/renderer/assets/{page-header-DWR3DkBt.js → page-header-D90TvAM5.js} +1 -1
  56. package/out/renderer/assets/pieDiagram-IB7DONF6-CW-ezwOn.js +30 -0
  57. package/out/renderer/assets/projects-page-DGLblpIY.js +45 -0
  58. package/out/renderer/assets/publication-validation-ZquLmMLD.js +1 -0
  59. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-COMknoKb.js → quadrantDiagram-7GDLP6J5-cgwnEsXh.js} +1 -1
  60. package/out/renderer/assets/{radar-MK3ICKWK-h-3tH5Fw.js → radar-MK3ICKWK-DvOkOeQ6.js} +1 -1
  61. package/out/renderer/assets/radient-auth-buttons-y3JK-yD8.js +1 -0
  62. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-C2csabhY.js → requirementDiagram-KVF5MWMF-DOMWjtoO.js} +1 -1
  63. package/out/renderer/assets/sankeyDiagram-QLVOVGJD-CE3E7VO5.js +10 -0
  64. package/out/renderer/assets/{schedules-page-C_fL3_DU.js → schedules-page-ETT8R0wn.js} +1 -1
  65. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-D_5OYksN.js → sequenceDiagram-X6HHIX6F-C4EGcl7U.js} +1 -1
  66. package/out/renderer/assets/{settings-page-C_2pijSy.js → settings-page-BZDF6UIV.js} +1 -1
  67. package/out/renderer/assets/stateDiagram-DGXRK772-wBbKaUQh.js +1 -0
  68. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-Bh0k2Dz3.js +1 -0
  69. package/out/renderer/assets/{timeline-definition-BDJGKUSR-CTAa43OS.js → timeline-definition-BDJGKUSR-CgTCOxCY.js} +1 -1
  70. package/out/renderer/assets/{use-download-agent-mutation-93lATclk.js → use-download-agent-mutation-DkI3E5yA.js} +4 -4
  71. package/out/renderer/assets/use-memberships-query-Hv-eprVl.js +1 -0
  72. package/out/renderer/assets/{use-session-snapshot-Cn-frFuJ.js → use-session-snapshot-CfEF5TPK.js} +1 -1
  73. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-CSWyqHv5.js → xychartDiagram-VJFVF3MP-G2SxM5sQ.js} +1 -1
  74. package/out/renderer/console-capture.html +5 -5
  75. package/out/renderer/index.html +7 -7
  76. package/out/renderer/installer.html +4 -4
  77. package/out/renderer/mini.html +7 -7
  78. package/package.json +2 -2
  79. package/out/renderer/assets/agent-hub-page-C9Lp-DQZ.js +0 -11
  80. package/out/renderer/assets/agents-page-Cn2QkYzI.js +0 -7
  81. package/out/renderer/assets/arc-BTZBmnfj.js +0 -1
  82. package/out/renderer/assets/architectureDiagram-IEHRJDOE-xLXBjFAy.js +0 -36
  83. package/out/renderer/assets/browser-page-Cr3cC55-.js +0 -1
  84. package/out/renderer/assets/browser-webauthn-prompt-BU3XDjzy.js +0 -1
  85. package/out/renderer/assets/channel-C3j8uhMm.js +0 -1
  86. package/out/renderer/assets/classDiagram-GIVACNV2-Sk9b2cas.js +0 -1
  87. package/out/renderer/assets/classDiagram-v2-COTLJTTW-Sk9b2cas.js +0 -1
  88. package/out/renderer/assets/clone-B7BAmXPE.js +0 -1
  89. package/out/renderer/assets/consoleCapture-B-w56zDU.js +0 -1
  90. package/out/renderer/assets/dagre-OKDRZEBW-DVw8A4dj.js +0 -4
  91. package/out/renderer/assets/diagram-SSKATNLV-75BQIb2A.js +0 -43
  92. package/out/renderer/assets/diagram-VNBRO52H-D2ed5_os.js +0 -24
  93. package/out/renderer/assets/ganttDiagram-APWFNJXF-BjiLalpp.js +0 -257
  94. package/out/renderer/assets/gitGraphDiagram-7IBYFJ6S-DkxhVuU4.js +0 -65
  95. package/out/renderer/assets/index-B7VSZn2a.css +0 -1
  96. package/out/renderer/assets/index-CLXO1J74.js +0 -804
  97. package/out/renderer/assets/index-CW9XM5hB.js +0 -7
  98. package/out/renderer/assets/index-XGDziVI7.js +0 -1
  99. package/out/renderer/assets/infoDiagram-PH2N3AL5-CRisEpP0.js +0 -2
  100. package/out/renderer/assets/legacy-agents-page-fdBM_HQS.js +0 -33
  101. package/out/renderer/assets/mesh-page-Dr6wDE2I.js +0 -1
  102. package/out/renderer/assets/mindmap-definition-ALO5MXBD-CYQ1DQzG.js +0 -95
  103. package/out/renderer/assets/mini-CwJ9fFou.js +0 -1
  104. package/out/renderer/assets/org-surface-gate-CuI0Cbf6.js +0 -1
  105. package/out/renderer/assets/pieDiagram-IB7DONF6-BrQ8agdZ.js +0 -30
  106. package/out/renderer/assets/projects-page-Dla4rRB1.js +0 -50
  107. package/out/renderer/assets/radient-auth-buttons-VPVTWG7f.js +0 -1
  108. package/out/renderer/assets/sankeyDiagram-QLVOVGJD-Cr4lHcZY.js +0 -10
  109. package/out/renderer/assets/stateDiagram-DGXRK772-B2o8DoKk.js +0 -1
  110. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-BDfq2d80.js +0 -1
  111. package/out/renderer/assets/ui-preferences-store-lljzccwU.js +0 -1
  112. package/out/renderer/assets/use-memberships-query-DEoRqhiV.js +0 -1
  113. /package/out/renderer/assets/{index-CzjIMcYW.js → index-B-uibf5k.js} +0 -0
@@ -102,6 +102,7 @@ const mcpCatalogCwdPattern = /^(\/|[A-Za-z]:[\\/])/;
102
102
  const mcpCatalogCwd = zod.z.string().min(1).max(4096).regex(mcpCatalogCwdPattern);
103
103
  const SUBSCRIPTION_ID_PATTERN = /^[a-f0-9]{32}$/;
104
104
  const requestId = zod.z.string().regex(/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/);
105
+ const definitionRevision = zod.z.string().min(1).max(512).nullish();
105
106
  const meshId = zod.z.string().regex(/^[A-Za-z0-9_-]{1,128}$/);
106
107
  const approvalId = zod.z.string().regex(/^ap_[0-9a-hjkmnp-tv-z]{1,64}$/);
107
108
  const sessionImage = zod.z.object({
@@ -270,6 +271,12 @@ const publicationDescription = zod.z.string().refine((description) => publicatio
270
271
  const publicationTools = zod.z.array(zod.z.string()).refine((tools) => publicationToolsRule(tools) === null, {
271
272
  message: "That tool list cannot be published."
272
273
  });
274
+ const publicationPolicyFields = {
275
+ requestId: requestId.optional(),
276
+ subscribe: zod.z.boolean().optional(),
277
+ autoPush: zod.z.boolean().optional(),
278
+ confirmPublicEgress: zod.z.boolean().optional()
279
+ };
273
280
  const publicationDocument = zod.z.object({
274
281
  name: publicationName,
275
282
  description: publicationDescription,
@@ -332,6 +339,21 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
332
339
  zod.z.object({ op: zod.z.literal("runtimes.list") }).strict(),
333
340
  zod.z.object({ op: zod.z.literal("profiles.list") }).strict(),
334
341
  zod.z.object({ op: zod.z.literal("profiles.get"), name: profileName }).strict(),
342
+ /*
343
+ * Definition CAS (proposed additive wire, b-wire-receipt-definition-cas-and-adopt).
344
+ * `expectedDefinitionRevision` is an opaque echo of the `definition_revision` the
345
+ * editor was opened with; absent/null is the LEGACY unconditional write and is
346
+ * NOT a protected dirty-edit guarantee, so a caller that wants CAS protection
347
+ * must send it. Strict like every field here: a typo must 400, not silently
348
+ * become an unconditional write.
349
+ */
350
+ zod.z.object({
351
+ op: zod.z.literal("profiles.update"),
352
+ name: profileName,
353
+ requestId,
354
+ fields: profileFields,
355
+ expectedDefinitionRevision: definitionRevision.optional()
356
+ }).strict(),
335
357
  zod.z.object({ op: zod.z.literal("profiles.install"), name: profileName, requestId }).strict(),
336
358
  zod.z.object({
337
359
  op: zod.z.literal("profiles.create"),
@@ -342,12 +364,6 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
342
364
  instructions: zod.z.string().min(1).max(8e3)
343
365
  })
344
366
  }).strict(),
345
- zod.z.object({
346
- op: zod.z.literal("profiles.update"),
347
- name: profileName,
348
- requestId,
349
- fields: profileFields
350
- }).strict(),
351
367
  /*
352
368
  * THE HUB AUTO-UPDATE PLANE (backend `server/routes/desktop_hub.py`, gated by
353
369
  * the `hub_updates` capability). `hub.updates` is a STORE READ on the backend
@@ -363,20 +379,83 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
363
379
  * apply-all schema does not offer it.
364
380
  */
365
381
  zod.z.object({ op: zod.z.literal("hub.updates") }).strict(),
382
+ // Initial skill publication uses an actual discovered source and managed
383
+ // alias, never a synthetic link ID or a private-directory clone.
384
+ zod.z.object({
385
+ op: zod.z.literal("hub.skillPull"),
386
+ requestId,
387
+ hubId: id,
388
+ hubSource: zod.z.string().min(1).max(2048),
389
+ visibility: zod.z.enum(["public", "org"]),
390
+ tenantId: id.nullable(),
391
+ localAlias: profileName,
392
+ subscribe: zod.z.boolean().optional(),
393
+ autoPush: zod.z.boolean().optional(),
394
+ confirmPublicEgress: zod.z.boolean().optional()
395
+ }).strict(),
396
+ zod.z.object({
397
+ op: zod.z.literal("hub.skillPublish"),
398
+ requestId,
399
+ dryRun: zod.z.boolean(),
400
+ sourceSkill: profileName,
401
+ localAlias: profileName,
402
+ visibility: zod.z.enum(["public", "org"]),
403
+ tenantId: id.nullable(),
404
+ subscribe: zod.z.boolean(),
405
+ autoPush: zod.z.boolean(),
406
+ confirmPublicEgress: zod.z.boolean(),
407
+ previewReceipt: zod.z.string().min(1).max(4096).optional(),
408
+ confirmPublish: zod.z.literal(true).optional()
409
+ }).strict(),
410
+ // Full inventory is additive: old callers still receive pending agents/teams
411
+ // only. Policy revision is required even for a single independent toggle so
412
+ // an intervening direct config edit cannot be silently overwritten.
413
+ zod.z.object({
414
+ op: zod.z.literal("hub.links"),
415
+ kind: zod.z.enum(["agent", "team", "skill"]).optional()
416
+ }).strict(),
417
+ zod.z.object({
418
+ op: zod.z.literal("hub.policy"),
419
+ requestId,
420
+ linkId: zod.z.string().min(1).max(256),
421
+ expectedPolicyRevision: zod.z.string().min(1).max(256),
422
+ subscribe: zod.z.boolean().optional(),
423
+ autoPush: zod.z.boolean().optional(),
424
+ confirmPublicEgress: zod.z.boolean().optional()
425
+ }).strict(),
366
426
  zod.z.object({
367
427
  op: zod.z.literal("hub.check"),
368
428
  requestId,
429
+ linkId: zod.z.string().min(1).max(256).optional(),
430
+ direction: zod.z.enum(["pull", "push"]).optional(),
369
431
  kind: hubItemKind.optional(),
370
432
  name: profileName.optional()
371
433
  }).strict(),
372
434
  zod.z.object({
373
435
  op: zod.z.literal("hub.apply"),
374
436
  requestId,
375
- kind: hubItemKind,
376
- name: profileName,
437
+ previewReceipt: zod.z.string().min(1).max(4096).optional(),
438
+ confirmApply: zod.z.literal(true).optional(),
439
+ linkId: zod.z.string().min(1).max(256).optional(),
440
+ direction: zod.z.literal("pull").optional(),
441
+ kind: hubItemKind.optional(),
442
+ name: profileName.optional(),
377
443
  prefer: zod.z.enum(["local", "remote"]).optional(),
378
444
  acknowledgeUnknownBaseline: zod.z.boolean().optional(),
379
- dryRun: zod.z.boolean().optional()
445
+ dryRun: zod.z.boolean().optional(),
446
+ /*
447
+ * LEGACY UNKNOWN-ORIGIN SOURCE CONFIRMATION (proposed additive wire,
448
+ * b-wire-receipt §Part 2). An EXPLICIT act that states a destination the
449
+ * caller asserts: it materializes the real baseline identity and scope,
450
+ * it never infers Public or the active organization. `resolve_source`
451
+ * selects the branch; the source/scope triple is REQUIRED with it so a
452
+ * half-stated destination cannot compose a guessed origin. The service
453
+ * refuses a conflicting known scope with `origin-conflict`.
454
+ */
455
+ resolveSource: zod.z.literal(true).optional(),
456
+ hubSource: zod.z.string().min(1).max(2048).optional(),
457
+ visibility: zod.z.enum(["public", "org"]).optional(),
458
+ tenantId: zod.z.string().min(1).max(128).nullable().optional()
380
459
  }).strict(),
381
460
  zod.z.object({
382
461
  op: zod.z.literal("hub.applyAll"),
@@ -386,21 +465,38 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
386
465
  zod.z.object({
387
466
  op: zod.z.literal("hub.retry"),
388
467
  requestId,
389
- kind: hubItemKind,
390
- name: profileName
468
+ linkId: zod.z.string().min(1).max(256).optional(),
469
+ direction: zod.z.enum(["pull", "push"]).optional(),
470
+ kind: hubItemKind.optional(),
471
+ name: profileName.optional()
391
472
  }).strict(),
392
- zod.z.object({ op: zod.z.literal("teams.list") }).strict(),
393
- zod.z.object({ op: zod.z.literal("teams.get"), name: profileName }).strict(),
394
473
  zod.z.object({
395
- op: zod.z.literal("teams.create"),
474
+ op: zod.z.literal("hub.push"),
396
475
  requestId,
397
- fields: teamFields.extend({ name: zod.z.string().min(1).max(64) })
476
+ linkId: zod.z.string().min(1).max(256),
477
+ direction: zod.z.literal("push"),
478
+ dryRun: zod.z.boolean(),
479
+ previewReceipt: zod.z.string().min(1).max(4096).optional(),
480
+ confirmPublish: zod.z.literal(true).optional()
398
481
  }).strict(),
482
+ zod.z.object({ op: zod.z.literal("teams.list") }).strict(),
483
+ zod.z.object({ op: zod.z.literal("teams.get"), name: profileName }).strict(),
484
+ /*
485
+ * Team CAS is the same optional opaque echo as the profile arm: absent/null is
486
+ * the legacy unconditional write, a supplied stale/malformed value is refused
487
+ * 409 `local-concurrent-edit` before any write under the definition lock.
488
+ */
399
489
  zod.z.object({
400
490
  op: zod.z.literal("teams.update"),
401
491
  name: profileName,
402
492
  requestId,
403
- fields: teamFields
493
+ fields: teamFields,
494
+ expectedDefinitionRevision: definitionRevision.optional()
495
+ }).strict(),
496
+ zod.z.object({
497
+ op: zod.z.literal("teams.create"),
498
+ requestId,
499
+ fields: teamFields.extend({ name: zod.z.string().min(1).max(64) })
404
500
  }).strict(),
405
501
  zod.z.object({
406
502
  op: zod.z.literal("sessions.list"),
@@ -709,6 +805,24 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
709
805
  */
710
806
  peerJournalSource: zod.z.boolean().optional()
711
807
  }).strict(),
808
+ // The inventory belongs to the backend, not to a renderer filesystem walk.
809
+ // Keep the cursor opaque: its query/revision binding is the service's decision.
810
+ zod.z.object({
811
+ op: zod.z.literal("sessions.files"),
812
+ sessionId,
813
+ scope: zod.z.enum(["family", "self"]).optional(),
814
+ kind: zod.z.string().max(256).optional(),
815
+ q: zod.z.string().max(256).optional(),
816
+ sort: zod.z.enum(["recent", "name", "kind", "modified", "created", "size"]).optional(),
817
+ order: zod.z.enum(["asc", "desc"]).optional(),
818
+ limit: zod.z.number().int().min(1).max(200).optional(),
819
+ cursor: zod.z.string().max(8192).optional()
820
+ }).strict(),
821
+ zod.z.object({
822
+ op: zod.z.literal("sessions.files.materialise"),
823
+ sessionId,
824
+ fileId: zod.z.string().regex(/^[a-f0-9]{16}$/)
825
+ }).strict(),
712
826
  zod.z.object({
713
827
  op: zod.z.literal("sessions.history"),
714
828
  sessionId,
@@ -1211,6 +1325,7 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
1211
1325
  op: zod.z.literal("agent.publish"),
1212
1326
  agentId: id,
1213
1327
  document: publicationDocument.optional(),
1328
+ ...publicationPolicyFields,
1214
1329
  /*
1215
1330
  * The publication TARGET (§4.4/§4.7). Both travel together or neither does,
1216
1331
  * and the rule is a `superRefine` on the whole UNION (below) rather than a
@@ -1242,11 +1357,20 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
1242
1357
  // republish that did not name one would have to guess which public row to
1243
1358
  // overwrite — and guessing here overwrites somebody's listing.
1244
1359
  hubAgentId: id,
1360
+ expectedRemoteRevision: zod.z.string().min(1).max(512).optional(),
1245
1361
  document: publicationDocument.optional(),
1362
+ ...publicationPolicyFields,
1246
1363
  /** The publication target, on the same terms as `agent.publish` above. */
1247
1364
  visibility: zod.z.literal("org").optional(),
1248
1365
  tenantId: id.optional()
1249
1366
  }).strict(),
1367
+ zod.z.object({
1368
+ op: zod.z.literal("team.publish"),
1369
+ teamId: id,
1370
+ ...publicationPolicyFields,
1371
+ visibility: zod.z.literal("org").optional(),
1372
+ tenantId: id.optional()
1373
+ }).strict(),
1250
1374
  /*
1251
1375
  * Pulling a published organization team into this machine's local registry
1252
1376
  * (§4.5/§8.4's "list + pull action").
@@ -1844,6 +1968,8 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
1844
1968
  "org_agents.list",
1845
1969
  "org_team.get",
1846
1970
  "org_teams.list",
1971
+ "org_skills.list",
1972
+ "org_skill.get",
1847
1973
  /*
1848
1974
  * The verification-email resend (core PR2,
1849
1975
  * `feat/quota-notice-resend`): it maps to the upstream's JWT-only
@@ -1861,6 +1987,7 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
1861
1987
  agent_id: id.optional(),
1862
1988
  comment_id: id.optional(),
1863
1989
  team_id: id.optional(),
1990
+ skill_id: id.optional(),
1864
1991
  query: zod.z.record(zod.z.union([zod.z.string().max(1024), zod.z.number().int()])).optional(),
1865
1992
  payload: zod.z.record(zod.z.unknown()).optional(),
1866
1993
  confirmed: zod.z.boolean().optional()
@@ -2246,6 +2373,71 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
2246
2373
  ]);
2247
2374
  desktopRequestUnion.superRefine(
2248
2375
  (request, ctx) => {
2376
+ if (request.op === "hub.skillPull" || request.op === "hub.skillPublish") {
2377
+ if (request.visibility === "public" && request.tenantId !== null || request.visibility === "org" && !request.tenantId) {
2378
+ ctx.addIssue({
2379
+ code: zod.z.ZodIssueCode.custom,
2380
+ message: "A skill destination requires explicit paired scope",
2381
+ path: ["tenantId"]
2382
+ });
2383
+ return;
2384
+ }
2385
+ if (request.op === "hub.skillPublish" && (request.dryRun ? request.previewReceipt !== void 0 || request.confirmPublish !== void 0 : !request.previewReceipt || request.confirmPublish !== true)) {
2386
+ ctx.addIssue({
2387
+ code: zod.z.ZodIssueCode.custom,
2388
+ message: "An initial skill publication requires its reviewed draft receipt",
2389
+ path: ["previewReceipt"]
2390
+ });
2391
+ return;
2392
+ }
2393
+ }
2394
+ if (request.op === "hub.check" || request.op === "hub.apply" || request.op === "hub.retry") {
2395
+ const hasLink = request.linkId !== void 0;
2396
+ const hasLegacy = request.kind !== void 0 || request.name !== void 0;
2397
+ if (hasLink && hasLegacy || request.op !== "hub.check" && !hasLink && (!request.kind || !request.name) || request.op === "hub.retry" && hasLink && !request.direction || request.direction === "push" && !hasLink) {
2398
+ ctx.addIssue({
2399
+ code: zod.z.ZodIssueCode.custom,
2400
+ message: "A hub action requires one unambiguous selector and an explicit retry direction",
2401
+ path: ["linkId"]
2402
+ });
2403
+ return;
2404
+ }
2405
+ }
2406
+ if (request.op === "hub.apply" && (request.previewReceipt !== void 0 || request.confirmApply !== void 0) && (!request.linkId || request.dryRun || !request.previewReceipt || request.confirmApply !== true)) {
2407
+ ctx.addIssue({
2408
+ code: zod.z.ZodIssueCode.custom,
2409
+ message: "A viewed incoming application requires its scoped preview receipt and confirmation",
2410
+ path: ["previewReceipt"]
2411
+ });
2412
+ return;
2413
+ }
2414
+ if (request.op === "hub.apply" && request.resolveSource === true) {
2415
+ const scopePaired = request.visibility === "public" && request.tenantId === null || request.visibility === "org" && typeof request.tenantId === "string" && request.tenantId.length > 0;
2416
+ if (!request.hubSource || !scopePaired || request.acknowledgeUnknownBaseline !== true || request.linkId !== void 0 || request.previewReceipt !== void 0 || request.confirmApply !== void 0 || request.prefer !== void 0) {
2417
+ ctx.addIssue({
2418
+ code: zod.z.ZodIssueCode.custom,
2419
+ message: "Confirming a source requires its exact stated destination and the unknown-baseline acknowledgement, with no link, preview or preference",
2420
+ path: ["hubSource"]
2421
+ });
2422
+ return;
2423
+ }
2424
+ }
2425
+ if (request.op === "hub.push" && (request.dryRun ? request.previewReceipt !== void 0 || request.confirmPublish !== void 0 : !request.previewReceipt || request.confirmPublish !== true)) {
2426
+ ctx.addIssue({
2427
+ code: zod.z.ZodIssueCode.custom,
2428
+ message: "A confirmed publication requires its reviewed preview receipt",
2429
+ path: ["previewReceipt"]
2430
+ });
2431
+ return;
2432
+ }
2433
+ if (request.op === "hub.policy" && request.subscribe === void 0 && request.autoPush === void 0) {
2434
+ ctx.addIssue({
2435
+ code: zod.z.ZodIssueCode.custom,
2436
+ message: "A hub policy change must name subscribe or autoPush",
2437
+ path: ["subscribe"]
2438
+ });
2439
+ return;
2440
+ }
2249
2441
  if (request.op === "sessions.answer") {
2250
2442
  if (request.askId !== void 0) {
2251
2443
  if (!request.askId)
@@ -2321,7 +2513,15 @@ desktopRequestUnion.superRefine(
2321
2513
  }
2322
2514
  return;
2323
2515
  }
2324
- if (request.op !== "agent.publish" && request.op !== "agent.republish") {
2516
+ if (request.op !== "agent.publish" && request.op !== "agent.republish" && request.op !== "team.publish") {
2517
+ return;
2518
+ }
2519
+ if ((request.subscribe !== void 0 || request.autoPush !== void 0 || request.confirmPublicEgress !== void 0) && !request.requestId) {
2520
+ ctx.addIssue({
2521
+ code: zod.z.ZodIssueCode.custom,
2522
+ message: "Initial link policy needs a durable publication request ID",
2523
+ path: ["requestId"]
2524
+ });
2325
2525
  return;
2326
2526
  }
2327
2527
  if (Boolean(request.visibility === "org") !== Boolean(request.tenantId)) {
@@ -3092,6 +3292,22 @@ const api = {
3092
3292
  * moves to a session (the hand-over) mints a nonce main never sends back here.
3093
3293
  */
3094
3294
  browser: {
3295
+ pageControl: (tabId, action, query, forward, next) => electron.ipcRenderer.invoke(
3296
+ "browser-page-control",
3297
+ tabId,
3298
+ action,
3299
+ query,
3300
+ forward,
3301
+ next
3302
+ ),
3303
+ setChordFocus: (focused) => electron.ipcRenderer.invoke("browser-set-chord-focus", focused),
3304
+ reopenTab: (sessionId2) => electron.ipcRenderer.invoke("browser-reopen-tab", sessionId2 ?? null),
3305
+ focusPage: () => electron.ipcRenderer.invoke("browser-focus-page"),
3306
+ onChord: (callback) => {
3307
+ const listener = (_event, message) => callback(message);
3308
+ electron.ipcRenderer.on("browser-chord", listener);
3309
+ return () => electron.ipcRenderer.removeListener("browser-chord", listener);
3310
+ },
3095
3311
  state: () => electron.ipcRenderer.invoke("browser-state"),
3096
3312
  /** `sessionId` attributes the tab to the conversation it was opened from
3097
3313
  * (design R1); `null` is a tab that belongs to no conversation, which is what
@@ -3105,7 +3321,7 @@ const api = {
3105
3321
  closeTabs: (intent) => electron.ipcRenderer.invoke("browser-close-tabs", intent),
3106
3322
  activateTab: (tabId) => electron.ipcRenderer.invoke("browser-activate-tab", tabId),
3107
3323
  navigate: (url) => electron.ipcRenderer.invoke("browser-navigate", url),
3108
- reload: () => electron.ipcRenderer.invoke("browser-reload"),
3324
+ reload: (hard = false) => electron.ipcRenderer.invoke("browser-reload", hard),
3109
3325
  stop: () => electron.ipcRenderer.invoke("browser-stop"),
3110
3326
  history: (direction) => electron.ipcRenderer.invoke("browser-history", direction),
3111
3327
  setContentRect: (rect) => electron.ipcRenderer.invoke("browser-set-content-rect", rect),
@@ -1 +1 @@
1
- import{e as o,c as b,g as v,k as O,h as P,j as p,l as w,m as A,n as x,t as c,o as N}from"./_baseUniq-4qtqmZW_.js";import{as as g,aa as y,at as E,au as F,av as M,aw as I,ax as _,ay as $,az as B,aA as T}from"./mermaid.core-CPsHLTy1.js";var S=/\s/;function z(n){for(var r=n.length;r--&&S.test(n.charAt(r)););return r}var G=/^\s+/;function H(n){return n&&n.slice(0,z(n)+1).replace(G,"")}var m=NaN,L=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,q=/^0o[0-7]+$/i,C=parseInt;function K(n){if(typeof n=="number")return n;if(o(n))return m;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=H(n);var t=R.test(n);return t||q.test(n)?C(n.slice(2),t?2:8):L.test(n)?m:+n}var W=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=K(n),n===W||n===-1/0){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var l=Object.prototype,J=l.hasOwnProperty,dn=y(function(n,r){n=Object(n);var t=-1,e=r.length,a=e>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(e=1);++t<e;)for(var f=r[t],i=F(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||M(h,l[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,e){var a=Object(r);if(!I(r)){var f=v(t);r=O(r),t=function(s){return f(a[s],s,a)}}var i=n(r,t,e);return i>-1?a[f?r[i]:i]:void 0}}var U=Math.max;function Z(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var a=t==null?0:D(t);return a<0&&(a=U(e+a,0)),P(n,v(r),a)}var hn=Q(Z);function V(n,r){var t=-1,e=I(n)?Array(n.length):[];return p(n,function(a,f,i){e[++t]=r(a,f,i)}),e}function gn(n,r){var t=_(n)?w:V;return t(n,v(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function vn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,a=n.length;++e<a;){var f=n[e],i=r(f);if(i!=null&&(s===void 0?i===i&&!o(i):t(i,s)))var s=i,d=f}return d}function mn(n){return n&&n.length?tn(n,$,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=x(r,n);for(var a=-1,f=r.length,i=f-1,s=n;s!=null&&++a<f;){var d=c(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=i){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[a+1])?[]:{})}T(s,d,u),s=s[d]}return n}function on(n,r,t){for(var e=-1,a=r.length,f={};++e<a;){var i=r[e],s=N(n,i);t(s,i)&&an(f,x(i,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,vn as h,dn as i,D as j,un as l,gn as m,Y as t};
1
+ import{e as o,c as b,g as v,k as O,h as P,j as p,l as w,m as A,n as x,t as c,o as N}from"./_baseUniq-6rYoQPQm.js";import{as as g,aa as y,at as E,au as F,av as M,aw as I,ax as _,ay as $,az as B,aA as T}from"./mermaid.core-x5Fva3t5.js";var S=/\s/;function z(n){for(var r=n.length;r--&&S.test(n.charAt(r)););return r}var G=/^\s+/;function H(n){return n&&n.slice(0,z(n)+1).replace(G,"")}var m=NaN,L=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,q=/^0o[0-7]+$/i,C=parseInt;function K(n){if(typeof n=="number")return n;if(o(n))return m;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=H(n);var t=R.test(n);return t||q.test(n)?C(n.slice(2),t?2:8):L.test(n)?m:+n}var W=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=K(n),n===W||n===-1/0){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var l=Object.prototype,J=l.hasOwnProperty,dn=y(function(n,r){n=Object(n);var t=-1,e=r.length,a=e>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(e=1);++t<e;)for(var f=r[t],i=F(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||M(h,l[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,e){var a=Object(r);if(!I(r)){var f=v(t);r=O(r),t=function(s){return f(a[s],s,a)}}var i=n(r,t,e);return i>-1?a[f?r[i]:i]:void 0}}var U=Math.max;function Z(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var a=t==null?0:D(t);return a<0&&(a=U(e+a,0)),P(n,v(r),a)}var hn=Q(Z);function V(n,r){var t=-1,e=I(n)?Array(n.length):[];return p(n,function(a,f,i){e[++t]=r(a,f,i)}),e}function gn(n,r){var t=_(n)?w:V;return t(n,v(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function vn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,a=n.length;++e<a;){var f=n[e],i=r(f);if(i!=null&&(s===void 0?i===i&&!o(i):t(i,s)))var s=i,d=f}return d}function mn(n){return n&&n.length?tn(n,$,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=x(r,n);for(var a=-1,f=r.length,i=f-1,s=n;s!=null&&++a<f;){var d=c(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=i){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[a+1])?[]:{})}T(s,d,u),s=s[d]}return n}function on(n,r,t){for(var e=-1,a=r.length,f={};++e<a;){var i=r[e],s=N(n,i);t(s,i)&&an(f,x(i,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,vn as h,dn as i,D as j,un as l,gn as m,Y as t};
@@ -1 +1 @@
1
- import{aH as S,aI as Rn,ax as T,aJ as w,aK as xn,aL as Mn,aw as sn,aM as mn,aN as un,aO as x,au as U,aP as Cn,aQ as on,aR as Fn,aS as E,aF as gn,aT as R,as as ln,aU as Dn,aV as D,aW as Gn,aX as Un,aY as _,aA as Nn,aZ as Bn,av as Kn,a_ as X,a$ as Hn,b0 as jn,az as Yn,ay as cn,aD as Zn,b1 as m}from"./mermaid.core-CPsHLTy1.js";var qn="[object Symbol]";function N(n){return typeof n=="symbol"||S(n)&&Rn(n)==qn}function dn(n,r){for(var e=-1,t=n==null?0:n.length,a=Array(t);++e<t;)a[e]=r(n[e],e,n);return a}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function pn(n){if(typeof n=="string")return n;if(T(n))return dn(n,pn)+"";if(N(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function An(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var a=n.length,i=e+-1;++i<a;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,a=n.length;++t<a;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):Mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||N(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,ar=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,a,i){r.push(a?i.replace(ir,"$1"):t||e)}),r});function fr(n){return n==null?"":pn(n)}function yn(n,r){return T(n)?n:B(n,r)?[n]:ar(fr(n))}function M(n){if(typeof n=="string"||N(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function bn(n,r){r=yn(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[M(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:bn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,a=n.length;++e<t;)n[a+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,a){var i=-1,f=n.length;for(e||(e=ur),a||(a=[]);++i<f;){var s=n[i];e(s)?K(a,s):t||(a[a.length]=s)}return a}function or(n,r,e,t){var a=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++a]);++a<i;)e=r(e,n[a],a,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,a=0,i=[];++e<t;){var f=n[e];r(f,e,n)&&(i[a++]=f)}return i}function hn(){return[]}var cr=Object.prototype,dr=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,H=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return dr.call(n,r)}))}:hn;function pr(n,r){return x(n,H(n),r)}var Ar=Object.getOwnPropertySymbols,wn=Ar?function(n){for(var r=[];n;)K(r,H(n)),n=Cn(n);return r}:hn;function yr(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,H)}function br(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Mr="[object Symbol]",mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Nr="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",Hr="[object Uint16Array]",jr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case mr:return on(n);case Er:case Ir:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Nr:case Br:case Kr:case Hr:case jr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case Mr:return Sr(n)}}var Zr="[object Map]";function qr(n){return S(n)&&E(n)==Zr}var nn=R&&R.isMap,Xr=nn?gn(nn):qr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",ae="[object Map]",fe="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",de="[object DataView]",pe="[object Float32Array]",Ae="[object Float64Array]",ye="[object Int8Array]",be="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[de]=g[re]=g[ee]=g[pe]=g[Ae]=g[ye]=g[be]=g[Te]=g[ae]=g[fe]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,a,i){var f,s=r&zr,u=r&Vr,d=r&kr;if(f!==void 0)return f;if(!ln(n))return n;var l=T(n);if(l){if(f=wr(n),!s)return Dn(n,f)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!a){if(f=u||c?{}:Un(n),!s)return u?yr(n,lr(f,n)):pr(n,gr(f,n))}else{if(!g[o])return a?n:{};f=Yr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,f),Wr(n)?n.forEach(function(p){f.add(C(p,r,e,p,n,i))}):Xr(n)&&n.forEach(function(p,A){f.set(A,C(p,r,e,A,n,i))});var y=d?u?br:G:u?U:$,b=l?void 0:y(n);return An(b||n,function(p,A){b&&(A=p,p=n[A]),Nn(f,A,C(p,r,e,A,n,i))}),f}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,a,i){var f=e&Pe,s=n.length,u=r.length;if(s!=u&&!(f&&u>s))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var y=n[o],b=r[o];if(t)var p=f?t(b,y,o,r,n,i):t(y,b,o,n,r,i);if(p!==void 0){if(p)continue;c=!1;break}if(h){if(!Ie(r,function(A,O){if(!En(h,O)&&(y===A||a(y,A,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(y===b||a(y,b,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,a){e[++r]=[a,t]}),e}function j(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Me="[object Boolean]",me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Ne="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",He="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function je(n,r,e,t,a,i,f){switch(e){case He:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case Me:case me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ne:return n==r+"";case Fe:var s=Le;case Ue:var u=t&Re;if(s||(s=j),n.size!=r.size&&!u)return!1;var d=f.get(n);if(d)return d==r;t|=xe,f.set(n,r);var l=In(s(n),s(r),t,a,i,f);return f.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,a,i){var f=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!f)return!1;for(var o=u;o--;){var c=s[o];if(!(f?c in r:qe.call(r,c)))return!1}var h=i.get(n),y=i.get(r);if(h&&y)return h==r&&y==n;var b=!0;i.set(n,r),i.set(r,n);for(var p=f;++o<u;){c=s[o];var A=n[c],O=r[c];if(t)var q=f?t(O,A,c,r,n,i):t(A,O,c,n,r,i);if(!(q===void 0?A===O||a(A,O,e,t,i):q)){b=!1;break}p||(p=c=="constructor")}if(b&&!p){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(b=!1)}return i.delete(n),i.delete(r),b}var Je=1,tn="[object Arguments]",an="[object Array]",L="[object Object]",Qe=Object.prototype,fn=Qe.hasOwnProperty;function We(n,r,e,t,a,i){var f=T(n),s=T(r),u=f?an:E(n),d=s?an:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;f=!0,l=!1}if(c&&!l)return i||(i=new _),f||Hn(n)?In(n,r,e,t,a,i):je(n,r,u,e,t,a,i);if(!(e&Je)){var h=l&&fn.call(n,"__wrapped__"),y=o&&fn.call(r,"__wrapped__");if(h||y){var b=h?n.value():n,p=y?r.value():r;return i||(i=new _),a(b,p,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,a,i)):!1}function Y(n,r,e,t,a){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,a)}var ze=1,Ve=2;function ke(n,r,e,t){var a=e.length,i=a;if(n==null)return!i;for(n=Object(n);a--;){var f=e[a];if(f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++a<i;){f=e[a];var s=f[0],u=n[s],d=f[1];if(f[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],a=n[t];r[e]=[t,a,Pn(a)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=yn(r,n);for(var t=-1,a=r.length,i=!1;++t<a;){var f=M(r[t]);if(!(i=n!=null&&e(n,f)))break;n=n[f]}return i||++t!=a?i:(a=n==null?0:n.length,!!a&&jn(a)&&Yn(f,a)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var at=1,ft=2;function st(n,r){return B(n)&&Pn(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,at|ft)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return bn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var a=e.length,i=-1,f=Object(e);++i<a&&t(f[i],i,f)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?An:Z;return e(n,dt(r))}function pt(n,r){var e=[];return Z(n,function(t,a,i){r(t,a,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:pt;return e(n,Ln(r))}function At(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:At(n,$(n))}function Et(n){return n===void 0}function yt(n,r,e,t,a){return a(n,function(i,f,s){e=t?(t=!1,i):r(e,i,f,s)}),e}function It(n,r,e){var t=T(n)?or:yt,a=arguments.length<3;return t(n,Ln(r),e,a,Z)}var bt=1/0,Tt=m&&1/j(new m([,-0]))[1]==bt?function(n){return new m(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,a=Vn,i=n.length,f=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return j(d);f=!1,a=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,f&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else a(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,pt as B,Ie as C,Xn as D,I as S,Pt as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Jn as h,Et as i,Z as j,$ as k,dn as l,tt as m,yn as n,bn as o,dt as p,lt as q,It as r,it as s,M as t,fr as u,St as v,Vn as w,En as x,zn as y,br as z};
1
+ import{aH as S,aI as Rn,ax as T,aJ as w,aK as xn,aL as Mn,aw as sn,aM as mn,aN as un,aO as x,au as U,aP as Cn,aQ as on,aR as Fn,aS as E,aF as gn,aT as R,as as ln,aU as Dn,aV as D,aW as Gn,aX as Un,aY as _,aA as Nn,aZ as Bn,av as Kn,a_ as X,a$ as Hn,b0 as jn,az as Yn,ay as cn,aD as Zn,b1 as m}from"./mermaid.core-x5Fva3t5.js";var qn="[object Symbol]";function N(n){return typeof n=="symbol"||S(n)&&Rn(n)==qn}function dn(n,r){for(var e=-1,t=n==null?0:n.length,a=Array(t);++e<t;)a[e]=r(n[e],e,n);return a}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function pn(n){if(typeof n=="string")return n;if(T(n))return dn(n,pn)+"";if(N(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function An(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var a=n.length,i=e+-1;++i<a;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,a=n.length;++t<a;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):Mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||N(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,ar=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,a,i){r.push(a?i.replace(ir,"$1"):t||e)}),r});function fr(n){return n==null?"":pn(n)}function yn(n,r){return T(n)?n:B(n,r)?[n]:ar(fr(n))}function M(n){if(typeof n=="string"||N(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function bn(n,r){r=yn(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[M(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:bn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,a=n.length;++e<t;)n[a+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,a){var i=-1,f=n.length;for(e||(e=ur),a||(a=[]);++i<f;){var s=n[i];e(s)?K(a,s):t||(a[a.length]=s)}return a}function or(n,r,e,t){var a=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++a]);++a<i;)e=r(e,n[a],a,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,a=0,i=[];++e<t;){var f=n[e];r(f,e,n)&&(i[a++]=f)}return i}function hn(){return[]}var cr=Object.prototype,dr=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,H=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return dr.call(n,r)}))}:hn;function pr(n,r){return x(n,H(n),r)}var Ar=Object.getOwnPropertySymbols,wn=Ar?function(n){for(var r=[];n;)K(r,H(n)),n=Cn(n);return r}:hn;function yr(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,H)}function br(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Mr="[object Symbol]",mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Nr="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",Hr="[object Uint16Array]",jr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case mr:return on(n);case Er:case Ir:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Nr:case Br:case Kr:case Hr:case jr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case Mr:return Sr(n)}}var Zr="[object Map]";function qr(n){return S(n)&&E(n)==Zr}var nn=R&&R.isMap,Xr=nn?gn(nn):qr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",ae="[object Map]",fe="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",de="[object DataView]",pe="[object Float32Array]",Ae="[object Float64Array]",ye="[object Int8Array]",be="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[de]=g[re]=g[ee]=g[pe]=g[Ae]=g[ye]=g[be]=g[Te]=g[ae]=g[fe]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,a,i){var f,s=r&zr,u=r&Vr,d=r&kr;if(f!==void 0)return f;if(!ln(n))return n;var l=T(n);if(l){if(f=wr(n),!s)return Dn(n,f)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!a){if(f=u||c?{}:Un(n),!s)return u?yr(n,lr(f,n)):pr(n,gr(f,n))}else{if(!g[o])return a?n:{};f=Yr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,f),Wr(n)?n.forEach(function(p){f.add(C(p,r,e,p,n,i))}):Xr(n)&&n.forEach(function(p,A){f.set(A,C(p,r,e,A,n,i))});var y=d?u?br:G:u?U:$,b=l?void 0:y(n);return An(b||n,function(p,A){b&&(A=p,p=n[A]),Nn(f,A,C(p,r,e,A,n,i))}),f}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,a,i){var f=e&Pe,s=n.length,u=r.length;if(s!=u&&!(f&&u>s))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var y=n[o],b=r[o];if(t)var p=f?t(b,y,o,r,n,i):t(y,b,o,n,r,i);if(p!==void 0){if(p)continue;c=!1;break}if(h){if(!Ie(r,function(A,O){if(!En(h,O)&&(y===A||a(y,A,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(y===b||a(y,b,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,a){e[++r]=[a,t]}),e}function j(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Me="[object Boolean]",me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Ne="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",He="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function je(n,r,e,t,a,i,f){switch(e){case He:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case Me:case me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ne:return n==r+"";case Fe:var s=Le;case Ue:var u=t&Re;if(s||(s=j),n.size!=r.size&&!u)return!1;var d=f.get(n);if(d)return d==r;t|=xe,f.set(n,r);var l=In(s(n),s(r),t,a,i,f);return f.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,a,i){var f=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!f)return!1;for(var o=u;o--;){var c=s[o];if(!(f?c in r:qe.call(r,c)))return!1}var h=i.get(n),y=i.get(r);if(h&&y)return h==r&&y==n;var b=!0;i.set(n,r),i.set(r,n);for(var p=f;++o<u;){c=s[o];var A=n[c],O=r[c];if(t)var q=f?t(O,A,c,r,n,i):t(A,O,c,n,r,i);if(!(q===void 0?A===O||a(A,O,e,t,i):q)){b=!1;break}p||(p=c=="constructor")}if(b&&!p){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(b=!1)}return i.delete(n),i.delete(r),b}var Je=1,tn="[object Arguments]",an="[object Array]",L="[object Object]",Qe=Object.prototype,fn=Qe.hasOwnProperty;function We(n,r,e,t,a,i){var f=T(n),s=T(r),u=f?an:E(n),d=s?an:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;f=!0,l=!1}if(c&&!l)return i||(i=new _),f||Hn(n)?In(n,r,e,t,a,i):je(n,r,u,e,t,a,i);if(!(e&Je)){var h=l&&fn.call(n,"__wrapped__"),y=o&&fn.call(r,"__wrapped__");if(h||y){var b=h?n.value():n,p=y?r.value():r;return i||(i=new _),a(b,p,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,a,i)):!1}function Y(n,r,e,t,a){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,a)}var ze=1,Ve=2;function ke(n,r,e,t){var a=e.length,i=a;if(n==null)return!i;for(n=Object(n);a--;){var f=e[a];if(f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++a<i;){f=e[a];var s=f[0],u=n[s],d=f[1];if(f[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],a=n[t];r[e]=[t,a,Pn(a)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=yn(r,n);for(var t=-1,a=r.length,i=!1;++t<a;){var f=M(r[t]);if(!(i=n!=null&&e(n,f)))break;n=n[f]}return i||++t!=a?i:(a=n==null?0:n.length,!!a&&jn(a)&&Yn(f,a)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var at=1,ft=2;function st(n,r){return B(n)&&Pn(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,at|ft)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return bn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var a=e.length,i=-1,f=Object(e);++i<a&&t(f[i],i,f)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?An:Z;return e(n,dt(r))}function pt(n,r){var e=[];return Z(n,function(t,a,i){r(t,a,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:pt;return e(n,Ln(r))}function At(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:At(n,$(n))}function Et(n){return n===void 0}function yt(n,r,e,t,a){return a(n,function(i,f,s){e=t?(t=!1,i):r(e,i,f,s)}),e}function It(n,r,e){var t=T(n)?or:yt,a=arguments.length<3;return t(n,Ln(r),e,a,Z)}var bt=1/0,Tt=m&&1/j(new m([,-0]))[1]==bt?function(n){return new m(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,a=Vn,i=n.length,f=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return j(d);f=!1,a=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,f&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else a(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,pt as B,Ie as C,Xn as D,I as S,Pt as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Jn as h,Et as i,Z as j,$ as k,dn as l,tt as m,yn as n,bn as o,dt as p,lt as q,It as r,it as s,M as t,fr as u,St as v,Vn as w,En as x,zn as y,br as z};
@@ -1,6 +1,6 @@
1
- import{r as E,j as e,c as J}from"./index-CzjIMcYW.js";import{l as he,c as xe,u as ge,d as je,g as fe,i as pe,a as ye,b as ve,e as we}from"./use-memberships-query-DEoRqhiV.js";import{aF as ie,u as K,aL as C,aM as O,aw as H,aN as Q,aO as re,aP as oe,aQ as be,ax as Ce,aR as Ne,aS as ee,av as Ae,aT as ke,aU as Se}from"./conversation-input-sync-Czj2IfIc.js";import{c as De,L as Te,T as te,B as o,S as I,a as le,b as M,d as z,e as w,X as Ee,f as b,A as se,g as ae,h as ne}from"./error-boundary-YxH9ow-2.js";import{f as Y,h as Fe,u as _e,i as Pe,a as qe,b as Le,c as Me,O as ze,H as Ie,A as Ke}from"./use-download-agent-mutation-93lATclk.js";import{S as Oe,a as Qe,A as Ue,b as Be,c as Re}from"./index-CLXO1J74.js";import"./ui-preferences-store-lljzccwU.js";import"./en-US-BcB1DWxG.js";import"./book-open-C9onOH1C.js";import"./console-mirror-D1YYJxrt.js";/**
1
+ import{r as F,j as e,c as Z}from"./index-B-uibf5k.js";import{i as he,a as xe}from"./publication-validation-ZquLmMLD.js";import{C as ie,u as K,B as C,aH as O,aG as Y,aI as B,aJ as re,aK as oe,aL as ge,$ as je,aM as fe,aN as ee,aF as pe,aO as ye,aP as ve}from"./conversation-input-sync-BdhFw-JY.js";import{c as we,L as be,T as te,B as o,S as I,h as le,i as M,j as z,k as w,X as Ce,l as b,A as se,m as ae,n as ne}from"./error-boundary-B4K6A3dS.js";import{f as W,h as Ne,u as Ae,i as ke,a as Se,b as De,c as Ee,O as Fe,H as Te,A as _e}from"./use-download-agent-mutation-DkI3E5yA.js";import{b as Pe,c as qe,u as Le,d as Me,g as ze,e as Ie,f as Ke}from"./use-memberships-query-Hv-eprVl.js";import{S as Oe,a as Be,A as Qe,b as Ue,c as Re}from"./index-BJ-AJLyd.js";import"./messages-D3mGACg6.js";import"./en-US-BcB1DWxG.js";import"./book-open-BWUyDXVa.js";import"./console-mirror-DF_IQ1r-.js";/**
2
2
  * @license lucide-react v0.507.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
- */const $e=[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]],We=De("message-circle",$e),F={all:["agent-comments"],list:t=>[...F.all,"list",t]},Ye=({agentId:t,enabled:r=!0})=>ie({queryKey:F.list(t||"invalid"),queryFn:async()=>{if(!t)throw new Error("Agent ID is required to fetch comments.");return(await he(t)).result},enabled:!!t&&r,staleTime:2*60*1e3,gcTime:5*60*1e3,refetchOnWindowFocus:!0}),He=()=>{const t=K(),{isAuthenticated:r}=C();return O({mutationFn:async a=>{const{agentId:i,data:s}=a;if(!r)throw new Error("Authentication required.");return xe(i,s)},onSuccess:(a,i)=>{t.invalidateQueries({queryKey:F.list(i.agentId)}),Q("Comment posted")},onError:a=>{H(`Failed to post comment: ${a.message}`)}})},Ve=()=>{const t=K(),{isAuthenticated:r}=C();return O({mutationFn:async a=>{const{agentId:i,commentId:s,data:l}=a;if(!r)throw new Error("Authentication required.");return ge(i,s,l)},onSuccess:(a,i)=>{t.invalidateQueries({queryKey:F.list(i.agentId)}),Q("Comment updated")},onError:a=>{H(`Failed to update comment: ${a.message}`)}})},Xe=()=>{const t=K(),{isAuthenticated:r}=C();return O({mutationFn:async a=>{const{agentId:i,commentId:s}=a;if(!r)throw new Error("Authentication required.");return je(i,s)},onSuccess:(a,i)=>{t.invalidateQueries({queryKey:F.list(i.agentId)}),Q("Comment deleted")},onError:a=>{H(`Failed to delete comment: ${a.message}`)}})},Ze=({agentId:t})=>{const{isAuthenticated:r,user:a}=C(),[i,s]=E.useState(""),[l,f]=E.useState(null),[h,N]=E.useState(""),{data:d,isLoading:p,error:A}=Ye({agentId:t}),_=d?.records??[],x=He(),k=Ve(),U=Xe(),S=async n=>{if(n.preventDefault(),!(!i.trim()||!r||!t))try{await x.mutateAsync({agentId:t,data:{text:i}}),s("")}catch(c){console.error("Submit comment error caught in component:",c)}},B=(n,c)=>{f(n),N(c)},m=()=>{f(null),N("")},y=async()=>{if(!(!l||!h.trim()||!r||!t))try{await k.mutateAsync({agentId:t,commentId:l,data:{text:h}}),m()}catch(n){console.error("Update comment error caught in component:",n)}},v=async n=>{if(!(!r||!t)&&window.confirm("Are you sure you want to delete this comment?"))try{await U.mutateAsync({agentId:t,commentId:n})}catch(c){console.error("Delete comment error caught in component:",c)}},R=n=>r&&a?.radientUser?.account?.id===n.account_id;return e.jsxs("div",{className:"mt-6",children:[e.jsx("h2",{className:"mb-4 font-semibold text-heading text-ink",children:"Comments"}),r?e.jsxs("div",{className:"mb-4 flex flex-col gap-1.5",children:[e.jsxs(Te,{htmlFor:"new-comment",children:[e.jsx(We,{size:14,"aria-hidden":"true"}),"Leave a comment"]}),e.jsxs("form",{onSubmit:S,className:"flex flex-col gap-3",children:[e.jsx(te,{id:"new-comment",placeholder:"Share your thoughts...",rows:3,value:i,onChange:n=>s(n.target.value),required:!0}),e.jsx(o,{type:"submit",variant:"primary",disabled:x.isPending||!i.trim(),className:"self-end",children:x.isPending?e.jsx(I,{size:"sm",label:"Posting comment"}):"Post comment"})]})]}):e.jsx("p",{className:"mt-6 mb-4 text-body-sm text-ink-muted",children:"Sign in to leave comments."}),e.jsx(le,{className:"my-6"}),p&&e.jsx("ul",{className:"flex flex-col",children:[...Array(3)].map((n,c)=>e.jsxs("li",{className:"flex gap-3 pb-6",children:[e.jsx(M,{children:e.jsx(z,{children:e.jsx(w,{className:"size-full"})})}),e.jsxs("div",{className:"flex w-full flex-col gap-1.5",children:[e.jsx(w,{className:"h-3.5 w-24"}),e.jsx(w,{className:"h-3 w-15"}),e.jsx(w,{className:"mt-2 h-3.5 w-full"}),e.jsx(w,{className:"h-3.5 w-4/5"})]})]},`skeleton-${c}`))}),A&&e.jsxs("p",{role:"alert",className:"my-6 text-body-sm text-danger",children:["Failed to load comments: ",A.message]}),!p&&!A&&e.jsx("ul",{className:"flex flex-col gap-6",children:_.length===0?e.jsx("li",{className:"text-body-sm text-ink-muted",children:"No comments yet. Yours would be the first."}):_.map(n=>l===n.id?e.jsxs("li",{className:"flex gap-3",children:[e.jsx(M,{children:e.jsx(z,{children:n.account_metadata?.name?.charAt(0).toUpperCase()||"?"})}),e.jsxs("div",{className:"flex w-full flex-col gap-2",children:[e.jsx(te,{rows:3,value:h,onChange:c=>N(c.target.value),autoFocus:!0,"aria-label":"Edit comment"}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(o,{variant:"secondary",size:"sm",onClick:m,children:[e.jsx(Ee,{}),"Cancel"]}),e.jsxs(o,{variant:"primary",size:"sm",onClick:y,disabled:k.isPending||!h.trim(),children:[k.isPending?e.jsx(I,{size:"xs",label:"Saving comment"}):e.jsx(Oe,{}),"Save"]})]})]})]},n.id):e.jsxs("li",{className:"flex gap-3",children:[e.jsx(M,{children:e.jsx(z,{children:n.account_metadata?.name?.charAt(0).toUpperCase()||"?"})}),e.jsxs("div",{className:"w-full",children:[e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-body text-ink",children:n.account_metadata?.name||"Anonymous"}),e.jsxs("p",{className:"text-ink-muted text-meta",children:[Y(new Date(n.created_at))," ","ago"]})]}),R(n)&&e.jsxs("div",{className:"flex gap-0.5",children:[e.jsx(b,{content:"Edit comment",children:e.jsx(o,{variant:"ghost",size:"icon-sm",onClick:()=>B(n.id,n.text),disabled:!!l,"aria-label":"Edit comment",children:e.jsx(Qe,{})})}),e.jsx(b,{content:"Delete comment",children:e.jsx(o,{variant:"ghost",size:"icon-sm",onClick:()=>v(n.id),disabled:!!l,"aria-label":"Delete comment",children:e.jsx(re,{})})})]})]}),e.jsx("p",{className:"mt-2 text-body-sm text-ink whitespace-pre-wrap",children:n.text})]})]},n.id))})]})},V={all:["agent-details"],detail:t=>[...V.all,t]},Ge=({agentId:t,enabled:r=!0})=>ie({queryKey:V.detail(t||"invalid"),queryFn:async()=>{if(!t)throw new Error("Agent ID is required to fetch details.");return await fe(t)},select:i=>i.result,enabled:!!t&&r,staleTime:3e5,gcTime:6e5,refetchOnWindowFocus:!1}),Je=()=>{const t=K(),r=oe(),{isAuthenticated:a}=C();return O({mutationFn:async({agentId:s})=>{if(!a)throw new Error("Authentication required to delist an agent.");if(!s)throw new Error("Agent ID is required to delist.");return ye(s)},onSuccess:(s,l)=>{Q("Agent delisted"),t.invalidateQueries({queryKey:V.detail(l.agentId)}),pe(t),r("/agent-hub")},onError:s=>{console.error("Delist agent error:",s)}})},et={like:"The like did not go through",favourite:"The favourite did not go through",download:"The download did not start",delist:"The agent was not delisted"},W=({children:t})=>e.jsx("span",{className:"inline-flex h-4 min-w-5 items-center text-meta text-ink-muted",children:t}),mt=()=>{const{agentId:t}=be(),r=oe(),{isAuthenticated:a,user:i}=C(),{data:s,isLoading:l,isFetching:f,error:h,refetch:N}=Ge({agentId:t??"",enabled:!!t}),d=s?.visibility==="org",p=s?Fe(s.name):"",{memberships:A}=ve({enabled:d}),_=d?A.find(ue=>ue.tenant_id===s?.tenant_id)?.tenant_name??null:null,{statuses:x,isKnown:k,isError:U,isFetching:S,refetch:B}=_e({agentIds:t&&!d?[t]:[]}),m=Pe(k,x,t),y=m&&x[t??""]?.liked===!0,v=m&&x[t??""]?.favourited===!0,R=s?.like_count??0,n=s?.favourite_count??0,c=s?.download_count??0,P=qe(),q=Le(),D=Me(),g=Je(),[ce,L]=E.useState(!1),[j,u]=E.useState(null),$=!!i&&!!s&&i.radientUser?.account?.id===s.account_id,X=()=>{!t||!a||P.isPending||(u(null),P.mutate({agentId:t,isCurrentlyLiked:y},{onError:()=>u("like")}))},Z=()=>{!t||!a||q.isPending||(u(null),q.mutate({agentId:t,isCurrentlyFavourited:v},{onError:()=>u("favourite")}))},G=()=>{!t||!s||D.isPending||(u(null),D.mutate({agentId:s.id,agentName:s.name},{onError:()=>u("download")}))},de=()=>{!t||!$||g.isPending||(u(null),g.mutate({agentId:t},{onError:()=>u("delist")}),L(!1))},T=j?j==="like"?{action:"like",error:P.error,retry:X}:j==="favourite"?{action:"favourite",error:q.error,retry:Z}:j==="download"?{action:"download",error:D.error,retry:G}:{action:"delist",error:g.error,retry:void 0}:null,me=()=>{r("/agent-hub")};return l?e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx(I,{label:"Loading agent details"})}):h?e.jsx("div",{className:"flex h-full items-center justify-center p-6",children:e.jsxs(se,{variant:"danger",className:"max-w-2xl",children:[e.jsx(ae,{children:"This agent could not be loaded"}),e.jsx(ne,{children:Ce("The Radient agent catalogue did not answer.",h)}),e.jsx("div",{className:"mt-2",children:e.jsx(o,{variant:"outline",size:"sm",onClick:()=>void N(),disabled:f,"aria-busy":f,children:f?"Trying…":"Try again"})})]})}):s?e.jsxs("div",{className:"m-6 flex flex-1 flex-col rounded-md bg-surface p-8",children:[e.jsxs("div",{className:"mb-6 flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-4",children:[e.jsx(o,{variant:"ghost",size:"icon",onClick:me,"aria-label":"Back to Agent hub",children:e.jsx(Ue,{})}),e.jsx(M,{className:"size-11 shrink-0",children:e.jsx(z,{children:e.jsx(Be,{size:22,"aria-hidden":"true"})})}),e.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[e.jsx("h1",{className:"truncate text-display text-ink",children:p}),d&&e.jsx(ze,{orgName:_})]})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[!d&&e.jsxs(e.Fragment,{children:[e.jsx(b,{content:"Sign in to Radient to use this feature",disabled:a,children:e.jsx("span",{children:e.jsxs(o,{variant:"ghost",size:"sm",onClick:X,disabled:!a||P.isPending||!m,"aria-label":m?y?"Unlike agent":"Like agent":"Like state unavailable",className:J(y&&"text-danger"),children:[e.jsx(Ie,{fill:y?"currentColor":"none"}),e.jsx(W,{children:R})]})})}),e.jsx(b,{content:"Sign in to Radient to use this feature",disabled:a,children:e.jsx("span",{children:e.jsxs(o,{variant:"ghost",size:"sm",onClick:Z,disabled:!a||q.isPending||!m,"aria-label":m?v?"Unfavourite agent":"Favourite agent":"Favourite state unavailable",className:J(v&&"text-warning"),children:[e.jsx(Re,{fill:v?"currentColor":"none"}),e.jsx(W,{children:n})]})})})]}),e.jsx(b,{content:"Download agent to your computer",children:e.jsx("span",{children:e.jsxs(o,{variant:"ghost",size:"icon",onClick:G,disabled:D.isPending,"aria-label":"Download agent",className:"ml-1",children:[e.jsx(Ne,{}),e.jsx(W,{children:D.isPending?e.jsx(w,{className:"h-3.5 w-5"}):c})]})})}),$&&!d&&e.jsx(b,{content:"Permanently delist this agent from Agent hub",children:e.jsx("span",{children:e.jsx(o,{variant:"ghost",size:"icon",onClick:()=>L(!0),disabled:g.isPending,"aria-label":"Delist agent",className:"ml-1 text-danger hover:bg-danger-wash hover:text-danger",children:e.jsx(re,{})})})})]})]}),a&&U&&!j&&!d&&e.jsxs("output",{className:"mb-6 flex flex-wrap items-center gap-2 text-meta text-warning","data-testid":"agent-details-status-unknown",children:[e.jsx("span",{children:"Your likes and favourites could not be read, so this agent's viewer state is not shown."}),e.jsx(o,{variant:"ghost",size:"sm",onClick:()=>void B(),disabled:S,"aria-busy":S,children:S?"Trying…":"Try again"})]}),T&&j&&e.jsxs(se,{variant:"danger",className:"mb-6","data-testid":"agent-details-error",children:[e.jsx(ae,{children:et[j]}),e.jsx(ne,{children:we(T.action,T.error,p)}),T.retry&&e.jsx("div",{className:"mt-2",children:e.jsx(o,{variant:"outline",size:"sm",onClick:T.retry,children:"Try again"})})]}),e.jsx(Ke,{tags:s.tags,categories:s.categories}),e.jsxs("div",{className:"mt-4 mb-6 flex flex-col gap-2 text-body-sm text-ink-muted",children:[e.jsxs("p",{children:["Created by: ",s.account_metadata?.name??"Unknown",s.account_metadata?.email?` (${s.account_metadata.email})`:""]}),e.jsxs("p",{children:["Created: ",Y(new Date(s.created_at))," ago (",ee(s.created_at),")"]}),e.jsxs("p",{children:["Last modified: ",Y(new Date(s.updated_at))," ","ago (",ee(s.updated_at),")"]})]}),e.jsx("div",{className:"mt-2 mb-8 leading-relaxed text-body text-ink",children:s.description||"No description provided."}),e.jsx(le,{className:"my-6"}),!d&&e.jsx(Ze,{agentId:s.id}),e.jsx(Ae,{open:ce,onClose:()=>L(!1),title:"Delist this agent?",maxWidth:"xs",actions:e.jsxs(e.Fragment,{children:[e.jsx(ke,{onClick:()=>L(!1),children:"Cancel"}),e.jsx(Se,{onClick:()=>{!t||!$||g.isPending||de()},disabled:g.isPending,children:g.isPending?e.jsx(I,{size:"sm",label:"Delisting agent"}):"Delist"})]}),dialogProps:{"aria-describedby":"delist-dialog-description"},children:e.jsxs("div",{id:"delist-dialog-description",className:"text-body text-ink-muted",children:['This takes "',p,'" off the hub straight away, and nobody will be able to download it. You can upload it again later.']})})]}):e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx("p",{className:"text-body text-ink",children:"Agent not found."})})};export{mt as AgentDetailsPage};
6
+ */const $e=[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]],He=we("message-circle",$e),T={all:["agent-comments"],list:t=>[...T.all,"list",t]},We=({agentId:t,enabled:r=!0})=>ie({queryKey:T.list(t||"invalid"),queryFn:async()=>{if(!t)throw new Error("Agent ID is required to fetch comments.");return(await Pe(t)).result},enabled:!!t&&r,staleTime:2*60*1e3,gcTime:5*60*1e3,refetchOnWindowFocus:!0}),Ye=()=>{const t=K(),{isAuthenticated:r}=C();return O({mutationFn:async a=>{const{agentId:i,data:s}=a;if(!r)throw new Error("Authentication required.");return qe(i,s)},onSuccess:(a,i)=>{t.invalidateQueries({queryKey:T.list(i.agentId)}),B("Comment posted")},onError:a=>{Y(`Failed to post comment: ${a.message}`)}})},Ge=()=>{const t=K(),{isAuthenticated:r}=C();return O({mutationFn:async a=>{const{agentId:i,commentId:s,data:l}=a;if(!r)throw new Error("Authentication required.");return Le(i,s,l)},onSuccess:(a,i)=>{t.invalidateQueries({queryKey:T.list(i.agentId)}),B("Comment updated")},onError:a=>{Y(`Failed to update comment: ${a.message}`)}})},Je=()=>{const t=K(),{isAuthenticated:r}=C();return O({mutationFn:async a=>{const{agentId:i,commentId:s}=a;if(!r)throw new Error("Authentication required.");return Me(i,s)},onSuccess:(a,i)=>{t.invalidateQueries({queryKey:T.list(i.agentId)}),B("Comment deleted")},onError:a=>{Y(`Failed to delete comment: ${a.message}`)}})},Ve=({agentId:t})=>{const{isAuthenticated:r,user:a}=C(),[i,s]=F.useState(""),[l,f]=F.useState(null),[h,N]=F.useState(""),{data:d,isLoading:p,error:A}=We({agentId:t}),_=d?.records??[],x=Ye(),k=Ge(),Q=Je(),S=async n=>{if(n.preventDefault(),!(!i.trim()||!r||!t))try{await x.mutateAsync({agentId:t,data:{text:i}}),s("")}catch(c){console.error("Submit comment error caught in component:",c)}},U=(n,c)=>{f(n),N(c)},m=()=>{f(null),N("")},y=async()=>{if(!(!l||!h.trim()||!r||!t))try{await k.mutateAsync({agentId:t,commentId:l,data:{text:h}}),m()}catch(n){console.error("Update comment error caught in component:",n)}},v=async n=>{if(!(!r||!t)&&window.confirm("Are you sure you want to delete this comment?"))try{await Q.mutateAsync({agentId:t,commentId:n})}catch(c){console.error("Delete comment error caught in component:",c)}},R=n=>r&&a?.radientUser?.account?.id===n.account_id;return e.jsxs("div",{className:"mt-6",children:[e.jsx("h2",{className:"mb-4 font-semibold text-heading text-ink",children:"Comments"}),r?e.jsxs("div",{className:"mb-4 flex flex-col gap-1.5",children:[e.jsxs(be,{htmlFor:"new-comment",children:[e.jsx(He,{size:14,"aria-hidden":"true"}),"Leave a comment"]}),e.jsxs("form",{onSubmit:S,className:"flex flex-col gap-3",children:[e.jsx(te,{id:"new-comment",placeholder:"Share your thoughts...",rows:3,value:i,onChange:n=>s(n.target.value),required:!0}),e.jsx(o,{type:"submit",variant:"primary",disabled:x.isPending||!i.trim(),className:"self-end",children:x.isPending?e.jsx(I,{size:"sm",label:"Posting comment"}):"Post comment"})]})]}):e.jsx("p",{className:"mt-6 mb-4 text-body-sm text-ink-muted",children:"Sign in to leave comments."}),e.jsx(le,{className:"my-6"}),p&&e.jsx("ul",{className:"flex flex-col",children:[...Array(3)].map((n,c)=>e.jsxs("li",{className:"flex gap-3 pb-6",children:[e.jsx(M,{children:e.jsx(z,{children:e.jsx(w,{className:"size-full"})})}),e.jsxs("div",{className:"flex w-full flex-col gap-1.5",children:[e.jsx(w,{className:"h-3.5 w-24"}),e.jsx(w,{className:"h-3 w-15"}),e.jsx(w,{className:"mt-2 h-3.5 w-full"}),e.jsx(w,{className:"h-3.5 w-4/5"})]})]},`skeleton-${c}`))}),A&&e.jsxs("p",{role:"alert",className:"my-6 text-body-sm text-danger",children:["Failed to load comments: ",A.message]}),!p&&!A&&e.jsx("ul",{className:"flex flex-col gap-6",children:_.length===0?e.jsx("li",{className:"text-body-sm text-ink-muted",children:"No comments yet. Yours would be the first."}):_.map(n=>l===n.id?e.jsxs("li",{className:"flex gap-3",children:[e.jsx(M,{children:e.jsx(z,{children:n.account_metadata?.name?.charAt(0).toUpperCase()||"?"})}),e.jsxs("div",{className:"flex w-full flex-col gap-2",children:[e.jsx(te,{rows:3,value:h,onChange:c=>N(c.target.value),autoFocus:!0,"aria-label":"Edit comment"}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(o,{variant:"secondary",size:"sm",onClick:m,children:[e.jsx(Ce,{}),"Cancel"]}),e.jsxs(o,{variant:"primary",size:"sm",onClick:y,disabled:k.isPending||!h.trim(),children:[k.isPending?e.jsx(I,{size:"xs",label:"Saving comment"}):e.jsx(Oe,{}),"Save"]})]})]})]},n.id):e.jsxs("li",{className:"flex gap-3",children:[e.jsx(M,{children:e.jsx(z,{children:n.account_metadata?.name?.charAt(0).toUpperCase()||"?"})}),e.jsxs("div",{className:"w-full",children:[e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-body text-ink",children:n.account_metadata?.name||"Anonymous"}),e.jsxs("p",{className:"text-ink-muted text-meta",children:[W(new Date(n.created_at))," ","ago"]})]}),R(n)&&e.jsxs("div",{className:"flex gap-0.5",children:[e.jsx(b,{content:"Edit comment",children:e.jsx(o,{variant:"ghost",size:"icon-sm",onClick:()=>U(n.id,n.text),disabled:!!l,"aria-label":"Edit comment",children:e.jsx(Be,{})})}),e.jsx(b,{content:"Delete comment",children:e.jsx(o,{variant:"ghost",size:"icon-sm",onClick:()=>v(n.id),disabled:!!l,"aria-label":"Delete comment",children:e.jsx(re,{})})})]})]}),e.jsx("p",{className:"mt-2 text-body-sm text-ink whitespace-pre-wrap",children:n.text})]})]},n.id))})]})},G={all:["agent-details"],detail:t=>[...G.all,t]},Xe=({agentId:t,enabled:r=!0})=>ie({queryKey:G.detail(t||"invalid"),queryFn:async()=>{if(!t)throw new Error("Agent ID is required to fetch details.");return await ze(t)},select:i=>i.result,enabled:!!t&&r,staleTime:3e5,gcTime:6e5,refetchOnWindowFocus:!1}),Ze=()=>{const t=K(),r=oe(),{isAuthenticated:a}=C();return O({mutationFn:async({agentId:s})=>{if(!a)throw new Error("Authentication required to delist an agent.");if(!s)throw new Error("Agent ID is required to delist.");return Ie(s)},onSuccess:(s,l)=>{B("Agent delisted"),t.invalidateQueries({queryKey:G.detail(l.agentId)}),he(t),r("/agent-hub")},onError:s=>{console.error("Delist agent error:",s)}})},et={like:"The like did not go through",favourite:"The favourite did not go through",download:"The download did not start",delist:"The agent was not delisted"},H=({children:t})=>e.jsx("span",{className:"inline-flex h-4 min-w-5 items-center text-meta text-ink-muted",children:t}),ut=()=>{const{agentId:t}=ge(),r=oe(),{isAuthenticated:a,user:i}=C(),{data:s,isLoading:l,isFetching:f,error:h,refetch:N}=Xe({agentId:t??"",enabled:!!t}),d=s?.visibility==="org",p=s?Ne(s.name):"",{memberships:A}=Ke({enabled:d}),_=d?A.find(ue=>ue.tenant_id===s?.tenant_id)?.tenant_name??null:null,{statuses:x,isKnown:k,isError:Q,isFetching:S,refetch:U}=Ae({agentIds:t&&!d?[t]:[]}),m=ke(k,x,t),y=m&&x[t??""]?.liked===!0,v=m&&x[t??""]?.favourited===!0,R=s?.like_count??0,n=s?.favourite_count??0,c=s?.download_count??0,P=Se(),q=De(),D=Ee(),g=Ze(),[ce,L]=F.useState(!1),[j,u]=F.useState(null),$=!!i&&!!s&&i.radientUser?.account?.id===s.account_id,J=()=>{!t||!a||P.isPending||(u(null),P.mutate({agentId:t,isCurrentlyLiked:y},{onError:()=>u("like")}))},V=()=>{!t||!a||q.isPending||(u(null),q.mutate({agentId:t,isCurrentlyFavourited:v},{onError:()=>u("favourite")}))},X=()=>{!t||!s||D.isPending||(u(null),D.mutate({agentId:s.id,agentName:s.name},{onError:()=>u("download")}))},de=()=>{!t||!$||g.isPending||(u(null),g.mutate({agentId:t},{onError:()=>u("delist")}),L(!1))},E=j?j==="like"?{action:"like",error:P.error,retry:J}:j==="favourite"?{action:"favourite",error:q.error,retry:V}:j==="download"?{action:"download",error:D.error,retry:X}:{action:"delist",error:g.error,retry:void 0}:null,me=()=>{r("/agent-hub")};return l?e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx(I,{label:"Loading agent details"})}):h?e.jsx("div",{className:"flex h-full items-center justify-center p-6",children:e.jsxs(se,{variant:"danger",className:"max-w-2xl",children:[e.jsx(ae,{children:"This agent could not be loaded"}),e.jsx(ne,{children:je("The Radient agent catalogue did not answer.",h)}),e.jsx("div",{className:"mt-2",children:e.jsx(o,{variant:"outline",size:"sm",onClick:()=>void N(),disabled:f,"aria-busy":f,children:f?"Trying…":"Try again"})})]})}):s?e.jsxs("div",{className:"m-6 flex flex-1 flex-col rounded-md bg-surface p-8",children:[e.jsxs("div",{className:"mb-6 flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-4",children:[e.jsx(o,{variant:"ghost",size:"icon",onClick:me,"aria-label":"Back to Agent hub",children:e.jsx(Qe,{})}),e.jsx(M,{className:"size-11 shrink-0",children:e.jsx(z,{children:e.jsx(Ue,{size:22,"aria-hidden":"true"})})}),e.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[e.jsx("h1",{className:"truncate text-display text-ink",children:p}),d&&e.jsx(Fe,{orgName:_})]})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[!d&&e.jsxs(e.Fragment,{children:[e.jsx(b,{content:"Sign in to Radient to use this feature",disabled:a,children:e.jsx("span",{children:e.jsxs(o,{variant:"ghost",size:"sm",onClick:J,disabled:!a||P.isPending||!m,"aria-label":m?y?"Unlike agent":"Like agent":"Like state unavailable",className:Z(y&&"text-danger"),children:[e.jsx(Te,{fill:y?"currentColor":"none"}),e.jsx(H,{children:R})]})})}),e.jsx(b,{content:"Sign in to Radient to use this feature",disabled:a,children:e.jsx("span",{children:e.jsxs(o,{variant:"ghost",size:"sm",onClick:V,disabled:!a||q.isPending||!m,"aria-label":m?v?"Unfavourite agent":"Favourite agent":"Favourite state unavailable",className:Z(v&&"text-warning"),children:[e.jsx(Re,{fill:v?"currentColor":"none"}),e.jsx(H,{children:n})]})})})]}),e.jsx(b,{content:"Download agent to your computer",children:e.jsx("span",{children:e.jsxs(o,{variant:"ghost",size:"icon",onClick:X,disabled:D.isPending,"aria-label":"Download agent",className:"ml-1",children:[e.jsx(fe,{}),e.jsx(H,{children:D.isPending?e.jsx(w,{className:"h-3.5 w-5"}):c})]})})}),$&&!d&&e.jsx(b,{content:"Permanently delist this agent from Agent hub",children:e.jsx("span",{children:e.jsx(o,{variant:"ghost",size:"icon",onClick:()=>L(!0),disabled:g.isPending,"aria-label":"Delist agent",className:"ml-1 text-danger hover:bg-danger-wash hover:text-danger",children:e.jsx(re,{})})})})]})]}),a&&Q&&!j&&!d&&e.jsxs("output",{className:"mb-6 flex flex-wrap items-center gap-2 text-meta text-warning","data-testid":"agent-details-status-unknown",children:[e.jsx("span",{children:"Your likes and favourites could not be read, so this agent's viewer state is not shown."}),e.jsx(o,{variant:"ghost",size:"sm",onClick:()=>void U(),disabled:S,"aria-busy":S,children:S?"Trying…":"Try again"})]}),E&&j&&e.jsxs(se,{variant:"danger",className:"mb-6","data-testid":"agent-details-error",children:[e.jsx(ae,{children:et[j]}),e.jsx(ne,{children:xe(E.action,E.error,p)}),E.retry&&e.jsx("div",{className:"mt-2",children:e.jsx(o,{variant:"outline",size:"sm",onClick:E.retry,children:"Try again"})})]}),e.jsx(_e,{tags:s.tags,categories:s.categories}),e.jsxs("div",{className:"mt-4 mb-6 flex flex-col gap-2 text-body-sm text-ink-muted",children:[e.jsxs("p",{children:["Created by: ",s.account_metadata?.name??"Unknown",s.account_metadata?.email?` (${s.account_metadata.email})`:""]}),e.jsxs("p",{children:["Created: ",W(new Date(s.created_at))," ago (",ee(s.created_at),")"]}),e.jsxs("p",{children:["Last modified: ",W(new Date(s.updated_at))," ","ago (",ee(s.updated_at),")"]})]}),e.jsx("div",{className:"mt-2 mb-8 leading-relaxed text-body text-ink",children:s.description||"No description provided."}),e.jsx(le,{className:"my-6"}),!d&&e.jsx(Ve,{agentId:s.id}),e.jsx(pe,{open:ce,onClose:()=>L(!1),title:"Delist this agent?",maxWidth:"xs",actions:e.jsxs(e.Fragment,{children:[e.jsx(ye,{onClick:()=>L(!1),children:"Cancel"}),e.jsx(ve,{onClick:()=>{!t||!$||g.isPending||de()},disabled:g.isPending,children:g.isPending?e.jsx(I,{size:"sm",label:"Delisting agent"}):"Delist"})]}),dialogProps:{"aria-describedby":"delist-dialog-description"},children:e.jsxs("div",{id:"delist-dialog-description",className:"text-body text-ink-muted",children:['This takes "',p,'" off the hub straight away, and nobody will be able to download it. You can upload it again later.']})})]}):e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx("p",{className:"text-body text-ink",children:"Agent not found."})})};export{ut as AgentDetailsPage};