deploy
This commit is contained in:
148
.a2a/agent.dsl.json
Normal file
148
.a2a/agent.dsl.json
Normal file
@@ -0,0 +1,148 @@
|
||||
{
|
||||
"schema_version": "2026-06-04",
|
||||
"language": "python",
|
||||
"name": "robertseares",
|
||||
"description": "A new A2A agent",
|
||||
"version": "0.1.0",
|
||||
"entrypoint": {
|
||||
"module": "agent",
|
||||
"class_name": "Robertseares",
|
||||
"function": null,
|
||||
"command": []
|
||||
},
|
||||
"skills": [
|
||||
{
|
||||
"name": "ask",
|
||||
"description": "Ask the starter DeepAgent to answer with tool calls when useful",
|
||||
"handler": "ask",
|
||||
"tags": [],
|
||||
"scopes": [],
|
||||
"stream": false,
|
||||
"policy": {
|
||||
"timeout_seconds": null,
|
||||
"idempotent": false,
|
||||
"max_retries": 0,
|
||||
"cost_class": null,
|
||||
"allow_scope_expansion": false,
|
||||
"grant_mode": null,
|
||||
"grant_allow_patterns": [],
|
||||
"grant_deny_patterns": [],
|
||||
"grant_outputs_prefix": null,
|
||||
"grant_write_prefixes": [],
|
||||
"grant_ttl_seconds": null,
|
||||
"grant_run_timeout_seconds": null,
|
||||
"grant_approval_timeout_seconds": null,
|
||||
"grant_scope_approval_timeout_seconds": null
|
||||
},
|
||||
"input_schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"prompt": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"prompt"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"output_schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"capabilities": {},
|
||||
"input_modes": [
|
||||
"application/json"
|
||||
],
|
||||
"output_modes": [
|
||||
"application/json"
|
||||
],
|
||||
"required_secrets": [],
|
||||
"required_env": [],
|
||||
"consumer_setup": {
|
||||
"fields": []
|
||||
},
|
||||
"runtime": {
|
||||
"lifecycle": "ephemeral",
|
||||
"state": "none",
|
||||
"sandbox": "microsandbox",
|
||||
"resources": {
|
||||
"cpu": "100m",
|
||||
"memory": "256Mi",
|
||||
"gpu": 0,
|
||||
"max_runtime_seconds": 600
|
||||
},
|
||||
"concurrency": 1,
|
||||
"egress": {
|
||||
"allow_hosts": [],
|
||||
"allow_internal_services": [],
|
||||
"deny_internet_by_default": true
|
||||
},
|
||||
"tools_used": [
|
||||
"deepagents",
|
||||
"langchain"
|
||||
],
|
||||
"llm_provisioning": "platform",
|
||||
"pricing": {
|
||||
"price_per_call_usd": 0.0,
|
||||
"caller_pays_llm": true,
|
||||
"notes": "Starter agent uses the caller's saved LLM credential via ctx.llm."
|
||||
},
|
||||
"wants_cp_jwt": false,
|
||||
"platform_resources": {
|
||||
"memory": null,
|
||||
"databases": []
|
||||
},
|
||||
"apt_packages": []
|
||||
},
|
||||
"template_lineage": null,
|
||||
"meta_agent_manifest": null,
|
||||
"state_schema": null,
|
||||
"workspace_access": {
|
||||
"enabled": true,
|
||||
"max_files": 64,
|
||||
"allowed_modes": [
|
||||
"read_only",
|
||||
"read_write_overlay"
|
||||
],
|
||||
"require_reason": false,
|
||||
"deny_patterns": [],
|
||||
"require_human_approval": false,
|
||||
"max_total_size_bytes": 104857600
|
||||
},
|
||||
"config_schema": {
|
||||
"properties": {},
|
||||
"title": "RobertsearesConfig",
|
||||
"type": "object"
|
||||
},
|
||||
"auth": {
|
||||
"model": "a2a_pack.auth.NoAuth",
|
||||
"strategy": "public",
|
||||
"principal_schema": {
|
||||
"additionalProperties": false,
|
||||
"description": "Public agent: no caller identity required.",
|
||||
"properties": {},
|
||||
"title": "NoAuth",
|
||||
"type": "object"
|
||||
},
|
||||
"resolver": null,
|
||||
"required": false
|
||||
},
|
||||
"metadata": {
|
||||
"source": "python-a2a-pack",
|
||||
"project_manifest": {
|
||||
"name": "robertseares",
|
||||
"version": "0.1.0",
|
||||
"entrypoint": "agent:Robertseares",
|
||||
"frontend": {
|
||||
"type": "static-spa",
|
||||
"path": "frontend",
|
||||
"build": "npm run build",
|
||||
"dist": "out",
|
||||
"mount": "/",
|
||||
"auth": "inherit"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
121
README.md
Normal file
121
README.md
Normal file
@@ -0,0 +1,121 @@
|
||||
# robertseares
|
||||
|
||||
A new A2A agent
|
||||
|
||||
This project was scaffolded with `a2a init`. It starts as a DeepAgents-backed
|
||||
A2A agent that uses the caller's saved LLM credential from `ctx.llm`.
|
||||
|
||||
`LLMProvisioning.PLATFORM` and `LLMProvisioning.CALLER_PROVIDED` both read that
|
||||
same `ctx.llm` path. Do not read provider keys, LiteLLM master keys,
|
||||
`OPENAI_API_KEY`, or `A2A_LITELLM_KEY` directly in agent code, and do not
|
||||
substitute fake fallback API keys when `ctx.llm.api_key` is empty.
|
||||
|
||||
## Durable Files
|
||||
|
||||
A2A Cloud workspaces are grant-scoped and backed by MinIO. Files become durable
|
||||
when your agent uses one of the platform-owned file paths:
|
||||
|
||||
- `ctx.workspace` for direct workspace reads and writes
|
||||
- `ctx.write_artifact(...)` for explicit output artifacts
|
||||
- `ctx.sandbox` for commands that read or write files in a sandbox
|
||||
- `ctx.workspace_backend()` for framework file tools such as DeepAgents
|
||||
|
||||
DeepAgents has its own built-in file tools (`write_file`, `read_file`,
|
||||
`edit_file`). Without an A2A backend, those tools write into LangGraph state
|
||||
only, so files can appear to the agent but never reach MinIO or `/workspace`.
|
||||
|
||||
Keep this line when building DeepAgents graphs:
|
||||
|
||||
```python
|
||||
backend = ctx.workspace_backend()
|
||||
return create_a2a_deep_agent(ctx, backend=backend, tools=[...])
|
||||
```
|
||||
|
||||
Invoke DeepAgents graphs with the starter recursion budget:
|
||||
|
||||
```python
|
||||
state = await graph.ainvoke(
|
||||
{"messages": [{"role": "user", "content": prompt}]},
|
||||
config={"recursion_limit": 500},
|
||||
)
|
||||
```
|
||||
|
||||
The backend respects the caller's grant. In handoffs, generated files should go
|
||||
through `ctx.workspace_backend()`, `ctx.write_artifact(...)`, or a sandbox helper
|
||||
so they are mirrored to the caller workspace instead of becoming private virtual
|
||||
files.
|
||||
|
||||
For stable, human-readable paths, write intentional outputs to
|
||||
`/workspace/outputs/...` or `ctx.write_artifact(...)`. If sandboxed code writes
|
||||
to process-local paths such as `/tmp/result.csv`, `/root`, or `/app`, the
|
||||
platform captures changed rootfs files under `outputs/rootfs-captures/...` so
|
||||
the caller can still download and inspect them.
|
||||
|
||||
When a skill needs to run real code, render media, convert files, or call a
|
||||
CLI that writes outputs, use the workspace-mounted sandbox helpers:
|
||||
|
||||
```python
|
||||
result = await ctx.workspace_shell(
|
||||
"python script.py --out /tmp/result.txt",
|
||||
image="python:3.11-slim",
|
||||
timeout_seconds=120,
|
||||
)
|
||||
```
|
||||
|
||||
Do not rely on `asyncio.create_subprocess_exec(...)` for durable outputs. A
|
||||
plain subprocess runs in the agent container, which is not mounted to the
|
||||
caller workspace; files it creates in `/tmp` or the image filesystem can vanish
|
||||
after the request. Use the sandbox helpers for any file-producing toolchain.
|
||||
|
||||
## DeepAgents Skills
|
||||
|
||||
If this project grows reusable workflow knowledge, add source-controlled skill
|
||||
folders under `skills/<skill-name>/SKILL.md`. The starter's `_seed_runtime_skills`
|
||||
helper copies those packaged skills into the invocation workspace and passes the
|
||||
resulting source path to `create_a2a_deep_agent(..., skills=[...])`, which is
|
||||
how DeepAgents discovers skills with progressive disclosure.
|
||||
|
||||
## Run Locally
|
||||
|
||||
```bash
|
||||
python -m pip install -r requirements.txt
|
||||
a2a dev
|
||||
a2a test
|
||||
a2a test --invoke --skill summarize --args-json '{"text":"hello"}'
|
||||
a2a card
|
||||
```
|
||||
|
||||
`a2a dev` loads `.env.local`, creates `.a2a/workspace/{inputs,outputs}`, serves
|
||||
the same HTTP invoke/card/MCP endpoints as production, and hot reloads local
|
||||
code. Files written through `ctx.workspace_backend()` land under
|
||||
`.a2a/workspace/outputs` before you deploy.
|
||||
|
||||
## Auth
|
||||
|
||||
The template is public by default (`auth_model = NoAuth`). To require the
|
||||
caller's app login, declare a typed auth model and resolver in `agent.py`.
|
||||
Resolvers receive the inbound bearer token and return the principal exposed as
|
||||
`ctx.auth`.
|
||||
|
||||
Hosted browser/direct invokes that use `LLMProvisioning.PLATFORM` still need an
|
||||
A2A Cloud session so the runtime can mint a short-lived LLM/workspace grant for
|
||||
that user. Agent-to-agent handoffs pass that grant explicitly.
|
||||
|
||||
```python
|
||||
from a2a_pack import JWTAuth, OIDCUserInfoAuthResolver
|
||||
|
||||
auth_model = JWTAuth
|
||||
auth_resolver = OIDCUserInfoAuthResolver(
|
||||
"https://auth.example.com/oauth2/userinfo",
|
||||
auth_model=JWTAuth,
|
||||
)
|
||||
```
|
||||
|
||||
For homegrown auth or SAML-backed apps, expose a bearer-token `/me` or
|
||||
`/introspect` endpoint and use the same resolver contract.
|
||||
|
||||
## Deploy
|
||||
|
||||
```bash
|
||||
a2a deploy
|
||||
```
|
||||
28
a2a.yaml
Normal file
28
a2a.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
# Project identity for `a2a deploy`. Most metadata (resources, scopes,
|
||||
# secrets, workspace, etc.) lives on the Python class — this file only
|
||||
# tells the CLI how to find it.
|
||||
name: robertseares
|
||||
version: 0.1.0
|
||||
entrypoint: agent:Robertseares
|
||||
expose:
|
||||
public: true
|
||||
# Optional platform resources:
|
||||
# resources:
|
||||
# memory:
|
||||
# tiers: [kv, vector]
|
||||
# namespace: robertseares
|
||||
# databases:
|
||||
# - name: app
|
||||
# provider: neon
|
||||
# engine: postgres
|
||||
# env:
|
||||
# url: DATABASE_URL
|
||||
|
||||
frontend:
|
||||
type: static-spa
|
||||
path: frontend
|
||||
build: npm run build
|
||||
dist: out
|
||||
mount: /
|
||||
auth: inherit
|
||||
|
||||
189
agent.py
Normal file
189
agent.py
Normal file
@@ -0,0 +1,189 @@
|
||||
"""robertseares agent.
|
||||
|
||||
Starter stack:
|
||||
- DeepAgents for tool-calling orchestration
|
||||
- Caller-provided LLM credentials via ctx.llm
|
||||
- A tiny model-call middleware hook you can replace with tracing,
|
||||
routing, rate limits, or policy checks
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from a2a_pack import (
|
||||
A2AAgent,
|
||||
LLMProvisioning,
|
||||
NoAuth,
|
||||
Pricing,
|
||||
RunContext,
|
||||
WorkspaceAccess,
|
||||
WorkspaceMode,
|
||||
skill,
|
||||
)
|
||||
from a2a_pack.context import LLMCreds
|
||||
|
||||
|
||||
class RobertsearesConfig(BaseModel):
|
||||
pass
|
||||
|
||||
|
||||
SYSTEM_PROMPT = """\
|
||||
You are a compact tool-calling agent.
|
||||
|
||||
Use the text_stats tool when the user asks about text, counts, summaries,
|
||||
or anything where exact length/word numbers would help. Mention tool results
|
||||
briefly instead of dumping raw JSON.
|
||||
"""
|
||||
|
||||
RUNTIME_SKILLS_DIR = "robertseares/.deepagents/skills/"
|
||||
DEEPAGENTS_RECURSION_LIMIT = 500
|
||||
|
||||
|
||||
class Robertseares(A2AAgent[RobertsearesConfig, NoAuth]):
|
||||
name = "robertseares"
|
||||
description = "A new A2A agent"
|
||||
version = "0.1.0"
|
||||
|
||||
config_model = RobertsearesConfig
|
||||
auth_model = NoAuth
|
||||
|
||||
# Hosted generated agents read the caller's saved LLM credential through
|
||||
# ctx.llm. The platform may proxy that credential through LiteLLM, but agent
|
||||
# code never reads provider keys, LiteLLM master keys, or OPENAI_API_KEY
|
||||
# directly.
|
||||
llm_provisioning = LLMProvisioning.PLATFORM
|
||||
pricing = Pricing(
|
||||
price_per_call_usd=0.0,
|
||||
caller_pays_llm=True,
|
||||
notes="Starter agent uses the caller's saved LLM credential via ctx.llm.",
|
||||
)
|
||||
workspace_access = WorkspaceAccess.dynamic(
|
||||
max_files=64,
|
||||
allowed_modes=(WorkspaceMode.READ_ONLY, WorkspaceMode.READ_WRITE_OVERLAY),
|
||||
require_reason=False,
|
||||
)
|
||||
tools_used = ("deepagents", "langchain")
|
||||
|
||||
@skill(description="Ask the starter DeepAgent to answer with tool calls when useful")
|
||||
async def ask(self, ctx: RunContext[NoAuth], prompt: str) -> str:
|
||||
creds = ctx.llm
|
||||
await ctx.emit_progress(f"llm: {creds.model} via {creds.source}")
|
||||
if not creds.api_key:
|
||||
return (
|
||||
"LLM key required. Add an LLM credential in Settings > LLM "
|
||||
"credentials before running this agent; for local --invoke "
|
||||
"runs set AGENT_LLM_KEY."
|
||||
)
|
||||
graph = self._build_deep_agent(ctx=ctx, creds=creds)
|
||||
state = await graph.ainvoke(
|
||||
{"messages": [{"role": "user", "content": prompt}]},
|
||||
config={"recursion_limit": DEEPAGENTS_RECURSION_LIMIT},
|
||||
)
|
||||
await ctx.emit_progress("deepagent finished")
|
||||
return _last_message_text(state)
|
||||
|
||||
def _build_deep_agent(
|
||||
self,
|
||||
*,
|
||||
ctx: RunContext[NoAuth],
|
||||
creds: LLMCreds,
|
||||
) -> Any:
|
||||
# Lazy imports keep `a2a card` usable before local dependencies are
|
||||
# installed. `a2a deploy` installs requirements.txt during the build.
|
||||
from a2a_pack.deepagents import create_a2a_deep_agent
|
||||
from langchain.agents.middleware import wrap_model_call
|
||||
from langchain_core.tools import tool
|
||||
|
||||
@tool
|
||||
def text_stats(text: str) -> str:
|
||||
"""Return exact word, character, and line counts for text."""
|
||||
words = [part for part in text.split() if part.strip()]
|
||||
return json.dumps(
|
||||
{
|
||||
"characters": len(text),
|
||||
"words": len(words),
|
||||
"lines": len(text.splitlines()) or 1,
|
||||
}
|
||||
)
|
||||
|
||||
@wrap_model_call
|
||||
async def log_model_call(request: Any, handler: Any) -> Any:
|
||||
messages = request.state.get("messages", [])
|
||||
print(
|
||||
"[middleware] model_call "
|
||||
f"model={creds.model} source={creds.source} messages={len(messages)}"
|
||||
)
|
||||
return await handler(request)
|
||||
|
||||
backend = ctx.workspace_backend()
|
||||
skill_sources = _seed_runtime_skills(backend, ctx)
|
||||
# create_a2a_deep_agent resolves provider:model strings with
|
||||
# langchain.init_chat_model from ctx.llm, preserving LiteLLM routing,
|
||||
# provider-specific extra body, and runtime model overrides.
|
||||
return create_a2a_deep_agent(
|
||||
ctx,
|
||||
creds=creds,
|
||||
backend=backend,
|
||||
skills=skill_sources or None,
|
||||
tools=[text_stats],
|
||||
middleware=[log_model_call],
|
||||
system_prompt=SYSTEM_PROMPT,
|
||||
)
|
||||
|
||||
|
||||
def _runtime_skills_root(ctx: RunContext[Any]) -> str:
|
||||
workspace = getattr(ctx, "_workspace", None)
|
||||
prefixes = tuple(getattr(workspace, "write_prefixes", ()) or ())
|
||||
if not prefixes:
|
||||
outputs_prefix = getattr(workspace, "outputs_prefix", None)
|
||||
prefixes = (outputs_prefix or "outputs/",)
|
||||
prefix = str(prefixes[0]).strip("/")
|
||||
return f"/{prefix}/{RUNTIME_SKILLS_DIR}" if prefix else f"/{RUNTIME_SKILLS_DIR}"
|
||||
|
||||
|
||||
def _seed_runtime_skills(backend: Any, ctx: RunContext[Any]) -> list[str]:
|
||||
"""Copy packaged DeepAgents skills into the invocation workspace.
|
||||
|
||||
DeepAgents loads skills from its backend, while source-controlled
|
||||
``skills/`` folders live in the image. This bridge lets generated agents
|
||||
ship reusable SKILL.md bundles without giving up durable A2A workspace
|
||||
files.
|
||||
"""
|
||||
root = Path(__file__).parent / "skills"
|
||||
if not root.exists():
|
||||
return []
|
||||
runtime_skills_root = _runtime_skills_root(ctx)
|
||||
uploads: list[tuple[str, bytes]] = []
|
||||
for path in root.rglob("*"):
|
||||
if path.is_file():
|
||||
rel = path.relative_to(root).as_posix()
|
||||
uploads.append((runtime_skills_root + rel, path.read_bytes()))
|
||||
if uploads:
|
||||
backend.upload_files(uploads)
|
||||
return [runtime_skills_root]
|
||||
return []
|
||||
|
||||
|
||||
def _last_message_text(state: dict[str, Any]) -> str:
|
||||
messages = state.get("messages") or []
|
||||
if not messages:
|
||||
return json.dumps(state, default=str)
|
||||
|
||||
content = getattr(messages[-1], "content", None)
|
||||
if isinstance(content, str):
|
||||
return content
|
||||
if isinstance(content, list):
|
||||
parts: list[str] = []
|
||||
for item in content:
|
||||
if isinstance(item, dict):
|
||||
text = item.get("text") or item.get("content")
|
||||
if text:
|
||||
parts.append(str(text))
|
||||
elif item:
|
||||
parts.append(str(item))
|
||||
return "\n".join(parts) if parts else json.dumps(content, default=str)
|
||||
return str(content or messages[-1])
|
||||
1
frontend/.next/BUILD_ID
Normal file
1
frontend/.next/BUILD_ID
Normal file
@@ -0,0 +1 @@
|
||||
Wk-jrwnV3DPU6_gWZ0ZM0
|
||||
26
frontend/.next/app-build-manifest.json
Normal file
26
frontend/.next/app-build-manifest.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"pages": {
|
||||
"/_not-found/page": [
|
||||
"static/chunks/webpack-4a462cecab786e93.js",
|
||||
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
||||
"static/chunks/255-2aa030c9ba2867e3.js",
|
||||
"static/chunks/main-app-d59f6883d44390ab.js",
|
||||
"static/chunks/app/_not-found/page-d556e797eb4d461b.js"
|
||||
],
|
||||
"/layout": [
|
||||
"static/chunks/webpack-4a462cecab786e93.js",
|
||||
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
||||
"static/chunks/255-2aa030c9ba2867e3.js",
|
||||
"static/chunks/main-app-d59f6883d44390ab.js",
|
||||
"static/css/5d263d3abd9811a6.css",
|
||||
"static/chunks/app/layout-0ec9780b79cf85e4.js"
|
||||
],
|
||||
"/page": [
|
||||
"static/chunks/webpack-4a462cecab786e93.js",
|
||||
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
||||
"static/chunks/255-2aa030c9ba2867e3.js",
|
||||
"static/chunks/main-app-d59f6883d44390ab.js",
|
||||
"static/chunks/app/page-f47082ca351a8369.js"
|
||||
]
|
||||
}
|
||||
}
|
||||
4
frontend/.next/app-path-routes-manifest.json
Normal file
4
frontend/.next/app-path-routes-manifest.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"/_not-found/page": "/_not-found",
|
||||
"/page": "/"
|
||||
}
|
||||
33
frontend/.next/build-manifest.json
Normal file
33
frontend/.next/build-manifest.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"polyfillFiles": [
|
||||
"static/chunks/polyfills-42372ed130431b0a.js"
|
||||
],
|
||||
"devFiles": [],
|
||||
"ampDevFiles": [],
|
||||
"lowPriorityFiles": [
|
||||
"static/Wk-jrwnV3DPU6_gWZ0ZM0/_buildManifest.js",
|
||||
"static/Wk-jrwnV3DPU6_gWZ0ZM0/_ssgManifest.js"
|
||||
],
|
||||
"rootMainFiles": [
|
||||
"static/chunks/webpack-4a462cecab786e93.js",
|
||||
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
||||
"static/chunks/255-2aa030c9ba2867e3.js",
|
||||
"static/chunks/main-app-d59f6883d44390ab.js"
|
||||
],
|
||||
"rootMainFilesTree": {},
|
||||
"pages": {
|
||||
"/_app": [
|
||||
"static/chunks/webpack-4a462cecab786e93.js",
|
||||
"static/chunks/framework-2c534e0e662575a2.js",
|
||||
"static/chunks/main-af3375a02f18db6d.js",
|
||||
"static/chunks/pages/_app-7d307437aca18ad4.js"
|
||||
],
|
||||
"/_error": [
|
||||
"static/chunks/webpack-4a462cecab786e93.js",
|
||||
"static/chunks/framework-2c534e0e662575a2.js",
|
||||
"static/chunks/main-af3375a02f18db6d.js",
|
||||
"static/chunks/pages/_error-cb2a52f75f2162e2.js"
|
||||
]
|
||||
},
|
||||
"ampFirstPages": []
|
||||
}
|
||||
1
frontend/.next/cache/.previewinfo
vendored
Normal file
1
frontend/.next/cache/.previewinfo
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"previewModeId":"0c467732f20933f6090153b1ded197e1","previewModeSigningKey":"2d922f3b4d9c7678f519235ab6a9ca106b40ae97cc038bb60068127a8cbaf0ab","previewModeEncryptionKey":"e5ded930403511e431143c6e8f3f90321c20c3f0605cc4d0eba549b9cc2fad6b","expireAt":1782423199326}
|
||||
1
frontend/.next/cache/.rscinfo
vendored
Normal file
1
frontend/.next/cache/.rscinfo
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"encryption.key":"2zMh+Q+skbyWQHWXtVoQqoOOEWrhrFwRdxSthkoR/h8=","encryption.expire_at":1782423199278}
|
||||
BIN
frontend/.next/cache/webpack/client-production/0.pack
vendored
Normal file
BIN
frontend/.next/cache/webpack/client-production/0.pack
vendored
Normal file
Binary file not shown.
BIN
frontend/.next/cache/webpack/client-production/1.pack
vendored
Normal file
BIN
frontend/.next/cache/webpack/client-production/1.pack
vendored
Normal file
Binary file not shown.
BIN
frontend/.next/cache/webpack/client-production/2.pack
vendored
Normal file
BIN
frontend/.next/cache/webpack/client-production/2.pack
vendored
Normal file
Binary file not shown.
BIN
frontend/.next/cache/webpack/client-production/3.pack
vendored
Normal file
BIN
frontend/.next/cache/webpack/client-production/3.pack
vendored
Normal file
Binary file not shown.
BIN
frontend/.next/cache/webpack/client-production/index.pack
vendored
Normal file
BIN
frontend/.next/cache/webpack/client-production/index.pack
vendored
Normal file
Binary file not shown.
BIN
frontend/.next/cache/webpack/client-production/index.pack.old
vendored
Normal file
BIN
frontend/.next/cache/webpack/client-production/index.pack.old
vendored
Normal file
Binary file not shown.
BIN
frontend/.next/cache/webpack/edge-server-production/0.pack
vendored
Normal file
BIN
frontend/.next/cache/webpack/edge-server-production/0.pack
vendored
Normal file
Binary file not shown.
BIN
frontend/.next/cache/webpack/edge-server-production/index.pack
vendored
Normal file
BIN
frontend/.next/cache/webpack/edge-server-production/index.pack
vendored
Normal file
Binary file not shown.
BIN
frontend/.next/cache/webpack/server-production/0.pack
vendored
Normal file
BIN
frontend/.next/cache/webpack/server-production/0.pack
vendored
Normal file
Binary file not shown.
BIN
frontend/.next/cache/webpack/server-production/1.pack
vendored
Normal file
BIN
frontend/.next/cache/webpack/server-production/1.pack
vendored
Normal file
Binary file not shown.
BIN
frontend/.next/cache/webpack/server-production/index.pack
vendored
Normal file
BIN
frontend/.next/cache/webpack/server-production/index.pack
vendored
Normal file
Binary file not shown.
BIN
frontend/.next/cache/webpack/server-production/index.pack.old
vendored
Normal file
BIN
frontend/.next/cache/webpack/server-production/index.pack.old
vendored
Normal file
Binary file not shown.
6
frontend/.next/diagnostics/build-diagnostics.json
Normal file
6
frontend/.next/diagnostics/build-diagnostics.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"buildStage": "static-generation",
|
||||
"buildOptions": {
|
||||
"useBuildWorker": "true"
|
||||
}
|
||||
}
|
||||
1
frontend/.next/diagnostics/framework.json
Normal file
1
frontend/.next/diagnostics/framework.json
Normal file
@@ -0,0 +1 @@
|
||||
{"name":"Next.js","version":"15.5.19"}
|
||||
5
frontend/.next/export-detail.json
Normal file
5
frontend/.next/export-detail.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": 1,
|
||||
"outDirectory": "/Users/robert/MicroCash/agents/robertseares/frontend/out",
|
||||
"success": true
|
||||
}
|
||||
6
frontend/.next/export-marker.json
Normal file
6
frontend/.next/export-marker.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"hasExportPathMap": false,
|
||||
"exportTrailingSlash": true,
|
||||
"isNextImageImported": false
|
||||
}
|
||||
58
frontend/.next/images-manifest.json
Normal file
58
frontend/.next/images-manifest.json
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"version": 1,
|
||||
"images": {
|
||||
"deviceSizes": [
|
||||
640,
|
||||
750,
|
||||
828,
|
||||
1080,
|
||||
1200,
|
||||
1920,
|
||||
2048,
|
||||
3840
|
||||
],
|
||||
"imageSizes": [
|
||||
16,
|
||||
32,
|
||||
48,
|
||||
64,
|
||||
96,
|
||||
128,
|
||||
256,
|
||||
384
|
||||
],
|
||||
"path": "/_next/image/",
|
||||
"loader": "default",
|
||||
"loaderFile": "",
|
||||
"domains": [],
|
||||
"disableStaticImages": false,
|
||||
"minimumCacheTTL": 60,
|
||||
"formats": [
|
||||
"image/webp"
|
||||
],
|
||||
"maximumResponseBody": 50000000,
|
||||
"dangerouslyAllowSVG": false,
|
||||
"contentSecurityPolicy": "script-src 'none'; frame-src 'none'; sandbox;",
|
||||
"contentDispositionType": "attachment",
|
||||
"remotePatterns": [],
|
||||
"unoptimized": false,
|
||||
"sizes": [
|
||||
640,
|
||||
750,
|
||||
828,
|
||||
1080,
|
||||
1200,
|
||||
1920,
|
||||
2048,
|
||||
3840,
|
||||
16,
|
||||
32,
|
||||
48,
|
||||
64,
|
||||
96,
|
||||
128,
|
||||
256,
|
||||
384
|
||||
]
|
||||
}
|
||||
}
|
||||
1
frontend/.next/next-minimal-server.js.nft.json
Normal file
1
frontend/.next/next-minimal-server.js.nft.json
Normal file
File diff suppressed because one or more lines are too long
1
frontend/.next/next-server.js.nft.json
Normal file
1
frontend/.next/next-server.js.nft.json
Normal file
File diff suppressed because one or more lines are too long
1
frontend/.next/package.json
Normal file
1
frontend/.next/package.json
Normal file
@@ -0,0 +1 @@
|
||||
{"type": "commonjs"}
|
||||
61
frontend/.next/prerender-manifest.json
Normal file
61
frontend/.next/prerender-manifest.json
Normal file
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"version": 4,
|
||||
"routes": {
|
||||
"/_not-found": {
|
||||
"initialStatus": 404,
|
||||
"experimentalBypassFor": [
|
||||
{
|
||||
"type": "header",
|
||||
"key": "next-action"
|
||||
},
|
||||
{
|
||||
"type": "header",
|
||||
"key": "content-type",
|
||||
"value": "multipart/form-data;.*"
|
||||
}
|
||||
],
|
||||
"initialRevalidateSeconds": false,
|
||||
"srcRoute": "/_not-found",
|
||||
"dataRoute": "/_not-found.rsc",
|
||||
"allowHeader": [
|
||||
"host",
|
||||
"x-matched-path",
|
||||
"x-prerender-revalidate",
|
||||
"x-prerender-revalidate-if-generated",
|
||||
"x-next-revalidated-tags",
|
||||
"x-next-revalidate-tag-token"
|
||||
]
|
||||
},
|
||||
"/": {
|
||||
"experimentalBypassFor": [
|
||||
{
|
||||
"type": "header",
|
||||
"key": "next-action"
|
||||
},
|
||||
{
|
||||
"type": "header",
|
||||
"key": "content-type",
|
||||
"value": "multipart/form-data;.*"
|
||||
}
|
||||
],
|
||||
"initialRevalidateSeconds": false,
|
||||
"srcRoute": "/",
|
||||
"dataRoute": "/index.rsc",
|
||||
"allowHeader": [
|
||||
"host",
|
||||
"x-matched-path",
|
||||
"x-prerender-revalidate",
|
||||
"x-prerender-revalidate-if-generated",
|
||||
"x-next-revalidated-tags",
|
||||
"x-next-revalidate-tag-token"
|
||||
]
|
||||
}
|
||||
},
|
||||
"dynamicRoutes": {},
|
||||
"notFoundRoutes": [],
|
||||
"preview": {
|
||||
"previewModeId": "0c467732f20933f6090153b1ded197e1",
|
||||
"previewModeSigningKey": "2d922f3b4d9c7678f519235ab6a9ca106b40ae97cc038bb60068127a8cbaf0ab",
|
||||
"previewModeEncryptionKey": "e5ded930403511e431143c6e8f3f90321c20c3f0605cc4d0eba549b9cc2fad6b"
|
||||
}
|
||||
}
|
||||
1
frontend/.next/react-loadable-manifest.json
Normal file
1
frontend/.next/react-loadable-manifest.json
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
321
frontend/.next/required-server-files.json
Normal file
321
frontend/.next/required-server-files.json
Normal file
@@ -0,0 +1,321 @@
|
||||
{
|
||||
"version": 1,
|
||||
"config": {
|
||||
"env": {},
|
||||
"webpack": null,
|
||||
"eslint": {
|
||||
"ignoreDuringBuilds": false
|
||||
},
|
||||
"typescript": {
|
||||
"ignoreBuildErrors": false,
|
||||
"tsconfigPath": "tsconfig.json"
|
||||
},
|
||||
"typedRoutes": false,
|
||||
"distDir": ".next",
|
||||
"cleanDistDir": true,
|
||||
"assetPrefix": "",
|
||||
"cacheMaxMemorySize": 52428800,
|
||||
"configOrigin": "next.config.mjs",
|
||||
"useFileSystemPublicRoutes": true,
|
||||
"generateEtags": true,
|
||||
"pageExtensions": [
|
||||
"tsx",
|
||||
"ts",
|
||||
"jsx",
|
||||
"js"
|
||||
],
|
||||
"poweredByHeader": true,
|
||||
"compress": true,
|
||||
"images": {
|
||||
"deviceSizes": [
|
||||
640,
|
||||
750,
|
||||
828,
|
||||
1080,
|
||||
1200,
|
||||
1920,
|
||||
2048,
|
||||
3840
|
||||
],
|
||||
"imageSizes": [
|
||||
16,
|
||||
32,
|
||||
48,
|
||||
64,
|
||||
96,
|
||||
128,
|
||||
256,
|
||||
384
|
||||
],
|
||||
"path": "/_next/image/",
|
||||
"loader": "default",
|
||||
"loaderFile": "",
|
||||
"domains": [],
|
||||
"disableStaticImages": false,
|
||||
"minimumCacheTTL": 60,
|
||||
"formats": [
|
||||
"image/webp"
|
||||
],
|
||||
"maximumResponseBody": 50000000,
|
||||
"dangerouslyAllowSVG": false,
|
||||
"contentSecurityPolicy": "script-src 'none'; frame-src 'none'; sandbox;",
|
||||
"contentDispositionType": "attachment",
|
||||
"remotePatterns": [],
|
||||
"unoptimized": false
|
||||
},
|
||||
"devIndicators": {
|
||||
"position": "bottom-left"
|
||||
},
|
||||
"onDemandEntries": {
|
||||
"maxInactiveAge": 60000,
|
||||
"pagesBufferLength": 5
|
||||
},
|
||||
"amp": {
|
||||
"canonicalBase": ""
|
||||
},
|
||||
"basePath": "",
|
||||
"sassOptions": {},
|
||||
"trailingSlash": true,
|
||||
"i18n": null,
|
||||
"productionBrowserSourceMaps": false,
|
||||
"excludeDefaultMomentLocales": true,
|
||||
"serverRuntimeConfig": {},
|
||||
"publicRuntimeConfig": {},
|
||||
"reactProductionProfiling": false,
|
||||
"reactStrictMode": null,
|
||||
"reactMaxHeadersLength": 6000,
|
||||
"httpAgentOptions": {
|
||||
"keepAlive": true
|
||||
},
|
||||
"logging": {},
|
||||
"compiler": {},
|
||||
"expireTime": 31536000,
|
||||
"staticPageGenerationTimeout": 60,
|
||||
"output": "export",
|
||||
"modularizeImports": {
|
||||
"@mui/icons-material": {
|
||||
"transform": "@mui/icons-material/{{member}}"
|
||||
},
|
||||
"lodash": {
|
||||
"transform": "lodash/{{member}}"
|
||||
}
|
||||
},
|
||||
"outputFileTracingRoot": "/Users/robert",
|
||||
"experimental": {
|
||||
"useSkewCookie": false,
|
||||
"cacheLife": {
|
||||
"default": {
|
||||
"stale": 300,
|
||||
"revalidate": 900,
|
||||
"expire": 4294967294
|
||||
},
|
||||
"seconds": {
|
||||
"stale": 30,
|
||||
"revalidate": 1,
|
||||
"expire": 60
|
||||
},
|
||||
"minutes": {
|
||||
"stale": 300,
|
||||
"revalidate": 60,
|
||||
"expire": 3600
|
||||
},
|
||||
"hours": {
|
||||
"stale": 300,
|
||||
"revalidate": 3600,
|
||||
"expire": 86400
|
||||
},
|
||||
"days": {
|
||||
"stale": 300,
|
||||
"revalidate": 86400,
|
||||
"expire": 604800
|
||||
},
|
||||
"weeks": {
|
||||
"stale": 300,
|
||||
"revalidate": 604800,
|
||||
"expire": 2592000
|
||||
},
|
||||
"max": {
|
||||
"stale": 300,
|
||||
"revalidate": 2592000,
|
||||
"expire": 4294967294
|
||||
}
|
||||
},
|
||||
"cacheHandlers": {},
|
||||
"cssChunking": true,
|
||||
"multiZoneDraftMode": false,
|
||||
"appNavFailHandling": false,
|
||||
"prerenderEarlyExit": true,
|
||||
"serverMinification": true,
|
||||
"serverSourceMaps": false,
|
||||
"linkNoTouchStart": false,
|
||||
"caseSensitiveRoutes": false,
|
||||
"clientSegmentCache": false,
|
||||
"clientParamParsing": false,
|
||||
"dynamicOnHover": false,
|
||||
"preloadEntriesOnStart": true,
|
||||
"clientRouterFilter": true,
|
||||
"clientRouterFilterRedirects": false,
|
||||
"fetchCacheKeyPrefix": "",
|
||||
"middlewarePrefetch": "flexible",
|
||||
"optimisticClientCache": true,
|
||||
"manualClientBasePath": false,
|
||||
"cpus": 9,
|
||||
"memoryBasedWorkersCount": false,
|
||||
"imgOptConcurrency": null,
|
||||
"imgOptTimeoutInSeconds": 7,
|
||||
"imgOptMaxInputPixels": 268402689,
|
||||
"imgOptSequentialRead": null,
|
||||
"imgOptSkipMetadata": null,
|
||||
"isrFlushToDisk": true,
|
||||
"workerThreads": false,
|
||||
"optimizeCss": false,
|
||||
"nextScriptWorkers": false,
|
||||
"scrollRestoration": false,
|
||||
"externalDir": false,
|
||||
"disableOptimizedLoading": false,
|
||||
"gzipSize": true,
|
||||
"craCompat": false,
|
||||
"esmExternals": true,
|
||||
"fullySpecified": false,
|
||||
"swcTraceProfiling": false,
|
||||
"forceSwcTransforms": false,
|
||||
"largePageDataBytes": 128000,
|
||||
"typedEnv": false,
|
||||
"parallelServerCompiles": false,
|
||||
"parallelServerBuildTraces": false,
|
||||
"ppr": false,
|
||||
"authInterrupts": false,
|
||||
"webpackMemoryOptimizations": false,
|
||||
"optimizeServerReact": true,
|
||||
"viewTransition": false,
|
||||
"routerBFCache": false,
|
||||
"removeUncaughtErrorAndRejectionListeners": false,
|
||||
"validateRSCRequestHeaders": false,
|
||||
"staleTimes": {
|
||||
"dynamic": 0,
|
||||
"static": 300
|
||||
},
|
||||
"serverComponentsHmrCache": true,
|
||||
"staticGenerationMaxConcurrency": 8,
|
||||
"staticGenerationMinPagesPerWorker": 25,
|
||||
"cacheComponents": false,
|
||||
"inlineCss": false,
|
||||
"useCache": false,
|
||||
"globalNotFound": false,
|
||||
"devtoolSegmentExplorer": true,
|
||||
"browserDebugInfoInTerminal": false,
|
||||
"optimizeRouterScrolling": false,
|
||||
"middlewareClientMaxBodySize": 10485760,
|
||||
"optimizePackageImports": [
|
||||
"lucide-react",
|
||||
"date-fns",
|
||||
"lodash-es",
|
||||
"ramda",
|
||||
"antd",
|
||||
"react-bootstrap",
|
||||
"ahooks",
|
||||
"@ant-design/icons",
|
||||
"@headlessui/react",
|
||||
"@headlessui-float/react",
|
||||
"@heroicons/react/20/solid",
|
||||
"@heroicons/react/24/solid",
|
||||
"@heroicons/react/24/outline",
|
||||
"@visx/visx",
|
||||
"@tremor/react",
|
||||
"rxjs",
|
||||
"@mui/material",
|
||||
"@mui/icons-material",
|
||||
"recharts",
|
||||
"react-use",
|
||||
"effect",
|
||||
"@effect/schema",
|
||||
"@effect/platform",
|
||||
"@effect/platform-node",
|
||||
"@effect/platform-browser",
|
||||
"@effect/platform-bun",
|
||||
"@effect/sql",
|
||||
"@effect/sql-mssql",
|
||||
"@effect/sql-mysql2",
|
||||
"@effect/sql-pg",
|
||||
"@effect/sql-sqlite-node",
|
||||
"@effect/sql-sqlite-bun",
|
||||
"@effect/sql-sqlite-wasm",
|
||||
"@effect/sql-sqlite-react-native",
|
||||
"@effect/rpc",
|
||||
"@effect/rpc-http",
|
||||
"@effect/typeclass",
|
||||
"@effect/experimental",
|
||||
"@effect/opentelemetry",
|
||||
"@material-ui/core",
|
||||
"@material-ui/icons",
|
||||
"@tabler/icons-react",
|
||||
"mui-core",
|
||||
"react-icons/ai",
|
||||
"react-icons/bi",
|
||||
"react-icons/bs",
|
||||
"react-icons/cg",
|
||||
"react-icons/ci",
|
||||
"react-icons/di",
|
||||
"react-icons/fa",
|
||||
"react-icons/fa6",
|
||||
"react-icons/fc",
|
||||
"react-icons/fi",
|
||||
"react-icons/gi",
|
||||
"react-icons/go",
|
||||
"react-icons/gr",
|
||||
"react-icons/hi",
|
||||
"react-icons/hi2",
|
||||
"react-icons/im",
|
||||
"react-icons/io",
|
||||
"react-icons/io5",
|
||||
"react-icons/lia",
|
||||
"react-icons/lib",
|
||||
"react-icons/lu",
|
||||
"react-icons/md",
|
||||
"react-icons/pi",
|
||||
"react-icons/ri",
|
||||
"react-icons/rx",
|
||||
"react-icons/si",
|
||||
"react-icons/sl",
|
||||
"react-icons/tb",
|
||||
"react-icons/tfi",
|
||||
"react-icons/ti",
|
||||
"react-icons/vsc",
|
||||
"react-icons/wi"
|
||||
],
|
||||
"trustHostHeader": false,
|
||||
"isExperimentalCompile": false
|
||||
},
|
||||
"htmlLimitedBots": "[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight",
|
||||
"bundlePagesRouterDependencies": false,
|
||||
"configFileName": "next.config.mjs",
|
||||
"turbopack": {
|
||||
"root": "/Users/robert"
|
||||
}
|
||||
},
|
||||
"appDir": "/Users/robert/MicroCash/agents/robertseares/frontend",
|
||||
"relativeAppDir": "MicroCash/agents/robertseares/frontend",
|
||||
"files": [
|
||||
".next/routes-manifest.json",
|
||||
".next/server/pages-manifest.json",
|
||||
".next/build-manifest.json",
|
||||
".next/prerender-manifest.json",
|
||||
".next/server/functions-config-manifest.json",
|
||||
".next/server/middleware-manifest.json",
|
||||
".next/server/middleware-build-manifest.js",
|
||||
".next/server/middleware-react-loadable-manifest.js",
|
||||
".next/react-loadable-manifest.json",
|
||||
".next/server/app-paths-manifest.json",
|
||||
".next/app-path-routes-manifest.json",
|
||||
".next/app-build-manifest.json",
|
||||
".next/server/server-reference-manifest.js",
|
||||
".next/server/server-reference-manifest.json",
|
||||
".next/BUILD_ID",
|
||||
".next/server/next-font-manifest.js",
|
||||
".next/server/next-font-manifest.json",
|
||||
".next/required-server-files.json"
|
||||
],
|
||||
"ignore": [
|
||||
"node_modules/next/dist/compiled/@ampproject/toolbox-optimizer/**/*"
|
||||
]
|
||||
}
|
||||
66
frontend/.next/routes-manifest.json
Normal file
66
frontend/.next/routes-manifest.json
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"version": 3,
|
||||
"pages404": true,
|
||||
"caseSensitive": false,
|
||||
"basePath": "",
|
||||
"redirects": [
|
||||
{
|
||||
"source": "/:file((?!\\.well-known(?:/.*)?)(?:[^/]+/)*[^/]+\\.\\w+)/",
|
||||
"destination": "/:file",
|
||||
"internal": true,
|
||||
"missing": [
|
||||
{
|
||||
"type": "header",
|
||||
"key": "x-nextjs-data"
|
||||
}
|
||||
],
|
||||
"statusCode": 308,
|
||||
"regex": "^(?:/((?!\\.well-known(?:/.*)?)(?:[^/]+/)*[^/]+\\.\\w+))/$"
|
||||
},
|
||||
{
|
||||
"source": "/:notfile((?!\\.well-known(?:/.*)?)(?:[^/]+/)*[^/\\.]+)",
|
||||
"destination": "/:notfile/",
|
||||
"internal": true,
|
||||
"statusCode": 308,
|
||||
"regex": "^(?:/((?!\\.well-known(?:/.*)?)(?:[^/]+/)*[^/\\.]+))$"
|
||||
}
|
||||
],
|
||||
"headers": [],
|
||||
"rewrites": {
|
||||
"beforeFiles": [],
|
||||
"afterFiles": [],
|
||||
"fallback": []
|
||||
},
|
||||
"dynamicRoutes": [],
|
||||
"staticRoutes": [
|
||||
{
|
||||
"page": "/",
|
||||
"regex": "^/(?:/)?$",
|
||||
"routeKeys": {},
|
||||
"namedRegex": "^/(?:/)?$"
|
||||
},
|
||||
{
|
||||
"page": "/_not-found",
|
||||
"regex": "^/_not\\-found(?:/)?$",
|
||||
"routeKeys": {},
|
||||
"namedRegex": "^/_not\\-found(?:/)?$"
|
||||
}
|
||||
],
|
||||
"dataRoutes": [],
|
||||
"rsc": {
|
||||
"header": "rsc",
|
||||
"varyHeader": "rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch",
|
||||
"prefetchHeader": "next-router-prefetch",
|
||||
"didPostponeHeader": "x-nextjs-postponed",
|
||||
"contentTypeHeader": "text/x-component",
|
||||
"suffix": ".rsc",
|
||||
"prefetchSuffix": ".prefetch.rsc",
|
||||
"prefetchSegmentHeader": "next-router-segment-prefetch",
|
||||
"prefetchSegmentSuffix": ".segment.rsc",
|
||||
"prefetchSegmentDirSuffix": ".segments"
|
||||
},
|
||||
"rewriteHeaders": {
|
||||
"pathHeader": "x-nextjs-rewritten-path",
|
||||
"queryHeader": "x-nextjs-rewritten-query"
|
||||
}
|
||||
}
|
||||
4
frontend/.next/server/app-paths-manifest.json
Normal file
4
frontend/.next/server/app-paths-manifest.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"/_not-found/page": "app/_not-found/page.js",
|
||||
"/page": "app/page.js"
|
||||
}
|
||||
1
frontend/.next/server/app/_not-found.html
Normal file
1
frontend/.next/server/app/_not-found.html
Normal file
File diff suppressed because one or more lines are too long
8
frontend/.next/server/app/_not-found.meta
Normal file
8
frontend/.next/server/app/_not-found.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"status": 404,
|
||||
"headers": {
|
||||
"x-nextjs-stale-time": "300",
|
||||
"x-nextjs-prerender": "1",
|
||||
"x-next-cache-tags": "_N_T_/layout,_N_T_/_not-found/layout,_N_T_/_not-found/page,_N_T_/_not-found/"
|
||||
}
|
||||
}
|
||||
15
frontend/.next/server/app/_not-found.rsc
Normal file
15
frontend/.next/server/app/_not-found.rsc
Normal file
@@ -0,0 +1,15 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[9766,[],""]
|
||||
3:I[8924,[],""]
|
||||
4:I[4431,[],"OutletBoundary"]
|
||||
6:I[5278,[],"AsyncMetadataOutlet"]
|
||||
8:I[4431,[],"ViewportBoundary"]
|
||||
a:I[4431,[],"MetadataBoundary"]
|
||||
b:"$Sreact.suspense"
|
||||
d:I[7150,[],""]
|
||||
:HL["/_next/static/css/5d263d3abd9811a6.css","style"]
|
||||
0:{"P":null,"b":"Wk-jrwnV3DPU6_gWZ0ZM0","p":"","c":["","_not-found",""],"i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/5d263d3abd9811a6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":["/_not-found",["$","$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":["__PAGE__",["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$L5",["$","$L6",null,{"promise":"$@7"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],[["$","$L8",null,{"children":"$L9"}],null],["$","$La",null,{"children":["$","div",null,{"hidden":true,"children":["$","$b",null,{"fallback":null,"children":"$Lc"}]}]}]]}],false]],"m":"$undefined","G":["$d",[]],"s":false,"S":true}
|
||||
9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
||||
5:null
|
||||
7:{"metadata":[["$","title","0",{"children":"Robert Seares"}],["$","meta","1",{"name":"description","content":"Software engineer, engineering leader, founder, and product builder."}]],"error":null,"digest":"$undefined"}
|
||||
c:"$7:metadata"
|
||||
2
frontend/.next/server/app/_not-found/page.js
Normal file
2
frontend/.next/server/app/_not-found/page.js
Normal file
File diff suppressed because one or more lines are too long
1
frontend/.next/server/app/_not-found/page.js.nft.json
Normal file
1
frontend/.next/server/app/_not-found/page.js.nft.json
Normal file
@@ -0,0 +1 @@
|
||||
{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../../node_modules/next/dist/shared/lib/segment.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../package.json","../../chunks/833.js","../../webpack-runtime.js","page_client-reference-manifest.js"]}
|
||||
File diff suppressed because one or more lines are too long
1
frontend/.next/server/app/index.html
Normal file
1
frontend/.next/server/app/index.html
Normal file
File diff suppressed because one or more lines are too long
7
frontend/.next/server/app/index.meta
Normal file
7
frontend/.next/server/app/index.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"headers": {
|
||||
"x-nextjs-stale-time": "300",
|
||||
"x-nextjs-prerender": "1",
|
||||
"x-next-cache-tags": "_N_T_/layout,_N_T_/page,_N_T_/"
|
||||
}
|
||||
}
|
||||
22
frontend/.next/server/app/index.rsc
Normal file
22
frontend/.next/server/app/index.rsc
Normal file
@@ -0,0 +1,22 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[9766,[],""]
|
||||
3:I[8924,[],""]
|
||||
b:I[7150,[],""]
|
||||
:HL["/_next/static/css/5d263d3abd9811a6.css","style"]
|
||||
0:{"P":null,"b":"Wk-jrwnV3DPU6_gWZ0ZM0","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/5d263d3abd9811a6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","main",null,{"children":[["$","section",null,{"className":"hero","children":["$","div",null,{"className":"hero-inner","children":[["$","p",null,{"className":"eyebrow","children":"Software engineer, founder, product builder"}],["$","h1",null,{"children":"Robert Seares"}],["$","p",null,{"className":"lede","children":"I build companies, software, and systems."}],["$","p",null,{"className":"intro","children":"I am a software engineer, engineering leader, founder, and product builder currently living in Brazil with my wife and two children. Over the last decade I have worked across startups, AI, biotech, consumer products, infrastructure, and automation, always gravitating toward difficult technical problems where software can create outsized leverage."}]]}]}],["$","section",null,{"className":"section narrative","children":["$","div",null,{"className":"content-grid","children":[["$","div",null,{"children":[["$","p",null,{"className":"eyebrow","children":"Today"}],["$","h2",null,{"children":"Engineering at Ark Biotech"}]]}],["$","div",null,{"className":"copy","children":[["$","p",null,{"children":"Today I lead software engineering at Ark Biotech, where I help build the infrastructure, applications, simulation tooling, and AI systems powering next-generation biomanufacturing."}],["$","p",null,{"children":"My work spans cloud infrastructure, developer platforms, simulation systems, machine learning applications, frontend architecture, backend services, and engineering leadership."}]]}]]}]}],["$","section",null,{"className":"section question-band","children":["$","div",null,{"className":"question","children":[["$","p",null,{"className":"eyebrow","children":"The question"}],["$","h2",null,{"children":"How do we make it dramatically easier for people to build useful things?"}],["$","p",null,{"children":"That question has led me through projects ranging from AI systems and developer platforms to restaurant software, biotechnology infrastructure, and autonomous agents."}]]}]}],["$","section",null,{"className":"section","children":["$","div",null,{"className":"content-grid","children":[["$","div",null,{"children":[["$","p",null,{"className":"eyebrow","children":"What I do"}],["$","h2",null,{"children":"Systems that scale from idea to business"}]]}],["$","div",null,{"children":[["$","p",null,{"className":"copy lead-copy","children":"I enjoy building systems that can scale from a single user to thousands, and from a proof of concept to a business. My preferred stack is Python, TypeScript, Kubernetes, FastAPI, React, PostgreSQL, cloud-native infrastructure, and AI-powered workflows."}],"$L4"]}]]}]}],"$L5","$L6","$L7","$L8"]}],null,"$L9"]}],{},null,false]},null,false],"$La",false]],"m":"$undefined","G":["$b",[]],"s":false,"S":true}
|
||||
c:I[4431,[],"OutletBoundary"]
|
||||
e:I[5278,[],"AsyncMetadataOutlet"]
|
||||
10:I[4431,[],"ViewportBoundary"]
|
||||
12:I[4431,[],"MetadataBoundary"]
|
||||
13:"$Sreact.suspense"
|
||||
4:["$","div",null,{"className":"pill-grid","children":[["$","span","Artificial Intelligence",{"children":"Artificial Intelligence"}],["$","span","Cloud Infrastructure",{"children":"Cloud Infrastructure"}],["$","span","Distributed Systems",{"children":"Distributed Systems"}],["$","span","Developer Platforms",{"children":"Developer Platforms"}],["$","span","Product Engineering",{"children":"Product Engineering"}],["$","span","Startup Operations",{"children":"Startup Operations"}],["$","span","Automation",{"children":"Automation"}],["$","span","Technical Leadership",{"children":"Technical Leadership"}]]}]
|
||||
5:["$","section",null,{"className":"section split-band","children":[["$","article",null,{"children":[["$","p",null,{"className":"eyebrow","children":"Philosophy"}],["$","h2",null,{"children":"Software should create leverage."}],["$","p",null,{"children":"The best technology removes complexity rather than adding it. Great systems are understandable, maintainable, and useful. Great companies solve real problems. Great engineers ship."}],["$","ul",null,{"className":"clean-list","children":[["$","li","Ownership over bureaucracy",{"children":"Ownership over bureaucracy"}],["$","li","Speed over perfection",{"children":"Speed over perfection"}],["$","li","Simplicity over complexity",{"children":"Simplicity over complexity"}],["$","li","Learning over ego",{"children":"Learning over ego"}],["$","li","Execution over presentations",{"children":"Execution over presentations"}]]}]]}],["$","article",null,{"children":[["$","p",null,{"className":"eyebrow","children":"Building"}],["$","h2",null,{"children":"A laptop, an idea, and enough persistence."}],["$","p",null,{"children":"Outside of my day job, I spend most of my time building. I have launched products in AI, SaaS, developer tooling, restaurant technology, and automation. Some succeeded, some failed, and all of them taught me something valuable."}],["$","p",null,{"children":"What keeps me motivated is the same thing that motivated me when I started writing software: the ability to create something from nothing."}]]}]]}]
|
||||
6:["$","section",null,{"className":"section","children":["$","div",null,{"className":"content-grid","children":[["$","div",null,{"children":[["$","p",null,{"className":"eyebrow","children":"Life"}],["$","h2",null,{"children":"Countryside of Sao Paulo, Brazil"}]]}],["$","div",null,{"className":"copy","children":["$","p",null,{"children":"When I am not building software, I am spending time with my family, exploring business ideas, studying technology, lifting weights, reading about startups, or working on the next project that probably should not exist but sounds too interesting not to build."}]}]]}]}]
|
||||
7:["$","section",null,{"className":"section interests","children":[["$","div",null,{"children":[["$","p",null,{"className":"eyebrow","children":"Current interests"}],["$","h2",null,{"children":"Problems worth paying attention to"}]]}],["$","div",null,{"className":"interest-grid","children":[["$","span","AI agents and autonomous systems",{"children":"AI agents and autonomous systems"}],["$","span","Cloud-native platforms",{"children":"Cloud-native platforms"}],["$","span","Scientific computing",{"children":"Scientific computing"}],["$","span","Biotechnology",{"children":"Biotechnology"}],["$","span","Startup strategy",{"children":"Startup strategy"}],["$","span","Developer experience",{"children":"Developer experience"}],["$","span","Infrastructure automation",{"children":"Infrastructure automation"}],["$","span","Human-computer collaboration",{"children":"Human-computer collaboration"}]]}]]}]
|
||||
8:["$","section",null,{"className":"section connect","children":[["$","p",null,{"className":"eyebrow","children":"Connect"}],["$","h2",null,{"children":"If you are building something ambitious, I would love to hear about it."}],["$","p",null,{"children":"I am always interested in talking with builders, founders, engineers, and people working on difficult problems."}]]}]
|
||||
9:["$","$Lc",null,{"children":["$Ld",["$","$Le",null,{"promise":"$@f"}]]}]
|
||||
a:["$","$1","h",{"children":[null,[["$","$L10",null,{"children":"$L11"}],null],["$","$L12",null,{"children":["$","div",null,{"hidden":true,"children":["$","$13",null,{"fallback":null,"children":"$L14"}]}]}]]}]
|
||||
11:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
||||
d:null
|
||||
f:{"metadata":[["$","title","0",{"children":"Robert Seares"}],["$","meta","1",{"name":"description","content":"Software engineer, engineering leader, founder, and product builder."}]],"error":null,"digest":"$undefined"}
|
||||
14:"$f:metadata"
|
||||
2
frontend/.next/server/app/page.js
Normal file
2
frontend/.next/server/app/page.js
Normal file
File diff suppressed because one or more lines are too long
1
frontend/.next/server/app/page.js.nft.json
Normal file
1
frontend/.next/server/app/page.js.nft.json
Normal file
@@ -0,0 +1 @@
|
||||
{"version":1,"files":["../../../../../../../package.json","../../../node_modules/next/dist/client/components/app-router-headers.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../node_modules/next/dist/lib/client-and-server-references.js","../../../node_modules/next/dist/lib/constants.js","../../../node_modules/next/dist/lib/interop-default.js","../../../node_modules/next/dist/lib/is-error.js","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../node_modules/next/dist/server/lib/lru-cache.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/dist/server/load-manifest.external.js","../../../node_modules/next/dist/server/response-cache/types.js","../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../node_modules/next/dist/shared/lib/segment.js","../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../node_modules/next/package.json","../../../package.json","../../package.json","../chunks/833.js","../webpack-runtime.js","page_client-reference-manifest.js"]}
|
||||
@@ -0,0 +1 @@
|
||||
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"622":{"*":{"id":"2146","name":"*","chunks":[],"async":false}},"1959":{"*":{"id":"1603","name":"*","chunks":[],"async":false}},"3886":{"*":{"id":"5170","name":"*","chunks":[],"async":false}},"4431":{"*":{"id":"2263","name":"*","chunks":[],"async":false}},"5278":{"*":{"id":"8922","name":"*","chunks":[],"async":false}},"7150":{"*":{"id":"4160","name":"*","chunks":[],"async":false}},"7989":{"*":{"id":"8495","name":"*","chunks":[],"async":false}},"8924":{"*":{"id":"9234","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"7526","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7150,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7150,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/client-page.js":{"id":1959,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":1959,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":7989,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":7989,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":3886,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3886,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":5278,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":5278,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":8924,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":8924,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":4431,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":4431,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":622,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":622,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/app/globals.css":{"id":1290,"name":"*","chunks":["177","static/chunks/app/layout-0ec9780b79cf85e4.js"],"async":false}},"entryCSSFiles":{"/Users/robert/MicroCash/agents/robertseares/frontend/":[],"/Users/robert/MicroCash/agents/robertseares/frontend/app/layout":[{"inlined":false,"path":"static/css/5d263d3abd9811a6.css"}],"/Users/robert/MicroCash/agents/robertseares/frontend/app/page":[]},"rscModuleMapping":{"622":{"*":{"id":"1384","name":"*","chunks":[],"async":false}},"1290":{"*":{"id":"2704","name":"*","chunks":[],"async":false}},"1959":{"*":{"id":"3597","name":"*","chunks":[],"async":false}},"3886":{"*":{"id":"9748","name":"*","chunks":[],"async":false}},"4431":{"*":{"id":"3041","name":"*","chunks":[],"async":false}},"5278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"7150":{"*":{"id":"1170","name":"*","chunks":[],"async":false}},"7989":{"*":{"id":"6893","name":"*","chunks":[],"async":false}},"8924":{"*":{"id":"9576","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
|
||||
6
frontend/.next/server/chunks/611.js
Normal file
6
frontend/.next/server/chunks/611.js
Normal file
File diff suppressed because one or more lines are too long
30
frontend/.next/server/chunks/833.js
Normal file
30
frontend/.next/server/chunks/833.js
Normal file
File diff suppressed because one or more lines are too long
4
frontend/.next/server/functions-config-manifest.json
Normal file
4
frontend/.next/server/functions-config-manifest.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"version": 1,
|
||||
"functions": {}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST="[]";
|
||||
1
frontend/.next/server/middleware-build-manifest.js
Normal file
1
frontend/.next/server/middleware-build-manifest.js
Normal file
@@ -0,0 +1 @@
|
||||
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-4a462cecab786e93.js","static/chunks/4bd1b696-c023c6e3521b1417.js","static/chunks/255-2aa030c9ba2867e3.js","static/chunks/main-app-d59f6883d44390ab.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-4a462cecab786e93.js","static/chunks/framework-2c534e0e662575a2.js","static/chunks/main-af3375a02f18db6d.js","static/chunks/pages/_app-7d307437aca18ad4.js"],"/_error":["static/chunks/webpack-4a462cecab786e93.js","static/chunks/framework-2c534e0e662575a2.js","static/chunks/main-af3375a02f18db6d.js","static/chunks/pages/_error-cb2a52f75f2162e2.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
|
||||
6
frontend/.next/server/middleware-manifest.json
Normal file
6
frontend/.next/server/middleware-manifest.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"version": 3,
|
||||
"middleware": {},
|
||||
"functions": {},
|
||||
"sortedMiddleware": []
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
self.__REACT_LOADABLE_MANIFEST="{}";
|
||||
1
frontend/.next/server/next-font-manifest.js
Normal file
1
frontend/.next/server/next-font-manifest.js
Normal file
@@ -0,0 +1 @@
|
||||
self.__NEXT_FONT_MANIFEST='{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}';
|
||||
1
frontend/.next/server/next-font-manifest.json
Normal file
1
frontend/.next/server/next-font-manifest.json
Normal file
@@ -0,0 +1 @@
|
||||
{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}
|
||||
6
frontend/.next/server/pages-manifest.json
Normal file
6
frontend/.next/server/pages-manifest.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"/_error": "pages/_error.js",
|
||||
"/_app": "pages/_app.js",
|
||||
"/_document": "pages/_document.js",
|
||||
"/404": "pages/404.html"
|
||||
}
|
||||
1
frontend/.next/server/pages/404.html
Normal file
1
frontend/.next/server/pages/404.html
Normal file
File diff suppressed because one or more lines are too long
1
frontend/.next/server/pages/500.html
Normal file
1
frontend/.next/server/pages/500.html
Normal file
@@ -0,0 +1 @@
|
||||
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-4a462cecab786e93.js" defer=""></script><script src="/_next/static/chunks/framework-2c534e0e662575a2.js" defer=""></script><script src="/_next/static/chunks/main-af3375a02f18db6d.js" defer=""></script><script src="/_next/static/chunks/pages/_app-7d307437aca18ad4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-cb2a52f75f2162e2.js" defer=""></script><script src="/_next/static/Wk-jrwnV3DPU6_gWZ0ZM0/_buildManifest.js" defer=""></script><script src="/_next/static/Wk-jrwnV3DPU6_gWZ0ZM0/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"Wk-jrwnV3DPU6_gWZ0ZM0","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
||||
1
frontend/.next/server/pages/_app.js
Normal file
1
frontend/.next/server/pages/_app.js
Normal file
@@ -0,0 +1 @@
|
||||
"use strict";(()=>{var a={};a.id=636,a.ids=[636],a.modules={625:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"default",{enumerable:!0,get:function(){return i}});let d=c(7020),e=c(8732),f=d._(c(2015)),g=c(6915);async function h(a){let{Component:b,ctx:c}=a;return{pageProps:await (0,g.loadGetInitialProps)(b,c)}}class i extends f.default.Component{render(){let{Component:a,pageProps:b}=this.props;return(0,e.jsx)(a,{...b})}}i.origGetInitialProps=h,i.getInitialProps=h,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},2015:a=>{a.exports=require("react")},6915:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{DecodeError:function(){return o},MiddlewareNotFoundError:function(){return s},MissingStaticPage:function(){return r},NormalizeError:function(){return p},PageNotFoundError:function(){return q},SP:function(){return m},ST:function(){return n},WEB_VITALS:function(){return c},execOnce:function(){return d},getDisplayName:function(){return i},getLocationOrigin:function(){return g},getURL:function(){return h},isAbsoluteUrl:function(){return f},isResSent:function(){return j},loadGetInitialProps:function(){return l},normalizeRepeatedSlashes:function(){return k},stringifyError:function(){return t}});let c=["CLS","FCP","FID","INP","LCP","TTFB"];function d(a){let b,c=!1;return function(){for(var d=arguments.length,e=Array(d),f=0;f<d;f++)e[f]=arguments[f];return c||(c=!0,b=a(...e)),b}}let e=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,f=a=>e.test(a);function g(){let{protocol:a,hostname:b,port:c}=window.location;return a+"//"+b+(c?":"+c:"")}function h(){let{href:a}=window.location,b=g();return a.substring(b.length)}function i(a){return"string"==typeof a?a:a.displayName||a.name||"Unknown"}function j(a){return a.finished||a.headersSent}function k(a){let b=a.split("?");return b[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(b[1]?"?"+b.slice(1).join("?"):"")}async function l(a,b){let c=b.res||b.ctx&&b.ctx.res;if(!a.getInitialProps)return b.ctx&&b.Component?{pageProps:await l(b.Component,b.ctx)}:{};let d=await a.getInitialProps(b);if(c&&j(c))return d;if(!d)throw Object.defineProperty(Error('"'+i(a)+'.getInitialProps()" should resolve to an object. But found "'+d+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return d}let m="undefined"!=typeof performance,n=m&&["mark","measure","getEntriesByName"].every(a=>"function"==typeof performance[a]);class o extends Error{}class p extends Error{}class q extends Error{constructor(a){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+a}}class r extends Error{constructor(a,b){super(),this.message="Failed to load static file for page: "+a+" "+b}}class s extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function t(a){return JSON.stringify({message:a.message,stack:a.stack})}},7020:(a,b)=>{b._=function(a){return a&&a.__esModule?a:{default:a}}},8732:a=>{a.exports=require("react/jsx-runtime")}};var b=require("../webpack-runtime.js");b.C(a);var c=b(b.s=625);module.exports=c})();
|
||||
1
frontend/.next/server/pages/_app.js.nft.json
Normal file
1
frontend/.next/server/pages/_app.js.nft.json
Normal file
@@ -0,0 +1 @@
|
||||
{"version":1,"files":["../../../../../../../package.json","../../../node_modules/next/dist/pages/_app.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../package.json","../../package.json","../webpack-runtime.js"]}
|
||||
1
frontend/.next/server/pages/_document.js
Normal file
1
frontend/.next/server/pages/_document.js
Normal file
@@ -0,0 +1 @@
|
||||
"use strict";(()=>{var a={};a.id=220,a.ids=[220],a.modules={361:a=>{a.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},2015:a=>{a.exports=require("react")},8732:a=>{a.exports=require("react/jsx-runtime")},9902:a=>{a.exports=require("path")}};var b=require("../webpack-runtime.js");b.C(a);var c=b.X(0,[611],()=>b(b.s=5611));module.exports=c})();
|
||||
1
frontend/.next/server/pages/_document.js.nft.json
Normal file
1
frontend/.next/server/pages/_document.js.nft.json
Normal file
@@ -0,0 +1 @@
|
||||
{"version":1,"files":["../../../../../../../package.json","../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/client/components/app-router-headers.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/lib/client-and-server-references.js","../../../node_modules/next/dist/lib/constants.js","../../../node_modules/next/dist/lib/interop-default.js","../../../node_modules/next/dist/lib/is-error.js","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/pages/_document.js","../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../node_modules/next/dist/server/lib/lru-cache.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/dist/server/load-manifest.external.js","../../../node_modules/next/dist/server/response-cache/types.js","../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.js","../../../node_modules/react-dom/cjs/react-dom-server.edge.development.js","../../../node_modules/react-dom/cjs/react-dom-server.edge.production.js","../../../node_modules/react-dom/cjs/react-dom.development.js","../../../node_modules/react-dom/cjs/react-dom.production.js","../../../node_modules/react-dom/index.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react-dom/server.edge.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../../package.json","../../package.json","../chunks/611.js","../webpack-runtime.js"]}
|
||||
19
frontend/.next/server/pages/_error.js
Normal file
19
frontend/.next/server/pages/_error.js
Normal file
File diff suppressed because one or more lines are too long
1
frontend/.next/server/pages/_error.js.nft.json
Normal file
1
frontend/.next/server/pages/_error.js.nft.json
Normal file
@@ -0,0 +1 @@
|
||||
{"version":1,"files":["../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/client/components/app-router-headers.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/lib/client-and-server-references.js","../../../node_modules/next/dist/lib/constants.js","../../../node_modules/next/dist/lib/interop-default.js","../../../node_modules/next/dist/lib/is-error.js","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../node_modules/next/dist/server/lib/lru-cache.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/dist/server/load-manifest.external.js","../../../node_modules/next/dist/server/response-cache/types.js","../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.js","../../../node_modules/react-dom/cjs/react-dom-server.edge.development.js","../../../node_modules/react-dom/cjs/react-dom-server.edge.production.js","../../../node_modules/react-dom/cjs/react-dom.development.js","../../../node_modules/react-dom/cjs/react-dom.production.js","../../../node_modules/react-dom/index.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react-dom/server.edge.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../package.json","../chunks/611.js","../webpack-runtime.js"]}
|
||||
1
frontend/.next/server/server-reference-manifest.js
Normal file
1
frontend/.next/server/server-reference-manifest.js
Normal file
@@ -0,0 +1 @@
|
||||
self.__RSC_SERVER_MANIFEST="{\"node\":{},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"
|
||||
1
frontend/.next/server/server-reference-manifest.json
Normal file
1
frontend/.next/server/server-reference-manifest.json
Normal file
@@ -0,0 +1 @@
|
||||
{"node":{},"edge":{},"encryptionKey":"2zMh+Q+skbyWQHWXtVoQqoOOEWrhrFwRdxSthkoR/h8="}
|
||||
1
frontend/.next/server/webpack-runtime.js
Normal file
1
frontend/.next/server/webpack-runtime.js
Normal file
@@ -0,0 +1 @@
|
||||
(()=>{"use strict";var a={},b={};function c(d){var e=b[d];if(void 0!==e)return e.exports;var f=b[d]={exports:{}},g=!0;try{a[d](f,f.exports,c),g=!1}finally{g&&delete b[d]}return f.exports}c.m=a,c.n=a=>{var b=a&&a.__esModule?()=>a.default:()=>a;return c.d(b,{a:b}),b},(()=>{var a,b=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__;c.t=function(d,e){if(1&e&&(d=this(d)),8&e||"object"==typeof d&&d&&(4&e&&d.__esModule||16&e&&"function"==typeof d.then))return d;var f=Object.create(null);c.r(f);var g={};a=a||[null,b({}),b([]),b(b)];for(var h=2&e&&d;"object"==typeof h&&!~a.indexOf(h);h=b(h))Object.getOwnPropertyNames(h).forEach(a=>g[a]=()=>d[a]);return g.default=()=>d,c.d(f,g),f}})(),c.d=(a,b)=>{for(var d in b)c.o(b,d)&&!c.o(a,d)&&Object.defineProperty(a,d,{enumerable:!0,get:b[d]})},c.f={},c.e=a=>Promise.all(Object.keys(c.f).reduce((b,d)=>(c.f[d](a,b),b),[])),c.u=a=>""+a+".js",c.o=(a,b)=>Object.prototype.hasOwnProperty.call(a,b),c.r=a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},c.X=(a,b,d)=>{var e=b;d||(b=a,d=()=>c(c.s=e)),b.map(c.e,c);var f=d();return void 0===f?a:f},(()=>{var a={311:1},b=b=>{var d=b.modules,e=b.ids,f=b.runtime;for(var g in d)c.o(d,g)&&(c.m[g]=d[g]);f&&f(c);for(var h=0;h<e.length;h++)a[e[h]]=1};c.f.require=(d,e)=>{a[d]||(311!=d?b(require("./chunks/"+c.u(d))):a[d]=1)},module.exports=c,c.C=b})()})();
|
||||
@@ -0,0 +1 @@
|
||||
self.__BUILD_MANIFEST=function(e,r,t){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:2,errorRate:1e-4,numBits:39,numHashes:14,bitArray:[0,1,1,0,r,e,e,r,r,e,e,r,e,e,e,r,r,e,e,e,e,r,e,r,r,r,r,e,e,e,r,e,r,e,r,e,e,e,r]},__routerFilterDynamic:{numItems:r,errorRate:1e-4,numBits:r,numHashes:null,bitArray:[]},"/_error":["static/chunks/pages/_error-cb2a52f75f2162e2.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
||||
@@ -0,0 +1 @@
|
||||
self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
|
||||
1
frontend/.next/static/chunks/255-2aa030c9ba2867e3.js
Normal file
1
frontend/.next/static/chunks/255-2aa030c9ba2867e3.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{4585:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"styles",{enumerable:!0,get:function(){return l}});let l={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6458:(e,t,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return l(9520)}])},8886:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}});let r=l(5155),n=l(4585);function o(e){let{status:t,message:l}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("title",{children:t+": "+l}),(0,r.jsx)("div",{style:n.styles.error,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,r.jsx)("h1",{className:"next-error-h1",style:n.styles.h1,children:t}),(0,r.jsx)("div",{style:n.styles.desc,children:(0,r.jsx)("h2",{style:n.styles.h2,children:l})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9520:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let r=l(5155),n=l(8886),o=function(){return(0,r.jsx)("html",{children:(0,r.jsx)("body",{children:(0,r.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})})})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{e.O(0,[441,255,358],()=>e(e.s=6458)),_N_E=e.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{1290:()=>{},4784:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,1290,23))}},e=>{e.O(0,[741,441,255,358],()=>e(e.s=4784)),_N_E=e.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{4441:()=>{}},_=>{_.O(0,[441,255,358],()=>_(_.s=4441)),_N_E=_.O()}]);
|
||||
File diff suppressed because one or more lines are too long
1
frontend/.next/static/chunks/main-af3375a02f18db6d.js
Normal file
1
frontend/.next/static/chunks/main-af3375a02f18db6d.js
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[358],{6338:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,7150,23)),Promise.resolve().then(n.t.bind(n,1959,23)),Promise.resolve().then(n.t.bind(n,7989,23)),Promise.resolve().then(n.t.bind(n,3886,23)),Promise.resolve().then(n.t.bind(n,9766,23)),Promise.resolve().then(n.t.bind(n,5278,23)),Promise.resolve().then(n.t.bind(n,8924,23)),Promise.resolve().then(n.t.bind(n,4431,23)),Promise.resolve().then(n.bind(n,622))},9393:()=>{}},e=>{var s=s=>e(e.s=s);e.O(0,[441,255],()=>(s(1666),s(6338))),_N_E=e.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[636],{326:(_,n,p)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return p(5139)}])}},_=>{var n=n=>_(_.s=n);_.O(0,[593,792],()=>(n(326),n(6763))),_N_E=_.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[731],{2164:(_,n,e)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return e(1646)}])}},_=>{_.O(0,[636,593,792],()=>_(_.s=2164)),_N_E=_.O()}]);
|
||||
File diff suppressed because one or more lines are too long
1
frontend/.next/static/chunks/webpack-4a462cecab786e93.js
Normal file
1
frontend/.next/static/chunks/webpack-4a462cecab786e93.js
Normal file
@@ -0,0 +1 @@
|
||||
(()=>{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}},a=!0;try{e[o](i,i.exports,r),a=!1}finally{a&&delete t[o]}return i.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,i)=>{if(o){i=i||0;for(var a=e.length;a>0&&e[a-1][2]>i;a--)e[a]=e[a-1];e[a]=[o,n,i];return}for(var u=1/0,a=0;a<e.length;a++){for(var[o,n,i]=e[a],l=!0,c=0;c<o.length;c++)(!1&i||u>=i)&&Object.keys(r.O).every(e=>r.O[e](o[c]))?o.splice(c--,1):(l=!1,i<u&&(u=i));if(l){e.splice(a--,1);var f=n();void 0!==f&&(t=f)}}return t}})(),(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var u=2&n&&o;"object"==typeof u&&!~e.indexOf(u);u=t(u))Object.getOwnPropertyNames(u).forEach(e=>a[e]=()=>o[e]);return a.default=()=>o,r.d(i,a),i}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>{},r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,i,a)=>{if(e[o])return void e[o].push(n);if(void 0!==i)for(var u,l,c=document.getElementsByTagName("script"),f=0;f<c.length;f++){var s=c[f];if(s.getAttribute("src")==o||s.getAttribute("data-webpack")==t+i){u=s;break}}u||(l=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,r.nc&&u.setAttribute("nonce",r.nc),u.setAttribute("data-webpack",t+i),u.src=r.tu(o)),e[o]=[n];var d=(t,r)=>{u.onerror=u.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],u.parentNode&&u.parentNode.removeChild(u),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=d.bind(null,u.onerror),u.onload=d.bind(null,u.onload),l&&document.head.appendChild(u)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/_next/",(()=>{var e={68:0,741:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^(68|741)$/.test(t))e[t]=0;else{var i=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=i);var a=r.p+r.u(t),u=Error();r.l(a,o=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var i=o&&("load"===o.type?"missing":o.type),a=o&&o.target&&o.target.src;u.message="Loading chunk "+t+" failed.\n("+i+": "+a+")",u.name="ChunkLoadError",u.type=i,u.request=a,n[1](u)}},"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,i,[a,u,l]=o,c=0;if(a.some(t=>0!==e[t])){for(n in u)r.o(u,n)&&(r.m[n]=u[n]);if(l)var f=l(r)}for(t&&t(o);c<a.length;c++)i=a[c],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return r.O(f)},o=self.webpackChunk_N_E=self.webpackChunk_N_E||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})()})();
|
||||
1
frontend/.next/static/css/5d263d3abd9811a6.css
Normal file
1
frontend/.next/static/css/5d263d3abd9811a6.css
Normal file
File diff suppressed because one or more lines are too long
2
frontend/.next/trace
Normal file
2
frontend/.next/trace
Normal file
File diff suppressed because one or more lines are too long
84
frontend/.next/types/app/layout.ts
Normal file
84
frontend/.next/types/app/layout.ts
Normal file
@@ -0,0 +1,84 @@
|
||||
// File: /Users/robert/MicroCash/agents/robertseares/frontend/app/layout.jsx
|
||||
import * as entry from '../../../app/layout.js'
|
||||
import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js'
|
||||
|
||||
type TEntry = typeof import('../../../app/layout.js')
|
||||
|
||||
type SegmentParams<T extends Object = any> = T extends Record<string, any>
|
||||
? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never }
|
||||
: T
|
||||
|
||||
// Check that the entry is a valid entry
|
||||
checkFields<Diff<{
|
||||
default: Function
|
||||
config?: {}
|
||||
generateStaticParams?: Function
|
||||
revalidate?: RevalidateRange<TEntry> | false
|
||||
dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'
|
||||
dynamicParams?: boolean
|
||||
fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache'
|
||||
preferredRegion?: 'auto' | 'global' | 'home' | string | string[]
|
||||
runtime?: 'nodejs' | 'experimental-edge' | 'edge'
|
||||
maxDuration?: number
|
||||
|
||||
metadata?: any
|
||||
generateMetadata?: Function
|
||||
viewport?: any
|
||||
generateViewport?: Function
|
||||
experimental_ppr?: boolean
|
||||
|
||||
}, TEntry, ''>>()
|
||||
|
||||
|
||||
// Check the prop type of the entry function
|
||||
checkFields<Diff<LayoutProps, FirstArg<TEntry['default']>, 'default'>>()
|
||||
|
||||
// Check the arguments and return type of the generateMetadata function
|
||||
if ('generateMetadata' in entry) {
|
||||
checkFields<Diff<LayoutProps, FirstArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
||||
checkFields<Diff<ResolvingMetadata, SecondArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
||||
}
|
||||
|
||||
// Check the arguments and return type of the generateViewport function
|
||||
if ('generateViewport' in entry) {
|
||||
checkFields<Diff<LayoutProps, FirstArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()
|
||||
checkFields<Diff<ResolvingViewport, SecondArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()
|
||||
}
|
||||
|
||||
// Check the arguments and return type of the generateStaticParams function
|
||||
if ('generateStaticParams' in entry) {
|
||||
checkFields<Diff<{ params: SegmentParams }, FirstArg<MaybeField<TEntry, 'generateStaticParams'>>, 'generateStaticParams'>>()
|
||||
checkFields<Diff<{ __tag__: 'generateStaticParams', __return_type__: any[] | Promise<any[]> }, { __tag__: 'generateStaticParams', __return_type__: ReturnType<MaybeField<TEntry, 'generateStaticParams'>> }>>()
|
||||
}
|
||||
|
||||
export interface PageProps {
|
||||
params?: Promise<SegmentParams>
|
||||
searchParams?: Promise<any>
|
||||
}
|
||||
export interface LayoutProps {
|
||||
children?: React.ReactNode
|
||||
|
||||
params?: Promise<SegmentParams>
|
||||
}
|
||||
|
||||
// =============
|
||||
// Utility types
|
||||
type RevalidateRange<T> = T extends { revalidate: any } ? NonNegative<T['revalidate']> : never
|
||||
|
||||
// If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit<T, keyof Base>.
|
||||
type OmitWithTag<T, K extends keyof any, _M> = Omit<T, K>
|
||||
type Diff<Base, T extends Base, Message extends string = ''> = 0 extends (1 & T) ? {} : OmitWithTag<T, keyof Base, Message>
|
||||
|
||||
type FirstArg<T extends Function> = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never
|
||||
type SecondArg<T extends Function> = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never
|
||||
type MaybeField<T, K extends string> = T extends { [k in K]: infer G } ? G extends Function ? G : never : never
|
||||
|
||||
|
||||
|
||||
function checkFields<_ extends { [k in keyof any]: never }>() {}
|
||||
|
||||
// https://github.com/sindresorhus/type-fest
|
||||
type Numeric = number | bigint
|
||||
type Zero = 0 | 0n
|
||||
type Negative<T extends Numeric> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never
|
||||
type NonNegative<T extends Numeric> = T extends Zero ? T : Negative<T> extends never ? T : '__invalid_negative_number__'
|
||||
84
frontend/.next/types/app/page.ts
Normal file
84
frontend/.next/types/app/page.ts
Normal file
@@ -0,0 +1,84 @@
|
||||
// File: /Users/robert/MicroCash/agents/robertseares/frontend/app/page.jsx
|
||||
import * as entry from '../../../app/page.js'
|
||||
import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js'
|
||||
|
||||
type TEntry = typeof import('../../../app/page.js')
|
||||
|
||||
type SegmentParams<T extends Object = any> = T extends Record<string, any>
|
||||
? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never }
|
||||
: T
|
||||
|
||||
// Check that the entry is a valid entry
|
||||
checkFields<Diff<{
|
||||
default: Function
|
||||
config?: {}
|
||||
generateStaticParams?: Function
|
||||
revalidate?: RevalidateRange<TEntry> | false
|
||||
dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'
|
||||
dynamicParams?: boolean
|
||||
fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache'
|
||||
preferredRegion?: 'auto' | 'global' | 'home' | string | string[]
|
||||
runtime?: 'nodejs' | 'experimental-edge' | 'edge'
|
||||
maxDuration?: number
|
||||
|
||||
metadata?: any
|
||||
generateMetadata?: Function
|
||||
viewport?: any
|
||||
generateViewport?: Function
|
||||
experimental_ppr?: boolean
|
||||
|
||||
}, TEntry, ''>>()
|
||||
|
||||
|
||||
// Check the prop type of the entry function
|
||||
checkFields<Diff<PageProps, FirstArg<TEntry['default']>, 'default'>>()
|
||||
|
||||
// Check the arguments and return type of the generateMetadata function
|
||||
if ('generateMetadata' in entry) {
|
||||
checkFields<Diff<PageProps, FirstArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
||||
checkFields<Diff<ResolvingMetadata, SecondArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
||||
}
|
||||
|
||||
// Check the arguments and return type of the generateViewport function
|
||||
if ('generateViewport' in entry) {
|
||||
checkFields<Diff<PageProps, FirstArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()
|
||||
checkFields<Diff<ResolvingViewport, SecondArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()
|
||||
}
|
||||
|
||||
// Check the arguments and return type of the generateStaticParams function
|
||||
if ('generateStaticParams' in entry) {
|
||||
checkFields<Diff<{ params: SegmentParams }, FirstArg<MaybeField<TEntry, 'generateStaticParams'>>, 'generateStaticParams'>>()
|
||||
checkFields<Diff<{ __tag__: 'generateStaticParams', __return_type__: any[] | Promise<any[]> }, { __tag__: 'generateStaticParams', __return_type__: ReturnType<MaybeField<TEntry, 'generateStaticParams'>> }>>()
|
||||
}
|
||||
|
||||
export interface PageProps {
|
||||
params?: Promise<SegmentParams>
|
||||
searchParams?: Promise<any>
|
||||
}
|
||||
export interface LayoutProps {
|
||||
children?: React.ReactNode
|
||||
|
||||
params?: Promise<SegmentParams>
|
||||
}
|
||||
|
||||
// =============
|
||||
// Utility types
|
||||
type RevalidateRange<T> = T extends { revalidate: any } ? NonNegative<T['revalidate']> : never
|
||||
|
||||
// If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit<T, keyof Base>.
|
||||
type OmitWithTag<T, K extends keyof any, _M> = Omit<T, K>
|
||||
type Diff<Base, T extends Base, Message extends string = ''> = 0 extends (1 & T) ? {} : OmitWithTag<T, keyof Base, Message>
|
||||
|
||||
type FirstArg<T extends Function> = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never
|
||||
type SecondArg<T extends Function> = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never
|
||||
type MaybeField<T, K extends string> = T extends { [k in K]: infer G } ? G extends Function ? G : never : never
|
||||
|
||||
|
||||
|
||||
function checkFields<_ extends { [k in keyof any]: never }>() {}
|
||||
|
||||
// https://github.com/sindresorhus/type-fest
|
||||
type Numeric = number | bigint
|
||||
type Zero = 0 | 0n
|
||||
type Negative<T extends Numeric> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never
|
||||
type NonNegative<T extends Numeric> = T extends Zero ? T : Negative<T> extends never ? T : '__invalid_negative_number__'
|
||||
141
frontend/.next/types/cache-life.d.ts
vendored
Normal file
141
frontend/.next/types/cache-life.d.ts
vendored
Normal file
@@ -0,0 +1,141 @@
|
||||
// Type definitions for Next.js cacheLife configs
|
||||
|
||||
declare module 'next/cache' {
|
||||
export { unstable_cache } from 'next/dist/server/web/spec-extension/unstable-cache'
|
||||
export {
|
||||
revalidateTag,
|
||||
revalidatePath,
|
||||
unstable_expireTag,
|
||||
unstable_expirePath,
|
||||
} from 'next/dist/server/web/spec-extension/revalidate'
|
||||
export { unstable_noStore } from 'next/dist/server/web/spec-extension/unstable-no-store'
|
||||
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"default"` profile.
|
||||
* ```
|
||||
* stale: 300 seconds (5 minutes)
|
||||
* revalidate: 900 seconds (15 minutes)
|
||||
* expire: never
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 5 minutes before checking with the server.
|
||||
* If the server receives a new request after 15 minutes, start revalidating new values in the background.
|
||||
* It lives for the maximum age of the server cache. If this entry has no traffic for a while, it may serve an old value the next request.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "default"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"seconds"` profile.
|
||||
* ```
|
||||
* stale: 30 seconds
|
||||
* revalidate: 1 seconds
|
||||
* expire: 60 seconds (1 minute)
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 30 seconds before checking with the server.
|
||||
* If the server receives a new request after 1 seconds, start revalidating new values in the background.
|
||||
* If this entry has no traffic for 1 minute it will expire. The next request will recompute it.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "seconds"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"minutes"` profile.
|
||||
* ```
|
||||
* stale: 300 seconds (5 minutes)
|
||||
* revalidate: 60 seconds (1 minute)
|
||||
* expire: 3600 seconds (1 hour)
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 5 minutes before checking with the server.
|
||||
* If the server receives a new request after 1 minute, start revalidating new values in the background.
|
||||
* If this entry has no traffic for 1 hour it will expire. The next request will recompute it.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "minutes"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"hours"` profile.
|
||||
* ```
|
||||
* stale: 300 seconds (5 minutes)
|
||||
* revalidate: 3600 seconds (1 hour)
|
||||
* expire: 86400 seconds (1 day)
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 5 minutes before checking with the server.
|
||||
* If the server receives a new request after 1 hour, start revalidating new values in the background.
|
||||
* If this entry has no traffic for 1 day it will expire. The next request will recompute it.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "hours"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"days"` profile.
|
||||
* ```
|
||||
* stale: 300 seconds (5 minutes)
|
||||
* revalidate: 86400 seconds (1 day)
|
||||
* expire: 604800 seconds (1 week)
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 5 minutes before checking with the server.
|
||||
* If the server receives a new request after 1 day, start revalidating new values in the background.
|
||||
* If this entry has no traffic for 1 week it will expire. The next request will recompute it.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "days"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"weeks"` profile.
|
||||
* ```
|
||||
* stale: 300 seconds (5 minutes)
|
||||
* revalidate: 604800 seconds (1 week)
|
||||
* expire: 2592000 seconds (30 days)
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 5 minutes before checking with the server.
|
||||
* If the server receives a new request after 1 week, start revalidating new values in the background.
|
||||
* If this entry has no traffic for 30 days it will expire. The next request will recompute it.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "weeks"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"max"` profile.
|
||||
* ```
|
||||
* stale: 300 seconds (5 minutes)
|
||||
* revalidate: 2592000 seconds (30 days)
|
||||
* expire: never
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 5 minutes before checking with the server.
|
||||
* If the server receives a new request after 30 days, start revalidating new values in the background.
|
||||
* It lives for the maximum age of the server cache. If this entry has no traffic for a while, it may serve an old value the next request.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "max"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` using a custom timespan.
|
||||
* ```
|
||||
* stale: ... // seconds
|
||||
* revalidate: ... // seconds
|
||||
* expire: ... // seconds
|
||||
* ```
|
||||
*
|
||||
* This is similar to Cache-Control: max-age=`stale`,s-max-age=`revalidate`,stale-while-revalidate=`expire-revalidate`
|
||||
*
|
||||
* If a value is left out, the lowest of other cacheLife() calls or the default, is used instead.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: {
|
||||
/**
|
||||
* This cache may be stale on clients for ... seconds before checking with the server.
|
||||
*/
|
||||
stale?: number,
|
||||
/**
|
||||
* If the server receives a new request after ... seconds, start revalidating new values in the background.
|
||||
*/
|
||||
revalidate?: number,
|
||||
/**
|
||||
* If this entry has no traffic for ... seconds it will expire. The next request will recompute it.
|
||||
*/
|
||||
expire?: number
|
||||
}): void
|
||||
|
||||
|
||||
export { cacheTag as unstable_cacheTag } from 'next/dist/server/use-cache/cache-tag'
|
||||
}
|
||||
1
frontend/.next/types/package.json
Normal file
1
frontend/.next/types/package.json
Normal file
@@ -0,0 +1 @@
|
||||
{"type": "module"}
|
||||
57
frontend/.next/types/routes.d.ts
vendored
Normal file
57
frontend/.next/types/routes.d.ts
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
// This file is generated automatically by Next.js
|
||||
// Do not edit this file manually
|
||||
|
||||
type AppRoutes = never
|
||||
type PageRoutes = never
|
||||
type LayoutRoutes = "/"
|
||||
type RedirectRoutes = never
|
||||
type RewriteRoutes = never
|
||||
type Routes = AppRoutes | PageRoutes | LayoutRoutes | RedirectRoutes | RewriteRoutes
|
||||
|
||||
|
||||
interface ParamMap {
|
||||
"/": {}
|
||||
}
|
||||
|
||||
|
||||
export type ParamsOf<Route extends Routes> = ParamMap[Route]
|
||||
|
||||
interface LayoutSlotMap {
|
||||
"/": never
|
||||
}
|
||||
|
||||
|
||||
export type { AppRoutes, PageRoutes, LayoutRoutes, RedirectRoutes, RewriteRoutes, ParamMap }
|
||||
|
||||
declare global {
|
||||
/**
|
||||
* Props for Next.js App Router page components
|
||||
* @example
|
||||
* ```tsx
|
||||
* export default function Page(props: PageProps<'/blog/[slug]'>) {
|
||||
* const { slug } = await props.params
|
||||
* return <div>Blog post: {slug}</div>
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
interface PageProps<AppRoute extends AppRoutes> {
|
||||
params: Promise<ParamMap[AppRoute]>
|
||||
searchParams: Promise<Record<string, string | string[] | undefined>>
|
||||
}
|
||||
|
||||
/**
|
||||
* Props for Next.js App Router layout components
|
||||
* @example
|
||||
* ```tsx
|
||||
* export default function Layout(props: LayoutProps<'/dashboard'>) {
|
||||
* return <div>{props.children}</div>
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
type LayoutProps<LayoutRoute extends LayoutRoutes> = {
|
||||
params: Promise<ParamMap[LayoutRoute]>
|
||||
children: React.ReactNode
|
||||
} & {
|
||||
[K in LayoutSlotMap[LayoutRoute]]: React.ReactNode
|
||||
}
|
||||
}
|
||||
16
frontend/.next/types/validator.ts
Normal file
16
frontend/.next/types/validator.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
// This file is generated automatically by Next.js
|
||||
// Do not edit this file manually
|
||||
// This file validates that all pages and layouts export the correct types
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
282
frontend/app/globals.css
Normal file
282
frontend/app/globals.css
Normal file
@@ -0,0 +1,282 @@
|
||||
@import "tailwindcss";
|
||||
|
||||
:root {
|
||||
color-scheme: light;
|
||||
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||
background: #f4f1ec;
|
||||
color: #191816;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
min-height: 100vh;
|
||||
background:
|
||||
linear-gradient(90deg, rgba(25, 24, 22, 0.05) 1px, transparent 1px),
|
||||
linear-gradient(180deg, rgba(25, 24, 22, 0.05) 1px, transparent 1px),
|
||||
#f4f1ec;
|
||||
background-size: 44px 44px;
|
||||
}
|
||||
|
||||
main {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
color: #4d4840;
|
||||
font-size: 18px;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.hero {
|
||||
min-height: 92vh;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
padding: 56px 28px;
|
||||
background:
|
||||
linear-gradient(135deg, rgba(22, 82, 73, 0.14), transparent 48%),
|
||||
linear-gradient(180deg, rgba(244, 241, 236, 0.52), #f4f1ec 84%),
|
||||
url("https://images.unsplash.com/photo-1497366754035-f200968a6e72?auto=format&fit=crop&w=2200&q=85");
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.hero-inner {
|
||||
width: min(1120px, 100%);
|
||||
margin: 0 auto;
|
||||
padding-top: 18vh;
|
||||
}
|
||||
|
||||
.eyebrow {
|
||||
margin-bottom: 14px;
|
||||
color: #0f6c5b;
|
||||
font-size: 12px;
|
||||
font-weight: 800;
|
||||
letter-spacing: 0;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
h1 {
|
||||
max-width: 980px;
|
||||
margin-bottom: 24px;
|
||||
color: #171512;
|
||||
font-size: clamp(64px, 11vw, 148px);
|
||||
line-height: 0.88;
|
||||
letter-spacing: 0;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-bottom: 18px;
|
||||
color: #1c1a17;
|
||||
font-size: clamp(34px, 5vw, 68px);
|
||||
line-height: 0.98;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.lede {
|
||||
max-width: 760px;
|
||||
margin-bottom: 18px;
|
||||
color: #1f352f;
|
||||
font-size: clamp(28px, 4vw, 48px);
|
||||
line-height: 1.08;
|
||||
font-weight: 750;
|
||||
}
|
||||
|
||||
.intro {
|
||||
max-width: 820px;
|
||||
margin-bottom: 0;
|
||||
color: #27231e;
|
||||
font-size: 21px;
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.section {
|
||||
padding: 96px 28px;
|
||||
}
|
||||
|
||||
.content-grid {
|
||||
width: min(1120px, 100%);
|
||||
margin: 0 auto;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(240px, 0.8fr) minmax(0, 1.2fr);
|
||||
gap: 56px;
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
.copy p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.lead-copy {
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
|
||||
.question-band {
|
||||
background: #17231f;
|
||||
color: #f9f6ef;
|
||||
}
|
||||
|
||||
.question {
|
||||
width: min(980px, 100%);
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.question .eyebrow {
|
||||
color: #71d7b8;
|
||||
}
|
||||
|
||||
.question h2 {
|
||||
color: #fffaf2;
|
||||
}
|
||||
|
||||
.question p {
|
||||
max-width: 760px;
|
||||
margin-bottom: 0;
|
||||
color: #d9e2dc;
|
||||
}
|
||||
|
||||
.pill-grid,
|
||||
.interest-grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.pill-grid span,
|
||||
.interest-grid span {
|
||||
border: 1px solid rgba(25, 24, 22, 0.18);
|
||||
border-radius: 8px;
|
||||
background: rgba(255, 255, 255, 0.56);
|
||||
padding: 11px 13px;
|
||||
color: #25221d;
|
||||
font-size: 15px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.split-band {
|
||||
width: min(1120px, calc(100% - 56px));
|
||||
margin: 0 auto;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 1px;
|
||||
background: rgba(25, 24, 22, 0.18);
|
||||
}
|
||||
|
||||
.split-band article {
|
||||
min-height: 520px;
|
||||
padding: 42px;
|
||||
background: #fffdf8;
|
||||
}
|
||||
|
||||
.split-band article:first-child {
|
||||
background: #e7eee8;
|
||||
}
|
||||
|
||||
.split-band h2 {
|
||||
font-size: clamp(32px, 4vw, 54px);
|
||||
}
|
||||
|
||||
.clean-list {
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
margin: 28px 0 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.clean-list li {
|
||||
border-top: 1px solid rgba(25, 24, 22, 0.18);
|
||||
padding-top: 12px;
|
||||
color: #25221d;
|
||||
font-size: 17px;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.interests {
|
||||
width: min(1120px, 100%);
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.interests h2 {
|
||||
max-width: 760px;
|
||||
}
|
||||
|
||||
.connect {
|
||||
width: min(1120px, calc(100% - 56px));
|
||||
margin: 0 auto 56px;
|
||||
border-radius: 8px;
|
||||
background: #171512;
|
||||
padding: 56px;
|
||||
}
|
||||
|
||||
.connect .eyebrow {
|
||||
color: #71d7b8;
|
||||
}
|
||||
|
||||
.connect h2 {
|
||||
max-width: 920px;
|
||||
color: #fffaf2;
|
||||
}
|
||||
|
||||
.connect p {
|
||||
max-width: 720px;
|
||||
margin-bottom: 0;
|
||||
color: #d8d0c3;
|
||||
}
|
||||
|
||||
@media (max-width: 820px) {
|
||||
.hero {
|
||||
min-height: 86vh;
|
||||
padding: 36px 20px;
|
||||
}
|
||||
|
||||
.hero-inner {
|
||||
padding-top: 12vh;
|
||||
}
|
||||
|
||||
.section {
|
||||
padding: 64px 20px;
|
||||
}
|
||||
|
||||
.content-grid,
|
||||
.split-band {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 28px;
|
||||
}
|
||||
|
||||
.split-band {
|
||||
width: min(100% - 40px, 1120px);
|
||||
}
|
||||
|
||||
.split-band article {
|
||||
min-height: auto;
|
||||
padding: 28px;
|
||||
}
|
||||
|
||||
.connect {
|
||||
width: min(100% - 40px, 1120px);
|
||||
padding: 32px 24px;
|
||||
}
|
||||
|
||||
p,
|
||||
.intro {
|
||||
font-size: 17px;
|
||||
}
|
||||
}
|
||||
14
frontend/app/layout.jsx
Normal file
14
frontend/app/layout.jsx
Normal file
@@ -0,0 +1,14 @@
|
||||
import "./globals.css";
|
||||
|
||||
export const metadata = {
|
||||
title: "Robert Seares",
|
||||
description: "Software engineer, engineering leader, founder, and product builder."
|
||||
};
|
||||
|
||||
export default function RootLayout({ children }) {
|
||||
return (
|
||||
<html lang="en">
|
||||
<body>{children}</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
178
frontend/app/page.jsx
Normal file
178
frontend/app/page.jsx
Normal file
@@ -0,0 +1,178 @@
|
||||
const focusAreas = [
|
||||
"Artificial Intelligence",
|
||||
"Cloud Infrastructure",
|
||||
"Distributed Systems",
|
||||
"Developer Platforms",
|
||||
"Product Engineering",
|
||||
"Startup Operations",
|
||||
"Automation",
|
||||
"Technical Leadership",
|
||||
];
|
||||
|
||||
const values = [
|
||||
"Ownership over bureaucracy",
|
||||
"Speed over perfection",
|
||||
"Simplicity over complexity",
|
||||
"Learning over ego",
|
||||
"Execution over presentations",
|
||||
];
|
||||
|
||||
const interests = [
|
||||
"AI agents and autonomous systems",
|
||||
"Cloud-native platforms",
|
||||
"Scientific computing",
|
||||
"Biotechnology",
|
||||
"Startup strategy",
|
||||
"Developer experience",
|
||||
"Infrastructure automation",
|
||||
"Human-computer collaboration",
|
||||
];
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<main>
|
||||
<section className="hero">
|
||||
<div className="hero-inner">
|
||||
<p className="eyebrow">Software engineer, founder, product builder</p>
|
||||
<h1>Robert Seares</h1>
|
||||
<p className="lede">I build companies, software, and systems.</p>
|
||||
<p className="intro">
|
||||
I am a software engineer, engineering leader, founder, and product
|
||||
builder currently living in Brazil with my wife and two children.
|
||||
Over the last decade I have worked across startups, AI, biotech,
|
||||
consumer products, infrastructure, and automation, always gravitating
|
||||
toward difficult technical problems where software can create
|
||||
outsized leverage.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section narrative">
|
||||
<div className="content-grid">
|
||||
<div>
|
||||
<p className="eyebrow">Today</p>
|
||||
<h2>Engineering at Ark Biotech</h2>
|
||||
</div>
|
||||
<div className="copy">
|
||||
<p>
|
||||
Today I lead software engineering at Ark Biotech, where I help
|
||||
build the infrastructure, applications, simulation tooling, and AI
|
||||
systems powering next-generation biomanufacturing.
|
||||
</p>
|
||||
<p>
|
||||
My work spans cloud infrastructure, developer platforms,
|
||||
simulation systems, machine learning applications, frontend
|
||||
architecture, backend services, and engineering leadership.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section question-band">
|
||||
<div className="question">
|
||||
<p className="eyebrow">The question</p>
|
||||
<h2>How do we make it dramatically easier for people to build useful things?</h2>
|
||||
<p>
|
||||
That question has led me through projects ranging from AI systems
|
||||
and developer platforms to restaurant software, biotechnology
|
||||
infrastructure, and autonomous agents.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section">
|
||||
<div className="content-grid">
|
||||
<div>
|
||||
<p className="eyebrow">What I do</p>
|
||||
<h2>Systems that scale from idea to business</h2>
|
||||
</div>
|
||||
<div>
|
||||
<p className="copy lead-copy">
|
||||
I enjoy building systems that can scale from a single user to
|
||||
thousands, and from a proof of concept to a business. My preferred
|
||||
stack is Python, TypeScript, Kubernetes, FastAPI, React,
|
||||
PostgreSQL, cloud-native infrastructure, and AI-powered workflows.
|
||||
</p>
|
||||
<div className="pill-grid">
|
||||
{focusAreas.map((area) => (
|
||||
<span key={area}>{area}</span>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section split-band">
|
||||
<article>
|
||||
<p className="eyebrow">Philosophy</p>
|
||||
<h2>Software should create leverage.</h2>
|
||||
<p>
|
||||
The best technology removes complexity rather than adding it. Great
|
||||
systems are understandable, maintainable, and useful. Great
|
||||
companies solve real problems. Great engineers ship.
|
||||
</p>
|
||||
<ul className="clean-list">
|
||||
{values.map((value) => (
|
||||
<li key={value}>{value}</li>
|
||||
))}
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<p className="eyebrow">Building</p>
|
||||
<h2>A laptop, an idea, and enough persistence.</h2>
|
||||
<p>
|
||||
Outside of my day job, I spend most of my time building. I have
|
||||
launched products in AI, SaaS, developer tooling, restaurant
|
||||
technology, and automation. Some succeeded, some failed, and all of
|
||||
them taught me something valuable.
|
||||
</p>
|
||||
<p>
|
||||
What keeps me motivated is the same thing that motivated me when I
|
||||
started writing software: the ability to create something from
|
||||
nothing.
|
||||
</p>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section className="section">
|
||||
<div className="content-grid">
|
||||
<div>
|
||||
<p className="eyebrow">Life</p>
|
||||
<h2>Countryside of Sao Paulo, Brazil</h2>
|
||||
</div>
|
||||
<div className="copy">
|
||||
<p>
|
||||
When I am not building software, I am spending time with my
|
||||
family, exploring business ideas, studying technology, lifting
|
||||
weights, reading about startups, or working on the next project
|
||||
that probably should not exist but sounds too interesting not to
|
||||
build.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section interests">
|
||||
<div>
|
||||
<p className="eyebrow">Current interests</p>
|
||||
<h2>Problems worth paying attention to</h2>
|
||||
</div>
|
||||
<div className="interest-grid">
|
||||
{interests.map((interest) => (
|
||||
<span key={interest}>{interest}</span>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section connect">
|
||||
<p className="eyebrow">Connect</p>
|
||||
<h2>If you are building something ambitious, I would love to hear about it.</h2>
|
||||
<p>
|
||||
I am always interested in talking with builders, founders, engineers,
|
||||
and people working on difficult problems.
|
||||
</p>
|
||||
</section>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
6
frontend/jsconfig.json
Normal file
6
frontend/jsconfig.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"baseUrl": "."
|
||||
}
|
||||
}
|
||||
|
||||
6
frontend/next.config.mjs
Normal file
6
frontend/next.config.mjs
Normal file
@@ -0,0 +1,6 @@
|
||||
const nextConfig = {
|
||||
output: "export",
|
||||
trailingSlash: true,
|
||||
};
|
||||
|
||||
export default nextConfig;
|
||||
1590
frontend/package-lock.json
generated
Normal file
1590
frontend/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
20
frontend/package.json
Normal file
20
frontend/package.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "robertseares-frontend",
|
||||
"private": true,
|
||||
"version": "0.1.0",
|
||||
"scripts": {
|
||||
"dev": "next dev --hostname 0.0.0.0 --port 3000",
|
||||
"build": "next build",
|
||||
"start": "next start"
|
||||
},
|
||||
"dependencies": {
|
||||
"next": "^15.3.0",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/postcss": "^4.3.0",
|
||||
"postcss": "^8.5.15",
|
||||
"tailwindcss": "^4.3.0"
|
||||
}
|
||||
}
|
||||
7
frontend/postcss.config.mjs
Normal file
7
frontend/postcss.config.mjs
Normal file
@@ -0,0 +1,7 @@
|
||||
const config = {
|
||||
plugins: {
|
||||
"@tailwindcss/postcss": {},
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
||||
0
frontend/public/.gitkeep
Normal file
0
frontend/public/.gitkeep
Normal file
6
requirements.txt
Normal file
6
requirements.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
# a2a-pack is auto-installed by the deploy build.
|
||||
# These starter deps power the DeepAgents tool-calling example in agent.py.
|
||||
deepagents>=0.5.0
|
||||
langchain>=0.3
|
||||
langchain-openai>=0.2
|
||||
langgraph>=0.6
|
||||
Reference in New Issue
Block a user