obolos 0.0.0-stage → 1.4.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/CHANGELOG.md ADDED
@@ -0,0 +1,402 @@
1
+ # Changelog
2
+
3
+ All notable changes to the `obolos` CLI are documented here.
4
+
5
+ ## [Unreleased]
6
+
7
+ ## [1.4.0] - 2026-11-01
8
+
9
+ ### Added
10
+
11
+ - `obolos login --try` connects to try.obolos.io.
12
+ - `obolos upgrade` updates the CLI and its skill to the latest version.
13
+
14
+ ### Changed
15
+
16
+ - Commands work on the network you logged in to, and read it through its public RPC, so neither `--chain` nor an
17
+ RPC URL is needed. Both still override.
18
+ - `obolos whoami` and `obolos doctor` name the site: app.obolos.io or try.obolos.io.
19
+
20
+ ## [1.3.0] - 2026-11-01
21
+
22
+ ### Changed
23
+
24
+ - Uses @obolos/sdk 1.2.1
25
+ - The obolos skill installs the CLI itself when it isn't there, instead of asking you to.
26
+
27
+ ## [1.2.0] - 2026-11-01
28
+
29
+ ### Added
30
+
31
+ - `obolos login` connects the terminal as one of your agent wallets: it prints a link and a code to approve in the app.
32
+ `--company <company>` connects it at one company, `--key` signs in with your own key.
33
+ - `obolos agents` lists the agent wallets this terminal is connected as, `obolos agents use <name>` picks one, and
34
+ `obolos agents check <address>` asks whether a verified person stands behind an agent.
35
+ - `obolos company incorporate --form` asks obolos to form the legal entity; `--formation <id>` sets the company up once
36
+ it is formed. `obolos company formation` lists your requests, and `obolos company details` shows or sets the legal
37
+ details.
38
+ - `obolos email verify <address>` and `obolos email confirm <code>` verify the account's email.
39
+
40
+ ### Changed
41
+
42
+ - Published on npm as `obolos`; earlier releases were `@equitylayer/cli` on GitHub Packages.
43
+ - Uses @obolos/sdk 1.2.0, bundled into the package and minified. Installing the CLI no longer installs the SDK as a
44
+ separate package.
45
+ - Works on Arbitrum One when no `--chain`, `OBOLOS_CHAIN_ID` or RPC URL names a network, so `obolos login` needs no
46
+ flags.
47
+ - Requires Node 24.
48
+
49
+ ## [1.1.1] - 2026-10-22
50
+
51
+ ### Changed
52
+
53
+ - Uses @obolos/sdk 1.1.1
54
+
55
+ ### Added
56
+
57
+ - `fundraise create --price-salt <hex>` seals a priced round's price under a given salt, for an agreement rendered
58
+ beforehand with its price commitment.
59
+
60
+ ### Fixed
61
+
62
+ - Back-to-back sends from one wallet each read a fresh nonce: the RPC provider keeps no request cache.
63
+
64
+ ## [1.1.0] - 2026-10-21
65
+
66
+ ### Changed
67
+
68
+ - Uses @obolos/sdk 1.1.0
69
+
70
+ ## [1.0.0] - 2026-10-20
71
+
72
+ ### Changed
73
+
74
+ - Uses @obolos/sdk 1.0.0
75
+ - The CLI pins CoFHE SDK 1.0.1 for encrypted inputs and permit handling.
76
+ - `fundraise reservation countersign` asks each deal's funding check with the company's signature when the actor
77
+ manages the fundraise, and `fundraise record` then records a deal that holds a yes in one transaction. A check holds
78
+ the deal's room until its record or a cancel, so recording another deal in between no longer sends it back for a
79
+ fresh one. On a priced round the share count is sealed with the check and only goes public with the record.
80
+ ### Added
81
+
82
+ - `obolos treasury deposit --amount <amount>`: pay into the selected company's vault from your wallet.
83
+
84
+ ## [0.9.0] - 2026-10-17
85
+
86
+ ### Added
87
+
88
+ - `fundraise publish <round>`: make a finalized SAFE or note round's total public. The company's session decrypts
89
+ the sealed total under its own permit and the announcement carries the network's signed result, which the contract
90
+ relays as the announcement lands. Until then `fundraise show` and `fundraise list` state the figure as confidential
91
+ to anyone but a session that may read it.
92
+
93
+ - `fundraise reserve --source <fund-lead|platform>`: who brought the investor's capital, kept with the spot on chain;
94
+ the fund lead's when omitted. `fundraise reservations` lists each spot's source.
95
+ - `fundraise create --carry <pct> --platform-share <pct>`: a vehicle's carry and the platform's share of it, fixed
96
+ with the round. `spv waterfall --round <id>` and `distribution waterfall --round <id>` take both, and every
97
+ investor's capital and source, from the chain.
98
+ - `fundraise subscribe --source <fund-lead|platform>`: who brought you to the round, kept with your subscription on
99
+ chain; the fund lead's when omitted.
100
+
101
+ ### Changed
102
+
103
+ - **A priced round's price is sealed.** `fundraise create --type priced` seals the price; `fundraise show` and
104
+ `fundraise list` state it, every amount and an unpublished total as confidential to a session that cannot read
105
+ them. `fundraise subscribe` on a priced round unlocks the price first when you cannot read it yet, and refuses an
106
+ amount that buys no whole number of shares. `fundraise record` names the shares on a priced round. `fundraise
107
+ finalize` on a priced round asks whether the sealed total qualifies it before its last window. `fundraise publish`
108
+ takes a priced round too, and its total reveals the price. Adding an address to a priced round's whitelist shows
109
+ it the price. `conversion show`, `list`, `trigger` and `settle` print the price only to a session that reads it.
110
+ - **Nothing is paid on the contract.** `fundraise subscribe` makes an offer at the round's terms: it signs the
111
+ agreement and seals the amount, pays nothing, and one offer of yours stands open per round until the company
112
+ countersigns it or you withdraw it with `fundraise reservation cancel`. You pay by bank transfer or by sending the
113
+ payment token to the company's vault once the company has countersigned; the company then runs `fundraise record
114
+ <round> --reservation <id> --amount <usd>`, which on a SAFE or note round asks the network whether the sealed amount
115
+ fits and records with its answer, relayed by the record itself and only when it is yes and still current; a record
116
+ the round refuses publishes nothing. `fundraise reserve` seals a SAFE or
117
+ note spot's amount; `fundraise refund` reverses a cancelled round's payments on the ledger once the money went
118
+ back the way it came. Removed: `fundraise invest`, `fundraise exit`, `fundraise claim-refund`.
119
+ - The Agent Skill is now `obolos` (was `use-obolos`): invoke it as `/obolos` in Claude Code or `$obolos` in Codex,
120
+ and `/obolos:obolos` through the Claude Code plugin. `obolos skills install` writes `skills/obolos`; delete an
121
+ older `skills/use-obolos` copy so agents don't load both.
122
+
123
+ ### Security
124
+
125
+ - `docs read` without `--save` writes only a plain file name in the current folder: a document's name no longer picks
126
+ a path or a dot file.
127
+ - `--expect-hash <hash>` on `send`, `resume` and every command with `--send` refuses a plan or stage whose hash
128
+ differs from the one approved (`cli.hash_mismatch`, exit 2). The skill tells agents to pass it with `--yes`. A
129
+ stage built only as the run advances shows no hash until the stage before it lands.
130
+ - `fundraise reservation sign --accept-terms`, `conversion settle --prover-address` and `note repay --prover-address`.
131
+ - `companies` and `whoami` show only direct grants as held; `whoami` lists covered roles under `implied`.
132
+
133
+ ## [0.8.0] - 2026-10-12
134
+
135
+ ### Added
136
+
137
+ - `company modules`: the modules a company can add after creation, with their state and price.
138
+ `company module activate <fundraise|grants|voting|safe|note>` activates one at its credit price.
139
+ - `company incorporate --modules fundraise,grants,voting --preload <usd>`: activate modules and buy credits right after
140
+ the company is created.
141
+ - `compliance rule attach --kind max-holders-total [--max-holders <n>] [--unrecorded <n>]`: the company holder cap.
142
+ A later class joins the company's one instance.
143
+ - `compliance set unrecorded-holders --count <n>`: holders the company has outside obolos, up to 1,000,000.
144
+ - `compliance set max-holders` now sets whichever cap the entity takes.
145
+ - `sdk prepare compliance.setUnrecordedHolders`.
146
+ - `company incorporate --entity lp`: a Delaware limited partnership.
147
+ - `compliance presets --all`: every preset as defined, ignoring the selected company.
148
+ - `grant confirm-exercise <grantId> [--paid-on <date>] [--document <ref>]`: confirm a holder paid the strike of their
149
+ pending option or warrant exercise, which settles the shares to them; `--paid-on` is when the payment arrived (the
150
+ exercise date, defaulting to now) and `--document` names a payment receipt, if any. It confirms only the request it
151
+ showed, and only until the settlement window after the grant's expiry closes. `grant decline-exercise <grantId>`
152
+ declines an unpaid request while the grant is open; a paid one always settles. `sdk prepare grants.confirmExercise`
153
+ builds the confirmation directly, `sdk prepare grants.setSettlementWindow` sets the window (7 to 365 days, 14 until
154
+ set) and `sdk read grants.settlementWindow` reads it; `pool show` and `grant exercises` show it in days.
155
+ - `grant withdraw-exercise <grantId>`: the holder withdraws their own request before its payment is on record.
156
+ `grant settle-exercise <grantId>`: publish an exercise's vesting check and settle it, your own or, for the company,
157
+ one whose payment is on record; a denial of a paid exercise says to return the payment to the holder.
158
+ `grant exercises [--holder <addr>]`: the exercises in flight, each with the date to confirm it by, the payment
159
+ reference the holder quotes and, with `--reveal`, the amount due.
160
+ - A holder who can't hold the shares when their exercise settles, refused by the class's rules or frozen, has them
161
+ parked to claim later (`shares claim`); the exercise commands say so. `shares claim` says when your wallet is still
162
+ frozen on the class and the company has to lift the freeze first.
163
+ - `grant cleanup` waits out the company's settlement window after an option or warrant expires, and
164
+ `grant record-exercise` refuses a payment dated before the grant's last vesting change.
165
+ - `grant record-exercise <grantId> --shares <qty> --document <ref> [--paid-on <date>]`: for a holder who can't request
166
+ it, record an option or warrant exercise on their signed notice, then settle it to the holder. A notice and payment
167
+ that arrived before expiry stay recordable for the settlement window after it, and vesting counts as of
168
+ `--paid-on`. A data room notice is hashed onto the record; any other reference records no hash, with a warning that
169
+ the link is public.
170
+ - `grant exercise` opens a confidential session when your key is configured, refuses a strike request for more than has
171
+ vested, and quotes the amount due in its payment note; without the key it warns that such a request is refused
172
+ publicly. It refuses a `--net` exercise that nets less than one whole share at the current valuation, and phantom
173
+ units at or under water, when your key can read the strike and the valuation, and warns when it can't.
174
+ - `--paid-on <date>` on `grant confirm-exercise` and `grant record-exercise` counts to the end of that UTC day, or now
175
+ if sooner, and for a record to before expiry, so the vesting check counts the whole day; the date on record stays that
176
+ day.
177
+ - `grant count-exercise <grantId>`: the company counts the shares a holder's net exercise nets at the valuation it was
178
+ filed at, which the holder never sees, then publishes the count and settles them to the holder. `grant exercise
179
+ --net` now only files the request; `grant settle-exercise` refuses a net request until it is counted, and
180
+ `grant exercises` and `grant show` say whether one is counted. `sdk prepare grants.confirmNetExercise` takes a sealed
181
+ count, so it goes through the command. Grant, warrant, milestone and schedule amounts are sealed as whole shares: a
182
+ fraction is refused before anything is sent.
183
+
184
+ - `fundraise hardcap <round> --amount <usd>`: raise an open round's hard cap when an investor wants to put in more, or
185
+ lower it, never below the money in; zero lifts it.
186
+ - `sdk prepare grants.acceptGrant` and `sdk prepare grants.filePaperAcceptance`: a holder's signed acceptance of a
187
+ grant's document, and the company's filing of one given on paper. A grant without a document hash is accepted too,
188
+ and a paper filing takes any scan link, with a `scanHash` of zero unless the scan is a data room document.
189
+ - `docs list --history`: earlier versions too, each with the reference of the version that superseded it.
190
+ - `grant attach-document <grantId> --document <ref>`: attach a data room document, with its hash, to a grant that
191
+ records none. Only a data room document is taken, and only its latest version; it is shared with the holder when
192
+ you hold Records. The attach is permanent, and it replaces an outside link the grant was issued with. It clears
193
+ the holder's signed acceptance, which covered no document, so they accept the attached one; a paper acceptance
194
+ stands. `sdk prepare grants.attachDocument` builds the call directly.
195
+ - `grant show` and `grant list` show each grant's document hash and acceptance (`none`, `signed` or `paper`, and when).
196
+
197
+ ### Changed
198
+
199
+ - Reaches the 12 Oct 2026 Arbitrum Sepolia deployment, through SDK 0.35.0.
200
+ - Warrant commands (`grant issue --type warrant`, `pool increase|decrease --budget warrant`, and confirming, recording,
201
+ settling or attaching a document to a warrant) need the Shares role, like every other grant; Fundraise no longer
202
+ covers warrants.
203
+ - `grant issue --milestone` and `vesting create --milestone` take `date:shares` or `<document ref>:date:shares`; the
204
+ leading part was a free-text label and is now a document reference. Every `--document` and `--evidence` refuses text.
205
+ `vesting show` prints each milestone's document reference.
206
+ - `grant exercise` pays no strike on chain. On an option or warrant it files a request: the holder pays the company
207
+ the strike off-platform, and the shares arrive once the company confirms the payment (`grant confirm-exercise`). It
208
+ settles RSUs and phantom units itself, and nets options with `--net`. The prepare action `grants.exerciseGrant`
209
+ replaces `grants.exerciseOptions` and `grants.exercisePhantom`, and `grants.recordExercise` and
210
+ `grants.confirmExercise` are new.
211
+ - `safe issue` and `note issue` require `--document`, the signed agreement's reference, which may be any link. A data
212
+ room document (`obolos://rooms/<room>/folders/<folder>/doc/<index>`) is read with your key and hashed; one stored in
213
+ the clear is hashed with a warning that the investor's private terms are readable. `--document-hash <hex>` gives
214
+ the keccak256 of its bytes instead, and any other link records no hash. A data room document you can't open, such as
215
+ a removed one, is refused, as in the app.
216
+ - A command that records a `--document` hashes a data room document onto the record: its bytes come through
217
+ `OBOLOS_API_URL` or the API the project signed in to, and it opens with your key. Any other reference, an `ipfs://`
218
+ file included, records no hash.
219
+ - `docs replace` files the new version as a new document at a new reference, which the run file's outputs carry
220
+ (`documentRef`, and the old reference as `replaces`); the old reference keeps its bytes and readers. A reference
221
+ that already has a newer version is refused, naming the latest.
222
+ - `docs list` shows the latest version of each document. `docs show` and `docs read` name the newer version when one
223
+ exists, and `docs sign` warns before signing an earlier version.
224
+ - `docs show` lists every version of the document, oldest first. `docs list` and the folder question count each
225
+ folder's current documents: latest versions only, removed ones left out.
226
+ - `grant transfer` shares the grant's data room document with the new holder when you hold Records and your key is
227
+ configured, so they can accept it. Without the key it still prepares, and warns that the document needs sharing by
228
+ hand; nothing about sharing ever stops a transfer.
229
+ - `grant issue`, `safe issue` and `note issue` share a sealed data room document with the recipient in the issuing
230
+ transaction when you hold Records, and warn otherwise.
231
+ - `safe cancel` and `note cancel` hash a data room `--document` onto the record, like the other commands that record
232
+ one.
233
+ - `docs replace` keeps the document's kind tag, refuses a document whose latest version was removed (upload a new
234
+ one instead), and warns that whoever could read the old version keeps it.
235
+ - A command that hashes a `--document` onto its record warns when that reference has a newer version.
236
+ - `compliance presets` lists the selected company's presets (`--company`, `OBOLOS_COMPANY` or `obolos use`), or every
237
+ preset with the entity types it is offered to when none is selected. `compliance policy create --preset` refuses a
238
+ preset the company's entity type is not offered.
239
+ - `fundraise create` warns, instead of refusing, when a round open to anyone rests on a policy without KYC or
240
+ sanctions: attach the rules before investors pay.
241
+ - Workflow commands open a confidential session only when the path they take needs one: a decline or a withdrawal
242
+ prepares without one, and so does a strike exercise request unless your key is configured, when it checks the request
243
+ against what has vested first.
244
+
245
+ ### Removed
246
+
247
+ - `fundraise create --person-cap`: the maximum investment always counts per person for wallets bound at the company,
248
+ and per wallet otherwise.
249
+
250
+ ### Fixed
251
+
252
+ - `grant exercise` and `grant record-exercise` refuse a grant before its first whole vesting interval has passed, cliff
253
+ or none, as the chain does; `grant exercise` says when the first shares vest.
254
+ - `fundraise reserve --reservation <id>` now sends with a key: the old spot is cancelled, then the new one committed.
255
+ - `fundraise reservation countersign` names the Fundraise viewing permission a signer lacks, before signing.
256
+ - `fundraise subscribe` and `fundraise invest` refuse an address that is not an obolos company.
257
+ - `docs upload` completes its run once the document is filed; it looked for the filing under the room instead of the
258
+ folder.
259
+
260
+ ## [0.7.0] - 2026-09-28
261
+
262
+ ### Added
263
+
264
+ - `passport attest` and `passport activate` for platforms, over the obolos passport API with `OBOLOS_API_KEY`.
265
+ - `passport activate` and `passport attest` take the wallet's `--signature` and its `--issued-at`, and `attest`
266
+ takes the person's `--code`. `--code -` reads the code from stdin, so it stays out of argv. With `--email`, the
267
+ signed message names that email on its `Email:` line. The refusals `consent_required`, `signature_invalid`,
268
+ `locked` and `rate_limited` exit 4 like every other refusal.
269
+ - `fundraise subscribe <round> --amount <usd>` signs the round's published agreement and pays at its public terms in
270
+ one step; a first subscription at the company opens your private channel with it in the same batch. The company
271
+ accepts by signing within seven days, or refunds; left unaccepted, `fundraise exit` takes the money back after
272
+ seven days.
273
+
274
+ ### Changed
275
+
276
+ - **Breaking:** `fundraise create` takes `--agreement <ref>`, the round's agreement, and publishes it unsigned and
277
+ unencrypted in the round's Term Sheets with its hash pinned on the round (`--agreement-hash`, or fetched and hashed
278
+ through `--api-url`) before opening the round. A company without a data room, or an actor without Records
279
+ authority, is refused. `--person-cap` needs `--max` and the company's attestation hub.
280
+ - **Breaking** for rounds open to anyone on custom policies: `fundraise create` without `--whitelist-only` refuses a
281
+ policy that lacks a KYC rule at level 1 or above or a sanctions rule with its oracle set
282
+ (`workflow.fundraise.create.policy_unscreened`, exit 4). Attach them with `compliance rule attach --policy <ref> --kind kyc` or `--kind ofac`, use a policy made from
283
+ a preset, or pass `--whitelist-only`; the company then vets who subscribes.
284
+ - **Breaking:** `fundraise invest` requires `--reservation <id>` and pays a spot the company committed and signed,
285
+ signing its agreement in the same step when you have not, after checking the spot's sealed terms open its
286
+ commitment; `--draft-hash` names a bespoke draft. With a plain key, each step is its own transaction. Subscribing
287
+ at the round's terms is `fundraise subscribe`.
288
+ - **Breaking:** `fundraise reservation countersign --reservation <ids...>` signs deals for the company, several in
289
+ one batch: a spot committed unsigned, one the investor signed first, or a subscription, where signing is the
290
+ acceptance. A subscription older than seven days can no longer be accepted (`acceptance_closed`, exit 4).
291
+ `--draft-hash` names bespoke drafts, and `--paper` files the company's paper signatures instead.
292
+ - **Breaking:** `fundraise record` requires `--reservation <id>`, a spot the company signed. `--document` is the
293
+ investor's paper signature, filed in the same run unless one is on record. Past the round's deadline it is refused
294
+ (`deadline_passed`, exit 4), as the contract refuses the record.
295
+ - `fundraise reserve` commits a spot for a named investor at the round's terms or bespoke ones (`--cap`,
296
+ `--discount`, `--mfn`, `--pro-rata`), over the round's agreement or a bespoke draft (`--draft-hash`), signed for the
297
+ company when you sign documents (`--unsigned` leaves it for a signer). `--reservation <id>` replaces an unfunded
298
+ spot in one batch.
299
+ - `fundraise reservation sign` signs a spot as its investor without paying, for a wire or to pay later;
300
+ `reservation file` files an investor's paper signature; `reservation attach` attaches or replaces a spot's
301
+ document, and both signatures start over; `reservation cancel` withdraws an unfunded spot or refunds a funded
302
+ allocation.
303
+ - `obolos send` hands a run that pins documents storage through the API the project's session signed in to, with that
304
+ session, which goes to no other API; nothing of the session goes into the run file. A run recording another API
305
+ (`normalizedInput.apiUrl`) is refused (`cli.usage`), since its file carries no key and may be edited. A command
306
+ pinning through another API than the session's (`--api-url`, `OBOLOS_API_URL`) is not handed the session and asks
307
+ for a sign-in. A stage stopped for storage says how to resume.
308
+ - **Breaking:** the passport commands send `OBOLOS_API_KEY` only to `OBOLOS_API_URL` or the default API, never
309
+ to the `apiUrl` of a project's `.obolos/session.json`, which could send the key anywhere. `passport attest`
310
+ prints `status: "code_sent"` for an email's first call and `credentialId` in place of `passportId`.
311
+ - **Breaking:** `identity activate` is gone with holder-side activation; platforms use `passport activate`.
312
+ - **Breaking:** `identity secret store`, `identity secret clear` and `identity secret recover` are gone with the
313
+ hub's identity vault, and `identity status` no longer reports it.
314
+ - **Breaking:** `compliance rule attach` and `compliance set accreditation` drop `--qp`. The accredited rule no
315
+ longer carries a qualified-purchaser alternative; qualified-purchaser status is a `qpType` predicate.
316
+
317
+ ### Fixed
318
+
319
+ - The provider key (`OBOLOS_API_KEY`) is sent only to `OBOLOS_API_URL` or the default API, never to the API a project's
320
+ `.obolos/session.json` names, so a cloned repository cannot redirect it.
321
+ - The private-key error no longer echoes the rejected value: a malformed `OBOLOS_PRIVATE_KEY` or mnemonic
322
+ used to appear verbatim in `--json` output and on stderr.
323
+ - An acting address that is not an address is refused naming where it came from (`--from`, `OBOLOS_FROM`
324
+ or `.obolos/config.json`), never quoting it, so a private key set there no longer reaches the output.
325
+ - Invalid JSON input keeps the parser's account of the fault but drops its excerpt of the text, so a malformed
326
+ input file never prints what it holds.
327
+ - `send`, `resume` and `--send` validate `--confirmations` before broadcasting; `0`, a negative value or a
328
+ fraction used to send the stage anyway and then hang waiting to reach it.
329
+ - A plan send whose transaction is not included within 120s stops with exit 5 instead of waiting forever,
330
+ and says the transaction may still land, so it is checked by hash before the plan is sent again. Once it
331
+ is included, extra `--confirmations` are waited out untimed, so a mined transaction is never reported as
332
+ unmined and re-sent.
333
+ - `sdk read` and `sdk prepare` refuse internal client plumbing (`executor`, `workflows`, `actions`, ...), and
334
+ builders that take a sealed input or a CoFHE proof (`grants.exerciseNet`, `voting.castBallot`,
335
+ `voting.castBallotFor`) are classified confidential rather than read or plain prepare.
336
+ - `parsePlan` refuses calldata that is not a whole number of bytes.
337
+
338
+ ### Changed
339
+
340
+ - The CLI resolves `@obolos/sdk` from the workspace, so the next build also carries the SDK's narrower
341
+ jurisdiction gate (ADR 17: rounds, direct SAFE and note issuance, comp grants and warrants only) and its
342
+ stricter sharing- and prover-permit scoping, with no CLI code of its own to change.
343
+
344
+ ## [0.6.0] - 2026-09-16
345
+
346
+ ### Added
347
+
348
+ - `obolos distribution`: `dividend` and `waterfall` prepare a distribution (`--payment-date`,
349
+ `--claim-window-days`, `--exclude`, `--off-platform`, `--unvested pay|hold`), then `pay`, `record`,
350
+ `top-up`, `claim`, `claim-pending`, `close`, `cancel` and `show` carry it through settlement.
351
+
352
+ ### Changed
353
+
354
+ - Licensed under the obolos Source Available License 1.0 instead of BUSL-1.1.
355
+
356
+ ### Removed
357
+
358
+ - The dividend commands.
359
+
360
+ ## [0.5.0] - 2026-09-12
361
+
362
+ ### Fixed
363
+
364
+ - `compliance presets` works with an actor configured through `--from`, the environment, local config,
365
+ or a signer. Commands only inject an `actor` input when the workflow schema declares it.
366
+
367
+ ### Added
368
+
369
+ - `shares parked list --holder <address>` shows a wallet's unclaimed parked lots, and
370
+ `shares parked cancel --holder <address> --lot <id>` voids one that must never be claimed.
371
+
372
+ - `shares issue --issued <date>` records an existing holding's acquisition date without
373
+ requiring a round. `shares claim --lot <id>` selects a parked allocation; the CLI asks
374
+ when several exist. Claims preserve each allocation's date and require current eligibility.
375
+
376
+ - `fundraise create --policy` takes an address or a name and must point at a policy that already
377
+ carries its rules (`compliance policy create`, `compliance rule attach`); the `create` shortcut is
378
+ gone. Missing SAFE or note terms are asked for; `--cap none`, `--discount none`, `--no-mfn`,
379
+ `--no-pro-rata` and `--no-early-repayment` state a negative without a prompt.
380
+
381
+ ### Changed
382
+
383
+ - `conversion trigger` no longer prices anything. It reopens a qualifying round's lapsed series
384
+ (`--round <id>`, default the latest qualifying round) on that round's own class, price and
385
+ pre-money basis, over the instruments outstanding when the round qualified. `--class`,
386
+ `--price` and `--document` are gone; a priced round finalizing at the threshold opens the
387
+ series itself.
388
+
389
+ ### Added
390
+
391
+ - `obolos skills install|list`: the `use-obolos` Agent Skill now ships with this package. It is
392
+ installed to the cross-agent `~/.agents/skills` root plus every detected agent directory
393
+ (Claude Code, Cursor, OpenCode, GitHub Copilot, Factory Droid), is idempotent, refuses to
394
+ overwrite a locally edited copy without `--replace`, and backs one up when replacing. `--agent`
395
+ accepts `codex`, `gemini`, `amp`, `cline` and `warp` as names for that shared root. Moved
396
+ here from `@obolos/sdk`, whose `obolos-skill` binary is gone: the skill routes an agent to
397
+ these commands, so it belongs with the package that provides them and versions with it.
398
+ - Initial SDK-backed `obolos` CLI with dynamic reads and preparation, tamper-evident plans,
399
+ batching, simulation, company/jurisdiction inspection, structured error decoding, diagnostics,
400
+ and guarded user-owned-key sending.
401
+ - Versioned workflow discovery/preparation (`workflow list|describe|prepare`) and the user-intent
402
+ `shares issue` command, both backed by `@obolos/sdk/workflows` with no duplicated ABI or rules.
package/LICENSE ADDED
@@ -0,0 +1,134 @@
1
+ obolos Source Available License 1.0
2
+ ===================================
3
+
4
+ Licensor: Obolos Group Incorporated
5
+
6
+ Software: the software the Licensor distributes with this license, including
7
+ the obolos protocol contracts and circuits, the SDK, the CLI, the indexer and
8
+ the backend, each version separately
9
+
10
+ Other licenses: legal@obolos.io
11
+
12
+ 1. Acceptance. By using the Software you agree to these terms as conditions of
13
+ every license they grant. If you do not agree, you have no license.
14
+
15
+ 2. What you may do.
16
+
17
+ (a) Non-Production Use. You may copy, modify, create derivative works of, and
18
+ distribute the Software for Non-Production Use.
19
+
20
+ (b) Use with Authorised Deployments. You may use, modify and combine with
21
+ your own software the SDK, the CLI, the interface definitions and the
22
+ documentation in Production Use to interact with Authorised Deployments,
23
+ including to build and operate your own products that interact with
24
+ Authorised Deployments.
25
+
26
+ (c) Conditions. Every copy or derivative work you distribute must carry this
27
+ license, the Licensor's copyright notice and any Required Notice, and
28
+ must identify the changes you made. You may not remove or obscure a
29
+ notice or any licensee identification in the Software. A product built
30
+ under section 2(b) may include the SDK and the interface definitions in
31
+ compiled or bundled form without identifying changes, provided the
32
+ notices in the Software's own files are kept.
33
+
34
+ 3. What you may not do. Without a separate written license from the Licensor,
35
+ you may not:
36
+
37
+ (a) deploy the protocol contracts, or any derivative work or compiled form of
38
+ them, to any network, or operate such a deployment, other than as an
39
+ Authorised Deployment or as Non-Production Use;
40
+
41
+ (b) use the Software, its interface definitions, ABIs, schemas or
42
+ documentation to deploy, operate or interact with any implementation or
43
+ redeployment of the protocol that is not an Authorised Deployment, other
44
+ than as Non-Production Use;
45
+
46
+ (c) make Production Use of the Software or any derivative work except as
47
+ section 2(b) allows;
48
+
49
+ (d) use the Software or any derivative work to provide a Competing Product;
50
+
51
+ (e) sublicense or transfer your licenses.
52
+
53
+ 4. Patents. The Licensor grants you a license under the patent claims it can
54
+ license that your permitted use of the Software would otherwise infringe, for
55
+ that permitted use only. If you or your company make a written claim that the
56
+ Software, or a product or service of the Licensor that uses it, infringes a
57
+ patent, your patent license ends immediately.
58
+
59
+ 5. Contributions. If you submit changes or new works to the Licensor, you grant
60
+ the Licensor a perpetual, irrevocable, worldwide, royalty-free, sublicensable
61
+ license, including under any patent claims you can license, to use, modify,
62
+ distribute and relicense them under any terms, and you confirm that you have
63
+ the right to grant it.
64
+
65
+ 6. Third-party components. Third-party components included with the Software
66
+ remain under their own licenses, which are identified in the Software. These
67
+ terms do not apply to them and do not limit the rights those licenses give you.
68
+
69
+ 7. No trademark rights. These terms grant no right to use the name obolos or
70
+ any other name, mark or logo of the Licensor, except to describe the origin of
71
+ the Software accurately.
72
+
73
+ 8. Term and termination. Your licenses continue for as long as you comply with
74
+ these terms and do not expire or convert to any other license. They end
75
+ automatically if you violate these terms. The first time the Licensor notifies
76
+ you in writing of a violation, your licenses continue if you cure it within 30
77
+ days of the notice, except that a violation of section 3(a), 3(b) or 3(d) ends
78
+ your licenses for every current and later version of the Software immediately.
79
+ Termination of your licenses does not end the licenses of people who received
80
+ the Software from you in compliance with these terms.
81
+
82
+ 9. Versions and other rights. This license applies separately to each version
83
+ of the Software. The Licensor may offer later versions under different terms
84
+ and may grant anyone other licenses. All rights not expressly granted are
85
+ reserved. Nothing in these terms limits rights you have under applicable law
86
+ that cannot be limited by contract, including fair use, and where the law does
87
+ not allow these terms to restrict the use of interface information to achieve
88
+ the interoperability of an independently created program, they do not restrict
89
+ it. If any term is unenforceable, the rest remain in force. This is not an
90
+ open-source license.
91
+
92
+ 10. No warranty and no liability. The Software is provided as is, without
93
+ warranty of any kind, express or implied, including merchantability, fitness
94
+ for a particular purpose, title and non-infringement. To the extent the law
95
+ allows, the Licensor is not liable for any damages arising out of these terms
96
+ or your use of the Software, under any legal theory.
97
+
98
+ 11. Definitions.
99
+
100
+ (a) "Authorised Deployment" means an instance of the protocol contracts
101
+ deployed by the Licensor, or by another person with the Licensor's
102
+ written authorisation, at the addresses the Licensor publishes, including
103
+ in the SDK's address configuration, together with every contract created,
104
+ directly or indirectly, by such an instance.
105
+
106
+ (b) "Non-Production Use" means use for evaluation, development, testing,
107
+ security research, audit or education that, if it runs on a network, runs
108
+ only on a local, test or development network, does not create, record or
109
+ transfer rights, obligations or value for any person, and does not
110
+ provide the Software's functionality to third parties as a product or
111
+ service. Any other use is "Production Use".
112
+
113
+ (c) "Competing Product" means a product or service, whether or not offered
114
+ for a fee, that provides functionality substantially similar to the
115
+ Software or to a product or service that the Licensor or one of its
116
+ affiliates provides using the Software, regardless of interface,
117
+ platform, network or programming language. A product that provides its
118
+ functionality through Authorised Deployments is not a Competing Product.
119
+
120
+ (d) "You" means the person or entity agreeing to these terms, and "your
121
+ company" means every organisation you work for and every organisation
122
+ that controls, is controlled by, or is under common control with it.
123
+
124
+ (e) An "affiliate" of the Licensor is any organisation that controls, is
125
+ controlled by, or is under common control with it. Control means the
126
+ power to direct an organisation's management and policies, by ownership,
127
+ vote, contract or otherwise.
128
+
129
+ (f) "Distribute" includes making the Software, or any part of it, available
130
+ to third parties by any means.
131
+
132
+ Required Notice: Copyright (c) 2026 Obolos Group Incorporated. Licensed under
133
+ the obolos Source Available License 1.0, [https://obolos.io/license].
134
+ Commercial licenses: legal@obolos.io.