vibebusiness 1.2.39 → 1.2.41
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/.next/standalone/.env +7 -0
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +68 -60
- package/.next/standalone/.next/app-path-routes-manifest.json +1 -1
- package/.next/standalone/.next/build-manifest.json +6 -6
- package/.next/standalone/.next/prerender-manifest.json +1 -1
- package/.next/standalone/.next/routes-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/api/analyze/route.js +1 -1
- package/.next/standalone/.next/server/app/api/analyze/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/checkout/route.js +1 -0
- package/.next/standalone/.next/server/app/api/checkout/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/config/detect-repos/route.js +1 -1
- package/.next/standalone/.next/server/app/api/config/detect-repos/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/config/route.js +1 -1
- package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/epics/[id]/ideas/route.js +1 -1
- package/.next/standalone/.next/server/app/api/epics/[id]/ideas/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/epics/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/epics/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/epics/route.js +1 -1
- package/.next/standalone/.next/server/app/api/epics/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/goals/[id]/kpis/route.js +1 -1
- package/.next/standalone/.next/server/app/api/goals/[id]/kpis/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/goals/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/goals/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/goals/route.js +1 -1
- package/.next/standalone/.next/server/app/api/goals/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/health/route.js +1 -1
- package/.next/standalone/.next/server/app/api/health/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/hypotheses/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/hypotheses/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/hypotheses/route.js +1 -1
- package/.next/standalone/.next/server/app/api/hypotheses/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/comments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/comments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/implement/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/implement/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/transition/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/transition/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/implementations/route.js +1 -1
- package/.next/standalone/.next/server/app/api/implementations/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/kpis/refresh/route.js +1 -1
- package/.next/standalone/.next/server/app/api/kpis/refresh/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/license/route.js +1 -0
- package/.next/standalone/.next/server/app/api/license/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/portal/route.js +1 -0
- package/.next/standalone/.next/server/app/api/portal/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/social/[id]/publish/route.js +1 -0
- package/.next/standalone/.next/server/app/api/social/[id]/publish/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/social/[id]/route.js +1 -0
- package/.next/standalone/.next/server/app/api/social/[id]/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/social/route.js +1 -0
- package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/webhook/route.js +1 -0
- package/.next/standalone/.next/server/app/api/webhook/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/goals/[id]/page.js +1 -1
- package/.next/standalone/.next/server/app/goals/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/goals/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/goals/page.js +1 -1
- package/.next/standalone/.next/server/app/goals/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/goals/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/hypotheses/[id]/page.js +1 -1
- package/.next/standalone/.next/server/app/hypotheses/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/hypotheses/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/hypotheses/page.js +1 -1
- package/.next/standalone/.next/server/app/hypotheses/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/hypotheses/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/ideas/[id]/page.js +1 -1
- package/.next/standalone/.next/server/app/ideas/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/ideas/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/landing/page.js +1 -1
- package/.next/standalone/.next/server/app/landing/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/landing.html +1 -1
- package/.next/standalone/.next/server/app/landing.rsc +1 -1
- package/.next/standalone/.next/server/app/page.js +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/roadmap/[id]/page.js +1 -1
- package/.next/standalone/.next/server/app/roadmap/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/roadmap/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/roadmap/page.js +1 -1
- package/.next/standalone/.next/server/app/roadmap/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/roadmap/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/sessions/page.js +1 -1
- package/.next/standalone/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page.js +1 -1
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +2 -2
- package/.next/standalone/.next/server/app/social/page.js +1 -0
- package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/social.html +1 -0
- package/.next/standalone/.next/server/app/social.meta +5 -0
- package/.next/standalone/.next/server/app/social.rsc +7 -0
- package/.next/standalone/.next/server/app-paths-manifest.json +15 -7
- package/.next/standalone/.next/server/chunks/{682.js → 1682.js} +1 -1
- package/.next/standalone/.next/server/chunks/3644.js +1 -0
- package/.next/standalone/.next/server/chunks/4376.js +1 -0
- package/.next/standalone/.next/server/chunks/4471.js +2 -0
- package/.next/standalone/.next/server/chunks/534.js +1 -0
- package/.next/standalone/.next/server/chunks/5972.js +12 -0
- package/.next/standalone/.next/server/chunks/7809.js +2 -0
- package/.next/standalone/.next/server/chunks/9276.js +2 -0
- package/.next/standalone/.next/server/chunks/9777.js +1 -0
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/pages/_app.js +1 -1
- package/.next/standalone/.next/server/pages/_document.js +1 -1
- package/.next/standalone/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/_error.js +1 -1
- package/.next/standalone/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/webpack-runtime.js +1 -1
- package/.next/standalone/data/email-campaigns/welcome-2026-02-20.md +13 -32
- package/.next/standalone/data/payments.json +33 -0
- package/.next/standalone/data/social.json +13 -0
- package/.next/standalone/package.json +5 -1
- package/.next/standalone/scripts/skills/social-media.ts +456 -0
- package/.next/static/chunks/444-125b7b0fa8cbdb81.js +1 -0
- package/.next/static/chunks/746-ea7c3e4e69c14385.js +1 -0
- package/.next/static/chunks/app/goals/[id]/{page-91b8382d44e93925.js → page-8dbeab5cc8cf0988.js} +1 -1
- package/.next/static/chunks/app/goals/{page-ecaa4a2761757014.js → page-794526d1e1a0856a.js} +1 -1
- package/.next/static/chunks/app/hypotheses/[id]/{page-894b08de47a73af9.js → page-65032da79ae146c5.js} +1 -1
- package/.next/static/chunks/app/hypotheses/page-8314da4be7c533bd.js +1 -0
- package/.next/static/chunks/app/ideas/[id]/page-dc9746061e58eea5.js +1 -0
- package/.next/static/chunks/app/layout-eeef7928298d2198.js +1 -0
- package/.next/static/chunks/app/page-fb66ff080390f20a.js +1 -0
- package/.next/static/chunks/app/roadmap/[id]/{page-3848fd96de497d11.js → page-c8c4baf233e0d480.js} +1 -1
- package/.next/static/chunks/app/roadmap/page-b15554a207ed2813.js +1 -0
- package/.next/static/chunks/app/sessions/page-42fb8edb15b9da1c.js +1 -0
- package/.next/static/chunks/app/settings/page-d2d630a799b6b495.js +1 -0
- package/.next/static/chunks/app/social/page-6c61fb0c2546313e.js +1 -0
- package/.next/static/chunks/{main-c0637f9544446589.js → main-98052d4291bccc96.js} +1 -1
- package/.next/static/css/02298496de89e16e.css +3 -0
- package/README.md +18 -0
- package/dist/bin/vibebusiness.js +307 -26
- package/dist/scripts/analyze.js +1 -0
- package/dist/scripts/chat.js +1 -0
- package/dist/scripts/generate-idea.js +1 -0
- package/dist/scripts/heartbeat.js +7343 -192
- package/dist/scripts/implement.js +1 -0
- package/dist/scripts/init.js +46 -6
- package/dist/scripts/scan.js +1 -0
- package/package.json +5 -1
- package/templates/commands/email-marketing.md +148 -10
- package/.next/standalone/.next/server/chunks/276.js +0 -2
- package/.next/standalone/.next/server/chunks/416.js +0 -1
- package/.next/standalone/.next/server/chunks/471.js +0 -2
- package/.next/standalone/.next/server/chunks/617.js +0 -1
- package/.next/standalone/.next/server/chunks/644.js +0 -1
- package/.next/standalone/.next/server/chunks/972.js +0 -12
- package/.next/static/chunks/444-6c0edb23956d018d.js +0 -1
- package/.next/static/chunks/783-3af6dbdb6afb55f4.js +0 -1
- package/.next/static/chunks/app/hypotheses/page-2cf90570526c76d3.js +0 -1
- package/.next/static/chunks/app/ideas/[id]/page-e0cca1557b59f7e0.js +0 -1
- package/.next/static/chunks/app/layout-ae8acf4955ee5472.js +0 -1
- package/.next/static/chunks/app/page-6a52a6950963129a.js +0 -1
- package/.next/static/chunks/app/roadmap/page-94d002cf0e37260f.js +0 -1
- package/.next/static/chunks/app/sessions/page-8085e6da5e28c7e4.js +0 -1
- package/.next/static/chunks/app/settings/page-34f70eef4a23eb4c.js +0 -1
- package/.next/static/css/501d0ac30341ebbe.css +0 -3
- /package/.next/static/{k40DKimnEdAtBs_zywSQ4 → VNI-b7vAR8FWLaaVytLYx}/_buildManifest.js +0 -0
- /package/.next/static/{k40DKimnEdAtBs_zywSQ4 → VNI-b7vAR8FWLaaVytLYx}/_ssgManifest.js +0 -0
- /package/.next/static/chunks/{117-b74c3899e29d85d7.js → 117-23260fd0b5f0bd9a.js} +0 -0
- /package/.next/static/chunks/app/_not-found/{page-2573b25f318b094f.js → page-a7be1c556b396c8e.js} +0 -0
- /package/.next/static/chunks/{fd9d1056-2182e078483b259b.js → fd9d1056-8c714984d5b17b60.js} +0 -0
|
@@ -153,6 +153,7 @@ var COMPETITORS_FILE = path2.join(DATA_DIR, "competitors.json");
|
|
|
153
153
|
var POSITIONING_FILE = path2.join(DATA_DIR, "positioning.json");
|
|
154
154
|
var PAGES_FILE = path2.join(DATA_DIR, "pages.json");
|
|
155
155
|
var PAYMENTS_FILE = path2.join(DATA_DIR, "payments.json");
|
|
156
|
+
var SOCIAL_FILE = path2.join(DATA_DIR, "social.json");
|
|
156
157
|
var TEMPLATES_DIR = path2.join(__dirname, "..", "..", "templates");
|
|
157
158
|
var COMMAND_TEMPLATES_DIR = path2.join(TEMPLATES_DIR, "commands");
|
|
158
159
|
|
package/dist/scripts/init.js
CHANGED
|
@@ -132,6 +132,7 @@ var CONFIG_DIR2 = path3.join(process.env.HOME || "", ".vibebusiness");
|
|
|
132
132
|
var LICENSE_FILE = path3.join(CONFIG_DIR2, "license.json");
|
|
133
133
|
var TRIAL_DURATION_DAYS = 14;
|
|
134
134
|
var OFFLINE_GRACE_DAYS = 30;
|
|
135
|
+
var LICENSE_API_URL = "https://vibebusiness.com/api/license/validate";
|
|
135
136
|
var TIER_LIMITS = {
|
|
136
137
|
trial: { maxRepos: 999 },
|
|
137
138
|
// unlimited during trial
|
|
@@ -166,6 +167,25 @@ function maskKey(key) {
|
|
|
166
167
|
if (key.length <= 8) return "****";
|
|
167
168
|
return key.slice(0, 4) + "****" + key.slice(-4);
|
|
168
169
|
}
|
|
170
|
+
async function callValidationAPI(key) {
|
|
171
|
+
try {
|
|
172
|
+
const controller = new AbortController();
|
|
173
|
+
const timeout = setTimeout(() => controller.abort(), 1e4);
|
|
174
|
+
const res = await fetch(LICENSE_API_URL, {
|
|
175
|
+
method: "POST",
|
|
176
|
+
headers: { "Content-Type": "application/json" },
|
|
177
|
+
body: JSON.stringify({ key }),
|
|
178
|
+
signal: controller.signal
|
|
179
|
+
});
|
|
180
|
+
clearTimeout(timeout);
|
|
181
|
+
if (!res.ok) {
|
|
182
|
+
return { valid: false };
|
|
183
|
+
}
|
|
184
|
+
return await res.json();
|
|
185
|
+
} catch {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
169
189
|
function startTrial() {
|
|
170
190
|
const now = /* @__PURE__ */ new Date();
|
|
171
191
|
const expiresAt = new Date(now.getTime() + TRIAL_DURATION_DAYS * 24 * 60 * 60 * 1e3);
|
|
@@ -228,9 +248,30 @@ async function validateLicense() {
|
|
|
228
248
|
}
|
|
229
249
|
const lastValidated = stored.lastValidated ? new Date(stored.lastValidated) : null;
|
|
230
250
|
const daysSinceValidation = lastValidated ? (now.getTime() - lastValidated.getTime()) / (24 * 60 * 60 * 1e3) : Infinity;
|
|
231
|
-
if (daysSinceValidation > 7) {
|
|
232
|
-
const
|
|
233
|
-
if (
|
|
251
|
+
if (daysSinceValidation > 7 && stored.key) {
|
|
252
|
+
const apiResult = await callValidationAPI(stored.key);
|
|
253
|
+
if (apiResult === null) {
|
|
254
|
+
if (daysSinceValidation > OFFLINE_GRACE_DAYS) {
|
|
255
|
+
return {
|
|
256
|
+
status: "expired",
|
|
257
|
+
tier: stored.tier,
|
|
258
|
+
keyMasked: maskKey(stored.key),
|
|
259
|
+
lastValidated: stored.lastValidated,
|
|
260
|
+
expiresAt: stored.expiresAt,
|
|
261
|
+
maxRepos: 0,
|
|
262
|
+
message: `License validation expired (last checked ${Math.floor(daysSinceValidation)} days ago). Connect to the internet to re-validate.`
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
} else if (apiResult.valid) {
|
|
266
|
+
stored.lastValidated = now.toISOString();
|
|
267
|
+
stored.status = "valid";
|
|
268
|
+
if (apiResult.email) stored.email = apiResult.email;
|
|
269
|
+
if (apiResult.tier) stored.tier = apiResult.tier;
|
|
270
|
+
saveStoredLicense(stored);
|
|
271
|
+
} else {
|
|
272
|
+
stored.status = "expired";
|
|
273
|
+
stored.lastValidated = now.toISOString();
|
|
274
|
+
saveStoredLicense(stored);
|
|
234
275
|
return {
|
|
235
276
|
status: "expired",
|
|
236
277
|
tier: stored.tier,
|
|
@@ -238,11 +279,9 @@ async function validateLicense() {
|
|
|
238
279
|
lastValidated: stored.lastValidated,
|
|
239
280
|
expiresAt: stored.expiresAt,
|
|
240
281
|
maxRepos: 0,
|
|
241
|
-
message:
|
|
282
|
+
message: "Subscription expired. Renew at https://vibebusiness.com/pricing to continue."
|
|
242
283
|
};
|
|
243
284
|
}
|
|
244
|
-
stored.lastValidated = now.toISOString();
|
|
245
|
-
saveStoredLicense(stored);
|
|
246
285
|
}
|
|
247
286
|
return {
|
|
248
287
|
status: "valid",
|
|
@@ -443,6 +482,7 @@ var COMPETITORS_FILE = path6.join(DATA_DIR, "competitors.json");
|
|
|
443
482
|
var POSITIONING_FILE = path6.join(DATA_DIR, "positioning.json");
|
|
444
483
|
var PAGES_FILE = path6.join(DATA_DIR, "pages.json");
|
|
445
484
|
var PAYMENTS_FILE = path6.join(DATA_DIR, "payments.json");
|
|
485
|
+
var SOCIAL_FILE = path6.join(DATA_DIR, "social.json");
|
|
446
486
|
var TEMPLATES_DIR = path6.join(__dirname, "..", "..", "templates");
|
|
447
487
|
var COMMAND_TEMPLATES_DIR = path6.join(TEMPLATES_DIR, "commands");
|
|
448
488
|
|
package/dist/scripts/scan.js
CHANGED
|
@@ -300,6 +300,7 @@ var COMPETITORS_FILE = path2.join(DATA_DIR, "competitors.json");
|
|
|
300
300
|
var POSITIONING_FILE = path2.join(DATA_DIR, "positioning.json");
|
|
301
301
|
var PAGES_FILE = path2.join(DATA_DIR, "pages.json");
|
|
302
302
|
var PAYMENTS_FILE = path2.join(DATA_DIR, "payments.json");
|
|
303
|
+
var SOCIAL_FILE = path2.join(DATA_DIR, "social.json");
|
|
303
304
|
var TEMPLATES_DIR = path2.join(__dirname, "..", "..", "templates");
|
|
304
305
|
var COMMAND_TEMPLATES_DIR = path2.join(TEMPLATES_DIR, "commands");
|
|
305
306
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibebusiness",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.41",
|
|
4
4
|
"description": "AI-powered autonomous business analyst. Research. Build. Ship. Grow.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"private": false,
|
|
@@ -69,5 +69,9 @@
|
|
|
69
69
|
"typescript": "^5.4.5",
|
|
70
70
|
"uuid": "^9.0.1",
|
|
71
71
|
"vitest": "^4.0.18"
|
|
72
|
+
},
|
|
73
|
+
"dependencies": {
|
|
74
|
+
"stripe": "^20.3.1",
|
|
75
|
+
"twitter-api-v2": "^1.29.0"
|
|
72
76
|
}
|
|
73
77
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
## Usage
|
|
4
4
|
```
|
|
5
5
|
/email-marketing setup # Guided Loops.so setup wizard
|
|
6
|
+
/email-marketing verify # Verify the email pipeline is working end-to-end
|
|
6
7
|
/email-marketing campaign welcome # Generate a welcome email campaign
|
|
7
8
|
/email-marketing campaign onboarding # Generate an onboarding drip email
|
|
8
9
|
/email-marketing campaign feature-announcement # New feature announcement
|
|
@@ -19,6 +20,77 @@
|
|
|
19
20
|
|
|
20
21
|
Parse `$ARGUMENTS` to determine mode. The first word is the mode, the rest are arguments.
|
|
21
22
|
|
|
23
|
+
## Copy Quality Framework
|
|
24
|
+
|
|
25
|
+
When generating ANY email campaign, follow these rules. They override generic instincts.
|
|
26
|
+
|
|
27
|
+
### Positioning Integration (Required)
|
|
28
|
+
|
|
29
|
+
Before writing, load `data/positioning.json` and extract:
|
|
30
|
+
- **Pain points** — Lead with one that matches the campaign's audience
|
|
31
|
+
- **Messaging pillars** — Weave 1-2 into the body (Autonomous Intelligence, Full Lifecycle Closure, Built for Indie Hackers, Compounding Value)
|
|
32
|
+
- **Objection handlers** — Preempt 1 relevant objection (e.g., "not a ChatGPT wrapper", "can I trust AI?")
|
|
33
|
+
- **Social proof** — Include 1 credibility anchor (user count, autonomous shipping proof, market analysis)
|
|
34
|
+
- **CTA bank** — Pull CTA text from positioning rather than inventing generic ones
|
|
35
|
+
- **Headlines** — Use copy_bank headlines as inspiration for subject lines
|
|
36
|
+
|
|
37
|
+
### Subject Lines
|
|
38
|
+
|
|
39
|
+
Write 3 variations using these formulas:
|
|
40
|
+
1. **Curiosity + outcome**: "The 1 thing that changes how you decide what to build"
|
|
41
|
+
2. **Specific benefit**: "Your first business analysis in 60 seconds"
|
|
42
|
+
3. **Pattern interrupt**: "Every dev tool waits for you. This one doesn't."
|
|
43
|
+
|
|
44
|
+
Rules:
|
|
45
|
+
- Under 50 characters (avoid mobile truncation)
|
|
46
|
+
- No "Welcome to [Product]!" or "We're excited!"
|
|
47
|
+
- Test: would YOU open this from an unknown sender?
|
|
48
|
+
|
|
49
|
+
### Opening Lines
|
|
50
|
+
|
|
51
|
+
NEVER use:
|
|
52
|
+
- "Hey there," / "Hi there," / "Hello,"
|
|
53
|
+
- "Welcome to [Product]!"
|
|
54
|
+
- "We're excited to have you!"
|
|
55
|
+
- "Hope this email finds you well"
|
|
56
|
+
|
|
57
|
+
INSTEAD, use one of these patterns:
|
|
58
|
+
- **Pain-point hook**: "You signed up because you're tired of guessing what to build next."
|
|
59
|
+
- **Outcome statement**: "One command. Your entire business strategy. That's what you just unlocked."
|
|
60
|
+
- **Observation**: "Most dev tools help you write code faster. None of them tell you what code to write."
|
|
61
|
+
- **Direct + warm**: "You're in. Here's the short version of what happens next."
|
|
62
|
+
|
|
63
|
+
### Body Copy Rules
|
|
64
|
+
|
|
65
|
+
- **Length**: 80-150 words for welcome; 150-250 for educational/onboarding
|
|
66
|
+
- **Paragraphs**: Max 2-3 sentences each
|
|
67
|
+
- **One idea per email** — don't feature-dump
|
|
68
|
+
- **Benefits over features**: "decides what to ship next" not "uses AI analysis"
|
|
69
|
+
- **Bold key phrases** for scannability
|
|
70
|
+
- **Address one objection** naturally (not as a FAQ — weave it in)
|
|
71
|
+
- **Include social proof** inline, not as a separate section
|
|
72
|
+
|
|
73
|
+
### CTA Rules
|
|
74
|
+
|
|
75
|
+
- **Primary CTA**: One clear action button. First-person verb: "Start my analysis" not "Get started"
|
|
76
|
+
- **Secondary CTA**: One reply/engagement prompt: "Reply and tell me..."
|
|
77
|
+
- **No vague CTAs**: "Get Started" is banned. Be specific: "Run your first analysis", "See what it finds"
|
|
78
|
+
- **Place primary CTA after the core benefit**, not at the very end
|
|
79
|
+
|
|
80
|
+
### Preview Text
|
|
81
|
+
|
|
82
|
+
Formula: [Pain point or hook] + [time/effort] + [outcome]
|
|
83
|
+
- "Stop guessing what to build. 60 seconds to your first strategy."
|
|
84
|
+
- "Your AI analyst just found 12 ideas you missed."
|
|
85
|
+
|
|
86
|
+
### Tone
|
|
87
|
+
|
|
88
|
+
- **Founder voice** — write as a person, not a brand
|
|
89
|
+
- **Confident, not hype** — "This will change how you work" not "We're SO excited!!!"
|
|
90
|
+
- **Respect the reader's time** — if it can be said in fewer words, do it
|
|
91
|
+
- **Technical credibility** — don't dumb things down for developers
|
|
92
|
+
- **CLI-native language** — reference terminal, commands, repos — not "dashboards" or "platforms"
|
|
93
|
+
|
|
22
94
|
---
|
|
23
95
|
|
|
24
96
|
### Mode: `setup`
|
|
@@ -51,7 +123,66 @@ Interactive Loops.so setup wizard.
|
|
|
51
123
|
}
|
|
52
124
|
```
|
|
53
125
|
|
|
54
|
-
5. **Print
|
|
126
|
+
5. **Print Dashboard Setup Checklist**: After the API setup steps above, print a clear checklist of manual steps the user must complete in the Loops dashboard (the Loops API cannot create templates or automations programmatically):
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
## Manual Loops Dashboard Setup Required
|
|
130
|
+
|
|
131
|
+
The Loops API cannot create templates or automations programmatically.
|
|
132
|
+
Complete these steps in the Loops dashboard (https://app.loops.so):
|
|
133
|
+
|
|
134
|
+
### 1. Create Mailing List
|
|
135
|
+
- Go to: Audience → Lists → Create List
|
|
136
|
+
- Name: "Beta Waitlist"
|
|
137
|
+
|
|
138
|
+
### 2. Create Transactional Email Template
|
|
139
|
+
- Go to: Transactional → New Transactional Email
|
|
140
|
+
- Name: "Welcome — Waitlist"
|
|
141
|
+
- Copy subject/body from: data/email-campaigns/welcome-2026-02-20.md
|
|
142
|
+
- Set reply-to: your personal email
|
|
143
|
+
|
|
144
|
+
### 3. Create Automation
|
|
145
|
+
- Go to: Automations → New Automation
|
|
146
|
+
- Trigger: Event → "waitlist_joined"
|
|
147
|
+
- Action: Send transactional email → "Welcome — Waitlist"
|
|
148
|
+
- Activate the automation
|
|
149
|
+
|
|
150
|
+
### 4. Verify Pipeline
|
|
151
|
+
- Run: /email-marketing verify
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
6. **Print Summary**: What was set up, what was already configured, next steps (run `/email-marketing verify` to test the pipeline).
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
### Mode: `verify`
|
|
159
|
+
|
|
160
|
+
Verify that the full email pipeline (API → mailing lists → templates → automations) is working.
|
|
161
|
+
|
|
162
|
+
1. **Verify API Key**: Call `GET /api/v1/api-key` — print PASS or FAIL
|
|
163
|
+
2. **Check Mailing Lists**: Call the Loops API to list mailing lists — print PASS if at least 1 exists, FAIL with instructions otherwise
|
|
164
|
+
3. **Check Transactional Templates**: Call the Loops API to list transactional email templates — print PASS if at least 1 exists, FAIL with instructions otherwise
|
|
165
|
+
4. **Test Pipeline End-to-End**:
|
|
166
|
+
- Create a test contact with email `test-verify-{timestamp}@example.com`
|
|
167
|
+
- Set properties: `source: "verify_test"`, `userGroup: "test"`
|
|
168
|
+
- Send a `waitlist_joined` event for that contact
|
|
169
|
+
- Print PASS if both API calls succeed
|
|
170
|
+
5. **Print Results Checklist**:
|
|
171
|
+
```
|
|
172
|
+
## Email Pipeline Verification
|
|
173
|
+
|
|
174
|
+
[PASS/FAIL] API Key — valid (team: {teamName})
|
|
175
|
+
[PASS/FAIL] Mailing Lists — {count} found
|
|
176
|
+
[PASS/FAIL] Transactional Templates — {count} found
|
|
177
|
+
[PASS/FAIL] Test Event — waitlist_joined sent to test contact
|
|
178
|
+
|
|
179
|
+
{If all pass:}
|
|
180
|
+
All checks passed! Your email pipeline is ready.
|
|
181
|
+
Submit a real email on your waitlist form to confirm delivery.
|
|
182
|
+
|
|
183
|
+
{If any fail:}
|
|
184
|
+
Some checks failed. Complete the manual setup steps above, then re-run /email-marketing verify.
|
|
185
|
+
```
|
|
55
186
|
|
|
56
187
|
---
|
|
57
188
|
|
|
@@ -68,18 +199,25 @@ Supported types: `welcome`, `onboarding`, `feature-announcement`, `re-engagement
|
|
|
68
199
|
|
|
69
200
|
2. **Generate Campaign** based on type:
|
|
70
201
|
|
|
71
|
-
**`welcome`** — First email after signup:
|
|
72
|
-
- Subject line (3 variations)
|
|
73
|
-
- Preview text
|
|
74
|
-
- Body:
|
|
75
|
-
|
|
76
|
-
|
|
202
|
+
**`welcome`** — First email after waitlist/signup:
|
|
203
|
+
- Subject line (3 variations using formulas above)
|
|
204
|
+
- Preview text (using formula above)
|
|
205
|
+
- Body structure:
|
|
206
|
+
1. Pain-point opening (from positioning pain_points — lead with "decision paralysis")
|
|
207
|
+
2. One-sentence value prop (what they signed up for, in bold)
|
|
208
|
+
3. How it's different (vs Cursor/Copilot — the brain/hands distinction)
|
|
209
|
+
4. What to expect (2-3 bullet points: early access timing, build-in-public updates, no spam)
|
|
210
|
+
5. Engagement CTA: "Reply and tell me: what's the one thing you wish AI could handle?"
|
|
211
|
+
6. Founder sign-off with P.S. (address one objection: BYOK/privacy, cost, or trust)
|
|
212
|
+
- Tone: founder letter, personal, confident — NOT corporate welcome
|
|
213
|
+
- Include personalization tokens: `{{source}}` (no `{{firstName}}` — waitlist form collects email only)
|
|
214
|
+
- DO NOT include: feature lists, setup instructions, or multiple CTAs
|
|
77
215
|
|
|
78
216
|
**`onboarding`** — Guide new users to first value:
|
|
79
217
|
- Subject line (3 variations)
|
|
80
|
-
- Body: acknowledge signup →
|
|
81
|
-
- Focus on time-to-value
|
|
82
|
-
- Include personalization: `{{
|
|
218
|
+
- Body: acknowledge signup → one quick-win action → expected outcome → CTA to first action
|
|
219
|
+
- Focus on time-to-value: "60 seconds to your first analysis"
|
|
220
|
+
- Include personalization: `{{source}}`
|
|
83
221
|
|
|
84
222
|
**`feature-announcement`** — New feature shipped:
|
|
85
223
|
- Subject line (3 variations)
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
exports.id=276,exports.ids=[276],exports.modules={8839:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{bootstrap:function(){return s},error:function(){return c},event:function(){return g},info:function(){return p},prefixes:function(){return a},ready:function(){return d},trace:function(){return f},wait:function(){return u},warn:function(){return l},warnOnce:function(){return v}});let n=r(1354),a={wait:(0,n.white)((0,n.bold)("○")),error:(0,n.red)((0,n.bold)("⨯")),warn:(0,n.yellow)((0,n.bold)("⚠")),ready:"▲",info:(0,n.white)((0,n.bold)(" ")),event:(0,n.green)((0,n.bold)("✓")),trace:(0,n.magenta)((0,n.bold)("\xbb"))},o={log:"log",warn:"warn",error:"error"};function i(e,...t){(""===t[0]||void 0===t[0])&&1===t.length&&t.shift();let r=e in o?o[e]:"log",n=a[e];0===t.length?console[r](""):console[r](" "+n,...t)}function s(...e){console.log(" ",...e)}function u(...e){i("wait",...e)}function c(...e){i("error",...e)}function l(...e){i("warn",...e)}function d(...e){i("ready",...e)}function p(...e){i("info",...e)}function g(...e){i("event",...e)}function f(...e){i("trace",...e)}let _=new Set;function v(...e){_.has(e[0])||(_.add(e.join(" ")),l(...e))}},4789:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DynamicServerError:function(){return n},isDynamicServerError:function(){return a}});let r="DYNAMIC_SERVER_USAGE";class n extends Error{constructor(e){super("Dynamic server usage: "+e),this.description=e,this.digest=r}}function a(e){return"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest&&e.digest===r}("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)},4618:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{StaticGenBailoutError:function(){return n},isStaticGenBailoutError:function(){return a}});let r="NEXT_STATIC_GEN_BAILOUT";class n extends Error{constructor(...e){super(...e),this.code=r}}function a(e){return"object"==typeof e&&null!==e&&"code"in e&&e.code===r}("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)},7482:e=>{(()=>{"use strict";var t={491:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ContextAPI=void 0;let n=r(223),a=r(172),o=r(930),i="context",s=new n.NoopContextManager;class u{constructor(){}static getInstance(){return this._instance||(this._instance=new u),this._instance}setGlobalContextManager(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}active(){return this._getContextManager().active()}with(e,t,r,...n){return this._getContextManager().with(e,t,r,...n)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return(0,a.getGlobal)(i)||s}disable(){this._getContextManager().disable(),(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.ContextAPI=u},930:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagAPI=void 0;let n=r(56),a=r(912),o=r(957),i=r(172);class s{constructor(){function e(e){return function(...t){let r=(0,i.getGlobal)("diag");if(r)return r[e](...t)}}let t=this;t.setLogger=(e,r={logLevel:o.DiagLogLevel.INFO})=>{var n,s,u;if(e===t){let e=Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return t.error(null!==(n=e.stack)&&void 0!==n?n:e.message),!1}"number"==typeof r&&(r={logLevel:r});let c=(0,i.getGlobal)("diag"),l=(0,a.createLogLevelDiagLogger)(null!==(s=r.logLevel)&&void 0!==s?s:o.DiagLogLevel.INFO,e);if(c&&!r.suppressOverrideMessage){let e=null!==(u=Error().stack)&&void 0!==u?u:"<failed to generate stacktrace>";c.warn(`Current logger will be overwritten from ${e}`),l.warn(`Current logger will overwrite one already registered from ${e}`)}return(0,i.registerGlobal)("diag",l,t,!0)},t.disable=()=>{(0,i.unregisterGlobal)("diag",t)},t.createComponentLogger=e=>new n.DiagComponentLogger(e),t.verbose=e("verbose"),t.debug=e("debug"),t.info=e("info"),t.warn=e("warn"),t.error=e("error")}static instance(){return this._instance||(this._instance=new s),this._instance}}t.DiagAPI=s},653:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MetricsAPI=void 0;let n=r(660),a=r(172),o=r(930),i="metrics";class s{constructor(){}static getInstance(){return this._instance||(this._instance=new s),this._instance}setGlobalMeterProvider(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}getMeterProvider(){return(0,a.getGlobal)(i)||n.NOOP_METER_PROVIDER}getMeter(e,t,r){return this.getMeterProvider().getMeter(e,t,r)}disable(){(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.MetricsAPI=s},181:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PropagationAPI=void 0;let n=r(172),a=r(874),o=r(194),i=r(277),s=r(369),u=r(930),c="propagation",l=new a.NoopTextMapPropagator;class d{constructor(){this.createBaggage=s.createBaggage,this.getBaggage=i.getBaggage,this.getActiveBaggage=i.getActiveBaggage,this.setBaggage=i.setBaggage,this.deleteBaggage=i.deleteBaggage}static getInstance(){return this._instance||(this._instance=new d),this._instance}setGlobalPropagator(e){return(0,n.registerGlobal)(c,e,u.DiagAPI.instance())}inject(e,t,r=o.defaultTextMapSetter){return this._getGlobalPropagator().inject(e,t,r)}extract(e,t,r=o.defaultTextMapGetter){return this._getGlobalPropagator().extract(e,t,r)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,n.unregisterGlobal)(c,u.DiagAPI.instance())}_getGlobalPropagator(){return(0,n.getGlobal)(c)||l}}t.PropagationAPI=d},997:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceAPI=void 0;let n=r(172),a=r(846),o=r(139),i=r(607),s=r(930),u="trace";class c{constructor(){this._proxyTracerProvider=new a.ProxyTracerProvider,this.wrapSpanContext=o.wrapSpanContext,this.isSpanContextValid=o.isSpanContextValid,this.deleteSpan=i.deleteSpan,this.getSpan=i.getSpan,this.getActiveSpan=i.getActiveSpan,this.getSpanContext=i.getSpanContext,this.setSpan=i.setSpan,this.setSpanContext=i.setSpanContext}static getInstance(){return this._instance||(this._instance=new c),this._instance}setGlobalTracerProvider(e){let t=(0,n.registerGlobal)(u,this._proxyTracerProvider,s.DiagAPI.instance());return t&&this._proxyTracerProvider.setDelegate(e),t}getTracerProvider(){return(0,n.getGlobal)(u)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){(0,n.unregisterGlobal)(u,s.DiagAPI.instance()),this._proxyTracerProvider=new a.ProxyTracerProvider}}t.TraceAPI=c},277:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteBaggage=t.setBaggage=t.getActiveBaggage=t.getBaggage=void 0;let n=r(491),a=(0,r(780).createContextKey)("OpenTelemetry Baggage Key");function o(e){return e.getValue(a)||void 0}t.getBaggage=o,t.getActiveBaggage=function(){return o(n.ContextAPI.getInstance().active())},t.setBaggage=function(e,t){return e.setValue(a,t)},t.deleteBaggage=function(e){return e.deleteValue(a)}},993:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BaggageImpl=void 0;class r{constructor(e){this._entries=e?new Map(e):new Map}getEntry(e){let t=this._entries.get(e);if(t)return Object.assign({},t)}getAllEntries(){return Array.from(this._entries.entries()).map(([e,t])=>[e,t])}setEntry(e,t){let n=new r(this._entries);return n._entries.set(e,t),n}removeEntry(e){let t=new r(this._entries);return t._entries.delete(e),t}removeEntries(...e){let t=new r(this._entries);for(let r of e)t._entries.delete(r);return t}clear(){return new r}}t.BaggageImpl=r},830:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.baggageEntryMetadataSymbol=void 0,t.baggageEntryMetadataSymbol=Symbol("BaggageEntryMetadata")},369:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.baggageEntryMetadataFromString=t.createBaggage=void 0;let n=r(930),a=r(993),o=r(830),i=n.DiagAPI.instance();t.createBaggage=function(e={}){return new a.BaggageImpl(new Map(Object.entries(e)))},t.baggageEntryMetadataFromString=function(e){return"string"!=typeof e&&(i.error(`Cannot create baggage metadata from unknown type: ${typeof e}`),e=""),{__TYPE__:o.baggageEntryMetadataSymbol,toString:()=>e}}},67:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.context=void 0;let n=r(491);t.context=n.ContextAPI.getInstance()},223:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopContextManager=void 0;let n=r(780);class a{active(){return n.ROOT_CONTEXT}with(e,t,r,...n){return t.call(r,...n)}bind(e,t){return t}enable(){return this}disable(){return this}}t.NoopContextManager=a},780:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ROOT_CONTEXT=t.createContextKey=void 0,t.createContextKey=function(e){return Symbol.for(e)};class r{constructor(e){let t=this;t._currentContext=e?new Map(e):new Map,t.getValue=e=>t._currentContext.get(e),t.setValue=(e,n)=>{let a=new r(t._currentContext);return a._currentContext.set(e,n),a},t.deleteValue=e=>{let n=new r(t._currentContext);return n._currentContext.delete(e),n}}}t.ROOT_CONTEXT=new r},506:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.diag=void 0;let n=r(930);t.diag=n.DiagAPI.instance()},56:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagComponentLogger=void 0;let n=r(172);class a{constructor(e){this._namespace=e.namespace||"DiagComponentLogger"}debug(...e){return o("debug",this._namespace,e)}error(...e){return o("error",this._namespace,e)}info(...e){return o("info",this._namespace,e)}warn(...e){return o("warn",this._namespace,e)}verbose(...e){return o("verbose",this._namespace,e)}}function o(e,t,r){let a=(0,n.getGlobal)("diag");if(a)return r.unshift(t),a[e](...r)}t.DiagComponentLogger=a},972:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagConsoleLogger=void 0;let r=[{n:"error",c:"error"},{n:"warn",c:"warn"},{n:"info",c:"info"},{n:"debug",c:"debug"},{n:"verbose",c:"trace"}];class n{constructor(){for(let e=0;e<r.length;e++)this[r[e].n]=function(e){return function(...t){if(console){let r=console[e];if("function"!=typeof r&&(r=console.log),"function"==typeof r)return r.apply(console,t)}}}(r[e].c)}}t.DiagConsoleLogger=n},912:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createLogLevelDiagLogger=void 0;let n=r(957);t.createLogLevelDiagLogger=function(e,t){function r(r,n){let a=t[r];return"function"==typeof a&&e>=n?a.bind(t):function(){}}return e<n.DiagLogLevel.NONE?e=n.DiagLogLevel.NONE:e>n.DiagLogLevel.ALL&&(e=n.DiagLogLevel.ALL),t=t||{},{error:r("error",n.DiagLogLevel.ERROR),warn:r("warn",n.DiagLogLevel.WARN),info:r("info",n.DiagLogLevel.INFO),debug:r("debug",n.DiagLogLevel.DEBUG),verbose:r("verbose",n.DiagLogLevel.VERBOSE)}}},957:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagLogLevel=void 0,function(e){e[e.NONE=0]="NONE",e[e.ERROR=30]="ERROR",e[e.WARN=50]="WARN",e[e.INFO=60]="INFO",e[e.DEBUG=70]="DEBUG",e[e.VERBOSE=80]="VERBOSE",e[e.ALL=9999]="ALL"}(t.DiagLogLevel||(t.DiagLogLevel={}))},172:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.unregisterGlobal=t.getGlobal=t.registerGlobal=void 0;let n=r(200),a=r(521),o=r(130),i=a.VERSION.split(".")[0],s=Symbol.for(`opentelemetry.js.api.${i}`),u=n._globalThis;t.registerGlobal=function(e,t,r,n=!1){var o;let i=u[s]=null!==(o=u[s])&&void 0!==o?o:{version:a.VERSION};if(!n&&i[e]){let t=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);return r.error(t.stack||t.message),!1}if(i.version!==a.VERSION){let t=Error(`@opentelemetry/api: Registration of version v${i.version} for ${e} does not match previously registered API v${a.VERSION}`);return r.error(t.stack||t.message),!1}return i[e]=t,r.debug(`@opentelemetry/api: Registered a global for ${e} v${a.VERSION}.`),!0},t.getGlobal=function(e){var t,r;let n=null===(t=u[s])||void 0===t?void 0:t.version;if(n&&(0,o.isCompatible)(n))return null===(r=u[s])||void 0===r?void 0:r[e]},t.unregisterGlobal=function(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${a.VERSION}.`);let r=u[s];r&&delete r[e]}},130:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isCompatible=t._makeCompatibilityCheck=void 0;let n=r(521),a=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function o(e){let t=new Set([e]),r=new Set,n=e.match(a);if(!n)return()=>!1;let o={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(null!=o.prerelease)return function(t){return t===e};function i(e){return r.add(e),!1}return function(e){if(t.has(e))return!0;if(r.has(e))return!1;let n=e.match(a);if(!n)return i(e);let s={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};return null!=s.prerelease||o.major!==s.major?i(e):0===o.major?o.minor===s.minor&&o.patch<=s.patch?(t.add(e),!0):i(e):o.minor<=s.minor?(t.add(e),!0):i(e)}}t._makeCompatibilityCheck=o,t.isCompatible=o(n.VERSION)},886:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.metrics=void 0;let n=r(653);t.metrics=n.MetricsAPI.getInstance()},901:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ValueType=void 0,function(e){e[e.INT=0]="INT",e[e.DOUBLE=1]="DOUBLE"}(t.ValueType||(t.ValueType={}))},102:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createNoopMeter=t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=t.NOOP_OBSERVABLE_GAUGE_METRIC=t.NOOP_OBSERVABLE_COUNTER_METRIC=t.NOOP_UP_DOWN_COUNTER_METRIC=t.NOOP_HISTOGRAM_METRIC=t.NOOP_COUNTER_METRIC=t.NOOP_METER=t.NoopObservableUpDownCounterMetric=t.NoopObservableGaugeMetric=t.NoopObservableCounterMetric=t.NoopObservableMetric=t.NoopHistogramMetric=t.NoopUpDownCounterMetric=t.NoopCounterMetric=t.NoopMetric=t.NoopMeter=void 0;class r{constructor(){}createHistogram(e,r){return t.NOOP_HISTOGRAM_METRIC}createCounter(e,r){return t.NOOP_COUNTER_METRIC}createUpDownCounter(e,r){return t.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(e,r){return t.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(e,r){return t.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(e,r){return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(e,t){}removeBatchObservableCallback(e){}}t.NoopMeter=r;class n{}t.NoopMetric=n;class a extends n{add(e,t){}}t.NoopCounterMetric=a;class o extends n{add(e,t){}}t.NoopUpDownCounterMetric=o;class i extends n{record(e,t){}}t.NoopHistogramMetric=i;class s{addCallback(e){}removeCallback(e){}}t.NoopObservableMetric=s;class u extends s{}t.NoopObservableCounterMetric=u;class c extends s{}t.NoopObservableGaugeMetric=c;class l extends s{}t.NoopObservableUpDownCounterMetric=l,t.NOOP_METER=new r,t.NOOP_COUNTER_METRIC=new a,t.NOOP_HISTOGRAM_METRIC=new i,t.NOOP_UP_DOWN_COUNTER_METRIC=new o,t.NOOP_OBSERVABLE_COUNTER_METRIC=new u,t.NOOP_OBSERVABLE_GAUGE_METRIC=new c,t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new l,t.createNoopMeter=function(){return t.NOOP_METER}},660:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NOOP_METER_PROVIDER=t.NoopMeterProvider=void 0;let n=r(102);class a{getMeter(e,t,r){return n.NOOP_METER}}t.NoopMeterProvider=a,t.NOOP_METER_PROVIDER=new a},200:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),a=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),a(r(46),t)},651:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t._globalThis=void 0,t._globalThis="object"==typeof globalThis?globalThis:global},46:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),a=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),a(r(651),t)},939:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.propagation=void 0;let n=r(181);t.propagation=n.PropagationAPI.getInstance()},874:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTextMapPropagator=void 0;class r{inject(e,t){}extract(e,t){return e}fields(){return[]}}t.NoopTextMapPropagator=r},194:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.defaultTextMapSetter=t.defaultTextMapGetter=void 0,t.defaultTextMapGetter={get(e,t){if(null!=e)return e[t]},keys:e=>null==e?[]:Object.keys(e)},t.defaultTextMapSetter={set(e,t,r){null!=e&&(e[t]=r)}}},845:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.trace=void 0;let n=r(997);t.trace=n.TraceAPI.getInstance()},403:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NonRecordingSpan=void 0;let n=r(476);class a{constructor(e=n.INVALID_SPAN_CONTEXT){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return!1}recordException(e,t){}}t.NonRecordingSpan=a},614:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTracer=void 0;let n=r(491),a=r(607),o=r(403),i=r(139),s=n.ContextAPI.getInstance();class u{startSpan(e,t,r=s.active()){if(null==t?void 0:t.root)return new o.NonRecordingSpan;let n=r&&(0,a.getSpanContext)(r);return"object"==typeof n&&"string"==typeof n.spanId&&"string"==typeof n.traceId&&"number"==typeof n.traceFlags&&(0,i.isSpanContextValid)(n)?new o.NonRecordingSpan(n):new o.NonRecordingSpan}startActiveSpan(e,t,r,n){let o,i,u;if(arguments.length<2)return;2==arguments.length?u=t:3==arguments.length?(o=t,u=r):(o=t,i=r,u=n);let c=null!=i?i:s.active(),l=this.startSpan(e,o,c),d=(0,a.setSpan)(c,l);return s.with(d,u,void 0,l)}}t.NoopTracer=u},124:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTracerProvider=void 0;let n=r(614);class a{getTracer(e,t,r){return new n.NoopTracer}}t.NoopTracerProvider=a},125:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyTracer=void 0;let n=new(r(614)).NoopTracer;class a{constructor(e,t,r,n){this._provider=e,this.name=t,this.version=r,this.options=n}startSpan(e,t,r){return this._getTracer().startSpan(e,t,r)}startActiveSpan(e,t,r,n){let a=this._getTracer();return Reflect.apply(a.startActiveSpan,a,arguments)}_getTracer(){if(this._delegate)return this._delegate;let e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):n}}t.ProxyTracer=a},846:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyTracerProvider=void 0;let n=r(125),a=new(r(124)).NoopTracerProvider;class o{getTracer(e,t,r){var a;return null!==(a=this.getDelegateTracer(e,t,r))&&void 0!==a?a:new n.ProxyTracer(this,e,t,r)}getDelegate(){var e;return null!==(e=this._delegate)&&void 0!==e?e:a}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,r){var n;return null===(n=this._delegate)||void 0===n?void 0:n.getTracer(e,t,r)}}t.ProxyTracerProvider=o},996:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SamplingDecision=void 0,function(e){e[e.NOT_RECORD=0]="NOT_RECORD",e[e.RECORD=1]="RECORD",e[e.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"}(t.SamplingDecision||(t.SamplingDecision={}))},607:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSpanContext=t.setSpanContext=t.deleteSpan=t.setSpan=t.getActiveSpan=t.getSpan=void 0;let n=r(780),a=r(403),o=r(491),i=(0,n.createContextKey)("OpenTelemetry Context Key SPAN");function s(e){return e.getValue(i)||void 0}function u(e,t){return e.setValue(i,t)}t.getSpan=s,t.getActiveSpan=function(){return s(o.ContextAPI.getInstance().active())},t.setSpan=u,t.deleteSpan=function(e){return e.deleteValue(i)},t.setSpanContext=function(e,t){return u(e,new a.NonRecordingSpan(t))},t.getSpanContext=function(e){var t;return null===(t=s(e))||void 0===t?void 0:t.spanContext()}},325:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceStateImpl=void 0;let n=r(564);class a{constructor(e){this._internalState=new Map,e&&this._parse(e)}set(e,t){let r=this._clone();return r._internalState.has(e)&&r._internalState.delete(e),r._internalState.set(e,t),r}unset(e){let t=this._clone();return t._internalState.delete(e),t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce((e,t)=>(e.push(t+"="+this.get(t)),e),[]).join(",")}_parse(e){!(e.length>512)&&(this._internalState=e.split(",").reverse().reduce((e,t)=>{let r=t.trim(),a=r.indexOf("=");if(-1!==a){let o=r.slice(0,a),i=r.slice(a+1,t.length);(0,n.validateKey)(o)&&(0,n.validateValue)(i)&&e.set(o,i)}return e},new Map),this._internalState.size>32&&(this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,32))))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let e=new a;return e._internalState=new Map(this._internalState),e}}t.TraceStateImpl=a},564:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateValue=t.validateKey=void 0;let r="[_0-9a-z-*/]",n=`[a-z]${r}{0,255}`,a=`[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`,o=RegExp(`^(?:${n}|${a})$`),i=/^[ -~]{0,255}[!-~]$/,s=/,|=/;t.validateKey=function(e){return o.test(e)},t.validateValue=function(e){return i.test(e)&&!s.test(e)}},98:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createTraceState=void 0;let n=r(325);t.createTraceState=function(e){return new n.TraceStateImpl(e)}},476:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.INVALID_SPAN_CONTEXT=t.INVALID_TRACEID=t.INVALID_SPANID=void 0;let n=r(475);t.INVALID_SPANID="0000000000000000",t.INVALID_TRACEID="00000000000000000000000000000000",t.INVALID_SPAN_CONTEXT={traceId:t.INVALID_TRACEID,spanId:t.INVALID_SPANID,traceFlags:n.TraceFlags.NONE}},357:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SpanKind=void 0,function(e){e[e.INTERNAL=0]="INTERNAL",e[e.SERVER=1]="SERVER",e[e.CLIENT=2]="CLIENT",e[e.PRODUCER=3]="PRODUCER",e[e.CONSUMER=4]="CONSUMER"}(t.SpanKind||(t.SpanKind={}))},139:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wrapSpanContext=t.isSpanContextValid=t.isValidSpanId=t.isValidTraceId=void 0;let n=r(476),a=r(403),o=/^([0-9a-f]{32})$/i,i=/^[0-9a-f]{16}$/i;function s(e){return o.test(e)&&e!==n.INVALID_TRACEID}function u(e){return i.test(e)&&e!==n.INVALID_SPANID}t.isValidTraceId=s,t.isValidSpanId=u,t.isSpanContextValid=function(e){return s(e.traceId)&&u(e.spanId)},t.wrapSpanContext=function(e){return new a.NonRecordingSpan(e)}},847:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SpanStatusCode=void 0,function(e){e[e.UNSET=0]="UNSET",e[e.OK=1]="OK",e[e.ERROR=2]="ERROR"}(t.SpanStatusCode||(t.SpanStatusCode={}))},475:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceFlags=void 0,function(e){e[e.NONE=0]="NONE",e[e.SAMPLED=1]="SAMPLED"}(t.TraceFlags||(t.TraceFlags={}))},521:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0,t.VERSION="1.6.0"}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var o=r[e]={exports:{}},i=!0;try{t[e].call(o.exports,o,o.exports,n),i=!1}finally{i&&delete r[e]}return o.exports}n.ab=__dirname+"/";var a={};(()=>{Object.defineProperty(a,"__esModule",{value:!0}),a.trace=a.propagation=a.metrics=a.diag=a.context=a.INVALID_SPAN_CONTEXT=a.INVALID_TRACEID=a.INVALID_SPANID=a.isValidSpanId=a.isValidTraceId=a.isSpanContextValid=a.createTraceState=a.TraceFlags=a.SpanStatusCode=a.SpanKind=a.SamplingDecision=a.ProxyTracerProvider=a.ProxyTracer=a.defaultTextMapSetter=a.defaultTextMapGetter=a.ValueType=a.createNoopMeter=a.DiagLogLevel=a.DiagConsoleLogger=a.ROOT_CONTEXT=a.createContextKey=a.baggageEntryMetadataFromString=void 0;var e=n(369);Object.defineProperty(a,"baggageEntryMetadataFromString",{enumerable:!0,get:function(){return e.baggageEntryMetadataFromString}});var t=n(780);Object.defineProperty(a,"createContextKey",{enumerable:!0,get:function(){return t.createContextKey}}),Object.defineProperty(a,"ROOT_CONTEXT",{enumerable:!0,get:function(){return t.ROOT_CONTEXT}});var r=n(972);Object.defineProperty(a,"DiagConsoleLogger",{enumerable:!0,get:function(){return r.DiagConsoleLogger}});var o=n(957);Object.defineProperty(a,"DiagLogLevel",{enumerable:!0,get:function(){return o.DiagLogLevel}});var i=n(102);Object.defineProperty(a,"createNoopMeter",{enumerable:!0,get:function(){return i.createNoopMeter}});var s=n(901);Object.defineProperty(a,"ValueType",{enumerable:!0,get:function(){return s.ValueType}});var u=n(194);Object.defineProperty(a,"defaultTextMapGetter",{enumerable:!0,get:function(){return u.defaultTextMapGetter}}),Object.defineProperty(a,"defaultTextMapSetter",{enumerable:!0,get:function(){return u.defaultTextMapSetter}});var c=n(125);Object.defineProperty(a,"ProxyTracer",{enumerable:!0,get:function(){return c.ProxyTracer}});var l=n(846);Object.defineProperty(a,"ProxyTracerProvider",{enumerable:!0,get:function(){return l.ProxyTracerProvider}});var d=n(996);Object.defineProperty(a,"SamplingDecision",{enumerable:!0,get:function(){return d.SamplingDecision}});var p=n(357);Object.defineProperty(a,"SpanKind",{enumerable:!0,get:function(){return p.SpanKind}});var g=n(847);Object.defineProperty(a,"SpanStatusCode",{enumerable:!0,get:function(){return g.SpanStatusCode}});var f=n(475);Object.defineProperty(a,"TraceFlags",{enumerable:!0,get:function(){return f.TraceFlags}});var _=n(98);Object.defineProperty(a,"createTraceState",{enumerable:!0,get:function(){return _.createTraceState}});var v=n(139);Object.defineProperty(a,"isSpanContextValid",{enumerable:!0,get:function(){return v.isSpanContextValid}}),Object.defineProperty(a,"isValidTraceId",{enumerable:!0,get:function(){return v.isValidTraceId}}),Object.defineProperty(a,"isValidSpanId",{enumerable:!0,get:function(){return v.isValidSpanId}});var b=n(476);Object.defineProperty(a,"INVALID_SPANID",{enumerable:!0,get:function(){return b.INVALID_SPANID}}),Object.defineProperty(a,"INVALID_TRACEID",{enumerable:!0,get:function(){return b.INVALID_TRACEID}}),Object.defineProperty(a,"INVALID_SPAN_CONTEXT",{enumerable:!0,get:function(){return b.INVALID_SPAN_CONTEXT}});let h=n(67);Object.defineProperty(a,"context",{enumerable:!0,get:function(){return h.context}});let S=n(506);Object.defineProperty(a,"diag",{enumerable:!0,get:function(){return S.diag}});let m=n(886);Object.defineProperty(a,"metrics",{enumerable:!0,get:function(){return m.metrics}});let E=n(939);Object.defineProperty(a,"propagation",{enumerable:!0,get:function(){return E.propagation}});let y=n(845);Object.defineProperty(a,"trace",{enumerable:!0,get:function(){return y.trace}}),a.default={context:h.context,diag:S.diag,metrics:m.metrics,propagation:E.propagation,trace:y.trace}})(),e.exports=a})()},1943:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_SUFFIX:function(){return u},APP_DIR_ALIAS:function(){return N},CACHE_ONE_YEAR:function(){return m},DOT_NEXT_ALIAS:function(){return P},ESLINT_DEFAULT_DIRS:function(){return X},GSP_NO_RETURNED_VALUE:function(){return B},GSSP_COMPONENT_MEMBER_ERROR:function(){return H},GSSP_NO_RETURNED_VALUE:function(){return U},INSTRUMENTATION_HOOK_FILENAME:function(){return O},MIDDLEWARE_FILENAME:function(){return E},MIDDLEWARE_LOCATION_REGEXP:function(){return y},NEXT_BODY_SUFFIX:function(){return d},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return S},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return f},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return _},NEXT_CACHE_SOFT_TAGS_HEADER:function(){return g},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return h},NEXT_CACHE_TAGS_HEADER:function(){return p},NEXT_CACHE_TAG_MAX_ITEMS:function(){return v},NEXT_CACHE_TAG_MAX_LENGTH:function(){return b},NEXT_DATA_SUFFIX:function(){return c},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return n},NEXT_META_SUFFIX:function(){return l},NEXT_QUERY_PARAM_PREFIX:function(){return r},NON_STANDARD_NODE_ENV:function(){return $},PAGES_DIR_ALIAS:function(){return R},PRERENDER_REVALIDATE_HEADER:function(){return a},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return o},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return w},ROOT_DIR_ALIAS:function(){return T},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return M},RSC_ACTION_ENCRYPTION_ALIAS:function(){return I},RSC_ACTION_PROXY_ALIAS:function(){return A},RSC_ACTION_VALIDATE_ALIAS:function(){return C},RSC_MOD_REF_PROXY_ALIAS:function(){return x},RSC_PREFETCH_SUFFIX:function(){return i},RSC_SUFFIX:function(){return s},SERVER_PROPS_EXPORT_ERROR:function(){return V},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return L},SERVER_PROPS_SSG_CONFLICT:function(){return j},SERVER_RUNTIME:function(){return K},SSG_FALLBACK_EXPORT_ERROR:function(){return k},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return D},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return G},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return F},WEBPACK_LAYERS:function(){return Y},WEBPACK_RESOURCE_QUERIES:function(){return q}});let r="nxtP",n="nxtI",a="x-prerender-revalidate",o="x-prerender-revalidate-if-generated",i=".prefetch.rsc",s=".rsc",u=".action",c=".json",l=".meta",d=".body",p="x-next-cache-tags",g="x-next-cache-soft-tags",f="x-next-revalidated-tags",_="x-next-revalidate-tag-token",v=128,b=256,h=1024,S="_N_T_",m=31536e3,E="middleware",y=`(?:src/)?${E}`,O="instrumentation",R="private-next-pages",P="private-dot-next",T="private-next-root-dir",N="private-next-app-dir",x="next/dist/build/webpack/loaders/next-flight-loader/module-proxy",C="private-next-rsc-action-validate",A="private-next-rsc-server-reference",I="private-next-rsc-action-encryption",M="private-next-rsc-action-client-wrapper",w="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",D="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",L="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",j="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",G="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",V="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",B="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",U="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",F="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",H="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",$='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',k="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",X=["app","pages","components","lib","src"],K={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},W={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",api:"api",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",appMetadataRoute:"app-metadata-route",appRouteHandler:"app-route-handler"},Y={...W,GROUP:{serverOnly:[W.reactServerComponents,W.actionBrowser,W.appMetadataRoute,W.appRouteHandler,W.instrument],clientOnly:[W.serverSideRendering,W.appPagesBrowser],nonClientServerTarget:[W.middleware,W.api],app:[W.reactServerComponents,W.actionBrowser,W.appMetadataRoute,W.appRouteHandler,W.serverSideRendering,W.appPagesBrowser,W.shared,W.instrument]}},q={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},1354:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{bgBlack:function(){return T},bgBlue:function(){return A},bgCyan:function(){return M},bgGreen:function(){return x},bgMagenta:function(){return I},bgRed:function(){return N},bgWhite:function(){return w},bgYellow:function(){return C},black:function(){return v},blue:function(){return m},bold:function(){return c},cyan:function(){return O},dim:function(){return l},gray:function(){return P},green:function(){return h},hidden:function(){return f},inverse:function(){return g},italic:function(){return d},magenta:function(){return E},purple:function(){return y},red:function(){return b},reset:function(){return u},strikethrough:function(){return _},underline:function(){return p},white:function(){return R},yellow:function(){return S}});let{env:n,stdout:a}=(null==(r=globalThis)?void 0:r.process)??{},o=n&&!n.NO_COLOR&&(n.FORCE_COLOR||(null==a?void 0:a.isTTY)&&!n.CI&&"dumb"!==n.TERM),i=(e,t,r,n)=>{let a=e.substring(0,n)+r,o=e.substring(n+t.length),s=o.indexOf(t);return~s?a+i(o,t,r,s):a+o},s=(e,t,r=e)=>o?n=>{let a=""+n,o=a.indexOf(t,e.length);return~o?e+i(a,t,r,o)+t:e+a+t}:String,u=o?e=>`\x1b[0m${e}\x1b[0m`:String,c=s("\x1b[1m","\x1b[22m","\x1b[22m\x1b[1m"),l=s("\x1b[2m","\x1b[22m","\x1b[22m\x1b[2m"),d=s("\x1b[3m","\x1b[23m"),p=s("\x1b[4m","\x1b[24m"),g=s("\x1b[7m","\x1b[27m"),f=s("\x1b[8m","\x1b[28m"),_=s("\x1b[9m","\x1b[29m"),v=s("\x1b[30m","\x1b[39m"),b=s("\x1b[31m","\x1b[39m"),h=s("\x1b[32m","\x1b[39m"),S=s("\x1b[33m","\x1b[39m"),m=s("\x1b[34m","\x1b[39m"),E=s("\x1b[35m","\x1b[39m"),y=s("\x1b[38;2;173;127;168m","\x1b[39m"),O=s("\x1b[36m","\x1b[39m"),R=s("\x1b[37m","\x1b[39m"),P=s("\x1b[90m","\x1b[39m"),T=s("\x1b[40m","\x1b[49m"),N=s("\x1b[41m","\x1b[49m"),x=s("\x1b[42m","\x1b[49m"),C=s("\x1b[43m","\x1b[49m"),A=s("\x1b[44m","\x1b[49m"),I=s("\x1b[45m","\x1b[49m"),M=s("\x1b[46m","\x1b[49m"),w=s("\x1b[47m","\x1b[49m")},8834:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getPathname:function(){return n},isFullStringUrl:function(){return a},parseUrl:function(){return o}});let r="http://n";function n(e){return new URL(e,r).pathname}function a(e){return/https?:\/\//.test(e)}function o(e){let t;try{t=new URL(e,r)}catch{}return t}},6278:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{Postpone:function(){return d},createPostponedAbortSignal:function(){return b},createPrerenderState:function(){return u},formatDynamicAPIAccesses:function(){return _},markCurrentScopeAsDynamic:function(){return c},trackDynamicDataAccessed:function(){return l},trackDynamicFetch:function(){return p},usedDynamicAPIs:function(){return f}});let n=function(e){return e&&e.__esModule?e:{default:e}}(r(1159)),a=r(4789),o=r(4618),i=r(8834),s="function"==typeof n.default.unstable_postpone;function u(e){return{isDebugSkeleton:e,dynamicAccesses:[]}}function c(e,t){let r=(0,i.getPathname)(e.urlPathname);if(!e.isUnstableCacheCallback){if(e.dynamicShouldError)throw new o.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)g(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new a.DynamicServerError(`Route ${r} couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}}function l(e,t){let r=(0,i.getPathname)(e.urlPathname);if(e.isUnstableCacheCallback)throw Error(`Route ${r} used "${t}" inside a function cached with "unstable_cache(...)". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use "${t}" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`);if(e.dynamicShouldError)throw new o.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)g(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new a.DynamicServerError(`Route ${r} couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}function d({reason:e,prerenderState:t,pathname:r}){g(t,e,r)}function p(e,t){e.prerenderState&&g(e.prerenderState,t,e.urlPathname)}function g(e,t,r){v();let a=`Route ${r} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;e.dynamicAccesses.push({stack:e.isDebugSkeleton?Error().stack:void 0,expression:t}),n.default.unstable_postpone(a)}function f(e){return e.dynamicAccesses.length>0}function _(e){return e.dynamicAccesses.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" (<anonymous>)")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}:
|
|
2
|
-
${t}`))}function v(){if(!s)throw Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js")}function b(e){v();let t=new AbortController;try{n.default.unstable_postpone(e)}catch(e){t.abort(e)}return t.signal}},8716:(e,t)=>{"use strict";var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},3191:(e,t,r)=>{"use strict";e.exports=r(399)},1159:(e,t,r)=>{"use strict";e.exports=r(3191).vendored["react-rsc"].React},4300:(e,t)=>{"use strict";function r(e){if(!e.body)return[e,e];let[t,r]=e.body.tee(),n=new Response(t,{status:e.status,statusText:e.statusText,headers:e.headers});Object.defineProperty(n,"url",{value:e.url});let a=new Response(r,{status:e.status,statusText:e.statusText,headers:e.headers});return Object.defineProperty(a,"url",{value:e.url}),[n,a]}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"cloneResponse",{enumerable:!0,get:function(){return r}})},9585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createDedupeFetch",{enumerable:!0,get:function(){return i}});let n=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=o(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var s=a?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(n,i,s):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}(r(1159)),a=r(4300);function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(o=function(e){return e?r:t})(e)}function i(e){let t=n.cache(e=>[]);return function(r,n){let o,i;if(n&&n.signal)return e(r,n);if("string"!=typeof r||n){let t="string"==typeof r||r instanceof URL?new Request(r,n):r;if("GET"!==t.method&&"HEAD"!==t.method||t.keepalive)return e(r,n);i=JSON.stringify([t.method,Array.from(t.headers.entries()),t.mode,t.redirect,t.credentials,t.referrer,t.referrerPolicy,t.integrity]),o=t.url}else i='["GET",[],null,"follow",null,null,null,null]',o=r;let s=t(o);for(let e=0,t=s.length;e<t;e+=1){let[t,r]=s[e];if(t===i)return r.then(()=>{let t=s[e][2];if(!t)throw Error("No cached response");let[r,n]=(0,a.cloneResponse)(t);return s[e][2]=n,r})}let u=new AbortController,c=e(r,{...n,signal:u.signal}),l=[i,c,null];return s.push(l),c.then(e=>{let[t,r]=(0,a.cloneResponse)(e);return l[2]=r,t})}}},670:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addImplicitTags:function(){return f},patchFetch:function(){return v},validateRevalidate:function(){return d},validateTags:function(){return p}});let n=r(1376),a=r(4994),o=r(1943),i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=l(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}(r(8839)),s=r(6278),u=r(9585),c=r(4300);function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(l=function(e){return e?r:t})(e)}function d(e,t){try{let r;if(!1===e)r=e;else if("number"==typeof e&&!isNaN(e)&&e>-1)r=e;else if(void 0!==e)throw Error(`Invalid revalidate value "${e}" on "${t}", must be a non-negative number or "false"`);return r}catch(e){if(e instanceof Error&&e.message.includes("Invalid revalidate"))throw e;return}}function p(e,t){let r=[],n=[];for(let a=0;a<e.length;a++){let i=e[a];if("string"!=typeof i?n.push({tag:i,reason:"invalid type, must be a string"}):i.length>o.NEXT_CACHE_TAG_MAX_LENGTH?n.push({tag:i,reason:`exceeded max length of ${o.NEXT_CACHE_TAG_MAX_LENGTH}`}):r.push(i),r.length>o.NEXT_CACHE_TAG_MAX_ITEMS){console.warn(`Warning: exceeded max tag count for ${t}, dropped tags:`,e.slice(a).join(", "));break}}if(n.length>0)for(let{tag:e,reason:r}of(console.warn(`Warning: invalid tags passed to ${t}: `),n))console.log(`tag: "${e}" ${r}`);return r}let g=e=>{let t=["/layout"];if(e.startsWith("/")){let r=e.split("/");for(let e=1;e<r.length+1;e++){let n=r.slice(0,e).join("/");n&&(n.endsWith("/page")||n.endsWith("/route")||(n=`${n}${n.endsWith("/")?"":"/"}layout`),t.push(n))}}return t};function f(e){var t,r;let n=[],{pagePath:a,urlPathname:i}=e;if(Array.isArray(e.tags)||(e.tags=[]),a)for(let r of g(a))r=`${o.NEXT_CACHE_IMPLICIT_TAG_ID}${r}`,(null==(t=e.tags)?void 0:t.includes(r))||e.tags.push(r),n.push(r);if(i){let t=new URL(i,"http://n").pathname,a=`${o.NEXT_CACHE_IMPLICIT_TAG_ID}${t}`;(null==(r=e.tags)?void 0:r.includes(a))||e.tags.push(a),n.push(a)}return n}function _(e,t){var r;e&&(null==(r=e.requestEndedState)||r.ended)}function v(e){var t;if("__nextPatched"in(t=globalThis.fetch)&&!0===t.__nextPatched)return;let r=(0,u.createDedupeFetch)(globalThis.fetch);globalThis.fetch=function(e,{serverHooks:{DynamicServerError:t},staticGenerationAsyncStorage:r}){let u=async(u,l)=>{var g,v;let b;try{(b=new URL(u instanceof Request?u.url:u)).username="",b.password=""}catch{b=void 0}let h=(null==b?void 0:b.href)??"",S=Date.now(),m=(null==l?void 0:null==(g=l.method)?void 0:g.toUpperCase())||"GET",E=(null==l?void 0:null==(v=l.next)?void 0:v.internal)===!0,y="1"===process.env.NEXT_OTEL_FETCH_DISABLED;return(0,a.getTracer)().trace(E?n.NextNodeServerSpan.internalFetch:n.AppRenderSpan.fetch,{hideSpan:y,kind:a.SpanKind.CLIENT,spanName:["fetch",m,h].filter(Boolean).join(" "),attributes:{"http.url":h,"http.method":m,"net.peer.name":null==b?void 0:b.hostname,"net.peer.port":(null==b?void 0:b.port)||void 0}},async()=>{var n;let a,g,v;if(E)return e(u,l);let b=r.getStore();if(!b||b.isDraftMode)return e(u,l);let m=u&&"object"==typeof u&&"string"==typeof u.method,y=e=>(null==l?void 0:l[e])||(m?u[e]:null),O=e=>{var t,r,n;return void 0!==(null==l?void 0:null==(t=l.next)?void 0:t[e])?null==l?void 0:null==(r=l.next)?void 0:r[e]:m?null==(n=u.next)?void 0:n[e]:void 0},R=O("revalidate"),P=p(O("tags")||[],`fetch ${u.toString()}`);if(Array.isArray(P))for(let e of(b.tags||(b.tags=[]),P))b.tags.includes(e)||b.tags.push(e);let T=f(b),N=b.fetchCache,x=!!b.isUnstableNoStore,C=y("cache"),A="";"string"==typeof C&&void 0!==R&&(m&&"default"===C||i.warn(`fetch for ${h} on ${b.urlPathname} specified "cache: ${C}" and "revalidate: ${R}", only one should be specified.`),C=void 0),"force-cache"===C?R=!1:("no-cache"===C||"no-store"===C||"force-no-store"===N||"only-no-store"===N)&&(R=0),("no-cache"===C||"no-store"===C)&&(A=`cache: ${C}`),v=d(R,b.urlPathname);let I=y("headers"),M="function"==typeof(null==I?void 0:I.get)?I:new Headers(I||{}),w=M.get("authorization")||M.get("cookie"),D=!["get","head"].includes((null==(n=y("method"))?void 0:n.toLowerCase())||"get"),L=(w||D)&&0===b.revalidate;switch(N){case"force-no-store":A="fetchCache = force-no-store";break;case"only-no-store":if("force-cache"===C||void 0!==v&&(!1===v||v>0))throw Error(`cache: 'force-cache' used on fetch for ${h} with 'export const fetchCache = 'only-no-store'`);A="fetchCache = only-no-store";break;case"only-cache":if("no-store"===C)throw Error(`cache: 'no-store' used on fetch for ${h} with 'export const fetchCache = 'only-cache'`);break;case"force-cache":(void 0===R||0===R)&&(A="fetchCache = force-cache",v=!1)}void 0===v?"default-cache"===N?(v=!1,A="fetchCache = default-cache"):L?(v=0,A="auto no cache"):"default-no-store"===N?(v=0,A="fetchCache = default-no-store"):x?(v=0,A="noStore call"):(A="auto cache",v="boolean"!=typeof b.revalidate&&void 0!==b.revalidate&&b.revalidate):A||(A=`revalidate: ${v}`),b.forceStatic&&0===v||L||void 0!==b.revalidate&&("number"!=typeof v||!1!==b.revalidate&&("number"!=typeof b.revalidate||!(v<b.revalidate)))||(0===v&&(0,s.trackDynamicFetch)(b,"revalidate: 0"),b.revalidate=v);let j="number"==typeof v&&v>0||!1===v;if(b.incrementalCache&&j)try{a=await b.incrementalCache.fetchCacheKey(h,m?u:l)}catch(e){console.error("Failed to generate cache key for",u)}let G=b.nextFetchId??1;b.nextFetchId=G+1;let V="number"!=typeof v?o.CACHE_ONE_YEAR:v,B=async(t,r)=>{let n=["cache","credentials","headers","integrity","keepalive","method","mode","redirect","referrer","referrerPolicy","window","duplex",...t?[]:["signal"]];if(m){let e=u,t={body:e._ogBody||e.body};for(let r of n)t[r]=e[r];u=new Request(e.url,t)}else if(l){let{_ogBody:e,body:r,signal:n,...a}=l;l={...a,body:e||r,signal:t?void 0:n}}let o={...l,next:{...null==l?void 0:l.next,fetchType:"origin",fetchIdx:G}};return e(u,o).then(async e=>{if(t||_(b,{start:S,url:h,cacheReason:r||A,cacheStatus:0===v||r?"skip":"miss",status:e.status,method:o.method||"GET"}),200===e.status&&b.incrementalCache&&a&&j){let t=Buffer.from(await e.arrayBuffer());try{await b.incrementalCache.set(a,{kind:"FETCH",data:{headers:Object.fromEntries(e.headers.entries()),body:t.toString("base64"),status:e.status,url:e.url},revalidate:V},{fetchCache:!0,revalidate:v,fetchUrl:h,fetchIdx:G,tags:P})}catch(e){console.warn("Failed to set fetch cache",u,e)}let r=new Response(t,{headers:new Headers(e.headers),status:e.status});return Object.defineProperty(r,"url",{value:e.url}),r}return e})},U=()=>Promise.resolve(),F=!1;if(a&&b.incrementalCache){U=await b.incrementalCache.lock(a);let e=b.isOnDemandRevalidate?null:await b.incrementalCache.get(a,{kindHint:"fetch",revalidate:v,fetchUrl:h,fetchIdx:G,tags:P,softTags:T});if(e?await U():g="cache-control: no-cache (hard refresh)",(null==e?void 0:e.value)&&"FETCH"===e.value.kind){if(b.isRevalidate&&e.isStale)F=!0;else{if(e.isStale&&(b.pendingRevalidates??={},!b.pendingRevalidates[a])){let e=B(!0).then(async e=>({body:await e.arrayBuffer(),headers:e.headers,status:e.status,statusText:e.statusText})).finally(()=>{b.pendingRevalidates??={},delete b.pendingRevalidates[a||""]});e.catch(console.error),b.pendingRevalidates[a]=e}let t=e.value.data;_(b,{start:S,url:h,cacheReason:A,cacheStatus:"hit",status:t.status||200,method:(null==l?void 0:l.method)||"GET"});let r=new Response(Buffer.from(t.body,"base64"),{headers:t.headers,status:t.status});return Object.defineProperty(r,"url",{value:e.value.data.url}),r}}}if(b.isStaticGeneration&&l&&"object"==typeof l){let{cache:e}=l;if(!b.forceStatic&&"no-store"===e){let e=`no-store fetch ${u}${b.urlPathname?` ${b.urlPathname}`:""}`;(0,s.trackDynamicFetch)(b,e),b.revalidate=0;let r=new t(e);throw b.dynamicUsageErr=r,b.dynamicUsageDescription=e,r}let r="next"in l,{next:n={}}=l;if("number"==typeof n.revalidate&&(void 0===b.revalidate||"number"==typeof b.revalidate&&n.revalidate<b.revalidate)){if(!b.forceDynamic&&!b.forceStatic&&0===n.revalidate){let e=`revalidate: 0 fetch ${u}${b.urlPathname?` ${b.urlPathname}`:""}`;(0,s.trackDynamicFetch)(b,e);let r=new t(e);throw b.dynamicUsageErr=r,b.dynamicUsageDescription=e,r}b.forceStatic&&0===n.revalidate||(b.revalidate=n.revalidate)}r&&delete l.next}if(!a||!F)return B(!1,g).finally(U);{b.pendingRevalidates??={};let e=b.pendingRevalidates[a];if(e){let t=await e;return new Response(t.body,{headers:t.headers,status:t.status,statusText:t.statusText})}let t=B(!0,g).then(c.cloneResponse);return(e=t.then(async e=>{let t=e[0];return{body:await t.arrayBuffer(),headers:t.headers,status:t.status,statusText:t.statusText}}).finally(()=>{if(a){var e;(null==(e=b.pendingRevalidates)?void 0:e[a])&&delete b.pendingRevalidates[a]}})).catch(()=>{}),b.pendingRevalidates[a]=e,t.then(e=>e[1])}})};return u.__nextPatched=!0,u.__nextGetStaticStore=()=>r,u._nextOriginalFetch=e,u}(r,e)}},1376:(e,t)=>{"use strict";var r,n,a,o,i,s,u,c,l,d,p,g;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AppRenderSpan:function(){return u},AppRouteRouteHandlersSpan:function(){return d},BaseServerSpan:function(){return r},LoadComponentsSpan:function(){return n},LogSpanAllowList:function(){return _},MiddlewareSpan:function(){return g},NextNodeServerSpan:function(){return o},NextServerSpan:function(){return a},NextVanillaSpanAllowlist:function(){return f},NodeSpan:function(){return l},RenderSpan:function(){return s},ResolveMetadataSpan:function(){return p},RouterSpan:function(){return c},StartServerSpan:function(){return i}}),function(e){e.handleRequest="BaseServer.handleRequest",e.run="BaseServer.run",e.pipe="BaseServer.pipe",e.getStaticHTML="BaseServer.getStaticHTML",e.render="BaseServer.render",e.renderToResponseWithComponents="BaseServer.renderToResponseWithComponents",e.renderToResponse="BaseServer.renderToResponse",e.renderToHTML="BaseServer.renderToHTML",e.renderError="BaseServer.renderError",e.renderErrorToResponse="BaseServer.renderErrorToResponse",e.renderErrorToHTML="BaseServer.renderErrorToHTML",e.render404="BaseServer.render404"}(r||(r={})),function(e){e.loadDefaultErrorComponents="LoadComponents.loadDefaultErrorComponents",e.loadComponents="LoadComponents.loadComponents"}(n||(n={})),function(e){e.getRequestHandler="NextServer.getRequestHandler",e.getServer="NextServer.getServer",e.getServerRequestHandler="NextServer.getServerRequestHandler",e.createServer="createServer.createServer"}(a||(a={})),function(e){e.compression="NextNodeServer.compression",e.getBuildId="NextNodeServer.getBuildId",e.createComponentTree="NextNodeServer.createComponentTree",e.clientComponentLoading="NextNodeServer.clientComponentLoading",e.getLayoutOrPageModule="NextNodeServer.getLayoutOrPageModule",e.generateStaticRoutes="NextNodeServer.generateStaticRoutes",e.generateFsStaticRoutes="NextNodeServer.generateFsStaticRoutes",e.generatePublicRoutes="NextNodeServer.generatePublicRoutes",e.generateImageRoutes="NextNodeServer.generateImageRoutes.route",e.sendRenderResult="NextNodeServer.sendRenderResult",e.proxyRequest="NextNodeServer.proxyRequest",e.runApi="NextNodeServer.runApi",e.render="NextNodeServer.render",e.renderHTML="NextNodeServer.renderHTML",e.imageOptimizer="NextNodeServer.imageOptimizer",e.getPagePath="NextNodeServer.getPagePath",e.getRoutesManifest="NextNodeServer.getRoutesManifest",e.findPageComponents="NextNodeServer.findPageComponents",e.getFontManifest="NextNodeServer.getFontManifest",e.getServerComponentManifest="NextNodeServer.getServerComponentManifest",e.getRequestHandler="NextNodeServer.getRequestHandler",e.renderToHTML="NextNodeServer.renderToHTML",e.renderError="NextNodeServer.renderError",e.renderErrorToHTML="NextNodeServer.renderErrorToHTML",e.render404="NextNodeServer.render404",e.startResponse="NextNodeServer.startResponse",e.route="route",e.onProxyReq="onProxyReq",e.apiResolver="apiResolver",e.internalFetch="internalFetch"}(o||(o={})),(i||(i={})).startServer="startServer.startServer",function(e){e.getServerSideProps="Render.getServerSideProps",e.getStaticProps="Render.getStaticProps",e.renderToString="Render.renderToString",e.renderDocument="Render.renderDocument",e.createBodyResult="Render.createBodyResult"}(s||(s={})),function(e){e.renderToString="AppRender.renderToString",e.renderToReadableStream="AppRender.renderToReadableStream",e.getBodyResult="AppRender.getBodyResult",e.fetch="AppRender.fetch"}(u||(u={})),(c||(c={})).executeRoute="Router.executeRoute",(l||(l={})).runHandler="Node.runHandler",(d||(d={})).runHandler="AppRouteRouteHandlers.runHandler",function(e){e.generateMetadata="ResolveMetadata.generateMetadata",e.generateViewport="ResolveMetadata.generateViewport"}(p||(p={})),(g||(g={})).execute="Middleware.execute";let f=["Middleware.execute","BaseServer.handleRequest","Render.getServerSideProps","Render.getStaticProps","AppRender.fetch","AppRender.getBodyResult","Render.renderDocument","Node.runHandler","AppRouteRouteHandlers.runHandler","ResolveMetadata.generateMetadata","ResolveMetadata.generateViewport","NextNodeServer.createComponentTree","NextNodeServer.findPageComponents","NextNodeServer.getLayoutOrPageModule","NextNodeServer.startResponse","NextNodeServer.clientComponentLoading"],_=["NextNodeServer.findPageComponents","NextNodeServer.createComponentTree","NextNodeServer.clientComponentLoading"]},4994:(e,t,r)=>{"use strict";let n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{SpanKind:function(){return c},SpanStatusCode:function(){return u},getTracer:function(){return h}});let a=r(1376);try{n=r(7482)}catch(e){n=r(7482)}let{context:o,propagation:i,trace:s,SpanStatusCode:u,SpanKind:c,ROOT_CONTEXT:l}=n,d=e=>null!==e&&"object"==typeof e&&"function"==typeof e.then,p=(e,t)=>{(null==t?void 0:t.bubble)===!0?e.setAttribute("next.bubble",!0):(t&&e.recordException(t),e.setStatus({code:u.ERROR,message:null==t?void 0:t.message})),e.end()},g=new Map,f=n.createContextKey("next.rootSpanId"),_=0,v=()=>_++;class b{getTracerInstance(){return s.getTracer("next.js","0.0.1")}getContext(){return o}getActiveScopeSpan(){return s.getSpan(null==o?void 0:o.active())}withPropagatedContext(e,t,r){let n=o.active();if(s.getSpanContext(n))return t();let a=i.extract(n,e,r);return o.with(a,t)}trace(...e){var t;let[r,n,i]=e,{fn:u,options:c}="function"==typeof n?{fn:n,options:{}}:{fn:i,options:{...n}},_=c.spanName??r;if(!a.NextVanillaSpanAllowlist.includes(r)&&"1"!==process.env.NEXT_OTEL_VERBOSE||c.hideSpan)return u();let b=this.getSpanContext((null==c?void 0:c.parentSpan)??this.getActiveScopeSpan()),h=!1;b?(null==(t=s.getSpanContext(b))?void 0:t.isRemote)&&(h=!0):(b=(null==o?void 0:o.active())??l,h=!0);let S=v();return c.attributes={"next.span_name":_,"next.span_type":r,...c.attributes},o.with(b.setValue(f,S),()=>this.getTracerInstance().startActiveSpan(_,c,e=>{let t="performance"in globalThis?globalThis.performance.now():void 0,n=()=>{g.delete(S),t&&process.env.NEXT_OTEL_PERFORMANCE_PREFIX&&a.LogSpanAllowList.includes(r||"")&&performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(r.split(".").pop()||"").replace(/[A-Z]/g,e=>"-"+e.toLowerCase())}`,{start:t,end:performance.now()})};h&&g.set(S,new Map(Object.entries(c.attributes??{})));try{if(u.length>1)return u(e,t=>p(e,t));let t=u(e);if(d(t))return t.then(t=>(e.end(),t)).catch(t=>{throw p(e,t),t}).finally(n);return e.end(),n(),t}catch(t){throw p(e,t),n(),t}}))}wrap(...e){let t=this,[r,n,i]=3===e.length?e:[e[0],{},e[1]];return a.NextVanillaSpanAllowlist.includes(r)||"1"===process.env.NEXT_OTEL_VERBOSE?function(){let e=n;"function"==typeof e&&"function"==typeof i&&(e=e.apply(this,arguments));let a=arguments.length-1,s=arguments[a];if("function"!=typeof s)return t.trace(r,e,()=>i.apply(this,arguments));{let n=t.getContext().bind(o.active(),s);return t.trace(r,e,(e,t)=>(arguments[a]=function(e){return null==t||t(e),n.apply(this,arguments)},i.apply(this,arguments)))}}:i}startSpan(...e){let[t,r]=e,n=this.getSpanContext((null==r?void 0:r.parentSpan)??this.getActiveScopeSpan());return this.getTracerInstance().startSpan(t,r,n)}getSpanContext(e){return e?s.setSpan(o.active(),e):void 0}getRootSpanAttributes(){let e=o.active().getValue(f);return g.get(e)}}let h=(()=>{let e=new b;return()=>e})()},8238:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return r}});class r{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=416,exports.ids=[416],exports.modules={1416:(t,e,a)=>{a.d(e,{Ir:()=>v,Pk:()=>P,QV:()=>q,Xe:()=>K,B_:()=>Z,HZ:()=>M,BM:()=>H,t:()=>S,N0:()=>E,s6:()=>F,x5:()=>T,HX:()=>D,lo:()=>tt,iE:()=>ti,uQ:()=>f,zg:()=>X,_1:()=>R,a9:()=>$,M6:()=>U,c5:()=>B,kU:()=>G,b_:()=>j,Iw:()=>y,NY:()=>b,ad:()=>O,Rx:()=>k,KG:()=>tr,Ge:()=>V,pL:()=>x,rF:()=>tn,rK:()=>z,LB:()=>A,k4:()=>L,pG:()=>I,dZ:()=>N});var i=a(2048),n=a(5315),s=a.n(n),r=a(4770),o=a.n(r);let d={randomUUID:o().randomUUID},l=new Uint8Array(256),c=l.length,u=[];for(let t=0;t<256;++t)u.push((t+256).toString(16).slice(1));let p=function(t,e,a){if(d.randomUUID&&!e&&!t)return d.randomUUID();let i=(t=t||{}).random||(t.rng||function(){return c>l.length-16&&(o().randomFillSync(l),c=0),l.slice(c,c+=16)})();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){a=a||0;for(let t=0;t<16;++t)e[a+t]=i[t];return e}return function(t,e=0){return u[t[e+0]]+u[t[e+1]]+u[t[e+2]]+u[t[e+3]]+"-"+u[t[e+4]]+u[t[e+5]]+"-"+u[t[e+6]]+u[t[e+7]]+"-"+u[t[e+8]]+u[t[e+9]]+"-"+u[t[e+10]]+u[t[e+11]]+u[t[e+12]]+u[t[e+13]]+u[t[e+14]]+u[t[e+15]]}(i)},_={status:"pending",first_evaluated_at:null,last_evaluated_at:null,evaluation_count:0,next_evaluation_after:null,summary:null,metric_evaluations:[],confidence:null,follow_up_idea_ids:[],requires_human_review:!1,human_review_reason:null,kpi_snapshot_at_ship:[]};function f(){return process.env.AI_ANALYST_DATA_DIR||s().join(process.cwd(),"data")}function m(t){return s().join(f(),t)}async function g(){try{await i.promises.access(f())}catch{await i.promises.mkdir(f(),{recursive:!0})}}async function w(t,e){try{let e=await i.promises.readFile(t,"utf-8");return JSON.parse(e)}catch{return e}}async function h(t,e){await g(),await i.promises.writeFile(t,JSON.stringify(e,null,2),"utf-8")}async function y(){return(await w(m("ideas.json"),{ideas:[]})).ideas.map(t=>({...t,epic_id:t.epic_id??null,implementation:{...t.implementation,sub_tasks:t.implementation?.sub_tasks||[]}}))}async function j(t){return(await y()).find(e=>e.id===t)||null}async function S(t){let e=await y(),a=new Date().toISOString(),i={id:`idea-${p().slice(0,8)}`,created_at:a,updated_at:a,title:t.title,summary:t.summary,category:t.category,priority:t.priority,effort:t.effort,impact:t.impact,context:t.context,rationale:t.rationale,implementation_plan:t.implementation_plan,success_metrics:t.success_metrics,stage:"inbox",source:t.source,implementation:{branch_name:null,pr_url:null,pr_number:null,commits:[],started_at:null,completed_at:null,sub_tasks:[]},comments:[],tags:t.tags||[],related_ideas:[],goal_id:t.goal_id||null,expected_impact:t.expected_impact||null,hypothesis_id:t.hypothesis_id||null,epic_id:t.epic_id||null,prerequisites:t.prerequisites};return e.push(i),await h(m("ideas.json"),{ideas:e}),i.hypothesis_id&&await Y(i.hypothesis_id,i.id),i}async function I(t,e){let a=await y(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a[i],...e,updated_at:new Date().toISOString()};return a[i]=n,await h(m("ideas.json"),{ideas:a}),n}async function x(t,e,a){let i=await y(),n=i.findIndex(e=>e.id===t);if(-1===n)return null;let s=i[n],r=new Date().toISOString();if(a){let t={id:`comment-${p().slice(0,8)}`,created_at:r,author:"human",author_name:"Founder",content:a};s.comments.push(t)}if(s.stage=e,s.updated_at=r,"in_progress"!==e||s.implementation.started_at){if("shipped"===e){s.implementation.completed_at=r;let t=[];if(s.goal_id){let e=(await U()).find(t=>t.id===s.goal_id);if(e)for(let a of e.kpis)t.push({goal_id:e.id,kpi_id:a.id,kpi_name:a.name,value:a.current_value,date:r})}s.verification={..._,kpi_snapshot_at_ship:t}}}else s.implementation.started_at=r;return i[n]=s,await h(m("ideas.json"),{ideas:i}),s}async function v(t,e){let a=await y(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={id:`comment-${p().slice(0,8)}`,created_at:new Date().toISOString(),author:e.author,author_name:e.author_name,content:e.content};return a[i].comments.push(n),a[i].updated_at=new Date().toISOString(),await h(m("ideas.json"),{ideas:a}),n}async function D(t){let e=await y(),a=e.findIndex(e=>e.id===t);return -1!==a&&(e.splice(a,1),await h(m("ideas.json"),{ideas:e}),!0)}async function k(){return(await w(m("sessions.json"),{sessions:[]})).sessions}async function O(){return(await w(m("implementations.json"),{implementations:[]})).implementations}async function b(t){return(await O()).find(e=>e.idea_id===t&&"failed"!==e.status)||null}async function U(){return(await w(m("goals.json"),{goals:[]})).goals}async function $(t){return(await U()).find(e=>e.id===t)||null}async function M(t){let e=await U(),a=new Date().toISOString(),i=(t.kpis||[]).map((t,e)=>({...t,id:`kpi-${p().slice(0,8)}`,history:[]})),n={id:`goal-${p().slice(0,8)}`,created_at:a,updated_at:a,title:t.title,description:t.description,category:t.category,target_value:t.target_value,target_unit:t.target_unit,current_value:null,baseline_value:t.baseline_value||0,deadline:t.deadline,status:"on_track",kpis:i,related_ideas:[]};return e.push(n),await h(m("goals.json"),{goals:e}),n}async function A(t,e){let a=await U(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a[i],...e,updated_at:new Date().toISOString()};return a[i]=n,await h(m("goals.json"),{goals:a}),n}async function F(t){let e=await U(),a=e.findIndex(e=>e.id===t);return -1!==a&&(e.splice(a,1),await h(m("goals.json"),{goals:e}),!0)}async function N(t,e,a){let i=await U(),n=i.findIndex(e=>e.id===t);if(-1===n)return null;let s=i[n].kpis.findIndex(t=>t.id===e);if(-1===s)return null;let r={...i[n].kpis[s],...a};return i[n].kpis[s]=r,i[n].updated_at=new Date().toISOString(),await h(m("goals.json"),{goals:i}),r}async function q(t,e,a){let i=await U(),n=i.findIndex(e=>e.id===t);if(-1===n)return null;let s=i[n].kpis.findIndex(t=>t.id===e);if(-1===s)return null;let r={date:a.date||new Date().toISOString().split("T")[0],value:a.value};return i[n].kpis[s].history.push(r),i[n].kpis[s].current_value=a.value,i[n].updated_at=new Date().toISOString(),await h(m("goals.json"),{goals:i}),i[n].kpis[s]}async function B(){return(await w(m("hypotheses.json"),{hypotheses:[]})).hypotheses}async function G(t){return(await B()).find(e=>e.id===t)||null}async function H(t){let e=await B(),a=new Date().toISOString(),i={id:`hyp-${String(e.length+1).padStart(3,"0")}`,created_at:a,updated_at:a,title:t.title,statement:t.statement,description:t.description,funnel_stage:t.funnel_stage,priority:t.priority,status:"stated",evidence_for:[],evidence_against:[],validation_criteria:[],validation_ideas:[],reference_model:t.reference_model,effort_to_test:t.effort_to_test,tags:t.tags||[]};return e.push(i),await h(m("hypotheses.json"),{hypotheses:e}),i}async function L(t,e){let a=await B(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a[i],...e,updated_at:new Date().toISOString()};return a[i]=n,await h(m("hypotheses.json"),{hypotheses:a}),n}async function T(t){let e=await B(),a=e.findIndex(e=>e.id===t);return -1!==a&&(e.splice(a,1),await h(m("hypotheses.json"),{hypotheses:e}),!0)}async function Y(t,e){let a=await B(),i=a.findIndex(e=>e.id===t);return -1===i?null:(a[i].validation_ideas.includes(e)||(a[i].validation_ideas.push(e),a[i].updated_at=new Date().toISOString(),await h(m("hypotheses.json"),{hypotheses:a})),a[i])}let J={xs:1,s:2,m:3,l:5,xl:8};function K(t,e){let a=e.filter(e=>t.idea_ids.includes(e.id)),i={},n=0,s=0;for(let t of a){i[t.stage]=(i[t.stage]||0)+1;let e=J[t.effort]||3;n+=e,"shipped"===t.stage&&(s+=e)}let r=i.shipped||0,o=a.length;return{total_ideas:o,by_stage:i,shipped_count:r,progress_pct:o>0?Math.round(r/o*100):0,effort_total:n,effort_completed:s}}function Q(t,e){if(t.status_override)return t.status;let a=e.filter(e=>t.idea_ids.includes(e.id));return 0===a.length?"planned":a.every(t=>"shipped"===t.stage||"rejected"===t.stage)?"completed":a.some(t=>"in_progress"===t.stage||"testing"===t.stage)?"active":"planned"}async function R(){let t=await w(m("roadmap.json"),{epics:[]}),e=await y();return t.epics.map(t=>({...t,status:Q(t,e)}))}async function X(t){return(await R()).find(e=>e.id===t)||null}async function Z(t){let e=await w(m("roadmap.json"),{epics:[]}),a=new Date().toISOString(),i={id:`epic-${p().slice(0,8)}`,created_at:a,updated_at:a,title:t.title,description:t.description,category:t.category,goal_id:t.goal_id??null,hypothesis_id:t.hypothesis_id??null,idea_ids:t.idea_ids||[],target_start:t.target_start??null,target_end:t.target_end??null,status:"planned",status_override:!1,depends_on:t.depends_on||[],sort_order:t.sort_order??e.epics.length,auto_generated:t.auto_generated??!1,rationale:t.rationale??null,tags:t.tags||[]};if(e.epics.push(i),await h(m("roadmap.json"),e),i.idea_ids.length>0){let t=await y(),e=!1;for(let a of t)i.idea_ids.includes(a.id)&&a.epic_id!==i.id&&(a.epic_id=i.id,e=!0);e&&await h(m("ideas.json"),{ideas:t})}return i}async function z(t,e){let a=await w(m("roadmap.json"),{epics:[]}),i=a.epics.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a.epics[i],...e,updated_at:new Date().toISOString()};a.epics[i]=n,await h(m("roadmap.json"),a);let s=await y();return n.status=Q(n,s),n}async function E(t){let e=await w(m("roadmap.json"),{epics:[]}),a=e.epics.findIndex(e=>e.id===t);if(-1===a)return!1;let i=e.epics[a];if(e.epics.splice(a,1),await h(m("roadmap.json"),e),i.idea_ids.length>0){let e=await y(),a=!1;for(let i of e)i.epic_id===t&&(i.epic_id=null,a=!0);a&&await h(m("ideas.json"),{ideas:e})}return!0}async function P(t,e){let a=await w(m("roadmap.json"),{epics:[]}),i=a.epics.findIndex(e=>e.id===t);if(-1===i)return null;a.epics[i].idea_ids.includes(e)||(a.epics[i].idea_ids.push(e),a.epics[i].updated_at=new Date().toISOString(),await h(m("roadmap.json"),a));let n=await y(),s=n.find(t=>t.id===e);return s&&s.epic_id!==t&&(s.epic_id=t,await h(m("ideas.json"),{ideas:n})),a.epics[i]}async function V(t,e){let a=await w(m("roadmap.json"),{epics:[]}),i=a.epics.findIndex(e=>e.id===t);if(-1===i)return null;let n=a.epics[i].idea_ids.indexOf(e);-1!==n&&(a.epics[i].idea_ids.splice(n,1),a.epics[i].updated_at=new Date().toISOString(),await h(m("roadmap.json"),a));let s=await y(),r=s.find(t=>t.id===e);return r&&r.epic_id===t&&(r.epic_id=null,await h(m("ideas.json"),{ideas:s})),a.epics[i]}function C(t,e){let a=new Date(t),i=0;for(;i<e;){a.setDate(a.getDate()+1);let t=a.getDay();0!==t&&6!==t&&i++}return a}function W(t){let[e,a,i]=t.split("-").map(Number);return new Date(e,a-1,i)}function tt(t,e,a){let i=new Map,n=new Date;n.setHours(0,0,0,0);let s=new Map;for(let e of[...t].sort((t,e)=>t.sort_order-e.sort_order)){let t=e.goal_id,a=s.get(t);a?a.push(e):s.set(t,[e])}for(let[,t]of Array.from(s.entries())){let a=new Date(n);for(let n of t){if(n.target_start&&n.target_end){i.set(n.id,{start:n.target_start,end:n.target_end});let t=W(n.target_end);t>=a&&(a=C(t,1));continue}let t=e.filter(t=>n.idea_ids.includes(t.id)),s=0;for(let e of t)s+=J[e.effort]||3;let r=Math.max(1,Math.ceil(s/4)),o=n.target_start||te(a),d=n.target_start?W(n.target_start):new Date(a),l=n.target_end?W(n.target_end):C(d,r),c=n.target_end||te(l);i.set(n.id,{start:o,end:c}),a=C(l,1)}}return i}function te(t){let e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return`${e}-${a}-${i}`}let ta={repos:[],workspace_dir:"",schedules:{quick:{focus:["recent_changes","todos","errors","fixme"],max_ideas:5},deep:{focus:["architecture","tech_debt","security","patterns","dependencies"],max_ideas:15},metrics:{focus:["funnels","dropoffs","conversions","performance"],max_ideas:10},seo:{focus:["blog_performance","technical_seo","content_gaps","backlinks"],max_ideas:8}}};async function ti(){return w(m("config.json"),ta)}async function tn(t){await h(m("config.json"),t)}async function ts(){try{await i.promises.access(m("config.json"))}catch{await h(m("config.json"),ta)}}async function tr(){await g(),await ts();try{await i.promises.access(m("ideas.json"))}catch{await h(m("ideas.json"),{ideas:[]})}try{await i.promises.access(m("sessions.json"))}catch{await h(m("sessions.json"),{sessions:[]})}try{await i.promises.access(m("implementations.json"))}catch{await h(m("implementations.json"),{implementations:[]})}try{await i.promises.access(m("goals.json"))}catch{await h(m("goals.json"),{goals:[]})}try{await i.promises.access(m("hypotheses.json"))}catch{await h(m("hypotheses.json"),{hypotheses:[]})}try{await i.promises.access(m("roadmap.json"))}catch{await h(m("roadmap.json"),{epics:[]})}}}};
|