quadwork 1.6.3 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/bin/quadwork.js +42 -59
- package/bridges/discord/__pycache__/discord_bridge.cpython-314.pyc +0 -0
- package/bridges/discord/discord_bridge.py +63 -18
- package/out/404.html +1 -1
- package/out/__next.__PAGE__.txt +3 -3
- package/out/__next._full.txt +14 -14
- package/out/__next._head.txt +4 -4
- package/out/__next._index.txt +7 -7
- package/out/__next._tree.txt +2 -2
- package/out/_next/static/KleEGCyPe1ovSiWKr9GnB/_ssgManifest.js +1 -0
- package/out/_next/static/chunks/{0ftcj9qreh~p4.js → 0_y-97xg1l.bn.js} +13 -13
- package/out/_next/static/chunks/{0-jj8tpbs48x4.js → 0cploqtj5jy4z.js} +1 -1
- package/out/_next/static/chunks/0koy9hplvko3w.css +2 -0
- package/out/_next/static/chunks/14zyqqpdz2x7j.js +1 -0
- package/out/_next/static/chunks/{0o3_.p5ivp5sp.js → 152f2hu-ivy6f.js} +1 -1
- package/out/_next/static/media/favicon.05o2q2p4kvnq_.ico +0 -0
- package/out/_not-found/__next._full.txt +13 -13
- package/out/_not-found/__next._head.txt +4 -4
- package/out/_not-found/__next._index.txt +7 -7
- package/out/_not-found/__next._not-found.__PAGE__.txt +2 -2
- package/out/_not-found/__next._not-found.txt +3 -3
- package/out/_not-found/__next._tree.txt +2 -2
- package/out/_not-found.html +1 -1
- package/out/_not-found.txt +13 -13
- package/out/app-shell/__next._full.txt +13 -13
- package/out/app-shell/__next._head.txt +4 -4
- package/out/app-shell/__next._index.txt +7 -7
- package/out/app-shell/__next._tree.txt +2 -2
- package/out/app-shell/__next.app-shell.__PAGE__.txt +2 -2
- package/out/app-shell/__next.app-shell.txt +3 -3
- package/out/app-shell.html +1 -1
- package/out/app-shell.txt +13 -13
- package/out/favicon.ico +0 -0
- package/out/icon.png +0 -0
- package/out/icon.svg +11 -4
- package/out/index.html +1 -1
- package/out/index.txt +14 -14
- package/out/project/_/__next._full.txt +14 -14
- package/out/project/_/__next._head.txt +4 -4
- package/out/project/_/__next._index.txt +7 -7
- package/out/project/_/__next._tree.txt +2 -2
- package/out/project/_/__next.project.$d$id.__PAGE__.txt +3 -3
- package/out/project/_/__next.project.$d$id.txt +3 -3
- package/out/project/_/__next.project.txt +3 -3
- package/out/project/_/queue/__next._full.txt +14 -14
- package/out/project/_/queue/__next._head.txt +4 -4
- package/out/project/_/queue/__next._index.txt +7 -7
- package/out/project/_/queue/__next._tree.txt +2 -2
- package/out/project/_/queue/__next.project.$d$id.queue.__PAGE__.txt +3 -3
- package/out/project/_/queue/__next.project.$d$id.queue.txt +3 -3
- package/out/project/_/queue/__next.project.$d$id.txt +3 -3
- package/out/project/_/queue/__next.project.txt +3 -3
- package/out/project/_/queue.html +1 -1
- package/out/project/_/queue.txt +14 -14
- package/out/project/_.html +1 -1
- package/out/project/_.txt +14 -14
- package/out/quadwork-symbol.svg +15 -0
- package/out/settings/__next._full.txt +14 -14
- package/out/settings/__next._head.txt +4 -4
- package/out/settings/__next._index.txt +7 -7
- package/out/settings/__next._tree.txt +2 -2
- package/out/settings/__next.settings.__PAGE__.txt +3 -3
- package/out/settings/__next.settings.txt +3 -3
- package/out/settings.html +1 -1
- package/out/settings.txt +14 -14
- package/out/setup/__next._full.txt +14 -14
- package/out/setup/__next._head.txt +4 -4
- package/out/setup/__next._index.txt +7 -7
- package/out/setup/__next._tree.txt +2 -2
- package/out/setup/__next.setup.__PAGE__.txt +3 -3
- package/out/setup/__next.setup.txt +3 -3
- package/out/setup.html +1 -1
- package/out/setup.txt +14 -14
- package/package.json +2 -1
- package/server/index.js +77 -20
- package/server/queue-watcher.js +20 -11
- package/server/routes.discordBridge.test.js +5 -5
- package/server/routes.js +141 -212
- package/server/routes.telegramBridge.test.js +6 -6
- package/templates/config.toml +7 -7
- package/out/_next/static/ZT6D996Dw9auBgcm_HHTY/_ssgManifest.js +0 -1
- package/out/_next/static/chunks/0j-zyy6.adwtl.css +0 -2
- package/out/_next/static/chunks/0n7b.b.q4nmo..js +0 -1
- package/out/_next/static/chunks/0~xrqi87fqraz.js +0 -1
- package/out/_next/static/chunks/12i404gkhv7q..js +0 -4
- package/out/_next/static/media/favicon.0qzfoe774zb3r.ico +0 -0
- package/out/project/_/memory/__next._full.txt +0 -21
- package/out/project/_/memory/__next._head.txt +0 -6
- package/out/project/_/memory/__next._index.txt +0 -8
- package/out/project/_/memory/__next._tree.txt +0 -3
- package/out/project/_/memory/__next.project.$d$id.memory.__PAGE__.txt +0 -6
- package/out/project/_/memory/__next.project.$d$id.memory.txt +0 -5
- package/out/project/_/memory/__next.project.$d$id.txt +0 -5
- package/out/project/_/memory/__next.project.txt +0 -5
- package/out/project/_/memory.html +0 -1
- package/out/project/_/memory.txt +0 -21
- /package/out/_next/static/{ZT6D996Dw9auBgcm_HHTY → KleEGCyPe1ovSiWKr9GnB}/_buildManifest.js +0 -0
- /package/out/_next/static/{ZT6D996Dw9auBgcm_HHTY → KleEGCyPe1ovSiWKr9GnB}/_clientMiddlewareManifest.js +0 -0
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
+
<img src="public/icon.png" alt="QuadWork" width="80" />
|
|
4
|
+
|
|
3
5
|
# QuadWork
|
|
4
6
|
|
|
5
7
|
### Your AI dev team while you sleep.
|
|
@@ -36,7 +38,9 @@ reviews and branch protection, it allows solo founders and engineers to ship
|
|
|
36
38
|
code 24/7 through a reliable "Issue → Branch → PR → Merge" loop while
|
|
37
39
|
maintaining high code quality without manual oversight.
|
|
38
40
|
|
|
39
|
-
|
|
41
|
+
<video src="https://github.com/user-attachments/assets/d1f6f3d6-27de-4afb-9b58-9fe1f87cddb8" width="720" controls></video>
|
|
42
|
+
|
|
43
|
+
[▶ View Live Demo on YouTube](https://www.youtube.com/watch?v=Q0814uXjYoQ)
|
|
40
44
|
|
|
41
45
|
### How QuadWork Orchestrates Your Workflow
|
|
42
46
|
|
|
@@ -147,6 +151,7 @@ Head: merges, picks the next issue
|
|
|
147
151
|
- 📺 **4-quadrant project view** — chat, agent terminals (HEAD / DEV / RE1 / RE2), GitHub board, operator panel
|
|
148
152
|
- ⏰ **Scheduled Trigger** — recurring "queue check" pulses for autonomous overnight runs
|
|
149
153
|
- 📲 **Telegram bridge** — mirror the chat to your phone for remote monitoring
|
|
154
|
+
- 💬 **Discord bridge** — forward agent chat to a Discord channel for team visibility
|
|
150
155
|
- 💾 **Project history export/import** — JSON snapshots of the full chat transcript
|
|
151
156
|
- 🧯 **Loop Guard control** — raise the hop limit and auto-resume stuck chains without restarting AC
|
|
152
157
|
- 🔔 **Notification sounds** — Web Audio chime on new agent messages with a background-only mode
|
package/bin/quadwork.js
CHANGED
|
@@ -26,6 +26,8 @@ const AGENTCHATTR_REPO = "https://github.com/bcurts/agentchattr.git";
|
|
|
26
26
|
// a loud warning instead of hard-failing — see installAgentChattr
|
|
27
27
|
// below.
|
|
28
28
|
const AGENTCHATTR_PIN = "3e71d4267572579e7ffeb83576645f90932c1849";
|
|
29
|
+
// #444: same pattern for realproject7/agentchattr-telegram.
|
|
30
|
+
const AGENTCHATTR_TELEGRAM_PIN = "4a6b45f1794c612328b9d5ee6d6fcb3f77015abc";
|
|
29
31
|
|
|
30
32
|
// ─── ANSI Helpers ──────────────────────────────────────────────────────────
|
|
31
33
|
|
|
@@ -1047,7 +1049,14 @@ async function setupAddons(rl, setup, configTomlPath) {
|
|
|
1047
1049
|
const cloneSpinner = spinner("Cloning agentchattr-telegram...");
|
|
1048
1050
|
const cloneResult = run(`git clone https://github.com/realproject7/agentchattr-telegram.git "${telegramDir}" 2>&1`);
|
|
1049
1051
|
cloneSpinner.stop(cloneResult !== null);
|
|
1050
|
-
if (!cloneResult) warn("You can set it up manually later");
|
|
1052
|
+
if (!cloneResult) { warn("You can set it up manually later"); }
|
|
1053
|
+
else {
|
|
1054
|
+
// #444: pin to a known commit, same pattern as AGENTCHATTR_PIN
|
|
1055
|
+
const pinResult = run(`git -C "${telegramDir}" checkout -B pinned ${AGENTCHATTR_TELEGRAM_PIN} 2>&1`, { timeout: 30000 });
|
|
1056
|
+
if (pinResult === null) {
|
|
1057
|
+
try { console.warn(`[quadwork] WARNING: could not check out agentchattr-telegram pin ${AGENTCHATTR_TELEGRAM_PIN} at ${telegramDir}; falling back to default branch.`); } catch {}
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1051
1060
|
} else {
|
|
1052
1061
|
ok("agentchattr-telegram already present");
|
|
1053
1062
|
}
|
|
@@ -1106,7 +1115,7 @@ bot_token = "env:${envKey}"
|
|
|
1106
1115
|
chat_id = "${chatId}"
|
|
1107
1116
|
agentchattr_url = "${projectChattrUrl}"
|
|
1108
1117
|
poll_interval = 2
|
|
1109
|
-
bridge_sender = "
|
|
1118
|
+
bridge_sender = "tg"
|
|
1110
1119
|
`;
|
|
1111
1120
|
fs.appendFileSync(configTomlPath, telegramSection);
|
|
1112
1121
|
ok("Added Telegram config to config.toml (token stored in .env)");
|
|
@@ -1121,7 +1130,7 @@ bridge_sender = "telegram-bridge"
|
|
|
1121
1130
|
// silently ignored and the bridge falls back to :8300.
|
|
1122
1131
|
// #404: cursor_file must be per-project so multiple bridges
|
|
1123
1132
|
// don't clobber each other's position.
|
|
1124
|
-
const cursorFile = path.join(CONFIG_DIR, `
|
|
1133
|
+
const cursorFile = path.join(CONFIG_DIR, `tg-bridge-cursor-${setup.projectName}.json`);
|
|
1125
1134
|
const bridgeTomlContent = `[telegram]\nbot_token = "${botToken}"\nchat_id = "${chatId}"\nagentchattr_url = "${projectChattrUrl}"\ncursor_file = "${cursorFile}"\n`;
|
|
1126
1135
|
fs.writeFileSync(bridgeToml, bridgeTomlContent, { mode: 0o600 });
|
|
1127
1136
|
fs.chmodSync(bridgeToml, 0o600);
|
|
@@ -1141,7 +1150,7 @@ bridge_sender = "telegram-bridge"
|
|
|
1141
1150
|
bridgeProc.unref();
|
|
1142
1151
|
if (bridgeProc.pid) {
|
|
1143
1152
|
ok(`Telegram bridge started (PID: ${bridgeProc.pid})`);
|
|
1144
|
-
const pidFile = path.join(CONFIG_DIR, "
|
|
1153
|
+
const pidFile = path.join(CONFIG_DIR, "tg-bridge.pid");
|
|
1145
1154
|
fs.writeFileSync(pidFile, String(bridgeProc.pid));
|
|
1146
1155
|
} else {
|
|
1147
1156
|
warn("Could not start Telegram bridge — start manually");
|
|
@@ -1151,54 +1160,7 @@ bridge_sender = "telegram-bridge"
|
|
|
1151
1160
|
}
|
|
1152
1161
|
}
|
|
1153
1162
|
|
|
1154
|
-
// Shared Memory
|
|
1155
|
-
log("Optional: set up shared memory cards for cross-agent knowledge.");
|
|
1156
|
-
const wantMemory = await askYN(rl, "Set up Shared Memory?", false);
|
|
1157
|
-
if (wantMemory) {
|
|
1158
|
-
const memoryDir = path.join(path.dirname(setup.absDir), "agent-memory");
|
|
1159
|
-
if (!fs.existsSync(memoryDir)) {
|
|
1160
|
-
const memSpinner = spinner("Cloning agent-memory...");
|
|
1161
|
-
const cloneResult = run(`git clone https://github.com/realproject7/agent-memory.git "${memoryDir}" 2>&1`);
|
|
1162
|
-
memSpinner.stop(cloneResult !== null);
|
|
1163
|
-
if (!cloneResult) warn("You can set it up manually later");
|
|
1164
|
-
} else {
|
|
1165
|
-
ok("agent-memory already present");
|
|
1166
|
-
}
|
|
1167
|
-
|
|
1168
|
-
if (fs.existsSync(memoryDir)) {
|
|
1169
|
-
// Verify butler scripts exist
|
|
1170
|
-
const scriptsDir = path.join(memoryDir, "scripts");
|
|
1171
|
-
const requiredScripts = ["butler-scan.sh", "butler-consolidate.sh", "inject.sh"];
|
|
1172
|
-
for (const script of requiredScripts) {
|
|
1173
|
-
const scriptPath = path.join(scriptsDir, script);
|
|
1174
|
-
if (fs.existsSync(scriptPath)) {
|
|
1175
|
-
// Ensure executable
|
|
1176
|
-
try { fs.chmodSync(scriptPath, 0o755); } catch {}
|
|
1177
|
-
} else {
|
|
1178
|
-
warn(`Butler script not found: ${scriptPath}`);
|
|
1179
|
-
}
|
|
1180
|
-
}
|
|
1181
|
-
ok("Butler scripts verified");
|
|
1182
|
-
|
|
1183
|
-
// Create project short-term memory file if missing
|
|
1184
|
-
const shortTermDir = path.join(memoryDir, "central", "short-term");
|
|
1185
|
-
const projectMemFile = path.join(shortTermDir, `${setup.projectName}.md`);
|
|
1186
|
-
if (!fs.existsSync(projectMemFile)) {
|
|
1187
|
-
if (!fs.existsSync(shortTermDir)) fs.mkdirSync(shortTermDir, { recursive: true });
|
|
1188
|
-
fs.writeFileSync(projectMemFile, `# ${setup.projectName} — Short-Term Memory\n\n_No entries yet._\n`);
|
|
1189
|
-
ok(`Created ${projectMemFile}`);
|
|
1190
|
-
}
|
|
1191
|
-
|
|
1192
|
-
// Create cards directory if missing
|
|
1193
|
-
const cardsDir = path.join(memoryDir, "archive", "v2", "cards");
|
|
1194
|
-
if (!fs.existsSync(cardsDir)) {
|
|
1195
|
-
fs.mkdirSync(cardsDir, { recursive: true });
|
|
1196
|
-
ok("Created cards directory");
|
|
1197
|
-
}
|
|
1198
|
-
}
|
|
1199
|
-
|
|
1200
|
-
setup.memoryDir = memoryDir;
|
|
1201
|
-
}
|
|
1163
|
+
// #445: Shared Memory wizard step removed (agent-memory integration deprecated).
|
|
1202
1164
|
|
|
1203
1165
|
return setup;
|
|
1204
1166
|
}
|
|
@@ -1262,12 +1224,6 @@ function writeQuadWorkConfig(setup) {
|
|
|
1262
1224
|
};
|
|
1263
1225
|
}
|
|
1264
1226
|
|
|
1265
|
-
if (setup.memoryDir) {
|
|
1266
|
-
project.memory_cards_dir = path.join(setup.memoryDir, "archive", "v2", "cards");
|
|
1267
|
-
project.shared_memory_path = path.join(setup.memoryDir, "central", "short-term", `${setup.projectName}.md`);
|
|
1268
|
-
project.butler_scripts_dir = path.join(setup.memoryDir, "scripts");
|
|
1269
|
-
}
|
|
1270
|
-
|
|
1271
1227
|
if (setup.telegram) {
|
|
1272
1228
|
project.telegram = {
|
|
1273
1229
|
bot_token: setup.telegram.bot_token,
|
|
@@ -1765,7 +1721,7 @@ function cmdStop() {
|
|
|
1765
1721
|
console.log("\n QuadWork Stop\n");
|
|
1766
1722
|
|
|
1767
1723
|
let stopped = 0;
|
|
1768
|
-
if (stopPid("Telegram bridge", "
|
|
1724
|
+
if (stopPid("Telegram bridge", "tg-bridge.pid")) stopped++;
|
|
1769
1725
|
|
|
1770
1726
|
// Stop per-project AgentChattr instances
|
|
1771
1727
|
const config = readConfig();
|
|
@@ -2011,6 +1967,33 @@ function cmdDoctor() {
|
|
|
2011
1967
|
} catch (err) {
|
|
2012
1968
|
console.log(` (could not enumerate projects: ${err.message})`);
|
|
2013
1969
|
}
|
|
1970
|
+
// #444: agentchattr-telegram pin status
|
|
1971
|
+
console.log("");
|
|
1972
|
+
console.log(`agentchattr-telegram pin: ${AGENTCHATTR_TELEGRAM_PIN}`);
|
|
1973
|
+
const tgBridgeDir = path.join(CONFIG_DIR, "agentchattr-telegram");
|
|
1974
|
+
if (!fs.existsSync(tgBridgeDir)) {
|
|
1975
|
+
console.log(" [skip] agentchattr-telegram: not installed");
|
|
1976
|
+
} else {
|
|
1977
|
+
const tgSha = cloneShaAt(tgBridgeDir);
|
|
1978
|
+
if (!tgSha) {
|
|
1979
|
+
console.log(` [warn] agentchattr-telegram: ${tgBridgeDir} — not a git clone`);
|
|
1980
|
+
} else {
|
|
1981
|
+
const tgBranch = cloneBranchAt(tgBridgeDir);
|
|
1982
|
+
let tgTag;
|
|
1983
|
+
if (tgSha !== AGENTCHATTR_TELEGRAM_PIN) {
|
|
1984
|
+
tgTag = "DIFF";
|
|
1985
|
+
} else if (!tgBranch) {
|
|
1986
|
+
tgTag = "DETACH";
|
|
1987
|
+
} else if (tgBranch !== "pinned") {
|
|
1988
|
+
tgTag = "BR ";
|
|
1989
|
+
} else {
|
|
1990
|
+
tgTag = "OK ";
|
|
1991
|
+
}
|
|
1992
|
+
const tgBranchLabel = tgBranch ? `branch=${tgBranch}` : "branch=(detached)";
|
|
1993
|
+
console.log(` [${tgTag}] ${tgSha} ${tgBranchLabel} (${tgBridgeDir})`);
|
|
1994
|
+
}
|
|
1995
|
+
}
|
|
1996
|
+
|
|
2014
1997
|
console.log("");
|
|
2015
1998
|
console.log("Legend: [OK ] on pin + on `pinned` branch; [BR ] on pin but on a non-`pinned` named branch; [DETACH] on pin but in detached HEAD (re-run quadwork start to auto-migrate); [DIFF] off-pin (re-clone manually to re-sync)");
|
|
2016
1999
|
console.log("");
|
|
Binary file
|
|
@@ -35,7 +35,7 @@ except ModuleNotFoundError:
|
|
|
35
35
|
import discord
|
|
36
36
|
import requests
|
|
37
37
|
|
|
38
|
-
log = logging.getLogger("
|
|
38
|
+
log = logging.getLogger("dc-bridge")
|
|
39
39
|
|
|
40
40
|
# ---------------------------------------------------------------------------
|
|
41
41
|
# Config
|
|
@@ -46,7 +46,7 @@ DEFAULT_CONFIG = {
|
|
|
46
46
|
"channel_id": "",
|
|
47
47
|
"agentchattr_url": "http://127.0.0.1:8300",
|
|
48
48
|
"poll_interval": 2,
|
|
49
|
-
"bridge_sender": "
|
|
49
|
+
"bridge_sender": "dc",
|
|
50
50
|
"cursor_file": "",
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -145,7 +145,7 @@ def save_cursor(path):
|
|
|
145
145
|
|
|
146
146
|
# Mutable dict so heartbeat thread sees re-registration updates.
|
|
147
147
|
# bridge_sender is set from cfg during main() so all callers can read it.
|
|
148
|
-
ac = {"token": "", "name": "", "bridge_sender": "
|
|
148
|
+
ac = {"token": "", "name": "", "bridge_sender": "dc", "known_names": set()}
|
|
149
149
|
|
|
150
150
|
|
|
151
151
|
def ac_register(url, base=None, label="Discord Bridge"):
|
|
@@ -222,13 +222,25 @@ async def poll_ac_to_discord(cfg, channel):
|
|
|
222
222
|
bridge_sender = cfg["bridge_sender"]
|
|
223
223
|
interval = cfg["poll_interval"]
|
|
224
224
|
|
|
225
|
+
# #458: dedup guard — track recently forwarded message IDs so a
|
|
226
|
+
# stale cursor, drain-loop hiccup, or restart replay can't send
|
|
227
|
+
# the same AC message to Discord twice within a session.
|
|
228
|
+
forwarded_ids: set[int] = set()
|
|
229
|
+
# Cap the set size to avoid unbounded growth in long-running sessions.
|
|
230
|
+
MAX_FORWARDED = 2000
|
|
231
|
+
|
|
225
232
|
while True:
|
|
226
233
|
try:
|
|
227
234
|
# Drain all available messages before sleeping. When AC
|
|
228
235
|
# returns a full batch (limit messages), immediately
|
|
229
236
|
# re-fetch with the updated cursor to avoid dropping
|
|
230
237
|
# overflow under high volume.
|
|
231
|
-
|
|
238
|
+
# #458: cap drain iterations to prevent infinite loop if
|
|
239
|
+
# since_id isn't being honored by AC.
|
|
240
|
+
drain_iterations = 0
|
|
241
|
+
MAX_DRAIN = 20
|
|
242
|
+
while drain_iterations < MAX_DRAIN:
|
|
243
|
+
drain_iterations += 1
|
|
232
244
|
params = {"limit": 50}
|
|
233
245
|
if _cursor["last_seen_id"]:
|
|
234
246
|
params["since_id"] = _cursor["last_seen_id"]
|
|
@@ -254,30 +266,57 @@ async def poll_ac_to_discord(cfg, channel):
|
|
|
254
266
|
resp.raise_for_status()
|
|
255
267
|
messages = resp.json()
|
|
256
268
|
|
|
257
|
-
if not isinstance(messages, list):
|
|
269
|
+
if not isinstance(messages, list) or not messages:
|
|
270
|
+
break
|
|
271
|
+
|
|
272
|
+
# #458: detect stale responses — if every message ID in
|
|
273
|
+
# the batch is <= our cursor, the server isn't honoring
|
|
274
|
+
# since_id. Break to avoid re-forwarding.
|
|
275
|
+
max_batch_id = max(m.get("id", 0) for m in messages)
|
|
276
|
+
if max_batch_id <= _cursor["last_seen_id"]:
|
|
277
|
+
log.warning("AC returned stale batch (max_id=%d <= cursor=%d) — breaking drain", max_batch_id, _cursor["last_seen_id"])
|
|
258
278
|
break
|
|
259
279
|
|
|
280
|
+
# #458: build echo names once per batch (inputs don't
|
|
281
|
+
# change per-message).
|
|
282
|
+
echo_names = ac["known_names"] | {
|
|
283
|
+
bridge_sender,
|
|
284
|
+
"discord-bridge",
|
|
285
|
+
"discord_bridge",
|
|
286
|
+
}
|
|
287
|
+
|
|
260
288
|
for msg in messages:
|
|
261
289
|
msg_id = msg.get("id", 0)
|
|
262
290
|
sender = msg.get("sender", "")
|
|
263
291
|
text = msg.get("text", "")
|
|
264
292
|
|
|
265
|
-
#
|
|
266
|
-
#
|
|
267
|
-
|
|
293
|
+
# Helper: advance cursor and persist. Called after
|
|
294
|
+
# a message is fully handled (skipped or forwarded)
|
|
295
|
+
# so a crash can't replay it (#458). NOT called
|
|
296
|
+
# before Discord delivery to avoid silent message
|
|
297
|
+
# loss on transient send failures.
|
|
298
|
+
def commit_cursor():
|
|
268
299
|
if msg_id > _cursor["last_seen_id"]:
|
|
269
300
|
_cursor["last_seen_id"] = msg_id
|
|
301
|
+
save_cursor(cfg["cursor_file"])
|
|
302
|
+
|
|
303
|
+
# Echo prevention: skip our own messages
|
|
304
|
+
if sender in echo_names:
|
|
305
|
+
commit_cursor()
|
|
270
306
|
continue
|
|
271
307
|
|
|
272
308
|
# Skip system auto-recovery messages
|
|
273
309
|
if sender == "system":
|
|
274
|
-
|
|
275
|
-
_cursor["last_seen_id"] = msg_id
|
|
310
|
+
commit_cursor()
|
|
276
311
|
continue
|
|
277
312
|
|
|
278
313
|
if not text:
|
|
279
|
-
|
|
280
|
-
|
|
314
|
+
commit_cursor()
|
|
315
|
+
continue
|
|
316
|
+
|
|
317
|
+
# #458: dedup guard — skip already-forwarded messages
|
|
318
|
+
if msg_id in forwarded_ids:
|
|
319
|
+
commit_cursor()
|
|
281
320
|
continue
|
|
282
321
|
|
|
283
322
|
# Forward to Discord
|
|
@@ -287,20 +326,26 @@ async def poll_ac_to_discord(cfg, channel):
|
|
|
287
326
|
if len(discord_text) > 2000:
|
|
288
327
|
discord_text = discord_text[:1997] + "..."
|
|
289
328
|
await channel.send(discord_text)
|
|
329
|
+
# Only commit cursor + mark forwarded AFTER
|
|
330
|
+
# successful Discord delivery.
|
|
331
|
+
forwarded_ids.add(msg_id)
|
|
332
|
+
commit_cursor()
|
|
333
|
+
# Trim the set if it grows too large
|
|
334
|
+
if len(forwarded_ids) > MAX_FORWARDED:
|
|
335
|
+
sorted_ids = sorted(forwarded_ids)
|
|
336
|
+
forwarded_ids.clear()
|
|
337
|
+
forwarded_ids.update(sorted_ids[len(sorted_ids) // 2:])
|
|
290
338
|
except Exception as exc:
|
|
291
339
|
log.error("Failed to send to Discord: %s", exc)
|
|
292
340
|
|
|
293
|
-
if msg_id > _cursor["last_seen_id"]:
|
|
294
|
-
_cursor["last_seen_id"] = msg_id
|
|
295
|
-
|
|
296
|
-
# Persist cursor after each page
|
|
297
|
-
save_cursor(cfg["cursor_file"])
|
|
298
|
-
|
|
299
341
|
# If we got a full batch, there may be more — drain immediately
|
|
300
342
|
if len(messages) >= 50:
|
|
301
343
|
continue
|
|
302
344
|
break
|
|
303
345
|
|
|
346
|
+
if drain_iterations >= MAX_DRAIN:
|
|
347
|
+
log.warning("Drain loop hit %d iterations — breaking to avoid infinite loop", MAX_DRAIN)
|
|
348
|
+
|
|
304
349
|
except requests.RequestException as exc:
|
|
305
350
|
log.warning("AC poll error: %s", exc)
|
|
306
351
|
except Exception as exc:
|
package/out/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en" class="geist_mono_8d43a2aa-module__8Li5zG__variable h-full"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0j-zyy6.adwtl.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0ze4gu236oq96.js"/><script src="/_next/static/chunks/0.bbxho1vnxin.js" async=""></script><script src="/_next/static/chunks/16g.ca89g7fib.js" async=""></script><script src="/_next/static/chunks/0zfotsowwll1x.js" async=""></script><script src="/_next/static/chunks/0pqt~8bl3ukh4.js" async=""></script><script src="/_next/static/chunks/turbopack-0lcwh84lrj9gi.js" async=""></script><script src="/_next/static/chunks/0o3_.p5ivp5sp.js" async=""></script><script src="/_next/static/chunks/0d3shmwh5_nmn.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>QuadWork</title><meta name="description" content="Unified dashboard for multi-agent coding teams"/><link rel="icon" href="/favicon.ico?favicon.0qzfoe774zb3r.ico" sizes="48x48" type="image/x-icon"/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="h-full flex flex-col"><div hidden=""><!--$--><!--/$--></div><header class="sticky top-0 z-40 flex h-12 items-center justify-between border-b border-white/10 bg-neutral-950/90 px-4 backdrop-blur" aria-hidden="true"></header><div class="flex flex-1 min-h-0"><aside class="w-16 shrink-0 h-full border-r border-border bg-bg-surface flex flex-col items-center py-3"><a class="w-10 h-10 flex items-center justify-center rounded-sm transition-colors text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Home" href="/"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 10L10 3l7 7"></path><path d="M5 8.5V16h3.5v-4h3v4H15V8.5"></path></svg></a><div class="w-6 h-px bg-border my-2"></div><div class="flex-1 flex flex-col items-center gap-2 overflow-y-auto min-h-0"><a class="w-10 h-10 flex items-center justify-center rounded-full border border-dashed border-border text-text-muted hover:text-text hover:bg-[#1a1a1a] transition-colors" title="Add project" href="/setup"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M8 3v10M3 8h10"></path></svg></a></div><div class="w-6 h-px bg-border my-2"></div><a class="w-10 h-10 flex items-center justify-center rounded-sm transition-colors text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Settings" href="/settings"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="2.5"></circle><path d="M7.5 1.5h3l.4 2.1a5.5 5.5 0 011.3.7l2-.8 1.5 2.6-1.6 1.3a5.5 5.5 0 010 1.5l1.6 1.3-1.5 2.6-2-.8a5.5 5.5 0 01-1.3.7l-.4 2.1h-3l-.4-2.1a5.5 5.5 0 01-1.3-.7l-2 .8-1.5-2.6 1.6-1.3a5.5 5.5 0 010-1.5L2.3 6.1l1.5-2.6 2 .8a5.5 5.5 0 011.3-.7z"></path></svg></a></aside><main class="flex-1 min-w-0 overflow-auto"><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>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:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/0ze4gu236oq96.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[43688,[\"/_next/static/chunks/0o3_.p5ivp5sp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n3:I[26704,[\"/_next/static/chunks/0o3_.p5ivp5sp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n4:I[22140,[\"/_next/static/chunks/0o3_.p5ivp5sp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n5:I[39756,[\"/_next/static/chunks/0o3_.p5ivp5sp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n6:I[37457,[\"/_next/static/chunks/0o3_.p5ivp5sp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n7:I[97367,[\"/_next/static/chunks/0o3_.p5ivp5sp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\nb:I[97367,[\"/_next/static/chunks/0o3_.p5ivp5sp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"ViewportBoundary\"]\nd:I[97367,[\"/_next/static/chunks/0o3_.p5ivp5sp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"MetadataBoundary\"]\nf:I[68027,[\"/_next/static/chunks/0o3_.p5ivp5sp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0j-zyy6.adwtl.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0j-zyy6.adwtl.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0o3_.p5ivp5sp.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"geist_mono_8d43a2aa-module__8Li5zG__variable h-full\",\"children\":[\"$\",\"body\",null,{\"className\":\"h-full flex flex-col\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{}],[\"$\",\"div\",null,{\"className\":\"flex flex-1 min-h-0\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 min-w-0 overflow-auto\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",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\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:1:props:children:props:notFound:0:1:props:style\",\"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\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,null]},null,false,\"$@a\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0j-zyy6.adwtl.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"ZT6D996Dw9auBgcm_HHTY\"}\n"])</script><script>self.__next_f.push([1,"10:[]\na:\"$W10\"\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"11:I[27201,[\"/_next/static/chunks/0o3_.p5ivp5sp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"IconMark\"]\n9:null\ne:[[\"$\",\"title\",\"0\",{\"children\":\"QuadWork\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Unified dashboard for multi-agent coding teams\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0qzfoe774zb3r.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"$L11\",\"3\",{}]]\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><html lang="en" class="geist_mono_8d43a2aa-module__8Li5zG__variable h-full"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0koy9hplvko3w.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0ze4gu236oq96.js"/><script src="/_next/static/chunks/0.bbxho1vnxin.js" async=""></script><script src="/_next/static/chunks/16g.ca89g7fib.js" async=""></script><script src="/_next/static/chunks/0zfotsowwll1x.js" async=""></script><script src="/_next/static/chunks/0pqt~8bl3ukh4.js" async=""></script><script src="/_next/static/chunks/turbopack-0lcwh84lrj9gi.js" async=""></script><script src="/_next/static/chunks/152f2hu-ivy6f.js" async=""></script><script src="/_next/static/chunks/0d3shmwh5_nmn.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>QuadWork</title><meta name="description" content="Unified dashboard for multi-agent coding teams"/><link rel="icon" href="/favicon.ico?favicon.05o2q2p4kvnq_.ico" sizes="256x256" type="image/x-icon"/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="h-full flex flex-col"><div hidden=""><!--$--><!--/$--></div><header class="sticky top-0 z-40 flex h-12 items-center justify-between border-b border-white/10 bg-neutral-950/90 px-4 backdrop-blur" aria-hidden="true"></header><div class="flex flex-1 min-h-0"><aside class="w-16 shrink-0 h-full border-r border-border bg-bg-surface flex flex-col items-center py-3"><a class="w-10 h-10 flex items-center justify-center rounded-sm transition-colors text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Home" href="/"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 10L10 3l7 7"></path><path d="M5 8.5V16h3.5v-4h3v4H15V8.5"></path></svg></a><div class="w-6 h-px bg-border my-2"></div><div class="flex-1 flex flex-col items-center gap-2 overflow-y-auto min-h-0"><a class="w-10 h-10 flex items-center justify-center rounded-full border border-dashed border-border text-text-muted hover:text-text hover:bg-[#1a1a1a] transition-colors" title="Add project" href="/setup"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M8 3v10M3 8h10"></path></svg></a></div><div class="w-6 h-px bg-border my-2"></div><a class="w-10 h-10 flex items-center justify-center rounded-sm transition-colors text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Settings" href="/settings"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="2.5"></circle><path d="M7.5 1.5h3l.4 2.1a5.5 5.5 0 011.3.7l2-.8 1.5 2.6-1.6 1.3a5.5 5.5 0 010 1.5l1.6 1.3-1.5 2.6-2-.8a5.5 5.5 0 01-1.3.7l-.4 2.1h-3l-.4-2.1a5.5 5.5 0 01-1.3-.7l-2 .8-1.5-2.6 1.6-1.3a5.5 5.5 0 010-1.5L2.3 6.1l1.5-2.6 2 .8a5.5 5.5 0 011.3-.7z"></path></svg></a></aside><main class="flex-1 min-w-0 overflow-auto"><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>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:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/0ze4gu236oq96.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[43688,[\"/_next/static/chunks/152f2hu-ivy6f.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n3:I[26704,[\"/_next/static/chunks/152f2hu-ivy6f.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n4:I[22140,[\"/_next/static/chunks/152f2hu-ivy6f.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n5:I[39756,[\"/_next/static/chunks/152f2hu-ivy6f.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n6:I[37457,[\"/_next/static/chunks/152f2hu-ivy6f.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n7:I[97367,[\"/_next/static/chunks/152f2hu-ivy6f.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\nb:I[97367,[\"/_next/static/chunks/152f2hu-ivy6f.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"ViewportBoundary\"]\nd:I[97367,[\"/_next/static/chunks/152f2hu-ivy6f.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"MetadataBoundary\"]\nf:I[68027,[\"/_next/static/chunks/152f2hu-ivy6f.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0koy9hplvko3w.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0koy9hplvko3w.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/152f2hu-ivy6f.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"geist_mono_8d43a2aa-module__8Li5zG__variable h-full\",\"children\":[\"$\",\"body\",null,{\"className\":\"h-full flex flex-col\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{}],[\"$\",\"div\",null,{\"className\":\"flex flex-1 min-h-0\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 min-w-0 overflow-auto\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",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\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:1:props:children:props:notFound:0:1:props:style\",\"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\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,null]},null,false,\"$@a\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0koy9hplvko3w.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"KleEGCyPe1ovSiWKr9GnB\"}\n"])</script><script>self.__next_f.push([1,"10:[]\na:\"$W10\"\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"11:I[27201,[\"/_next/static/chunks/152f2hu-ivy6f.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"IconMark\"]\n9:null\ne:[[\"$\",\"title\",\"0\",{\"children\":\"QuadWork\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Unified dashboard for multi-agent coding teams\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.05o2q2p4kvnq_.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L11\",\"3\",{}]]\n"])</script></body></html>
|
package/out/__next.__PAGE__.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:I[54338,["/_next/static/chunks/
|
|
3
|
-
3:I[97367,["/_next/static/chunks/
|
|
2
|
+
2:I[54338,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/14zyqqpdz2x7j.js"],"default"]
|
|
3
|
+
3:I[97367,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"]
|
|
4
4
|
4:"$Sreact.suspense"
|
|
5
|
-
0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/
|
|
5
|
+
0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/14zyqqpdz2x7j.js","async":true}]],["$","$L3",null,{"children":["$","$4",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"KleEGCyPe1ovSiWKr9GnB"}
|
|
6
6
|
5:null
|
package/out/__next._full.txt
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:I[43688,["/_next/static/chunks/
|
|
3
|
-
3:I[26704,["/_next/static/chunks/
|
|
4
|
-
4:I[22140,["/_next/static/chunks/
|
|
5
|
-
5:I[39756,["/_next/static/chunks/
|
|
6
|
-
6:I[37457,["/_next/static/chunks/
|
|
7
|
-
7:I[54338,["/_next/static/chunks/
|
|
8
|
-
8:I[97367,["/_next/static/chunks/
|
|
2
|
+
2:I[43688,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
|
|
3
|
+
3:I[26704,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
|
|
4
|
+
4:I[22140,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
|
|
5
|
+
5:I[39756,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
|
|
6
|
+
6:I[37457,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
|
|
7
|
+
7:I[54338,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/14zyqqpdz2x7j.js"],"default"]
|
|
8
|
+
8:I[97367,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"]
|
|
9
9
|
9:"$Sreact.suspense"
|
|
10
|
-
b:I[97367,["/_next/static/chunks/
|
|
11
|
-
d:I[97367,["/_next/static/chunks/
|
|
12
|
-
f:I[68027,["/_next/static/chunks/
|
|
13
|
-
:HL["/_next/static/chunks/
|
|
10
|
+
b:I[97367,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"]
|
|
11
|
+
d:I[97367,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"]
|
|
12
|
+
f:I[68027,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1]
|
|
13
|
+
:HL["/_next/static/chunks/0koy9hplvko3w.css","style"]
|
|
14
14
|
:HL["/_next/static/media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
15
|
-
0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/
|
|
15
|
+
0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0koy9hplvko3w.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/152f2hu-ivy6f.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"geist_mono_8d43a2aa-module__8Li5zG__variable h-full","children":["$","body",null,{"className":"h-full flex flex-col","children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","div",null,{"className":"flex flex-1 min-h-0","children":[["$","$L4",null,{}],["$","main",null,{"className":"flex-1 min-w-0 overflow-auto","children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",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":[["$","$1","c",{"children":[["$","$L7",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/14zyqqpdz2x7j.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0koy9hplvko3w.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"KleEGCyPe1ovSiWKr9GnB"}
|
|
16
16
|
c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
17
|
-
10:I[27201,["/_next/static/chunks/
|
|
17
|
+
10:I[27201,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"]
|
|
18
18
|
a:null
|
|
19
|
-
e:[["$","title","0",{"children":"QuadWork"}],["$","meta","1",{"name":"description","content":"Unified dashboard for multi-agent coding teams"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.
|
|
19
|
+
e:[["$","title","0",{"children":"QuadWork"}],["$","meta","1",{"name":"description","content":"Unified dashboard for multi-agent coding teams"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.05o2q2p4kvnq_.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L10","3",{}]]
|
package/out/__next._head.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:I[97367,["/_next/static/chunks/
|
|
3
|
-
3:I[97367,["/_next/static/chunks/
|
|
2
|
+
2:I[97367,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"]
|
|
3
|
+
3:I[97367,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"]
|
|
4
4
|
4:"$Sreact.suspense"
|
|
5
|
-
5:I[27201,["/_next/static/chunks/
|
|
6
|
-
0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"QuadWork"}],["$","meta","1",{"name":"description","content":"Unified dashboard for multi-agent coding teams"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.
|
|
5
|
+
5:I[27201,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"]
|
|
6
|
+
0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"QuadWork"}],["$","meta","1",{"name":"description","content":"Unified dashboard for multi-agent coding teams"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.05o2q2p4kvnq_.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L5","3",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"KleEGCyPe1ovSiWKr9GnB"}
|
package/out/__next._index.txt
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:I[43688,["/_next/static/chunks/
|
|
3
|
-
3:I[26704,["/_next/static/chunks/
|
|
4
|
-
4:I[22140,["/_next/static/chunks/
|
|
5
|
-
5:I[39756,["/_next/static/chunks/
|
|
6
|
-
6:I[37457,["/_next/static/chunks/
|
|
7
|
-
:HL["/_next/static/chunks/
|
|
8
|
-
0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/
|
|
2
|
+
2:I[43688,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
|
|
3
|
+
3:I[26704,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
|
|
4
|
+
4:I[22140,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
|
|
5
|
+
5:I[39756,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
|
|
6
|
+
6:I[37457,["/_next/static/chunks/152f2hu-ivy6f.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
|
|
7
|
+
:HL["/_next/static/chunks/0koy9hplvko3w.css","style"]
|
|
8
|
+
0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0koy9hplvko3w.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/152f2hu-ivy6f.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en","className":"geist_mono_8d43a2aa-module__8Li5zG__variable h-full","children":["$","body",null,{"className":"h-full flex flex-col","children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","div",null,{"className":"flex flex-1 min-h-0","children":[["$","$L4",null,{}],["$","main",null,{"className":"flex-1 min-w-0 overflow-auto","children":["$","$L5",null,{"parallelRouterKey":"children","template":["$","$L6",null,{}],"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."}]}]]}]}]],[]]}]}]]}]]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"KleEGCyPe1ovSiWKr9GnB"}
|
package/out/__next._tree.txt
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
:HL["/_next/static/chunks/
|
|
1
|
+
:HL["/_next/static/chunks/0koy9hplvko3w.css","style"]
|
|
2
2
|
:HL["/_next/static/media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
3
|
-
0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"
|
|
3
|
+
0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"KleEGCyPe1ovSiWKr9GnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
self.__SSG_MANIFEST=new Set(["\u002Fproject\u002F[id]","\u002Fproject\u002F[id]\u002Fqueue"]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
|