@agentsean/hosted 1.0.4 → 1.0.5
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/entitlements.d.ts +1 -1
- package/dist/entitlements.d.ts.map +1 -1
- package/dist/entitlements.js +8 -0
- package/dist/entitlements.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/plans.d.ts +28 -3
- package/dist/plans.d.ts.map +1 -1
- package/dist/plans.js +59 -41
- package/dist/plans.js.map +1 -1
- package/package.json +3 -3
package/dist/entitlements.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Plan, type PlanId } from "./plans.js";
|
|
2
|
-
export type EntitlementFeature = "aiVisibility" | "hostedOauth" | "whiteLabel" | "apiAccess" | "priorityQueue" | "clientSeats" | "bulkOps" | "dailyRanks";
|
|
2
|
+
export type EntitlementFeature = "aiVisibility" | "hostedOauth" | "whiteLabel" | "apiAccess" | "priorityQueue" | "clientSeats" | "bulkOps" | "dailyRanks" | "advancedAnalytics" | "sso" | "auditExport" | "sla";
|
|
3
3
|
export declare class EntitlementError extends Error {
|
|
4
4
|
readonly name = "EntitlementError";
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entitlements.d.ts","sourceRoot":"","sources":["../src/entitlements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,aAAa,GACb,YAAY,GACZ,WAAW,GACX,eAAe,GACf,aAAa,GACb,SAAS,GACT,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"entitlements.d.ts","sourceRoot":"","sources":["../src/entitlements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,aAAa,GACb,YAAY,GACZ,WAAW,GACX,eAAe,GACf,aAAa,GACb,SAAS,GACT,YAAY,GACZ,mBAAmB,GACnB,KAAK,GACL,aAAa,GACb,KAAK,CAAC;AAEV,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAkB,IAAI,sBAAsB;CAC7C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CA2B3E;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,OAAO,EAAE,kBAAkB,GAC1B,IAAI,CAKN"}
|
package/dist/entitlements.js
CHANGED
|
@@ -12,6 +12,14 @@ export function hasFeature(plan, feature) {
|
|
|
12
12
|
return plan.whiteLabel;
|
|
13
13
|
case "apiAccess":
|
|
14
14
|
return plan.apiAccess;
|
|
15
|
+
case "advancedAnalytics":
|
|
16
|
+
return plan.advancedAnalytics;
|
|
17
|
+
case "sso":
|
|
18
|
+
return plan.sso;
|
|
19
|
+
case "auditExport":
|
|
20
|
+
return plan.auditExport;
|
|
21
|
+
case "sla":
|
|
22
|
+
return plan.sla;
|
|
15
23
|
case "priorityQueue":
|
|
16
24
|
return plan.priorityQueue;
|
|
17
25
|
case "clientSeats":
|
package/dist/entitlements.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entitlements.js","sourceRoot":"","sources":["../src/entitlements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAA0B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"entitlements.js","sourceRoot":"","sources":["../src/entitlements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAA0B,MAAM,YAAY,CAAC;AAgB1E,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACvB,IAAI,GAAG,kBAAkB,CAAC;CAC7C;AAED,MAAM,UAAU,UAAU,CAAC,IAAU,EAAE,OAA2B;IAChE,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,cAAc;YACjB,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,KAAK,YAAY;YACf,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,KAAK,mBAAmB;YACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,KAAK,eAAe;YAClB,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,KAAK,YAAY;YACf,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAuB,EACvB,OAA2B;IAE3B,IAAI,CAAC,YAAY,EAAE;QAAE,OAAO;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;QAAE,OAAO;IACtC,MAAM,IAAI,gBAAgB,CAAC,GAAG,IAAI,CAAC,IAAI,qBAAqB,OAAO,GAAG,CAAC,CAAC;AAC1E,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { loadEe, setEeForTesting, verifyBillingSignature, type EeModule } from "./ee.js";
|
|
2
|
-
export { PLAN_IDS, PLANS, NON_LLM_COGS_USD, BYOK_REQUIRED, isPlanId, planOf, grossMargin, isHostedMode, type PlanId, type Plan, type RankCadence, } from "./plans.js";
|
|
1
|
+
export { loadEe, setEeForTesting, verifyBillingSignature, type EeModule, } from "./ee.js";
|
|
2
|
+
export { PLAN_IDS, PLANS, NON_LLM_COGS_USD, BYOK_REQUIRED, isPlanId, planOf, grossMargin, isHostedMode, type PlanId, type Plan, type RankCadence, monthlyPriceUsd, type Billing, } from "./plans.js";
|
|
3
3
|
export { EnvelopeError, masterKeyFromEnv, encryptSecret, decryptSecret, loadOrCreateDek, } from "./envelope.js";
|
|
4
4
|
export { JOBS_PER_MIN, CONCURRENT_JOBS, CRAWL_PAGES_PER_DAY, NeighbourLimitError, allowTenantJob, allowTenantCrawlPages, acquireConcurrency, releaseConcurrency, } from "./neighbour.js";
|
|
5
5
|
export { CMS_WRITE_KINDS, HostedCredentialError, isCmsWriteKind, refuseHostedCmsCredential, createConnectorPairing, activateConnector, listConnectors, } from "./connector.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,eAAe,EACf,sBAAsB,EACtB,KAAK,QAAQ,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,QAAQ,EACR,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,MAAM,EACN,WAAW,EACX,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,eAAe,EACf,KAAK,OAAO,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,eAAe,EACf,aAAa,EACb,eAAe,EACf,eAAe,EACf,UAAU,EACV,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { loadEe, setEeForTesting, verifyBillingSignature } from "./ee.js";
|
|
2
|
-
export { PLAN_IDS, PLANS, NON_LLM_COGS_USD, BYOK_REQUIRED, isPlanId, planOf, grossMargin, isHostedMode, } from "./plans.js";
|
|
1
|
+
export { loadEe, setEeForTesting, verifyBillingSignature, } from "./ee.js";
|
|
2
|
+
export { PLAN_IDS, PLANS, NON_LLM_COGS_USD, BYOK_REQUIRED, isPlanId, planOf, grossMargin, isHostedMode, monthlyPriceUsd, } from "./plans.js";
|
|
3
3
|
export { EnvelopeError, masterKeyFromEnv, encryptSecret, decryptSecret, loadOrCreateDek, } from "./envelope.js";
|
|
4
4
|
export { JOBS_PER_MIN, CONCURRENT_JOBS, CRAWL_PAGES_PER_DAY, NeighbourLimitError, allowTenantJob, allowTenantCrawlPages, acquireConcurrency, releaseConcurrency, } from "./neighbour.js";
|
|
5
5
|
export { CMS_WRITE_KINDS, HostedCredentialError, isCmsWriteKind, refuseHostedCmsCredential, createConnectorPairing, activateConnector, listConnectors, } from "./connector.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,eAAe,EACf,sBAAsB,GAEvB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,QAAQ,EACR,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,MAAM,EACN,WAAW,EACX,YAAY,EAIZ,eAAe,GAEhB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,eAAe,EACf,aAAa,EACb,eAAe,EACf,eAAe,EACf,UAAU,EACV,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,GAGlB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAmB,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAiB,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,iBAAiB,GAElB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/plans.d.ts
CHANGED
|
@@ -1,15 +1,32 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Packaging.
|
|
3
|
+
*
|
|
4
|
+
* Four tiers, deliberately. The earlier ladder ran Starter $9 → Pro $29 →
|
|
5
|
+
* Business $79 → Agency $249, which made a buyer read four feature matrices to
|
|
6
|
+
* work out which box they were in, and made every one of those boxes a place to
|
|
7
|
+
* argue about a missing feature. It collapses to: run it yourself, run one
|
|
8
|
+
* site, run a team, or call us.
|
|
9
|
+
*
|
|
10
|
+
* Team is priced **per seat**, not per site. Per-site pricing punishes the
|
|
11
|
+
* agency that adds a small client; per-seat scales with the value the customer
|
|
12
|
+
* actually gets — more people looking at the same estate.
|
|
13
|
+
*/
|
|
14
|
+
export declare const PLAN_IDS: readonly ["self_host", "cloud_starter", "team", "enterprise"];
|
|
3
15
|
export type PlanId = (typeof PLAN_IDS)[number];
|
|
4
16
|
export type RankCadence = "weekly" | "daily";
|
|
17
|
+
/** Fixed monthly price, or per-seat billing where `seats` is the multiplier. */
|
|
18
|
+
export type Billing = "free" | "flat" | "per_seat" | "quote";
|
|
5
19
|
export type Plan = {
|
|
6
20
|
id: PlanId;
|
|
7
21
|
name: string;
|
|
22
|
+
/** Flat monthly price, or the per-seat price when `billing` is per_seat. */
|
|
8
23
|
priceUsdMonth: number;
|
|
24
|
+
billing: Billing;
|
|
9
25
|
sites: number;
|
|
10
26
|
ranks: RankCadence;
|
|
11
27
|
aiVisibility: boolean;
|
|
12
28
|
articlesMetered: boolean;
|
|
29
|
+
/** Included seats. Team bills each additional seat at priceUsdMonth. */
|
|
13
30
|
seats: number;
|
|
14
31
|
whiteLabel: boolean;
|
|
15
32
|
apiAccess: boolean;
|
|
@@ -17,13 +34,21 @@ export type Plan = {
|
|
|
17
34
|
priorityQueue: boolean;
|
|
18
35
|
clientSeats: boolean;
|
|
19
36
|
bulkOps: boolean;
|
|
37
|
+
/** Deeper reporting: cohorts, experiments, per-template attribution. */
|
|
38
|
+
advancedAnalytics: boolean;
|
|
39
|
+
/** SSO/SAML/SCIM, audit export, SLA. Enterprise only. */
|
|
40
|
+
sso: boolean;
|
|
41
|
+
auditExport: boolean;
|
|
42
|
+
sla: boolean;
|
|
20
43
|
};
|
|
21
44
|
export declare const PLANS: Record<PlanId, Plan>;
|
|
22
|
-
/** Non-LLM COGS at BYOK. PLAN: $2.29/tenant/month
|
|
45
|
+
/** Non-LLM COGS at BYOK. PLAN: $2.29/tenant/month. */
|
|
23
46
|
export declare const NON_LLM_COGS_USD = 2.29;
|
|
24
47
|
export declare const BYOK_REQUIRED = true;
|
|
25
48
|
export declare function isPlanId(value: string): value is PlanId;
|
|
26
49
|
export declare function planOf(id: string): Plan;
|
|
50
|
+
/** Monthly charge for a plan at a given seat count. */
|
|
51
|
+
export declare function monthlyPriceUsd(id: PlanId, seats?: number): number;
|
|
27
52
|
export declare function grossMargin(priceUsd: number): number;
|
|
28
53
|
export declare function isHostedMode(env?: NodeJS.ProcessEnv): boolean;
|
|
29
54
|
//# sourceMappingURL=plans.d.ts.map
|
package/dist/plans.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,QAAQ,+DAAgE,CAAC;AAEtF,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7C,gFAAgF;AAChF,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AAE7D,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,yDAAyD;IACzD,GAAG,EAAE,OAAO,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAqFtC,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,MAAM,CAEvD;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAGvC;AAED,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,MAAM,CAM7D;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAE1E"}
|
package/dist/plans.js
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Packaging.
|
|
3
|
+
*
|
|
4
|
+
* Four tiers, deliberately. The earlier ladder ran Starter $9 → Pro $29 →
|
|
5
|
+
* Business $79 → Agency $249, which made a buyer read four feature matrices to
|
|
6
|
+
* work out which box they were in, and made every one of those boxes a place to
|
|
7
|
+
* argue about a missing feature. It collapses to: run it yourself, run one
|
|
8
|
+
* site, run a team, or call us.
|
|
9
|
+
*
|
|
10
|
+
* Team is priced **per seat**, not per site. Per-site pricing punishes the
|
|
11
|
+
* agency that adds a small client; per-seat scales with the value the customer
|
|
12
|
+
* actually gets — more people looking at the same estate.
|
|
13
|
+
*/
|
|
14
|
+
export const PLAN_IDS = ["self_host", "cloud_starter", "team", "enterprise"];
|
|
9
15
|
export const PLANS = {
|
|
10
16
|
self_host: {
|
|
11
17
|
id: "self_host",
|
|
12
18
|
name: "Self-host",
|
|
13
19
|
priceUsdMonth: 0,
|
|
20
|
+
billing: "free",
|
|
14
21
|
sites: Number.POSITIVE_INFINITY,
|
|
15
22
|
ranks: "weekly",
|
|
16
23
|
aiVisibility: true,
|
|
@@ -22,11 +29,16 @@ export const PLANS = {
|
|
|
22
29
|
priorityQueue: false,
|
|
23
30
|
clientSeats: true,
|
|
24
31
|
bulkOps: true,
|
|
32
|
+
advancedAnalytics: true,
|
|
33
|
+
sso: false,
|
|
34
|
+
auditExport: false,
|
|
35
|
+
sla: false,
|
|
25
36
|
},
|
|
26
37
|
cloud_starter: {
|
|
27
38
|
id: "cloud_starter",
|
|
28
|
-
name: "Cloud
|
|
39
|
+
name: "Cloud",
|
|
29
40
|
priceUsdMonth: 9,
|
|
41
|
+
billing: "flat",
|
|
30
42
|
sites: 1,
|
|
31
43
|
ranks: "weekly",
|
|
32
44
|
aiVisibility: false,
|
|
@@ -38,57 +50,55 @@ export const PLANS = {
|
|
|
38
50
|
priorityQueue: false,
|
|
39
51
|
clientSeats: false,
|
|
40
52
|
bulkOps: false,
|
|
53
|
+
advancedAnalytics: false,
|
|
54
|
+
sso: false,
|
|
55
|
+
auditExport: false,
|
|
56
|
+
sla: false,
|
|
41
57
|
},
|
|
42
|
-
|
|
43
|
-
id: "
|
|
44
|
-
name: "
|
|
45
|
-
priceUsdMonth:
|
|
46
|
-
|
|
58
|
+
team: {
|
|
59
|
+
id: "team",
|
|
60
|
+
name: "Team",
|
|
61
|
+
priceUsdMonth: 14.99,
|
|
62
|
+
billing: "per_seat",
|
|
63
|
+
sites: 25,
|
|
47
64
|
ranks: "daily",
|
|
48
65
|
aiVisibility: true,
|
|
49
66
|
articlesMetered: true,
|
|
50
|
-
seats:
|
|
51
|
-
whiteLabel:
|
|
52
|
-
apiAccess: false,
|
|
53
|
-
hostedOauth: true,
|
|
54
|
-
priorityQueue: false,
|
|
55
|
-
clientSeats: false,
|
|
56
|
-
bulkOps: false,
|
|
57
|
-
},
|
|
58
|
-
business: {
|
|
59
|
-
id: "business",
|
|
60
|
-
name: "Business",
|
|
61
|
-
priceUsdMonth: 79,
|
|
62
|
-
sites: 10,
|
|
63
|
-
ranks: "daily",
|
|
64
|
-
aiVisibility: true,
|
|
65
|
-
articlesMetered: true,
|
|
66
|
-
seats: 10,
|
|
67
|
-
whiteLabel: false,
|
|
67
|
+
seats: 1, // billed per additional seat
|
|
68
|
+
whiteLabel: true,
|
|
68
69
|
apiAccess: true,
|
|
69
70
|
hostedOauth: true,
|
|
70
71
|
priorityQueue: true,
|
|
71
|
-
clientSeats:
|
|
72
|
-
bulkOps:
|
|
72
|
+
clientSeats: true,
|
|
73
|
+
bulkOps: true,
|
|
74
|
+
advancedAnalytics: true,
|
|
75
|
+
sso: false,
|
|
76
|
+
auditExport: false,
|
|
77
|
+
sla: false,
|
|
73
78
|
},
|
|
74
|
-
|
|
75
|
-
id: "
|
|
76
|
-
name: "
|
|
77
|
-
priceUsdMonth:
|
|
78
|
-
|
|
79
|
+
enterprise: {
|
|
80
|
+
id: "enterprise",
|
|
81
|
+
name: "Enterprise",
|
|
82
|
+
priceUsdMonth: 0, // quoted, never listed
|
|
83
|
+
billing: "quote",
|
|
84
|
+
sites: Number.POSITIVE_INFINITY,
|
|
79
85
|
ranks: "daily",
|
|
80
86
|
aiVisibility: true,
|
|
81
87
|
articlesMetered: true,
|
|
82
|
-
seats:
|
|
88
|
+
seats: Number.POSITIVE_INFINITY,
|
|
83
89
|
whiteLabel: true,
|
|
84
90
|
apiAccess: true,
|
|
85
91
|
hostedOauth: true,
|
|
86
92
|
priorityQueue: true,
|
|
87
93
|
clientSeats: true,
|
|
88
94
|
bulkOps: true,
|
|
95
|
+
advancedAnalytics: true,
|
|
96
|
+
sso: true,
|
|
97
|
+
auditExport: true,
|
|
98
|
+
sla: true,
|
|
89
99
|
},
|
|
90
100
|
};
|
|
91
|
-
/** Non-LLM COGS at BYOK. PLAN: $2.29/tenant/month
|
|
101
|
+
/** Non-LLM COGS at BYOK. PLAN: $2.29/tenant/month. */
|
|
92
102
|
export const NON_LLM_COGS_USD = 2.29;
|
|
93
103
|
export const BYOK_REQUIRED = true;
|
|
94
104
|
export function isPlanId(value) {
|
|
@@ -99,6 +109,14 @@ export function planOf(id) {
|
|
|
99
109
|
throw new Error(`unknown plan ${id}`);
|
|
100
110
|
return PLANS[id];
|
|
101
111
|
}
|
|
112
|
+
/** Monthly charge for a plan at a given seat count. */
|
|
113
|
+
export function monthlyPriceUsd(id, seats = 1) {
|
|
114
|
+
const plan = PLANS[id];
|
|
115
|
+
if (plan.billing === "per_seat") {
|
|
116
|
+
return Math.round(plan.priceUsdMonth * Math.max(1, seats) * 100) / 100;
|
|
117
|
+
}
|
|
118
|
+
return plan.priceUsdMonth;
|
|
119
|
+
}
|
|
102
120
|
export function grossMargin(priceUsd) {
|
|
103
121
|
if (priceUsd <= 0)
|
|
104
122
|
return 1;
|
package/dist/plans.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentsean/hosted",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"drizzle-orm": "0.45.2",
|
|
20
|
-
"@agentsean/db": "1.0.
|
|
20
|
+
"@agentsean/db": "1.0.5"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"typescript": "~5.9.3",
|
|
24
24
|
"vitest": "^4.1.11",
|
|
25
|
-
"@agentsean/ee": "1.0.
|
|
25
|
+
"@agentsean/ee": "1.0.5"
|
|
26
26
|
},
|
|
27
27
|
"publishConfig": {
|
|
28
28
|
"access": "public"
|