@shogo-ai/email 1.10.0 → 2.4.2

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/dist/index.cjs CHANGED
@@ -382,8 +382,11 @@ var EMAIL_CONSTANTS = {
382
382
  APP_NAME: "Shogo",
383
383
  APP_URL: "https://shogo.ai",
384
384
  SUPPORT_EMAIL: "support@shogo.ai",
385
- LOGO_URL: "https://shogo.ai/assets/images/shogo-logo-email.png",
386
- LOGO_DARK_URL: "https://shogo.ai/assets/images/shogo-logo-dark-email.png",
385
+ // Rendered from the current brand lockup (logo/shogo-logo-full{,-alt}.svg on
386
+ // shogo-website). Versioned filenames so the CDN's cached copy of the
387
+ // previous logo is never picked up by new sends.
388
+ LOGO_URL: "https://shogo.ai/assets/images/logo/shogo-logo-email-v2.png",
389
+ LOGO_DARK_URL: "https://shogo.ai/assets/images/logo/shogo-logo-dark-email-v2.png",
387
390
  FOOTER_TEXT: "© {{currentYear}} Shogo. All rights reserved"
388
391
  };
389
392
  var LIGHT_STYLES = `
@@ -550,8 +553,8 @@ function wrapInLayout(content) {
550
553
  <div class="email-container">
551
554
  <div class="email-header">
552
555
  <a href="${EMAIL_CONSTANTS.APP_URL}" style="display:inline-block;text-decoration:none;">
553
- <img class="email-logo-light" src="${EMAIL_CONSTANTS.LOGO_URL}" alt="${EMAIL_CONSTANTS.APP_NAME}" width="169" height="58" style="display:block;height:40px;width:auto;" />
554
- <img class="email-logo-dark" src="${EMAIL_CONSTANTS.LOGO_DARK_URL}" alt="${EMAIL_CONSTANTS.APP_NAME}" width="169" height="58" style="display:none;height:40px;width:auto;" />
556
+ <img class="email-logo-light" src="${EMAIL_CONSTANTS.LOGO_URL}" alt="${EMAIL_CONSTANTS.APP_NAME}" width="168" height="40" style="display:block;height:40px;width:auto;" />
557
+ <img class="email-logo-dark" src="${EMAIL_CONSTANTS.LOGO_DARK_URL}" alt="${EMAIL_CONSTANTS.APP_NAME}" width="168" height="40" style="display:none;height:40px;width:auto;" />
555
558
  </a>
556
559
  </div>
557
560
  <div class="email-content">
@@ -817,6 +820,33 @@ var paymentFailedTemplate = {
817
820
  }
818
821
  };
819
822
 
823
+ // src/templates/billing/payment-action-required.ts
824
+ var paymentActionRequiredTemplate = {
825
+ name: "payment-action-required",
826
+ subject: "Confirm your payment for {{workspaceName}}",
827
+ html: wrapInLayout(`
828
+ <h1 class="email-h1">Confirm Your Payment</h1>
829
+ <p class="email-text">
830
+ Your bank needs you to confirm the payment of <strong>{{currency}}{{amount}}</strong>
831
+ for <strong>{{workspaceName}}</strong> ({{planName}}). Nothing has been charged yet.
832
+ </p>
833
+ <p class="email-text">
834
+ This is a routine security check some banks require for recurring and
835
+ online payments. It only takes a moment.
836
+ </p>
837
+ <a href="{{confirmUrl}}" class="email-btn" style="color:#ffffff;text-decoration:none;">Confirm Payment</a>
838
+ <hr class="email-divider">
839
+ <p class="email-muted">
840
+ If you didn't expect this charge, please reply to this email or
841
+ contact support.
842
+ </p>
843
+ `),
844
+ defaults: {
845
+ appName: EMAIL_CONSTANTS.APP_NAME,
846
+ currency: "$"
847
+ }
848
+ };
849
+
820
850
  // src/templates/billing/usage-overage-charged.ts
821
851
  var usageOverageChargedTemplate = {
822
852
  name: "usage-overage-charged",
@@ -902,6 +932,25 @@ var memberJoinedTemplate = {
902
932
  }
903
933
  };
904
934
 
935
+ // src/templates/workspace/channel-digest.ts
936
+ var channelDigestTemplate = {
937
+ name: "channel-digest",
938
+ subject: "{{countLabel}} waiting in {{workspaceName}}",
939
+ html: wrapInLayout(`
940
+ <h1 class="email-h1">You have {{countLabel}}</h1>
941
+ <p class="email-text">Here's what you missed in <strong>{{workspaceName}}</strong>:</p>
942
+ <p class="email-text" style="white-space: pre-line;">{{summary}}</p>
943
+ <a href="{{channelsUrl}}" class="email-btn-outline">Open channels</a>
944
+ <p class="email-text" style="font-size: 12px; color: #888;">
945
+ You get this daily summary because email digests are on.
946
+ <a href="{{settingsUrl}}">Change notification settings</a>.
947
+ </p>
948
+ `),
949
+ defaults: {
950
+ appName: EMAIL_CONSTANTS.APP_NAME
951
+ }
952
+ };
953
+
905
954
  // src/templates/workspace/member-removed.ts
906
955
  var memberRemovedTemplate = {
907
956
  name: "member-removed",
@@ -950,6 +999,403 @@ var accountDeletedTemplate = {
950
999
  }
951
1000
  };
952
1001
 
1002
+ // src/templates/lifecycle/drip.ts
1003
+ var dripWelcomeTemplate = {
1004
+ name: "drip-welcome",
1005
+ subject: "Welcome to {{appName}} \u2014 your first agent is one message away",
1006
+ html: wrapInLayout(`
1007
+ <h1 class="email-h1">Hey {{name}},</h1>
1008
+ <p class="email-text">
1009
+ You just signed up for {{appName}} \u2014 a place where you build AI agents
1010
+ by chatting with them. No YAML, no config files, just describe what you
1011
+ want the agent to do.
1012
+ </p>
1013
+ <p class="email-text">
1014
+ In the next 5 minutes you can have an agent that checks your GitHub PRs,
1015
+ tracks your revenue, or manages your support queue \u2014 whatever you actually
1016
+ need. Start with a template.
1017
+ </p>
1018
+ <a href="{{appUrl}}/templates" class="email-btn" style="color:#ffffff;text-decoration:none;">
1019
+ Build your first agent \u2192
1020
+ </a>
1021
+ <hr class="email-divider">
1022
+ <p class="email-muted">
1023
+ Reply to this email any time \u2014 I read every one.
1024
+ </p>
1025
+ `),
1026
+ defaults: {
1027
+ appName: EMAIL_CONSTANTS.APP_NAME,
1028
+ appUrl: EMAIL_CONSTANTS.APP_URL
1029
+ }
1030
+ };
1031
+ var dripQuickWinTemplate = {
1032
+ name: "drip-quick-win",
1033
+ subject: "Start here: the Research Assistant takes 2 minutes",
1034
+ html: wrapInLayout(`
1035
+ <h1 class="email-h1">Your first agent in 2 minutes</h1>
1036
+ <p class="email-text">Hi {{name}},</p>
1037
+ <p class="email-text">
1038
+ The fastest way to see what {{appName}} does is the Research Assistant.
1039
+ It's pre-configured to search the web, summarize findings, and send you
1040
+ a digest \u2014 no setup required beyond pointing it at a topic.
1041
+ </p>
1042
+ <p class="email-text">Three steps:</p>
1043
+ <p class="email-text">
1044
+ <strong>1.</strong> Open the template gallery<br>
1045
+ <strong>2.</strong> Install Research Assistant (one click)<br>
1046
+ <strong>3.</strong> Chat with it: <em>"Summarize the top AI news from this week"</em>
1047
+ </p>
1048
+ <a href="{{appUrl}}/templates" class="email-btn" style="color:#ffffff;text-decoration:none;">
1049
+ Install Research Assistant \u2192
1050
+ </a>
1051
+ <hr class="email-divider">
1052
+ <p class="email-muted">
1053
+ Takes 2 minutes. No integrations needed to start.
1054
+ </p>
1055
+ `),
1056
+ defaults: {
1057
+ appName: EMAIL_CONSTANTS.APP_NAME,
1058
+ appUrl: EMAIL_CONSTANTS.APP_URL
1059
+ }
1060
+ };
1061
+ var dripStuckNudgeTemplate = {
1062
+ name: "drip-stuck-nudge",
1063
+ subject: "Most people get stuck at this exact step",
1064
+ html: wrapInLayout(`
1065
+ <h1 class="email-h1">Stuck on setup?</h1>
1066
+ <p class="email-text">Hi {{name}},</p>
1067
+ <p class="email-text">
1068
+ I checked and you haven't created your first agent yet. The most common
1069
+ friction point is figuring out what to ask \u2014 it feels open-ended.
1070
+ </p>
1071
+ <p class="email-text">
1072
+ Here's the simplest starting prompt that works every time:
1073
+ </p>
1074
+ <p class="email-text" style="background:#f8f8f8;border-left:3px solid #e8853d;padding:12px 16px;border-radius:4px;font-style:italic;">
1075
+ "I want an agent that checks my GitHub for open pull requests each morning
1076
+ and sends me a Slack message with a summary."
1077
+ </p>
1078
+ <p class="email-text">
1079
+ Paste that, swap GitHub/Slack for your tools, and you have an agent in
1080
+ under 60 seconds.
1081
+ </p>
1082
+ <a href="{{appUrl}}" class="email-btn" style="color:#ffffff;text-decoration:none;">
1083
+ Resume setup \u2192
1084
+ </a>
1085
+ <hr class="email-divider">
1086
+ <p class="email-muted">
1087
+ Or just reply here \u2014 tell me what you're trying to automate and I'll help
1088
+ you set it up.
1089
+ </p>
1090
+ `),
1091
+ defaults: {
1092
+ appName: EMAIL_CONSTANTS.APP_NAME,
1093
+ appUrl: EMAIL_CONSTANTS.APP_URL
1094
+ }
1095
+ };
1096
+ var dripFirstActionTemplate = {
1097
+ name: "drip-first-action",
1098
+ subject: "Your agent is configured \u2014 now talk to it",
1099
+ html: wrapInLayout(`
1100
+ <h1 class="email-h1">{{agentName}} is ready</h1>
1101
+ <p class="email-text">Hi {{name}},</p>
1102
+ <p class="email-text">
1103
+ You created <strong>{{agentName}}</strong> \u2014 nice work. The last step is
1104
+ sending it a message so it knows what to do first.
1105
+ </p>
1106
+ <p class="email-text">
1107
+ Open the chat panel and try something like:
1108
+ </p>
1109
+ <p class="email-text" style="background:#f8f8f8;border-left:3px solid #e8853d;padding:12px 16px;border-radius:4px;font-style:italic;">
1110
+ "Check my GitHub for any open PRs that haven't been reviewed in 2+ days."
1111
+ </p>
1112
+ <p class="email-text">
1113
+ The first message is always the most satisfying \u2014 watch it actually go do
1114
+ something.
1115
+ </p>
1116
+ <a href="{{appUrl}}" class="email-btn" style="color:#ffffff;text-decoration:none;">
1117
+ Open {{agentName}} \u2192
1118
+ </a>
1119
+ `),
1120
+ defaults: {
1121
+ appName: EMAIL_CONSTANTS.APP_NAME,
1122
+ appUrl: EMAIL_CONSTANTS.APP_URL,
1123
+ agentName: "your agent"
1124
+ }
1125
+ };
1126
+ var dripSocialProofTemplate = {
1127
+ name: "drip-social-proof",
1128
+ subject: "What a 3-person startup is doing with Shogo",
1129
+ html: wrapInLayout(`
1130
+ <h1 class="email-h1">A real example</h1>
1131
+ <p class="email-text">Hi {{name}},</p>
1132
+ <p class="email-text">
1133
+ A small eng team uses three {{appName}} agents in production:
1134
+ </p>
1135
+ <p class="email-text">
1136
+ <strong>GitHub Ops</strong> \u2014 runs every morning, reviews all PRs opened
1137
+ in the last 24h, flags anything stale, and posts a summary to their
1138
+ #engineering Slack channel. Replaced a 15-minute standup ritual.
1139
+ </p>
1140
+ <p class="email-text">
1141
+ <strong>Revenue Tracker</strong> \u2014 pulls MRR from Stripe each Monday,
1142
+ compares it to the prior week, and sends a one-paragraph summary to the
1143
+ founder. Takes 8 seconds.
1144
+ </p>
1145
+ <p class="email-text">
1146
+ <strong>Incident Commander</strong> \u2014 watches their Sentry error feed,
1147
+ auto-groups similar errors, and creates Linear tickets with severity tags.
1148
+ Zero manual triage.
1149
+ </p>
1150
+ <p class="email-text">
1151
+ Every one of these started with a single chat message. None required any
1152
+ code.
1153
+ </p>
1154
+ <a href="{{appUrl}}/templates" class="email-btn" style="color:#ffffff;text-decoration:none;">
1155
+ See all templates \u2192
1156
+ </a>
1157
+ `),
1158
+ defaults: {
1159
+ appName: EMAIL_CONSTANTS.APP_NAME,
1160
+ appUrl: EMAIL_CONSTANTS.APP_URL
1161
+ }
1162
+ };
1163
+ var dripReEngagementTemplate = {
1164
+ name: "drip-re-engagement",
1165
+ subject: "{{agentName}} hasn't heard from you yet",
1166
+ html: wrapInLayout(`
1167
+ <h1 class="email-h1">Still there?</h1>
1168
+ <p class="email-text">Hi {{name}},</p>
1169
+ <p class="email-text">
1170
+ You set up <strong>{{agentName}}</strong> a few days ago but haven't sent
1171
+ it a message yet. That's the one missing step before it's actually useful.
1172
+ </p>
1173
+ <p class="email-text">
1174
+ Takes 30 seconds \u2014 open the agent, type one request, and see what happens.
1175
+ If it does something useful, great. If it doesn't, reply to this email and
1176
+ tell me what it got wrong \u2014 that's useful feedback too.
1177
+ </p>
1178
+ <a href="{{appUrl}}" class="email-btn" style="color:#ffffff;text-decoration:none;">
1179
+ Open {{agentName}} \u2192
1180
+ </a>
1181
+ <hr class="email-divider">
1182
+ <p class="email-muted">
1183
+ If {{appName}} isn't the right fit right now, no hard feelings \u2014 just reply
1184
+ and let me know what you were hoping it would do.
1185
+ </p>
1186
+ `),
1187
+ defaults: {
1188
+ appName: EMAIL_CONSTANTS.APP_NAME,
1189
+ appUrl: EMAIL_CONSTANTS.APP_URL,
1190
+ agentName: "your agent"
1191
+ }
1192
+ };
1193
+ var dripPowerUpTemplate = {
1194
+ name: "drip-power-up",
1195
+ subject: "Your agent just did something useful \u2014 here's the next level",
1196
+ html: wrapInLayout(`
1197
+ <h1 class="email-h1">Nice \u2014 your agent is working</h1>
1198
+ <p class="email-text">Hi {{name}},</p>
1199
+ <p class="email-text">
1200
+ Your agent just executed its first tool call. That's the real milestone \u2014
1201
+ it's not just chatting, it's actually doing things.
1202
+ </p>
1203
+ <p class="email-text">
1204
+ The next level is connecting more tools. {{appName}} has 250+ integrations
1205
+ \u2014 GitHub, Slack, Linear, Stripe, Sentry, Google Sheets, Notion, and more.
1206
+ Each one you connect makes your agent more capable.
1207
+ </p>
1208
+ <p class="email-text">
1209
+ Go to <strong>Settings \u2192 Integrations</strong> and connect the tools your
1210
+ agent should be able to use.
1211
+ </p>
1212
+ <a href="{{appUrl}}/integrations" class="email-btn" style="color:#ffffff;text-decoration:none;">
1213
+ Connect your first tool \u2192
1214
+ </a>
1215
+ `),
1216
+ defaults: {
1217
+ appName: EMAIL_CONSTANTS.APP_NAME,
1218
+ appUrl: EMAIL_CONSTANTS.APP_URL
1219
+ }
1220
+ };
1221
+ var dripHeartbeatTemplate = {
1222
+ name: "drip-heartbeat",
1223
+ subject: "Your agent can work while you sleep",
1224
+ html: wrapInLayout(`
1225
+ <h1 class="email-h1">Set it on autopilot</h1>
1226
+ <p class="email-text">Hi {{name}},</p>
1227
+ <p class="email-text">
1228
+ You've been chatting with your agent \u2014 now let it run on a schedule
1229
+ without you having to ask.
1230
+ </p>
1231
+ <p class="email-text">
1232
+ The <strong>Heartbeat</strong> feature wakes your agent on a timer \u2014
1233
+ every hour, every morning at 8am, every Monday \u2014 whatever makes sense.
1234
+ When it wakes up, it checks in, looks for work, and acts.
1235
+ </p>
1236
+ <p class="email-text">
1237
+ Example: "Every morning at 8am, check GitHub for PRs that need review and
1238
+ post a summary to Slack." That's one heartbeat. Your agent does it
1239
+ automatically, every day, without you touching it.
1240
+ </p>
1241
+ <p class="email-text">
1242
+ Go to your agent's settings and enable the Heartbeat. Pick an interval
1243
+ and a schedule. That's it.
1244
+ </p>
1245
+ <a href="{{appUrl}}" class="email-btn" style="color:#ffffff;text-decoration:none;">
1246
+ Set your first heartbeat \u2192
1247
+ </a>
1248
+ `),
1249
+ defaults: {
1250
+ appName: EMAIL_CONSTANTS.APP_NAME,
1251
+ appUrl: EMAIL_CONSTANTS.APP_URL
1252
+ }
1253
+ };
1254
+
1255
+ // src/templates/lifecycle/conversion.ts
1256
+ var conversionUsageLimitTemplate = {
1257
+ name: "conversion-usage-limit",
1258
+ subject: "You maxed out your free {{appName}} window \u2014 Pro is 10\xD7 bigger",
1259
+ html: wrapInLayout(`
1260
+ <span class="email-badge">Time to upgrade</span>
1261
+ <h1 class="email-h1" style="margin-top:16px;">You're outgrowing the free plan</h1>
1262
+ <p class="email-text">Hi {{name}},</p>
1263
+ <p class="email-text">
1264
+ You just hit your free usage window \u2014 which means your agents are doing
1265
+ real work for you. The free tier is capped low on purpose. Pro takes the
1266
+ brakes off.
1267
+ </p>
1268
+ <p class="email-text">
1269
+ Here's what changes the moment you upgrade:
1270
+ </p>
1271
+ <div style="background:#f8f8f8;border-radius:8px;padding:16px 20px;margin:0 0 16px;">
1272
+ <div class="email-detail-row">
1273
+ <span class="email-detail-label">Usage window (5h)</span>
1274
+ <span class="email-detail-value">{{freeWindow}} \u2192 {{proWindow}} (10\xD7)</span>
1275
+ </div>
1276
+ <div class="email-detail-row">
1277
+ <span class="email-detail-label">Advanced AI models</span>
1278
+ <span class="email-detail-value">Claude Sonnet, GPT-4o &amp; more</span>
1279
+ </div>
1280
+ <div class="email-detail-row">
1281
+ <span class="email-detail-label">Always-on apps</span>
1282
+ <span class="email-detail-value">1 per seat</span>
1283
+ </div>
1284
+ <div class="email-detail-row" style="border-bottom:none;">
1285
+ <span class="email-detail-label">Waiting on window resets</span>
1286
+ <span class="email-detail-value">Rarely \u2014 10\xD7 more headroom</span>
1287
+ </div>
1288
+ </div>
1289
+ <p class="email-text">
1290
+ Pro is <strong>$20/seat/month</strong>. If your agents save you more than
1291
+ an hour a week, it's already paid for itself \u2014 and you stop losing momentum
1292
+ every time the free window fills up.
1293
+ </p>
1294
+ <a href="{{appUrl}}/billing?plan=pro" class="email-btn" style="color:#ffffff;text-decoration:none;">
1295
+ Upgrade to Pro \u2192
1296
+ </a>
1297
+ <p class="email-muted">
1298
+ Prefer to save 2 months? <a href="{{appUrl}}/billing?plan=pro&amp;interval=annual" style="color:#e8853d;text-decoration:none;font-weight:600;">Get Pro annual for $200/yr \u2192</a>
1299
+ </p>
1300
+ <hr class="email-divider">
1301
+ <p class="email-muted">
1302
+ Not ready yet? Your free window resets automatically \u2014 no action needed.
1303
+ Questions about what's included? Just reply to this email.
1304
+ </p>
1305
+ `),
1306
+ defaults: {
1307
+ appName: EMAIL_CONSTANTS.APP_NAME,
1308
+ appUrl: EMAIL_CONSTANTS.APP_URL,
1309
+ freeWindow: "$0.20",
1310
+ proWindow: "$1.96"
1311
+ }
1312
+ };
1313
+ var conversionPowerUserTemplate = {
1314
+ name: "conversion-power-user",
1315
+ subject: "You're in the top tier of {{appName}} free users",
1316
+ html: wrapInLayout(`
1317
+ <h1 class="email-h1">You're a power user on the free plan</h1>
1318
+ <p class="email-text">Hi {{name}},</p>
1319
+ <p class="email-text">
1320
+ You've sent <strong>{{messageCount}} messages</strong> to your agents \u2014
1321
+ you're one of the most active users on the free plan. That's worth
1322
+ acknowledging.
1323
+ </p>
1324
+ <p class="email-text">
1325
+ You're currently limited to economy AI models and small usage windows.
1326
+ Pro unlocks:
1327
+ </p>
1328
+ <div style="background:#f8f8f8;border-radius:8px;padding:16px 20px;margin:0 0 16px;">
1329
+ <div class="email-detail-row">
1330
+ <span class="email-detail-label">AI models</span>
1331
+ <span class="email-detail-value">Claude Sonnet, GPT-4o, and more</span>
1332
+ </div>
1333
+ <div class="email-detail-row">
1334
+ <span class="email-detail-label">Usage windows</span>
1335
+ <span class="email-detail-value">10\xD7 larger</span>
1336
+ </div>
1337
+ <div class="email-detail-row">
1338
+ <span class="email-detail-label">Always-on apps</span>
1339
+ <span class="email-detail-value">1 per seat</span>
1340
+ </div>
1341
+ <div class="email-detail-row" style="border-bottom:none;">
1342
+ <span class="email-detail-label">Annual pricing</span>
1343
+ <span class="email-detail-value">$200/yr (2 months free)</span>
1344
+ </div>
1345
+ </div>
1346
+ <p class="email-text">
1347
+ Annual is the smart move if you plan to stick around \u2014 same Pro features,
1348
+ billed once a year.
1349
+ </p>
1350
+ <a href="{{appUrl}}/billing?plan=pro&interval=annual" class="email-btn" style="color:#ffffff;text-decoration:none;">
1351
+ Get Pro annual ($200/yr) \u2192
1352
+ </a>
1353
+ <hr class="email-divider">
1354
+ <p class="email-muted">
1355
+ Monthly is also available at $20/seat/month if you prefer.
1356
+ </p>
1357
+ `),
1358
+ defaults: {
1359
+ appName: EMAIL_CONSTANTS.APP_NAME,
1360
+ appUrl: EMAIL_CONSTANTS.APP_URL,
1361
+ messageCount: "several"
1362
+ }
1363
+ };
1364
+ var conversionWinBackTemplate = {
1365
+ name: "conversion-win-back",
1366
+ subject: "{{agentName}} hasn't heard from you in a week",
1367
+ html: wrapInLayout(`
1368
+ <h1 class="email-h1">It's been a while</h1>
1369
+ <p class="email-text">Hi {{name}},</p>
1370
+ <p class="email-text">
1371
+ <strong>{{agentName}}</strong> hasn't heard from you in a week. That's
1372
+ fine \u2014 sometimes the timing isn't right.
1373
+ </p>
1374
+ <p class="email-text">
1375
+ If you left because something wasn't working, reply to this and tell me.
1376
+ I'd rather fix the issue than lose you.
1377
+ </p>
1378
+ <p class="email-text">
1379
+ If life just got busy: your agent is still there, still configured, still
1380
+ ready. One message and you're back up.
1381
+ </p>
1382
+ <a href="{{appUrl}}" class="email-btn" style="color:#ffffff;text-decoration:none;">
1383
+ Check in with {{agentName}} \u2192
1384
+ </a>
1385
+ <hr class="email-divider">
1386
+ <p class="email-muted">
1387
+ Pro tip: enable the Heartbeat on your agent so it works even when you're
1388
+ not thinking about it \u2014 that's how people get the most value from
1389
+ {{appName}}.
1390
+ </p>
1391
+ `),
1392
+ defaults: {
1393
+ appName: EMAIL_CONSTANTS.APP_NAME,
1394
+ appUrl: EMAIL_CONSTANTS.APP_URL,
1395
+ agentName: "your agent"
1396
+ }
1397
+ };
1398
+
953
1399
  // src/templates/index.ts
954
1400
  var allTemplates = [
955
1401
  welcomeTemplate2,
@@ -961,11 +1407,26 @@ var allTemplates = [
961
1407
  planUpgradedTemplate,
962
1408
  paymentReceiptTemplate,
963
1409
  paymentFailedTemplate,
1410
+ paymentActionRequiredTemplate,
964
1411
  usageOverageChargedTemplate,
965
1412
  usageApproachingLimitTemplate,
966
1413
  memberJoinedTemplate,
967
1414
  memberRemovedTemplate,
968
- accountDeletedTemplate
1415
+ channelDigestTemplate,
1416
+ accountDeletedTemplate,
1417
+ // Lifecycle — Drip
1418
+ dripWelcomeTemplate,
1419
+ dripQuickWinTemplate,
1420
+ dripStuckNudgeTemplate,
1421
+ dripFirstActionTemplate,
1422
+ dripSocialProofTemplate,
1423
+ dripReEngagementTemplate,
1424
+ dripPowerUpTemplate,
1425
+ dripHeartbeatTemplate,
1426
+ // Lifecycle — Conversion
1427
+ conversionUsageLimitTemplate,
1428
+ conversionPowerUserTemplate,
1429
+ conversionWinBackTemplate
969
1430
  ];
970
1431
  function createShogoTemplateRegistry() {
971
1432
  const registry = new EmailTemplateRegistry();
package/dist/index.d.cts CHANGED
@@ -116,8 +116,8 @@ declare const EMAIL_CONSTANTS: {
116
116
  readonly APP_NAME: "Shogo";
117
117
  readonly APP_URL: "https://shogo.ai";
118
118
  readonly SUPPORT_EMAIL: "support@shogo.ai";
119
- readonly LOGO_URL: "https://shogo.ai/assets/images/shogo-logo-email.png";
120
- readonly LOGO_DARK_URL: "https://shogo.ai/assets/images/shogo-logo-dark-email.png";
119
+ readonly LOGO_URL: "https://shogo.ai/assets/images/logo/shogo-logo-email-v2.png";
120
+ readonly LOGO_DARK_URL: "https://shogo.ai/assets/images/logo/shogo-logo-dark-email-v2.png";
121
121
  readonly FOOTER_TEXT: "&copy; {{currentYear}} Shogo. All rights reserved";
122
122
  };
123
123
  /** Dark overrides without media query — used by the preview tool to force dark mode. */
package/dist/index.d.ts CHANGED
@@ -116,8 +116,8 @@ declare const EMAIL_CONSTANTS: {
116
116
  readonly APP_NAME: "Shogo";
117
117
  readonly APP_URL: "https://shogo.ai";
118
118
  readonly SUPPORT_EMAIL: "support@shogo.ai";
119
- readonly LOGO_URL: "https://shogo.ai/assets/images/shogo-logo-email.png";
120
- readonly LOGO_DARK_URL: "https://shogo.ai/assets/images/shogo-logo-dark-email.png";
119
+ readonly LOGO_URL: "https://shogo.ai/assets/images/logo/shogo-logo-email-v2.png";
120
+ readonly LOGO_DARK_URL: "https://shogo.ai/assets/images/logo/shogo-logo-dark-email-v2.png";
121
121
  readonly FOOTER_TEXT: "&copy; {{currentYear}} Shogo. All rights reserved";
122
122
  };
123
123
  /** Dark overrides without media query — used by the preview tool to force dark mode. */
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  passwordResetTemplate,
16
16
  welcomeTemplate,
17
17
  wrapInLayout
18
- } from "./chunk-AHEPUREO.js";
18
+ } from "./chunk-NKFT5JLE.js";
19
19
  export {
20
20
  DARK_STYLE_OVERRIDES,
21
21
  EMAIL_CONSTANTS,