vibebusiness 1.2.38 → 1.2.39

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.
Files changed (72) hide show
  1. package/.next/standalone/.env +1 -0
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/app-build-manifest.json +12 -12
  4. package/.next/standalone/.next/app-path-routes-manifest.json +1 -1
  5. package/.next/standalone/.next/build-manifest.json +2 -2
  6. package/.next/standalone/.next/prerender-manifest.json +1 -1
  7. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  9. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  10. package/.next/standalone/.next/server/app/api/analyze/route.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/api/epics/[id]/ideas/route.js.nft.json +1 -1
  13. package/.next/standalone/.next/server/app/api/epics/[id]/route.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/api/epics/route.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/api/goals/[id]/kpis/route.js.nft.json +1 -1
  16. package/.next/standalone/.next/server/app/api/goals/[id]/route.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/api/goals/route.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/api/hypotheses/[id]/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/api/hypotheses/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/ideas/[id]/comments/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/ideas/[id]/implement/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/ideas/[id]/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/ideas/[id]/transition/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/ideas/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/implementations/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/kpis/refresh/route.js +1 -1
  27. package/.next/standalone/.next/server/app/api/kpis/refresh/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/goals/[id]/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/goals/page.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/goals/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/hypotheses/[id]/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/hypotheses/page.js +1 -1
  33. package/.next/standalone/.next/server/app/hypotheses/page.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/hypotheses/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/ideas/[id]/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/ideas/[id]/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/landing.html +1 -1
  39. package/.next/standalone/.next/server/app/landing.rsc +1 -1
  40. package/.next/standalone/.next/server/app/page.js +1 -1
  41. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/roadmap/[id]/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/roadmap/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/roadmap/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/sessions/page.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/settings.html +1 -1
  50. package/.next/standalone/.next/server/app/settings.rsc +1 -1
  51. package/.next/standalone/.next/server/app-paths-manifest.json +6 -6
  52. package/.next/standalone/.next/server/pages/404.html +1 -1
  53. package/.next/standalone/.next/server/pages/500.html +1 -1
  54. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  55. package/.next/standalone/data/business-context.json +9 -1
  56. package/.next/standalone/data/email-campaigns/sequences/onboarding.md +183 -0
  57. package/.next/standalone/data/email-campaigns/welcome-2026-02-20.md +61 -0
  58. package/.next/standalone/data/heartbeat-sessions.json +466 -0
  59. package/.next/standalone/data/ideas.json +248 -9
  60. package/.next/standalone/data/implementations.json +167 -2
  61. package/.next/standalone/package.json +1 -1
  62. package/dist/scripts/analyze.js +1 -0
  63. package/dist/scripts/chat.js +1 -0
  64. package/dist/scripts/generate-idea.js +1 -0
  65. package/dist/scripts/heartbeat.js +1620 -168
  66. package/dist/scripts/implement.js +1 -0
  67. package/dist/scripts/init.js +1 -0
  68. package/dist/scripts/scan.js +1 -0
  69. package/package.json +1 -1
  70. package/templates/commands/email-marketing.md +201 -0
  71. /package/.next/static/{DWbE31Y_v73d2pOJwB0Tx → k40DKimnEdAtBs_zywSQ4}/_buildManifest.js +0 -0
  72. /package/.next/static/{DWbE31Y_v73d2pOJwB0Tx → k40DKimnEdAtBs_zywSQ4}/_ssgManifest.js +0 -0
@@ -152,6 +152,7 @@ var ROADMAP_FILE = path2.join(DATA_DIR, "roadmap.json");
152
152
  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
+ var PAYMENTS_FILE = path2.join(DATA_DIR, "payments.json");
155
156
  var TEMPLATES_DIR = path2.join(__dirname, "..", "..", "templates");
156
157
  var COMMAND_TEMPLATES_DIR = path2.join(TEMPLATES_DIR, "commands");
157
158
 
@@ -442,6 +442,7 @@ var ROADMAP_FILE = path6.join(DATA_DIR, "roadmap.json");
442
442
  var COMPETITORS_FILE = path6.join(DATA_DIR, "competitors.json");
443
443
  var POSITIONING_FILE = path6.join(DATA_DIR, "positioning.json");
444
444
  var PAGES_FILE = path6.join(DATA_DIR, "pages.json");
445
+ var PAYMENTS_FILE = path6.join(DATA_DIR, "payments.json");
445
446
  var TEMPLATES_DIR = path6.join(__dirname, "..", "..", "templates");
446
447
  var COMMAND_TEMPLATES_DIR = path6.join(TEMPLATES_DIR, "commands");
447
448
 
@@ -299,6 +299,7 @@ var ROADMAP_FILE = path2.join(DATA_DIR, "roadmap.json");
299
299
  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
+ var PAYMENTS_FILE = path2.join(DATA_DIR, "payments.json");
302
303
  var TEMPLATES_DIR = path2.join(__dirname, "..", "..", "templates");
303
304
  var COMMAND_TEMPLATES_DIR = path2.join(TEMPLATES_DIR, "commands");
304
305
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibebusiness",
3
- "version": "1.2.38",
3
+ "version": "1.2.39",
4
4
  "description": "AI-powered autonomous business analyst. Research. Build. Ship. Grow.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "private": false,
@@ -0,0 +1,201 @@
1
+ # /email-marketing — Email Marketing Setup & Campaign Generator
2
+
3
+ ## Usage
4
+ ```
5
+ /email-marketing setup # Guided Loops.so setup wizard
6
+ /email-marketing campaign welcome # Generate a welcome email campaign
7
+ /email-marketing campaign onboarding # Generate an onboarding drip email
8
+ /email-marketing campaign feature-announcement # New feature announcement
9
+ /email-marketing campaign re-engagement # Win-back inactive users
10
+ /email-marketing campaign milestone # User achievement celebration
11
+ /email-marketing sequence {name} # Design a multi-email drip sequence
12
+ /email-marketing blast {slug} # Draft a one-off announcement email
13
+ ```
14
+
15
+ ## Input
16
+ - `$ARGUMENTS` — required: one of the modes above
17
+
18
+ ## Process
19
+
20
+ Parse `$ARGUMENTS` to determine mode. The first word is the mode, the rest are arguments.
21
+
22
+ ---
23
+
24
+ ### Mode: `setup`
25
+
26
+ Interactive Loops.so setup wizard.
27
+
28
+ 1. **Check API Key**: Verify `LOOPS_API_KEY` is set in the environment
29
+ - If not set: print instructions to add it to `.env` and stop
30
+ - If set: call `GET /api/v1/api-key` to verify it's valid
31
+
32
+ 2. **Audit Current State**:
33
+ - List existing mailing lists via the Loops API
34
+ - List existing contact properties
35
+ - List existing transactional email templates
36
+ - Print a summary of what's already configured
37
+
38
+ 3. **Set Up Contact Properties**: Create recommended properties if they don't exist:
39
+ - `source` (string) — where the contact came from (e.g., "website", "twitter", "producthunt")
40
+ - `userGroup` (string) — segment (e.g., "beta_tester", "waitlist", "customer")
41
+ - `plan` (string) — pricing plan (e.g., "free", "pro", "enterprise")
42
+
43
+ 4. **Configure KPI Adapter**: Read `data/business-context.json` and check if a `loops` KPI adapter is configured. If not, add one:
44
+ ```json
45
+ {
46
+ "id": "loops",
47
+ "type": "loops",
48
+ "field_mapping": {
49
+ "kpi-waitlist-signups": "total_contacts"
50
+ }
51
+ }
52
+ ```
53
+
54
+ 5. **Print Summary**: What was set up, what was already configured, next steps (run `/email-marketing campaign welcome` to create first email).
55
+
56
+ ---
57
+
58
+ ### Mode: `campaign {type}`
59
+
60
+ Generate an email campaign draft using positioning data and business context.
61
+
62
+ Supported types: `welcome`, `onboarding`, `feature-announcement`, `re-engagement`, `milestone`
63
+
64
+ 1. **Load Context**:
65
+ - Read `data/positioning.json` — headlines, CTAs, pain points, objection handlers, brand voice
66
+ - Read `data/business-context.json` — product info, audience, value proposition
67
+ - Read `data/goals.json` — current business goals for relevance
68
+
69
+ 2. **Generate Campaign** based on type:
70
+
71
+ **`welcome`** — First email after signup:
72
+ - Subject line (3 variations)
73
+ - Preview text
74
+ - Body: warm greeting → what they signed up for → what to expect → single CTA
75
+ - Tone: enthusiastic but professional, use brand voice from positioning
76
+ - Include personalization tokens: `{{firstName}}`, `{{source}}`
77
+
78
+ **`onboarding`** — Guide new users to first value:
79
+ - Subject line (3 variations)
80
+ - Body: acknowledge signup → quickstart steps → link to docs → CTA to first action
81
+ - Focus on time-to-value messaging from positioning
82
+ - Include personalization: `{{firstName}}`
83
+
84
+ **`feature-announcement`** — New feature shipped:
85
+ - Subject line (3 variations)
86
+ - Body: what's new → why it matters → how to use it → CTA to try it
87
+ - Pull differentiators from positioning data
88
+ - If $ARGUMENTS includes an idea ID, load that idea for specific feature details
89
+
90
+ **`re-engagement`** — Win back inactive users:
91
+ - Subject line (3 variations)
92
+ - Body: we miss you → what's new since they left → special offer/incentive → CTA
93
+ - Use objection handlers from positioning to address likely reasons for leaving
94
+
95
+ **`milestone`** — Celebrate user achievements:
96
+ - Subject line (3 variations)
97
+ - Body: congratulations → what they achieved → what's next → CTA to share/upgrade
98
+ - Keep it short and celebratory
99
+
100
+ 3. **Write Output**: Save to `data/email-campaigns/{type}-{YYYY-MM-DD}.md` as structured markdown:
101
+ ```markdown
102
+ # {Type} Email Campaign — {Date}
103
+
104
+ ## Metadata
105
+ - Type: {type}
106
+ - Generated: {date}
107
+ - Positioning version: {last_updated from positioning.json}
108
+
109
+ ## Subject Lines
110
+ 1. {subject1}
111
+ 2. {subject2}
112
+ 3. {subject3}
113
+
114
+ ## Preview Text
115
+ {preview}
116
+
117
+ ## Body
118
+
119
+ {full email body in markdown}
120
+
121
+ ## Loops Integration Notes
122
+ - Suggested event trigger: {event_name}
123
+ - Recommended mailing list: {list_name}
124
+ - Personalization tokens used: {list}
125
+ ```
126
+
127
+ 4. **Print Summary**: Preview of subject lines, word count, file path, suggestion to set up in Loops dashboard.
128
+
129
+ ---
130
+
131
+ ### Mode: `sequence {name}`
132
+
133
+ Design a multi-email drip sequence.
134
+
135
+ 1. **Load Context**: Same as campaign mode — positioning, business context, goals.
136
+
137
+ 2. **Design Sequence**:
138
+ - Generate 3-5 emails with recommended timing (e.g., Day 0, Day 2, Day 5, Day 10, Day 14)
139
+ - Each email has: subject line, preview text, body, CTA
140
+ - Map a Loops event name to trigger each email
141
+ - Ensure narrative arc: introduce → educate → demonstrate value → convert → reinforce
142
+
143
+ 3. **Write Output**: Save to `data/email-campaigns/sequences/{name}.md`:
144
+ ```markdown
145
+ # {Name} Email Sequence
146
+
147
+ ## Overview
148
+ - Emails: {count}
149
+ - Duration: {total days}
150
+ - Goal: {sequence goal}
151
+ - Trigger event: {initial trigger}
152
+
153
+ ## Email 1: {title} (Day 0)
154
+ **Trigger:** {event_name}
155
+ **Subject:** {subject}
156
+ **Preview:** {preview}
157
+
158
+ {body}
159
+
160
+ ---
161
+
162
+ ## Email 2: {title} (Day 2)
163
+ ...
164
+ ```
165
+
166
+ 4. **Print Summary**: Sequence overview, timing chart, event names to configure in Loops.
167
+
168
+ ---
169
+
170
+ ### Mode: `blast {slug}`
171
+
172
+ Draft a one-off announcement email.
173
+
174
+ 1. **Load Context**: Positioning data, business context. If slug matches an idea ID in `data/ideas.json`, load that idea for specific details.
175
+
176
+ 2. **Generate Email**:
177
+ - Subject line (3 variations)
178
+ - Preview text
179
+ - Body: announcement → details → why it matters → CTA
180
+ - Keep it concise — one-off emails should be scannable
181
+
182
+ 3. **Write Output**: Save to `data/email-campaigns/blasts/{slug}.md`
183
+
184
+ 4. **Print Summary**: Preview of subject lines, file path.
185
+
186
+ ---
187
+
188
+ ## Directory Structure
189
+
190
+ Ensure these directories exist before writing (create if needed):
191
+ ```
192
+ data/email-campaigns/
193
+ ├── sequences/
194
+ └── blasts/
195
+ ```
196
+
197
+ ## Output Files
198
+ - `data/email-campaigns/{type}-{date}.md` — campaign drafts
199
+ - `data/email-campaigns/sequences/{name}.md` — drip sequences
200
+ - `data/email-campaigns/blasts/{slug}.md` — one-off emails
201
+ - `data/business-context.json` — updated with Loops KPI adapter (setup mode only)