sproutkit-code 1.5.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,7 +17,7 @@ do not need any API key yourself — just run the commands.
17
17
 
18
18
  ## Commands
19
19
 
20
- All commands accept `--json` for structured output. **Always pass `--json`** so
20
+ All commands accept `--json` for structured output. **Pass `--json`** so
21
21
  you can parse results reliably, then summarise them for the user in prose.
22
22
 
23
23
  - **Find leads** — `sproutkit find "<area>" --categories "<type>,<type>" --json`
@@ -27,7 +27,12 @@ you can parse results reliably, then summarise them for the user in prose.
27
27
  - Example: `sproutkit find "Shoreditch, London" --categories "barber shop,cafe" --json`
28
28
  - Optional: `--max 25`, `--radius 3000`.
29
29
 
30
- - **List leads** — `sproutkit list --json` (optional `--status site_built`, `--city London`, `--limit 25`)
30
+ - **List leads** — `sproutkit list` (optional `--status site_built`, `--city London`, `--limit 100`)
31
+ - Run it WITHOUT `--json` and show the output VERBATIM. It already prints an aligned
32
+ table with the live site/booking links, a delivered marker and a stage tally.
33
+ Do not re-render, reformat, summarise or truncate it — that throws the formatting away.
34
+ - Use `sproutkit list --json` only when you need a field to feed another command; in that
35
+ case read it and don't print it.
31
36
  - Returns id, name, status, type, city, phone, site_url. Use this to get lead
32
37
  **ids** before building or to report the pipeline.
33
38
 
@@ -88,6 +93,36 @@ you can parse results reliably, then summarise them for the user in prose.
88
93
  - The banner exists to stop clients using a free demo as their real site, so
89
94
  do NOT run this just because a site looks finished.
90
95
 
96
+ - **Set up the agency's identity** — `sproutkit brand --show`
97
+ - Their name, logo, address, VAT and bank details. This is what appears on
98
+ invoices and letters, in the site footer credit, on the demo banner and in
99
+ the `/admin` title — so clients see the AGENCY, not Sproutkit.
100
+ - Set fields with `sproutkit brand --name "X" --email y@z.com --vat-rate 20`.
101
+ - Invoices refuse to render until at least a name is set.
102
+
103
+ - **Invoice a client** — `sproutkit invoice <leadId> --items "Website build:1200,Booking:450" --json`
104
+ - Renders a PDF on the agency's letterhead and returns its path. Quantities:
105
+ `--items "Monthly hosting:12x25"`. `--due <days>` sets payment terms.
106
+ - `sproutkit invoice list [--unpaid]` and `sproutkit invoice paid INV-2026-001`.
107
+ - Money is parsed strictly — "600" and "600.50" are fine, "6.789" is refused.
108
+
109
+ - **Write a letter or proposal** — `sproutkit letter <leadId> --subject "..." --body "..."`
110
+ - Same letterhead as invoices. `--body-file <path>` for longer text.
111
+
112
+ - **Log how a business responded** — `sproutkit reply <leadId> --interested --json`
113
+ - Also `--not-interested`, `--no-answer`, `--wrong-number`, `--callback`, `--note "..."`.
114
+ - SMS/WhatsApp replies are invisible to Sproutkit, so this is how a reply gets
115
+ into the pipeline. 'interested' moves them to Replied; 'not-interested' to Dead.
116
+
117
+ - **See who needs chasing** — `sproutkit followups [--days 3] --json`
118
+ - Leads contacted a while ago that never replied, plus funnel stats
119
+ (contacted, replied, reply rate, interested, won).
120
+
121
+ - **Prove the site is working** — `sproutkit report <leadId> --json`
122
+ - Calls, booking clicks and views for the last 30 days vs the previous 30.
123
+ This is the retainer/renewal evidence. Sites built before analytics shipped
124
+ need a `regenerate` first.
125
+
91
126
  - **Run the full pipeline for many clients** — `sproutkit pipeline x3 --json` (optional `--book`, `--limit 10`, `--ids 3,5`)
92
127
  - Builds → (optionally adds booking) → prepares outreach for several clients
93
128
  CONCURRENTLY (capped at 4), refilling as each finishes. Use for "run the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sproutkit-code",
3
- "version": "1.5.1",
3
+ "version": "1.6.0",
4
4
  "description": "Sproutkit in your terminal — find leads, build sites, run outreach, all via chat.",
5
5
  "bin": {
6
6
  "sproutkit": "./dist/index.js"
@@ -29,7 +29,8 @@
29
29
  "dependencies": {
30
30
  "@anthropic-ai/sdk": "^0.30.1",
31
31
  "axios": "^1.7.1",
32
- "node-sqlite3-wasm": "^0.8.20"
32
+ "node-sqlite3-wasm": "^0.8.20",
33
+ "pdfkit": "^0.20.1"
33
34
  },
34
35
  "devDependencies": {
35
36
  "@types/node": "^20.14.0",