@getfrontline/cli 1.0.1 → 1.0.3
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 +246 -246
- package/dist/commands/auth/login.d.ts.map +1 -1
- package/dist/commands/auth/login.js +29 -4
- package/dist/commands/auth/login.js.map +1 -1
- package/dist/commands/auth/profiles.d.ts.map +1 -1
- package/dist/commands/auth/profiles.js +7 -11
- package/dist/commands/auth/profiles.js.map +1 -1
- package/dist/commands/object/export.js +3 -3
- package/dist/commands/object/field.js +5 -5
- package/dist/commands/object/index.js +8 -8
- 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/lib/cliVersion.d.ts +8 -0
- package/dist/lib/cliVersion.d.ts.map +1 -0
- package/dist/lib/cliVersion.js +26 -0
- package/dist/lib/cliVersion.js.map +1 -0
- package/dist/lib/config.js +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/errors.d.ts +3 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +10 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/helpEpilog.d.ts.map +1 -1
- package/dist/lib/helpEpilog.js +35 -35
- package/dist/lib/helpEpilog.js.map +1 -1
- package/dist/lib/httpClient.d.ts.map +1 -1
- package/dist/lib/httpClient.js +35 -16
- package/dist/lib/httpClient.js.map +1 -1
- package/dist/lib/output.d.ts +10 -0
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +28 -12
- package/dist/lib/output.js.map +1 -1
- package/dist/max/commands/auth/login.d.ts.map +1 -1
- package/dist/max/commands/auth/login.js +22 -5
- package/dist/max/commands/auth/login.js.map +1 -1
- package/dist/max/commands/chat/repl.d.ts +9 -0
- package/dist/max/commands/chat/repl.d.ts.map +1 -1
- package/dist/max/commands/chat/repl.js +15 -11
- package/dist/max/commands/chat/repl.js.map +1 -1
- package/dist/max/commands/chat/send.d.ts.map +1 -1
- package/dist/max/commands/chat/send.js +17 -0
- package/dist/max/commands/chat/send.js.map +1 -1
- package/dist/max/lib/httpClient.d.ts.map +1 -1
- package/dist/max/lib/httpClient.js +11 -4
- package/dist/max/lib/httpClient.js.map +1 -1
- package/dist/max/ui/banner.d.ts.map +1 -1
- package/dist/max/ui/banner.js +21 -21
- package/dist/max/ui/banner.js.map +1 -1
- package/dist/max.js +15 -3
- package/dist/max.js.map +1 -1
- 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 +58 -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 +209 -0
- package/dist/skills/max-auth/SKILL.md +76 -76
- package/dist/skills/max-chat/SKILL.md +111 -111
- package/dist/skills/notes-and-tasks/SKILL.md +4 -4
- package/dist/skills/pipeline-setup/SKILL.md +13 -13
- package/dist/skills/relations/SKILL.md +20 -15
- package/dist/skills/schema-design/SKILL.md +13 -13
- package/package.json +51 -51
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../../src/max/lib/httpClient.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../../src/max/lib/httpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../../src/max/ui/banner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../../src/max/ui/banner.ts"],"names":[],"mappings":"AAuEA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBxD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrD"}
|
package/dist/max/ui/banner.js
CHANGED
|
@@ -10,6 +10,7 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
11
|
// eslint-disable-next-line @typescript-eslint/consistent-type-imports
|
|
12
12
|
const package_json_1 = __importDefault(require("../../../package.json"));
|
|
13
|
+
const output_1 = require("../../lib/output");
|
|
13
14
|
function getCandidateLogoPaths() {
|
|
14
15
|
const fromEnv = process.env.MAX_CLI_LOGO_PATH?.trim() ||
|
|
15
16
|
process.env.FRONTLINE_CLI_LOGO_PATH?.trim() ||
|
|
@@ -39,23 +40,23 @@ function resolveBundledLogoPath() {
|
|
|
39
40
|
function printAsciiLogo() {
|
|
40
41
|
// Fallback banner (matches the Frontline mark in plain text terminals).
|
|
41
42
|
// Keep as a single template literal to preserve spacing.
|
|
42
|
-
const art = `
|
|
43
|
-
@@@@@@@@@@@@@@@@@@@@@@
|
|
44
|
-
@@@@@@@@@@@@@@@@@@@@@@@@
|
|
45
|
-
@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
46
|
-
@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
47
|
-
@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
@@@@@@@@@@@@@@@@@@
|
|
51
|
-
@@@@@@@@@@@@@@@@@@@@@
|
|
52
|
-
@@@@@@@@@@@@@@@@@@@@@
|
|
53
|
-
@@@@@@@@@@@@@@@@@@@@@@
|
|
54
|
-
@@@@@@@@@@@@@@@@@@@@@
|
|
55
|
-
@@@@@@@@@@
|
|
56
|
-
@@@@@@@@@
|
|
43
|
+
const art = `
|
|
44
|
+
@@@@@@@@@@@@@@@@@@@@@@
|
|
45
|
+
@@@@@@@@@@@@@@@@@@@@@@@@
|
|
46
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
47
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
48
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@@@@@@@@@@@@@@@@@@
|
|
52
|
+
@@@@@@@@@@@@@@@@@@@@@
|
|
53
|
+
@@@@@@@@@@@@@@@@@@@@@
|
|
54
|
+
@@@@@@@@@@@@@@@@@@@@@@
|
|
55
|
+
@@@@@@@@@@@@@@@@@@@@@
|
|
56
|
+
@@@@@@@@@@
|
|
57
|
+
@@@@@@@@@
|
|
57
58
|
`;
|
|
58
|
-
|
|
59
|
+
process.stderr.write(output_1.brand.primary(art) + "\n");
|
|
59
60
|
}
|
|
60
61
|
async function tryRenderPngLogo(logoPath) {
|
|
61
62
|
try {
|
|
@@ -77,7 +78,7 @@ async function printFrontlineLogo() {
|
|
|
77
78
|
if (logoPath) {
|
|
78
79
|
const png = await tryRenderPngLogo(logoPath);
|
|
79
80
|
if (png) {
|
|
80
|
-
|
|
81
|
+
process.stderr.write(png + "\n");
|
|
81
82
|
rendered = true;
|
|
82
83
|
}
|
|
83
84
|
}
|
|
@@ -88,9 +89,8 @@ async function printFrontlineLogo() {
|
|
|
88
89
|
}
|
|
89
90
|
async function printMaxWelcome() {
|
|
90
91
|
await printFrontlineLogo();
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
console.log();
|
|
92
|
+
process.stderr.write(`${output_1.brand.primary.bold("Max CLI")}${chalk_1.default.white(" by Frontline")}\n`);
|
|
93
|
+
process.stderr.write(`${output_1.brand.muted(`Version: ${package_json_1.default.version}`)}\n`);
|
|
94
|
+
process.stderr.write(`${output_1.brand.muted("Sign in once. Chat with Max from your terminal.")}\n\n`);
|
|
95
95
|
}
|
|
96
96
|
//# sourceMappingURL=banner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../../src/max/ui/banner.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../../src/max/ui/banner.ts"],"names":[],"mappings":"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"}
|
package/dist/max.js
CHANGED
|
@@ -25,10 +25,22 @@ authCmd.addCommand(whoami_1.maxWhoamiCommand);
|
|
|
25
25
|
program.addCommand(authCmd);
|
|
26
26
|
const chatCmd = new commander_1.Command("chat")
|
|
27
27
|
.description("Send messages to Max on the Public API (Bearer = per-user API key; base URL from env, profile, or --base-url — see `max --help`)")
|
|
28
|
+
.option("--profile <name>", helpEpilog_1.MAX_PROFILE_OPTION)
|
|
29
|
+
.option("--base-url <url>", helpEpilog_1.MAX_BASE_URL_OPTION)
|
|
30
|
+
.option("--api-base-url <url>", "Deprecated alias for --base-url (Public API root)")
|
|
31
|
+
.option("--api-key <key>", "Override per-user API key for this run")
|
|
32
|
+
.option("--debug", "Show debug information")
|
|
33
|
+
.option("--timeout <seconds>", "Polling timeout in seconds", "60")
|
|
28
34
|
.addHelpText("after", `\nAuth: max auth login <api-key>. URL: see \`max --help\` (REST).\n`)
|
|
29
|
-
.action(async () => {
|
|
30
|
-
|
|
31
|
-
|
|
35
|
+
.action(async (options) => {
|
|
36
|
+
await (0, repl_1.runMaxChatRepl)({
|
|
37
|
+
profile: options.profile ? String(options.profile) : undefined,
|
|
38
|
+
baseUrl: options.baseUrl ? String(options.baseUrl) : undefined,
|
|
39
|
+
apiBaseUrl: options.apiBaseUrl ? String(options.apiBaseUrl) : undefined,
|
|
40
|
+
apiKey: options.apiKey ? String(options.apiKey) : undefined,
|
|
41
|
+
debug: Boolean(options.debug),
|
|
42
|
+
timeout: options.timeout ? String(options.timeout) : undefined,
|
|
43
|
+
});
|
|
32
44
|
});
|
|
33
45
|
chatCmd.addCommand(send_1.maxSendCommand);
|
|
34
46
|
chatCmd.addCommand(repl_1.maxChatReplCommand);
|
package/dist/max.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max.js","sourceRoot":"","sources":["../src/max.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,qDAA4D;AAC5D,uDAA8D;AAC9D,uDAA8D;AAC9D,mDAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"max.js","sourceRoot":"","sources":["../src/max.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,24 +99,24 @@ frontline object aggregation compute <object> <view-id> --column-id 5
|
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
101
|
# 1. Identify the view and columns
|
|
102
|
-
frontline object get
|
|
102
|
+
frontline object get standard__deals
|
|
103
103
|
# → view ID = 1
|
|
104
|
-
frontline object field list
|
|
104
|
+
frontline object field list standard__deals
|
|
105
105
|
# → Amount column ID = 5, Status column ID = 8
|
|
106
106
|
|
|
107
107
|
# 2. Add aggregations
|
|
108
|
-
frontline object aggregation create
|
|
108
|
+
frontline object aggregation create standard__deals 1 \
|
|
109
109
|
--data '{"columnId": 5, "operation": "SUM"}'
|
|
110
|
-
frontline object aggregation create
|
|
110
|
+
frontline object aggregation create standard__deals 1 \
|
|
111
111
|
--data '{"columnId": 5, "operation": "AVERAGE"}'
|
|
112
|
-
frontline object aggregation create
|
|
112
|
+
frontline object aggregation create standard__deals 1 \
|
|
113
113
|
--data '{"columnId": 8, "operation": "COUNT_FILLED"}'
|
|
114
114
|
|
|
115
115
|
# 3. Compute results
|
|
116
|
-
frontline object aggregation compute
|
|
116
|
+
frontline object aggregation compute standard__deals 1
|
|
117
117
|
# → { aggregations: [{ columnId: 5, operation: "SUM", value: 1250000 }, ...] }
|
|
118
118
|
|
|
119
119
|
# 4. Compute only for "Won" deals
|
|
120
|
-
frontline object aggregation compute
|
|
120
|
+
frontline object aggregation compute standard__deals 1 \
|
|
121
121
|
--query '{"path":"[Status]","operator":"containsAny","value":[3]}'
|
|
122
122
|
```
|
|
@@ -85,7 +85,7 @@ frontline table row list my_table
|
|
|
85
85
|
|
|
86
86
|
# 3. Switch to prod when needed
|
|
87
87
|
frontline auth use prod
|
|
88
|
-
frontline object count
|
|
88
|
+
frontline object count standard__deals
|
|
89
89
|
|
|
90
90
|
# 4. Quick one-off against staging without switching
|
|
91
91
|
frontline object list --api-key flk_stg_123 --base-url https://staging.example.com/public/v1
|
|
@@ -6,15 +6,25 @@ description: >
|
|
|
6
6
|
between entities, adding pipeline stages, populating data, and querying
|
|
7
7
|
across related objects. Use as a reference when building any multi-entity
|
|
8
8
|
business workflow from scratch.
|
|
9
|
+
IMPORTANT: Before designing new entities or fields, always read the
|
|
10
|
+
`frontline-internals` skill to understand what the system already handles
|
|
11
|
+
automatically (activity sync, consolidation, built-in objects).
|
|
9
12
|
allowed-tools: Bash(frontline:*)
|
|
10
13
|
---
|
|
11
14
|
|
|
12
15
|
# Building a CRM with the Frontline CLI
|
|
13
16
|
|
|
17
|
+
> [!IMPORTANT]
|
|
18
|
+
> **Read the [`frontline-internals`](../frontline-internals/SKILL.md) skill first.**
|
|
19
|
+
> It describes what the platform already handles automatically — including
|
|
20
|
+
> activity synchronization (emails, conversations, …) and periodic
|
|
21
|
+
> consolidation of fields like `Last Interaction`. Designing entities that
|
|
22
|
+
> duplicate built-in behaviour leads to split history and inconsistent data.
|
|
23
|
+
|
|
14
24
|
This skill walks through building a complete CRM system: Companies, Contacts,
|
|
15
25
|
and Deals — with relations, pipeline stages, record types, and views.
|
|
16
26
|
|
|
17
|
-
> The built-in `
|
|
27
|
+
> The built-in `standard__companies`, `standard__people`, and `standard__deals` objects already
|
|
18
28
|
> exist. This guide uses **custom objects** to show how to build everything from
|
|
19
29
|
> scratch, but the same patterns apply when extending existing objects.
|
|
20
30
|
|
|
@@ -82,9 +92,9 @@ frontline table create pedidos --data '{
|
|
|
82
92
|
The system also ships with these core objects:
|
|
83
93
|
|
|
84
94
|
```
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
95
|
+
standard__companies — Companies
|
|
96
|
+
standard__people — People (contacts)
|
|
97
|
+
standard__deals — Deals (sales pipeline)
|
|
88
98
|
```
|
|
89
99
|
|
|
90
100
|
Verify they exist:
|
|
@@ -98,16 +108,16 @@ frontline object list
|
|
|
98
108
|
### View current fields
|
|
99
109
|
|
|
100
110
|
```bash
|
|
101
|
-
frontline object field list
|
|
102
|
-
frontline object field list
|
|
103
|
-
frontline object field list
|
|
111
|
+
frontline object field list standard__companies
|
|
112
|
+
frontline object field list standard__people
|
|
113
|
+
frontline object field list standard__deals
|
|
104
114
|
```
|
|
105
115
|
|
|
106
116
|
### Add custom fields
|
|
107
117
|
|
|
108
118
|
```bash
|
|
109
119
|
# Add a "Lead Source" select field to People
|
|
110
|
-
frontline object field create
|
|
120
|
+
frontline object field create standard__people --data '{
|
|
111
121
|
"name": "Lead Source",
|
|
112
122
|
"type": "select",
|
|
113
123
|
"metadata": { "mode": "singleSelect" }
|
|
@@ -115,20 +125,20 @@ frontline object field create sor__people --data '{
|
|
|
115
125
|
# → Returns: { id: 15, name: "Lead Source", type: "select", ... }
|
|
116
126
|
|
|
117
127
|
# Add options to the new field (use the field ID from above)
|
|
118
|
-
frontline object option create
|
|
119
|
-
frontline object option create
|
|
120
|
-
frontline object option create
|
|
121
|
-
frontline object option create
|
|
128
|
+
frontline object option create standard__people 15 --data '{"name": "Website", "color": "Sky"}'
|
|
129
|
+
frontline object option create standard__people 15 --data '{"name": "Referral", "color": "Emerald"}'
|
|
130
|
+
frontline object option create standard__people 15 --data '{"name": "Cold Outreach", "color": "Gray"}'
|
|
131
|
+
frontline object option create standard__people 15 --data '{"name": "Event", "color": "Lavender"}'
|
|
122
132
|
|
|
123
133
|
# Add a "Probability %" number field to Deals
|
|
124
|
-
frontline object field create
|
|
134
|
+
frontline object field create standard__deals --data '{
|
|
125
135
|
"name": "Probability",
|
|
126
136
|
"type": "number",
|
|
127
137
|
"metadata": {}
|
|
128
138
|
}'
|
|
129
139
|
|
|
130
140
|
# Add a "Next Follow-up" date field to Deals
|
|
131
|
-
frontline object field create
|
|
141
|
+
frontline object field create standard__deals --data '{
|
|
132
142
|
"name": "Next Follow-up",
|
|
133
143
|
"type": "dateOnly",
|
|
134
144
|
"metadata": {}
|
|
@@ -140,13 +150,13 @@ frontline object field create sor__deals --data '{
|
|
|
140
150
|
The built-in objects already have relations defined:
|
|
141
151
|
|
|
142
152
|
```bash
|
|
143
|
-
frontline object schema
|
|
144
|
-
# → relations: [{ name: "companies", target: "
|
|
153
|
+
frontline object schema standard__people
|
|
154
|
+
# → relations: [{ name: "companies", target: "standard__companies", mode: "multi" }]
|
|
145
155
|
|
|
146
|
-
frontline object schema
|
|
156
|
+
frontline object schema standard__deals
|
|
147
157
|
# → relations: [
|
|
148
|
-
# { name: "people", target: "
|
|
149
|
-
# { name: "company", target: "
|
|
158
|
+
# { name: "people", target: "standard__people", mode: "multi" },
|
|
159
|
+
# { name: "company", target: "standard__companies", mode: "single" }
|
|
150
160
|
# ]
|
|
151
161
|
```
|
|
152
162
|
|
|
@@ -157,14 +167,14 @@ The `name` field is what you use in all relation commands.
|
|
|
157
167
|
### Create companies
|
|
158
168
|
|
|
159
169
|
```bash
|
|
160
|
-
frontline object record create
|
|
170
|
+
frontline object record create standard__companies --data '{
|
|
161
171
|
"Name": "Acme Corp",
|
|
162
172
|
"Domain": "acme.com",
|
|
163
173
|
"Primary Location": "New York, USA"
|
|
164
174
|
}'
|
|
165
175
|
# → { id: "6625aaa...", ... }
|
|
166
176
|
|
|
167
|
-
frontline object record create
|
|
177
|
+
frontline object record create standard__companies --data '{
|
|
168
178
|
"Name": "TechStart Inc",
|
|
169
179
|
"Domain": "techstart.io",
|
|
170
180
|
"Primary Location": "San Francisco, USA"
|
|
@@ -175,7 +185,7 @@ frontline object record create sor__companies --data '{
|
|
|
175
185
|
### Create contacts
|
|
176
186
|
|
|
177
187
|
```bash
|
|
178
|
-
frontline object record create
|
|
188
|
+
frontline object record create standard__people --data '{
|
|
179
189
|
"First Name": "Alice",
|
|
180
190
|
"Last Name": "Johnson",
|
|
181
191
|
"Email": "alice@acme.com",
|
|
@@ -184,7 +194,7 @@ frontline object record create sor__people --data '{
|
|
|
184
194
|
}'
|
|
185
195
|
# → { id: "6625ccc...", ... }
|
|
186
196
|
|
|
187
|
-
frontline object record create
|
|
197
|
+
frontline object record create standard__people --data '{
|
|
188
198
|
"First Name": "Bob",
|
|
189
199
|
"Last Name": "Smith",
|
|
190
200
|
"Email": "bob@techstart.io",
|
|
@@ -196,10 +206,10 @@ frontline object record create sor__people --data '{
|
|
|
196
206
|
### Create deals
|
|
197
207
|
|
|
198
208
|
```bash
|
|
199
|
-
# Use option IDs from `frontline object field list
|
|
209
|
+
# Use option IDs from `frontline object field list standard__deals`
|
|
200
210
|
# Stage options: 1=Lead, 2=In Progress, 3=Won, 4=Lost
|
|
201
211
|
|
|
202
|
-
frontline object record create
|
|
212
|
+
frontline object record create standard__deals --data '{
|
|
203
213
|
"Name": "Acme Enterprise License",
|
|
204
214
|
"Stage": [2],
|
|
205
215
|
"Value": 150000
|
|
@@ -213,36 +223,36 @@ frontline object record create sor__deals --data '{
|
|
|
213
223
|
|
|
214
224
|
```bash
|
|
215
225
|
# Alice works at Acme
|
|
216
|
-
frontline object relation link
|
|
226
|
+
frontline object relation link standard__people 6625ccc... Companies 6625aaa...
|
|
217
227
|
|
|
218
228
|
# Bob works at TechStart
|
|
219
|
-
frontline object relation link
|
|
229
|
+
frontline object relation link standard__people 6625ddd... Companies 6625bbb...
|
|
220
230
|
```
|
|
221
231
|
|
|
222
232
|
### Link deal → company and deal → person
|
|
223
233
|
|
|
224
234
|
```bash
|
|
225
235
|
# The Acme deal belongs to Acme Corp
|
|
226
|
-
frontline object relation link
|
|
236
|
+
frontline object relation link standard__deals 6625eee... Company 6625aaa...
|
|
227
237
|
|
|
228
238
|
# Alice is the contact for this deal
|
|
229
|
-
frontline object relation link
|
|
239
|
+
frontline object relation link standard__deals 6625eee... People 6625ccc...
|
|
230
240
|
```
|
|
231
241
|
|
|
232
242
|
### Verify links
|
|
233
243
|
|
|
234
244
|
```bash
|
|
235
245
|
# What company does Alice belong to?
|
|
236
|
-
frontline object relation get
|
|
246
|
+
frontline object relation get standard__people 6625ccc... Companies
|
|
237
247
|
|
|
238
248
|
# Who are the contacts for the Acme deal?
|
|
239
|
-
frontline object relation get
|
|
249
|
+
frontline object relation get standard__deals 6625eee... People
|
|
240
250
|
|
|
241
251
|
# Which deals belong to Acme Corp? (reverse lookup)
|
|
242
|
-
frontline object relation find-by
|
|
252
|
+
frontline object relation find-by standard__deals Company 6625aaa...
|
|
243
253
|
|
|
244
254
|
# Which people work at Acme Corp? (reverse lookup)
|
|
245
|
-
frontline object relation find-by
|
|
255
|
+
frontline object relation find-by standard__people Companies 6625aaa...
|
|
246
256
|
```
|
|
247
257
|
|
|
248
258
|
## Step 6 — Set Up Pipeline Views
|
|
@@ -251,10 +261,10 @@ frontline object relation find-by sor__people Companies 6625aaa...
|
|
|
251
261
|
|
|
252
262
|
```bash
|
|
253
263
|
# Get the field IDs to include in each record type
|
|
254
|
-
frontline object field list
|
|
264
|
+
frontline object field list standard__deals
|
|
255
265
|
# → Use the IDs for Name, Stage, Value, People, Company
|
|
256
266
|
|
|
257
|
-
frontline object record-type create
|
|
267
|
+
frontline object record-type create standard__deals --data '{
|
|
258
268
|
"name": "active_pipeline",
|
|
259
269
|
"displayName": "Active Pipeline",
|
|
260
270
|
"columnIds": [1, 2, 3, 5, 8]
|
|
@@ -267,14 +277,14 @@ frontline object record-type create sor__deals --data '{
|
|
|
267
277
|
```bash
|
|
268
278
|
# Use the Stage field ID for grouping (e.g., field ID 2)
|
|
269
279
|
# Create directly on the object (no record type needed)
|
|
270
|
-
frontline object view create
|
|
280
|
+
frontline object view create standard__deals --data '{
|
|
271
281
|
"name": "Pipeline Board",
|
|
272
282
|
"type": "KANBAN",
|
|
273
283
|
"metadata": { "groupingColumnId": 2 }
|
|
274
284
|
}'
|
|
275
285
|
|
|
276
286
|
# Or scoped to a specific record type with --record-type <id>
|
|
277
|
-
frontline object view create
|
|
287
|
+
frontline object view create standard__deals --record-type 7 --data '{
|
|
278
288
|
"name": "Pipeline Board",
|
|
279
289
|
"type": "KANBAN",
|
|
280
290
|
"metadata": { "groupingColumnId": 2 }
|
|
@@ -289,13 +299,13 @@ Refine your views to show only the most important information:
|
|
|
289
299
|
|
|
290
300
|
```bash
|
|
291
301
|
# Set order of columns/fields
|
|
292
|
-
frontline object view update
|
|
302
|
+
frontline object view update standard__deals <view-id> --column-order "Name, Stage, Value, Company"
|
|
293
303
|
|
|
294
304
|
# Hide less relevant fields
|
|
295
|
-
frontline object view update
|
|
305
|
+
frontline object view update standard__deals <view-id> --hidden-columns "Created At, Updated At"
|
|
296
306
|
|
|
297
307
|
# Order fields in the record creation dialog
|
|
298
|
-
frontline object view update
|
|
308
|
+
frontline object view update standard__deals <view-id> --dialog-field-order "Name, Stage, Value, Probability"
|
|
299
309
|
```
|
|
300
310
|
|
|
301
311
|
## Step 8 — Query Your CRM
|
|
@@ -303,7 +313,7 @@ frontline object view update sor__deals <view-id> --dialog-field-order "Name, St
|
|
|
303
313
|
### Find high-value deals
|
|
304
314
|
|
|
305
315
|
```bash
|
|
306
|
-
frontline object record list
|
|
316
|
+
frontline object record list standard__deals --query '{
|
|
307
317
|
"operator": "and",
|
|
308
318
|
"conditions": [
|
|
309
319
|
{ "path": "[Value]", "operator": "gte", "value": 50000 },
|
|
@@ -315,7 +325,7 @@ frontline object record list sor__deals --query '{
|
|
|
315
325
|
### Find contacts with no company
|
|
316
326
|
|
|
317
327
|
```bash
|
|
318
|
-
frontline object record list
|
|
328
|
+
frontline object record list standard__people --query '{
|
|
319
329
|
"path": "[Companies]", "operator": "isNull"
|
|
320
330
|
}'
|
|
321
331
|
```
|
|
@@ -323,29 +333,29 @@ frontline object record list sor__people --query '{
|
|
|
323
333
|
### Search across fields
|
|
324
334
|
|
|
325
335
|
```bash
|
|
326
|
-
frontline object record list
|
|
327
|
-
frontline object record list
|
|
336
|
+
frontline object record list standard__people --search "alice"
|
|
337
|
+
frontline object record list standard__companies --search "tech"
|
|
328
338
|
```
|
|
329
339
|
|
|
330
340
|
### Find all contacts at a specific company
|
|
331
341
|
|
|
332
342
|
```bash
|
|
333
|
-
frontline object relation find-by
|
|
343
|
+
frontline object relation find-by standard__people Companies <company-id>
|
|
334
344
|
```
|
|
335
345
|
|
|
336
346
|
## Step 8 — Export & Backup
|
|
337
347
|
|
|
338
348
|
```bash
|
|
339
349
|
# Export all deals to spreadsheet
|
|
340
|
-
frontline object export xlsx
|
|
350
|
+
frontline object export xlsx standard__deals --output deals_report.xlsx
|
|
341
351
|
|
|
342
352
|
# Export filtered data (only won deals)
|
|
343
|
-
frontline object export csv
|
|
353
|
+
frontline object export csv standard__deals \
|
|
344
354
|
--query '{"path": "[Stage]", "operator": "containsAny", "value": [3]}' \
|
|
345
355
|
--output won_deals.csv
|
|
346
356
|
|
|
347
357
|
# Export all contacts
|
|
348
|
-
frontline object export xlsx
|
|
358
|
+
frontline object export xlsx standard__people --output contacts_backup.xlsx
|
|
349
359
|
```
|
|
350
360
|
|
|
351
361
|
## 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 standard__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 standard__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 standard__people
|
|
27
27
|
|
|
28
28
|
# Export with filter (high-value deals only)
|
|
29
|
-
frontline object export xlsx
|
|
29
|
+
frontline object export xlsx standard__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 standard__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 standard__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 standard__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 standard__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 standard__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 standard__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 standard__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 standard__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 standard__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 standard__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 sor__deals --query '{
|
|
|
37
37
|
}'
|
|
38
38
|
|
|
39
39
|
# Sort results
|
|
40
|
-
frontline object record list
|
|
40
|
+
frontline object record list standard__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 standard__people --record-type lead
|
|
180
|
+
frontline object record list standard__deals --record-type "all"
|
|
181
181
|
```
|
|
182
182
|
|
|
183
183
|
## Full Example
|
|
@@ -185,7 +185,7 @@ frontline object record list sor__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 standard__deals \
|
|
189
189
|
--query '{
|
|
190
190
|
"operator": "and",
|
|
191
191
|
"conditions": [
|