business-as-code 0.2.1 → 2.0.2
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/.turbo/turbo-build.log +5 -0
- package/CHANGELOG.md +17 -0
- package/IMPLEMENTATION.md +226 -0
- package/README.md +1133 -193
- package/dist/business.d.ts +62 -0
- package/dist/business.d.ts.map +1 -0
- package/dist/business.js +109 -0
- package/dist/business.js.map +1 -0
- package/dist/dollar.d.ts +60 -0
- package/dist/dollar.d.ts.map +1 -0
- package/dist/dollar.js +107 -0
- package/dist/dollar.js.map +1 -0
- package/dist/entities/assets.d.ts +21 -0
- package/dist/entities/assets.d.ts.map +1 -0
- package/dist/entities/assets.js +323 -0
- package/dist/entities/assets.js.map +1 -0
- package/dist/entities/business.d.ts +36 -0
- package/dist/entities/business.d.ts.map +1 -0
- package/dist/entities/business.js +370 -0
- package/dist/entities/business.js.map +1 -0
- package/dist/entities/communication.d.ts +21 -0
- package/dist/entities/communication.d.ts.map +1 -0
- package/dist/entities/communication.js +255 -0
- package/dist/entities/communication.js.map +1 -0
- package/dist/entities/customers.d.ts +58 -0
- package/dist/entities/customers.d.ts.map +1 -0
- package/dist/entities/customers.js +989 -0
- package/dist/entities/customers.js.map +1 -0
- package/dist/entities/financials.d.ts +59 -0
- package/dist/entities/financials.d.ts.map +1 -0
- package/dist/entities/financials.js +932 -0
- package/dist/entities/financials.js.map +1 -0
- package/dist/entities/goals.d.ts +58 -0
- package/dist/entities/goals.d.ts.map +1 -0
- package/dist/entities/goals.js +800 -0
- package/dist/entities/goals.js.map +1 -0
- package/dist/entities/index.d.ts +299 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +198 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/legal.d.ts +21 -0
- package/dist/entities/legal.d.ts.map +1 -0
- package/dist/entities/legal.js +301 -0
- package/dist/entities/legal.js.map +1 -0
- package/dist/entities/market.d.ts +21 -0
- package/dist/entities/market.d.ts.map +1 -0
- package/dist/entities/market.js +301 -0
- package/dist/entities/market.js.map +1 -0
- package/dist/entities/marketing.d.ts +67 -0
- package/dist/entities/marketing.d.ts.map +1 -0
- package/dist/entities/marketing.js +1157 -0
- package/dist/entities/marketing.js.map +1 -0
- package/dist/entities/offerings.d.ts +51 -0
- package/dist/entities/offerings.d.ts.map +1 -0
- package/dist/entities/offerings.js +727 -0
- package/dist/entities/offerings.js.map +1 -0
- package/dist/entities/operations.d.ts +58 -0
- package/dist/entities/operations.d.ts.map +1 -0
- package/dist/entities/operations.js +787 -0
- package/dist/entities/operations.js.map +1 -0
- package/dist/entities/organization.d.ts +57 -0
- package/dist/entities/organization.d.ts.map +1 -0
- package/dist/entities/organization.js +807 -0
- package/dist/entities/organization.js.map +1 -0
- package/dist/entities/partnerships.d.ts +21 -0
- package/dist/entities/partnerships.d.ts.map +1 -0
- package/dist/entities/partnerships.js +300 -0
- package/dist/entities/partnerships.js.map +1 -0
- package/dist/entities/planning.d.ts +87 -0
- package/dist/entities/planning.d.ts.map +1 -0
- package/dist/entities/planning.js +271 -0
- package/dist/entities/planning.js.map +1 -0
- package/dist/entities/projects.d.ts +25 -0
- package/dist/entities/projects.d.ts.map +1 -0
- package/dist/entities/projects.js +349 -0
- package/dist/entities/projects.js.map +1 -0
- package/dist/entities/risk.d.ts +21 -0
- package/dist/entities/risk.d.ts.map +1 -0
- package/dist/entities/risk.js +293 -0
- package/dist/entities/risk.js.map +1 -0
- package/dist/entities/sales.d.ts +72 -0
- package/dist/entities/sales.d.ts.map +1 -0
- package/dist/entities/sales.js +1248 -0
- package/dist/entities/sales.js.map +1 -0
- package/dist/financials.d.ts +130 -0
- package/dist/financials.d.ts.map +1 -0
- package/dist/financials.js +297 -0
- package/dist/financials.js.map +1 -0
- package/dist/goals.d.ts +87 -0
- package/dist/goals.d.ts.map +1 -0
- package/dist/goals.js +215 -0
- package/dist/goals.js.map +1 -0
- package/dist/index.d.ts +97 -4
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +131 -1079
- package/dist/index.js.map +1 -1
- package/dist/kpis.d.ts +118 -0
- package/dist/kpis.d.ts.map +1 -0
- package/dist/kpis.js +232 -0
- package/dist/kpis.js.map +1 -0
- package/dist/metrics.d.ts +448 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +325 -0
- package/dist/metrics.js.map +1 -0
- package/dist/okrs.d.ts +123 -0
- package/dist/okrs.d.ts.map +1 -0
- package/dist/okrs.js +269 -0
- package/dist/okrs.js.map +1 -0
- package/dist/organization.d.ts +585 -0
- package/dist/organization.d.ts.map +1 -0
- package/dist/organization.js +173 -0
- package/dist/organization.js.map +1 -0
- package/dist/process.d.ts +112 -0
- package/dist/process.d.ts.map +1 -0
- package/dist/process.js +241 -0
- package/dist/process.js.map +1 -0
- package/dist/product.d.ts +85 -0
- package/dist/product.d.ts.map +1 -0
- package/dist/product.js +145 -0
- package/dist/product.js.map +1 -0
- package/dist/queries.d.ts +304 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +415 -0
- package/dist/queries.js.map +1 -0
- package/dist/roles.d.ts +340 -0
- package/dist/roles.d.ts.map +1 -0
- package/dist/roles.js +255 -0
- package/dist/roles.js.map +1 -0
- package/dist/service.d.ts +61 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +140 -0
- package/dist/service.js.map +1 -0
- package/dist/types.d.ts +459 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/vision.d.ts +38 -0
- package/dist/vision.d.ts.map +1 -0
- package/dist/vision.js +68 -0
- package/dist/vision.js.map +1 -0
- package/dist/workflow.d.ts +115 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +247 -0
- package/dist/workflow.js.map +1 -0
- package/examples/basic-usage.ts +307 -0
- package/package.json +19 -60
- package/src/business.ts +121 -0
- package/src/dollar.ts +132 -0
- package/src/entities/assets.ts +332 -0
- package/src/entities/business.ts +406 -0
- package/src/entities/communication.ts +264 -0
- package/src/entities/customers.ts +1072 -0
- package/src/entities/financials.ts +1011 -0
- package/src/entities/goals.ts +871 -0
- package/src/entities/index.ts +383 -0
- package/src/entities/legal.ts +310 -0
- package/src/entities/market.ts +310 -0
- package/src/entities/marketing.ts +1249 -0
- package/src/entities/offerings.ts +789 -0
- package/src/entities/operations.ts +861 -0
- package/src/entities/organization.ts +876 -0
- package/src/entities/partnerships.ts +309 -0
- package/src/entities/planning.ts +307 -0
- package/src/entities/projects.ts +360 -0
- package/src/entities/risk.ts +302 -0
- package/src/entities/sales.ts +1352 -0
- package/src/financials.ts +352 -0
- package/src/goals.ts +250 -0
- package/src/index.test.ts +336 -0
- package/src/index.ts +530 -0
- package/src/kpis.ts +275 -0
- package/src/metrics.ts +825 -0
- package/src/okrs.ts +325 -0
- package/src/organization.ts +909 -0
- package/src/process.ts +272 -0
- package/src/product.ts +178 -0
- package/src/queries.ts +767 -0
- package/src/roles.ts +686 -0
- package/src/service.ts +164 -0
- package/src/types.ts +493 -0
- package/src/vision.ts +88 -0
- package/src/workflow.ts +280 -0
- package/tsconfig.json +9 -0
- package/dist/loaders/index.d.ts +0 -174
- package/dist/loaders/index.js +0 -366
- package/dist/loaders/index.js.map +0 -1
- package/dist/schema/index.d.ts +0 -146
- package/dist/schema/index.js +0 -716
- package/dist/schema/index.js.map +0 -1
- package/dist/types-CJ9eGS_C.d.ts +0 -86
package/dist/product.js
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Product definition and management
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Define a product with pricing, features, and roadmap
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const product = Product({
|
|
10
|
+
* name: 'Widget Pro',
|
|
11
|
+
* description: 'Enterprise-grade widget management platform',
|
|
12
|
+
* category: 'SaaS',
|
|
13
|
+
* targetSegment: 'Enterprise',
|
|
14
|
+
* valueProposition: 'Reduce widget management costs by 50%',
|
|
15
|
+
* pricingModel: 'subscription',
|
|
16
|
+
* price: 99,
|
|
17
|
+
* currency: 'USD',
|
|
18
|
+
* cogs: 20,
|
|
19
|
+
* features: [
|
|
20
|
+
* 'Unlimited widgets',
|
|
21
|
+
* 'Advanced analytics',
|
|
22
|
+
* 'API access',
|
|
23
|
+
* '24/7 support',
|
|
24
|
+
* ],
|
|
25
|
+
* roadmap: [
|
|
26
|
+
* {
|
|
27
|
+
* name: 'Mobile app',
|
|
28
|
+
* description: 'Native iOS and Android apps',
|
|
29
|
+
* targetDate: new Date('2024-09-01'),
|
|
30
|
+
* priority: 'high',
|
|
31
|
+
* status: 'in-progress',
|
|
32
|
+
* },
|
|
33
|
+
* {
|
|
34
|
+
* name: 'AI-powered insights',
|
|
35
|
+
* description: 'Automated widget optimization suggestions',
|
|
36
|
+
* targetDate: new Date('2024-12-01'),
|
|
37
|
+
* priority: 'high',
|
|
38
|
+
* status: 'planned',
|
|
39
|
+
* },
|
|
40
|
+
* ],
|
|
41
|
+
* })
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function Product(definition) {
|
|
45
|
+
if (!definition.name) {
|
|
46
|
+
throw new Error('Product name is required');
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
...definition,
|
|
50
|
+
pricingModel: definition.pricingModel || 'one-time',
|
|
51
|
+
currency: definition.currency || 'USD',
|
|
52
|
+
features: definition.features || [],
|
|
53
|
+
roadmap: definition.roadmap || [],
|
|
54
|
+
metadata: definition.metadata || {},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Calculate gross margin for a product
|
|
59
|
+
*/
|
|
60
|
+
export function calculateGrossMargin(product) {
|
|
61
|
+
if (!product.price || !product.cogs)
|
|
62
|
+
return 0;
|
|
63
|
+
return ((product.price - product.cogs) / product.price) * 100;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Calculate gross profit for a product
|
|
67
|
+
*/
|
|
68
|
+
export function calculateGrossProfit(product, unitsSold) {
|
|
69
|
+
if (!product.price || !product.cogs)
|
|
70
|
+
return 0;
|
|
71
|
+
return (product.price - product.cogs) * unitsSold;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get roadmap items by status
|
|
75
|
+
*/
|
|
76
|
+
export function getRoadmapByStatus(product, status) {
|
|
77
|
+
return product.roadmap?.filter(item => item.status === status) || [];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get roadmap items by priority
|
|
81
|
+
*/
|
|
82
|
+
export function getRoadmapByPriority(product, priority) {
|
|
83
|
+
return product.roadmap?.filter(item => item.priority === priority) || [];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get overdue roadmap items
|
|
87
|
+
*/
|
|
88
|
+
export function getOverdueRoadmapItems(product) {
|
|
89
|
+
const now = new Date();
|
|
90
|
+
return (product.roadmap?.filter(item => item.targetDate &&
|
|
91
|
+
item.targetDate < now &&
|
|
92
|
+
item.status !== 'completed' &&
|
|
93
|
+
item.status !== 'cancelled') || []);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Update roadmap item status
|
|
97
|
+
*/
|
|
98
|
+
export function updateRoadmapItem(product, itemName, updates) {
|
|
99
|
+
const roadmap = product.roadmap?.map(item => item.name === itemName ? { ...item, ...updates } : item);
|
|
100
|
+
return {
|
|
101
|
+
...product,
|
|
102
|
+
roadmap,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Add feature to product
|
|
107
|
+
*/
|
|
108
|
+
export function addFeature(product, feature) {
|
|
109
|
+
return {
|
|
110
|
+
...product,
|
|
111
|
+
features: [...(product.features || []), feature],
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Remove feature from product
|
|
116
|
+
*/
|
|
117
|
+
export function removeFeature(product, feature) {
|
|
118
|
+
return {
|
|
119
|
+
...product,
|
|
120
|
+
features: product.features?.filter(f => f !== feature) || [],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Validate product definition
|
|
125
|
+
*/
|
|
126
|
+
export function validateProduct(product) {
|
|
127
|
+
const errors = [];
|
|
128
|
+
if (!product.name) {
|
|
129
|
+
errors.push('Product name is required');
|
|
130
|
+
}
|
|
131
|
+
if (product.price && product.price < 0) {
|
|
132
|
+
errors.push('Product price cannot be negative');
|
|
133
|
+
}
|
|
134
|
+
if (product.cogs && product.cogs < 0) {
|
|
135
|
+
errors.push('Product COGS cannot be negative');
|
|
136
|
+
}
|
|
137
|
+
if (product.price && product.cogs && product.cogs > product.price) {
|
|
138
|
+
errors.push('Product COGS cannot exceed price');
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
valid: errors.length === 0,
|
|
142
|
+
errors,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=product.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product.js","sourceRoot":"","sources":["../src/product.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,OAAO,CAAC,UAA6B;IACnD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC7C,CAAC;IAED,OAAO;QACL,GAAG,UAAU;QACb,YAAY,EAAE,UAAU,CAAC,YAAY,IAAI,UAAU;QACnD,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,KAAK;QACtC,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,EAAE;QACnC,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE;QACjC,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,EAAE;KACpC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA0B;IAC7D,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,CAAA;IAC7C,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA0B,EAAE,SAAiB;IAChF,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,CAAA;IAC7C,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAA0B,EAC1B,MAA6B;IAE7B,OAAO,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,CAAA;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAA0B,EAC1B,QAAiC;IAEjC,OAAO,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAA;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAA0B;IAC/D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,OAAO,CACL,OAAO,CAAC,OAAO,EAAE,MAAM,CACrB,IAAI,CAAC,EAAE,CACL,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,UAAU,GAAG,GAAG;QACrB,IAAI,CAAC,MAAM,KAAK,WAAW;QAC3B,IAAI,CAAC,MAAM,KAAK,WAAW,CAC9B,IAAI,EAAE,CACR,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA0B,EAC1B,QAAgB,EAChB,OAA6B;IAE7B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAC1C,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CACxD,CAAA;IAED,OAAO;QACL,GAAG,OAAO;QACV,OAAO;KACR,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B,EAAE,OAAe;IACpE,OAAO;QACL,GAAG,OAAO;QACV,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC;KACjD,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAA0B,EAAE,OAAe;IACvE,OAAO;QACL,GAAG,OAAO;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE;KAC7D,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAA0B;IACxD,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IACjD,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;KACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live Queries & Views
|
|
3
|
+
*
|
|
4
|
+
* Query definitions for real-time analytics against ai-database (ClickHouse-backed).
|
|
5
|
+
* These are NOT batch reports - they're live, composable queries that execute
|
|
6
|
+
* in real-time against a performant OLAP database.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Time granularity for aggregations
|
|
12
|
+
*/
|
|
13
|
+
export type Granularity = 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
|
|
14
|
+
/**
|
|
15
|
+
* Aggregation function
|
|
16
|
+
*/
|
|
17
|
+
export type AggregateFunction = 'sum' | 'avg' | 'min' | 'max' | 'count' | 'countDistinct' | 'first' | 'last' | 'median' | 'p50' | 'p90' | 'p95' | 'p99' | 'stddev' | 'variance';
|
|
18
|
+
/**
|
|
19
|
+
* Comparison operator
|
|
20
|
+
*/
|
|
21
|
+
export type Operator = 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'notIn' | 'like' | 'notLike' | 'between' | 'isNull' | 'isNotNull';
|
|
22
|
+
/**
|
|
23
|
+
* Sort direction
|
|
24
|
+
*/
|
|
25
|
+
export type SortDirection = 'asc' | 'desc';
|
|
26
|
+
/**
|
|
27
|
+
* Dimension - categorical attribute for grouping/filtering
|
|
28
|
+
*/
|
|
29
|
+
export interface Dimension {
|
|
30
|
+
name: string;
|
|
31
|
+
field: string;
|
|
32
|
+
type: 'string' | 'number' | 'date' | 'boolean';
|
|
33
|
+
description?: string;
|
|
34
|
+
granularity?: Granularity;
|
|
35
|
+
format?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Measure - numeric value to aggregate
|
|
39
|
+
*/
|
|
40
|
+
export interface Measure {
|
|
41
|
+
name: string;
|
|
42
|
+
field: string;
|
|
43
|
+
aggregate: AggregateFunction;
|
|
44
|
+
type?: 'number' | 'currency' | 'percent';
|
|
45
|
+
description?: string;
|
|
46
|
+
format?: string;
|
|
47
|
+
currency?: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Calculated measure - derived from other measures
|
|
51
|
+
*/
|
|
52
|
+
export interface CalculatedMeasure {
|
|
53
|
+
name: string;
|
|
54
|
+
expression: string;
|
|
55
|
+
measures: string[];
|
|
56
|
+
type?: 'number' | 'currency' | 'percent';
|
|
57
|
+
description?: string;
|
|
58
|
+
format?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Filter condition
|
|
62
|
+
*/
|
|
63
|
+
export interface Filter {
|
|
64
|
+
field: string;
|
|
65
|
+
operator: Operator;
|
|
66
|
+
value: unknown;
|
|
67
|
+
and?: Filter[];
|
|
68
|
+
or?: Filter[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Sort specification
|
|
72
|
+
*/
|
|
73
|
+
export interface Sort {
|
|
74
|
+
field: string;
|
|
75
|
+
direction: SortDirection;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Time range filter
|
|
79
|
+
*/
|
|
80
|
+
export interface TimeRange {
|
|
81
|
+
field: string;
|
|
82
|
+
start?: Date | string;
|
|
83
|
+
end?: Date | string;
|
|
84
|
+
granularity?: Granularity;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Query definition - a composable, reusable query
|
|
88
|
+
*/
|
|
89
|
+
export interface Query {
|
|
90
|
+
name: string;
|
|
91
|
+
description?: string;
|
|
92
|
+
source: string;
|
|
93
|
+
dimensions?: string[];
|
|
94
|
+
measures?: string[];
|
|
95
|
+
filters?: Filter[];
|
|
96
|
+
timeRange?: TimeRange;
|
|
97
|
+
sort?: Sort[];
|
|
98
|
+
limit?: number;
|
|
99
|
+
offset?: number;
|
|
100
|
+
tags?: string[];
|
|
101
|
+
owner?: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Query with resolved schema
|
|
105
|
+
*/
|
|
106
|
+
export interface ResolvedQuery extends Query {
|
|
107
|
+
resolvedDimensions: Dimension[];
|
|
108
|
+
resolvedMeasures: (Measure | CalculatedMeasure)[];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* View - a saved query with optional materialization
|
|
112
|
+
*/
|
|
113
|
+
export interface View {
|
|
114
|
+
name: string;
|
|
115
|
+
description?: string;
|
|
116
|
+
query: Query;
|
|
117
|
+
materialized?: boolean;
|
|
118
|
+
refreshInterval?: string;
|
|
119
|
+
retention?: string;
|
|
120
|
+
public?: boolean;
|
|
121
|
+
owner?: string;
|
|
122
|
+
tags?: string[];
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Dashboard - collection of related views
|
|
126
|
+
*/
|
|
127
|
+
export interface Dashboard {
|
|
128
|
+
name: string;
|
|
129
|
+
description?: string;
|
|
130
|
+
views: View[];
|
|
131
|
+
layout?: DashboardLayout;
|
|
132
|
+
refreshInterval?: string;
|
|
133
|
+
owner?: string;
|
|
134
|
+
tags?: string[];
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Dashboard layout
|
|
138
|
+
*/
|
|
139
|
+
export interface DashboardLayout {
|
|
140
|
+
columns: number;
|
|
141
|
+
rows: number;
|
|
142
|
+
items: DashboardItem[];
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Dashboard item position
|
|
146
|
+
*/
|
|
147
|
+
export interface DashboardItem {
|
|
148
|
+
viewName: string;
|
|
149
|
+
x: number;
|
|
150
|
+
y: number;
|
|
151
|
+
width: number;
|
|
152
|
+
height: number;
|
|
153
|
+
visualization?: Visualization;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Visualization type
|
|
157
|
+
*/
|
|
158
|
+
export type Visualization = 'number' | 'trend' | 'table' | 'bar' | 'line' | 'area' | 'pie' | 'funnel' | 'cohort' | 'heatmap';
|
|
159
|
+
/**
|
|
160
|
+
* Standard SaaS metric dimensions
|
|
161
|
+
*/
|
|
162
|
+
export declare const StandardDimensions: Record<string, Dimension>;
|
|
163
|
+
/**
|
|
164
|
+
* Standard SaaS metric measures
|
|
165
|
+
*/
|
|
166
|
+
export declare const StandardMeasures: Record<string, Measure>;
|
|
167
|
+
/**
|
|
168
|
+
* Calculated SaaS metrics
|
|
169
|
+
*/
|
|
170
|
+
export declare const CalculatedMetrics: Record<string, CalculatedMeasure>;
|
|
171
|
+
/**
|
|
172
|
+
* Create a query
|
|
173
|
+
*/
|
|
174
|
+
export declare function query(name: string, source: string): QueryBuilder;
|
|
175
|
+
/**
|
|
176
|
+
* Fluent query builder
|
|
177
|
+
*/
|
|
178
|
+
export declare class QueryBuilder {
|
|
179
|
+
private _query;
|
|
180
|
+
constructor(name: string, source: string);
|
|
181
|
+
describe(description: string): this;
|
|
182
|
+
dimensions(...dims: string[]): this;
|
|
183
|
+
measures(...measures: string[]): this;
|
|
184
|
+
filter(field: string, operator: Operator, value: unknown): this;
|
|
185
|
+
where(filters: Filter[]): this;
|
|
186
|
+
timeRange(field: string, start?: Date | string, end?: Date | string, granularity?: Granularity): this;
|
|
187
|
+
last(duration: string, field?: string): this;
|
|
188
|
+
sort(field: string, direction?: SortDirection): this;
|
|
189
|
+
limit(n: number): this;
|
|
190
|
+
offset(n: number): this;
|
|
191
|
+
tags(...tags: string[]): this;
|
|
192
|
+
owner(owner: string): this;
|
|
193
|
+
build(): Query;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* MRR Overview query
|
|
197
|
+
*/
|
|
198
|
+
export declare const MrrOverview: Query;
|
|
199
|
+
/**
|
|
200
|
+
* ARR by segment query
|
|
201
|
+
*/
|
|
202
|
+
export declare const ArrBySegment: Query;
|
|
203
|
+
/**
|
|
204
|
+
* Customer cohort retention query
|
|
205
|
+
*/
|
|
206
|
+
export declare const CohortRetention: Query;
|
|
207
|
+
/**
|
|
208
|
+
* Unit economics query
|
|
209
|
+
*/
|
|
210
|
+
export declare const UnitEconomics: Query;
|
|
211
|
+
/**
|
|
212
|
+
* Revenue by channel query
|
|
213
|
+
*/
|
|
214
|
+
export declare const RevenueByChannel: Query;
|
|
215
|
+
/**
|
|
216
|
+
* Growth metrics query
|
|
217
|
+
*/
|
|
218
|
+
export declare const GrowthMetrics: Query;
|
|
219
|
+
/**
|
|
220
|
+
* Create a view from a query
|
|
221
|
+
*/
|
|
222
|
+
export declare function view(name: string, queryDef: Query): ViewBuilder;
|
|
223
|
+
/**
|
|
224
|
+
* Fluent view builder
|
|
225
|
+
*/
|
|
226
|
+
export declare class ViewBuilder {
|
|
227
|
+
private _view;
|
|
228
|
+
constructor(name: string, queryDef: Query);
|
|
229
|
+
describe(description: string): this;
|
|
230
|
+
materialize(refreshInterval?: string, retention?: string): this;
|
|
231
|
+
public(): this;
|
|
232
|
+
owner(owner: string): this;
|
|
233
|
+
tags(...tags: string[]): this;
|
|
234
|
+
build(): View;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Create a dashboard
|
|
238
|
+
*/
|
|
239
|
+
export declare function dashboard(name: string): DashboardBuilder;
|
|
240
|
+
/**
|
|
241
|
+
* Fluent dashboard builder
|
|
242
|
+
*/
|
|
243
|
+
export declare class DashboardBuilder {
|
|
244
|
+
private _dashboard;
|
|
245
|
+
constructor(name: string);
|
|
246
|
+
describe(description: string): this;
|
|
247
|
+
add(viewDef: View, options?: {
|
|
248
|
+
x?: number;
|
|
249
|
+
y?: number;
|
|
250
|
+
width?: number;
|
|
251
|
+
height?: number;
|
|
252
|
+
visualization?: Visualization;
|
|
253
|
+
}): this;
|
|
254
|
+
layout(columns: number, rows: number): this;
|
|
255
|
+
refresh(interval: string): this;
|
|
256
|
+
owner(owner: string): this;
|
|
257
|
+
tags(...tags: string[]): this;
|
|
258
|
+
build(): Dashboard;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Executive SaaS Dashboard
|
|
262
|
+
*/
|
|
263
|
+
export declare const ExecutiveDashboard: Dashboard;
|
|
264
|
+
/**
|
|
265
|
+
* Query result row
|
|
266
|
+
*/
|
|
267
|
+
export type QueryRow = Record<string, unknown>;
|
|
268
|
+
/**
|
|
269
|
+
* Query result
|
|
270
|
+
*/
|
|
271
|
+
export interface QueryResult {
|
|
272
|
+
query: Query;
|
|
273
|
+
rows: QueryRow[];
|
|
274
|
+
rowCount: number;
|
|
275
|
+
executionTimeMs: number;
|
|
276
|
+
cached?: boolean;
|
|
277
|
+
metadata?: Record<string, unknown>;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Query executor interface (implemented by ai-database)
|
|
281
|
+
*/
|
|
282
|
+
export interface QueryExecutor {
|
|
283
|
+
execute(query: Query): Promise<QueryResult>;
|
|
284
|
+
explain(query: Query): Promise<string>;
|
|
285
|
+
validate(query: Query): Promise<{
|
|
286
|
+
valid: boolean;
|
|
287
|
+
errors?: string[];
|
|
288
|
+
}>;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Streaming query result
|
|
292
|
+
*/
|
|
293
|
+
export interface StreamingQueryResult {
|
|
294
|
+
query: Query;
|
|
295
|
+
stream: AsyncIterable<QueryRow>;
|
|
296
|
+
cancel: () => void;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Streaming query executor interface
|
|
300
|
+
*/
|
|
301
|
+
export interface StreamingQueryExecutor extends QueryExecutor {
|
|
302
|
+
stream(query: Query): StreamingQueryResult;
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"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"}
|