synapse-orch-ai 1.5.3 → 1.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/backend/core/react_engine.py +150 -0
- package/backend/core/routes/agents.py +108 -0
- package/backend/core/routes/tools.py +3 -1
- package/backend/core/spawn_subtask.py +74 -0
- package/frontend-build/.next/BUILD_ID +1 -1
- package/frontend-build/.next/build-manifest.json +3 -3
- package/frontend-build/.next/prerender-manifest.json +3 -3
- package/frontend-build/.next/server/app/_global-error.html +1 -1
- package/frontend-build/.next/server/app/_global-error.rsc +1 -1
- package/frontend-build/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/frontend-build/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/frontend-build/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/frontend-build/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/frontend-build/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/frontend-build/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/frontend-build/.next/server/app/_not-found.html +1 -1
- package/frontend-build/.next/server/app/_not-found.rsc +2 -2
- package/frontend-build/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/frontend-build/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/frontend-build/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/frontend-build/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/frontend-build/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/frontend-build/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/frontend-build/.next/server/app/index.html +1 -1
- package/frontend-build/.next/server/app/index.rsc +3 -3
- package/frontend-build/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/frontend-build/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/frontend-build/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/frontend-build/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/frontend-build/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/frontend-build/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/frontend-build/.next/server/app/login.html +1 -1
- package/frontend-build/.next/server/app/login.rsc +2 -2
- package/frontend-build/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/frontend-build/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/frontend-build/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/frontend-build/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/frontend-build/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/frontend-build/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/frontend-build/.next/server/app/page.js.nft.json +1 -1
- package/frontend-build/.next/server/app/page_client-reference-manifest.js +1 -1
- package/frontend-build/.next/server/app/settings/[tab]/page.js.nft.json +1 -1
- package/frontend-build/.next/server/app/settings/[tab]/page_client-reference-manifest.js +1 -1
- package/frontend-build/.next/server/chunks/ssr/[root-of-the-server]__0-1vb4z._.js +3 -0
- package/frontend-build/.next/server/chunks/ssr/[root-of-the-server]__0uus84t._.js +3 -0
- package/frontend-build/.next/server/chunks/ssr/_0b~n.nn._.js +26 -26
- package/frontend-build/.next/server/chunks/ssr/src_app_page_tsx_0ss2.w7._.js +1 -1
- package/frontend-build/.next/server/middleware-build-manifest.js +3 -3
- package/frontend-build/.next/server/middleware-manifest.json +5 -5
- package/frontend-build/.next/server/pages/404.html +1 -1
- package/frontend-build/.next/server/pages/500.html +1 -1
- package/frontend-build/.next/server/server-reference-manifest.js +1 -1
- package/frontend-build/.next/server/server-reference-manifest.json +1 -1
- package/frontend-build/.next/static/chunks/06492ue-5sndz.js +1 -0
- package/frontend-build/.next/static/chunks/0an11bgokf3vm.js +1 -0
- package/frontend-build/.next/static/chunks/0m6b8x86zmjhr.js +1 -0
- package/frontend-build/.next/static/chunks/0p_5pvs8njhrd.js +128 -0
- package/frontend-build/.next/static/chunks/0sifx3jp~fn_h.css +1 -0
- package/package.json +1 -1
- package/frontend-build/.next/server/chunks/ssr/[root-of-the-server]__0p3x1m7._.js +0 -3
- package/frontend-build/.next/server/chunks/ssr/[root-of-the-server]__10unlca._.js +0 -3
- package/frontend-build/.next/static/chunks/0rvvhrm2gc.87.css +0 -1
- package/frontend-build/.next/static/chunks/0v9xc_wrxht3o.js +0 -1
- package/frontend-build/.next/static/chunks/0w-t2.wfp9bn7.js +0 -128
- package/frontend-build/.next/static/chunks/11evimknhsnll.js +0 -1
- package/frontend-build/.next/static/chunks/127bqzm7d2i2u.js +0 -1
- /package/frontend-build/.next/static/{DtyFJXD-pPSV9CdbxSLpv → wMcHp1vhEa3V0OBQS57Hg}/_buildManifest.js +0 -0
- /package/frontend-build/.next/static/{DtyFJXD-pPSV9CdbxSLpv → wMcHp1vhEa3V0OBQS57Hg}/_clientMiddlewareManifest.js +0 -0
- /package/frontend-build/.next/static/{DtyFJXD-pPSV9CdbxSLpv → wMcHp1vhEa3V0OBQS57Hg}/_ssgManifest.js +0 -0
|
@@ -385,6 +385,70 @@ def _inject_delegate_roster(system_template: str, agents_map: dict) -> str:
|
|
|
385
385
|
return system_template + "\n\n" + "\n".join(roster_lines)
|
|
386
386
|
|
|
387
387
|
|
|
388
|
+
async def _run_spawn_subtask_batch(
|
|
389
|
+
subtask_calls: list[dict],
|
|
390
|
+
parent_agent_id: str,
|
|
391
|
+
available_tools: list[str],
|
|
392
|
+
session_id: str,
|
|
393
|
+
server_module,
|
|
394
|
+
source: str,
|
|
395
|
+
run_id: str | None,
|
|
396
|
+
) -> list[tuple[str, str]]:
|
|
397
|
+
"""Run a batch of spawn_subtask calls in parallel.
|
|
398
|
+
|
|
399
|
+
Each call gets an ephemeral agent config with only the requested tools
|
|
400
|
+
(validated as a subset of the parent's available tools). Returns a list of
|
|
401
|
+
(name, result_text) tuples in the same order as subtask_calls.
|
|
402
|
+
"""
|
|
403
|
+
import uuid
|
|
404
|
+
import asyncio
|
|
405
|
+
|
|
406
|
+
async def _run_one(args: dict) -> tuple[str, str]:
|
|
407
|
+
task = args.get("task", "")
|
|
408
|
+
requested_tools = args.get("tools") or []
|
|
409
|
+
name = args.get("name") or task[:40]
|
|
410
|
+
# Enforce subset — sub-agent can only use tools the parent actually has
|
|
411
|
+
valid_tools = [t for t in requested_tools if t in available_tools]
|
|
412
|
+
if not valid_tools:
|
|
413
|
+
valid_tools = available_tools[:5]
|
|
414
|
+
|
|
415
|
+
ephemeral_agent = {
|
|
416
|
+
"id": f"subtask_{uuid.uuid4().hex[:8]}",
|
|
417
|
+
"name": name,
|
|
418
|
+
"type": "conversational",
|
|
419
|
+
"model": None, # inherit global default
|
|
420
|
+
"system_prompt": (
|
|
421
|
+
"You are a focused sub-agent. Complete the given task using only "
|
|
422
|
+
"the provided tools. Return a concise, structured result."
|
|
423
|
+
),
|
|
424
|
+
"tools": valid_tools,
|
|
425
|
+
"max_turns": 10,
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
sub_final = ""
|
|
429
|
+
try:
|
|
430
|
+
async for sub_event in run_agent_step(
|
|
431
|
+
message=task,
|
|
432
|
+
agent_id=ephemeral_agent["id"],
|
|
433
|
+
session_id=session_id,
|
|
434
|
+
server_module=server_module,
|
|
435
|
+
max_turns=10,
|
|
436
|
+
source=source,
|
|
437
|
+
run_id=run_id,
|
|
438
|
+
agent_override=ephemeral_agent,
|
|
439
|
+
):
|
|
440
|
+
if sub_event.get("type") == "final":
|
|
441
|
+
sub_final = sub_event.get("response", "")
|
|
442
|
+
except Exception as exc:
|
|
443
|
+
sub_final = f"Subtask error: {exc}"
|
|
444
|
+
print(f"DEBUG: ❌ spawn_subtask '{name}' failed: {exc}", flush=True)
|
|
445
|
+
|
|
446
|
+
print(f"DEBUG: ✅ spawn_subtask '{name}' completed ({len(sub_final)} chars)", flush=True)
|
|
447
|
+
return (name, sub_final)
|
|
448
|
+
|
|
449
|
+
return list(await asyncio.gather(*[_run_one(args) for args in subtask_calls]))
|
|
450
|
+
|
|
451
|
+
|
|
388
452
|
async def run_agent_step(
|
|
389
453
|
message,
|
|
390
454
|
agent_id,
|
|
@@ -473,6 +537,44 @@ async def run_agent_step(
|
|
|
473
537
|
# Inject agent roster into system prompt
|
|
474
538
|
agent_system_template = _inject_delegate_roster(agent_system_template, _delegate_agents_map)
|
|
475
539
|
|
|
540
|
+
# ── SPAWN_SUBTASK: inject dynamic tool when agent has opted in ──
|
|
541
|
+
from core.spawn_subtask import SPAWN_SUBTASK_TOOL_NAME, build_dynamic_spawn_subtask_tool
|
|
542
|
+
_spawn_subtask_enabled = (
|
|
543
|
+
tools_override is None
|
|
544
|
+
and SPAWN_SUBTASK_TOOL_NAME in (active_agent.get("tools") or [])
|
|
545
|
+
)
|
|
546
|
+
_spawn_subtask_available_tools: list[str] = []
|
|
547
|
+
if _spawn_subtask_enabled:
|
|
548
|
+
# Collect all tool names currently available to this agent (excluding spawn_subtask itself)
|
|
549
|
+
_spawn_subtask_available_tools = [
|
|
550
|
+
t.name if hasattr(t, "name") else t.get("function", {}).get("name", "")
|
|
551
|
+
for t in all_tools
|
|
552
|
+
]
|
|
553
|
+
_spawn_subtask_available_tools = [
|
|
554
|
+
n for n in _spawn_subtask_available_tools
|
|
555
|
+
if n and n != SPAWN_SUBTASK_TOOL_NAME
|
|
556
|
+
]
|
|
557
|
+
if _spawn_subtask_available_tools:
|
|
558
|
+
spawn_tool = build_dynamic_spawn_subtask_tool(_spawn_subtask_available_tools)
|
|
559
|
+
# Remove any static placeholder that may have been loaded via aggregate_all_tools
|
|
560
|
+
all_tools = [t for t in all_tools if (t.name if hasattr(t, "name") else t.get("function", {}).get("name", "")) != SPAWN_SUBTASK_TOOL_NAME]
|
|
561
|
+
all_tools.append(spawn_tool)
|
|
562
|
+
tool_schema_map[SPAWN_SUBTASK_TOOL_NAME] = spawn_tool.inputSchema
|
|
563
|
+
ollama_tools = [t for t in ollama_tools if t.get("function", {}).get("name") != SPAWN_SUBTASK_TOOL_NAME]
|
|
564
|
+
ollama_tools.append({"type": "function", "function": {
|
|
565
|
+
"name": spawn_tool.name,
|
|
566
|
+
"description": spawn_tool.description,
|
|
567
|
+
"parameters": spawn_tool.inputSchema,
|
|
568
|
+
}})
|
|
569
|
+
tools_json = str([
|
|
570
|
+
{"tool": t.name if hasattr(t, "name") else t.get("function", {}).get("name"),
|
|
571
|
+
"description": t.description if hasattr(t, "description") else t.get("function", {}).get("description"),
|
|
572
|
+
"schema": t.inputSchema if hasattr(t, "inputSchema") else t.get("function", {}).get("parameters")}
|
|
573
|
+
for t in all_tools
|
|
574
|
+
])
|
|
575
|
+
print(f"DEBUG: 🤖 spawn_subtask injected for agent '{agent_id_for_session}' "
|
|
576
|
+
f"with {len(_spawn_subtask_available_tools)} delegatable tools", flush=True)
|
|
577
|
+
|
|
476
578
|
system_prompt_text = build_system_prompt(
|
|
477
579
|
agent_system_template, tools_json, session_id,
|
|
478
580
|
_get_session_state, server_module.memory_store, agent_id=agent_id_for_session,
|
|
@@ -666,6 +768,29 @@ async def run_agent_step(
|
|
|
666
768
|
if llm_output.strip():
|
|
667
769
|
current_context_text += f"\nAssistant Thought: {llm_output}\n"
|
|
668
770
|
|
|
771
|
+
# ── SPAWN_SUBTASK batch pre-run ──────────────────────────────────────
|
|
772
|
+
# Collect all spawn_subtask calls from this turn and run them in parallel
|
|
773
|
+
# BEFORE the sequential tool loop. Results are consumed in order below.
|
|
774
|
+
_spawn_subtask_result_queue: list[tuple[str, str]] = []
|
|
775
|
+
if _spawn_subtask_enabled:
|
|
776
|
+
_spawn_calls_this_turn = [
|
|
777
|
+
tc.get("arguments", {})
|
|
778
|
+
for tc in tool_calls
|
|
779
|
+
if tc.get("tool") == SPAWN_SUBTASK_TOOL_NAME
|
|
780
|
+
]
|
|
781
|
+
if _spawn_calls_this_turn:
|
|
782
|
+
n = len(_spawn_calls_this_turn)
|
|
783
|
+
yield {"type": "thinking", "message": f"Spawning {n} sub-agent{'s' if n > 1 else ''}..."}
|
|
784
|
+
_spawn_subtask_result_queue = await _run_spawn_subtask_batch(
|
|
785
|
+
subtask_calls=_spawn_calls_this_turn,
|
|
786
|
+
parent_agent_id=agent_id_for_session,
|
|
787
|
+
available_tools=_spawn_subtask_available_tools,
|
|
788
|
+
session_id=session_id,
|
|
789
|
+
server_module=server_module,
|
|
790
|
+
source=source,
|
|
791
|
+
run_id=run_id,
|
|
792
|
+
)
|
|
793
|
+
|
|
669
794
|
for tool_call in tool_calls:
|
|
670
795
|
tool_name = tool_call.get("tool", "")
|
|
671
796
|
if not isinstance(tool_name, str) or not tool_name.strip():
|
|
@@ -753,6 +878,31 @@ async def run_agent_step(
|
|
|
753
878
|
yield _extra
|
|
754
879
|
continue
|
|
755
880
|
|
|
881
|
+
# ===== SPAWN_SUBTASK =====
|
|
882
|
+
if tool_name == SPAWN_SUBTASK_TOOL_NAME and _spawn_subtask_enabled:
|
|
883
|
+
if _spawn_subtask_result_queue:
|
|
884
|
+
sub_name, result_text = _spawn_subtask_result_queue.pop(0)
|
|
885
|
+
else:
|
|
886
|
+
# Fallback: run synchronously if queue is unexpectedly empty
|
|
887
|
+
sub_name = tool_args.get("name") or tool_args.get("task", "")[:40]
|
|
888
|
+
results = await _run_spawn_subtask_batch(
|
|
889
|
+
subtask_calls=[tool_args],
|
|
890
|
+
parent_agent_id=agent_id_for_session,
|
|
891
|
+
available_tools=_spawn_subtask_available_tools,
|
|
892
|
+
session_id=session_id,
|
|
893
|
+
server_module=server_module,
|
|
894
|
+
source=source,
|
|
895
|
+
run_id=run_id,
|
|
896
|
+
)
|
|
897
|
+
sub_name, result_text = results[0] if results else (sub_name, "No result")
|
|
898
|
+
|
|
899
|
+
current_context_text += f"\nSubtask '{sub_name}' result:\n{result_text}\n"
|
|
900
|
+
tools_used_summary.append(f"spawn_subtask({sub_name}): {result_text[:200]}")
|
|
901
|
+
preview = result_text[:500] + "..." if len(result_text) > 500 else result_text
|
|
902
|
+
yield {"type": "tool_result", "tool_name": SPAWN_SUBTASK_TOOL_NAME,
|
|
903
|
+
"preview": preview, "subtask_name": sub_name}
|
|
904
|
+
continue
|
|
905
|
+
|
|
756
906
|
# ===== DELEGATE_TO_AGENT (delegate agents) =====
|
|
757
907
|
if tool_name == "delegate_to_agent" and _delegate_agents_map:
|
|
758
908
|
target_agent_id = tool_args.get("agent_id", "")
|
|
@@ -8,6 +8,7 @@ import zoneinfo
|
|
|
8
8
|
|
|
9
9
|
from fastapi import APIRouter, HTTPException
|
|
10
10
|
|
|
11
|
+
from pydantic import BaseModel
|
|
11
12
|
from core.models import Agent, AgentActiveRequest, GeneratePromptRequest
|
|
12
13
|
from core.config import DATA_DIR, load_settings
|
|
13
14
|
from core.json_store import JsonStore
|
|
@@ -158,6 +159,113 @@ How the agent should think before acting:
|
|
|
158
159
|
YOUR RESPONSE = THE SYSTEM PROMPT. Nothing before it. Nothing after it. No commentary, no labels, no wrapping."""
|
|
159
160
|
|
|
160
161
|
|
|
162
|
+
class BuildAgentToolInfo(BaseModel):
|
|
163
|
+
name: str
|
|
164
|
+
description: str = ""
|
|
165
|
+
|
|
166
|
+
class BuildAgentRepoInfo(BaseModel):
|
|
167
|
+
id: str
|
|
168
|
+
name: str
|
|
169
|
+
|
|
170
|
+
class BuildAgentDbInfo(BaseModel):
|
|
171
|
+
id: str
|
|
172
|
+
name: str
|
|
173
|
+
db_type: str = ""
|
|
174
|
+
|
|
175
|
+
class BuildAgentRequest(BaseModel):
|
|
176
|
+
description: str
|
|
177
|
+
available_tools: list[BuildAgentToolInfo] = []
|
|
178
|
+
available_repos: list[BuildAgentRepoInfo] = []
|
|
179
|
+
available_db_configs: list[BuildAgentDbInfo] = []
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
AGENT_FACTORY_SYSTEM = """You are an AI agent factory. Given a user's description and a list of available tools/repos/databases, return a JSON object with these exact keys:
|
|
183
|
+
- name: short descriptive name (2-4 words, title case)
|
|
184
|
+
- description: one sentence explaining what the agent does
|
|
185
|
+
- type: one of "conversational", "code", or "delegate"
|
|
186
|
+
- Use "code" for agents that write/execute code, analyze data, work with files, or need repository access
|
|
187
|
+
- Use "delegate" for orchestrator/routing agents that hand off tasks to other agents
|
|
188
|
+
- Use "conversational" for everything else (support, research, writing, Q&A, etc.)
|
|
189
|
+
- system_prompt: a comprehensive, professional system prompt (3-6 paragraphs)
|
|
190
|
+
- tools: array of tool names from the available tools list that this agent needs (empty array if none needed)
|
|
191
|
+
- repos: array of repo IDs from the available repos that are relevant (empty array if none, only for code agents)
|
|
192
|
+
- db_configs: array of db config IDs that are relevant (empty array if none)
|
|
193
|
+
|
|
194
|
+
Select tools/repos/dbs that are genuinely needed for the agent's purpose. Don't over-select.
|
|
195
|
+
Return ONLY the JSON object, no markdown, no explanation."""
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
@router.post("/api/agents/build")
|
|
199
|
+
async def build_agent(req: BuildAgentRequest):
|
|
200
|
+
"""Create a full agent config from a description in one LLM call, auto-selecting tools/repos/dbs."""
|
|
201
|
+
settings = load_settings()
|
|
202
|
+
model = settings.get("model", "mistral")
|
|
203
|
+
mode = detect_mode_from_model(model)
|
|
204
|
+
|
|
205
|
+
now = datetime.datetime.now(zoneinfo.ZoneInfo("UTC"))
|
|
206
|
+
current_datetime = now.strftime("%B %d, %Y %I:%M %p UTC")
|
|
207
|
+
|
|
208
|
+
tools_section = ""
|
|
209
|
+
if req.available_tools:
|
|
210
|
+
tool_lines = "\n".join(
|
|
211
|
+
f" - {t.name}" + (f": {t.description}" if t.description else "")
|
|
212
|
+
for t in req.available_tools
|
|
213
|
+
)
|
|
214
|
+
tools_section = f"\n\nAVAILABLE TOOLS:\n{tool_lines}"
|
|
215
|
+
|
|
216
|
+
repos_section = ""
|
|
217
|
+
if req.available_repos:
|
|
218
|
+
repo_lines = "\n".join(f" - id={r.id} name={r.name}" for r in req.available_repos)
|
|
219
|
+
repos_section = f"\n\nAVAILABLE REPOS:\n{repo_lines}"
|
|
220
|
+
|
|
221
|
+
dbs_section = ""
|
|
222
|
+
if req.available_db_configs:
|
|
223
|
+
db_lines = "\n".join(f" - id={d.id} name={d.name} ({d.db_type})" for d in req.available_db_configs)
|
|
224
|
+
dbs_section = f"\n\nAVAILABLE DATABASES:\n{db_lines}"
|
|
225
|
+
|
|
226
|
+
user_message = (
|
|
227
|
+
f"Current date: {current_datetime}\n\n"
|
|
228
|
+
f"Create an agent for: {req.description}"
|
|
229
|
+
f"{tools_section}{repos_section}{dbs_section}"
|
|
230
|
+
)
|
|
231
|
+
|
|
232
|
+
try:
|
|
233
|
+
raw = await llm_generate_response(
|
|
234
|
+
prompt_msg=user_message,
|
|
235
|
+
sys_prompt=AGENT_FACTORY_SYSTEM,
|
|
236
|
+
mode=mode,
|
|
237
|
+
current_model=model,
|
|
238
|
+
current_settings=settings,
|
|
239
|
+
)
|
|
240
|
+
cleaned = raw.strip().removeprefix("```json").removeprefix("```").removesuffix("```").strip()
|
|
241
|
+
config = json.loads(cleaned)
|
|
242
|
+
except Exception as e:
|
|
243
|
+
raise HTTPException(status_code=500, detail=f"LLM generation failed: {e}")
|
|
244
|
+
|
|
245
|
+
agent_type = config.get("type", "conversational")
|
|
246
|
+
agent_id = f"agent_{int(datetime.datetime.now(zoneinfo.ZoneInfo('UTC')).timestamp() * 1000)}"
|
|
247
|
+
agent_dict = {
|
|
248
|
+
"id": agent_id,
|
|
249
|
+
"name": config.get("name", "New Agent"),
|
|
250
|
+
"description": config.get("description", ""),
|
|
251
|
+
"avatar": "default",
|
|
252
|
+
"type": agent_type,
|
|
253
|
+
"system_prompt": config.get("system_prompt", ""),
|
|
254
|
+
"tools": config.get("tools", []),
|
|
255
|
+
"repos": config.get("repos", []) if agent_type == "code" else [],
|
|
256
|
+
"db_configs": config.get("db_configs", []),
|
|
257
|
+
"max_turns": 50 if agent_type == "code" else 30,
|
|
258
|
+
"model": None,
|
|
259
|
+
"provider": None,
|
|
260
|
+
"delegate_agent_ids": [],
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
agents = load_user_agents()
|
|
264
|
+
agents.append(agent_dict)
|
|
265
|
+
save_user_agents(agents)
|
|
266
|
+
return agent_dict
|
|
267
|
+
|
|
268
|
+
|
|
161
269
|
@router.get("/api/agent-types")
|
|
162
270
|
async def get_agent_types():
|
|
163
271
|
"""Returns available agent types based on enabled features in settings."""
|
|
@@ -55,7 +55,9 @@ async def get_available_tools():
|
|
|
55
55
|
"""List all available tools from all sources (Native Agents, External MCP, Custom HTTP)"""
|
|
56
56
|
import core.server as _server
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
# Native engine tools appear first so they show above MCP and custom tools
|
|
59
|
+
from core.spawn_subtask import SPAWN_SUBTASK_STATIC_SCHEMA
|
|
60
|
+
all_tools = [SPAWN_SUBTASK_STATIC_SCHEMA]
|
|
59
61
|
|
|
60
62
|
# 1. Active MCP Sessions (Native + External)
|
|
61
63
|
for name, session in list(_server.agent_sessions.items()):
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"""
|
|
2
|
+
spawn_subtask — native tool that allows any agent to spawn ephemeral sub-agents.
|
|
3
|
+
|
|
4
|
+
Not an MCP server. Imported directly by react_engine.py and routes/tools.py.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
SPAWN_SUBTASK_TOOL_NAME = "spawn_subtask"
|
|
8
|
+
|
|
9
|
+
# Static schema registered in /api/tools/available so the frontend can show
|
|
10
|
+
# it as a toggleable capability in the agent config UI.
|
|
11
|
+
SPAWN_SUBTASK_STATIC_SCHEMA = {
|
|
12
|
+
"name": "spawn_subtask",
|
|
13
|
+
"description": (
|
|
14
|
+
"Spawn an ephemeral sub-agent to complete a focused task using only the tools "
|
|
15
|
+
"you specify. Call this multiple times in one response to run sub-agents in "
|
|
16
|
+
"parallel. Sub-agents can only use tools that you already have access to."
|
|
17
|
+
),
|
|
18
|
+
"source": "native_engine",
|
|
19
|
+
"source_label": "Sub-Agent",
|
|
20
|
+
"type": "mcp_native",
|
|
21
|
+
"schema": {
|
|
22
|
+
"type": "object",
|
|
23
|
+
"properties": {
|
|
24
|
+
"task": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"description": "Clear task description for the sub-agent",
|
|
27
|
+
},
|
|
28
|
+
"tools": {
|
|
29
|
+
"type": "array",
|
|
30
|
+
"items": {"type": "string"},
|
|
31
|
+
"description": "Tools to give the sub-agent (subset of your available tools)",
|
|
32
|
+
},
|
|
33
|
+
"name": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"description": "Optional label for this subtask (shown in UI)",
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
"required": ["task", "tools"],
|
|
39
|
+
},
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def build_dynamic_spawn_subtask_tool(available_tool_names: list[str]):
|
|
44
|
+
"""Build the runtime VirtualTool with the correct tools enum based on what
|
|
45
|
+
the calling agent actually has available."""
|
|
46
|
+
from core.tools import VirtualTool
|
|
47
|
+
|
|
48
|
+
return VirtualTool(
|
|
49
|
+
name="spawn_subtask",
|
|
50
|
+
description=(
|
|
51
|
+
"Spawn an ephemeral sub-agent to complete a focused task. "
|
|
52
|
+
"Sub-agents run in parallel when you call this multiple times in one response.\n\n"
|
|
53
|
+
"Available tools you can delegate: " + ", ".join(available_tool_names)
|
|
54
|
+
),
|
|
55
|
+
inputSchema={
|
|
56
|
+
"type": "object",
|
|
57
|
+
"properties": {
|
|
58
|
+
"task": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"description": "Task for the sub-agent to complete",
|
|
61
|
+
},
|
|
62
|
+
"tools": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"items": {"type": "string", "enum": available_tool_names},
|
|
65
|
+
"description": "Tools to give the sub-agent (must be from your available tools)",
|
|
66
|
+
},
|
|
67
|
+
"name": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"description": "Optional label for this subtask",
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
"required": ["task", "tools"],
|
|
73
|
+
},
|
|
74
|
+
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
wMcHp1vhEa3V0OBQS57Hg
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
"static/chunks/03~yq9q893hmn.js"
|
|
8
8
|
],
|
|
9
9
|
"lowPriorityFiles": [
|
|
10
|
-
"static/
|
|
11
|
-
"static/
|
|
12
|
-
"static/
|
|
10
|
+
"static/wMcHp1vhEa3V0OBQS57Hg/_buildManifest.js",
|
|
11
|
+
"static/wMcHp1vhEa3V0OBQS57Hg/_ssgManifest.js",
|
|
12
|
+
"static/wMcHp1vhEa3V0OBQS57Hg/_clientMiddlewareManifest.js"
|
|
13
13
|
],
|
|
14
14
|
"rootMainFiles": [
|
|
15
15
|
"static/chunks/0qmh881w772ef.js",
|
|
@@ -131,8 +131,8 @@
|
|
|
131
131
|
"dynamicRoutes": {},
|
|
132
132
|
"notFoundRoutes": [],
|
|
133
133
|
"preview": {
|
|
134
|
-
"previewModeId": "
|
|
135
|
-
"previewModeSigningKey": "
|
|
136
|
-
"previewModeEncryptionKey": "
|
|
134
|
+
"previewModeId": "e913953cec25a099099647632a2ea0b5",
|
|
135
|
+
"previewModeSigningKey": "cb6a7ebcc1720024a5ee9353c512dc3396aee6d2149f8c2d06de72079b2c2d46",
|
|
136
|
+
"previewModeEncryptionKey": "c35be2f603c51d2671a3b857c70bdce44a48a1904f963df080f0de3854ba97b4"
|
|
137
137
|
}
|
|
138
138
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0qmh881w772ef.js"/><script src="/_next/static/chunks/02i7dfk78~t~2.js" async=""></script><script src="/_next/static/chunks/0c7h~x4_chf35.js" async=""></script><script src="/_next/static/chunks/00xhsd~k-wxkl.js" async=""></script><script src="/_next/static/chunks/turbopack-09lztqg9--eu..js" async=""></script><script src="/_next/static/chunks/01xlw8hd842-c.js" async=""></script><script src="/_next/static/chunks/0m92kh92cfh_..js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/0qmh881w772ef.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/01xlw8hd842-c.js\",\"/_next/static/chunks/0m92kh92cfh_..js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/01xlw8hd842-c.js\",\"/_next/static/chunks/0m92kh92cfh_..js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/01xlw8hd842-c.js\",\"/_next/static/chunks/0m92kh92cfh_..js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[97367,[\"/_next/static/chunks/01xlw8hd842-c.js\",\"/_next/static/chunks/0m92kh92cfh_..js\"],\"ViewportBoundary\"]\na:I[97367,[\"/_next/static/chunks/01xlw8hd842-c.js\",\"/_next/static/chunks/0m92kh92cfh_..js\"],\"MetadataBoundary\"]\nc:I[68027,[\"/_next/static/chunks/01xlw8hd842-c.js\",\"/_next/static/chunks/0m92kh92cfh_..js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"
|
|
1
|
+
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0qmh881w772ef.js"/><script src="/_next/static/chunks/02i7dfk78~t~2.js" async=""></script><script src="/_next/static/chunks/0c7h~x4_chf35.js" async=""></script><script src="/_next/static/chunks/00xhsd~k-wxkl.js" async=""></script><script src="/_next/static/chunks/turbopack-09lztqg9--eu..js" async=""></script><script src="/_next/static/chunks/01xlw8hd842-c.js" async=""></script><script src="/_next/static/chunks/0m92kh92cfh_..js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/0qmh881w772ef.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/01xlw8hd842-c.js\",\"/_next/static/chunks/0m92kh92cfh_..js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/01xlw8hd842-c.js\",\"/_next/static/chunks/0m92kh92cfh_..js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/01xlw8hd842-c.js\",\"/_next/static/chunks/0m92kh92cfh_..js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[97367,[\"/_next/static/chunks/01xlw8hd842-c.js\",\"/_next/static/chunks/0m92kh92cfh_..js\"],\"ViewportBoundary\"]\na:I[97367,[\"/_next/static/chunks/01xlw8hd842-c.js\",\"/_next/static/chunks/0m92kh92cfh_..js\"],\"MetadataBoundary\"]\nc:I[68027,[\"/_next/static/chunks/01xlw8hd842-c.js\",\"/_next/static/chunks/0m92kh92cfh_..js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"wMcHp1vhEa3V0OBQS57Hg\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
8:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0m92kh92cfh_..js"],"ViewportBoundary"]
|
|
7
7
|
a:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0m92kh92cfh_..js"],"MetadataBoundary"]
|
|
8
8
|
c:I[68027,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0m92kh92cfh_..js"],"default",1]
|
|
9
|
-
0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"
|
|
9
|
+
0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"wMcHp1vhEa3V0OBQS57Hg"}
|
|
10
10
|
d:[]
|
|
11
11
|
7:"$Wd"
|
|
12
12
|
9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0m92kh92cfh_..js"],"OutletBoundary"]
|
|
3
3
|
3:"$Sreact.suspense"
|
|
4
|
-
0:{"rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"
|
|
4
|
+
0:{"rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"wMcHp1vhEa3V0OBQS57Hg"}
|
|
5
5
|
4:null
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
8:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0m92kh92cfh_..js"],"ViewportBoundary"]
|
|
7
7
|
a:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0m92kh92cfh_..js"],"MetadataBoundary"]
|
|
8
8
|
c:I[68027,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0m92kh92cfh_..js"],"default",1]
|
|
9
|
-
0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"
|
|
9
|
+
0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"wMcHp1vhEa3V0OBQS57Hg"}
|
|
10
10
|
d:[]
|
|
11
11
|
7:"$Wd"
|
|
12
12
|
9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
2:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0m92kh92cfh_..js"],"ViewportBoundary"]
|
|
3
3
|
3:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0m92kh92cfh_..js"],"MetadataBoundary"]
|
|
4
4
|
4:"$Sreact.suspense"
|
|
5
|
-
0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"
|
|
5
|
+
0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"wMcHp1vhEa3V0OBQS57Hg"}
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
2:I[39756,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0m92kh92cfh_..js"],"default"]
|
|
3
3
|
3:I[37457,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0m92kh92cfh_..js"],"default"]
|
|
4
4
|
4:[]
|
|
5
|
-
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"
|
|
5
|
+
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"wMcHp1vhEa3V0OBQS57Hg"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"
|
|
1
|
+
0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"wMcHp1vhEa3V0OBQS57Hg"}
|