@go-labs-sg/bb 2.23.0 → 2.24.1
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/dist/index.js +71 -41
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -15118,7 +15118,7 @@ import { readFile, writeFile } from "fs/promises";
|
|
|
15118
15118
|
import { basename } from "path";
|
|
15119
15119
|
import { createInterface as createInterface2 } from "readline/promises";
|
|
15120
15120
|
|
|
15121
|
-
// src/prisma
|
|
15121
|
+
// ../db/src/generated/prisma/enums.ts
|
|
15122
15122
|
var EstimationMode = {
|
|
15123
15123
|
MICRO: "MICRO",
|
|
15124
15124
|
MANPOWER_SPECIFIED: "MANPOWER_SPECIFIED"
|
|
@@ -15130,21 +15130,6 @@ var ProjectStatus = {
|
|
|
15130
15130
|
RECONCILED: "RECONCILED",
|
|
15131
15131
|
LOST: "LOST"
|
|
15132
15132
|
};
|
|
15133
|
-
var SupplierQuotationStatus = {
|
|
15134
|
-
DRAFT: "DRAFT",
|
|
15135
|
-
PENDING_APPROVAL: "PENDING_APPROVAL",
|
|
15136
|
-
APPROVED: "APPROVED",
|
|
15137
|
-
REJECTED: "REJECTED",
|
|
15138
|
-
SUPERSEDED: "SUPERSEDED"
|
|
15139
|
-
};
|
|
15140
|
-
var CustomerInvoiceBatchStatus = {
|
|
15141
|
-
CREATING: "CREATING",
|
|
15142
|
-
PENDING_APPROVAL: "PENDING_APPROVAL",
|
|
15143
|
-
APPROVED: "APPROVED",
|
|
15144
|
-
REJECTED_VOIDED: "REJECTED_VOIDED",
|
|
15145
|
-
EXPIRED_VOIDED: "EXPIRED_VOIDED",
|
|
15146
|
-
PARTIAL_QBO_FAILURE: "PARTIAL_QBO_FAILURE"
|
|
15147
|
-
};
|
|
15148
15133
|
var BudgetStatus = {
|
|
15149
15134
|
DRAFT: "DRAFT",
|
|
15150
15135
|
PENDING_APPROVAL: "PENDING_APPROVAL",
|
|
@@ -15169,13 +15154,6 @@ var ApprovalType = {
|
|
|
15169
15154
|
CUSTOMER_INVOICE: "CUSTOMER_INVOICE",
|
|
15170
15155
|
QUOTATION: "QUOTATION"
|
|
15171
15156
|
};
|
|
15172
|
-
var UserRole = {
|
|
15173
|
-
USER: "USER",
|
|
15174
|
-
LEAD: "LEAD",
|
|
15175
|
-
ADMIN: "ADMIN",
|
|
15176
|
-
INSIDE_SALES: "INSIDE_SALES",
|
|
15177
|
-
ACCOUNTING_TEAM: "ACCOUNTING_TEAM"
|
|
15178
|
-
};
|
|
15179
15157
|
var ErrorSeverity = {
|
|
15180
15158
|
LOW: "LOW",
|
|
15181
15159
|
MEDIUM: "MEDIUM",
|
|
@@ -15197,7 +15175,7 @@ var BillStatus = {
|
|
|
15197
15175
|
REJECTED: "REJECTED"
|
|
15198
15176
|
};
|
|
15199
15177
|
|
|
15200
|
-
// src/filter-enums.ts
|
|
15178
|
+
// ../utils/src/filter-enums.ts
|
|
15201
15179
|
var ExtendedApprovalStatus = {
|
|
15202
15180
|
...ApprovalStatus,
|
|
15203
15181
|
ALL: "ALL"
|
|
@@ -15249,10 +15227,60 @@ var ExtendedErrorStatus = {
|
|
|
15249
15227
|
...ErrorStatus
|
|
15250
15228
|
};
|
|
15251
15229
|
|
|
15230
|
+
// src/prisma-enums.ts
|
|
15231
|
+
var ProjectStatus2 = {
|
|
15232
|
+
PITCH: "PITCH",
|
|
15233
|
+
WON: "WON",
|
|
15234
|
+
COMPLETED: "COMPLETED",
|
|
15235
|
+
RECONCILED: "RECONCILED",
|
|
15236
|
+
LOST: "LOST"
|
|
15237
|
+
};
|
|
15238
|
+
var SupplierQuotationStatus = {
|
|
15239
|
+
DRAFT: "DRAFT",
|
|
15240
|
+
PENDING_APPROVAL: "PENDING_APPROVAL",
|
|
15241
|
+
APPROVED: "APPROVED",
|
|
15242
|
+
REJECTED: "REJECTED",
|
|
15243
|
+
SUPERSEDED: "SUPERSEDED"
|
|
15244
|
+
};
|
|
15245
|
+
var CustomerInvoiceBatchStatus = {
|
|
15246
|
+
CREATING: "CREATING",
|
|
15247
|
+
PENDING_APPROVAL: "PENDING_APPROVAL",
|
|
15248
|
+
APPROVED: "APPROVED",
|
|
15249
|
+
REJECTED_VOIDED: "REJECTED_VOIDED",
|
|
15250
|
+
EXPIRED_VOIDED: "EXPIRED_VOIDED",
|
|
15251
|
+
PARTIAL_QBO_FAILURE: "PARTIAL_QBO_FAILURE"
|
|
15252
|
+
};
|
|
15253
|
+
var BudgetStatus2 = {
|
|
15254
|
+
DRAFT: "DRAFT",
|
|
15255
|
+
PENDING_APPROVAL: "PENDING_APPROVAL",
|
|
15256
|
+
APPROVED: "APPROVED",
|
|
15257
|
+
REJECTED: "REJECTED",
|
|
15258
|
+
ESTIMATE_CREATED: "ESTIMATE_CREATED",
|
|
15259
|
+
ESTIMATE_SENT: "ESTIMATE_SENT",
|
|
15260
|
+
ESTIMATE_ACCEPTED: "ESTIMATE_ACCEPTED",
|
|
15261
|
+
ESTIMATE_REJECTED: "ESTIMATE_REJECTED",
|
|
15262
|
+
ESTIMATE_CLOSED: "ESTIMATE_CLOSED"
|
|
15263
|
+
};
|
|
15264
|
+
var UserRole = {
|
|
15265
|
+
USER: "USER",
|
|
15266
|
+
LEAD: "LEAD",
|
|
15267
|
+
ADMIN: "ADMIN",
|
|
15268
|
+
INSIDE_SALES: "INSIDE_SALES",
|
|
15269
|
+
ACCOUNTING_TEAM: "ACCOUNTING_TEAM"
|
|
15270
|
+
};
|
|
15271
|
+
var BillStatus2 = {
|
|
15272
|
+
DRAFT: "DRAFT",
|
|
15273
|
+
PENDING_APPROVAL: "PENDING_APPROVAL",
|
|
15274
|
+
CHECKED: "CHECKED",
|
|
15275
|
+
APPROVED: "APPROVED",
|
|
15276
|
+
PAID: "PAID",
|
|
15277
|
+
REJECTED: "REJECTED"
|
|
15278
|
+
};
|
|
15279
|
+
|
|
15252
15280
|
// src/parse-cli-enums.ts
|
|
15253
|
-
var BUDGET_STATUS_VALUES = new Set(Object.values(
|
|
15254
|
-
var BILL_STATUS_VALUES = new Set(Object.values(
|
|
15255
|
-
var PROJECT_STATUS_VALUES = new Set(Object.values(
|
|
15281
|
+
var BUDGET_STATUS_VALUES = new Set(Object.values(BudgetStatus2));
|
|
15282
|
+
var BILL_STATUS_VALUES = new Set(Object.values(BillStatus2));
|
|
15283
|
+
var PROJECT_STATUS_VALUES = new Set(Object.values(ProjectStatus2));
|
|
15256
15284
|
var SUPPLIER_QUOTATION_STATUS_VALUES = new Set(Object.values(SupplierQuotationStatus));
|
|
15257
15285
|
var CUSTOMER_INVOICE_BATCH_STATUS_VALUES = new Set(Object.values(CustomerInvoiceBatchStatus));
|
|
15258
15286
|
var USER_ROLE_VALUES = new Set(Object.values(UserRole));
|
|
@@ -15299,7 +15327,7 @@ function parseBillStatusForUpdate(raw) {
|
|
|
15299
15327
|
if (!BILL_STATUS_VALUES.has(raw)) {
|
|
15300
15328
|
throw new Error(`Invalid bill status "${raw}". Use one of: ${[...BILL_STATUS_VALUES].join(", ")}.`);
|
|
15301
15329
|
}
|
|
15302
|
-
if (raw ===
|
|
15330
|
+
if (raw === BillStatus2.PENDING_APPROVAL) {
|
|
15303
15331
|
throw new Error("Cannot set PENDING_APPROVAL via update-bill-status. Use create-bill-approval <billId> instead.");
|
|
15304
15332
|
}
|
|
15305
15333
|
return raw;
|
|
@@ -15538,13 +15566,13 @@ function parseApprovalTypeFlag(raw) {
|
|
|
15538
15566
|
}
|
|
15539
15567
|
return u;
|
|
15540
15568
|
}
|
|
15541
|
-
var budgetStatusesForHelp = Object.values(
|
|
15542
|
-
var billStatusesForHelp = Object.values(
|
|
15543
|
-
var billStatusesForUpdateHelp = Object.values(
|
|
15544
|
-
var projectStatusesForHelp = Object.values(
|
|
15569
|
+
var budgetStatusesForHelp = Object.values(BudgetStatus2);
|
|
15570
|
+
var billStatusesForHelp = Object.values(BillStatus2);
|
|
15571
|
+
var billStatusesForUpdateHelp = Object.values(BillStatus2).filter((s) => s !== BillStatus2.PENDING_APPROVAL);
|
|
15572
|
+
var projectStatusesForHelp = Object.values(ProjectStatus2);
|
|
15545
15573
|
var userRolesForHelp = Object.values(UserRole);
|
|
15546
15574
|
|
|
15547
|
-
// src/rich-text.ts
|
|
15575
|
+
// ../utils/src/rich-text.ts
|
|
15548
15576
|
var escapeHtml = (text) => text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
15549
15577
|
var createRichTextFromPlainText = (text) => {
|
|
15550
15578
|
const lines = text?.split(/\r?\n/) ?? [];
|
|
@@ -15561,6 +15589,8 @@ var createRichTextFromPlainText = (text) => {
|
|
|
15561
15589
|
};
|
|
15562
15590
|
};
|
|
15563
15591
|
var isRichTextJson = (value) => Boolean(value && typeof value === "object" && "json" in value && "html" in value && typeof value.html === "string");
|
|
15592
|
+
|
|
15593
|
+
// src/rich-text.ts
|
|
15564
15594
|
var normalizePlainTextRichTextField = ({
|
|
15565
15595
|
input,
|
|
15566
15596
|
textField,
|
|
@@ -16500,11 +16530,11 @@ var quotationAttachmentContentTypeForFileName = (fileName) => {
|
|
|
16500
16530
|
throw new Error(`Unsupported quotation attachment type: ${fileName}. Use PDF, JPEG, or PNG.`);
|
|
16501
16531
|
};
|
|
16502
16532
|
var LOCKED_BUDGET_STATUSES_REQUIRING_CONFIRMATION = new Set([
|
|
16503
|
-
|
|
16504
|
-
|
|
16505
|
-
|
|
16506
|
-
|
|
16507
|
-
|
|
16533
|
+
BudgetStatus2.ESTIMATE_CREATED,
|
|
16534
|
+
BudgetStatus2.ESTIMATE_SENT,
|
|
16535
|
+
BudgetStatus2.ESTIMATE_ACCEPTED,
|
|
16536
|
+
BudgetStatus2.ESTIMATE_REJECTED,
|
|
16537
|
+
BudgetStatus2.ESTIMATE_CLOSED
|
|
16508
16538
|
]);
|
|
16509
16539
|
var lockedBudgetStatusLabels = {
|
|
16510
16540
|
ESTIMATE_CREATED: "Estimate Created",
|
|
@@ -16863,10 +16893,10 @@ async function createBillApproval(billId) {
|
|
|
16863
16893
|
});
|
|
16864
16894
|
}
|
|
16865
16895
|
var validateBillStatusUpdateOptions = (opts) => {
|
|
16866
|
-
if (opts.status ===
|
|
16896
|
+
if (opts.status === BillStatus2.PAID && !opts.paymentReference?.trim()) {
|
|
16867
16897
|
throw new Error("update-bill-status requires --paymentReference when status is PAID.");
|
|
16868
16898
|
}
|
|
16869
|
-
if (opts.status !==
|
|
16899
|
+
if (opts.status !== BillStatus2.PAID && opts.paymentProofPath !== undefined) {
|
|
16870
16900
|
throw new Error("--paymentProof can only be used when status is PAID.");
|
|
16871
16901
|
}
|
|
16872
16902
|
if (opts.paymentProofPath !== undefined && !opts.paymentProofPath.trim()) {
|
|
@@ -18146,7 +18176,7 @@ var reconcileProject = async (projectId) => {
|
|
|
18146
18176
|
out(result);
|
|
18147
18177
|
};
|
|
18148
18178
|
var completeProject = async (projectId) => {
|
|
18149
|
-
await updateProjectStatus(projectId,
|
|
18179
|
+
await updateProjectStatus(projectId, ProjectStatus2.COMPLETED);
|
|
18150
18180
|
};
|
|
18151
18181
|
var importQuickBooksProjectId = async (projectId, projectUrl) => {
|
|
18152
18182
|
const result = await api2.project.importQboProjectId.mutate({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@go-labs-sg/bb",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.24.1",
|
|
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",
|