@go-labs-sg/bb 2.48.0 → 3.0.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": "@go-labs-sg/bb",
3
- "version": "2.48.0",
3
+ "version": "3.0.0",
4
4
  "description": "Budget Builder CLI for AI agents — manage budgets, bills, claims, quotations, and customer invoices with explicit workflow previews for sensitive changes.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -20,7 +20,7 @@
20
20
  ],
21
21
  "dependencies": {
22
22
  "@trpc/client": "^11.19.0",
23
- "dotenv": "^18.0.6",
23
+ "dotenv": "^18.0.7",
24
24
  "mime-types": "^3.0.2",
25
25
  "superjson": "^2.2.6"
26
26
  },
@@ -17,6 +17,13 @@ Keep the returned `id`, `email`, and `role` in the working context. Before any m
17
17
 
18
18
  Never infer authority from a person's job title, email address, API-key label, or the fact that a command appears in `bb help`.
19
19
 
20
+ ## Approval revision integrity
21
+
22
+ - Generic `bb budget status update <id> APPROVED` requires a current `LEAD` or `ADMIN` role; budget management permission alone is insufficient. Ordinary users must request approval.
23
+ - Material budget edits supersede pending approvals. Inspect the changed content and request approval again instead of retrying an old approval ID. Assigned, current-role approval decisions remain required.
24
+ - Eligible `bb budget item supplier update` supplier/GST swaps follow the standard material financial-edit snapshot/reset policy; they are not an approval-preserving exception. An identical supplier is a no-op, and existing resource/supplier eligibility and estimate/email locks remain enforced.
25
+ - Quotation signing claims both the parent revision and the exact captured allocation rows. ORIGINAL/amount edits and selection changes—including budget-item deletion or budget-restore cascades that leave the parent timestamp unchanged—make the in-flight old submission or assigned final approval conflict. A failed final approval claim rolls back the assigned decision, signed attachment and email/outbox writes. Refresh and review the current content before retrying; this does not repair already-stale PDFs.
26
+
20
27
  ## How authorization is decided
21
28
 
22
29
  The Budget Builder API, not the CLI, makes the final decision. A request may need all of the following: