business-as-code
Version:
Primitives for expressing business logic and processes as code
561 lines (512 loc) • 11.5 kB
text/typescript
/**
* business-as-code - Primitives for expressing business logic and processes as code
*
* This package provides primitives for defining business entities, goals, products,
* services, processes, workflows, KPIs, OKRs, and financial metrics.
*
* @example
* ```ts
* import { Business, Product, Goals, kpis, okrs, financials, $ } from 'business-as-code'
*
* // Define your business
* const company = Business({
* name: 'Acme Corp',
* mission: 'To make widgets accessible to everyone',
* values: ['Innovation', 'Customer Focus', 'Integrity'],
* })
*
* // Define products
* const product = Product({
* name: 'Widget Pro',
* pricingModel: 'subscription',
* price: 99,
* cogs: 20,
* })
*
* // Define goals
* const goals = Goals([
* {
* name: 'Launch MVP',
* category: 'strategic',
* status: 'in-progress',
* progress: 65,
* },
* ])
*
* // Track KPIs
* const kpiList = kpis([
* {
* name: 'Monthly Recurring Revenue',
* category: 'financial',
* target: 100000,
* current: 85000,
* },
* ])
*
* // Define OKRs
* const okrList = okrs([
* {
* objective: 'Achieve Product-Market Fit',
* keyResults: [
* {
* description: 'Increase NPS',
* metric: 'NPS',
* targetValue: 60,
* currentValue: 52,
* },
* ],
* },
* ])
*
* // Calculate financials
* const metrics = financials({
* revenue: 1000000,
* cogs: 300000,
* operatingExpenses: 500000,
* })
*
* // Use $ helper for calculations
* console.log($.format(1234.56)) // "$1,234.56"
* console.log($.growth(120, 100)) // 20
* console.log($.margin(100, 60)) // 40
* ```
*
* @packageDocumentation
*/
// Export all types
export type {
Currency,
TimePeriod,
BusinessDefinition,
OrganizationalStructure,
Department,
Team,
VisionDefinition,
GoalDefinition,
ProductDefinition,
ServiceDefinition,
RoadmapItem,
ServiceLevelAgreement,
ProcessDefinition,
ProcessStep,
ProcessMetric,
WorkflowDefinition,
WorkflowAction,
WorkflowTrigger,
KPIDefinition,
OKRDefinition,
KeyResult,
FinancialMetrics,
FinancialStatement,
BusinessContext,
BusinessOperations,
} from './types.js'
// Export business entity functions
export {
Business,
getTotalBudget,
getTotalTeamSize,
getDepartment,
getTeam,
validateBusiness,
} from './business.js'
// Export vision functions
export { Vision, checkIndicator, calculateProgress, validateVision } from './vision.js'
// Export goal functions
export {
Goals,
Goal,
updateProgress,
markAtRisk,
complete,
isOverdue,
getGoalsByCategory,
getGoalsByStatus,
getGoalsByOwner,
calculateOverallProgress,
hasCircularDependencies,
sortByDependencies,
validateGoals,
// org.ai conversions
toOrgGoal,
fromOrgGoal,
} from './goals.js'
// Re-export org.ai goal types
export type {
OrgGoal,
OrgGoals,
GoalStatus,
GoalCategory,
GoalPriority,
// Aliased versions for backward compatibility
GoalStatus as OrgGoalStatus,
GoalCategory as OrgGoalCategory,
GoalPriority as OrgGoalPriority,
} from './goals.js'
// Export product functions
export {
Product,
calculateGrossMargin,
calculateGrossProfit,
getRoadmapByStatus,
getRoadmapByPriority,
getOverdueRoadmapItems,
updateRoadmapItem,
addFeature,
removeFeature,
validateProduct,
} from './product.js'
// Export service functions
export {
Service,
calculateHourlyPrice,
calculateMonthlyRetainer,
checkSLAUptime,
parseDeliveryTimeToDays,
estimateCompletionDate,
calculateValueBasedPrice,
validateService,
} from './service.js'
// Export process functions
export {
Process,
getStepsInOrder,
getStepsByAutomationLevel,
calculateTotalDuration,
formatDuration,
calculateAutomationPercentage,
getMetric,
meetsTarget,
calculateMetricAchievement,
updateMetric,
addStep,
removeStep,
validateProcess,
} from './process.js'
// Export workflow functions
export {
Workflow,
getActionsInOrder,
getActionsByType,
getConditionalActions,
addAction,
removeAction,
updateAction,
isEventTrigger,
isScheduleTrigger,
isWebhookTrigger,
parseWaitDuration,
evaluateCondition,
fillTemplate,
validateWorkflow,
} from './workflow.js'
// Export KPI functions
export {
kpis,
kpi,
calculateAchievement,
meetsTarget as kpiMeetsTarget,
updateCurrent,
updateTarget,
getKPIsByCategory,
getKPIsByFrequency,
getKPIsOnTarget,
getKPIsOffTarget,
calculateHealthScore,
groupByCategory,
calculateVariance,
calculateVariancePercentage,
formatValue,
comparePerformance,
validateKPIs,
// org.ai conversions
toOrgKPI,
fromOrgKPI,
} from './kpis.js'
// Re-export org.ai KPI types
export type { OrgKPI, KPICategory, KPITrend, KPIFrequency, KPIHistoryEntry } from './kpis.js'
// Export OKR functions
export {
okrs,
okr,
calculateKeyResultProgress,
calculateOKRProgress,
calculateConfidence,
updateKeyResult,
isKeyResultOnTrack,
isOKROnTrack,
getKeyResultsOnTrack,
getKeyResultsAtRisk,
getOKRsByOwner,
getOKRsByPeriod,
getOKRsByStatus,
calculateSuccessRate,
formatKeyResult,
compareOKRPerformance,
validateOKRs,
// org.ai conversions
toOrgOKR,
fromOrgOKR,
toOrgKeyResult,
fromOrgKeyResult,
} from './okrs.js'
// Re-export org.ai OKR types
export type { OrgOKR, OrgKeyResult, OKRStatus, KeyResultStatus } from './okrs.js'
// Export financial functions
export {
financials,
calculateGrossMargin as calculateFinancialGrossMargin,
calculateOperatingMargin,
calculateNetMargin,
calculateEBITDAMargin,
calculateBurnRate,
calculateRunway,
calculateCAC,
calculateLTV,
calculateLTVtoCAC,
calculatePaybackPeriod,
calculateARR,
calculateMRR,
calculateGrowthRate,
calculateCAGR,
calculateROI,
calculateROE,
calculateROA,
calculateQuickRatio,
calculateCurrentRatio,
calculateDebtToEquity,
formatCurrency,
createStatement,
getLineItem,
compareMetrics,
validateFinancials,
} from './financials.js'
// Export $ helper and context management
export { $, createBusinessOperations, updateContext, getContext, resetContext } from './dollar.js'
// Export SaaS metrics
export type {
// Time types
DateRange,
MetricPeriod,
DataPoint,
TimeSeries,
// Revenue metrics
MRR,
ARR,
NRR,
GRR,
ARPU,
RevenueSegment,
// Customer metrics
CAC,
LTV,
LTVtoCAC,
Churn,
RetentionCohort,
// Growth metrics
GrowthRate,
QuickRatio,
// Efficiency metrics
MagicNumber,
BurnMultiple,
RuleOf40,
EfficiencyScore,
// Pipeline & Sales
Pipeline,
PipelineStage,
SalesVelocity,
// Operational
NPS,
CustomerHealth,
HealthFactor,
// Comprehensive
SaaSMetrics,
} from './metrics.js'
export {
// SaaS Metric Calculation functions (produce structured SaaS metric objects)
calculateMRR as calculateMRRMetric,
calculateARRFromMRR as calculateARRMetric,
calculateNRR as calculateNRRMetric,
calculateGRR as calculateGRRMetric,
calculateCACMetric,
calculateLTVMetric,
calculateLTVtoCACRatio,
calculateQuickRatioMetric,
calculateMagicNumberMetric,
calculateBurnMultipleMetric,
calculateRuleOf40Metric,
calculateGrowthRates,
calculateChurnMetrics,
// Time-series aggregation
aggregateTimeSeries,
createMetricPeriod,
} from './metrics.js'
// Export live queries & views (ai-database / ClickHouse integration)
export type {
// Core types
Granularity,
AggregateFunction,
Operator,
SortDirection,
// OLAP primitives
Dimension,
Measure,
CalculatedMeasure,
// Query building
Filter,
Sort,
TimeRange,
Query,
ResolvedQuery,
// Views & Dashboards
View,
Dashboard,
DashboardLayout,
DashboardItem,
Visualization,
// Execution
QueryRow,
QueryResult,
QueryExecutor,
StreamingQueryResult,
StreamingQueryExecutor,
} from './queries.js'
export {
// Standard definitions
StandardDimensions,
StandardMeasures,
CalculatedMetrics,
// Builders
query,
QueryBuilder,
view,
ViewBuilder,
dashboard,
DashboardBuilder,
// Pre-built queries
MrrOverview,
ArrBySegment,
CohortRetention,
UnitEconomics,
RevenueByChannel,
GrowthMetrics,
// Pre-built dashboards
ExecutiveDashboard,
} from './queries.js'
// Export roles (bridges digital-workers and ai-database authorization)
export type {
BusinessRoleType,
BusinessRole,
TaskStatus,
TaskPriority,
TaskAssignment,
AssigneeRef,
TaskRoutingRule,
WorkflowRole,
// Re-exported from org.ai and digital-workers
OrgRole,
OrgRoleType,
RoleWorkerType,
} from './roles.js'
// Re-export Worker types from digital-workers via roles.ts
export type { Worker, WorkerRef } from './roles.js'
export {
StandardBusinessRoles,
createBusinessRole,
hasPermission,
canHandleTask,
canApproveRequest,
canDelegateTask,
findRoleForTask,
createTaskAssignment,
transitionTaskStatus,
// Conversion helpers
workerRefToAssignee,
assigneeToWorkerRef,
} from './roles.js'
// Export organization (full hierarchy to FGA/RBAC)
export type {
Organization,
OrganizationSettings,
Address,
Department as OrgDepartment,
Team as OrgTeam,
TeamResources,
TeamChannels,
Position,
PositionRef,
Compensation,
Budget,
ResourceHierarchy,
ResourceHierarchyNode,
ApprovalChain,
ApprovalLevel,
ApproverSpec,
EscalationRule,
ResolvedPermissions,
} from './organization.js'
export { resolvePermissions, getApprovalChainForRequest, findManager } from './organization.js'
// =============================================================================
// Entity Definitions (Noun pattern with Properties, Actions, Events)
// =============================================================================
export {
// Business
Business as BusinessEntity,
Vision as VisionEntity,
Value as ValueEntity,
BusinessEntities,
BusinessCategories,
// Organization
Organization as OrganizationEntity,
Department as DepartmentEntity,
Team as TeamEntity,
Position as PositionEntity,
Role as RoleEntity,
Worker as WorkerEntity,
OrganizationEntities,
OrganizationCategories,
// Goals
Goal as GoalEntity,
OKR as OKREntity,
KeyResult as KeyResultEntity,
KPI as KPIEntity,
Metric as MetricEntity,
Initiative as InitiativeEntity,
GoalEntities,
GoalCategories,
// Offerings
Product as ProductEntity,
Service as ServiceEntity,
Feature as FeatureEntity,
PricingPlan as PricingPlanEntity,
RoadmapItem as RoadmapItemEntity,
OfferingEntities,
OfferingCategories,
// Operations
Process as ProcessEntity,
ProcessStep as ProcessStepEntity,
Workflow as WorkflowEntity,
WorkflowAction as WorkflowActionEntity,
WorkflowRun as WorkflowRunEntity,
Policy as PolicyEntity,
OperationsEntities,
OperationsCategories,
// Financials
Budget as BudgetEntity,
Revenue as RevenueEntity,
Expense as ExpenseEntity,
Investment as InvestmentEntity,
FinancialPeriod as FinancialPeriodEntity,
Forecast as ForecastEntity,
FinancialEntities,
FinancialCategories,
// All
AllBusinessEntities,
BusinessEntityCategories,
Entities,
type BusinessEntityCategory,
} from './entities/index.js'
// =============================================================================
// Business Model Canvas (TODO: implement canvas module)
// =============================================================================
// Canvas functionality is planned but not yet implemented