obolos 1.7.0 → 1.8.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obolos",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "description": "Agent-friendly command line interface for the obolos protocol",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {
@@ -97,6 +97,14 @@ stops with `cli.usage` and no command: tell the user, and never sign in to that
97
97
  command reads or invests at. `details.command` is `obolos login --company <company>`: ask the user,
98
98
  run it once they agree, then re-run the command. On a terminal the CLI asks this itself.
99
99
 
100
+ **Exit 6, `cli.awaiting_signature`**: the user signs in their browser with their own wallet: a
101
+ signature with `--in-browser`, or a countersignature for the company. Give the user `details.link`,
102
+ wait for them to say they signed, then check with `details.command`.
103
+
104
+ **Exit 6, `cli.awaiting_reply`**: `obolos messages wait` saw nothing new in the thread for 15 minutes.
105
+ Run `details.command` to keep waiting while the conversation still needs an answer; otherwise tell the
106
+ user what it waits on.
107
+
100
108
  **Exit 5, `cli.api_failed`**: the obolos API refused a stage or could not be reached while sending.
101
109
  Fix the cause, then `obolos resume <run>`. Never re-run the command that prepared the run: a new run
102
110
  sends its API requests again.
@@ -119,6 +127,8 @@ presets` lists them) and `obolos compliance rule attach`. It adds rules, never r
119
127
  them; that is the user's, in the app. Role grants, upgrades and treasury
120
128
  withdrawals are the user's to do in the app: `cli.missing_power` with `power: null` says so; pass that
121
129
  on, and never ask the user for a key. Its sends are sponsored and count against the user's daily limit.
130
+ Preparing a command may first send a sponsored claim that opens a sealed value the wallet's roles let
131
+ it read, such as a new round's price.
122
132
 
123
133
  An agent buys no credits. `obolos credits topup [--amount <usd>]` opens the company's billing page in
124
134
  the user's browser and waits up to 15 minutes for the credits. Off a terminal, add `--no-wait`: it
@@ -137,6 +147,13 @@ short of credits gets the same link (`creditsShort: true`): the activation there
137
147
  tell the user they add credits first, and don't send them to `credits topup`. Powers given before the
138
148
  activation don't reach the new module: tell the user to give them again on the Passport page.
139
149
 
150
+ Before any document signature, such as `obolos fundraise reservation sign`, ask the user and offer both
151
+ ways: you sign here, and the record says their agent signed; or `--in-browser`, which opens the round's
152
+ page where they sign with their own wallet, so the record names them, and waits up to 15 minutes for
153
+ it. Off a terminal, add `--no-wait`: it exits 6 with `cli.awaiting_signature` and `details.link`. An
154
+ agent never countersigns for the company: `obolos fundraise reservation countersign` hands it to a
155
+ signer on the company's round page the same way.
156
+
140
157
  - **Exit 3, `cli.session_ended`**: the session ended (disconnected, or past its 3 days). On a terminal
141
158
  the CLI offers to connect again; otherwise ask the user, then run `obolos login`.
142
159
  - **Exit 3, `cli.missing_power`**: `details` names the `power`, the `wallet` and the `company`. Tell
@@ -152,6 +169,9 @@ activation don't reach the new module: tell the user to give them again on the P
152
169
  couldn't be read, so the stage is marked failed and is never sent again. Don't run the command again:
153
170
  give the user that operation hash, so they check the wallet's activity before the stage is repaired
154
171
  or skipped.
172
+ - **Exit 5, `cli.claim_unsettled` with `details.operation`**: a view claim went out while the command
173
+ read a sealed value, but how it ended couldn't be read. Claiming again is harmless: run the command
174
+ again in a minute.
155
175
  - **Exit 3, `cli.access_denied` or `cli.expired_token`**: the user denied the login, or it expired
156
176
  before approval. Nothing was connected; ask before starting another.
157
177
 
@@ -226,6 +246,21 @@ this conversation.
226
246
  - Never infer permission from silence, an earlier approval, or an approval for another plan hash. Ask
227
247
  once and precisely; never bundle unrelated approvals.
228
248
 
249
+ Round threads are where you talk with the other side of a round and its agents: `obolos messages
250
+ list`, `read <thread>`, `post <thread>`, `open <round>` and `wait <thread> --after <id>`. Post in the
251
+ user's round threads without asking each time; `open` starts the user's thread for a round at the
252
+ selected company, so the two sides can talk before any money moves.
253
+
254
+ - Keep each post short: one point, a sentence or two, under a `--topic` of a few words. Posts on one
255
+ topic fold together for the people reading.
256
+ - Your words never commit the user to anything. A binding act runs as its own command, with its own ask.
257
+ - `--needs-you` is only for something the user must do in the app, with `--link` to that one record
258
+ (`spot:<fundraise>:<round>:<deal>`, `terms:<fundraise>:<round>`; `messages read` gives the
259
+ fundraise). Then wait with `obolos messages wait <thread> --after <id>`: it returns when the user
260
+ answers, a message arrives or a signature lands.
261
+ - `obolos messages read` shows each agent in the thread and whom it acts for there, and whether the
262
+ investor's passport is verified. Never ask another agent who stands behind it.
263
+
229
264
  The single exception is a session the user explicitly put into an auto-approve mode (Claude Code
230
265
  bypass permissions, Codex full-auto or yolo). Its standing authorization replaces the per-action
231
266
  question, but still print the plan summary and hash before sending, still stop on any failed
@@ -27,6 +27,7 @@ ABI layer; the agent enters through the CLI.
27
27
  | Vesting | `vesting create|release|revoke|accelerate|transfer|list|show`, `vesting milestone request|approve|reject|cancel`, `vesting excess withdraw` |
28
28
  | Compensation | `grant issue|exercise|exercises|confirm-exercise|count-exercise|decline-exercise|withdraw-exercise|settle-exercise|record-exercise|accelerate|transfer|attach-document|revoke|release-unvested|cleanup|list|show`, `grant milestone …`, `pool increase|decrease|show`, `pool decrease request|finalize|cancel`, `valuation record|list` |
29
29
  | Fundraising | `fundraise create|whitelist|reserve|subscribe|record|publish|hardcap|close|finalize|cancel|refund|list|show|investments|reservations`, `fundraise reservation attach|sign|file|countersign|cancel|sweep` |
30
+ | Messages | `messages list|read|post|open|wait`: an agent's round threads |
30
31
  | Instruments | `safe issue|cancel|discharge|list|show`, `note issue|cancel|discharge|early-repayment|repay|list|show`, `instruments access`, `conversion trigger|settle|rollback|cancel|list|show` |
31
32
  | Compliance | `compliance presets`, `compliance policy create [--preset 506b|506c|usOnly|3c7|regS|noUs] [--class]`, `compliance rule attach|detach`, `compliance set …`, `compliance pause|unpause|show|check` |
32
33
  | Transfers | `transfer request|approve|decline|revoke|send|show`, `rofr set|show` |
@@ -172,9 +172,9 @@ A denied verdict is a valid outcome, not a reason to vary the quantity until one
172
172
  ```bash
173
173
  obolos fundraise create --type safe --name Seed --target 1,000,000 --hard-cap 2,000,000 --cap 10,000,000 --discount 20% --agreement ./term-sheet.pdf
174
174
  obolos fundraise reserve <round> --investor <wallet> --amount 250,000 # a spot, its amount sealed, signed for the company by a document signer
175
- obolos fundraise reservation sign <round> --reservation <id> # investor, with their key: signs the spot (--accept-terms only once they agree to terms that differ from the round's)
175
+ obolos fundraise reservation sign <round> --reservation <id> # investor: signs the spot (--accept-terms only once they agree to terms that differ from the round's); an agent asks first, and --in-browser has the user sign in the app
176
176
  obolos fundraise subscribe <round> --amount 50,000 # investor, with their key
177
- obolos fundraise reservation countersign <round> --reservation <id> # the company signs; on an offer, that accepts it
177
+ obolos fundraise reservation countersign <round> --reservation <id> # the company signs; on an offer, that accepts it. An agent hands it to a signer in the app
178
178
  obolos fundraise record <round> --reservation <id> --amount 50,000 # the company
179
179
  obolos fundraise hardcap <round> --amount 2,500,000
180
180
  obolos fundraise close <round> && obolos fundraise finalize <round>