@go-labs-sg/bb 2.9.0 → 2.10.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/README.md CHANGED
@@ -156,6 +156,7 @@ returns its complete retained payload, which may contain personal information.
156
156
 
157
157
  ```bash
158
158
  bb inbound source list
159
+ bb inbound source create --name "Website inbound" --formId "AbCdEfGh" --allow-state-change
159
160
  bb inbound source get <source-id>
160
161
  bb inbound source update <source-id> --name "Website inbound" --allow-state-change
161
162
  bb inbound submission list --sourceId <source-id>
@@ -176,6 +177,9 @@ only after disabling the matching n8n Typeform trigger. These commands do not
176
177
  enable company, project, or QuickBooks creation.
177
178
  Use `bb inbound source get` to inspect discovered Typeform field IDs and the
178
179
  currently active mapping before saving a replacement version.
180
+ New sources are registered against an existing Typeform form ID and always start
181
+ with processing disabled in `COLLECT_ONLY`; creating a source does not call any
182
+ external provider.
179
183
 
180
184
  ### Mutation safety
181
185
 
@@ -6505,6 +6505,52 @@
6505
6505
  "effects": [],
6506
6506
  "legacyTarget": "list-inbound-sources"
6507
6507
  },
6508
+ {
6509
+ "path": ["inbound", "source", "create"],
6510
+ "legacyAliases": ["create-inbound-source", "create_inbound_source"],
6511
+ "summary": "Create Inbound Source.",
6512
+ "globalOptions": [
6513
+ {
6514
+ "name": "--help",
6515
+ "description": "Show help for this command."
6516
+ },
6517
+ {
6518
+ "name": "--quiet",
6519
+ "description": "Suppress non-error diagnostics."
6520
+ },
6521
+ {
6522
+ "name": "--debug",
6523
+ "description": "Emit sanitized diagnostic traces."
6524
+ },
6525
+ {
6526
+ "name": "--api-url",
6527
+ "description": "Override the Budget Builder API base URL."
6528
+ },
6529
+ {
6530
+ "name": "--allow-state-change",
6531
+ "description": "Allow a Budget Builder state change in non-interactive use."
6532
+ },
6533
+ {
6534
+ "name": "--allow-email",
6535
+ "description": "Allow sending email in non-interactive use."
6536
+ },
6537
+ {
6538
+ "name": "--allow-external-write",
6539
+ "description": "Allow writes to external systems in non-interactive use."
6540
+ },
6541
+ {
6542
+ "name": "--allow-delete",
6543
+ "description": "Allow deleting data in non-interactive use."
6544
+ },
6545
+ {
6546
+ "name": "--allow-financial-write",
6547
+ "description": "Allow financial-record changes in non-interactive use."
6548
+ }
6549
+ ],
6550
+ "argumentMode": "legacy-passthrough",
6551
+ "effects": ["state-change"],
6552
+ "legacyTarget": "create-inbound-source"
6553
+ },
6508
6554
  {
6509
6555
  "path": ["inbound", "source", "get"],
6510
6556
  "legacyAliases": ["get-inbound-source", "get_inbound_source"],
@@ -1136,6 +1136,14 @@ Legacy aliases: `list-inbound-sources`, `list_inbound_sources`.
1136
1136
 
1137
1137
  Effects: none.
1138
1138
 
1139
+ ## `bb inbound source create`
1140
+
1141
+ Create Inbound Source.
1142
+
1143
+ Legacy aliases: `create-inbound-source`, `create_inbound_source`.
1144
+
1145
+ Effects: state-change.
1146
+
1139
1147
  ## `bb inbound source get`
1140
1148
 
1141
1149
  Get inbound source.
package/dist/commands.js CHANGED
@@ -2101,6 +2101,10 @@ export const listInboundSources = async (input) => {
2101
2101
  const result = await api.inbound.listSources.query(input);
2102
2102
  out(result);
2103
2103
  };
2104
+ export const createInboundSource = async (input) => {
2105
+ const result = await api.inbound.createSource.mutate(input);
2106
+ out(result);
2107
+ };
2104
2108
  export const getInboundSource = async (sourceId) => {
2105
2109
  const result = await api.inbound.getSource.query({ sourceId });
2106
2110
  out(result);
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import { resolve } from "node:path";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { BUDGET_BUILDER_API_BASE_URL, configureBudgetBuilderApiBaseUrl, DEFAULT_BUDGET_BUILDER_API_BASE_URL, requireApiKey, } from "./api-client.js";
7
7
  import { consumeCliQuietFlags, logCliAction, sanitizeFlagsForTrace, setCliQuiet, shouldLogCliActions, } from "./cli-trace.js";
8
- import { addBudgetItems, approveBill, approveBudget, approveCustomerInvoice, approveQuotation, approveSupplier, archiveItemsByIds, checkCustomerInvoiceReadiness, checkProjectReconciliation, cleanupStagedBillAttachments, cleanupStagedQuotationAttachments, completeProject, createApiKeyForUser, createBillApproval, createBillFromPayload, createBudgetApproval, createBudgetCategory, createBudgetFromPayload, createCompany, createContactPersonFromPayload, createCustomerInvoice, createEstimate, createItemCategory, createItemFromPayload, createPlaceholderBillForBudgetItem, createProject, createQuotationFromPayload, createSupplierCertification, createSupplierFromPayload, createSupplierPaymentMethod, createSupplierRoleOption, createSupplierTagOption, createUser, deleteBillById, deleteBudgetById, deleteBudgetCategory, deleteBudgetCommission, deleteBudgetDiscount, deleteCompanyById, deleteCustomerInvoice, deleteItemById, deleteItemCategoriesByIds, deleteProjectById, deleteQuotationById, deleteSuppliersByIds, discardCreatingCustomerInvoice, downloadCustomerInvoicePaymentProof, downloadCustomerInvoicePdf, downloadQuotationPdf, getApprovedBudgets, getBillAttachments, getBillDetails, getBudget, getBudgetCategories, getBudgetCategoryBenchmarks, getBudgetDetails, getBudgetItemsOnly, getBudgetVersions, getCompany, getCustomerInvoice, getCustomerInvoiceEmailContext, getDashboard, getErrorMetrics, getEstimatePerformance, getFinancialOverview, getInboundSource, getInboundSubmission, getItem, getItemPricingHistory, getMonthlyMetrics, getProject, getQuotationDetails, getRecentErrors, getSupplierAnalytics, getSupplierDetails, getSupplierPricingHistory, getSystemOverview, getUserPerformance, importQuickBooksProjectId, listApiKeysForUser, listApprovals, listBills, listBudgets, listCompanies, listContacts, listCustomerInvoices, listEligibleCustomerInvoiceBudgets, listInboundSources, listInboundSubmissions, listIntegrationOperations, listItemCategories, listItems, listProjects, listQuotations, listSuppliers, listUsers, markBudgetWonWithProof, markCustomerInvoicePaidFromPath, patchBillInvoiceNumber, patchBillPayment, reactivateSuppliersByIds, reconcileProject, rejectBill, rejectBudget, rejectCustomerInvoice, rejectQuotation, rejectSupplier, removeBudgetItem, renameBudgetVersion, reorderBudgetItemsCli, restoreBudgetVersion, retryIntegrationOperation, revokeApiKeyForUser, saveInboundAutomationConfig, saveInboundMappingVersion, sendCustomerInvoiceToContactPersonFromPayload, sendEstimateToContactPersonFromPayload, setBudgetItemsNotUtilized, stageBillAttachmentsFromPaths, submitQuotation, syncCustomerInvoice, updateBillFromPayload, updateBillPaymentEvidenceFromPayload, updateBillStatus, updateBudgetCategory, updateBudgetCommissionFromPayload, updateBudgetDiscountFromPayload, updateBudgetFromPayload, updateBudgetItem, updateBudgetItemSupplierCli, updateBudgetStatus, updateCompanyFromPayload, updateContactPersonFromPayload, updateInboundProcessing, updateInboundSource, updateItemCategory, updateItemFromPayload, updateProjectFromPayload, updateProjectStatus, updateQuotationFromPayload, updateSupplierFromPayload, uploadBillAttachmentFromPath, uploadBillAttachmentsFromPaths, uploadBillDocumentsFromPaths, uploadBudgetAttachmentFromPath, uploadQuotationAttachmentFromPath, validateBillSelectionFromPayload, voidCustomerInvoice, whoAmI, } from "./commands.js";
8
+ import { addBudgetItems, approveBill, approveBudget, approveCustomerInvoice, approveQuotation, approveSupplier, archiveItemsByIds, checkCustomerInvoiceReadiness, checkProjectReconciliation, cleanupStagedBillAttachments, cleanupStagedQuotationAttachments, completeProject, createApiKeyForUser, createBillApproval, createBillFromPayload, createBudgetApproval, createBudgetCategory, createBudgetFromPayload, createCompany, createContactPersonFromPayload, createCustomerInvoice, createEstimate, createInboundSource, createItemCategory, createItemFromPayload, createPlaceholderBillForBudgetItem, createProject, createQuotationFromPayload, createSupplierCertification, createSupplierFromPayload, createSupplierPaymentMethod, createSupplierRoleOption, createSupplierTagOption, createUser, deleteBillById, deleteBudgetById, deleteBudgetCategory, deleteBudgetCommission, deleteBudgetDiscount, deleteCompanyById, deleteCustomerInvoice, deleteItemById, deleteItemCategoriesByIds, deleteProjectById, deleteQuotationById, deleteSuppliersByIds, discardCreatingCustomerInvoice, downloadCustomerInvoicePaymentProof, downloadCustomerInvoicePdf, downloadQuotationPdf, getApprovedBudgets, getBillAttachments, getBillDetails, getBudget, getBudgetCategories, getBudgetCategoryBenchmarks, getBudgetDetails, getBudgetItemsOnly, getBudgetVersions, getCompany, getCustomerInvoice, getCustomerInvoiceEmailContext, getDashboard, getErrorMetrics, getEstimatePerformance, getFinancialOverview, getInboundSource, getInboundSubmission, getItem, getItemPricingHistory, getMonthlyMetrics, getProject, getQuotationDetails, getRecentErrors, getSupplierAnalytics, getSupplierDetails, getSupplierPricingHistory, getSystemOverview, getUserPerformance, importQuickBooksProjectId, listApiKeysForUser, listApprovals, listBills, listBudgets, listCompanies, listContacts, listCustomerInvoices, listEligibleCustomerInvoiceBudgets, listInboundSources, listInboundSubmissions, listIntegrationOperations, listItemCategories, listItems, listProjects, listQuotations, listSuppliers, listUsers, markBudgetWonWithProof, markCustomerInvoicePaidFromPath, patchBillInvoiceNumber, patchBillPayment, reactivateSuppliersByIds, reconcileProject, rejectBill, rejectBudget, rejectCustomerInvoice, rejectQuotation, rejectSupplier, removeBudgetItem, renameBudgetVersion, reorderBudgetItemsCli, restoreBudgetVersion, retryIntegrationOperation, revokeApiKeyForUser, saveInboundAutomationConfig, saveInboundMappingVersion, sendCustomerInvoiceToContactPersonFromPayload, sendEstimateToContactPersonFromPayload, setBudgetItemsNotUtilized, stageBillAttachmentsFromPaths, submitQuotation, syncCustomerInvoice, updateBillFromPayload, updateBillPaymentEvidenceFromPayload, updateBillStatus, updateBudgetCategory, updateBudgetCommissionFromPayload, updateBudgetDiscountFromPayload, updateBudgetFromPayload, updateBudgetItem, updateBudgetItemSupplierCli, updateBudgetStatus, updateCompanyFromPayload, updateContactPersonFromPayload, updateInboundProcessing, updateInboundSource, updateItemCategory, updateItemFromPayload, updateProjectFromPayload, updateProjectStatus, updateQuotationFromPayload, updateSupplierFromPayload, uploadBillAttachmentFromPath, uploadBillAttachmentsFromPaths, uploadBillDocumentsFromPaths, uploadBudgetAttachmentFromPath, uploadQuotationAttachmentFromPath, validateBillSelectionFromPayload, voidCustomerInvoice, whoAmI, } from "./commands.js";
9
9
  import { getFlag, parseArgs } from "./parse-args.js";
10
10
  import { billStatusesForUpdateHelp, budgetStatusesForHelp, isBudgetStatusUpdate, parseApprovalTypeFlag, parseBillStatusForUpdate, parseCommaSeparatedBillStatuses, parseCommaSeparatedBudgetStatuses, parseCommaSeparatedCustomerInvoiceStatuses, parseCommaSeparatedIds, parseCommaSeparatedQuotationStatuses, parseCommaSeparatedSupplierStatuses, parseOptionalBillListSortBy, parseOptionalBillListSortDir, parseOptionalDashboardRole, parseOptionalDeals, parseOptionalErrorSeverity, parseOptionalErrorStatus, parseOptionalExtendedProjectStatus, parseOptionalFinancialRole, parseOptionalSupplierAnalyticsTimeFrame, parseOptionalTimeFrame, parseProjectStatusForUpdate, parseUserRole, projectStatusesForHelp, userRolesForHelp, } from "./parse-cli-enums.js";
11
11
  import { parseJsonFlag, parseOptionalNumber as parseOptNum, } from "./parse-json-flag.js";
@@ -2034,6 +2034,15 @@ export async function runCli(argv = process.argv, runtime = createProcessRuntime
2034
2034
  });
2035
2035
  break;
2036
2036
  }
2037
+ case "create-inbound-source": {
2038
+ const name = getFlag(flags, "name");
2039
+ const externalSourceId = getFlag(flags, "formId");
2040
+ if (!name || !externalSourceId) {
2041
+ throw new Error("create-inbound-source requires --name <name> --formId <Typeform form ID>");
2042
+ }
2043
+ await createInboundSource({ externalSourceId, name });
2044
+ break;
2045
+ }
2037
2046
  case "get-inbound-source": {
2038
2047
  const sourceId = positional[0];
2039
2048
  if (!sourceId)
@@ -449,6 +449,7 @@ const registry = [
449
449
  "retry",
450
450
  ]),
451
451
  legacyCommand("list-inbound-sources", ["inbound", "source", "list"]),
452
+ legacyCommand("create-inbound-source", ["inbound", "source", "create"]),
452
453
  legacyCommand("get-inbound-source", ["inbound", "source", "get"]),
453
454
  legacyCommand("update-inbound-source", ["inbound", "source", "update"]),
454
455
  legacyCommand("list-inbound-submissions", ["inbound", "submission", "list"]),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@go-labs-sg/bb",
3
- "version": "2.9.0",
3
+ "version": "2.10.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",