@getfrontline/cli 1.0.3 → 1.0.4
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/README.md +5 -5
- package/dist/commands/object/activity.d.ts +3 -0
- package/dist/commands/object/activity.d.ts.map +1 -0
- package/dist/commands/object/{note.js → activity.js} +24 -19
- package/dist/commands/object/activity.js.map +1 -0
- package/dist/commands/object/export.js +3 -3
- package/dist/commands/object/field.js +5 -5
- package/dist/commands/object/index.js +10 -10
- package/dist/commands/object/index.js.map +1 -1
- package/dist/commands/object/option.js +4 -4
- package/dist/commands/object/record-type.js +4 -4
- package/dist/commands/object/record.js +8 -8
- package/dist/commands/object/relation.js +4 -4
- package/dist/commands/object/view.js +9 -9
- package/dist/commands/table/index.d.ts.map +1 -1
- package/dist/commands/table/index.js +0 -4
- package/dist/commands/table/index.js.map +1 -1
- package/dist/max/ui/banner.js +15 -15
- package/dist/skills/aggregations/SKILL.md +7 -7
- package/dist/skills/auth-and-profiles/SKILL.md +1 -1
- package/dist/skills/crm-setup/SKILL.md +66 -48
- package/dist/skills/crud-operations/SKILL.md +2 -2
- package/dist/skills/export-and-delete/SKILL.md +5 -5
- package/dist/skills/files/SKILL.md +4 -4
- package/dist/skills/filter-and-query/SKILL.md +7 -7
- package/dist/skills/frontline-internals/SKILL.md +7 -7
- package/dist/skills/notes-and-tasks/SKILL.md +29 -29
- package/dist/skills/pipeline-setup/SKILL.md +13 -13
- package/dist/skills/relations/SKILL.md +15 -15
- package/dist/skills/resource-creation/SKILL.md +70 -1
- package/dist/skills/schema-design/SKILL.md +21 -14
- package/package.json +51 -51
- package/dist/commands/object/note.d.ts +0 -3
- package/dist/commands/object/note.d.ts.map +0 -1
- package/dist/commands/object/note.js.map +0 -1
- package/dist/commands/table/note.d.ts +0 -3
- package/dist/commands/table/note.d.ts.map +0 -1
- package/dist/commands/table/note.js +0 -62
- package/dist/commands/table/note.js.map +0 -1
- package/dist/commands/table/task.d.ts +0 -3
- package/dist/commands/table/task.d.ts.map +0 -1
- package/dist/commands/table/task.js +0 -88
- package/dist/commands/table/task.js.map +0 -1
|
@@ -24,7 +24,7 @@ allowed-tools: Bash(frontline:*)
|
|
|
24
24
|
This skill walks through building a complete CRM system: Companies, Contacts,
|
|
25
25
|
and Deals — with relations, pipeline stages, record types, and views.
|
|
26
26
|
|
|
27
|
-
> The built-in `
|
|
27
|
+
> The built-in `companies`, `people`, and `deals` objects already
|
|
28
28
|
> exist. This guide uses **custom objects** to show how to build everything from
|
|
29
29
|
> scratch, but the same patterns apply when extending existing objects.
|
|
30
30
|
|
|
@@ -75,6 +75,8 @@ Use `object create` for business entities and `table create` for simple data.
|
|
|
75
75
|
# Create a new "Embarques" table
|
|
76
76
|
frontline table create embarques --data '{
|
|
77
77
|
"displayName": "Embarques",
|
|
78
|
+
"emoji": "truck",
|
|
79
|
+
"icon_color": "orange",
|
|
78
80
|
"columns": [
|
|
79
81
|
{ "name": "Nombre", "type": "string", "metadata": { "format": "text" } }
|
|
80
82
|
]
|
|
@@ -83,6 +85,8 @@ frontline table create embarques --data '{
|
|
|
83
85
|
# Create a new "Pedidos" table
|
|
84
86
|
frontline table create pedidos --data '{
|
|
85
87
|
"displayName": "Pedidos",
|
|
88
|
+
"emoji": "package",
|
|
89
|
+
"icon_color": "blue",
|
|
86
90
|
"columns": [
|
|
87
91
|
{ "name": "Nombre", "type": "string", "metadata": { "format": "text" } }
|
|
88
92
|
]
|
|
@@ -92,9 +96,9 @@ frontline table create pedidos --data '{
|
|
|
92
96
|
The system also ships with these core objects:
|
|
93
97
|
|
|
94
98
|
```
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
companies — Companies
|
|
100
|
+
people — People (contacts)
|
|
101
|
+
deals — Deals (sales pipeline)
|
|
98
102
|
```
|
|
99
103
|
|
|
100
104
|
Verify they exist:
|
|
@@ -103,21 +107,35 @@ Verify they exist:
|
|
|
103
107
|
frontline object list
|
|
104
108
|
```
|
|
105
109
|
|
|
110
|
+
### Setting Icons on Existing Objects/Tables
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
frontline object update deals --data '{"emoji": "handshake", "icon_color": "emerald"}'
|
|
114
|
+
frontline table update embarques --data '{"emoji": "delivery", "icon_color": "teal"}'
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Available Icon Colors
|
|
118
|
+
|
|
119
|
+
Use the `icon_color` field with a **color name** (case-insensitive):
|
|
120
|
+
|
|
121
|
+
`red`, `orange`, `amber`, `yellow`, `lime`, `green`, `emerald`, `teal`,
|
|
122
|
+
`cyan`, `sky`, `blue`, `indigo`, `violet`, `purple`, `pink`, `rose`
|
|
123
|
+
|
|
106
124
|
## Step 2 — Inspect & Extend the Schema
|
|
107
125
|
|
|
108
126
|
### View current fields
|
|
109
127
|
|
|
110
128
|
```bash
|
|
111
|
-
frontline object field list
|
|
112
|
-
frontline object field list
|
|
113
|
-
frontline object field list
|
|
129
|
+
frontline object field list companies
|
|
130
|
+
frontline object field list people
|
|
131
|
+
frontline object field list deals
|
|
114
132
|
```
|
|
115
133
|
|
|
116
134
|
### Add custom fields
|
|
117
135
|
|
|
118
136
|
```bash
|
|
119
137
|
# Add a "Lead Source" select field to People
|
|
120
|
-
frontline object field create
|
|
138
|
+
frontline object field create people --data '{
|
|
121
139
|
"name": "Lead Source",
|
|
122
140
|
"type": "select",
|
|
123
141
|
"metadata": { "mode": "singleSelect" }
|
|
@@ -125,20 +143,20 @@ frontline object field create standard__people --data '{
|
|
|
125
143
|
# → Returns: { id: 15, name: "Lead Source", type: "select", ... }
|
|
126
144
|
|
|
127
145
|
# Add options to the new field (use the field ID from above)
|
|
128
|
-
frontline object option create
|
|
129
|
-
frontline object option create
|
|
130
|
-
frontline object option create
|
|
131
|
-
frontline object option create
|
|
146
|
+
frontline object option create people 15 --data '{"name": "Website", "color": "Sky"}'
|
|
147
|
+
frontline object option create people 15 --data '{"name": "Referral", "color": "Emerald"}'
|
|
148
|
+
frontline object option create people 15 --data '{"name": "Cold Outreach", "color": "Gray"}'
|
|
149
|
+
frontline object option create people 15 --data '{"name": "Event", "color": "Lavender"}'
|
|
132
150
|
|
|
133
151
|
# Add a "Probability %" number field to Deals
|
|
134
|
-
frontline object field create
|
|
152
|
+
frontline object field create deals --data '{
|
|
135
153
|
"name": "Probability",
|
|
136
154
|
"type": "number",
|
|
137
155
|
"metadata": {}
|
|
138
156
|
}'
|
|
139
157
|
|
|
140
158
|
# Add a "Next Follow-up" date field to Deals
|
|
141
|
-
frontline object field create
|
|
159
|
+
frontline object field create deals --data '{
|
|
142
160
|
"name": "Next Follow-up",
|
|
143
161
|
"type": "dateOnly",
|
|
144
162
|
"metadata": {}
|
|
@@ -150,13 +168,13 @@ frontline object field create standard__deals --data '{
|
|
|
150
168
|
The built-in objects already have relations defined:
|
|
151
169
|
|
|
152
170
|
```bash
|
|
153
|
-
frontline object schema
|
|
154
|
-
# → relations: [{ name: "companies", target: "
|
|
171
|
+
frontline object schema people
|
|
172
|
+
# → relations: [{ name: "companies", target: "companies", mode: "multi" }]
|
|
155
173
|
|
|
156
|
-
frontline object schema
|
|
174
|
+
frontline object schema deals
|
|
157
175
|
# → relations: [
|
|
158
|
-
# { name: "people", target: "
|
|
159
|
-
# { name: "company", target: "
|
|
176
|
+
# { name: "people", target: "people", mode: "multi" },
|
|
177
|
+
# { name: "company", target: "companies", mode: "single" }
|
|
160
178
|
# ]
|
|
161
179
|
```
|
|
162
180
|
|
|
@@ -167,14 +185,14 @@ The `name` field is what you use in all relation commands.
|
|
|
167
185
|
### Create companies
|
|
168
186
|
|
|
169
187
|
```bash
|
|
170
|
-
frontline object record create
|
|
188
|
+
frontline object record create companies --data '{
|
|
171
189
|
"Name": "Acme Corp",
|
|
172
190
|
"Domain": "acme.com",
|
|
173
191
|
"Primary Location": "New York, USA"
|
|
174
192
|
}'
|
|
175
193
|
# → { id: "6625aaa...", ... }
|
|
176
194
|
|
|
177
|
-
frontline object record create
|
|
195
|
+
frontline object record create companies --data '{
|
|
178
196
|
"Name": "TechStart Inc",
|
|
179
197
|
"Domain": "techstart.io",
|
|
180
198
|
"Primary Location": "San Francisco, USA"
|
|
@@ -185,7 +203,7 @@ frontline object record create standard__companies --data '{
|
|
|
185
203
|
### Create contacts
|
|
186
204
|
|
|
187
205
|
```bash
|
|
188
|
-
frontline object record create
|
|
206
|
+
frontline object record create people --data '{
|
|
189
207
|
"First Name": "Alice",
|
|
190
208
|
"Last Name": "Johnson",
|
|
191
209
|
"Email": "alice@acme.com",
|
|
@@ -194,7 +212,7 @@ frontline object record create standard__people --data '{
|
|
|
194
212
|
}'
|
|
195
213
|
# → { id: "6625ccc...", ... }
|
|
196
214
|
|
|
197
|
-
frontline object record create
|
|
215
|
+
frontline object record create people --data '{
|
|
198
216
|
"First Name": "Bob",
|
|
199
217
|
"Last Name": "Smith",
|
|
200
218
|
"Email": "bob@techstart.io",
|
|
@@ -206,10 +224,10 @@ frontline object record create standard__people --data '{
|
|
|
206
224
|
### Create deals
|
|
207
225
|
|
|
208
226
|
```bash
|
|
209
|
-
# Use option IDs from `frontline object field list
|
|
227
|
+
# Use option IDs from `frontline object field list deals`
|
|
210
228
|
# Stage options: 1=Lead, 2=In Progress, 3=Won, 4=Lost
|
|
211
229
|
|
|
212
|
-
frontline object record create
|
|
230
|
+
frontline object record create deals --data '{
|
|
213
231
|
"Name": "Acme Enterprise License",
|
|
214
232
|
"Stage": [2],
|
|
215
233
|
"Value": 150000
|
|
@@ -223,36 +241,36 @@ frontline object record create standard__deals --data '{
|
|
|
223
241
|
|
|
224
242
|
```bash
|
|
225
243
|
# Alice works at Acme
|
|
226
|
-
frontline object relation link
|
|
244
|
+
frontline object relation link people 6625ccc... Companies 6625aaa...
|
|
227
245
|
|
|
228
246
|
# Bob works at TechStart
|
|
229
|
-
frontline object relation link
|
|
247
|
+
frontline object relation link people 6625ddd... Companies 6625bbb...
|
|
230
248
|
```
|
|
231
249
|
|
|
232
250
|
### Link deal → company and deal → person
|
|
233
251
|
|
|
234
252
|
```bash
|
|
235
253
|
# The Acme deal belongs to Acme Corp
|
|
236
|
-
frontline object relation link
|
|
254
|
+
frontline object relation link deals 6625eee... Company 6625aaa...
|
|
237
255
|
|
|
238
256
|
# Alice is the contact for this deal
|
|
239
|
-
frontline object relation link
|
|
257
|
+
frontline object relation link deals 6625eee... People 6625ccc...
|
|
240
258
|
```
|
|
241
259
|
|
|
242
260
|
### Verify links
|
|
243
261
|
|
|
244
262
|
```bash
|
|
245
263
|
# What company does Alice belong to?
|
|
246
|
-
frontline object relation get
|
|
264
|
+
frontline object relation get people 6625ccc... Companies
|
|
247
265
|
|
|
248
266
|
# Who are the contacts for the Acme deal?
|
|
249
|
-
frontline object relation get
|
|
267
|
+
frontline object relation get deals 6625eee... People
|
|
250
268
|
|
|
251
269
|
# Which deals belong to Acme Corp? (reverse lookup)
|
|
252
|
-
frontline object relation find-by
|
|
270
|
+
frontline object relation find-by deals Company 6625aaa...
|
|
253
271
|
|
|
254
272
|
# Which people work at Acme Corp? (reverse lookup)
|
|
255
|
-
frontline object relation find-by
|
|
273
|
+
frontline object relation find-by people Companies 6625aaa...
|
|
256
274
|
```
|
|
257
275
|
|
|
258
276
|
## Step 6 — Set Up Pipeline Views
|
|
@@ -261,10 +279,10 @@ frontline object relation find-by standard__people Companies 6625aaa...
|
|
|
261
279
|
|
|
262
280
|
```bash
|
|
263
281
|
# Get the field IDs to include in each record type
|
|
264
|
-
frontline object field list
|
|
282
|
+
frontline object field list deals
|
|
265
283
|
# → Use the IDs for Name, Stage, Value, People, Company
|
|
266
284
|
|
|
267
|
-
frontline object record-type create
|
|
285
|
+
frontline object record-type create deals --data '{
|
|
268
286
|
"name": "active_pipeline",
|
|
269
287
|
"displayName": "Active Pipeline",
|
|
270
288
|
"columnIds": [1, 2, 3, 5, 8]
|
|
@@ -277,14 +295,14 @@ frontline object record-type create standard__deals --data '{
|
|
|
277
295
|
```bash
|
|
278
296
|
# Use the Stage field ID for grouping (e.g., field ID 2)
|
|
279
297
|
# Create directly on the object (no record type needed)
|
|
280
|
-
frontline object view create
|
|
298
|
+
frontline object view create deals --data '{
|
|
281
299
|
"name": "Pipeline Board",
|
|
282
300
|
"type": "KANBAN",
|
|
283
301
|
"metadata": { "groupingColumnId": 2 }
|
|
284
302
|
}'
|
|
285
303
|
|
|
286
304
|
# Or scoped to a specific record type with --record-type <id>
|
|
287
|
-
frontline object view create
|
|
305
|
+
frontline object view create deals --record-type 7 --data '{
|
|
288
306
|
"name": "Pipeline Board",
|
|
289
307
|
"type": "KANBAN",
|
|
290
308
|
"metadata": { "groupingColumnId": 2 }
|
|
@@ -299,13 +317,13 @@ Refine your views to show only the most important information:
|
|
|
299
317
|
|
|
300
318
|
```bash
|
|
301
319
|
# Set order of columns/fields
|
|
302
|
-
frontline object view update
|
|
320
|
+
frontline object view update deals <view-id> --column-order "Name, Stage, Value, Company"
|
|
303
321
|
|
|
304
322
|
# Hide less relevant fields
|
|
305
|
-
frontline object view update
|
|
323
|
+
frontline object view update deals <view-id> --hidden-columns "Created At, Updated At"
|
|
306
324
|
|
|
307
325
|
# Order fields in the record creation dialog
|
|
308
|
-
frontline object view update
|
|
326
|
+
frontline object view update deals <view-id> --dialog-field-order "Name, Stage, Value, Probability"
|
|
309
327
|
```
|
|
310
328
|
|
|
311
329
|
## Step 8 — Query Your CRM
|
|
@@ -313,7 +331,7 @@ frontline object view update standard__deals <view-id> --dialog-field-order "Nam
|
|
|
313
331
|
### Find high-value deals
|
|
314
332
|
|
|
315
333
|
```bash
|
|
316
|
-
frontline object record list
|
|
334
|
+
frontline object record list deals --query '{
|
|
317
335
|
"operator": "and",
|
|
318
336
|
"conditions": [
|
|
319
337
|
{ "path": "[Value]", "operator": "gte", "value": 50000 },
|
|
@@ -325,7 +343,7 @@ frontline object record list standard__deals --query '{
|
|
|
325
343
|
### Find contacts with no company
|
|
326
344
|
|
|
327
345
|
```bash
|
|
328
|
-
frontline object record list
|
|
346
|
+
frontline object record list people --query '{
|
|
329
347
|
"path": "[Companies]", "operator": "isNull"
|
|
330
348
|
}'
|
|
331
349
|
```
|
|
@@ -333,29 +351,29 @@ frontline object record list standard__people --query '{
|
|
|
333
351
|
### Search across fields
|
|
334
352
|
|
|
335
353
|
```bash
|
|
336
|
-
frontline object record list
|
|
337
|
-
frontline object record list
|
|
354
|
+
frontline object record list people --search "alice"
|
|
355
|
+
frontline object record list companies --search "tech"
|
|
338
356
|
```
|
|
339
357
|
|
|
340
358
|
### Find all contacts at a specific company
|
|
341
359
|
|
|
342
360
|
```bash
|
|
343
|
-
frontline object relation find-by
|
|
361
|
+
frontline object relation find-by people Companies <company-id>
|
|
344
362
|
```
|
|
345
363
|
|
|
346
364
|
## Step 8 — Export & Backup
|
|
347
365
|
|
|
348
366
|
```bash
|
|
349
367
|
# Export all deals to spreadsheet
|
|
350
|
-
frontline object export xlsx
|
|
368
|
+
frontline object export xlsx deals --output deals_report.xlsx
|
|
351
369
|
|
|
352
370
|
# Export filtered data (only won deals)
|
|
353
|
-
frontline object export csv
|
|
371
|
+
frontline object export csv deals \
|
|
354
372
|
--query '{"path": "[Stage]", "operator": "containsAny", "value": [3]}' \
|
|
355
373
|
--output won_deals.csv
|
|
356
374
|
|
|
357
375
|
# Export all contacts
|
|
358
|
-
frontline object export xlsx
|
|
376
|
+
frontline object export xlsx people --output contacts_backup.xlsx
|
|
359
377
|
```
|
|
360
378
|
|
|
361
379
|
## Quick Command Reference
|
|
@@ -269,10 +269,10 @@ Create a new record type with a kanban view for a deals pipeline:
|
|
|
269
269
|
|
|
270
270
|
```bash
|
|
271
271
|
# 1. Check current fields
|
|
272
|
-
frontline object field list
|
|
272
|
+
frontline object field list deals
|
|
273
273
|
|
|
274
274
|
# 2. Create a record type (returns record_type_id)
|
|
275
|
-
frontline object record-type create
|
|
275
|
+
frontline object record-type create deals --data '{
|
|
276
276
|
"name": "enterprise",
|
|
277
277
|
"displayName": "Enterprise Deals",
|
|
278
278
|
"columnIds": [1, 2, 5, 8]
|
|
@@ -23,10 +23,10 @@ frontline object export xlsx <name> [--output file.xlsx]
|
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
25
|
# Export all people
|
|
26
|
-
frontline object export xlsx
|
|
26
|
+
frontline object export xlsx people
|
|
27
27
|
|
|
28
28
|
# Export with filter (high-value deals only)
|
|
29
|
-
frontline object export xlsx
|
|
29
|
+
frontline object export xlsx deals \
|
|
30
30
|
--query '{"path": "[Amount]", "operator": "gte", "value": 10000}' \
|
|
31
31
|
--output big_deals.xlsx
|
|
32
32
|
|
|
@@ -46,7 +46,7 @@ frontline object export csv <name> [--output file.csv]
|
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
48
|
# Export all records as CSV
|
|
49
|
-
frontline object export csv
|
|
49
|
+
frontline object export csv people --output people_backup.csv
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
### Default Output
|
|
@@ -86,11 +86,11 @@ Always export before deleting:
|
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
88
|
# 1. Export everything
|
|
89
|
-
frontline object export xlsx
|
|
89
|
+
frontline object export xlsx legacy_deals --output legacy_deals_backup.xlsx
|
|
90
90
|
|
|
91
91
|
# 2. Verify the export file exists and looks right
|
|
92
92
|
ls -la legacy_deals_backup.xlsx
|
|
93
93
|
|
|
94
94
|
# 3. Delete the object
|
|
95
|
-
frontline object delete
|
|
95
|
+
frontline object delete legacy_deals
|
|
96
96
|
```
|
|
@@ -55,16 +55,16 @@ frontline table file delete <table> <file-id>
|
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
57
|
# 1. Find the row
|
|
58
|
-
frontline object row list
|
|
58
|
+
frontline object row list deals --search "Acme Corp"
|
|
59
59
|
# → row ID = 6625abc123def456
|
|
60
60
|
|
|
61
61
|
# 2. List attached files
|
|
62
|
-
frontline object file list
|
|
62
|
+
frontline object file list deals 6625abc123def456
|
|
63
63
|
# → [{ id: 15, originalName: "contract_v2.pdf", size: 245000, ... }]
|
|
64
64
|
|
|
65
65
|
# 3. Download a file
|
|
66
|
-
frontline object file download
|
|
66
|
+
frontline object file download deals 15 --output ./contract_v2.pdf
|
|
67
67
|
|
|
68
68
|
# 4. Delete an outdated file
|
|
69
|
-
frontline object file delete
|
|
69
|
+
frontline object file delete deals 15
|
|
70
70
|
```
|
|
@@ -17,18 +17,18 @@ The `frontline table row list` and `frontline object record list` commands accep
|
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
# Simple text search across all fields
|
|
20
|
-
frontline object record list
|
|
20
|
+
frontline object record list people --search "john"
|
|
21
21
|
|
|
22
22
|
# Filter by a single condition
|
|
23
23
|
# TIP: Use 'frontline object field list <name>' to find field names and tag IDs
|
|
24
|
-
frontline object record list
|
|
24
|
+
frontline object record list deals --query '{
|
|
25
25
|
"path": "[Amount]",
|
|
26
26
|
"operator": "gte",
|
|
27
27
|
"value": 10000
|
|
28
28
|
}'
|
|
29
29
|
|
|
30
30
|
# Multiple conditions (AND)
|
|
31
|
-
frontline object record list
|
|
31
|
+
frontline object record list deals --query '{
|
|
32
32
|
"operator": "and",
|
|
33
33
|
"conditions": [
|
|
34
34
|
{ "path": "[Status]", "operator": "containsAny", "value": [1, 2] },
|
|
@@ -37,7 +37,7 @@ frontline object record list standard__deals --query '{
|
|
|
37
37
|
}'
|
|
38
38
|
|
|
39
39
|
# Sort results
|
|
40
|
-
frontline object record list
|
|
40
|
+
frontline object record list people --sort '[{"path": "[Last Name]", "type": "asc"}]'
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
## Path Format
|
|
@@ -176,8 +176,8 @@ frontline table row list my_table --page 1 --page-size 50
|
|
|
176
176
|
## Filter by Record Type (objects only)
|
|
177
177
|
|
|
178
178
|
```bash
|
|
179
|
-
frontline object record list
|
|
180
|
-
frontline object record list
|
|
179
|
+
frontline object record list people --record-type lead
|
|
180
|
+
frontline object record list deals --record-type "all"
|
|
181
181
|
```
|
|
182
182
|
|
|
183
183
|
## Full Example
|
|
@@ -185,7 +185,7 @@ frontline object record list standard__deals --record-type "all"
|
|
|
185
185
|
Find all open deals worth over $10k, owned by a specific company, sorted by amount:
|
|
186
186
|
|
|
187
187
|
```bash
|
|
188
|
-
frontline object record list
|
|
188
|
+
frontline object record list deals \
|
|
189
189
|
--query '{
|
|
190
190
|
"operator": "and",
|
|
191
191
|
"conditions": [
|
|
@@ -24,10 +24,10 @@ Frontline ships with four core objects that form the foundation of every
|
|
|
24
24
|
account. They are pre-provisioned and cannot be deleted.
|
|
25
25
|
|
|
26
26
|
```
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
companies — Organizations / accounts
|
|
28
|
+
people — Individual contacts
|
|
29
|
+
deals — Sales opportunities
|
|
30
|
+
tickets — Support or service requests
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
### Built-in Relations
|
|
@@ -118,8 +118,8 @@ that aggregate and summarize information at the People and Company level.
|
|
|
118
118
|
Use this checklist whenever you are about to create a new object, table, or field:
|
|
119
119
|
|
|
120
120
|
1. **Is this already a base object?**
|
|
121
|
-
Check `frontline object list` — `
|
|
122
|
-
`
|
|
121
|
+
Check `frontline object list` — `companies`, `people`,
|
|
122
|
+
`deals`, `tickets` may already fit.
|
|
123
123
|
|
|
124
124
|
2. **Is this interaction data?**
|
|
125
125
|
If the new entity stores emails, messages, calls, or any user-to-contact
|
|
@@ -204,6 +204,6 @@ points to keep record profiles fresh:
|
|
|
204
204
|
│ • Updates Vector Store for context-aware AI reasoning │
|
|
205
205
|
│ │
|
|
206
206
|
│ BASE OBJECTS │
|
|
207
|
-
│
|
|
207
|
+
│ companies people deals tickets │
|
|
208
208
|
└─────────────────────────────────────────────────────────────────┘
|
|
209
209
|
```
|
|
@@ -1,53 +1,54 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: activities-and-tasks
|
|
3
3
|
description: >
|
|
4
|
-
How to create, read, update, and delete
|
|
4
|
+
How to create, read, update, and delete activities and tasks attached to rows
|
|
5
5
|
in tables and objects using the Frontline CLI.
|
|
6
6
|
allowed-tools: Bash(frontline:*)
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
#
|
|
9
|
+
# Activities & Tasks
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
track follow-ups, comments, and to-do items without polluting row fields.
|
|
11
|
+
Activities and tasks are sub-resources attached to individual rows. They let you
|
|
12
|
+
track follow-ups, comments, interactions, and to-do items without polluting row fields.
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Activities
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Activities log manual interactions on a row. Each activity has a **type**:
|
|
17
|
+
`NOTE`, `EMAIL`, `PHONE_CALL`, `MEETING`, or `WHATSAPP`.
|
|
17
18
|
|
|
18
|
-
### List
|
|
19
|
+
### List Activities
|
|
19
20
|
|
|
20
21
|
```bash
|
|
21
|
-
frontline object
|
|
22
|
-
frontline table note list <table> <row-id>
|
|
22
|
+
frontline object activity list <object> <row-id>
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
### Create
|
|
25
|
+
### Create an Activity
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
|
|
29
|
-
frontline
|
|
28
|
+
# Simple note (default type)
|
|
29
|
+
frontline object activity create <object> <row-id> --content "Follow up next week"
|
|
30
|
+
|
|
31
|
+
# With a specific type
|
|
32
|
+
frontline object activity create <object> <row-id> --content "Called re: pricing" --type PHONE_CALL
|
|
33
|
+
frontline object activity create <object> <row-id> --content "Discussed contract" --type MEETING
|
|
30
34
|
```
|
|
31
35
|
|
|
32
|
-
### Get
|
|
36
|
+
### Get an Activity by ID
|
|
33
37
|
|
|
34
38
|
```bash
|
|
35
|
-
frontline object
|
|
36
|
-
frontline table note get <table> <note-id>
|
|
39
|
+
frontline object activity get <object> <activity-id>
|
|
37
40
|
```
|
|
38
41
|
|
|
39
|
-
### Update
|
|
42
|
+
### Update an Activity
|
|
40
43
|
|
|
41
44
|
```bash
|
|
42
|
-
frontline object
|
|
43
|
-
frontline table note update <table> <note-id> --content "Updated content"
|
|
45
|
+
frontline object activity update <object> <activity-id> --content "Updated: follow up tomorrow"
|
|
44
46
|
```
|
|
45
47
|
|
|
46
|
-
### Delete
|
|
48
|
+
### Delete an Activity
|
|
47
49
|
|
|
48
50
|
```bash
|
|
49
|
-
frontline object
|
|
50
|
-
frontline table note delete <table> <note-id>
|
|
51
|
+
frontline object activity delete <object> <activity-id>
|
|
51
52
|
```
|
|
52
53
|
|
|
53
54
|
---
|
|
@@ -60,7 +61,6 @@ Tasks have content, optional due dates, assignees, and a completion state.
|
|
|
60
61
|
|
|
61
62
|
```bash
|
|
62
63
|
frontline object task list <object> <row-id>
|
|
63
|
-
frontline table task list <table> <row-id>
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
### Create a Task
|
|
@@ -111,18 +111,18 @@ frontline object task delete <object> <task-id>
|
|
|
111
111
|
|
|
112
112
|
```bash
|
|
113
113
|
# 1. Find the row you want to annotate
|
|
114
|
-
frontline object record list
|
|
114
|
+
frontline object record list deals --search "Acme"
|
|
115
115
|
# → row ID = 6625abc123def456
|
|
116
116
|
|
|
117
|
-
# 2.
|
|
118
|
-
frontline object
|
|
119
|
-
--content "Discussed pricing on call"
|
|
117
|
+
# 2. Log a phone call activity
|
|
118
|
+
frontline object activity create deals 6625abc123def456 \
|
|
119
|
+
--content "Discussed pricing on call" --type PHONE_CALL
|
|
120
120
|
|
|
121
121
|
# 3. Add a follow-up task with a due date
|
|
122
|
-
frontline object task create
|
|
122
|
+
frontline object task create deals 6625abc123def456 \
|
|
123
123
|
--content "Send revised proposal" \
|
|
124
124
|
--due-date 2026-05-15
|
|
125
125
|
|
|
126
126
|
# 4. Later, mark it complete
|
|
127
|
-
frontline object task complete
|
|
127
|
+
frontline object task complete deals 7
|
|
128
128
|
```
|
|
@@ -176,33 +176,33 @@ frontline object record list <object> --query '{
|
|
|
176
176
|
## Complete Example: Support Ticket Pipeline
|
|
177
177
|
|
|
178
178
|
```bash
|
|
179
|
-
# 1. The Status field already exists on
|
|
179
|
+
# 1. The Status field already exists on tickets as a predefined field.
|
|
180
180
|
# Check its field ID and existing options:
|
|
181
|
-
frontline object field list
|
|
181
|
+
frontline object field list tickets
|
|
182
182
|
# → Status field ID = 64, existing options: New, On You, On Customer, On Hold, Closed
|
|
183
183
|
|
|
184
184
|
# 2. Add more stages to the existing Status field (optionsEditable: true)
|
|
185
|
-
frontline object option create
|
|
186
|
-
frontline object option create
|
|
185
|
+
frontline object option create tickets 64 --data '{"name": "Escalated", "color": "Bright Red"}'
|
|
186
|
+
frontline object option create tickets 64 --data '{"name": "Waiting on Vendor", "color": "Amber"}'
|
|
187
187
|
|
|
188
188
|
# 3. Also add a priority field
|
|
189
|
-
frontline object field create
|
|
189
|
+
frontline object field create tickets --data '{
|
|
190
190
|
"name": "Priority",
|
|
191
191
|
"type": "select",
|
|
192
192
|
"metadata": { "mode": "singleSelect" }
|
|
193
193
|
}'
|
|
194
194
|
# → { id: 11, ... }
|
|
195
195
|
|
|
196
|
-
frontline object option create
|
|
197
|
-
frontline object option create
|
|
198
|
-
frontline object option create
|
|
199
|
-
frontline object option create
|
|
196
|
+
frontline object option create tickets 11 --data '{"name": "Critical", "color": "Bright Red"}'
|
|
197
|
+
frontline object option create tickets 11 --data '{"name": "High", "color": "Magenta"}'
|
|
198
|
+
frontline object option create tickets 11 --data '{"name": "Medium", "color": "Amber"}'
|
|
199
|
+
frontline object option create tickets 11 --data '{"name": "Low", "color": "Gray"}'
|
|
200
200
|
|
|
201
201
|
# 4. Create record type with relevant fields
|
|
202
|
-
frontline object field list
|
|
202
|
+
frontline object field list tickets
|
|
203
203
|
# → Suppose: 1=Subject, 10=Status, 11=Priority, 5=Assignee, 3=Description
|
|
204
204
|
|
|
205
|
-
frontline object record-type create
|
|
205
|
+
frontline object record-type create tickets --data '{
|
|
206
206
|
"name": "support_board",
|
|
207
207
|
"displayName": "Support Board",
|
|
208
208
|
"columnIds": [1, 10, 11, 5, 3]
|
|
@@ -210,14 +210,14 @@ frontline object record-type create standard__tickets --data '{
|
|
|
210
210
|
# → { id: 4, ... }
|
|
211
211
|
|
|
212
212
|
# 5. Create kanban view grouped by Status — directly on the object
|
|
213
|
-
frontline object view create
|
|
213
|
+
frontline object view create tickets --data '{
|
|
214
214
|
"name": "Ticket Board",
|
|
215
215
|
"type": "KANBAN",
|
|
216
216
|
"metadata": { "groupingColumnId": 10 }
|
|
217
217
|
}'
|
|
218
218
|
|
|
219
219
|
# 6. Create a table view too (for list browsing)
|
|
220
|
-
frontline object view create
|
|
220
|
+
frontline object view create tickets --data '{
|
|
221
221
|
"name": "All Tickets",
|
|
222
222
|
"type": "TABLE",
|
|
223
223
|
"metadata": {}
|