@series-a/cli 0.2.1 → 0.6.2
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/CHANGELOG.md +4 -0
- package/LICENSE +3 -2
- package/README.md +54 -4
- package/package.json +4 -4
- package/src/api.mjs +2 -1
- package/src/commands/insights.mjs +1034 -0
- package/src/commands/knowledge-sync.mjs +519 -0
- package/src/commands/resources.mjs +234 -8
- package/src/index.mjs +29 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,10 @@ All notable changes to this package are documented here. This project follows
|
|
|
4
4
|
[Semantic Versioning](https://semver.org/) and uses
|
|
5
5
|
[Changesets](https://github.com/changesets/changesets) to manage releases.
|
|
6
6
|
|
|
7
|
+
## 0.6.1 — Campaign editing
|
|
8
|
+
|
|
9
|
+
- `campaigns` — added `update`/`edit` (name, description, goal, sequence, sender accounts, daily send limit, launch stage, status). Mirrors the new `update_campaign` MCP tool.
|
|
10
|
+
|
|
7
11
|
## 0.2.0 — Write coverage expansion
|
|
8
12
|
|
|
9
13
|
- `inbox` — added `send`, `reply` (dry-run by default, `--confirm` to dispatch, 7,900 char guard), `mark-read` (bulk), `snooze` (`--for`, `--until`, `--clear`).
|
package/LICENSE
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
Copyright (c)
|
|
1
|
+
Copyright (c) AdvisorPro / Series A. All rights reserved.
|
|
2
2
|
|
|
3
3
|
This package is distributed under a proprietary license. Use is permitted only
|
|
4
|
-
by
|
|
4
|
+
by AdvisorPro customers and partners against their own workspace API keys. Do not
|
|
5
5
|
redistribute, sublicense, or use against workspaces you do not own without
|
|
6
6
|
written permission.
|
|
7
|
+
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @series-a/cli
|
|
2
2
|
|
|
3
|
-
A command-line interface to the
|
|
3
|
+
A command-line interface to the AdvisorPro platform — drive leads, campaigns, sequences and agents from your terminal. Built on top of the [`/agent-api`](https://github.com/series-a/advisoros/blob/main/docs/agent-api.md) M2M router, so anything the CLI does is auditable and workspace-scoped.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -24,7 +24,7 @@ Requires **Node.js ≥ 20**.
|
|
|
24
24
|
|
|
25
25
|
## 1. Get an API key
|
|
26
26
|
|
|
27
|
-
1. Sign in to
|
|
27
|
+
1. Sign in to AdvisorPro.
|
|
28
28
|
2. Open **Settings → API Keys**.
|
|
29
29
|
3. Click **New key** → choose **Workspace** scope (recommended).
|
|
30
30
|
4. Copy the key — you won't see it again.
|
|
@@ -73,11 +73,28 @@ advisoros leads list [--status new] [--persona founder] [--search acme] [--limit
|
|
|
73
73
|
advisoros leads get <id>
|
|
74
74
|
advisoros leads set-status <id> <new|engaged|won|lost>
|
|
75
75
|
advisoros leads import --file leads.csv [--persona founder]
|
|
76
|
+
advisoros leads import-from <source> [--query ...] [--post <url>] [--file <path>] [--audience <name>] [--campaign <id>] [--limit 50] [--no-enrich]
|
|
77
|
+
advisoros leads import-status <jobId>
|
|
78
|
+
advisoros leads update <id> [--name ...] [--title ...] [--company ...] [--email ...] [--linkedin ...] [--persona ...] [--score ...] [--status ...] [--notes ...]
|
|
79
|
+
advisoros leads delete <id>
|
|
76
80
|
advisoros leads verify <id>
|
|
77
81
|
```
|
|
78
82
|
|
|
79
83
|
`leads import` accepts CSV (header row), JSON array, or JSONL. Upserts on `(workspace_id, linkedin_url)`. Bulk requests are auto-chunked at 200/call (server cap: 500/call).
|
|
80
84
|
|
|
85
|
+
`leads import-from` runs any of the six import sources in **Get Leads → Import Leads**:
|
|
86
|
+
|
|
87
|
+
| source | required params | what it does |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| `linkedin_search` | `--query` | keyword / title / company people search via Unipile |
|
|
90
|
+
| `company_search` | `--query` | LinkedIn company search |
|
|
91
|
+
| `post_reactors` | `--post <url>` | everyone who reacted to a LinkedIn post |
|
|
92
|
+
| `paste_profiles` | `--file <path>` | name + LinkedIn URL lines; rest is enriched |
|
|
93
|
+
| `csv` | `--file <path>` | same CSV parser the UI uses |
|
|
94
|
+
| `heyreach` | `--file <path>` `--campaign <id>` | HeyReach campaign CSV, statuses preserved |
|
|
95
|
+
|
|
96
|
+
All sources accept `--audience` to attach leads to a segment (created if missing). LinkedIn-backed sources run at bulk read priority so live campaigns are not starved. Long-running imports return a `job_id`; poll with `advisoros leads import-status <jobId>`.
|
|
97
|
+
|
|
81
98
|
### Campaigns
|
|
82
99
|
|
|
83
100
|
```bash
|
|
@@ -96,7 +113,7 @@ advisoros campaigns resume <id>
|
|
|
96
113
|
|
|
97
114
|
`launch` flips status to `active` — the `enforce_campaign_char_limits` trigger validates every step's copy against LinkedIn limits before allowing the transition.
|
|
98
115
|
|
|
99
|
-
### Sequences / Inbox / Content / Agents
|
|
116
|
+
### Sequences / Inbox / Content / Agents / Meetings / Newsletter / Integrations
|
|
100
117
|
|
|
101
118
|
```bash
|
|
102
119
|
advisoros sequences list
|
|
@@ -110,11 +127,43 @@ advisoros content publish <id>
|
|
|
110
127
|
|
|
111
128
|
advisoros agents list
|
|
112
129
|
advisoros agents run <name> --input '{"foo":"bar"}'
|
|
130
|
+
advisoros agents trigger <name> --input '{"foo":"bar"}'
|
|
131
|
+
advisoros agents history [--agent <name>] [--days 30] [--limit 50]
|
|
113
132
|
advisoros agents job <jobId>
|
|
133
|
+
|
|
134
|
+
advisoros meetings list [--limit 50]
|
|
135
|
+
advisoros meetings transcripts [--provider fireflies|roam] [--since 2026-01-01] [--limit 50]
|
|
136
|
+
advisoros meetings transcript <transcriptId>
|
|
137
|
+
|
|
138
|
+
advisoros newsletter list
|
|
139
|
+
advisoros newsletter create --subject "Weekly roundup" --body "<html>..." [--preview-text "..."]
|
|
140
|
+
advisoros newsletter edit <id> [--subject ...] [--body ...] [--preview-text ...] [--status draft|scheduled]
|
|
141
|
+
advisoros newsletter delete <id>
|
|
142
|
+
|
|
143
|
+
advisoros integrations status
|
|
144
|
+
advisoros integrations check <platform>
|
|
114
145
|
```
|
|
115
146
|
|
|
116
147
|
> **Heads-up:** `inbox send`/`reply` are intentionally **not** in v1. Outbound goes through `campaigns launch` (sender resolution + char limits + per-sender daily budget). For one-off DMs, use the web inbox.
|
|
117
148
|
|
|
149
|
+
`meetings transcript` only returns full text once the transcript has been anonymised; otherwise metadata is returned with the body redacted.
|
|
150
|
+
|
|
151
|
+
`integrations status` is read-only and never returns credentials. `integrations check <platform>` runs a live health probe for the requested platform (e.g. `linkedin_tool`).
|
|
152
|
+
|
|
153
|
+
### Obsidian vault mirror (`kb`) — one-way
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
advisoros kb link ./client-vault --workspace dmw9wj
|
|
157
|
+
advisoros kb status ./client-vault # dry-run preview
|
|
158
|
+
advisoros kb pull ./client-vault # mirror notes + graph entities
|
|
159
|
+
advisoros kb pull ./client-vault --preserve-local
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
One-way push, AdvisorPro → Obsidian. Markdown notes with frontmatter, `[[wikilinks]]` and an
|
|
163
|
+
`## Entities` block, plus `Entities/<Type>/*.md` for graph nodes. Local edits are overwritten unless
|
|
164
|
+
`--preserve-local` is used (remote copy lands as `<slug>.remote.md`). Nothing is pushed back.
|
|
165
|
+
|
|
166
|
+
|
|
118
167
|
## Examples
|
|
119
168
|
|
|
120
169
|
**Spin up a campaign from a fresh CSV:**
|
|
@@ -169,7 +218,7 @@ const { campaigns } = await call("campaigns", "list", { status: "active" }, {
|
|
|
169
218
|
```bash
|
|
170
219
|
cd tools/cli
|
|
171
220
|
npx changeset # describe the change
|
|
172
|
-
npm run version
|
|
221
|
+
npm run version-packages # bump package.json + CHANGELOG.md
|
|
173
222
|
git commit -am "chore(cli): release v$(node -p "require('./package.json').version")"
|
|
174
223
|
git tag "cli-v$(node -p "require('./package.json').version")"
|
|
175
224
|
git push --follow-tags
|
|
@@ -188,3 +237,4 @@ git push --follow-tags
|
|
|
188
237
|
## Full API reference
|
|
189
238
|
|
|
190
239
|
See [`docs/agent-api.md`](../../docs/agent-api.md) for the underlying `/agent-api` envelope.
|
|
240
|
+
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@series-a/cli",
|
|
3
|
-
"version": "0.2
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.6.2",
|
|
4
|
+
"description": "AdvisorPro command-line interface — drive leads, campaigns, sequences and agents from your terminal.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"advisoros": "bin/advisoros.mjs"
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"smoke": "node bin/advisoros.mjs --help >/dev/null && node bin/advisoros.mjs --version >/dev/null && node -e \"import('node:fs').then(({readFileSync})=>{const s=readFileSync('bin/advisoros.mjs','utf8');if(!s.startsWith('#!/usr/bin/env node')){console.error('Missing shebang in bin/advisoros.mjs');process.exit(1)}})\"",
|
|
22
22
|
"prepublishOnly": "npm run smoke",
|
|
23
23
|
"changeset": "changeset",
|
|
24
|
-
"version": "changeset version",
|
|
24
|
+
"version-packages": "changeset version",
|
|
25
25
|
"release": "npm run smoke && changeset publish --access public"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
@@ -55,6 +55,6 @@
|
|
|
55
55
|
"sequences",
|
|
56
56
|
"agent-api"
|
|
57
57
|
],
|
|
58
|
-
"author": "
|
|
58
|
+
"author": "AdvisorPro",
|
|
59
59
|
"license": "UNLICENSED"
|
|
60
60
|
}
|
package/src/api.mjs
CHANGED
|
@@ -10,7 +10,7 @@ export class AdvisorOSApiError extends Error {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* Invoke the
|
|
13
|
+
* Invoke the AdvisorPro /agent-api router.
|
|
14
14
|
* Resolves credentials from --profile / env / saved config in that order.
|
|
15
15
|
*/
|
|
16
16
|
export async function call(resource, action, params = {}, opts = {}) {
|
|
@@ -74,3 +74,4 @@ export async function call(resource, action, params = {}, opts = {}) {
|
|
|
74
74
|
}
|
|
75
75
|
return json;
|
|
76
76
|
}
|
|
77
|
+
|