@scribed/cli 0.1.23 → 0.1.25

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 CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  Command-line client + MCP server for Scribed — CRM records, phone + texting, inbox, calendar + booking, transcriptions, HR, the Vault + workspace pages, and automations from the terminal or from an MCP host such as Cursor or Claude. The entire domain surface is **derived from the scribed-agent tool catalog**: nothing is hand-duplicated, so a new eligible catalog tool automatically becomes a CLI command (`scribed call <tool>`) and an MCP tool.
4
4
 
5
+ Verified catalog (2026-10-18): **1,102 external tools across 48 categories**;
6
+ 581 tools in 28 categories are included in the default core set. Route
7
+ coverage does not imply full UI parity: session-only actions and the remaining
8
+ option audit are tracked in the repository's `output/ui-parity/` reports.
9
+
5
10
  ## Install
6
11
 
7
12
  Requires Node.js 20 or newer; users do not need Bun.
@@ -41,14 +46,70 @@ Downloads use a new private folder, verify the published SHA256 and exact HTTP d
41
46
 
42
47
  On Windows, the CLI verifies Authenticode trust and reports the signer before opening the published native installer. `installer-opened` means installation is still pending in that window. JSON reports `downloaded`, `installed`, `already-installed`, or `installer-opened`; list results distinguish `available`, `unsupported`, and `unavailable` release metadata. App sign-in, billing and microphone/Accessibility permissions remain separate and are completed in the app. These operating-system commands are not hosted API or MCP tools.
43
48
 
44
- ## Login
49
+ ## Send work from Scribed to a coding project
50
+
51
+ This local connection is the reverse of MCP access: Scribed sends your requested
52
+ task to a project on your computer and reads the agent's reply. It uses your
53
+ existing coding-agent CLI sign-in, not a hosted “Sign in with Claude/Cursor/Codex”
54
+ integration. No marketplace listing or publisher review is needed for these
55
+ local paths. Your platform's access rules, project trust and normal billing apply.
56
+ Requires a released CLI/API build with local handoff support.
57
+
58
+ ```bash
59
+ scribed login --api-url https://app.scribed.ai
60
+ scribed agents connect codex --project /path/to/project --mode agent
61
+ # Setup prints the connection ID and listener command:
62
+ scribed agents listen --connection <id>
63
+ ```
64
+
65
+ Keep the listener running, then tell Scribed: “Send my Codex project a prompt to
66
+ fix the checkout tests.” Scribed discovers your connected projects, sends the
67
+ requested prompt and can read the reply. Settings → API / CLI / MCP also has a
68
+ project picker, message history, queued-message cancellation and disconnect.
69
+ If several projects match, specify the project name. Project connections are
70
+ private to your account and do not inherit the selected workspace.
71
+
72
+ | Platform | Local setup | What receives the task |
73
+ | --- | --- | --- |
74
+ | Codex | `scribed agents connect codex --project /path/to/project` | A fresh `codex exec` session in that folder; read-only by default, workspace writes with explicit `--mode agent`. |
75
+ | Cursor | `scribed agents connect cursor --project /path/to/project` | A fresh Cursor CLI planning session. This connector supports plan mode only; it does not enable forced unattended edits. |
76
+ | Claude Code | `scribed agents connect claude-code --project /path/to/project` | A new interactive Claude Code session started with the exact channel commands printed by setup. Plan by default; `--mode agent` retains the session's ordinary permission controls. |
77
+
78
+ Claude Code Channels is an experimental research preview. Custom channels use
79
+ the documented `--dangerously-load-development-channels server:scribed-channel`
80
+ development option and require local trust; organization policy still applies.
81
+ Keep that interactive session open. The CLI does not change provider permission
82
+ settings or relay approval decisions. `scribed agents channel-setup --connection
83
+ <id>` prints the setup again. Codex/Cursor connections start fresh tasks and do
84
+ not inject into an existing desktop chat or automatically resume one.
85
+
86
+ Only display metadata goes into the project registration. The canonical project
87
+ path and random listener capability are saved in private files under
88
+ `~/.config/scribed/channels/`; the API stores a capability hash. Every operation
89
+ also requires your current Scribed login and the original account/server.
90
+ The provider process receives task text on standard input, never as a shell
91
+ command; Scribed-specific environment credentials are removed from its environment.
92
+
93
+ Prompts are limited to 4,000 characters, replies to 8,000. Queued prompts expire
94
+ after 24 hours. Delivery alone does not prove execution or completion. An
95
+ uncertain claim, process result or reply is never automatically executed again.
96
+ Inspect the history and project before sending another task. Disconnect cancels
97
+ queued messages and refuses future claims; already delivered work may continue
98
+ and can be stopped in the coding agent itself. A crashed listener leaves a local
99
+ lock: follow its diagnostic only after checking no listener remains.
100
+
101
+ ## Sign in to Scribed
45
102
 
46
103
  Three credential modes; exactly one is stored at a time.
47
104
 
48
105
  ```bash
49
106
  scribed login # browser OAuth: Google, Apple, password, and 2FA
50
107
  scribed login --no-open # print the browser URL instead of opening it
51
- scribed login --password # terminal email/password (+ TOTP) → bearer session
108
+ scribed login --password # terminal email/password → bearer session
109
+ scribed login --email-otp --email me@acme.com # request an email sign-in code
110
+ scribed login --phone-otp --phone +14155550123 # request a phone sign-in code
111
+ scribed login --password --two-factor otp # use an existing SMS/email 2FA challenge
112
+ scribed login --password --two-factor backup # use an existing saved backup code
52
113
  scribed login --password --email me@acme.com --api-url http://localhost:8081
53
114
  scribed login --api-key <key> # personal API key (Settings → API keys) for CI/scripts
54
115
  scribed login --api-key <key> --no-verify # store it without the GET /v1/tools liveness check
@@ -64,9 +125,36 @@ The default login registers a public OAuth client, opens Scribed in the browser,
64
125
 
65
126
  `--password` requires a Scribed account with an existing password; Google-only and Apple-only accounts use browser sign-in. For API-key login, replace `<key>` with the complete `scribed_api_…` secret. Interactive users should use `scribed login`; personal API keys are for unattended CI and scripts.
66
127
 
128
+ Terminal sign-in uses the same authentication transport as the native apps.
129
+ Email/phone code availability is checked before sending; codes and passwords are
130
+ entered privately, never as command flags. If the account requires 2FA, select
131
+ an offered authenticator (`totp`), sent code (`otp`) or saved backup code
132
+ (`backup`); `--two-factor` selects it in advance. The resulting bearer is checked
133
+ against its verified, unexpired session before private local storage. Challenges
134
+ stay in memory. A rejected code offers explicit retry/cancel without resending;
135
+ at the two-factor code prompt, `/switch` selects another available method and
136
+ `/cancel` stops. Returning to the OTP method keeps its already requested code.
137
+ Known expiry, lockout, rate-limit and uncertain network responses stop the flow.
138
+ The phone API intentionally reports incorrect, expired and exhausted attempts
139
+ alike; correcting a code reuses that same attempt and its server-enforced limits.
140
+ Trust-device persistence,
141
+ 2FA enrollment/removal and backup-code generation remain in the browser.
142
+
67
143
  ### First-time account setup
68
144
 
69
- If you do not have a Scribed account, run `scribed login`, click **Sign up** in the browser, and complete the account wizard, email verification, phone verification, and consent. Then return to the terminal and run `scribed login` again to authorize the CLI. The CLI never collects passwords, phone numbers, verification details, or signup and legal-consent data in browser mode; those remain on `https://app.scribed.ai`.
145
+ Run `scribed signup` for the terminal wizard. It uses the same account fields, validation, email verification and mobile verification as the native apps, and stores the resulting bearer session like `login --password`. Terms acceptance is explicit; verification codes must come from the person signing up.
146
+
147
+ ```bash
148
+ scribed signup
149
+ scribed signup --input private-signup.json --json
150
+ scribed signup --resume --email you@example.com --email-code <code> --send-phone-code --json
151
+ scribed signup --resume --email you@example.com --send-phone-code --phone-channel call --json
152
+ scribed signup --resume --email you@example.com --phone-code <code> --json
153
+ ```
154
+
155
+ `--input` accepts the shared `packages/account-signup` `SignUpDraft`, including `password`, `confirmPassword` and explicit `acceptTerms`. Protect that input file; passwords and codes are never saved in CLI configuration or printed. The staged flow reports what remains and resumes verification without creating another account. Phone codes use SMS by default; `--phone-channel call` requests a voice call when sending a code. Supplying `--phone-code` verifies that code without sending another. Use `--resend-email` to request a replacement email code and `--invite-token` to sign up for an existing invitation.
156
+
157
+ Google/Apple consent stays in the browser: run `scribed login`, choose **Sign up**, complete the wizard, and then authorize the CLI. Browser login never collects signup details in the terminal. Subsequent onboarding tools remain limited by their API authorization; the offline signup lifecycle test does not prove live onboarding apply.
70
158
 
71
159
  ### Credentials and environment
72
160
 
@@ -306,7 +394,11 @@ scribed records view create deals --input view.json | view update <viewId> --inp
306
394
  scribed records summary deals [--view <id>] # the totals footer: count + Σ / avg per numeric column (objects_records_query + objects_views_list)
307
395
  scribed records lookup +14155550101 | records lookup ada@example.com # objects_record_lookup (caller ID; an @ = by email)
308
396
  scribed records import deals deals.csv [--map "Amount ($)=amount"] [--set stage="Soft Commit"] [--ai] [--dry-run] [--concurrency 4]
309
- # CSV / TSV / JSON parsed here → objects_record_create per row (--ai: objects_import_suggest_mapping)
397
+ # CSV / TSV / JSON / XLSX / XLSM / vCard parsed here → objects_record_create per row (--ai: objects_import_suggest_mapping)
398
+ scribed records import contacts contacts.xlsx extra.vcf --dry-run
399
+ scribed records import contacts contacts.xlsx --sheet "Customers" --map "City=address#city"
400
+ # all visible worksheets by default; --sheet repeats to select sheets; --map also accepts address key#part
401
+ # merged columns, synthesized full names, and file + sheet + row diagnostics; 50 MiB per file
310
402
  scribed records export deals [--where …] [--columns name,amount,stage] [--max-rows 50000] --out deals.csv
311
403
  # objects_records_export — EVERY matching row, rendered server-side (labels, member names, linked
312
404
  # titles); reserved for the workspace owner and the members granted "Export data" in Settings →