@getfrontline/cli 1.0.3 → 1.0.5
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 +173 -7
- package/dist/commands/agents/builder.d.ts +10 -0
- package/dist/commands/agents/builder.d.ts.map +1 -0
- package/dist/commands/agents/builder.js +243 -0
- package/dist/commands/agents/builder.js.map +1 -0
- package/dist/commands/agents/flows.d.ts.map +1 -1
- package/dist/commands/agents/flows.js +253 -25
- package/dist/commands/agents/flows.js.map +1 -1
- package/dist/commands/agents/intents.d.ts +3 -0
- package/dist/commands/agents/intents.d.ts.map +1 -0
- package/dist/commands/agents/intents.js +137 -0
- package/dist/commands/agents/intents.js.map +1 -0
- package/dist/commands/agents/use.d.ts +3 -0
- package/dist/commands/agents/use.d.ts.map +1 -0
- package/dist/commands/agents/use.js +33 -0
- package/dist/commands/agents/use.js.map +1 -0
- package/dist/commands/agents/variables.d.ts +3 -0
- package/dist/commands/agents/variables.d.ts.map +1 -0
- package/dist/commands/agents/variables.js +111 -0
- package/dist/commands/agents/variables.js.map +1 -0
- package/dist/commands/aiModels/index.d.ts +3 -0
- package/dist/commands/aiModels/index.d.ts.map +1 -0
- package/dist/commands/aiModels/index.js +60 -0
- package/dist/commands/aiModels/index.js.map +1 -0
- package/dist/commands/incomingWebhooks/index.d.ts +3 -0
- package/dist/commands/incomingWebhooks/index.d.ts.map +1 -0
- package/dist/commands/incomingWebhooks/index.js +28 -0
- package/dist/commands/incomingWebhooks/index.js.map +1 -0
- 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/commands/tools/index.d.ts +3 -0
- package/dist/commands/tools/index.d.ts.map +1 -0
- package/dist/commands/tools/index.js +113 -0
- package/dist/commands/tools/index.js.map +1 -0
- package/dist/commands/util/uuid.d.ts +3 -0
- package/dist/commands/util/uuid.d.ts.map +1 -0
- package/dist/commands/util/uuid.js +15 -0
- package/dist/commands/util/uuid.js.map +1 -0
- package/dist/commands/workflows/analytics.d.ts.map +1 -1
- package/dist/commands/workflows/analytics.js +9 -3
- package/dist/commands/workflows/analytics.js.map +1 -1
- package/dist/commands/workflows/common.d.ts +39 -0
- package/dist/commands/workflows/common.d.ts.map +1 -0
- package/dist/commands/workflows/common.js +45 -0
- package/dist/commands/workflows/common.js.map +1 -0
- package/dist/commands/workflows/create.d.ts +3 -0
- package/dist/commands/workflows/create.d.ts.map +1 -0
- package/dist/commands/workflows/create.js +41 -0
- package/dist/commands/workflows/create.js.map +1 -0
- package/dist/commands/workflows/delete.d.ts +3 -0
- package/dist/commands/workflows/delete.d.ts.map +1 -0
- package/dist/commands/workflows/delete.js +20 -0
- package/dist/commands/workflows/delete.js.map +1 -0
- package/dist/commands/workflows/describe.d.ts +3 -0
- package/dist/commands/workflows/describe.d.ts.map +1 -0
- package/dist/commands/workflows/describe.js +40 -0
- package/dist/commands/workflows/describe.js.map +1 -0
- package/dist/commands/workflows/edges.d.ts +3 -0
- package/dist/commands/workflows/edges.d.ts.map +1 -0
- package/dist/commands/workflows/edges.js +50 -0
- package/dist/commands/workflows/edges.js.map +1 -0
- package/dist/commands/workflows/graph.d.ts +3 -0
- package/dist/commands/workflows/graph.d.ts.map +1 -0
- package/dist/commands/workflows/graph.js +47 -0
- package/dist/commands/workflows/graph.js.map +1 -0
- package/dist/commands/workflows/nodes.d.ts +3 -0
- package/dist/commands/workflows/nodes.d.ts.map +1 -0
- package/dist/commands/workflows/nodes.js +68 -0
- package/dist/commands/workflows/nodes.js.map +1 -0
- package/dist/commands/workflows/update.d.ts +3 -0
- package/dist/commands/workflows/update.d.ts.map +1 -0
- package/dist/commands/workflows/update.js +42 -0
- package/dist/commands/workflows/update.js.map +1 -0
- package/dist/commands/workflows/use.d.ts +3 -0
- package/dist/commands/workflows/use.d.ts.map +1 -0
- package/dist/commands/workflows/use.js +34 -0
- package/dist/commands/workflows/use.js.map +1 -0
- package/dist/commands/workflows/variables.d.ts +3 -0
- package/dist/commands/workflows/variables.d.ts.map +1 -0
- package/dist/commands/workflows/variables.js +105 -0
- package/dist/commands/workflows/variables.js.map +1 -0
- package/dist/index.js +50 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +9 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +54 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/httpClient.d.ts +2 -1
- package/dist/lib/httpClient.d.ts.map +1 -1
- package/dist/lib/httpClient.js +5 -2
- package/dist/lib/httpClient.js.map +1 -1
- package/dist/max/ui/banner.js +15 -15
- package/dist/max.js +7 -1
- package/dist/max.js.map +1 -1
- package/dist/scripts/postinstall.d.ts.map +1 -1
- package/dist/scripts/postinstall.js +8 -0
- package/dist/scripts/postinstall.js.map +1 -1
- package/dist/skills/agent-builder/SKILL.md +88 -0
- package/dist/skills/aggregations/SKILL.md +7 -7
- package/dist/skills/ai-models/SKILL.md +43 -0
- 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/flow-builder/SKILL.md +124 -0
- package/dist/skills/frontline-agents/SKILL.md +152 -3
- package/dist/skills/frontline-internals/SKILL.md +7 -7
- package/dist/skills/frontline-workflows/SKILL.md +170 -3
- package/dist/skills/incoming-webhooks/SKILL.md +36 -0
- 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/dist/skills/tools/SKILL.md +65 -0
- package/dist/skills/variables/SKILL.md +82 -0
- package/dist/skills/workflow-builder/SKILL.md +426 -0
- 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
|
@@ -34,7 +34,7 @@ frontline object field create <source-obj> --data '{
|
|
|
34
34
|
Before working with relations, inspect the object schema to find relation names:
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
frontline object schema
|
|
37
|
+
frontline object schema people
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
The output includes a `relations` array:
|
|
@@ -44,11 +44,11 @@ The output includes a `relations` array:
|
|
|
44
44
|
"relations": [
|
|
45
45
|
{
|
|
46
46
|
"name": "company",
|
|
47
|
-
"target": "
|
|
47
|
+
"target": "companies",
|
|
48
48
|
"mode": "multi",
|
|
49
49
|
"display_field": "Name"
|
|
50
50
|
},
|
|
51
|
-
{ "name": "deals", "target": "
|
|
51
|
+
{ "name": "deals", "target": "deals", "mode": "multi", "display_field": "Name" }
|
|
52
52
|
]
|
|
53
53
|
}
|
|
54
54
|
```
|
|
@@ -65,7 +65,7 @@ frontline object relation link <object> <source-id> <relation> <target-id>
|
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
67
|
# Link a person to a company
|
|
68
|
-
frontline object relation link
|
|
68
|
+
frontline object relation link people 6625abc123def456 Companies 6625def789abc012
|
|
69
69
|
```
|
|
70
70
|
|
|
71
71
|
- **Idempotent**: linking the same target twice won't create duplicates.
|
|
@@ -81,7 +81,7 @@ frontline object relation unlink <object> <source-id> <relation> <target-id>
|
|
|
81
81
|
|
|
82
82
|
```bash
|
|
83
83
|
# Remove person from company
|
|
84
|
-
frontline object relation unlink
|
|
84
|
+
frontline object relation unlink people 6625abc123def456 Companies 6625def789abc012
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
## Get Related Records (Forward Lookup)
|
|
@@ -94,7 +94,7 @@ frontline object relation get <object> <source-id> <relation>
|
|
|
94
94
|
|
|
95
95
|
```bash
|
|
96
96
|
# Get all companies linked to this person
|
|
97
|
-
frontline object relation get
|
|
97
|
+
frontline object relation get people 6625abc123def456 Companies
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
Returns an array of related records with their full data.
|
|
@@ -109,10 +109,10 @@ frontline object relation find-by <object> <relation> <target-id> [--page N] [--
|
|
|
109
109
|
|
|
110
110
|
```bash
|
|
111
111
|
# Find all people linked to a specific company
|
|
112
|
-
frontline object relation find-by
|
|
112
|
+
frontline object relation find-by people Companies 6625def789abc012
|
|
113
113
|
|
|
114
114
|
# With pagination
|
|
115
|
-
frontline object relation find-by
|
|
115
|
+
frontline object relation find-by people Companies 6625def789abc012 --page 1 --page-size 20
|
|
116
116
|
```
|
|
117
117
|
|
|
118
118
|
Returns a paginated result: `{ rows, total_count, total_pages, current_page }`.
|
|
@@ -121,23 +121,23 @@ Returns a paginated result: `{ rows, total_count, total_pages, current_page }`.
|
|
|
121
121
|
|
|
122
122
|
```bash
|
|
123
123
|
# 1. Show current company links
|
|
124
|
-
frontline object relation get
|
|
124
|
+
frontline object relation get people <person-id> Companies
|
|
125
125
|
|
|
126
126
|
# 2. Unlink from old company
|
|
127
|
-
frontline object relation unlink
|
|
127
|
+
frontline object relation unlink people <person-id> Companies <old-company-id>
|
|
128
128
|
|
|
129
129
|
# 3. Link to new company
|
|
130
|
-
frontline object relation link
|
|
130
|
+
frontline object relation link people <person-id> Companies <new-company-id>
|
|
131
131
|
|
|
132
132
|
# 4. Verify
|
|
133
|
-
frontline object relation get
|
|
133
|
+
frontline object relation get people <person-id> Companies
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
## Workflow: Find All Deals for a Company
|
|
137
137
|
|
|
138
138
|
```bash
|
|
139
139
|
# Find deals linked to a company (reverse: deals that point to this company)
|
|
140
|
-
frontline object relation find-by
|
|
140
|
+
frontline object relation find-by deals Company <company-id>
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
## Filtering by Relation
|
|
@@ -147,10 +147,10 @@ You can also filter records by relations using the query system
|
|
|
147
147
|
|
|
148
148
|
```bash
|
|
149
149
|
# Find people with no company
|
|
150
|
-
frontline object record list
|
|
150
|
+
frontline object record list people --query '{"path": "[Company]", "operator": "isNull"}'
|
|
151
151
|
|
|
152
152
|
# Find people linked to specific companies
|
|
153
|
-
frontline object record list
|
|
153
|
+
frontline object record list people --query '{
|
|
154
154
|
"path": "[Company]",
|
|
155
155
|
"operator": "containsAny",
|
|
156
156
|
"value": ["6625def789abc012", "6625def789abc999"]
|
|
@@ -20,11 +20,13 @@ This skill covers the creation of top-level entities: **Tables** and **Objects**
|
|
|
20
20
|
## Creating a Table
|
|
21
21
|
|
|
22
22
|
To create a new data table, use `frontline table create`. You MUST provide at least one column in the `--data` payload.
|
|
23
|
+
Tables use **emoji characters** for their icon.
|
|
23
24
|
|
|
24
25
|
```bash
|
|
25
26
|
frontline table create <name> --data '{
|
|
26
27
|
"displayName": "Display Name",
|
|
27
28
|
"emoji": "📁",
|
|
29
|
+
"icon_color": "blue",
|
|
28
30
|
"columns": [
|
|
29
31
|
{ "name": "Name", "type": "string", "metadata": { "format": "text" } }
|
|
30
32
|
]
|
|
@@ -36,6 +38,8 @@ frontline table create <name> --data '{
|
|
|
36
38
|
```bash
|
|
37
39
|
frontline table create shipments --data '{
|
|
38
40
|
"displayName": "Shipments",
|
|
41
|
+
"emoji": "🚚",
|
|
42
|
+
"icon_color": "orange",
|
|
39
43
|
"columns": [
|
|
40
44
|
{ "name": "Cargo", "type": "string", "metadata": { "format": "text" } },
|
|
41
45
|
{ "name": "Weight", "type": "number", "metadata": { "format": "decimal", "decimals": 2 } }
|
|
@@ -46,11 +50,13 @@ frontline table create shipments --data '{
|
|
|
46
50
|
## Creating a Custom Object
|
|
47
51
|
|
|
48
52
|
To create a new custom object, use `frontline object create`. This creates a more robust entity that supports multiple record types.
|
|
53
|
+
Objects use **icon keys** (not emoji characters) for their icon — see the Available Icons section below.
|
|
49
54
|
|
|
50
55
|
```bash
|
|
51
56
|
frontline object create <name> --data '{
|
|
52
57
|
"displayName": "Display Name",
|
|
53
|
-
"emoji": "
|
|
58
|
+
"emoji": "ticket",
|
|
59
|
+
"icon_color": "amber",
|
|
54
60
|
"columns": [
|
|
55
61
|
{ "name": "Subject", "type": "string", "metadata": { "format": "text" } }
|
|
56
62
|
]
|
|
@@ -62,6 +68,8 @@ frontline object create <name> --data '{
|
|
|
62
68
|
```bash
|
|
63
69
|
frontline object create tickets --data '{
|
|
64
70
|
"displayName": "Support Tickets",
|
|
71
|
+
"emoji": "life-buoy",
|
|
72
|
+
"icon_color": "amber",
|
|
65
73
|
"columns": [
|
|
66
74
|
{ "name": "Title", "type": "string", "metadata": { "format": "text" } },
|
|
67
75
|
{ "name": "Priority", "type": "select", "metadata": { "mode": "singleSelect" } }
|
|
@@ -74,6 +82,67 @@ frontline object create tickets --data '{
|
|
|
74
82
|
1. **Name (slug)**: Lowercase, alphanumeric, and underscores only. E.g., `sales_leads`, `shipments_v2`.
|
|
75
83
|
2. **Display Name**: Readable text with spaces. E.g., `Sales Leads`, `Shipments V2`.
|
|
76
84
|
|
|
85
|
+
## Available Icons (Objects only)
|
|
86
|
+
|
|
87
|
+
Objects use the `emoji` field with a validated icon key. Tables use regular emoji characters instead.
|
|
88
|
+
|
|
89
|
+
Use the `emoji` field to set an object's icon. The value must be one of the valid icon keys:
|
|
90
|
+
|
|
91
|
+
`home`, `user`, `users`, `contact-book`, `building`, `building-2`, `briefcase`, `agreement`,
|
|
92
|
+
`handshake`, `legal-doc`, `legal-hammer`, `shopping`, `cart`, `store`, `invoice`, `credit-card`,
|
|
93
|
+
`coins`, `wallet`, `money-bag`, `ticket`, `life-buoy`, `support`, `headset`, `task`, `clipboard`,
|
|
94
|
+
`file`, `folder`, `book`, `book-open`, `bookmark`, `mail`, `call`, `chat`, `calendar`, `clock`,
|
|
95
|
+
`timer`, `hourglass`, `location`, `maps`, `globe`, `earth`, `link`, `tag`, `flag`, `chart`,
|
|
96
|
+
`pie-chart`, `target`, `megaphone`, `rocket`, `idea`, `magnet`, `star`, `award`, `medal`,
|
|
97
|
+
`badge`, `certificate`, `crown`, `diamond`, `gift`, `percent`, `heart`, `hospital`, `stethoscope`,
|
|
98
|
+
`shield`, `lock`, `key`, `fingerprint`, `umbrella`, `settings`, `edit`, `wrench`, `code`, `puzzle`,
|
|
99
|
+
`database`, `layers`, `hierarchy`, `pipeline`, `package`, `truck`, `car`, `bicycle`, `bus`,
|
|
100
|
+
`property`, `school`, `graduate`, `plant`, `leaf`, `fire`, `sun`, `moon`, `image`, `video`,
|
|
101
|
+
`music`, `mic`, `camera`, `paint`, `compass`, `anchor`, `zap`, `flash`, `notification`, `user-add`,
|
|
102
|
+
`repeat`, `cloud`, `wifi`, `printer`, `airplane`, `restaurant`, `coffee`, `phone`, `analytics`,
|
|
103
|
+
`pulse`, `contracts`, `delivery`, `receipt`, `qr-code`, `barcode`, `calculator`, `download`, `upload`,
|
|
104
|
+
`filter`, `search`, `view`, `share`, `archive`, `dumbbell`, `brain`, `atom`, `chip`, `robot`,
|
|
105
|
+
`satellite`, `factory`, `warehouse`, `mountain`, `tree`, `flower`, `drone`, `gamepad`, `safe`,
|
|
106
|
+
`label`, `stamp`, `thumbs-up`, `smile`, `recycle`, `laptop`, `tv`, `headphones`, `speaker`,
|
|
107
|
+
`alarm`, `glasses`, `flashlight`, `feather`, `id-card`, `loyalty`, `coupon`, `presentation`,
|
|
108
|
+
`ruler`, `highlighter`, `passport`, `bitcoin`, `fuel`, `luggage`, `bone`, `whistle`, `sofa`
|
|
109
|
+
|
|
110
|
+
## Available Icon Colors
|
|
111
|
+
|
|
112
|
+
Use the `icon_color` field to set the icon color. You can use a **color name** (case-insensitive) or a **hex code**:
|
|
113
|
+
|
|
114
|
+
| Name | Hex |
|
|
115
|
+
| ------- | --------- |
|
|
116
|
+
| red | `#f87171` |
|
|
117
|
+
| orange | `#fb923c` |
|
|
118
|
+
| amber | `#fbbf24` |
|
|
119
|
+
| yellow | `#facc15` |
|
|
120
|
+
| lime | `#a3e635` |
|
|
121
|
+
| green | `#4ade80` |
|
|
122
|
+
| emerald | `#34d399` |
|
|
123
|
+
| teal | `#2dd4bf` |
|
|
124
|
+
| cyan | `#22d3ee` |
|
|
125
|
+
| sky | `#38bdf8` |
|
|
126
|
+
| blue | `#60a5fa` |
|
|
127
|
+
| indigo | `#818cf8` |
|
|
128
|
+
| violet | `#a78bfa` |
|
|
129
|
+
| purple | `#c084fc` |
|
|
130
|
+
| pink | `#f472b6` |
|
|
131
|
+
| rose | `#fb7185` |
|
|
132
|
+
|
|
133
|
+
## Record Type Icons
|
|
134
|
+
|
|
135
|
+
Record types on objects also support `emoji` and `icon_color`. If omitted, they inherit from the default record type or the parent object.
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
frontline object record-type create deals --data '{
|
|
139
|
+
"name": "renewal",
|
|
140
|
+
"displayName": "Renewal",
|
|
141
|
+
"emoji": "repeat",
|
|
142
|
+
"icon_color": "teal"
|
|
143
|
+
}'
|
|
144
|
+
```
|
|
145
|
+
|
|
77
146
|
## Adding More Fields
|
|
78
147
|
|
|
79
148
|
Once the entity is created, you can add more fields using the `field create` subcommand:
|
|
@@ -21,15 +21,22 @@ Frontline CLI. Read this before creating or modifying fields on any table or obj
|
|
|
21
21
|
| **Object** | Business entities, record types, pipeln | `object create` |
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
# Example: Create a new custom object
|
|
24
|
+
# Example: Create a new custom object (with icon and color)
|
|
25
25
|
frontline object create <name> --data '{
|
|
26
26
|
"displayName": "My Object",
|
|
27
|
+
"emoji": "briefcase",
|
|
28
|
+
"icon_color": "blue",
|
|
27
29
|
"columns": [
|
|
28
30
|
{ "name": "Title", "type": "string", "metadata": { "format": "text" } }
|
|
29
31
|
]
|
|
30
32
|
}'
|
|
31
33
|
```
|
|
32
34
|
|
|
35
|
+
> **Note:** Objects use icon keys (e.g. `briefcase`, `rocket`, `chart`) for the `emoji` field.
|
|
36
|
+
> Tables use regular emoji characters (e.g. `📁`, `🚚`) instead.
|
|
37
|
+
> Both support `icon_color` with a color name.
|
|
38
|
+
> See the `resource-creation` skill for the full icon and color reference.
|
|
39
|
+
|
|
33
40
|
## Field Type Decision Tree
|
|
34
41
|
|
|
35
42
|
```
|
|
@@ -174,17 +181,17 @@ frontline object option create <obj> <field-id> --data '{ "name": "Low", "color"
|
|
|
174
181
|
A single-select field with ordered stages:
|
|
175
182
|
|
|
176
183
|
```bash
|
|
177
|
-
frontline object field create
|
|
184
|
+
frontline object field create deals --data '{
|
|
178
185
|
"name": "Stage",
|
|
179
186
|
"type": "select",
|
|
180
187
|
"metadata": { "mode": "singleSelect" }
|
|
181
188
|
}'
|
|
182
189
|
# Then add stages in order:
|
|
183
|
-
frontline object option create
|
|
184
|
-
frontline object option create
|
|
185
|
-
frontline object option create
|
|
186
|
-
frontline object option create
|
|
187
|
-
frontline object option create
|
|
190
|
+
frontline object option create deals <field-id> --data '{"name": "Lead", "color": "Gray"}'
|
|
191
|
+
frontline object option create deals <field-id> --data '{"name": "Qualified", "color": "Sky"}'
|
|
192
|
+
frontline object option create deals <field-id> --data '{"name": "Proposal", "color": "Amber"}'
|
|
193
|
+
frontline object option create deals <field-id> --data '{"name": "Won", "color": "Emerald"}'
|
|
194
|
+
frontline object option create deals <field-id> --data '{"name": "Lost", "color": "Red"}'
|
|
188
195
|
```
|
|
189
196
|
|
|
190
197
|
### 2. Contact Info Set
|
|
@@ -236,28 +243,28 @@ Field names are **display names** shown in the UI. Use natural, readable names.
|
|
|
236
243
|
|
|
237
244
|
```bash
|
|
238
245
|
# 1. Check what fields already exist
|
|
239
|
-
frontline object field list
|
|
246
|
+
frontline object field list companies
|
|
240
247
|
|
|
241
248
|
# 2. Check schema for relations
|
|
242
|
-
frontline object schema
|
|
249
|
+
frontline object schema companies
|
|
243
250
|
|
|
244
251
|
# 3. Add new fields — only add what's missing
|
|
245
|
-
frontline object field create
|
|
252
|
+
frontline object field create companies --data '{
|
|
246
253
|
"name": "Annual Revenue",
|
|
247
254
|
"type": "number",
|
|
248
255
|
"metadata": { "format": "currency", "currency": "USD", "decimals": 0 }
|
|
249
256
|
}'
|
|
250
257
|
|
|
251
258
|
# 4. Add a categorization field
|
|
252
|
-
frontline object field create
|
|
259
|
+
frontline object field create companies --data '{
|
|
253
260
|
"name": "Industry",
|
|
254
261
|
"type": "select",
|
|
255
262
|
"metadata": { "mode": "singleSelect" }
|
|
256
263
|
}'
|
|
257
264
|
# Add options
|
|
258
|
-
frontline object option create
|
|
259
|
-
frontline object option create
|
|
265
|
+
frontline object option create companies <field-id> --data '{"name":"Technology","color":"Sky"}'
|
|
266
|
+
frontline object option create companies <field-id> --data '{"name":"Finance","color":"Amber"}'
|
|
260
267
|
|
|
261
268
|
# 5. Verify the final schema
|
|
262
|
-
frontline object field list
|
|
269
|
+
frontline object field list companies
|
|
263
270
|
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tools
|
|
3
|
+
description: Create, list, inspect, update, delete, and assign Frontline API call tools from the CLI. Use when the user asks about tools, custom tools, API tools, headers, arguments, query params, or assigning tools to agents.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Prerequisites
|
|
7
|
+
|
|
8
|
+
- Authenticate with `frontline auth login <api-key>`.
|
|
9
|
+
- Creating, updating, and deleting tools requires a USER API key.
|
|
10
|
+
- This public surface supports `API_CALL` tools only. WhatsApp template tools are not exposed yet.
|
|
11
|
+
|
|
12
|
+
## List And Inspect
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
frontline tools list
|
|
16
|
+
frontline tools list --status ACTIVE --filter-text contact
|
|
17
|
+
frontline tools list --table
|
|
18
|
+
frontline tools describe <toolId>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Tool list output includes `id`, `name`, `status`, `method`, `url`, and timestamps.
|
|
22
|
+
|
|
23
|
+
## Create An API Tool
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
frontline tools create \
|
|
27
|
+
--name "Fetch contact" \
|
|
28
|
+
--description "Fetches a CRM contact" \
|
|
29
|
+
--method GET \
|
|
30
|
+
--url "https://api.example.com/contacts/{{contactId}}" \
|
|
31
|
+
--arguments '[{"name":"contactId","description":"CRM contact ID","dataType":"STRING"}]' \
|
|
32
|
+
--headers '[{"key":"Authorization","value":"Bearer {{apiKey}}"}]' \
|
|
33
|
+
--query-params '[{"key":"include","value":"deals"}]'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Complex options are JSON arrays:
|
|
37
|
+
|
|
38
|
+
- `--arguments`: `[{ "name": "...", "description": "...", "dataType": "STRING" }]`
|
|
39
|
+
- `--headers`: `[{ "key": "...", "value": "..." }]`
|
|
40
|
+
- `--query-params`: `[{ "key": "...", "value": "..." }]`
|
|
41
|
+
|
|
42
|
+
Supported argument data types are `STRING`, `NUMBER`, `DECIMAL`, and `BOOLEAN`.
|
|
43
|
+
Supported methods are `GET`, `POST`, `PUT`, `PATCH`, and `DELETE`.
|
|
44
|
+
|
|
45
|
+
## Update And Delete
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
frontline tools update <toolId> --status PAUSED
|
|
49
|
+
frontline tools update <toolId> --url "https://api.example.com/v2/contacts/{{contactId}}"
|
|
50
|
+
frontline tools update <toolId> --headers '[{"key":"Authorization","value":"Bearer {{apiKey}}"}]'
|
|
51
|
+
frontline tools delete <toolId>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Update replaces `arguments`, `headers`, or `queryParams` when those options are
|
|
55
|
+
provided. Delete is a soft delete.
|
|
56
|
+
|
|
57
|
+
## Assign To An Agent
|
|
58
|
+
|
|
59
|
+
Use `customToolIds` in the agent setting payload:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
frontline agents agent-setting update --data '{"customToolIds":[123],"instructions":"Use the contact tool when a user asks about CRM data.","temperature":0.2,"aiModelId":1}'
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
The API validates that assigned tool IDs belong to the same account.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: variables
|
|
3
|
+
description: Manage Frontline agent variables, workflow variables, and flow intents from the CLI, and explain variable interpolation in nodes and actions.
|
|
4
|
+
allowed-tools: Bash(frontline:*)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Variables And Intents
|
|
8
|
+
|
|
9
|
+
## Agent Variables
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
frontline agents use <agentId>
|
|
13
|
+
frontline agents variables list --table
|
|
14
|
+
frontline agents variables all
|
|
15
|
+
frontline agents variables create --name customer_name --description "Customer name"
|
|
16
|
+
frontline agents variables describe 123
|
|
17
|
+
frontline agents variables update 123 --name customer_name --pattern "^[A-Za-z ]+$"
|
|
18
|
+
frontline agents variables delete 123
|
|
19
|
+
frontline agents variables check-name customer_name
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Use `--agent-id <id>` to avoid relying on saved context.
|
|
23
|
+
|
|
24
|
+
## Agent Intents
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
frontline agents intents list --table
|
|
28
|
+
frontline agents intents all
|
|
29
|
+
frontline agents intents create --name cancellation --phrases '["cancel order","stop subscription"]'
|
|
30
|
+
frontline agents intents update 10 --name cancellation --phrases '[{"id":1,"phrase":"cancel order"},{"phrase":"stop order"}]'
|
|
31
|
+
frontline agents intents delete 10
|
|
32
|
+
frontline agents intents generate-phrases --name cancellation --samples '["cancel order"]' --amount 5
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
For create, `--phrases` is a JSON array of strings. For update, `--phrases` is a
|
|
36
|
+
JSON array of objects; existing phrases include `id`, and new phrases omit it.
|
|
37
|
+
|
|
38
|
+
## Workflow Variables
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
frontline workflows use <workflowId>
|
|
42
|
+
frontline workflows variables list --table
|
|
43
|
+
frontline workflows variables all
|
|
44
|
+
frontline workflows variables create --name order_id --description "Order ID"
|
|
45
|
+
frontline workflows variables describe 123
|
|
46
|
+
frontline workflows variables update 123 --name order_id --pattern "^[0-9]+$"
|
|
47
|
+
frontline workflows variables delete 123
|
|
48
|
+
frontline workflows variables check-name order_id
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Use `--workflow-id <id>` to avoid relying on saved context.
|
|
52
|
+
|
|
53
|
+
## Interpolation Syntax
|
|
54
|
+
|
|
55
|
+
Variables are referenced inside text fields as `{VARIABLE_NAME}`. The name must
|
|
56
|
+
match `variable.name` exactly. Automation workflows also expose each node output
|
|
57
|
+
as a runtime variable named after the node ID. Because node IDs follow the
|
|
58
|
+
`node_<uuid>` format, a node with `nodeId`
|
|
59
|
+
`node_a1b2c3d4-e5f6-7890-abcd-ef1234567890` is referenced downstream as
|
|
60
|
+
`{node_a1b2c3d4-e5f6-7890-abcd-ef1234567890}`.
|
|
61
|
+
|
|
62
|
+
Agent flow fields with variable replacement:
|
|
63
|
+
|
|
64
|
+
- API: `url`, `headers[].value`, `parameters[].value`, `body`.
|
|
65
|
+
- Say AI: `message`, `prompt`.
|
|
66
|
+
- Response AI: `instructions`.
|
|
67
|
+
- Tools AI: `instructions`.
|
|
68
|
+
- Conditional Routing AI: `conditions[].expression`.
|
|
69
|
+
- Dynamic Tables: `rowId`, `search`, `rowData` values.
|
|
70
|
+
|
|
71
|
+
Automation workflow fields with variable replacement:
|
|
72
|
+
|
|
73
|
+
- API: `url`, `headers[].value`, `parameters[].value`, `body`.
|
|
74
|
+
- Send Message / Say AI: `message`, `prompt`.
|
|
75
|
+
- Response AI: `instructions`.
|
|
76
|
+
- Tools AI: `instructions`, `prompt`.
|
|
77
|
+
- AI Capture: `prompt`, `instructions`.
|
|
78
|
+
- Data Transformer: `prompt`.
|
|
79
|
+
- Conditional Routing AI: `conditions[].expression`.
|
|
80
|
+
- Dynamic Tables: `rowId`, `search`, `rowData` values.
|
|
81
|
+
- Transcription: `audioUrl`.
|
|
82
|
+
- WhatsApp Template: `templateVariables.header`, `templateVariables.body`, `templateVariables.buttons`.
|