@fleox-agent-crm/agentcrm 0.3.3 → 0.4.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.
Files changed (39) hide show
  1. package/README.md +16 -16
  2. package/changelog.json +13 -0
  3. package/dist/admin/admin-files.json +7 -7
  4. package/dist/admin/assets/{chartsImpl-aBuZ1X4W.js → chartsImpl-zjsXDhuy.js} +1 -1
  5. package/dist/admin/assets/firebase-C3h9mF8O.js +2 -0
  6. package/dist/admin/assets/{gitJson-DzX3eZ2P.js → gitJson-nrOYgX0x.js} +1 -1
  7. package/dist/admin/assets/{index-DLy5RpPl.js → index-0ejjkW0z.js} +6 -6
  8. package/dist/admin/assets/{lucide-react.min-BgcmukkH.js → lucide-react.min-CI5dCsSm.js} +1 -1
  9. package/dist/admin/assets/{sdk-DtP9zqdi.js → sdk-mepKXtVl.js} +135 -120
  10. package/dist/admin/index.html +1 -1
  11. package/dist/agent/agentcrm.mjs +29 -16
  12. package/dist/agent/chunks/api-BEl_EKwf.mjs +79 -0
  13. package/dist/agent/chunks/{firebase-DWR0K1OC.mjs → firebase-Bknru2pE.mjs} +230 -53
  14. package/dist/agent/chunks/firebaseCache-sK4jA0ru.mjs +39 -0
  15. package/dist/agent/chunks/{firebaseRules-iori-s7U.mjs → firebaseRules-Jq85MBBN.mjs} +14 -3
  16. package/dist/agent/chunks/{hosting-Dnn1k3cV.mjs → hosting-C_UDyMkm.mjs} +1 -1
  17. package/dist/agent/chunks/{index-DtCezG4R.mjs → index-DWecFbTi.mjs} +1 -1
  18. package/dist/agent/chunks/{install-Bp-CwDVC.mjs → install-BLNflFes.mjs} +3 -3
  19. package/dist/agent/chunks/{sdk-CYgNyuoK.mjs → sdk-NYUHv7WG.mjs} +493 -214
  20. package/dist/version.json +1 -1
  21. package/package.json +1 -1
  22. package/plugin/.claude-plugin/plugin.json +1 -1
  23. package/plugin/skills/agentcrm-admin/SKILL.md +67 -67
  24. package/plugin/skills/agentcrm-admin/references/records.md +5 -5
  25. package/plugin/skills/agentcrm-admin/references/schema.md +19 -19
  26. package/plugin/skills/agentcrm-extensions/SKILL.md +8 -8
  27. package/plugin/skills/agentcrm-extensions/references/module-recipes.md +2 -2
  28. package/plugin/skills/agentcrm-extensions/references/testing.md +14 -14
  29. package/plugin/skills/agentcrm-extensions/references/theme-recipes.md +3 -3
  30. package/plugin/skills/agentcrm-install/SKILL.md +13 -13
  31. package/plugin/skills/agentcrm-install/references/firebase.md +1 -1
  32. package/plugin/skills/agentcrm-install/references/github.md +1 -1
  33. package/plugin/skills/agentcrm-install/references/mcp.md +2 -2
  34. package/plugin/skills/agentcrm-install/references/plans.md +1 -1
  35. package/plugin/skills/agentcrm-install/references/s3.md +1 -1
  36. package/plugin/skills/agentcrm-manage/SKILL.md +15 -15
  37. package/plugin/skills/agentcrm-sales/SKILL.md +18 -18
  38. package/dist/admin/assets/firebase-BG1GpyBB.js +0 -2
  39. package/dist/agent/chunks/api-Dwb4xz1k.mjs +0 -27
package/dist/version.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fleox-agent-crm/agentcrm",
3
- "version": "0.3.3",
3
+ "version": "0.4.0",
4
4
  "minSkillsVersion": "0.1.0",
5
5
  "dataSchema": 1,
6
6
  "repository": "github:fleox/agentcrm"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fleox-agent-crm/agentcrm",
3
- "version": "0.3.3",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "description": "The static CRM your AI agent can run: a Twenty / HubSpot-style CRM that runs entirely in the browser or headless through the agentcrm CLI, with data on storage you own.",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentcrm",
3
- "version": "0.3.3",
3
+ "version": "0.4.0",
4
4
  "description": "Skills to install AgentCRM (the static CRM your AI agent can run), manage its sites, run and customise the CRM (modules, appearance, extensions), drive sales workflows and build extension modules and themes.",
5
5
  "author": {
6
6
  "name": "fleox"
@@ -4,7 +4,7 @@ description: Run an AgentCRM like its admin does - find, list, create, update, d
4
4
  license: PolyForm-Noncommercial-1.0.0
5
5
  compatibility: Requires Node.js 20+.
6
6
  metadata:
7
- version: "0.3.3"
7
+ version: "0.4.0"
8
8
  repository: "https://github.com/fleox/agentcrm"
9
9
  allowed-tools: Bash Read Write
10
10
  ---
@@ -15,7 +15,7 @@ The CLI runs the admin's own engine headless: the same validation, roles and aut
15
15
 
16
16
  **Language:** talk to the user in their language; keep commands and files in English.
17
17
 
18
- Every command is `npx -y @fleox-agent-crm/agentcrm@0.3.3 <command> --json`; always pass `--site <alias>` (see `agentcrm-manage` to pick one). Read `error.hint` when `ok` is false. `npx -y @fleox-agent-crm/agentcrm@0.3.3 help records --json` lists any command's actions and options.
18
+ Every command is `npx -y @fleox-agent-crm/agentcrm@0.4.0 <command> --json`; always pass `--site <alias>` (see `agentcrm-manage` to pick one). Read `error.hint` when `ok` is false. `npx -y @fleox-agent-crm/agentcrm@0.4.0 help records --json` lists any command's actions and options.
19
19
 
20
20
  ## Rules
21
21
 
@@ -27,13 +27,13 @@ Every command is `npx -y @fleox-agent-crm/agentcrm@0.3.3 <command> --json`; alwa
27
27
  ## Records
28
28
 
29
29
  ```bash
30
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records list --site acme --object deals --filter stage:in:proposal,negotiation --filter amount:gte:10000 --sort amount:desc --limit 20 --json
31
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records get <id> --site acme --json
32
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records search "globex" --site acme --json
33
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records create --site acme --object people --set firstName=Grace --set lastName=Hopper --set email=grace@globex.com --set company=<companyId> --json
34
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records update <id> --site acme --set jobTitle=CTO --json
35
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records delete <id> --site acme --json
36
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records restore <id> --site acme --json
30
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records list --site acme --object deals --filter stage:in:proposal,negotiation --filter amount:gte:10000 --sort amount:desc --limit 20 --json
31
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records get <id> --site acme --json
32
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records search "globex" --site acme --json
33
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records create --site acme --object people --set firstName=Grace --set lastName=Hopper --set email=grace@globex.com --set company=<companyId> --json
34
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records update <id> --site acme --set jobTitle=CTO --json
35
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records delete <id> --site acme --json
36
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records restore <id> --site acme --json
37
37
  ```
38
38
 
39
39
  - Filters: `--filter field:op:value`, repeatable. Ops: eq, neq, contains, notContains, empty, notEmpty, gt, gte, lt, lte, in, notIn, before, after, withinDays. Dates: `YYYY-MM-DD`, `today`, `+30d`. Also `id`, `ownerId`, `createdAt`, `updatedAt`.
@@ -46,13 +46,13 @@ More examples per object: references/records.md.
46
46
  ## Timeline and tasks
47
47
 
48
48
  ```bash
49
- npx -y @fleox-agent-crm/agentcrm@0.3.3 notes add <recordId> --site acme --body "Met at the expo; wants a demo in June." --json
50
- npx -y @fleox-agent-crm/agentcrm@0.3.3 activities add --site acme --type call --title "Discovery call" --record <personId> --record <dealId> --meta '{"durationMin":25}' --json
51
- npx -y @fleox-agent-crm/agentcrm@0.3.3 activities list --site acme --record <companyId> --related --json
52
- npx -y @fleox-agent-crm/agentcrm@0.3.3 tasks add --site acme --title "Send the proposal" --due 2026-11-10 --assignee me --record <dealId> --json
53
- npx -y @fleox-agent-crm/agentcrm@0.3.3 tasks list --site acme --assignee me --overdue --json
54
- npx -y @fleox-agent-crm/agentcrm@0.3.3 tasks done <taskId> --site acme --json
55
- npx -y @fleox-agent-crm/agentcrm@0.3.3 tasks reassign <taskId> --site acme --assignee sam@acme.com --json
49
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 notes add <recordId> --site acme --body "Met at the expo; wants a demo in June." --json
50
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 activities add --site acme --type call --title "Discovery call" --record <personId> --record <dealId> --meta '{"durationMin":25}' --json
51
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 activities list --site acme --record <companyId> --related --json
52
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 tasks add --site acme --title "Send the proposal" --due 2026-11-10 --assignee me --record <dealId> --json
53
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 tasks list --site acme --assignee me --overdue --json
54
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 tasks done <taskId> --site acme --json
55
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 tasks reassign <taskId> --site acme --assignee sam@acme.com --json
56
56
  ```
57
57
 
58
58
  Activity types: note, task, call, email, meeting. `--body @notes.md` reads a file.
@@ -62,18 +62,18 @@ Activity types: note, task, call, email, meeting. `--body @notes.md` reads a fil
62
62
  People have a **photo** (`avatar` field) and companies a **logo** (`logo`), shown next to the name everywhere; custom objects get one by adding an `image` field (the first becomes the object's image). Files (any type: images, PDFs, Office documents…) attach to a record or to an activity (note, task, call, email, meeting).
63
63
 
64
64
  ```bash
65
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records image <personId> ./ada.jpg --site acme --json
66
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records image <companyId> ./logo.svg --site acme --json
67
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records image <personId> --remove --site acme --json
68
- npx -y @fleox-agent-crm/agentcrm@0.3.3 notes add <recordId> --body "Signed contract attached." --attach ./contract.pdf --site acme --json
69
- npx -y @fleox-agent-crm/agentcrm@0.3.3 tasks add --title "Review the quote" --record <dealId> --attach ./quote.xlsx --attach ./scope.pdf --site acme --json
70
- npx -y @fleox-agent-crm/agentcrm@0.3.3 activities add --type meeting --title "Workshop" --record <companyId> --attach ./whiteboard.png --site acme --json
71
- npx -y @fleox-agent-crm/agentcrm@0.3.3 files upload ./brochure.pdf ./photo.png --record <companyId> --site acme --json
72
- npx -y @fleox-agent-crm/agentcrm@0.3.3 files upload ./minutes.docx --activity <noteId> --site acme --json
73
- npx -y @fleox-agent-crm/agentcrm@0.3.3 files list --record <companyId> --related --site acme --json
74
- npx -y @fleox-agent-crm/agentcrm@0.3.3 files get <fileId> --out ./contract.pdf --site acme --json
75
- npx -y @fleox-agent-crm/agentcrm@0.3.3 files delete <fileId> --site acme --json
76
- npx -y @fleox-agent-crm/agentcrm@0.3.3 files usage --site acme --json
65
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records image <personId> ./ada.jpg --site acme --json
66
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records image <companyId> ./logo.svg --site acme --json
67
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records image <personId> --remove --site acme --json
68
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 notes add <recordId> --body "Signed contract attached." --attach ./contract.pdf --site acme --json
69
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 tasks add --title "Review the quote" --record <dealId> --attach ./quote.xlsx --attach ./scope.pdf --site acme --json
70
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 activities add --type meeting --title "Workshop" --record <companyId> --attach ./whiteboard.png --site acme --json
71
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 files upload ./brochure.pdf ./photo.png --record <companyId> --site acme --json
72
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 files upload ./minutes.docx --activity <noteId> --site acme --json
73
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 files list --record <companyId> --related --site acme --json
74
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 files get <fileId> --out ./contract.pdf --site acme --json
75
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 files delete <fileId> --site acme --json
76
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 files usage --site acme --json
77
77
  ```
78
78
 
79
79
  - Files live next to the data and are **encrypted with the same passphrase** on the journal backend; IndexedDB in local mode; the data repo (`files/`) for git-json (warn: history keeps them); Firebase Storage for Firebase (Storage must be enabled, see docs/files.md).
@@ -86,9 +86,9 @@ npx -y @fleox-agent-crm/agentcrm@0.3.3 files usage --site acme --json
86
86
  ## Pipelines
87
87
 
88
88
  ```bash
89
- npx -y @fleox-agent-crm/agentcrm@0.3.3 pipelines list --site acme --json
90
- npx -y @fleox-agent-crm/agentcrm@0.3.3 pipelines move <dealId> Negotiation --site acme --json
91
- npx -y @fleox-agent-crm/agentcrm@0.3.3 pipelines move <dealId> Lost --lost-reason "Budget" --site acme --json
89
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 pipelines list --site acme --json
90
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 pipelines move <dealId> Negotiation --site acme --json
91
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 pipelines move <dealId> Lost --lost-reason "Budget" --site acme --json
92
92
  ```
93
93
 
94
94
  Moving sets the deal's probability to the stage's. Adding / renaming stages is done in the admin (Settings → Data model).
@@ -102,10 +102,10 @@ See references/schema.md for objects, fields (types, options, relations), views,
102
102
  Built-in modules: dashboard, deals (deals object + pipelines), reports, forms, tasks, automations, integrations (email and calendar), assistant (in-admin AI); records, search, settings, setup and customize are required. Installed extension modules are listed with `source: "extension"`. Disabling hides pages, navigation, widgets and owned objects for every user; it never deletes data, and enabling again brings everything back.
103
103
 
104
104
  ```bash
105
- npx -y @fleox-agent-crm/agentcrm@0.3.3 modules list --site acme --json
106
- npx -y @fleox-agent-crm/agentcrm@0.3.3 modules disable forms --site acme --json
107
- npx -y @fleox-agent-crm/agentcrm@0.3.3 modules disable forms --site acme --yes --json
108
- npx -y @fleox-agent-crm/agentcrm@0.3.3 modules enable deals --site acme --cascade --yes --json
105
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 modules list --site acme --json
106
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 modules disable forms --site acme --json
107
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 modules disable forms --site acme --yes --json
108
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 modules enable deals --site acme --cascade --yes --json
109
109
  ```
110
110
 
111
111
  - When the user says "we only manage contacts" or "hide what we don't use": list the modules, propose which to turn off (with what each hides), and apply only after they agree.
@@ -117,14 +117,14 @@ npx -y @fleox-agent-crm/agentcrm@0.3.3 modules enable deals --site acme --cascad
117
117
  One accent color drives the whole palette (a 50 to 950 scale is generated). Applies live to every user.
118
118
 
119
119
  ```bash
120
- npx -y @fleox-agent-crm/agentcrm@0.3.3 appearance get --site acme --json
121
- npx -y @fleox-agent-crm/agentcrm@0.3.3 appearance presets --site acme --json
122
- npx -y @fleox-agent-crm/agentcrm@0.3.3 appearance set --site acme --accent "#0f766e" --neutral stone --radius lg --json
123
- npx -y @fleox-agent-crm/agentcrm@0.3.3 appearance preset ocean --site acme --yes --json
124
- npx -y @fleox-agent-crm/agentcrm@0.3.3 appearance logo ./logo.svg --site acme --yes --json
125
- npx -y @fleox-agent-crm/agentcrm@0.3.3 appearance favicon ./favicon.png --site acme --yes --json
126
- npx -y @fleox-agent-crm/agentcrm@0.3.3 appearance css ./brand.css --site acme --yes --json
127
- npx -y @fleox-agent-crm/agentcrm@0.3.3 appearance reset --site acme --json
120
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 appearance get --site acme --json
121
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 appearance presets --site acme --json
122
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 appearance set --site acme --accent "#0f766e" --neutral stone --radius lg --json
123
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 appearance preset ocean --site acme --yes --json
124
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 appearance logo ./logo.svg --site acme --yes --json
125
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 appearance favicon ./favicon.png --site acme --yes --json
126
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 appearance css ./brand.css --site acme --yes --json
127
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 appearance reset --site acme --json
128
128
  ```
129
129
 
130
130
  - **Brand from a hex:** `appearance set --accent <hex>`, then pick `--neutral` by temperature (blue / teal brands: slate; warm brands: stone; otherwise zinc), `--buttons accent` for a colorful brand. **From a logo:** read the dominant non-gray color of the SVG (its `fill`) or the image, propose it as the accent, and upload the logo itself with `appearance logo`.
@@ -134,9 +134,9 @@ npx -y @fleox-agent-crm/agentcrm@0.3.3 appearance reset --site acme --json
134
134
  ## Extensions (installed modules and themes)
135
135
 
136
136
  ```bash
137
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext list --site acme --json
138
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext disable sales-goals --site acme --yes --json
139
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext enable sales-goals --site acme --yes --json
137
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext list --site acme --json
138
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext disable sales-goals --site acme --yes --json
139
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext enable sales-goals --site acme --yes --json
140
140
  ```
141
141
 
142
142
  Installing, building or debugging extensions: the `agentcrm-extensions` skill. Installing runs third-party code with admin rights: always show the plan and ask. If the admin misbehaves after an extension change, `ext disable <id> --yes`, or open the admin with `?safe=1`; CLI commands accept `--safe` to skip extensions.
@@ -144,11 +144,11 @@ Installing, building or debugging extensions: the `agentcrm-extensions` skill. I
144
144
  ## Import and export
145
145
 
146
146
  ```bash
147
- npx -y @fleox-agent-crm/agentcrm@0.3.3 import csv contacts.csv --site acme --object people --json
148
- npx -y @fleox-agent-crm/agentcrm@0.3.3 import csv contacts.csv --site acme --object people --yes --json
149
- npx -y @fleox-agent-crm/agentcrm@0.3.3 export csv --site acme --object companies --out companies.csv --json
150
- npx -y @fleox-agent-crm/agentcrm@0.3.3 export json --site acme --out backup.json --json
151
- npx -y @fleox-agent-crm/agentcrm@0.3.3 export zip --site acme --out backup.zip --json
147
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 import csv contacts.csv --site acme --object people --json
148
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 import csv contacts.csv --site acme --object people --yes --json
149
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 export csv --site acme --object companies --out companies.csv --json
150
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 export json --site acme --out backup.json --json
151
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 export zip --site acme --out backup.zip --json
152
152
  ```
153
153
 
154
154
  The import is a DRY RUN until `--yes`: read the report (mapping, per-row action, errors, new select options, companies to create) with the user before applying. Mapping, dedupe and coercion rules: references/import.md.
@@ -156,25 +156,25 @@ The import is a DRY RUN until `--yes`: read the report (mapping, per-row action,
156
156
  ## Reports and stats
157
157
 
158
158
  ```bash
159
- npx -y @fleox-agent-crm/agentcrm@0.3.3 report pipeline --site acme --json
160
- npx -y @fleox-agent-crm/agentcrm@0.3.3 report forecast --site acme --json
161
- npx -y @fleox-agent-crm/agentcrm@0.3.3 report won-lost --site acme --months 6 --json
162
- npx -y @fleox-agent-crm/agentcrm@0.3.3 report activity --site acme --days 30 --json
163
- npx -y @fleox-agent-crm/agentcrm@0.3.3 report lead-sources --site acme --json
164
- npx -y @fleox-agent-crm/agentcrm@0.3.3 report stale --site acme --days 21 --json
165
- npx -y @fleox-agent-crm/agentcrm@0.3.3 report conversion --site acme --json
166
- npx -y @fleox-agent-crm/agentcrm@0.3.3 stats --site acme --json
159
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 report pipeline --site acme --json
160
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 report forecast --site acme --json
161
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 report won-lost --site acme --months 6 --json
162
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 report activity --site acme --days 30 --json
163
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 report lead-sources --site acme --json
164
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 report stale --site acme --days 21 --json
165
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 report conversion --site acme --json
166
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 stats --site acme --json
167
167
  ```
168
168
 
169
169
  ## Automations and lead forms
170
170
 
171
171
  ```bash
172
- npx -y @fleox-agent-crm/agentcrm@0.3.3 automations list --site acme --json
173
- npx -y @fleox-agent-crm/agentcrm@0.3.3 automations disable <id> --site acme --json
174
- npx -y @fleox-agent-crm/agentcrm@0.3.3 automations run --site acme --json
175
- npx -y @fleox-agent-crm/agentcrm@0.3.3 forms list --site acme --json
176
- npx -y @fleox-agent-crm/agentcrm@0.3.3 forms publish <formId> --site acme --json
177
- npx -y @fleox-agent-crm/agentcrm@0.3.3 forms ingest --site acme --json
172
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 automations list --site acme --json
173
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 automations disable <id> --site acme --json
174
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 automations run --site acme --json
175
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 forms list --site acme --json
176
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 forms publish <formId> --site acme --json
177
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 forms ingest --site acme --json
178
178
  ```
179
179
 
180
180
  Event automations (record created, field changed, stage changed) fire on every write, from the CLI too. Building automations and forms is done in the admin; the CLI enables / disables, runs the scheduled ones and ingests form submissions. For a cron, see the `agentcrm-manage` skill.
@@ -184,8 +184,8 @@ Event automations (record created, field changed, stage changed) fire on every w
184
184
  The same tools the MCP server and the in-admin assistant expose, including the tools of enabled extension modules (`source: "extension"`) the customisation tools (`list_modules`, `set_module_enabled`, `get_appearance`, `set_appearance`, `apply_appearance_preset`, `list_extensions`, `set_extension_enabled`) and the file tools (`list_files`, `describe_attachments`):
185
185
 
186
186
  ```bash
187
- npx -y @fleox-agent-crm/agentcrm@0.3.3 tools list --site acme --json
188
- npx -y @fleox-agent-crm/agentcrm@0.3.3 tools call pipeline_summary --site acme --input '{}' --json
187
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 tools list --site acme --json
188
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 tools call pipeline_summary --site acme --input '{}' --json
189
189
  ```
190
190
 
191
191
  Useful when a tool returns exactly what you need in one call (`get_record` with relations and latest activities, `pipeline_summary`).
@@ -12,17 +12,17 @@ Always confirm with `objects get <object>`: admins add fields and options.
12
12
 
13
13
  ```bash
14
14
  # A company and its contact
15
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records create --site acme --object companies --set name="Globex" --set domain=globex.com --set industry=software --json
16
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records create --site acme --object people --fields @grace.json --json
15
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records create --site acme --object companies --set name="Globex" --set domain=globex.com --set industry=software --json
16
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records create --site acme --object people --fields @grace.json --json
17
17
 
18
18
  # A deal linked to both
19
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records create --site acme --object deals --fields '{"name":"Globex pilot","amount":12000,"closeDate":"2026-12-15","company":"<companyId>","contacts":["<personId>"]}' --json
19
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records create --site acme --object deals --fields '{"name":"Globex pilot","amount":12000,"closeDate":"2026-12-15","company":"<companyId>","contacts":["<personId>"]}' --json
20
20
 
21
21
  # Leads created this week, without an owner
22
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records list --site acme --object people --filter lifecycleStage:eq:lead --filter createdAt:withinDays:-7 --filter ownerId:empty --json
22
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records list --site acme --object people --filter lifecycleStage:eq:lead --filter createdAt:withinDays:-7 --filter ownerId:empty --json
23
23
 
24
24
  # Assign an owner
25
- npx -y @fleox-agent-crm/agentcrm@0.3.3 records update <id> --site acme --owner <userId> --json
25
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 records update <id> --site acme --owner <userId> --json
26
26
  ```
27
27
 
28
28
  `records get` returns `relations` (records this one points to) and `related` (records pointing to it, e.g. a company's people and deals) plus `activityCount`.
@@ -5,11 +5,11 @@ All schema commands need the admin role.
5
5
  ## Objects
6
6
 
7
7
  ```bash
8
- npx -y @fleox-agent-crm/agentcrm@0.3.3 objects list --site acme --json
9
- npx -y @fleox-agent-crm/agentcrm@0.3.3 objects get deals --site acme --json
10
- npx -y @fleox-agent-crm/agentcrm@0.3.3 objects create --site acme --singular Project --plural Projects --icon folder --json
11
- npx -y @fleox-agent-crm/agentcrm@0.3.3 objects update projects --site acme --plural "Client projects" --json
12
- npx -y @fleox-agent-crm/agentcrm@0.3.3 objects delete projects --site acme --json
8
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 objects list --site acme --json
9
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 objects get deals --site acme --json
10
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 objects create --site acme --singular Project --plural Projects --icon folder --json
11
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 objects update projects --site acme --plural "Client projects" --json
12
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 objects delete projects --site acme --json
13
13
  ```
14
14
 
15
15
  Deleting an object deletes all its records (plan first).
@@ -19,10 +19,10 @@ Deleting an object deletes all its records (plan first).
19
19
  Types: text, longText, number, currency, percent, date, datetime, boolean, select, multiSelect, email, phone, url, relation, user, rating, address, tags, image (one picture; the first one becomes the record avatar), files (attachments).
20
20
 
21
21
  ```bash
22
- npx -y @fleox-agent-crm/agentcrm@0.3.3 fields add --site acme --object deals --label "Contract type" --type select --options "New,Renewal,Upsell" --json
23
- npx -y @fleox-agent-crm/agentcrm@0.3.3 fields add --site acme --object projects --label Client --type relation --relation-object companies --json
24
- npx -y @fleox-agent-crm/agentcrm@0.3.3 fields update contractType --site acme --object deals --options "New,Renewal,Upsell,Cross-sell" --json
25
- npx -y @fleox-agent-crm/agentcrm@0.3.3 fields delete contractType --site acme --object deals --json
22
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 fields add --site acme --object deals --label "Contract type" --type select --options "New,Renewal,Upsell" --json
23
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 fields add --site acme --object projects --label Client --type relation --relation-object companies --json
24
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 fields update contractType --site acme --object deals --options "New,Renewal,Upsell,Cross-sell" --json
25
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 fields delete contractType --site acme --object deals --json
26
26
  ```
27
27
 
28
28
  `fields update --type <t>` converts existing values (the result reports what could not be converted). Standard fields can't be deleted.
@@ -30,10 +30,10 @@ npx -y @fleox-agent-crm/agentcrm@0.3.3 fields delete contractType --site acme --
30
30
  ## Views
31
31
 
32
32
  ```bash
33
- npx -y @fleox-agent-crm/agentcrm@0.3.3 views list --site acme --object deals --json
34
- npx -y @fleox-agent-crm/agentcrm@0.3.3 views create --site acme --object deals --name "Closing this month" --filter closeDate:withinDays:30 --sort closeDate --columns name,amount,stage,closeDate --shared --json
35
- npx -y @fleox-agent-crm/agentcrm@0.3.3 views create --site acme --object deals --name Board --type kanban --group-by stage --json
36
- npx -y @fleox-agent-crm/agentcrm@0.3.3 views delete <viewId> --site acme --json
33
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 views list --site acme --object deals --json
34
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 views create --site acme --object deals --name "Closing this month" --filter closeDate:withinDays:30 --sort closeDate --columns name,amount,stage,closeDate --shared --json
35
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 views create --site acme --object deals --name Board --type kanban --group-by stage --json
36
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 views delete <viewId> --site acme --json
37
37
  ```
38
38
 
39
39
  ## Users and roles
@@ -41,10 +41,10 @@ npx -y @fleox-agent-crm/agentcrm@0.3.3 views delete <viewId> --site acme --json
41
41
  Roles: `admin` (everything), `member` (records, activities, own views, import / export), `viewer` (read only).
42
42
 
43
43
  ```bash
44
- npx -y @fleox-agent-crm/agentcrm@0.3.3 users list --site acme --all --json
45
- npx -y @fleox-agent-crm/agentcrm@0.3.3 users add --site acme --email sam@acme.com --name "Sam Rivera" --role member --json
46
- npx -y @fleox-agent-crm/agentcrm@0.3.3 users role sam@acme.com admin --site acme --json
47
- npx -y @fleox-agent-crm/agentcrm@0.3.3 users disable sam@acme.com --site acme --json
44
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 users list --site acme --all --json
45
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 users add --site acme --email sam@acme.com --name "Sam Rivera" --role member --json
46
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 users role sam@acme.com admin --site acme --json
47
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 users disable sam@acme.com --site acme --json
48
48
  ```
49
49
 
50
50
  Firebase / git-json sites: the login itself is created on that service (Firebase Authentication, a repository collaborator).
@@ -52,8 +52,8 @@ Firebase / git-json sites: the login itself is created on that service (Firebase
52
52
  ## Settings
53
53
 
54
54
  ```bash
55
- npx -y @fleox-agent-crm/agentcrm@0.3.3 settings get --site acme --json
56
- npx -y @fleox-agent-crm/agentcrm@0.3.3 settings set --site acme --set name="Acme CRM" --set defaultCurrency=EUR --set locale=fr-FR --set staleDealDays=21 --json
55
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 settings get --site acme --json
56
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 settings set --site acme --set name="Acme CRM" --set defaultCurrency=EUR --set locale=fr-FR --set staleDealDays=21 --json
57
57
  ```
58
58
 
59
59
  Secrets are refused in settings.
@@ -4,7 +4,7 @@ description: Create, test and ship AgentCRM extensions - scaffold a module or th
4
4
  license: PolyForm-Noncommercial-1.0.0
5
5
  compatibility: Requires Node.js 20+ (npm for the extension project's own build).
6
6
  metadata:
7
- version: "0.3.3"
7
+ version: "0.4.0"
8
8
  repository: "https://github.com/fleox/agentcrm"
9
9
  allowed-tools: Bash Read Write Edit
10
10
  ---
@@ -33,7 +33,7 @@ AgentCRM is a static CRM: the admin is a single-page app that runs in the browse
33
33
 
34
34
  ## The toolchain: `agentcrm ext`
35
35
 
36
- Every command is `npx -y @fleox-agent-crm/agentcrm@0.3.3 <command> … --json`. Read `error.hint` when `ok` is false.
36
+ Every command is `npx -y @fleox-agent-crm/agentcrm@0.4.0 <command> … --json`. Read `error.hint` when `ok` is false.
37
37
 
38
38
  | Action | What it does |
39
39
  |---|---|
@@ -51,7 +51,7 @@ Every command is `npx -y @fleox-agent-crm/agentcrm@0.3.3 <command> … --json`.
51
51
  1. **Understand the request.** A new look = a **theme**. New pages, widgets, record tabs, AI tools, automation steps or reactions to CRM events = a **module**. Pick an id: lowercase letters, digits and dashes, 3 to 50 characters, not a built-in module id (records, deals, dashboard, reports, forms, tasks, automations, integrations, assistant, search, settings, setup, customize) nor agentcrm, core, runtime, admin, app, custom, default. Prefix it with the company or product (`acme-quotes`).
52
52
  2. **Scaffold and install the toolchain:**
53
53
  ```bash
54
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext new module acme-quotes --author "Acme" --json
54
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext new module acme-quotes --author "Acme" --json
55
55
  cd acme-quotes && npm install
56
56
  ```
57
57
  3. **Read the scaffold**, then the reference for what you are building:
@@ -64,15 +64,15 @@ Every command is `npx -y @fleox-agent-crm/agentcrm@0.3.3 <command> … --json`.
64
64
  ```bash
65
65
  npm run typecheck
66
66
  npm run build
67
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext check . --json
67
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext check . --json
68
68
  ```
69
69
  Fix every error; read the warnings (missing French strings, tool names without the module prefix, nav entries without a route).
70
70
  6. **Pack and install** (plan first, then `--yes` once the user agreed):
71
71
  ```bash
72
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext pack . --json
73
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext install . --site acme --json
74
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext install . --site acme --yes --json
75
- npx -y @fleox-agent-crm/agentcrm@0.3.3 tools list --site acme --json
72
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext pack . --json
73
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext install . --site acme --json
74
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext install . --site acme --yes --json
75
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 tools list --site acme --json
76
76
  ```
77
77
  For a new release, bump `version` in `manifest.json` (semver) and install again: it upgrades in place.
78
78
 
@@ -182,8 +182,8 @@ function SettingsPage() {
182
182
  In AI tools / actions read it with `readConfig(ops.getModuleConfig(ctx, ID))`. From the CLI:
183
183
 
184
184
  ```bash
185
- npx -y @fleox-agent-crm/agentcrm@0.3.3 modules config get acme-projects --site acme --json
186
- npx -y @fleox-agent-crm/agentcrm@0.3.3 modules config set acme-projects --value '{"budgetAlert":50000}' --site acme --json
185
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 modules config get acme-projects --site acme --json
186
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 modules config set acme-projects --value '{"budgetAlert":50000}' --site acme --json
187
187
  ```
188
188
 
189
189
  (the second prints a plan; add `--yes`).
@@ -5,7 +5,7 @@
5
5
  ```bash
6
6
  npm run typecheck # tsc against types/agentcrm-runtime.d.ts
7
7
  npm run build # vite build → dist/bundle.js
8
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext check . --json # what the admin will see
8
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext check . --json # what the admin will see
9
9
  ```
10
10
 
11
11
  `ext check` reads `manifest.json` + `dist/bundle.js` (+ `src/style.css` for themes declaring it) from a project, `manifest.json` + `bundle.js` from an unpacked folder, or a ZIP. Then:
@@ -24,10 +24,10 @@ The check runs the bundle in Node with the real loader and runtime, in a throw-a
24
24
  ## Pack and install
25
25
 
26
26
  ```bash
27
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext pack . --json # → <id>-<version>.zip
28
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext install acme-quotes-0.1.0.zip --site acme --json
29
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext install acme-quotes-0.1.0.zip --site acme --yes --json
30
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext list --site acme --json
27
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext pack . --json # → <id>-<version>.zip
28
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext install acme-quotes-0.1.0.zip --site acme --json
29
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext install acme-quotes-0.1.0.zip --site acme --yes --json
30
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext list --site acme --json
31
31
  ```
32
32
 
33
33
  - The plan (`needsConfirmation: true`) shows `id`, `kind`, `name`, `version`, `author`, `mode` (`install` / `upgrade` with `from`), `dependsOn`, `size`, `warnings` and the trust warning. **Show it to the user and ask before `--yes`.**
@@ -45,21 +45,21 @@ Bump `version` in `manifest.json`, build, check, install again: `mode: "upgrade"
45
45
  ## Use it
46
46
 
47
47
  ```bash
48
- npx -y @fleox-agent-crm/agentcrm@0.3.3 tools list --site acme --json # its AI tools (source: "extension")
49
- npx -y @fleox-agent-crm/agentcrm@0.3.3 tools call acme_quotes_list --site acme --input '{}' --json
50
- npx -y @fleox-agent-crm/agentcrm@0.3.3 modules list --site acme --json # appears as a module (source: "extension")
51
- npx -y @fleox-agent-crm/agentcrm@0.3.3 automations run --site acme --json # its automation actions run here too
48
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 tools list --site acme --json # its AI tools (source: "extension")
49
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 tools call acme_quotes_list --site acme --input '{}' --json
50
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 modules list --site acme --json # appears as a module (source: "extension")
51
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 automations run --site acme --json # its automation actions run here too
52
52
  ```
53
53
 
54
- To see the UI, open the CRM's admin (its hosted URL, see `site show`, or `npx -y @fleox-agent-crm/agentcrm@0.3.3 serve` for a local copy), and check the page, the tabs and widgets in light and dark mode and in French (language switcher in the user menu or the Cmd+K palette).
54
+ To see the UI, open the CRM's admin (its hosted URL, see `site show`, or `npx -y @fleox-agent-crm/agentcrm@0.4.0 serve` for a local copy), and check the page, the tabs and widgets in light and dark mode and in French (language switcher in the user menu or the Cmd+K palette).
55
55
 
56
56
  ## Disable, uninstall, export
57
57
 
58
58
  ```bash
59
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext disable acme-quotes --site acme --yes --json
60
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext enable acme-quotes --site acme --yes --json
61
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext uninstall acme-quotes --site acme --yes --json
62
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext export acme-quotes --site acme --out backup.zip --json
59
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext disable acme-quotes --site acme --yes --json
60
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext enable acme-quotes --site acme --yes --json
61
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext uninstall acme-quotes --site acme --yes --json
62
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext export acme-quotes --site acme --out backup.zip --json
63
63
  ```
64
64
 
65
65
  Disabling keeps the package and its config; uninstalling keeps the config (a re-install restores it). Data the module created (records, objects, notes) is never deleted by either.
@@ -57,9 +57,9 @@ Variables: `--acc-50` … `--acc-950` (accent scale), `--srf-50` … `--srf-950`
57
57
 
58
58
  ```bash
59
59
  npm run build
60
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext check . --json
61
- npx -y @fleox-agent-crm/agentcrm@0.3.3 ext install . --site acme --yes --json
62
- npx -y @fleox-agent-crm/agentcrm@0.3.3 appearance preset acme-brand --site acme --json
60
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext check . --json
61
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 ext install . --site acme --yes --json
62
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 appearance preset acme-brand --site acme --json
63
63
  ```
64
64
 
65
65
  `ext check` prints the resolved values (`data.theme.appearance`) and the CSS size. `appearance preset` prints the before / after plan; add `--yes` to apply. Open the admin to look at it (light and dark, a table and a record page).
@@ -4,7 +4,7 @@ description: Install a new AgentCRM (static, AI-drivable CRM) for the user - ask
4
4
  license: PolyForm-Noncommercial-1.0.0
5
5
  compatibility: Requires Node.js 20+ and network access to the chosen storage. Works in Claude Code and any agent that can run shell commands.
6
6
  metadata:
7
- version: "0.3.3"
7
+ version: "0.4.0"
8
8
  repository: "https://github.com/fleox/agentcrm"
9
9
  allowed-tools: Bash Read Write
10
10
  ---
@@ -15,13 +15,13 @@ AgentCRM is a HubSpot / Twenty-style CRM (companies, people, deals, pipelines, a
15
15
 
16
16
  **Language:** talk to the user in their language; keep commands, files and plans in English.
17
17
 
18
- Every command is `npx -y @fleox-agent-crm/agentcrm@0.3.3 <command> --json` (Node.js 20+). Each prints ONE JSON object: `{"ok": true, "data": ...}` or `{"ok": false, "error": {"code", "message", "hint"}}`. When `ok` is false, read `error.hint` and act on it. Exit code 2 = a usage error in your command.
18
+ Every command is `npx -y @fleox-agent-crm/agentcrm@0.4.0 <command> --json` (Node.js 20+). Each prints ONE JSON object: `{"ok": true, "data": ...}` or `{"ok": false, "error": {"code", "message", "hint"}}`. When `ok` is false, read `error.hint` and act on it. Exit code 2 = a usage error in your command.
19
19
 
20
20
  ## 1. Start with status and options
21
21
 
22
22
  ```bash
23
- npx -y @fleox-agent-crm/agentcrm@0.3.3 status --json
24
- npx -y @fleox-agent-crm/agentcrm@0.3.3 options --json
23
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 status --json
24
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 options --json
25
25
  ```
26
26
 
27
27
  `status` shows CRMs this computer already manages (maybe the user wants `agentcrm-manage` instead). `options` lists backends, data locations, hostings, credential types and the plan format.
@@ -36,7 +36,7 @@ The CRM holds personal data (contacts, emails, phone numbers). Ask, in this orde
36
36
  - a **folder on this computer** - single computer, no account. Advise backing it up.
37
37
  2. **Firebase** (backend `firebase`) - real-time teams with logins and per-user roles. See references/firebase.md.
38
38
  3. **A private git repo as readable JSON** (backend `git-json`) - readable history, but deleted records stay in the git history: warn the user.
39
- 4. **This browser only** - for trying it: `npx -y @fleox-agent-crm/agentcrm@0.3.3 serve --json`, then "This browser" in the wizard. The CLI can't reach it.
39
+ 4. **This browser only** - for trying it: `npx -y @fleox-agent-crm/agentcrm@0.4.0 serve --json`, then "This browser" in the wizard. The CLI can't reach it.
40
40
 
41
41
  Encryption: the journal is encrypted with AES-256-GCM by default. A passphrase is generated at install and stored only on this computer. Never offer to turn it off unless the user insists and the location is strictly private.
42
42
 
@@ -54,15 +54,15 @@ HTTPS is required: browsers only allow the admin's request signing and encryptio
54
54
 
55
55
  ## 4. Credentials - never in the chat
56
56
 
57
- Secrets (keys, tokens, passwords, passphrases) are NEVER typed into the conversation and never written in a plan. The user stores each one in their own terminal; in Claude Code they type `! npx -y @fleox-agent-crm/agentcrm@0.3.3 credentials set s3:main` (hidden prompt). Alternatives that keep secrets out of the chat:
57
+ Secrets (keys, tokens, passwords, passphrases) are NEVER typed into the conversation and never written in a plan. The user stores each one in their own terminal; in Claude Code they type `! npx -y @fleox-agent-crm/agentcrm@0.4.0 credentials set s3:main` (hidden prompt). Alternatives that keep secrets out of the chat:
58
58
 
59
59
  - `--from-env KEY_ID,SECRET` - variables the user already exported (CI, `.env`).
60
60
  - `--from-aws-profile <profile>` - an existing aws CLI profile (s3).
61
61
  - `--from-gh` - the token of the signed-in GitHub CLI (github).
62
62
 
63
63
  ```bash
64
- npx -y @fleox-agent-crm/agentcrm@0.3.3 credentials list --json
65
- npx -y @fleox-agent-crm/agentcrm@0.3.3 credentials types --json
64
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 credentials list --json
65
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 credentials types --json
66
66
  ```
67
67
 
68
68
  How to create each key with least privilege: references/s3.md, references/github.md, references/firebase.md. One account can serve several CRMs (`s3:main` for both the data bucket and the hosting bucket is fine).
@@ -89,8 +89,8 @@ Write `plan.json` (no secrets, only account ids):
89
89
  More examples (GitHub repo data + GitHub Pages, local folder, Firebase): references/plans.md. `owner` becomes the first CRM admin, and the CLI acts as that user. `demo: true` adds a realistic sample dataset - offer it for a first look, not for a production CRM.
90
90
 
91
91
  ```bash
92
- npx -y @fleox-agent-crm/agentcrm@0.3.3 install --plan plan.json --dry-run --json
93
- npx -y @fleox-agent-crm/agentcrm@0.3.3 install --plan plan.json --json
92
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 install --plan plan.json --dry-run --json
93
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 install --plan plan.json --json
94
94
  ```
95
95
 
96
96
  The dry run checks every access and writes nothing. Fix `check-failed` errors with their hint (permissions, names, CORS) before installing. An existing dataset in the same place is kept; only what's missing is seeded.
@@ -99,16 +99,16 @@ The dry run checks every access and writes nothing. Fix `check-failed` errors wi
99
99
 
100
100
  When the result has `savePassphrase`, stop and do it with the user before anything else:
101
101
 
102
- 1. `npx -y @fleox-agent-crm/agentcrm@0.3.3 credentials copy passphrase:<alias> --json` puts it on the clipboard (never print it).
102
+ 1. `npx -y @fleox-agent-crm/agentcrm@0.4.0 credentials copy passphrase:<alias> --json` puts it on the clipboard (never print it).
103
103
  2. The user pastes it into their password manager now.
104
- 3. The user proves it: in their own terminal, `! npx -y @fleox-agent-crm/agentcrm@0.3.3 credentials verify passphrase:<alias>`, pasting FROM the password manager. It must say "verified".
104
+ 3. The user proves it: in their own terminal, `! npx -y @fleox-agent-crm/agentcrm@0.4.0 credentials verify passphrase:<alias>`, pasting FROM the password manager. It must say "verified".
105
105
 
106
106
  Without the passphrase nobody can read the data, ever.
107
107
 
108
108
  ## 7. Verify
109
109
 
110
110
  ```bash
111
- npx -y @fleox-agent-crm/agentcrm@0.3.3 doctor --site <alias> --json
111
+ npx -y @fleox-agent-crm/agentcrm@0.4.0 doctor --site <alias> --json
112
112
  ```
113
113
 
114
114
  Every failing check has a `fix`. The most common one on buckets is CORS: the result prints the exact JSON rule for the data bucket - help the user apply it (references/s3.md). Then give the user the admin URL (`data.adminUrl` of the install) and explain: each new browser asks once for the storage keys and the passphrase, which stay in that browser.
@@ -3,7 +3,7 @@
3
3
  1. Create a Firebase project (console.firebase.google.com), add a Web app and copy its config (apiKey, authDomain, projectId, appId...). The web apiKey is public by design.
4
4
  2. Enable Authentication → Sign-in method → Email/Password (and Google if wanted).
5
5
  3. Create Firestore (production mode) and publish the AgentCRM security rules (see docs/firebase.md in the repository).
6
- 4. Create the first admin account (Authentication → Users → Add user). The user stores its login: `! npx -y @fleox-agent-crm/agentcrm@0.3.3 credentials set firebase:<name>` (email + password at hidden prompts).
6
+ 4. Create the first admin account (Authentication → Users → Add user). The user stores its login: `! npx -y @fleox-agent-crm/agentcrm@0.4.0 credentials set firebase:<name>` (email + password at hidden prompts).
7
7
  5. Plan:
8
8
 
9
9
  ```json
@@ -7,7 +7,7 @@ Fine-grained personal access token: https://github.com/settings/personal-access-
7
7
  - Repository access: only the data repository (PRIVATE) and, if used, the admin hosting repository.
8
8
  - Permissions: Contents read and write; Metadata read-only; Pages read and write (optional, lets the CLI enable Pages).
9
9
 
10
- The user stores it: `! npx -y @fleox-agent-crm/agentcrm@0.3.3 credentials set github:<login>`, or reuses the GitHub CLI login: `npx -y @fleox-agent-crm/agentcrm@0.3.3 credentials set github:<login> --from-gh --json`.
10
+ The user stores it: `! npx -y @fleox-agent-crm/agentcrm@0.4.0 credentials set github:<login>`, or reuses the GitHub CLI login: `npx -y @fleox-agent-crm/agentcrm@0.4.0 credentials set github:<login> --from-gh --json`.
11
11
 
12
12
  GitLab: project → Settings → Access tokens, scope `api`, role Developer; store as `gitlab:<name>`.
13
13
 
@@ -5,13 +5,13 @@
5
5
  Claude Code:
6
6
 
7
7
  ```bash
8
- claude mcp add agentcrm -- npx -y @fleox-agent-crm/agentcrm@0.3.3 mcp --site <alias>
8
+ claude mcp add agentcrm -- npx -y @fleox-agent-crm/agentcrm@0.4.0 mcp --site <alias>
9
9
  ```
10
10
 
11
11
  Claude Desktop (`claude_desktop_config.json`) and Cursor (`.cursor/mcp.json`):
12
12
 
13
13
  ```json
14
- { "mcpServers": { "agentcrm": { "command": "npx", "args": ["-y", "@fleox-agent-crm/agentcrm@0.3.3", "mcp", "--site", "<alias>"] } } }
14
+ { "mcpServers": { "agentcrm": { "command": "npx", "args": ["-y", "@fleox-agent-crm/agentcrm@0.4.0", "mcp", "--site", "<alias>"] } } }
15
15
  ```
16
16
 
17
17
  The server uses the credentials of this computer (`~/.agentcrm`) and acts as the site's CLI user.