@getfrontline/cli 1.0.1 → 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 +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/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/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 +6 -6
- 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 +76 -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 +29 -29
- package/dist/skills/pipeline-setup/SKILL.md +13 -13
- package/dist/skills/relations/SKILL.md +20 -15
- package/dist/skills/resource-creation/SKILL.md +70 -1
- package/dist/skills/schema-design/SKILL.md +21 -14
- package/package.json +7 -7
- 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
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: max-auth
|
|
3
|
-
description: Manage Max CLI authentication — store per-user API key (synced with Frontline CLI), sign out, and inspect the active profile. Use when the user needs Max terminal auth, whoami, or clearing credentials.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## Prerequisites
|
|
7
|
-
|
|
8
|
-
- The `max` CLI must be installed (`npm i -g @frontline/cli` — provides both `frontline` and `max` binaries).
|
|
9
|
-
- A **per-user API key** from the Frontline web app (Settings → API keys). The browser SSO (Firebase) flow is **paused** in the CLI; `MAX_CLI_AUTH_URL` is not required for the current flow.
|
|
10
|
-
|
|
11
|
-
## How credentials work
|
|
12
|
-
|
|
13
|
-
- `max auth login <api-key>` saves the same key to the **Max** store (`max-cli`) and the **Frontline** store (`frontline-cli`) under the **same profile name**, so `max` and `frontline` stay aligned.
|
|
14
|
-
- `max` commands call the **Public API** (`…/public/v1/max/...`) with `Authorization: Bearer <apiKey>` (USER key, same as SoR).
|
|
15
|
-
- Public API base URL: same as `frontline` — `FRONTLINE_BASE_URL`, profile `baseUrl`, or `--base-url` on each command (`max auth login --base-url …` persists it on the Frontline profile).
|
|
16
|
-
- API key resolution: `--api-key` → `MAX_API_KEY` / `FRONTLINE_API_KEY` → Max profile `apiKey` → Frontline profile `apiKey` (same name).
|
|
17
|
-
|
|
18
|
-
## Commands
|
|
19
|
-
|
|
20
|
-
### Sign in (save API key)
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
max auth login <api-key> [--profile <name>] [--base-url <url>]
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
| Option | Description |
|
|
27
|
-
| ------------------ | ---------------------------------------------------------------------------------------------------- |
|
|
28
|
-
| `<api-key>` | Per-user API key (required argument) |
|
|
29
|
-
| `--profile <name>` | Profile to save under (default: current; if set, also switches active profile for Max and Frontline) |
|
|
30
|
-
| `--base-url <url>` | Public API root for **both** `max` and `frontline` on that profile (must end with `/public/v1`) |
|
|
31
|
-
|
|
32
|
-
**Examples:**
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
max auth login flk_abc123
|
|
36
|
-
|
|
37
|
-
max auth login flk_abc123 --profile staging \
|
|
38
|
-
--base-url https://staging-api.example.com/public/v1
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### Sign out
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
max auth logout [--profile <name>] [--keep-frontline]
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
| Option | Description |
|
|
48
|
-
| ------------------ | -------------------------------------------------------------- |
|
|
49
|
-
| `--profile <name>` | Profile to clear (default: current) |
|
|
50
|
-
| `--keep-frontline` | Only clear the Max store; leave the matching Frontline profile |
|
|
51
|
-
|
|
52
|
-
By default, the matching Frontline profile is removed too.
|
|
53
|
-
|
|
54
|
-
### Check profile / credentials
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
max auth whoami [--json] [--profile <name>]
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Shows API key preview, `maxApiBaseUrl`, whether a matching Frontline profile exists, and Max config path (no JWT decode; browser SSO is paused).
|
|
61
|
-
|
|
62
|
-
### Config path
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
max config-path
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Troubleshooting
|
|
69
|
-
|
|
70
|
-
- **"No API key saved for profile …"** — run `max auth login <api-key>` or `frontline auth login <api-key>` with the same `--profile`.
|
|
71
|
-
- **"No Max API key found"** — same as above, or set `MAX_API_KEY` / `FRONTLINE_API_KEY`.
|
|
72
|
-
- **401 on Max** — key revoked or wrong; create a new key in the app and run `max auth login` again.
|
|
73
|
-
|
|
74
|
-
## Browser SSO note
|
|
75
|
-
|
|
76
|
-
The legacy flow (`max auth login` with no argument, hosted page + localhost callback) is commented out in the package. To restore it later, see git history and `packages/cli/src/max/browserLogin.ts`.
|
|
1
|
+
---
|
|
2
|
+
name: max-auth
|
|
3
|
+
description: Manage Max CLI authentication — store per-user API key (synced with Frontline CLI), sign out, and inspect the active profile. Use when the user needs Max terminal auth, whoami, or clearing credentials.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Prerequisites
|
|
7
|
+
|
|
8
|
+
- The `max` CLI must be installed (`npm i -g @frontline/cli` — provides both `frontline` and `max` binaries).
|
|
9
|
+
- A **per-user API key** from the Frontline web app (Settings → API keys). The browser SSO (Firebase) flow is **paused** in the CLI; `MAX_CLI_AUTH_URL` is not required for the current flow.
|
|
10
|
+
|
|
11
|
+
## How credentials work
|
|
12
|
+
|
|
13
|
+
- `max auth login <api-key>` saves the same key to the **Max** store (`max-cli`) and the **Frontline** store (`frontline-cli`) under the **same profile name**, so `max` and `frontline` stay aligned.
|
|
14
|
+
- `max` commands call the **Public API** (`…/public/v1/max/...`) with `Authorization: Bearer <apiKey>` (USER key, same as SoR).
|
|
15
|
+
- Public API base URL: same as `frontline` — `FRONTLINE_BASE_URL`, profile `baseUrl`, or `--base-url` on each command (`max auth login --base-url …` persists it on the Frontline profile).
|
|
16
|
+
- API key resolution: `--api-key` → `MAX_API_KEY` / `FRONTLINE_API_KEY` → Max profile `apiKey` → Frontline profile `apiKey` (same name).
|
|
17
|
+
|
|
18
|
+
## Commands
|
|
19
|
+
|
|
20
|
+
### Sign in (save API key)
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
max auth login <api-key> [--profile <name>] [--base-url <url>]
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
| Option | Description |
|
|
27
|
+
| ------------------ | ---------------------------------------------------------------------------------------------------- |
|
|
28
|
+
| `<api-key>` | Per-user API key (required argument) |
|
|
29
|
+
| `--profile <name>` | Profile to save under (default: current; if set, also switches active profile for Max and Frontline) |
|
|
30
|
+
| `--base-url <url>` | Public API root for **both** `max` and `frontline` on that profile (must end with `/public/v1`) |
|
|
31
|
+
|
|
32
|
+
**Examples:**
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
max auth login flk_abc123
|
|
36
|
+
|
|
37
|
+
max auth login flk_abc123 --profile staging \
|
|
38
|
+
--base-url https://staging-api.example.com/public/v1
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Sign out
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
max auth logout [--profile <name>] [--keep-frontline]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
| Option | Description |
|
|
48
|
+
| ------------------ | -------------------------------------------------------------- |
|
|
49
|
+
| `--profile <name>` | Profile to clear (default: current) |
|
|
50
|
+
| `--keep-frontline` | Only clear the Max store; leave the matching Frontline profile |
|
|
51
|
+
|
|
52
|
+
By default, the matching Frontline profile is removed too.
|
|
53
|
+
|
|
54
|
+
### Check profile / credentials
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
max auth whoami [--json] [--profile <name>]
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Shows API key preview, `maxApiBaseUrl`, whether a matching Frontline profile exists, and Max config path (no JWT decode; browser SSO is paused).
|
|
61
|
+
|
|
62
|
+
### Config path
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
max config-path
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Troubleshooting
|
|
69
|
+
|
|
70
|
+
- **"No API key saved for profile …"** — run `max auth login <api-key>` or `frontline auth login <api-key>` with the same `--profile`.
|
|
71
|
+
- **"No Max API key found"** — same as above, or set `MAX_API_KEY` / `FRONTLINE_API_KEY`.
|
|
72
|
+
- **401 on Max** — key revoked or wrong; create a new key in the app and run `max auth login` again.
|
|
73
|
+
|
|
74
|
+
## Browser SSO note
|
|
75
|
+
|
|
76
|
+
The legacy flow (`max auth login` with no argument, hosted page + localhost callback) is commented out in the package. To restore it later, see git history and `packages/cli/src/max/browserLogin.ts`.
|
|
@@ -1,111 +1,111 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: max-chat
|
|
3
|
-
description: Send messages to the Max AI assistant and manage conversations from the terminal. Use when the user wants to chat with Max, send a quick question, start a new conversation, or open an interactive chat session.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## Prerequisites
|
|
7
|
-
|
|
8
|
-
- The `max` CLI must be installed (`npm i -g @frontline/cli` — provides both `frontline` and `max` binaries).
|
|
9
|
-
- The user must have a per-user API key saved: `max auth login <api-key>` (or `frontline auth login` on the same profile).
|
|
10
|
-
|
|
11
|
-
## Commands
|
|
12
|
-
|
|
13
|
-
### Quick message (shorthand)
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
max "Your question here"
|
|
17
|
-
max --new "Start a fresh conversation"
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
This is the fastest way to send a single message to Max. It uses the last active conversation by default, or `--new` to start a fresh one.
|
|
21
|
-
|
|
22
|
-
Calls the **Public API**: `POST /public/v1/max/conversations/message` (Bearer = user API key). Responses use `{ "ok": boolean, "data": ... }`. Default stdout is **one-line JSON**; no spinner lines.
|
|
23
|
-
|
|
24
|
-
| Flag | Description |
|
|
25
|
-
| ---------------------- | ----------------------------------------------------------- |
|
|
26
|
-
| `--new` | Start a new conversation instead of continuing the last one |
|
|
27
|
-
| `--conversation <id>` | Send to a specific conversation ID |
|
|
28
|
-
| `--no-wait` | Do not poll for the assistant reply (fire and forget) |
|
|
29
|
-
| `--timeout <seconds>` | Max seconds to wait for assistant reply (default: 60) |
|
|
30
|
-
| `--json` | Print only the POST response JSON (no poll) |
|
|
31
|
-
| `--pretty` | Print assistant plain text from `data` instead of JSON |
|
|
32
|
-
| `--profile <name>` | Use a specific Max CLI profile |
|
|
33
|
-
| `--base-url <url>` | Override Public API root (…/public/v1) for this run |
|
|
34
|
-
| `--api-base-url <url>` | Deprecated alias for `--base-url` |
|
|
35
|
-
| `--api-key <key>` | Override per-user API key for this run |
|
|
36
|
-
| `--debug` | Show HTTP request/response diagnostics |
|
|
37
|
-
|
|
38
|
-
**Example:**
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
# Quick question using last conversation
|
|
42
|
-
max "What agents do I have?"
|
|
43
|
-
|
|
44
|
-
# Start a new conversation
|
|
45
|
-
max --new "Help me set up a new workflow"
|
|
46
|
-
|
|
47
|
-
# Send to a specific conversation
|
|
48
|
-
max --conversation 123 "Continue from here"
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### Send a message (explicit command)
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
max chat send <message...> [--new] [--conversation <id>] [--json] [--debug]
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Same as the shorthand above but under the `chat send` subcommand. Default stdout is **one-line JSON**; **`--pretty`** for assistant plain text from `data`.
|
|
58
|
-
|
|
59
|
-
### Interactive chat (REPL)
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
max chat repl [--profile <name>] [--debug] [--timeout <seconds>]
|
|
63
|
-
max chat
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Opens an interactive readline session for back-and-forth conversation with Max.
|
|
67
|
-
|
|
68
|
-
| REPL Command | Description |
|
|
69
|
-
| ------------ | ---------------------------------------- |
|
|
70
|
-
| `:help` | Show available REPL commands |
|
|
71
|
-
| `:new` | Start a new conversation on next message |
|
|
72
|
-
| `:conv <id>` | Switch to a specific conversation ID |
|
|
73
|
-
| `:exit` | Exit the REPL |
|
|
74
|
-
| `Ctrl+C` | Exit the REPL |
|
|
75
|
-
|
|
76
|
-
**Example:**
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
# Start interactive chat
|
|
80
|
-
max chat
|
|
81
|
-
|
|
82
|
-
# Start with a specific profile
|
|
83
|
-
max chat repl --profile work --debug
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Conversations (Public API)
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
max conversations list
|
|
90
|
-
max conversations get <id>
|
|
91
|
-
max conversations update <id> --data '{"key":"value"}'
|
|
92
|
-
max conversations abort <id>
|
|
93
|
-
# alias: max conv list
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
See `max conversations --help` for flags (`--profile`, `--base-url`, `--api-key`, `--debug`).
|
|
97
|
-
|
|
98
|
-
## Conversation management
|
|
99
|
-
|
|
100
|
-
- Max automatically remembers the last conversation ID in your profile. Subsequent messages continue that conversation.
|
|
101
|
-
- Use `--new` to explicitly start a fresh conversation.
|
|
102
|
-
- Use `--conversation <id>` to jump to a specific conversation.
|
|
103
|
-
- In the REPL, use `:new` and `:conv <id>` to manage conversations interactively.
|
|
104
|
-
|
|
105
|
-
## Troubleshooting
|
|
106
|
-
|
|
107
|
-
- **"No Max API key found"**: run `max auth login <api-key>` or `frontline auth login <api-key>` on the same profile.
|
|
108
|
-
- **"Message cannot be empty"**: provide a non-empty message string.
|
|
109
|
-
- **Timeout waiting for reply**: increase `--timeout` or use `--no-wait` and check the conversation later.
|
|
110
|
-
- Use `--debug` to see the full HTTP request URL, headers, and response status for diagnosing issues.
|
|
111
|
-
- Use `--json` for machine-readable output that can be piped to `jq` or other tools.
|
|
1
|
+
---
|
|
2
|
+
name: max-chat
|
|
3
|
+
description: Send messages to the Max AI assistant and manage conversations from the terminal. Use when the user wants to chat with Max, send a quick question, start a new conversation, or open an interactive chat session.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Prerequisites
|
|
7
|
+
|
|
8
|
+
- The `max` CLI must be installed (`npm i -g @frontline/cli` — provides both `frontline` and `max` binaries).
|
|
9
|
+
- The user must have a per-user API key saved: `max auth login <api-key>` (or `frontline auth login` on the same profile).
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
### Quick message (shorthand)
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
max "Your question here"
|
|
17
|
+
max --new "Start a fresh conversation"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
This is the fastest way to send a single message to Max. It uses the last active conversation by default, or `--new` to start a fresh one.
|
|
21
|
+
|
|
22
|
+
Calls the **Public API**: `POST /public/v1/max/conversations/message` (Bearer = user API key). Responses use `{ "ok": boolean, "data": ... }`. Default stdout is **one-line JSON**; no spinner lines.
|
|
23
|
+
|
|
24
|
+
| Flag | Description |
|
|
25
|
+
| ---------------------- | ----------------------------------------------------------- |
|
|
26
|
+
| `--new` | Start a new conversation instead of continuing the last one |
|
|
27
|
+
| `--conversation <id>` | Send to a specific conversation ID |
|
|
28
|
+
| `--no-wait` | Do not poll for the assistant reply (fire and forget) |
|
|
29
|
+
| `--timeout <seconds>` | Max seconds to wait for assistant reply (default: 60) |
|
|
30
|
+
| `--json` | Print only the POST response JSON (no poll) |
|
|
31
|
+
| `--pretty` | Print assistant plain text from `data` instead of JSON |
|
|
32
|
+
| `--profile <name>` | Use a specific Max CLI profile |
|
|
33
|
+
| `--base-url <url>` | Override Public API root (…/public/v1) for this run |
|
|
34
|
+
| `--api-base-url <url>` | Deprecated alias for `--base-url` |
|
|
35
|
+
| `--api-key <key>` | Override per-user API key for this run |
|
|
36
|
+
| `--debug` | Show HTTP request/response diagnostics |
|
|
37
|
+
|
|
38
|
+
**Example:**
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Quick question using last conversation
|
|
42
|
+
max "What agents do I have?"
|
|
43
|
+
|
|
44
|
+
# Start a new conversation
|
|
45
|
+
max --new "Help me set up a new workflow"
|
|
46
|
+
|
|
47
|
+
# Send to a specific conversation
|
|
48
|
+
max --conversation 123 "Continue from here"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Send a message (explicit command)
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
max chat send <message...> [--new] [--conversation <id>] [--json] [--debug]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Same as the shorthand above but under the `chat send` subcommand. Default stdout is **one-line JSON**; **`--pretty`** for assistant plain text from `data`.
|
|
58
|
+
|
|
59
|
+
### Interactive chat (REPL)
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
max chat repl [--profile <name>] [--debug] [--timeout <seconds>]
|
|
63
|
+
max chat
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Opens an interactive readline session for back-and-forth conversation with Max.
|
|
67
|
+
|
|
68
|
+
| REPL Command | Description |
|
|
69
|
+
| ------------ | ---------------------------------------- |
|
|
70
|
+
| `:help` | Show available REPL commands |
|
|
71
|
+
| `:new` | Start a new conversation on next message |
|
|
72
|
+
| `:conv <id>` | Switch to a specific conversation ID |
|
|
73
|
+
| `:exit` | Exit the REPL |
|
|
74
|
+
| `Ctrl+C` | Exit the REPL |
|
|
75
|
+
|
|
76
|
+
**Example:**
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Start interactive chat
|
|
80
|
+
max chat
|
|
81
|
+
|
|
82
|
+
# Start with a specific profile
|
|
83
|
+
max chat repl --profile work --debug
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Conversations (Public API)
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
max conversations list
|
|
90
|
+
max conversations get <id>
|
|
91
|
+
max conversations update <id> --data '{"key":"value"}'
|
|
92
|
+
max conversations abort <id>
|
|
93
|
+
# alias: max conv list
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
See `max conversations --help` for flags (`--profile`, `--base-url`, `--api-key`, `--debug`).
|
|
97
|
+
|
|
98
|
+
## Conversation management
|
|
99
|
+
|
|
100
|
+
- Max automatically remembers the last conversation ID in your profile. Subsequent messages continue that conversation.
|
|
101
|
+
- Use `--new` to explicitly start a fresh conversation.
|
|
102
|
+
- Use `--conversation <id>` to jump to a specific conversation.
|
|
103
|
+
- In the REPL, use `:new` and `:conv <id>` to manage conversations interactively.
|
|
104
|
+
|
|
105
|
+
## Troubleshooting
|
|
106
|
+
|
|
107
|
+
- **"No Max API key found"**: run `max auth login <api-key>` or `frontline auth login <api-key>` on the same profile.
|
|
108
|
+
- **"Message cannot be empty"**: provide a non-empty message string.
|
|
109
|
+
- **Timeout waiting for reply**: increase `--timeout` or use `--no-wait` and check the conversation later.
|
|
110
|
+
- Use `--debug` to see the full HTTP request URL, headers, and response status for diagnosing issues.
|
|
111
|
+
- Use `--json` for machine-readable output that can be piped to `jq` or other tools.
|
|
@@ -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 sor__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": {}
|
|
@@ -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:
|
|
@@ -42,8 +42,13 @@ The output includes a `relations` array:
|
|
|
42
42
|
```json
|
|
43
43
|
{
|
|
44
44
|
"relations": [
|
|
45
|
-
{
|
|
46
|
-
|
|
45
|
+
{
|
|
46
|
+
"name": "company",
|
|
47
|
+
"target": "companies",
|
|
48
|
+
"mode": "multi",
|
|
49
|
+
"display_field": "Name"
|
|
50
|
+
},
|
|
51
|
+
{ "name": "deals", "target": "deals", "mode": "multi", "display_field": "Name" }
|
|
47
52
|
]
|
|
48
53
|
}
|
|
49
54
|
```
|
|
@@ -60,7 +65,7 @@ frontline object relation link <object> <source-id> <relation> <target-id>
|
|
|
60
65
|
|
|
61
66
|
```bash
|
|
62
67
|
# Link a person to a company
|
|
63
|
-
frontline object relation link
|
|
68
|
+
frontline object relation link people 6625abc123def456 Companies 6625def789abc012
|
|
64
69
|
```
|
|
65
70
|
|
|
66
71
|
- **Idempotent**: linking the same target twice won't create duplicates.
|
|
@@ -76,7 +81,7 @@ frontline object relation unlink <object> <source-id> <relation> <target-id>
|
|
|
76
81
|
|
|
77
82
|
```bash
|
|
78
83
|
# Remove person from company
|
|
79
|
-
frontline object relation unlink
|
|
84
|
+
frontline object relation unlink people 6625abc123def456 Companies 6625def789abc012
|
|
80
85
|
```
|
|
81
86
|
|
|
82
87
|
## Get Related Records (Forward Lookup)
|
|
@@ -89,7 +94,7 @@ frontline object relation get <object> <source-id> <relation>
|
|
|
89
94
|
|
|
90
95
|
```bash
|
|
91
96
|
# Get all companies linked to this person
|
|
92
|
-
frontline object relation get
|
|
97
|
+
frontline object relation get people 6625abc123def456 Companies
|
|
93
98
|
```
|
|
94
99
|
|
|
95
100
|
Returns an array of related records with their full data.
|
|
@@ -104,10 +109,10 @@ frontline object relation find-by <object> <relation> <target-id> [--page N] [--
|
|
|
104
109
|
|
|
105
110
|
```bash
|
|
106
111
|
# Find all people linked to a specific company
|
|
107
|
-
frontline object relation find-by
|
|
112
|
+
frontline object relation find-by people Companies 6625def789abc012
|
|
108
113
|
|
|
109
114
|
# With pagination
|
|
110
|
-
frontline object relation find-by
|
|
115
|
+
frontline object relation find-by people Companies 6625def789abc012 --page 1 --page-size 20
|
|
111
116
|
```
|
|
112
117
|
|
|
113
118
|
Returns a paginated result: `{ rows, total_count, total_pages, current_page }`.
|
|
@@ -116,23 +121,23 @@ Returns a paginated result: `{ rows, total_count, total_pages, current_page }`.
|
|
|
116
121
|
|
|
117
122
|
```bash
|
|
118
123
|
# 1. Show current company links
|
|
119
|
-
frontline object relation get
|
|
124
|
+
frontline object relation get people <person-id> Companies
|
|
120
125
|
|
|
121
126
|
# 2. Unlink from old company
|
|
122
|
-
frontline object relation unlink
|
|
127
|
+
frontline object relation unlink people <person-id> Companies <old-company-id>
|
|
123
128
|
|
|
124
129
|
# 3. Link to new company
|
|
125
|
-
frontline object relation link
|
|
130
|
+
frontline object relation link people <person-id> Companies <new-company-id>
|
|
126
131
|
|
|
127
132
|
# 4. Verify
|
|
128
|
-
frontline object relation get
|
|
133
|
+
frontline object relation get people <person-id> Companies
|
|
129
134
|
```
|
|
130
135
|
|
|
131
136
|
## Workflow: Find All Deals for a Company
|
|
132
137
|
|
|
133
138
|
```bash
|
|
134
139
|
# Find deals linked to a company (reverse: deals that point to this company)
|
|
135
|
-
frontline object relation find-by
|
|
140
|
+
frontline object relation find-by deals Company <company-id>
|
|
136
141
|
```
|
|
137
142
|
|
|
138
143
|
## Filtering by Relation
|
|
@@ -142,10 +147,10 @@ You can also filter records by relations using the query system
|
|
|
142
147
|
|
|
143
148
|
```bash
|
|
144
149
|
# Find people with no company
|
|
145
|
-
frontline object record list
|
|
150
|
+
frontline object record list people --query '{"path": "[Company]", "operator": "isNull"}'
|
|
146
151
|
|
|
147
152
|
# Find people linked to specific companies
|
|
148
|
-
frontline object record list
|
|
153
|
+
frontline object record list people --query '{
|
|
149
154
|
"path": "[Company]",
|
|
150
155
|
"operator": "containsAny",
|
|
151
156
|
"value": ["6625def789abc012", "6625def789abc999"]
|