@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.
Files changed (88) hide show
  1. package/README.md +246 -246
  2. package/dist/commands/auth/login.d.ts.map +1 -1
  3. package/dist/commands/auth/login.js +29 -4
  4. package/dist/commands/auth/login.js.map +1 -1
  5. package/dist/commands/auth/profiles.d.ts.map +1 -1
  6. package/dist/commands/auth/profiles.js +7 -11
  7. package/dist/commands/auth/profiles.js.map +1 -1
  8. package/dist/commands/object/activity.d.ts +3 -0
  9. package/dist/commands/object/activity.d.ts.map +1 -0
  10. package/dist/commands/object/{note.js → activity.js} +24 -19
  11. package/dist/commands/object/activity.js.map +1 -0
  12. package/dist/commands/object/export.js +3 -3
  13. package/dist/commands/object/field.js +5 -5
  14. package/dist/commands/object/index.js +10 -10
  15. package/dist/commands/object/index.js.map +1 -1
  16. package/dist/commands/object/option.js +4 -4
  17. package/dist/commands/object/record-type.js +4 -4
  18. package/dist/commands/object/record.js +8 -8
  19. package/dist/commands/object/relation.js +4 -4
  20. package/dist/commands/object/view.js +9 -9
  21. package/dist/commands/table/index.d.ts.map +1 -1
  22. package/dist/commands/table/index.js +0 -4
  23. package/dist/commands/table/index.js.map +1 -1
  24. package/dist/lib/cliVersion.d.ts +8 -0
  25. package/dist/lib/cliVersion.d.ts.map +1 -0
  26. package/dist/lib/cliVersion.js +26 -0
  27. package/dist/lib/cliVersion.js.map +1 -0
  28. package/dist/lib/config.js +1 -1
  29. package/dist/lib/config.js.map +1 -1
  30. package/dist/lib/errors.d.ts +3 -0
  31. package/dist/lib/errors.d.ts.map +1 -1
  32. package/dist/lib/errors.js +10 -1
  33. package/dist/lib/errors.js.map +1 -1
  34. package/dist/lib/helpEpilog.d.ts.map +1 -1
  35. package/dist/lib/helpEpilog.js +35 -35
  36. package/dist/lib/helpEpilog.js.map +1 -1
  37. package/dist/lib/httpClient.d.ts.map +1 -1
  38. package/dist/lib/httpClient.js +35 -16
  39. package/dist/lib/httpClient.js.map +1 -1
  40. package/dist/lib/output.d.ts +10 -0
  41. package/dist/lib/output.d.ts.map +1 -1
  42. package/dist/lib/output.js +28 -12
  43. package/dist/lib/output.js.map +1 -1
  44. package/dist/max/commands/auth/login.d.ts.map +1 -1
  45. package/dist/max/commands/auth/login.js +22 -5
  46. package/dist/max/commands/auth/login.js.map +1 -1
  47. package/dist/max/commands/chat/repl.d.ts +9 -0
  48. package/dist/max/commands/chat/repl.d.ts.map +1 -1
  49. package/dist/max/commands/chat/repl.js +15 -11
  50. package/dist/max/commands/chat/repl.js.map +1 -1
  51. package/dist/max/commands/chat/send.d.ts.map +1 -1
  52. package/dist/max/commands/chat/send.js +17 -0
  53. package/dist/max/commands/chat/send.js.map +1 -1
  54. package/dist/max/lib/httpClient.d.ts.map +1 -1
  55. package/dist/max/lib/httpClient.js +11 -4
  56. package/dist/max/lib/httpClient.js.map +1 -1
  57. package/dist/max/ui/banner.d.ts.map +1 -1
  58. package/dist/max/ui/banner.js +6 -6
  59. package/dist/max/ui/banner.js.map +1 -1
  60. package/dist/max.js +15 -3
  61. package/dist/max.js.map +1 -1
  62. package/dist/skills/aggregations/SKILL.md +7 -7
  63. package/dist/skills/auth-and-profiles/SKILL.md +1 -1
  64. package/dist/skills/crm-setup/SKILL.md +76 -48
  65. package/dist/skills/crud-operations/SKILL.md +2 -2
  66. package/dist/skills/export-and-delete/SKILL.md +5 -5
  67. package/dist/skills/files/SKILL.md +4 -4
  68. package/dist/skills/filter-and-query/SKILL.md +7 -7
  69. package/dist/skills/frontline-internals/SKILL.md +209 -0
  70. package/dist/skills/max-auth/SKILL.md +76 -76
  71. package/dist/skills/max-chat/SKILL.md +111 -111
  72. package/dist/skills/notes-and-tasks/SKILL.md +29 -29
  73. package/dist/skills/pipeline-setup/SKILL.md +13 -13
  74. package/dist/skills/relations/SKILL.md +20 -15
  75. package/dist/skills/resource-creation/SKILL.md +70 -1
  76. package/dist/skills/schema-design/SKILL.md +21 -14
  77. package/package.json +7 -7
  78. package/dist/commands/object/note.d.ts +0 -3
  79. package/dist/commands/object/note.d.ts.map +0 -1
  80. package/dist/commands/object/note.js.map +0 -1
  81. package/dist/commands/table/note.d.ts +0 -3
  82. package/dist/commands/table/note.d.ts.map +0 -1
  83. package/dist/commands/table/note.js +0 -62
  84. package/dist/commands/table/note.js.map +0 -1
  85. package/dist/commands/table/task.d.ts +0 -3
  86. package/dist/commands/table/task.d.ts.map +0 -1
  87. package/dist/commands/table/task.js +0 -88
  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: notes-and-tasks
2
+ name: activities-and-tasks
3
3
  description: >
4
- How to create, read, update, and delete notes and tasks attached to rows
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
- # Notes & Tasks
9
+ # Activities & Tasks
10
10
 
11
- Notes and tasks are sub-resources attached to individual rows. They let you
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
- ## Notes
14
+ ## Activities
15
15
 
16
- Notes are simple text entries attached to a row.
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 Notes
19
+ ### List Activities
19
20
 
20
21
  ```bash
21
- frontline object note list <object> <row-id>
22
- frontline table note list <table> <row-id>
22
+ frontline object activity list <object> <row-id>
23
23
  ```
24
24
 
25
- ### Create a Note
25
+ ### Create an Activity
26
26
 
27
27
  ```bash
28
- frontline object note create <object> <row-id> --content "Follow up next week"
29
- frontline table note create <table> <row-id> --content "Check inventory levels"
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 a Note by ID
36
+ ### Get an Activity by ID
33
37
 
34
38
  ```bash
35
- frontline object note get <object> <note-id>
36
- frontline table note get <table> <note-id>
39
+ frontline object activity get <object> <activity-id>
37
40
  ```
38
41
 
39
- ### Update a Note
42
+ ### Update an Activity
40
43
 
41
44
  ```bash
42
- frontline object note update <object> <note-id> --content "Updated: follow up tomorrow"
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 a Note
48
+ ### Delete an Activity
47
49
 
48
50
  ```bash
49
- frontline object note delete <object> <note-id>
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 sor__deals --search "Acme"
114
+ frontline object record list deals --search "Acme"
115
115
  # → row ID = 6625abc123def456
116
116
 
117
- # 2. Add a note
118
- frontline object note create sor__deals 6625abc123def456 \
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 sor__deals 6625abc123def456 \
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 sor__deals 7
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 sor__tickets as a predefined field.
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 sor__tickets
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 sor__tickets 64 --data '{"name": "Escalated", "color": "Bright Red"}'
186
- frontline object option create sor__tickets 64 --data '{"name": "Waiting on Vendor", "color": "Amber"}'
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 sor__tickets --data '{
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 sor__tickets 11 --data '{"name": "Critical", "color": "Bright Red"}'
197
- frontline object option create sor__tickets 11 --data '{"name": "High", "color": "Magenta"}'
198
- frontline object option create sor__tickets 11 --data '{"name": "Medium", "color": "Amber"}'
199
- frontline object option create sor__tickets 11 --data '{"name": "Low", "color": "Gray"}'
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 sor__tickets
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 sor__tickets --data '{
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 sor__tickets --data '{
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 sor__tickets --data '{
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 sor__people
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
- { "name": "company", "target": "sor__companies", "mode": "multi", "display_field": "Name" },
46
- { "name": "deals", "target": "sor__deals", "mode": "multi", "display_field": "Name" }
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 sor__people 6625abc123def456 Companies 6625def789abc012
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 sor__people 6625abc123def456 Companies 6625def789abc012
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 sor__people 6625abc123def456 Companies
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 sor__people Companies 6625def789abc012
112
+ frontline object relation find-by people Companies 6625def789abc012
108
113
 
109
114
  # With pagination
110
- frontline object relation find-by sor__people Companies 6625def789abc012 --page 1 --page-size 20
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 sor__people <person-id> Companies
124
+ frontline object relation get people <person-id> Companies
120
125
 
121
126
  # 2. Unlink from old company
122
- frontline object relation unlink sor__people <person-id> Companies <old-company-id>
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 sor__people <person-id> Companies <new-company-id>
130
+ frontline object relation link people <person-id> Companies <new-company-id>
126
131
 
127
132
  # 4. Verify
128
- frontline object relation get sor__people <person-id> Companies
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 sor__deals Company <company-id>
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 sor__people --query '{"path": "[Company]", "operator": "isNull"}'
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 sor__people --query '{
153
+ frontline object record list people --query '{
149
154
  "path": "[Company]",
150
155
  "operator": "containsAny",
151
156
  "value": ["6625def789abc012", "6625def789abc999"]