solace-agent-mesh 1.0.7__py3-none-any.whl → 1.1.0__py3-none-any.whl
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.
Potentially problematic release.
This version of solace-agent-mesh might be problematic. Click here for more details.
- solace_agent_mesh/agent/adk/adk_llm.txt +182 -42
- solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +171 -0
- solace_agent_mesh/agent/adk/callbacks.py +165 -104
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +0 -18
- solace_agent_mesh/agent/adk/models/models_llm.txt +104 -55
- solace_agent_mesh/agent/adk/runner.py +7 -5
- solace_agent_mesh/agent/adk/services.py +9 -1
- solace_agent_mesh/agent/adk/setup.py +11 -0
- solace_agent_mesh/agent/adk/stream_parser.py +8 -1
- solace_agent_mesh/agent/adk/tool_wrapper.py +10 -3
- solace_agent_mesh/agent/agent_llm.txt +355 -18
- solace_agent_mesh/agent/protocol/event_handlers.py +433 -296
- solace_agent_mesh/agent/protocol/protocol_llm.txt +54 -7
- solace_agent_mesh/agent/sac/app.py +1 -1
- solace_agent_mesh/agent/sac/component.py +212 -517
- solace_agent_mesh/agent/sac/sac_llm.txt +133 -63
- solace_agent_mesh/agent/testing/testing_llm.txt +25 -58
- solace_agent_mesh/agent/tools/peer_agent_tool.py +15 -11
- solace_agent_mesh/agent/tools/tools_llm.txt +234 -69
- solace_agent_mesh/agent/utils/artifact_helpers.py +35 -1
- solace_agent_mesh/agent/utils/utils_llm.txt +90 -105
- solace_agent_mesh/assets/docs/404.html +3 -3
- solace_agent_mesh/assets/docs/assets/js/{3d406171.7d02a73b.js → 3d406171.0b9eeed1.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/6e0db977.39a79ca9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{75384d09.ccd480c4.js → 75384d09.bf78fbdb.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/90dd9cf6.88f385ea.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f284c35a.fb68323a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.a75ecc0d.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.458efb1d.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/concepts/cli/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/configurations/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/migration-guides/a2a-upgrade-to-0.3.0/a2a-gateway-upgrade-to-0.3.0/index.html +105 -0
- solace_agent_mesh/assets/docs/docs/documentation/migration-guides/a2a-upgrade-to-0.3.0/a2a-technical-migration-map/index.html +53 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/bedrock-agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/custom-agent/index.html +8 -8
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/event-mesh-gateway/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/mcp-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/mongodb-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/rag-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/rest-gateway/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/sql-database/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/artifact-management/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/audio-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/data-analysis-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/embeds/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-gateways/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +4 -4
- solace_agent_mesh/assets/docs/lunr-index-1756992446316.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -1
- solace_agent_mesh/assets/docs/search-doc-1756992446316.json +1 -0
- solace_agent_mesh/assets/docs/search-doc.json +1 -1
- solace_agent_mesh/assets/docs/sitemap.xml +1 -1
- solace_agent_mesh/cli/__init__.py +1 -1
- solace_agent_mesh/cli/commands/add_cmd/web_add_agent_step.py +12 -3
- solace_agent_mesh/cli/commands/add_cmd/web_add_gateway_step.py +10 -14
- solace_agent_mesh/cli/commands/init_cmd/web_init_step.py +2 -15
- solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +6 -2
- solace_agent_mesh/cli/utils.py +15 -0
- solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-DvlO62me.js → authCallback-BmF2l6vg.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/{client-bp6u3qVZ.js → client-D881Dttc.js} +4 -4
- solace_agent_mesh/client/webui/frontend/static/assets/main-C0jZjYa8.js +699 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-CCeG324-.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/auth-callback.html +2 -2
- solace_agent_mesh/client/webui/frontend/static/index.html +3 -3
- solace_agent_mesh/common/a2a/__init__.py +213 -0
- solace_agent_mesh/common/a2a/a2a_llm.txt +182 -0
- solace_agent_mesh/common/a2a/artifact.py +328 -0
- solace_agent_mesh/common/a2a/events.py +183 -0
- solace_agent_mesh/common/a2a/message.py +307 -0
- solace_agent_mesh/common/a2a/protocol.py +513 -0
- solace_agent_mesh/common/a2a/task.py +127 -0
- solace_agent_mesh/common/a2a/translation.py +653 -0
- solace_agent_mesh/common/a2a/types.py +54 -0
- solace_agent_mesh/common/a2a_spec/a2a.json +2576 -0
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +407 -0
- solace_agent_mesh/common/a2a_spec/schemas/agent_progress_update.json +18 -0
- solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +31 -0
- solace_agent_mesh/common/a2a_spec/schemas/llm_invocation.json +18 -0
- solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +235 -0
- solace_agent_mesh/common/a2a_spec/schemas/tool_invocation_start.json +26 -0
- solace_agent_mesh/common/a2a_spec/schemas/tool_result.json +25 -0
- solace_agent_mesh/common/agent_registry.py +1 -1
- solace_agent_mesh/common/common_llm.txt +192 -70
- solace_agent_mesh/common/data_parts.py +99 -0
- solace_agent_mesh/common/middleware/middleware_llm.txt +17 -17
- solace_agent_mesh/common/sac/__init__.py +0 -0
- solace_agent_mesh/common/sac/sac_llm.txt +71 -0
- solace_agent_mesh/common/sac/sam_component_base.py +252 -0
- solace_agent_mesh/common/services/providers/providers_llm.txt +51 -84
- solace_agent_mesh/common/services/services_llm.txt +206 -26
- solace_agent_mesh/common/utils/artifact_utils.py +29 -0
- solace_agent_mesh/common/utils/embeds/embeds_llm.txt +176 -80
- solace_agent_mesh/common/utils/utils_llm.txt +323 -42
- solace_agent_mesh/config_portal/backend/common.py +1 -1
- solace_agent_mesh/config_portal/frontend/static/client/assets/{_index-MqsrTd6g.js → _index-Bym6YkMd.js} +74 -24
- solace_agent_mesh/config_portal/frontend/static/client/assets/{components-B7lKcHVY.js → components-Rk0n-9cK.js} +1 -1
- solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-CEumGClk.js → entry.client-mvZjNKiz.js} +1 -1
- solace_agent_mesh/config_portal/frontend/static/client/assets/{index-DSo1AH_7.js → index-DzNKzXrc.js} +1 -1
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-d845808d.js +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/{root-C4XmHinv.js → root-BWvk5-gF.js} +1 -1
- solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
- solace_agent_mesh/core_a2a/core_a2a_llm.txt +10 -8
- solace_agent_mesh/core_a2a/service.py +20 -44
- solace_agent_mesh/gateway/base/app.py +27 -1
- solace_agent_mesh/gateway/base/base_llm.txt +177 -72
- solace_agent_mesh/gateway/base/component.py +294 -523
- solace_agent_mesh/gateway/gateway_llm.txt +299 -58
- solace_agent_mesh/gateway/http_sse/component.py +156 -183
- solace_agent_mesh/gateway/http_sse/components/components_llm.txt +29 -29
- solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +272 -36
- solace_agent_mesh/gateway/http_sse/main.py +8 -10
- solace_agent_mesh/gateway/http_sse/routers/agents.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +18 -4
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +231 -5
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +12 -7
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +116 -169
- solace_agent_mesh/gateway/http_sse/services/agent_service.py +1 -1
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +89 -135
- solace_agent_mesh/gateway/http_sse/services/task_service.py +2 -5
- solace_agent_mesh/solace_agent_mesh_llm.txt +362 -0
- solace_agent_mesh/templates/gateway_component_template.py +149 -98
- {solace_agent_mesh-1.0.7.dist-info → solace_agent_mesh-1.1.0.dist-info}/METADATA +5 -4
- {solace_agent_mesh-1.0.7.dist-info → solace_agent_mesh-1.1.0.dist-info}/RECORD +144 -127
- solace_agent_mesh/assets/docs/assets/js/f284c35a.731836ad.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.d79f063b.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.6415ad00.js +0 -1
- solace_agent_mesh/assets/docs/lunr-index-1756146501924.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1756146501924.json +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-BCpII1-0.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-BucUdn9m.js +0 -673
- solace_agent_mesh/common/a2a_protocol.py +0 -564
- solace_agent_mesh/common/client/__init__.py +0 -4
- solace_agent_mesh/common/client/card_resolver.py +0 -21
- solace_agent_mesh/common/client/client.py +0 -85
- solace_agent_mesh/common/client/client_llm.txt +0 -133
- solace_agent_mesh/common/server/__init__.py +0 -4
- solace_agent_mesh/common/server/server.py +0 -122
- solace_agent_mesh/common/server/server_llm.txt +0 -169
- solace_agent_mesh/common/server/task_manager.py +0 -291
- solace_agent_mesh/common/server/utils.py +0 -28
- solace_agent_mesh/common/types.py +0 -411
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-28271392.js +0 -1
- /solace_agent_mesh/assets/docs/assets/js/{main.d79f063b.js.LICENSE.txt → main.a75ecc0d.js.LICENSE.txt} +0 -0
- {solace_agent_mesh-1.0.7.dist-info → solace_agent_mesh-1.1.0.dist-info}/WHEEL +0 -0
- {solace_agent_mesh-1.0.7.dist-info → solace_agent_mesh-1.1.0.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.0.7.dist-info → solace_agent_mesh-1.1.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var j=(e,t,r)=>Be(e,typeof t!="symbol"?t+"":t,r);import{p as Ye,A as Xe,D as Ve,i as pe,g as We,h as ve,E as U,r as c,k as Ge,m as we,l as Ke,n as Ze,o as Qe,q as qe,u as ge,s as Ee,N as et,L as tt,F as rt}from"./index-
|
|
1
|
+
var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var j=(e,t,r)=>Be(e,typeof t!="symbol"?t+"":t,r);import{p as Ye,A as Xe,D as Ve,i as pe,g as We,h as ve,E as U,r as c,k as Ge,m as we,l as Ke,n as Ze,o as Qe,q as qe,u as ge,s as Ee,N as et,L as tt,F as rt}from"./index-DzNKzXrc.js";var nt=-1,at=-2,it=-3,ot=-4,lt=-5,st=-6,ut=-7,ct="B",dt="D",Se="E",ft="M",ht="N",Re="P",mt="R",yt="S",pt="Y",vt="U",wt="Z",xe=class{constructor(){j(this,"promise");j(this,"resolve");j(this,"reject");this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}};function gt(){const e=new TextDecoder;let t="";return new TransformStream({transform(r,n){const a=e.decode(r,{stream:!0}),i=(t+a).split(`
|
|
2
2
|
`);t=i.pop()||"";for(const s of i)n.enqueue(s)},flush(r){t&&r.enqueue(t)}})}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var V=typeof window<"u"?window:typeof globalThis<"u"?globalThis:void 0;function K(e){const{hydrated:t,values:r}=this;if(typeof e=="number")return ue.call(this,e);if(!Array.isArray(e)||!e.length)throw new SyntaxError;const n=r.length;for(const a of e)r.push(a);return t.length=r.length,ue.call(this,n)}function ue(e){const{hydrated:t,values:r,deferred:n,plugins:a}=this;let i;const s=[[e,o=>{i=o}]];let l=[];for(;s.length>0;){const[o,h]=s.pop();switch(o){case ut:h(void 0);continue;case lt:h(null);continue;case at:h(NaN);continue;case st:h(1/0);continue;case it:h(-1/0);continue;case ot:h(-0);continue}if(t[o]){h(t[o]);continue}const m=r[o];if(!m||typeof m!="object"){t[o]=m,h(m);continue}if(Array.isArray(m))if(typeof m[0]=="string"){const[u,d,y]=m;switch(u){case dt:h(t[o]=new Date(d));continue;case vt:h(t[o]=new URL(d));continue;case ct:h(t[o]=BigInt(d));continue;case mt:h(t[o]=new RegExp(d,y));continue;case pt:h(t[o]=Symbol.for(d));continue;case yt:const f=new Set;t[o]=f;for(let w=1;w<m.length;w++)s.push([m[w],S=>{f.add(S)}]);h(f);continue;case ft:const p=new Map;t[o]=p;for(let w=1;w<m.length;w+=2){const S=[];s.push([m[w+1],v=>{S[1]=v}]),s.push([m[w],v=>{S[0]=v}]),l.push(()=>{p.set(S[0],S[1])})}h(p);continue;case ht:const g=Object.create(null);t[o]=g;for(const w of Object.keys(d).reverse()){const S=[];s.push([d[w],v=>{S[1]=v}]),s.push([Number(w.slice(1)),v=>{S[0]=v}]),l.push(()=>{g[S[0]]=S[1]})}h(g);continue;case Re:if(t[d])h(t[o]=t[d]);else{const w=new xe;n[d]=w,h(t[o]=w.promise)}continue;case Se:const[,E,b]=m;let x=b&&V&&V[b]?new V[b](E):new Error(E);t[o]=x,h(x);continue;case wt:h(t[o]=t[d]);continue;default:if(Array.isArray(a)){const w=[],S=m.slice(1);for(let v=0;v<S.length;v++){const R=S[v];s.push([R,_=>{w[v]=_}])}l.push(()=>{for(const v of a){const R=v(m[0],...w);if(R){h(t[o]=R.value);return}}throw new SyntaxError});continue}throw new SyntaxError}}else{const u=[];t[o]=u;for(let d=0;d<m.length;d++){const y=m[d];y!==nt&&s.push([y,f=>{u[d]=f}])}h(u);continue}else{const u={};t[o]=u;for(const d of Object.keys(m).reverse()){const y=[];s.push([m[d],f=>{y[1]=f}]),s.push([Number(d.slice(1)),f=>{y[0]=f}]),l.push(()=>{u[y[0]]=y[1]})}h(u);continue}}for(;l.length>0;)l.pop()();return i}async function Et(e,t){const{plugins:r}=t??{},n=new xe,a=e.pipeThrough(gt()).getReader(),i={values:[],hydrated:[],deferred:{},plugins:r},s=await St.call(i,a);let l=n.promise;return s.done?n.resolve():l=Rt.call(i,a).then(n.resolve).catch(o=>{for(const h of Object.values(i.deferred))h.reject(o);n.reject(o)}),{done:l.then(()=>a.closed),value:s.value}}async function St(e){const t=await e.read();if(!t.value)throw new SyntaxError;let r;try{r=JSON.parse(t.value)}catch{throw new SyntaxError}return{done:t.done,value:K.call(this,r)}}async function Rt(e){let t=await e.read();for(;!t.done;){if(!t.value)continue;const r=t.value;switch(r[0]){case Re:{const n=r.indexOf(":"),a=Number(r.slice(1,n)),i=this.deferred[a];if(!i)throw new Error(`Deferred ID ${a} not found in stream`);const s=r.slice(n+1);let l;try{l=JSON.parse(s)}catch{throw new SyntaxError}const o=K.call(this,l);i.resolve(o);break}case Se:{const n=r.indexOf(":"),a=Number(r.slice(1,n)),i=this.deferred[a];if(!i)throw new Error(`Deferred ID ${a} not found in stream`);const s=r.slice(n+1);let l;try{l=JSON.parse(s)}catch{throw new SyntaxError}const o=K.call(this,l);i.reject(o);break}default:throw new SyntaxError}t=await e.read()}}/**
|
|
3
3
|
* @remix-run/server-runtime v2.16.2
|
|
4
4
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{E as C,m as h,c as M,a as y,r,R as g,b as E,d as S,j as v}from"./index-
|
|
1
|
+
import{E as C,m as h,c as M,a as y,r,R as g,b as E,d as S,j as v}from"./index-DzNKzXrc.js";import{i as b,d as F,c as P,s as D,g as k,a as z,b as H,u as L,R as O,e as T}from"./components-Rk0n-9cK.js";/**
|
|
2
2
|
* @remix-run/react v2.16.2
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
@@ -65,4 +65,4 @@ Error generating stack: `+o.message+`
|
|
|
65
65
|
* LICENSE.md file in the root directory of this source tree.
|
|
66
66
|
*
|
|
67
67
|
* @license MIT
|
|
68
|
-
*/function gr(){return gr=Object.assign?Object.assign.bind():function(i){for(var a=1;a<arguments.length;a++){var u=arguments[a];for(var c in u)Object.prototype.hasOwnProperty.call(u,c)&&(i[c]=u[c])}return i},gr.apply(this,arguments)}function Cu(i,a){if(i==null)return{};var u={},c=Object.keys(i),f,h;for(h=0;h<c.length;h++)f=c[h],!(a.indexOf(f)>=0)&&(u[f]=i[f]);return u}const so="get",ou="application/x-www-form-urlencoded";function vo(i){return i!=null&&typeof i.tagName=="string"}function tm(i){return vo(i)&&i.tagName.toLowerCase()==="button"}function nm(i){return vo(i)&&i.tagName.toLowerCase()==="form"}function rm(i){return vo(i)&&i.tagName.toLowerCase()==="input"}function lm(i){return!!(i.metaKey||i.altKey||i.ctrlKey||i.shiftKey)}function im(i,a){return i.button===0&&(!a||a==="_self")&&!lm(i)}function pu(i){return i===void 0&&(i=""),new URLSearchParams(typeof i=="string"||Array.isArray(i)||i instanceof URLSearchParams?i:Object.keys(i).reduce((a,u)=>{let c=i[u];return a.concat(Array.isArray(c)?c.map(f=>[u,f]):[[u,c]])},[]))}function om(i,a){let u=pu(i);return a&&a.forEach((c,f)=>{u.has(f)||a.getAll(f).forEach(h=>{u.append(f,h)})}),u}let oo=null;function am(){if(oo===null)try{new FormData(document.createElement("form"),0),oo=!1}catch{oo=!0}return oo}const um=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function au(i){return i!=null&&!um.has(i)?null:i}function sm(i,a){let u,c,f,h,p;if(nm(i)){let g=i.getAttribute("action");c=g?At(g,a):null,u=i.getAttribute("method")||so,f=au(i.getAttribute("enctype"))||ou,h=new FormData(i)}else if(tm(i)||rm(i)&&(i.type==="submit"||i.type==="image")){let g=i.form;if(g==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let y=i.getAttribute("formaction")||g.getAttribute("action");if(c=y?At(y,a):null,u=i.getAttribute("formmethod")||g.getAttribute("method")||so,f=au(i.getAttribute("formenctype"))||au(g.getAttribute("enctype"))||ou,h=new FormData(g,i),!am()){let{name:x,type:_,value:C}=i;if(_==="image"){let D=x?x+".":"";h.append(D+"x","0"),h.append(D+"y","0")}else x&&h.append(x,C)}}else{if(vo(i))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');u=so,c=null,f=ou,p=i}return h&&f==="text/plain"&&(p=h,h=void 0),{action:c,method:u.toLowerCase(),encType:f,formData:h,body:p}}const cm=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],fm=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"],dm=["fetcherKey","navigate","reloadDocument","replace","state","method","action","onSubmit","relative","preventScrollReset","viewTransition"],pm="6";try{window.__reactRouterVersion=pm}catch{}const Hf=N.createContext({isTransitioning:!1}),hm=N.createContext(new Map),mm="startTransition",Ef=Lp[mm],vm="flushSync",kf=Op[vm];function ym(i){Ef?Ef(i):i()}function Bl(i){kf?kf(i):i()}class gm{constructor(){this.status="pending",this.promise=new Promise((a,u)=>{this.resolve=c=>{this.status==="pending"&&(this.status="resolved",a(c))},this.reject=c=>{this.status==="pending"&&(this.status="rejected",u(c))}})}}function Wm(i){let{fallbackElement:a,router:u,future:c}=i,[f,h]=N.useState(u.state),[p,g]=N.useState(),[y,x]=N.useState({isTransitioning:!1}),[_,C]=N.useState(),[D,I]=N.useState(),[W,V]=N.useState(),U=N.useRef(new Map),{v7_startTransition:fe}=c||{},$=N.useCallback(te=>{fe?ym(te):te()},[fe]),ae=N.useCallback((te,Ee)=>{let{deletedFetchers:se,flushSync:Ue,viewTransitionOpts:De}=Ee;te.fetchers.forEach((Ae,Ze)=>{Ae.data!==void 0&&U.current.set(Ze,Ae.data)}),se.forEach(Ae=>U.current.delete(Ae));let Fe=u.window==null||u.window.document==null||typeof u.window.document.startViewTransition!="function";if(!De||Fe){Ue?Bl(()=>h(te)):$(()=>h(te));return}if(Ue){Bl(()=>{D&&(_&&_.resolve(),D.skipTransition()),x({isTransitioning:!0,flushSync:!0,currentLocation:De.currentLocation,nextLocation:De.nextLocation})});let Ae=u.window.document.startViewTransition(()=>{Bl(()=>h(te))});Ae.finished.finally(()=>{Bl(()=>{C(void 0),I(void 0),g(void 0),x({isTransitioning:!1})})}),Bl(()=>I(Ae));return}D?(_&&_.resolve(),D.skipTransition(),V({state:te,currentLocation:De.currentLocation,nextLocation:De.nextLocation})):(g(te),x({isTransitioning:!0,flushSync:!1,currentLocation:De.currentLocation,nextLocation:De.nextLocation}))},[u.window,D,_,U,$]);N.useLayoutEffect(()=>u.subscribe(ae),[u,ae]),N.useEffect(()=>{y.isTransitioning&&!y.flushSync&&C(new gm)},[y]),N.useEffect(()=>{if(_&&p&&u.window){let te=p,Ee=_.promise,se=u.window.document.startViewTransition(async()=>{$(()=>h(te)),await Ee});se.finished.finally(()=>{C(void 0),I(void 0),g(void 0),x({isTransitioning:!1})}),I(se)}},[$,p,_,u.window]),N.useEffect(()=>{_&&p&&f.location.key===p.location.key&&_.resolve()},[_,D,f.location,p]),N.useEffect(()=>{!y.isTransitioning&&W&&(g(W.state),x({isTransitioning:!0,flushSync:!1,currentLocation:W.currentLocation,nextLocation:W.nextLocation}),V(void 0))},[y.isTransitioning,W]),N.useEffect(()=>{},[]);let le=N.useMemo(()=>({createHref:u.createHref,encodeLocation:u.encodeLocation,go:te=>u.navigate(te),push:(te,Ee,se)=>u.navigate(te,{state:Ee,preventScrollReset:se==null?void 0:se.preventScrollReset}),replace:(te,Ee,se)=>u.navigate(te,{replace:!0,state:Ee,preventScrollReset:se==null?void 0:se.preventScrollReset})}),[u]),Se=u.basename||"/",Oe=N.useMemo(()=>({router:u,navigator:le,static:!1,basename:Se}),[u,le,Se]),T=N.useMemo(()=>({v7_relativeSplatPath:u.future.v7_relativeSplatPath}),[u.future.v7_relativeSplatPath]);return N.useEffect(()=>Jh(c,u.future),[c,u.future]),N.createElement(N.Fragment,null,N.createElement(Ql.Provider,{value:Oe},N.createElement(mo.Provider,{value:f},N.createElement(hm.Provider,{value:U.current},N.createElement(Hf.Provider,{value:y},N.createElement(Zh,{basename:Se,location:f.location,navigationType:f.historyAction,navigator:le,future:T},f.initialized||u.future.v7_partialHydration?N.createElement(wm,{routes:u.routes,future:u.future,state:f}):a))))),null)}const wm=N.memo(Sm);function Sm(i){let{routes:a,future:u,state:c}=i;return Fh(a,void 0,c,u)}const Em=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",km=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,xm=N.forwardRef(function(a,u){let{onClick:c,relative:f,reloadDocument:h,replace:p,state:g,target:y,to:x,preventScrollReset:_,viewTransition:C}=a,D=Cu(a,cm),{basename:I}=N.useContext(Jt),W,V=!1;if(typeof x=="string"&&km.test(x)&&(W=x,Em))try{let ae=new URL(window.location.href),le=x.startsWith("//")?new URL(ae.protocol+x):new URL(x),Se=At(le.pathname,I);le.origin===ae.origin&&Se!=null?x=Se+le.search+le.hash:V=!0}catch{}let U=Nh(x,{relative:f}),fe=Pm(x,{replace:p,state:g,target:y,preventScrollReset:_,relative:f,viewTransition:C});function $(ae){c&&c(ae),ae.defaultPrevented||fe(ae)}return N.createElement("a",gr({},D,{href:W||U,onClick:V||h?c:$,ref:u,target:y}))}),$m=N.forwardRef(function(a,u){let{"aria-current":c="page",caseSensitive:f=!1,className:h="",end:p=!1,style:g,to:y,viewTransition:x,children:_}=a,C=Cu(a,fm),D=Yl(y,{relative:C.relative}),I=Jn(),W=N.useContext(mo),{navigator:V,basename:U}=N.useContext(Jt),fe=W!=null&&Mm(D)&&x===!0,$=V.encodeLocation?V.encodeLocation(D).pathname:D.pathname,ae=I.pathname,le=W&&W.navigation&&W.navigation.location?W.navigation.location.pathname:null;f||(ae=ae.toLowerCase(),le=le?le.toLowerCase():null,$=$.toLowerCase()),le&&U&&(le=At(le,U)||le);const Se=$!=="/"&&$.endsWith("/")?$.length-1:$.length;let Oe=ae===$||!p&&ae.startsWith($)&&ae.charAt(Se)==="/",T=le!=null&&(le===$||!p&&le.startsWith($)&&le.charAt($.length)==="/"),te={isActive:Oe,isPending:T,isTransitioning:fe},Ee=Oe?c:void 0,se;typeof h=="function"?se=h(te):se=[h,Oe?"active":null,T?"pending":null,fe?"transitioning":null].filter(Boolean).join(" ");let Ue=typeof g=="function"?g(te):g;return N.createElement(xm,gr({},C,{"aria-current":Ee,className:se,ref:u,style:Ue,to:y,viewTransition:x}),typeof _=="function"?_(te):_)}),Qm=N.forwardRef((i,a)=>{let{fetcherKey:u,navigate:c,reloadDocument:f,replace:h,state:p,method:g=so,action:y,onSubmit:x,relative:_,preventScrollReset:C,viewTransition:D}=i,I=Cu(i,dm),W=Tm(),V=Dm(y,{relative:_}),U=g.toLowerCase()==="get"?"get":"post",fe=$=>{if(x&&x($),$.defaultPrevented)return;$.preventDefault();let ae=$.nativeEvent.submitter,le=(ae==null?void 0:ae.getAttribute("formmethod"))||g;W(ae||$.currentTarget,{fetcherKey:u,method:le,navigate:c,replace:h,state:p,relative:_,preventScrollReset:C,viewTransition:D})};return N.createElement("form",gr({ref:a,method:U,action:V,onSubmit:f?x:fe},I))});var $l;(function(i){i.UseScrollRestoration="useScrollRestoration",i.UseSubmit="useSubmit",i.UseSubmitFetcher="useSubmitFetcher",i.UseFetcher="useFetcher",i.useViewTransitionState="useViewTransitionState"})($l||($l={}));var hu;(function(i){i.UseFetcher="useFetcher",i.UseFetchers="useFetchers",i.UseScrollRestoration="useScrollRestoration"})(hu||(hu={}));function Pu(i){let a=N.useContext(Ql);return a||ve(!1),a}function Cm(i){let a=N.useContext(mo);return a||ve(!1),a}function Pm(i,a){let{target:u,replace:c,state:f,preventScrollReset:h,relative:p,viewTransition:g}=a===void 0?{}:a,y=Af(),x=Jn(),_=Yl(i,{relative:p});return N.useCallback(C=>{if(im(C,u)){C.preventDefault();let D=c!==void 0?c:Xn(x)===Xn(_);y(i,{replace:D,state:f,preventScrollReset:h,relative:p,viewTransition:g})}},[x,y,_,c,f,u,i,h,p,g])}function Km(i){let a=N.useRef(pu(i)),u=N.useRef(!1),c=Jn(),f=N.useMemo(()=>om(c.search,u.current?null:a.current),[c.search]),h=Af(),p=N.useCallback((g,y)=>{const x=pu(typeof g=="function"?g(f):g);u.current=!0,h("?"+x,y)},[h,f]);return[f,p]}function _m(){if(typeof document>"u")throw new Error("You are calling submit during the server render. Try calling submit within a `useEffect` or callback instead.")}let Rm=0,Lm=()=>"__"+String(++Rm)+"__";function Tm(){let{router:i}=Pu($l.UseSubmit),{basename:a}=N.useContext(Jt),u=Wh();return N.useCallback(function(c,f){f===void 0&&(f={}),_m();let{action:h,method:p,encType:g,formData:y,body:x}=sm(c,a);if(f.navigate===!1){let _=f.fetcherKey||Lm();i.fetch(_,u,f.action||h,{preventScrollReset:f.preventScrollReset,formData:y,body:x,formMethod:f.method||p,formEncType:f.encType||g,flushSync:f.flushSync})}else i.navigate(f.action||h,{preventScrollReset:f.preventScrollReset,formData:y,body:x,formMethod:f.method||p,formEncType:f.encType||g,replace:f.replace,state:f.state,fromRouteId:u,flushSync:f.flushSync,viewTransition:f.viewTransition})},[i,a,u])}function Dm(i,a){let{relative:u}=a===void 0?{}:a,{basename:c}=N.useContext(Jt),f=N.useContext(Sn);f||ve(!1);let[h]=f.matches.slice(-1),p=gr({},Yl(i||".",{relative:u})),g=Jn();if(i==null){p.search=g.search;let y=new URLSearchParams(p.search),x=y.getAll("index");if(x.some(C=>C==="")){y.delete("index"),x.filter(D=>D).forEach(D=>y.append("index",D));let C=y.toString();p.search=C?"?"+C:""}}return(!i||i===".")&&h.route.index&&(p.search=p.search?p.search.replace(/^\?/,"?index&"):"?index"),c!=="/"&&(p.pathname=p.pathname==="/"?c:un([c,p.pathname])),Xn(p)}const xf="react-router-scroll-positions";let ao={};function Ym(i){let{getKey:a,storageKey:u}=i===void 0?{}:i,{router:c}=Pu($l.UseScrollRestoration),{restoreScrollPosition:f,preventScrollReset:h}=Cm(hu.UseScrollRestoration),{basename:p}=N.useContext(Jt),g=Jn(),y=Qh(),x=$h();N.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),Nm(N.useCallback(()=>{if(x.state==="idle"){let _=(a?a(g,y):null)||g.key;ao[_]=window.scrollY}try{sessionStorage.setItem(u||xf,JSON.stringify(ao))}catch{}window.history.scrollRestoration="auto"},[u,a,x.state,g,y])),typeof document<"u"&&(N.useLayoutEffect(()=>{try{let _=sessionStorage.getItem(u||xf);_&&(ao=JSON.parse(_))}catch{}},[u]),N.useLayoutEffect(()=>{let _=a&&p!=="/"?(D,I)=>a(gr({},D,{pathname:At(D.pathname,p)||D.pathname}),I):a,C=c==null?void 0:c.enableScrollRestoration(ao,()=>window.scrollY,_);return()=>C&&C()},[c,p,a]),N.useLayoutEffect(()=>{if(f!==!1){if(typeof f=="number"){window.scrollTo(0,f);return}if(g.hash){let _=document.getElementById(decodeURIComponent(g.hash.slice(1)));if(_){_.scrollIntoView();return}}h!==!0&&window.scrollTo(0,0)}},[g,f,h]))}function Nm(i,a){let{capture:u}={};N.useEffect(()=>{let c=u!=null?{capture:u}:void 0;return window.addEventListener("pagehide",i,c),()=>{window.removeEventListener("pagehide",i,c)}},[i,u])}function Mm(i,a){a===void 0&&(a={});let u=N.useContext(Hf);u==null&&ve(!1);let{basename:c}=Pu($l.useViewTransitionState),f=Yl(i,{relative:a.relative});if(!u.isTransitioning)return!1;let h=At(u.currentLocation.pathname,c)||u.currentLocation.pathname,p=At(u.nextLocation.pathname,c)||u.nextLocation.pathname;return fo(f.pathname,p)!=null||fo(f.pathname,h)!=null}export{uu as A,jm as D,su as E,Qm as F,xm as L,$m as N,Bm as O,Wm as R,Om as a,Hm as b,Um as c,Mp as d,Qh as e,Ym as f,Fm as g,Im as h,Wl as i,zm as j,Kh as k,Ql as l,mr as m,mo as n,Vm as o,Gn as p,Am as q,N as r,Nh as s,Rp as t,Jn as u,Pf as v,Km as w};
|
|
68
|
+
*/function gr(){return gr=Object.assign?Object.assign.bind():function(i){for(var a=1;a<arguments.length;a++){var u=arguments[a];for(var c in u)Object.prototype.hasOwnProperty.call(u,c)&&(i[c]=u[c])}return i},gr.apply(this,arguments)}function Cu(i,a){if(i==null)return{};var u={},c=Object.keys(i),f,h;for(h=0;h<c.length;h++)f=c[h],!(a.indexOf(f)>=0)&&(u[f]=i[f]);return u}const so="get",ou="application/x-www-form-urlencoded";function vo(i){return i!=null&&typeof i.tagName=="string"}function tm(i){return vo(i)&&i.tagName.toLowerCase()==="button"}function nm(i){return vo(i)&&i.tagName.toLowerCase()==="form"}function rm(i){return vo(i)&&i.tagName.toLowerCase()==="input"}function lm(i){return!!(i.metaKey||i.altKey||i.ctrlKey||i.shiftKey)}function im(i,a){return i.button===0&&(!a||a==="_self")&&!lm(i)}function pu(i){return i===void 0&&(i=""),new URLSearchParams(typeof i=="string"||Array.isArray(i)||i instanceof URLSearchParams?i:Object.keys(i).reduce((a,u)=>{let c=i[u];return a.concat(Array.isArray(c)?c.map(f=>[u,f]):[[u,c]])},[]))}function om(i,a){let u=pu(i);return a&&a.forEach((c,f)=>{u.has(f)||a.getAll(f).forEach(h=>{u.append(f,h)})}),u}let oo=null;function am(){if(oo===null)try{new FormData(document.createElement("form"),0),oo=!1}catch{oo=!0}return oo}const um=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function au(i){return i!=null&&!um.has(i)?null:i}function sm(i,a){let u,c,f,h,p;if(nm(i)){let g=i.getAttribute("action");c=g?At(g,a):null,u=i.getAttribute("method")||so,f=au(i.getAttribute("enctype"))||ou,h=new FormData(i)}else if(tm(i)||rm(i)&&(i.type==="submit"||i.type==="image")){let g=i.form;if(g==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let y=i.getAttribute("formaction")||g.getAttribute("action");if(c=y?At(y,a):null,u=i.getAttribute("formmethod")||g.getAttribute("method")||so,f=au(i.getAttribute("formenctype"))||au(g.getAttribute("enctype"))||ou,h=new FormData(g,i),!am()){let{name:x,type:_,value:C}=i;if(_==="image"){let D=x?x+".":"";h.append(D+"x","0"),h.append(D+"y","0")}else x&&h.append(x,C)}}else{if(vo(i))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');u=so,c=null,f=ou,p=i}return h&&f==="text/plain"&&(p=h,h=void 0),{action:c,method:u.toLowerCase(),encType:f,formData:h,body:p}}const cm=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],fm=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"],dm=["fetcherKey","navigate","reloadDocument","replace","state","method","action","onSubmit","relative","preventScrollReset","viewTransition"],pm="6";try{window.__reactRouterVersion=pm}catch{}const Hf=N.createContext({isTransitioning:!1}),hm=N.createContext(new Map),mm="startTransition",Ef=Lp[mm],vm="flushSync",kf=Op[vm];function ym(i){Ef?Ef(i):i()}function Bl(i){kf?kf(i):i()}class gm{constructor(){this.status="pending",this.promise=new Promise((a,u)=>{this.resolve=c=>{this.status==="pending"&&(this.status="resolved",a(c))},this.reject=c=>{this.status==="pending"&&(this.status="rejected",u(c))}})}}function Wm(i){let{fallbackElement:a,router:u,future:c}=i,[f,h]=N.useState(u.state),[p,g]=N.useState(),[y,x]=N.useState({isTransitioning:!1}),[_,C]=N.useState(),[D,I]=N.useState(),[W,V]=N.useState(),U=N.useRef(new Map),{v7_startTransition:fe}=c||{},$=N.useCallback(te=>{fe?ym(te):te()},[fe]),ae=N.useCallback((te,Ee)=>{let{deletedFetchers:se,flushSync:Ue,viewTransitionOpts:De}=Ee;te.fetchers.forEach((Ae,Ze)=>{Ae.data!==void 0&&U.current.set(Ze,Ae.data)}),se.forEach(Ae=>U.current.delete(Ae));let Fe=u.window==null||u.window.document==null||typeof u.window.document.startViewTransition!="function";if(!De||Fe){Ue?Bl(()=>h(te)):$(()=>h(te));return}if(Ue){Bl(()=>{D&&(_&&_.resolve(),D.skipTransition()),x({isTransitioning:!0,flushSync:!0,currentLocation:De.currentLocation,nextLocation:De.nextLocation})});let Ae=u.window.document.startViewTransition(()=>{Bl(()=>h(te))});Ae.finished.finally(()=>{Bl(()=>{C(void 0),I(void 0),g(void 0),x({isTransitioning:!1})})}),Bl(()=>I(Ae));return}D?(_&&_.resolve(),D.skipTransition(),V({state:te,currentLocation:De.currentLocation,nextLocation:De.nextLocation})):(g(te),x({isTransitioning:!0,flushSync:!1,currentLocation:De.currentLocation,nextLocation:De.nextLocation}))},[u.window,D,_,U,$]);N.useLayoutEffect(()=>u.subscribe(ae),[u,ae]),N.useEffect(()=>{y.isTransitioning&&!y.flushSync&&C(new gm)},[y]),N.useEffect(()=>{if(_&&p&&u.window){let te=p,Ee=_.promise,se=u.window.document.startViewTransition(async()=>{$(()=>h(te)),await Ee});se.finished.finally(()=>{C(void 0),I(void 0),g(void 0),x({isTransitioning:!1})}),I(se)}},[$,p,_,u.window]),N.useEffect(()=>{_&&p&&f.location.key===p.location.key&&_.resolve()},[_,D,f.location,p]),N.useEffect(()=>{!y.isTransitioning&&W&&(g(W.state),x({isTransitioning:!0,flushSync:!1,currentLocation:W.currentLocation,nextLocation:W.nextLocation}),V(void 0))},[y.isTransitioning,W]),N.useEffect(()=>{},[]);let le=N.useMemo(()=>({createHref:u.createHref,encodeLocation:u.encodeLocation,go:te=>u.navigate(te),push:(te,Ee,se)=>u.navigate(te,{state:Ee,preventScrollReset:se==null?void 0:se.preventScrollReset}),replace:(te,Ee,se)=>u.navigate(te,{replace:!0,state:Ee,preventScrollReset:se==null?void 0:se.preventScrollReset})}),[u]),Se=u.basename||"/",Oe=N.useMemo(()=>({router:u,navigator:le,static:!1,basename:Se}),[u,le,Se]),T=N.useMemo(()=>({v7_relativeSplatPath:u.future.v7_relativeSplatPath}),[u.future.v7_relativeSplatPath]);return N.useEffect(()=>Jh(c,u.future),[c,u.future]),N.createElement(N.Fragment,null,N.createElement(Ql.Provider,{value:Oe},N.createElement(mo.Provider,{value:f},N.createElement(hm.Provider,{value:U.current},N.createElement(Hf.Provider,{value:y},N.createElement(Zh,{basename:Se,location:f.location,navigationType:f.historyAction,navigator:le,future:T},f.initialized||u.future.v7_partialHydration?N.createElement(wm,{routes:u.routes,future:u.future,state:f}):a))))),null)}const wm=N.memo(Sm);function Sm(i){let{routes:a,future:u,state:c}=i;return Fh(a,void 0,c,u)}const Em=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",km=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,xm=N.forwardRef(function(a,u){let{onClick:c,relative:f,reloadDocument:h,replace:p,state:g,target:y,to:x,preventScrollReset:_,viewTransition:C}=a,D=Cu(a,cm),{basename:I}=N.useContext(Jt),W,V=!1;if(typeof x=="string"&&km.test(x)&&(W=x,Em))try{let ae=new URL(window.location.href),le=x.startsWith("//")?new URL(ae.protocol+x):new URL(x),Se=At(le.pathname,I);le.origin===ae.origin&&Se!=null?x=Se+le.search+le.hash:V=!0}catch{}let U=Nh(x,{relative:f}),fe=Pm(x,{replace:p,state:g,target:y,preventScrollReset:_,relative:f,viewTransition:C});function $(ae){c&&c(ae),ae.defaultPrevented||fe(ae)}return N.createElement("a",gr({},D,{href:W||U,onClick:V||h?c:$,ref:u,target:y}))}),$m=N.forwardRef(function(a,u){let{"aria-current":c="page",caseSensitive:f=!1,className:h="",end:p=!1,style:g,to:y,viewTransition:x,children:_}=a,C=Cu(a,fm),D=Yl(y,{relative:C.relative}),I=Jn(),W=N.useContext(mo),{navigator:V,basename:U}=N.useContext(Jt),fe=W!=null&&Mm(D)&&x===!0,$=V.encodeLocation?V.encodeLocation(D).pathname:D.pathname,ae=I.pathname,le=W&&W.navigation&&W.navigation.location?W.navigation.location.pathname:null;f||(ae=ae.toLowerCase(),le=le?le.toLowerCase():null,$=$.toLowerCase()),le&&U&&(le=At(le,U)||le);const Se=$!=="/"&&$.endsWith("/")?$.length-1:$.length;let Oe=ae===$||!p&&ae.startsWith($)&&ae.charAt(Se)==="/",T=le!=null&&(le===$||!p&&le.startsWith($)&&le.charAt($.length)==="/"),te={isActive:Oe,isPending:T,isTransitioning:fe},Ee=Oe?c:void 0,se;typeof h=="function"?se=h(te):se=[h,Oe?"active":null,T?"pending":null,fe?"transitioning":null].filter(Boolean).join(" ");let Ue=typeof g=="function"?g(te):g;return N.createElement(xm,gr({},C,{"aria-current":Ee,className:se,ref:u,style:Ue,to:y,viewTransition:x}),typeof _=="function"?_(te):_)}),Qm=N.forwardRef((i,a)=>{let{fetcherKey:u,navigate:c,reloadDocument:f,replace:h,state:p,method:g=so,action:y,onSubmit:x,relative:_,preventScrollReset:C,viewTransition:D}=i,I=Cu(i,dm),W=Tm(),V=Dm(y,{relative:_}),U=g.toLowerCase()==="get"?"get":"post",fe=$=>{if(x&&x($),$.defaultPrevented)return;$.preventDefault();let ae=$.nativeEvent.submitter,le=(ae==null?void 0:ae.getAttribute("formmethod"))||g;W(ae||$.currentTarget,{fetcherKey:u,method:le,navigate:c,replace:h,state:p,relative:_,preventScrollReset:C,viewTransition:D})};return N.createElement("form",gr({ref:a,method:U,action:V,onSubmit:f?x:fe},I))});var $l;(function(i){i.UseScrollRestoration="useScrollRestoration",i.UseSubmit="useSubmit",i.UseSubmitFetcher="useSubmitFetcher",i.UseFetcher="useFetcher",i.useViewTransitionState="useViewTransitionState"})($l||($l={}));var hu;(function(i){i.UseFetcher="useFetcher",i.UseFetchers="useFetchers",i.UseScrollRestoration="useScrollRestoration"})(hu||(hu={}));function Pu(i){let a=N.useContext(Ql);return a||ve(!1),a}function Cm(i){let a=N.useContext(mo);return a||ve(!1),a}function Pm(i,a){let{target:u,replace:c,state:f,preventScrollReset:h,relative:p,viewTransition:g}=a===void 0?{}:a,y=Af(),x=Jn(),_=Yl(i,{relative:p});return N.useCallback(C=>{if(im(C,u)){C.preventDefault();let D=c!==void 0?c:Xn(x)===Xn(_);y(i,{replace:D,state:f,preventScrollReset:h,relative:p,viewTransition:g})}},[x,y,_,c,f,u,i,h,p,g])}function Km(i){let a=N.useRef(pu(i)),u=N.useRef(!1),c=Jn(),f=N.useMemo(()=>om(c.search,u.current?null:a.current),[c.search]),h=Af(),p=N.useCallback((g,y)=>{const x=pu(typeof g=="function"?g(f):g);u.current=!0,h("?"+x,y)},[h,f]);return[f,p]}function _m(){if(typeof document>"u")throw new Error("You are calling submit during the server render. Try calling submit within a `useEffect` or callback instead.")}let Rm=0,Lm=()=>"__"+String(++Rm)+"__";function Tm(){let{router:i}=Pu($l.UseSubmit),{basename:a}=N.useContext(Jt),u=Wh();return N.useCallback(function(c,f){f===void 0&&(f={}),_m();let{action:h,method:p,encType:g,formData:y,body:x}=sm(c,a);if(f.navigate===!1){let _=f.fetcherKey||Lm();i.fetch(_,u,f.action||h,{preventScrollReset:f.preventScrollReset,formData:y,body:x,formMethod:f.method||p,formEncType:f.encType||g,flushSync:f.flushSync})}else i.navigate(f.action||h,{preventScrollReset:f.preventScrollReset,formData:y,body:x,formMethod:f.method||p,formEncType:f.encType||g,replace:f.replace,state:f.state,fromRouteId:u,flushSync:f.flushSync,viewTransition:f.viewTransition})},[i,a,u])}function Dm(i,a){let{relative:u}=a===void 0?{}:a,{basename:c}=N.useContext(Jt),f=N.useContext(Sn);f||ve(!1);let[h]=f.matches.slice(-1),p=gr({},Yl(i||".",{relative:u})),g=Jn();if(i==null){p.search=g.search;let y=new URLSearchParams(p.search),x=y.getAll("index");if(x.some(C=>C==="")){y.delete("index"),x.filter(D=>D).forEach(D=>y.append("index",D));let C=y.toString();p.search=C?"?"+C:""}}return(!i||i===".")&&h.route.index&&(p.search=p.search?p.search.replace(/^\?/,"?index&"):"?index"),c!=="/"&&(p.pathname=p.pathname==="/"?c:un([c,p.pathname])),Xn(p)}const xf="react-router-scroll-positions";let ao={};function Ym(i){let{getKey:a,storageKey:u}=i===void 0?{}:i,{router:c}=Pu($l.UseScrollRestoration),{restoreScrollPosition:f,preventScrollReset:h}=Cm(hu.UseScrollRestoration),{basename:p}=N.useContext(Jt),g=Jn(),y=Qh(),x=$h();N.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),Nm(N.useCallback(()=>{if(x.state==="idle"){let _=(a?a(g,y):null)||g.key;ao[_]=window.scrollY}try{sessionStorage.setItem(u||xf,JSON.stringify(ao))}catch{}window.history.scrollRestoration="auto"},[u,a,x.state,g,y])),typeof document<"u"&&(N.useLayoutEffect(()=>{try{let _=sessionStorage.getItem(u||xf);_&&(ao=JSON.parse(_))}catch{}},[u]),N.useLayoutEffect(()=>{let _=a&&p!=="/"?(D,I)=>a(gr({},D,{pathname:At(D.pathname,p)||D.pathname}),I):a,C=c==null?void 0:c.enableScrollRestoration(ao,()=>window.scrollY,_);return()=>C&&C()},[c,p,a]),N.useLayoutEffect(()=>{if(f!==!1){if(typeof f=="number"){window.scrollTo(0,f);return}if(g.hash){let _=document.getElementById(decodeURIComponent(g.hash.slice(1)));if(_){_.scrollIntoView();return}}h!==!0&&window.scrollTo(0,0)}},[g,f,h]))}function Nm(i,a){let{capture:u}={};N.useEffect(()=>{let c=u!=null?{capture:u}:void 0;return window.addEventListener("pagehide",i,c),()=>{window.removeEventListener("pagehide",i,c)}},[i,u])}function Mm(i,a){a===void 0&&(a={});let u=N.useContext(Hf);u==null&&ve(!1);let{basename:c}=Pu($l.useViewTransitionState),f=Yl(i,{relative:a.relative});if(!u.isTransitioning)return!1;let h=At(u.currentLocation.pathname,c)||u.currentLocation.pathname,p=At(u.nextLocation.pathname,c)||u.nextLocation.pathname;return fo(f.pathname,p)!=null||fo(f.pathname,h)!=null}export{uu as A,jm as D,su as E,Qm as F,xm as L,$m as N,Bm as O,Wm as R,Om as a,Hm as b,Um as c,Mp as d,Qh as e,Ym as f,Fm as g,Im as h,Wl as i,zm as j,Kh as k,Ql as l,mr as m,mo as n,Vm as o,Gn as p,Am as q,N as r,Nh as s,Pf as t,Jn as u,Km as v};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
window.__remixManifest={"entry":{"module":"/assets/entry.client-mvZjNKiz.js","imports":["/assets/index-DzNKzXrc.js","/assets/components-Rk0n-9cK.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/root-BWvk5-gF.js","imports":["/assets/index-DzNKzXrc.js","/assets/components-Rk0n-9cK.js"],"css":["/assets/root-DxRwaWiE.css"]},"routes/_index":{"id":"routes/_index","parentId":"root","index":true,"hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_index-Bym6YkMd.js","imports":["/assets/index-DzNKzXrc.js"],"css":[]}},"url":"/assets/manifest-d845808d.js","version":"d845808d"};
|
solace_agent_mesh/config_portal/frontend/static/client/assets/{root-C4XmHinv.js → root-BWvk5-gF.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{u as f,e as m,f as y,r as i,j as t,O as x}from"./index-
|
|
1
|
+
import{u as f,e as m,f as y,r as i,j as t,O as x}from"./index-DzNKzXrc.js";import{f as g,_ as S,M as w,L as j,S as k}from"./components-Rk0n-9cK.js";/**
|
|
2
2
|
* @remix-run/react v2.16.2
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
|
-
<html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/assets/root-DxRwaWiE.css"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"/></head><body><p>Loading...</p><link rel="modulepreload" href="/assets/manifest-
|
|
3
|
-
import * as route0 from "/assets/root-
|
|
2
|
+
<html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/assets/root-DxRwaWiE.css"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"/></head><body><p>Loading...</p><link rel="modulepreload" href="/assets/manifest-d845808d.js"/><link rel="modulepreload" href="/assets/entry.client-mvZjNKiz.js"/><link rel="modulepreload" href="/assets/index-DzNKzXrc.js"/><link rel="modulepreload" href="/assets/components-Rk0n-9cK.js"/><link rel="modulepreload" href="/assets/root-BWvk5-gF.js"/><script>window.__remixContext = {"basename":"/","future":{"v3_fetcherPersist":false,"v3_relativeSplatPath":false,"v3_throwAbortReason":false,"v3_routeConfig":false,"v3_singleFetch":false,"v3_lazyRouteDiscovery":false,"unstable_optimizeDeps":false},"isSpaMode":true,"state":{"loaderData":{"root":null,"routes/_index":null},"actionData":null,"errors":null}};</script><script type="module" async="">import "/assets/manifest-d845808d.js";
|
|
3
|
+
import * as route0 from "/assets/root-BWvk5-gF.js";
|
|
4
4
|
|
|
5
5
|
window.__remixRouteModules = {"root":route0};
|
|
6
6
|
|
|
7
|
-
import("/assets/entry.client-
|
|
7
|
+
import("/assets/entry.client-mvZjNKiz.js");</script></body></html>
|
|
@@ -11,18 +11,18 @@ The `core_a2a` directory provides a reusable service layer for core Agent-to-Age
|
|
|
11
11
|
|
|
12
12
|
### __init__.py
|
|
13
13
|
**Purpose:** Package initialization for the core A2A service layer
|
|
14
|
-
**Import:** `import core_a2a`
|
|
14
|
+
**Import:** `import solace_agent_mesh.core_a2a`
|
|
15
15
|
|
|
16
16
|
No public classes, functions, or constants defined.
|
|
17
17
|
|
|
18
18
|
### service.py
|
|
19
19
|
**Purpose:** Provides the main CoreA2AService class for handling A2A protocol operations
|
|
20
|
-
**Import:** `from core_a2a.service import CoreA2AService`
|
|
20
|
+
**Import:** `from solace_agent_mesh.core_a2a.service import CoreA2AService`
|
|
21
21
|
|
|
22
22
|
**Classes:**
|
|
23
23
|
- `CoreA2AService(agent_registry: AgentRegistry, namespace: str)` - Main service class for A2A operations
|
|
24
|
-
- `submit_task(agent_name: str, a2a_message: A2AMessage, session_id: str, client_id: str, reply_to_topic: str, user_id: str = "default_user",
|
|
25
|
-
- `submit_streaming_task(agent_name: str, a2a_message: A2AMessage, session_id: str, client_id: str, reply_to_topic: str, status_to_topic: str, user_id: str = "default_user",
|
|
24
|
+
- `submit_task(agent_name: str, a2a_message: A2AMessage, session_id: str, client_id: str, reply_to_topic: str, user_id: str = "default_user", a2a_user_config: Optional[Dict[str, Any]] = None, metadata_override: Optional[Dict[str, Any]] = None) -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for non-streaming task requests
|
|
25
|
+
- `submit_streaming_task(agent_name: str, a2a_message: A2AMessage, session_id: str, client_id: str, reply_to_topic: str, status_to_topic: str, user_id: str = "default_user", a2a_user_config: Optional[Dict[str, Any]] = None, metadata_override: Optional[Dict[str, Any]] = None) -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for streaming task requests
|
|
26
26
|
- `cancel_task(agent_name: str, task_id: str, client_id: str, user_id: str = "default_user") -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for task cancellation
|
|
27
27
|
- `get_agent(agent_name: str) -> Optional[AgentCard]` - Retrieves a specific agent card by name from the registry
|
|
28
28
|
- `get_all_agents() -> List[AgentCard]` - Retrieves all currently discovered agent cards from the registry
|
|
@@ -40,9 +40,9 @@ None
|
|
|
40
40
|
**Usage Examples:**
|
|
41
41
|
```python
|
|
42
42
|
# Import required dependencies
|
|
43
|
-
from core_a2a.service import CoreA2AService
|
|
44
|
-
from common.agent_registry import AgentRegistry
|
|
45
|
-
from
|
|
43
|
+
from solace_agent_mesh.core_a2a.service import CoreA2AService
|
|
44
|
+
from solace_agent_mesh.common.agent_registry import AgentRegistry
|
|
45
|
+
from a2a.types import A2AMessage, AgentCard
|
|
46
46
|
|
|
47
47
|
# Initialize the service
|
|
48
48
|
agent_registry = AgentRegistry()
|
|
@@ -85,4 +85,6 @@ all_agents = service.get_all_agents()
|
|
|
85
85
|
# Process discovery message
|
|
86
86
|
agent_card = AgentCard(name="new_agent", description="A new agent")
|
|
87
87
|
service.process_discovery_message(agent_card)
|
|
88
|
-
```
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
# content_hash: fcc947b32fa06db11f6cdf1064dfd9a68ee152373677a574602c182fc8c62f56
|
|
@@ -8,16 +8,11 @@ from typing import Dict, Optional, Any, List, Tuple
|
|
|
8
8
|
|
|
9
9
|
from solace_ai_connector.common.log import log
|
|
10
10
|
|
|
11
|
-
from
|
|
12
|
-
SendTaskRequest,
|
|
13
|
-
SendTaskStreamingRequest,
|
|
14
|
-
CancelTaskRequest,
|
|
15
|
-
TaskIdParams,
|
|
16
|
-
TaskSendParams,
|
|
11
|
+
from a2a.types import (
|
|
17
12
|
Message as A2AMessage,
|
|
18
13
|
AgentCard,
|
|
19
14
|
)
|
|
20
|
-
from ..common
|
|
15
|
+
from ..common import a2a
|
|
21
16
|
from ..common.agent_registry import AgentRegistry
|
|
22
17
|
|
|
23
18
|
|
|
@@ -89,25 +84,17 @@ class CoreA2AService:
|
|
|
89
84
|
raise ValueError("Missing required parameters for submit_task")
|
|
90
85
|
|
|
91
86
|
try:
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
87
|
+
if not a2a_message.contextId:
|
|
88
|
+
a2a_message.contextId = session_id
|
|
89
|
+
|
|
90
|
+
request = a2a.create_send_message_request(
|
|
95
91
|
message=a2a_message,
|
|
96
|
-
|
|
92
|
+
task_id=task_id,
|
|
93
|
+
metadata=metadata_override,
|
|
97
94
|
)
|
|
95
|
+
payload = request.model_dump(by_alias=True, exclude_none=True)
|
|
98
96
|
|
|
99
|
-
|
|
100
|
-
if metadata_override:
|
|
101
|
-
current_metadata.update(metadata_override)
|
|
102
|
-
log.debug(
|
|
103
|
-
"%s Merged metadata_override: %s", log_prefix, metadata_override
|
|
104
|
-
)
|
|
105
|
-
params.metadata = current_metadata if current_metadata else None
|
|
106
|
-
|
|
107
|
-
request = SendTaskRequest(params=params)
|
|
108
|
-
payload = request.model_dump(exclude_none=True)
|
|
109
|
-
|
|
110
|
-
target_topic = get_agent_request_topic(self.namespace, agent_name)
|
|
97
|
+
target_topic = a2a.get_agent_request_topic(self.namespace, agent_name)
|
|
111
98
|
|
|
112
99
|
user_properties = {
|
|
113
100
|
"replyTo": reply_to_topic,
|
|
@@ -189,26 +176,17 @@ class CoreA2AService:
|
|
|
189
176
|
raise ValueError("Missing required parameters for submit_streaming_task")
|
|
190
177
|
|
|
191
178
|
try:
|
|
179
|
+
if not a2a_message.contextId:
|
|
180
|
+
a2a_message.contextId = session_id
|
|
192
181
|
|
|
193
|
-
|
|
194
|
-
id=task_id,
|
|
195
|
-
sessionId=session_id,
|
|
182
|
+
request = a2a.create_send_streaming_message_request(
|
|
196
183
|
message=a2a_message,
|
|
197
|
-
|
|
184
|
+
task_id=task_id,
|
|
185
|
+
metadata=metadata_override,
|
|
198
186
|
)
|
|
187
|
+
payload = request.model_dump(by_alias=True, exclude_none=True)
|
|
199
188
|
|
|
200
|
-
|
|
201
|
-
if metadata_override:
|
|
202
|
-
current_metadata.update(metadata_override)
|
|
203
|
-
log.debug(
|
|
204
|
-
"%s Merged metadata_override: %s", log_prefix, metadata_override
|
|
205
|
-
)
|
|
206
|
-
params.metadata = current_metadata if current_metadata else None
|
|
207
|
-
|
|
208
|
-
request = SendTaskStreamingRequest(params=params)
|
|
209
|
-
payload = request.model_dump(exclude_none=True)
|
|
210
|
-
|
|
211
|
-
target_topic = get_agent_request_topic(self.namespace, agent_name)
|
|
189
|
+
target_topic = a2a.get_agent_request_topic(self.namespace, agent_name)
|
|
212
190
|
|
|
213
191
|
user_properties = {
|
|
214
192
|
"replyTo": reply_to_topic,
|
|
@@ -273,12 +251,10 @@ class CoreA2AService:
|
|
|
273
251
|
raise ValueError("Missing required parameters for cancel_task")
|
|
274
252
|
|
|
275
253
|
try:
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
request = CancelTaskRequest(params=params)
|
|
279
|
-
payload = request.model_dump(exclude_none=True)
|
|
254
|
+
request = a2a.create_cancel_task_request(task_id=task_id)
|
|
255
|
+
payload = request.model_dump(by_alias=True, exclude_none=True)
|
|
280
256
|
|
|
281
|
-
target_topic = get_agent_request_topic(self.namespace, agent_name)
|
|
257
|
+
target_topic = a2a.get_agent_request_topic(self.namespace, agent_name)
|
|
282
258
|
|
|
283
259
|
user_properties = {
|
|
284
260
|
"clientId": client_id,
|
|
@@ -11,7 +11,7 @@ from solace_ai_connector.common.utils import deep_merge
|
|
|
11
11
|
from solace_ai_connector.flow.app import App
|
|
12
12
|
from solace_ai_connector.components.component_base import ComponentBase
|
|
13
13
|
|
|
14
|
-
from ...common.
|
|
14
|
+
from ...common.a2a import (
|
|
15
15
|
get_discovery_topic,
|
|
16
16
|
get_gateway_response_subscription_topic,
|
|
17
17
|
get_gateway_status_subscription_topic,
|
|
@@ -64,6 +64,26 @@ BASE_GATEWAY_APP_SCHEMA: Dict[str, List[Dict[str, Any]]] = {
|
|
|
64
64
|
"default": 12,
|
|
65
65
|
"description": "Maximum depth for recursively resolving 'artifact_content' embeds within files.",
|
|
66
66
|
},
|
|
67
|
+
{
|
|
68
|
+
"name": "artifact_handling_mode",
|
|
69
|
+
"required": False,
|
|
70
|
+
"type": "string",
|
|
71
|
+
"default": "reference",
|
|
72
|
+
"description": (
|
|
73
|
+
"How the gateway handles file parts from clients. "
|
|
74
|
+
"'reference': Save inline file bytes to the artifact store and replace with a URI. "
|
|
75
|
+
"'embed': Resolve file URIs and embed content as bytes. "
|
|
76
|
+
"'passthrough': Send file parts to the agent as-is."
|
|
77
|
+
),
|
|
78
|
+
"enum": ["reference", "embed", "passthrough"],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "gateway_max_message_size_bytes",
|
|
82
|
+
"required": False,
|
|
83
|
+
"type": "integer",
|
|
84
|
+
"default": 10_000_000, # 10MB
|
|
85
|
+
"description": "Maximum allowed message size in bytes for messages published by the gateway.",
|
|
86
|
+
},
|
|
67
87
|
# --- Default User Identity Configuration ---
|
|
68
88
|
{
|
|
69
89
|
"name": "default_user_identity",
|
|
@@ -200,6 +220,12 @@ class BaseGatewayApp(App):
|
|
|
200
220
|
self.gateway_recursive_embed_depth: int = resolved_app_config_block.get(
|
|
201
221
|
"gateway_recursive_embed_depth", 12
|
|
202
222
|
)
|
|
223
|
+
self.artifact_handling_mode: str = resolved_app_config_block.get(
|
|
224
|
+
"artifact_handling_mode", "reference"
|
|
225
|
+
)
|
|
226
|
+
self.gateway_max_message_size_bytes: int = resolved_app_config_block.get(
|
|
227
|
+
"gateway_max_message_size_bytes", 10_000_000
|
|
228
|
+
)
|
|
203
229
|
|
|
204
230
|
modified_app_info = app_info.copy()
|
|
205
231
|
modified_app_info["app_config"] = resolved_app_config_block
|