@askverdict/types 0.1.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.
Files changed (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +72 -0
  3. package/dist/action-items.d.ts +34 -0
  4. package/dist/action-items.d.ts.map +1 -0
  5. package/dist/action-items.js +6 -0
  6. package/dist/action-items.js.map +1 -0
  7. package/dist/agent.d.ts +33 -0
  8. package/dist/agent.d.ts.map +1 -0
  9. package/dist/agent.js +3 -0
  10. package/dist/agent.js.map +1 -0
  11. package/dist/api-key.d.ts +26 -0
  12. package/dist/api-key.d.ts.map +1 -0
  13. package/dist/api-key.js +3 -0
  14. package/dist/api-key.js.map +1 -0
  15. package/dist/api.d.ts +126 -0
  16. package/dist/api.d.ts.map +1 -0
  17. package/dist/api.js +3 -0
  18. package/dist/api.js.map +1 -0
  19. package/dist/argument.d.ts +29 -0
  20. package/dist/argument.d.ts.map +1 -0
  21. package/dist/argument.js +3 -0
  22. package/dist/argument.js.map +1 -0
  23. package/dist/badges.d.ts +33 -0
  24. package/dist/badges.d.ts.map +1 -0
  25. package/dist/badges.js +471 -0
  26. package/dist/badges.js.map +1 -0
  27. package/dist/bias.d.ts +27 -0
  28. package/dist/bias.d.ts.map +1 -0
  29. package/dist/bias.js +3 -0
  30. package/dist/bias.js.map +1 -0
  31. package/dist/calibration.d.ts +35 -0
  32. package/dist/calibration.d.ts.map +1 -0
  33. package/dist/calibration.js +3 -0
  34. package/dist/calibration.js.map +1 -0
  35. package/dist/categories.d.ts +10 -0
  36. package/dist/categories.d.ts.map +1 -0
  37. package/dist/categories.js +71 -0
  38. package/dist/categories.js.map +1 -0
  39. package/dist/consensus.d.ts +33 -0
  40. package/dist/consensus.d.ts.map +1 -0
  41. package/dist/consensus.js +3 -0
  42. package/dist/consensus.js.map +1 -0
  43. package/dist/cost.d.ts +34 -0
  44. package/dist/cost.d.ts.map +1 -0
  45. package/dist/cost.js +3 -0
  46. package/dist/cost.js.map +1 -0
  47. package/dist/debate.d.ts +100 -0
  48. package/dist/debate.d.ts.map +1 -0
  49. package/dist/debate.js +3 -0
  50. package/dist/debate.js.map +1 -0
  51. package/dist/decision-chain.d.ts +50 -0
  52. package/dist/decision-chain.d.ts.map +1 -0
  53. package/dist/decision-chain.js +3 -0
  54. package/dist/decision-chain.js.map +1 -0
  55. package/dist/decision-score.d.ts +30 -0
  56. package/dist/decision-score.d.ts.map +1 -0
  57. package/dist/decision-score.js +13 -0
  58. package/dist/decision-score.js.map +1 -0
  59. package/dist/errors.d.ts +10 -0
  60. package/dist/errors.d.ts.map +1 -0
  61. package/dist/errors.js +3 -0
  62. package/dist/errors.js.map +1 -0
  63. package/dist/events.d.ts +430 -0
  64. package/dist/events.d.ts.map +1 -0
  65. package/dist/events.js +3 -0
  66. package/dist/events.js.map +1 -0
  67. package/dist/evidence.d.ts +15 -0
  68. package/dist/evidence.d.ts.map +1 -0
  69. package/dist/evidence.js +3 -0
  70. package/dist/evidence.js.map +1 -0
  71. package/dist/fallacy.d.ts +14 -0
  72. package/dist/fallacy.d.ts.map +1 -0
  73. package/dist/fallacy.js +3 -0
  74. package/dist/fallacy.js.map +1 -0
  75. package/dist/feature-flags.d.ts +25 -0
  76. package/dist/feature-flags.d.ts.map +1 -0
  77. package/dist/feature-flags.js +3 -0
  78. package/dist/feature-flags.js.map +1 -0
  79. package/dist/frameworks.d.ts +97 -0
  80. package/dist/frameworks.d.ts.map +1 -0
  81. package/dist/frameworks.js +273 -0
  82. package/dist/frameworks.js.map +1 -0
  83. package/dist/graph.d.ts +40 -0
  84. package/dist/graph.d.ts.map +1 -0
  85. package/dist/graph.js +3 -0
  86. package/dist/graph.js.map +1 -0
  87. package/dist/index.d.ts +42 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +9 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/outcome.d.ts +47 -0
  92. package/dist/outcome.d.ts.map +1 -0
  93. package/dist/outcome.js +3 -0
  94. package/dist/outcome.js.map +1 -0
  95. package/dist/pricing.d.ts +153 -0
  96. package/dist/pricing.d.ts.map +1 -0
  97. package/dist/pricing.js +359 -0
  98. package/dist/pricing.js.map +1 -0
  99. package/dist/provider.d.ts +84 -0
  100. package/dist/provider.d.ts.map +1 -0
  101. package/dist/provider.js +3 -0
  102. package/dist/provider.js.map +1 -0
  103. package/dist/renderers.d.ts +63 -0
  104. package/dist/renderers.d.ts.map +1 -0
  105. package/dist/renderers.js +446 -0
  106. package/dist/renderers.js.map +1 -0
  107. package/dist/rounds.d.ts +34 -0
  108. package/dist/rounds.d.ts.map +1 -0
  109. package/dist/rounds.js +3 -0
  110. package/dist/rounds.js.map +1 -0
  111. package/dist/search.d.ts +18 -0
  112. package/dist/search.d.ts.map +1 -0
  113. package/dist/search.js +3 -0
  114. package/dist/search.js.map +1 -0
  115. package/dist/shapes.d.ts +8 -0
  116. package/dist/shapes.d.ts.map +1 -0
  117. package/dist/shapes.js +3 -0
  118. package/dist/shapes.js.map +1 -0
  119. package/dist/sharing.d.ts +26 -0
  120. package/dist/sharing.d.ts.map +1 -0
  121. package/dist/sharing.js +3 -0
  122. package/dist/sharing.js.map +1 -0
  123. package/dist/store.d.ts +103 -0
  124. package/dist/store.d.ts.map +1 -0
  125. package/dist/store.js +3 -0
  126. package/dist/store.js.map +1 -0
  127. package/dist/templates.d.ts +50 -0
  128. package/dist/templates.d.ts.map +1 -0
  129. package/dist/templates.js +252 -0
  130. package/dist/templates.js.map +1 -0
  131. package/dist/user.d.ts +55 -0
  132. package/dist/user.d.ts.map +1 -0
  133. package/dist/user.js +3 -0
  134. package/dist/user.js.map +1 -0
  135. package/dist/verdict.d.ts +52 -0
  136. package/dist/verdict.d.ts.map +1 -0
  137. package/dist/verdict.js +3 -0
  138. package/dist/verdict.js.map +1 -0
  139. package/package.json +46 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,359 @@
1
+ // @askverdict/types - Single source of truth for pricing, plans, and feature constants
2
+ // ---------------------------------------------------------------------------
3
+ // Debate credit costs
4
+ // ---------------------------------------------------------------------------
5
+ /**
6
+ * Credits consumed per debate/compare mode.
7
+ * Instant: 1 credit ($0.01 cost, $0.19 margin) - single-pass Quick Take
8
+ * Fast: 1 credit ($0.03 cost, $0.17 margin)
9
+ * Balanced: 3 credits ($0.08 cost, $0.52 margin)
10
+ * Thorough: 8 credits ($0.14 cost, $1.46 margin)
11
+ * Compare: 5 credits ($0.10 cost, $0.90 margin)
12
+ */
13
+ export const DEBATE_CREDIT_COSTS = {
14
+ instant: 1,
15
+ fast: 1,
16
+ balanced: 3,
17
+ thorough: 8,
18
+ compare: 5,
19
+ };
20
+ export const CREDIT_PACKS = [
21
+ { type: "credits_50", name: "Starter", credits: 50, displayPrice: "$1.99", priceCents: 199, highlighted: false },
22
+ { type: "credits_200", name: "Standard", credits: 200, displayPrice: "$5.99", priceCents: 599, highlighted: true },
23
+ { type: "credits_600", name: "Power", credits: 600, displayPrice: "$14.99", priceCents: 1499, highlighted: false },
24
+ ];
25
+ /** Credit amounts awarded per pack purchase */
26
+ export const CREDIT_AMOUNTS = {
27
+ credits_50: 50,
28
+ credits_200: 200,
29
+ credits_600: 600,
30
+ };
31
+ // ---------------------------------------------------------------------------
32
+ // Subscription plan intervals (Starter + Pro)
33
+ // ---------------------------------------------------------------------------
34
+ export const STARTER_PLAN = {
35
+ monthly: { displayPrice: "$4.99", priceCents: 499, creditsPerMonth: 200 },
36
+ annual: { displayPrice: "$3.99", priceCents: 399, creditsPerMonth: 200 },
37
+ };
38
+ export const PRO_PLAN = {
39
+ monthly: { displayPrice: "$14.99", priceCents: 1499, creditsPerMonth: 700 },
40
+ annual: { displayPrice: "$11.99", priceCents: 1199, creditsPerMonth: 700 },
41
+ };
42
+ // ---------------------------------------------------------------------------
43
+ // Free tier
44
+ // ---------------------------------------------------------------------------
45
+ export const FREE_TIER = {
46
+ lifetimeDebates: 3,
47
+ allowedModes: ["instant", "fast"],
48
+ };
49
+ // ---------------------------------------------------------------------------
50
+ // BYOK debate limits (per plan, when user enables own API keys)
51
+ // ---------------------------------------------------------------------------
52
+ /**
53
+ * Monthly debate cap when using own API keys (BYOK toggle enabled).
54
+ * -1 means unlimited.
55
+ */
56
+ export const BYOK_DEBATE_LIMITS = {
57
+ starter: 500,
58
+ pro: 2000,
59
+ enterprise: -1,
60
+ };
61
+ // ---------------------------------------------------------------------------
62
+ // Seat limits
63
+ // ---------------------------------------------------------------------------
64
+ /** Per-plan seat limits. -1 means unlimited (enterprise). */
65
+ export const SEAT_LIMITS = {
66
+ free: 1,
67
+ starter: 1,
68
+ pro: 25,
69
+ enterprise: -1,
70
+ };
71
+ // ---------------------------------------------------------------------------
72
+ // Monthly credit quotas
73
+ // ---------------------------------------------------------------------------
74
+ /** Credits included per month per plan. 0 = no subscription credits. */
75
+ export const MONTHLY_CREDITS = {
76
+ free: 0,
77
+ starter: 200,
78
+ pro: 700,
79
+ enterprise: 0, // custom
80
+ };
81
+ // ---------------------------------------------------------------------------
82
+ // Feature matrix
83
+ // ---------------------------------------------------------------------------
84
+ /**
85
+ * Maps each gated feature to the set of plans that unlock it.
86
+ */
87
+ export const FEATURE_MATRIX = {
88
+ sso: ["pro", "enterprise"],
89
+ scim: ["enterprise"],
90
+ custom_roles: ["pro", "enterprise"],
91
+ api_access: ["starter", "pro", "enterprise"],
92
+ mfa_enforcement: ["enterprise"],
93
+ advanced_audit: ["pro", "enterprise"],
94
+ decision_matrix: ["pro", "enterprise"],
95
+ convergence_scores: ["pro", "enterprise"],
96
+ argument_graph_heatmap: ["pro", "enterprise"],
97
+ file_upload_storage: ["pro", "enterprise"],
98
+ };
99
+ export const PLAN_CONFIGS = {
100
+ free: {
101
+ label: "Free",
102
+ badgeClass: "bg-white/[0.06] text-white/50 border-white/10",
103
+ description: "Basic access to AskVerdict debates.",
104
+ limits: ["3 lifetime debates", "Fast mode only", "No API access"],
105
+ },
106
+ starter: {
107
+ label: "Starter",
108
+ badgeClass: "bg-emerald-500/15 text-emerald-300 border-emerald-500/20",
109
+ description: "200 credits/month for everyday decisions.",
110
+ limits: ["200 credits/month", "All modes (fast, balanced, thorough, compare)", "API access", "Optional: connect your own API keys"],
111
+ },
112
+ pro: {
113
+ label: "Pro",
114
+ badgeClass: "bg-gold-gradient text-gray-900 border-none shadow-[0_2px_8px_-2px_rgba(232,163,23,0.35)]",
115
+ description: "700 credits/month + full analytics suite.",
116
+ limits: [
117
+ "700 credits/month",
118
+ "All modes + compare",
119
+ "Evidence engine + decision matrix",
120
+ "File uploads",
121
+ "Up to 25 seats",
122
+ "Optional: connect your own API keys",
123
+ ],
124
+ },
125
+ enterprise: {
126
+ label: "Enterprise",
127
+ badgeClass: "bg-blue-500/10 text-blue-300 border-blue-500/20",
128
+ description: "Custom SLAs, SSO, and dedicated support.",
129
+ limits: ["Everything in Pro", "Custom SLA", "SSO / SAML", "Dedicated support", "Unlimited seats"],
130
+ },
131
+ };
132
+ export const PRICING_TIERS = [
133
+ {
134
+ name: "Free",
135
+ price: "$0",
136
+ period: "forever",
137
+ description: "Try AskVerdict with basic access.",
138
+ features: [
139
+ { label: "3 lifetime debates", included: true },
140
+ { label: "Fast mode only", included: true },
141
+ { label: "Up to 3 agents", included: true },
142
+ { label: "Fun modes", included: false },
143
+ { label: "Decision frameworks", included: false },
144
+ { label: "Compare mode", included: false },
145
+ ],
146
+ highlighted: false,
147
+ ctaLabel: "Start Free",
148
+ ctaHref: "/login",
149
+ },
150
+ {
151
+ name: "Starter",
152
+ price: "$4.99",
153
+ annualPrice: "$3.99",
154
+ annualPeriod: "/mo, billed yearly",
155
+ annualSavingsPercent: 20,
156
+ period: "/month",
157
+ description: "200 credits/month for everyday decisions.",
158
+ features: [
159
+ { label: "200 credits/month", included: true },
160
+ { label: "All modes (fast, balanced, thorough)", included: true },
161
+ { label: "Compare mode (5 credits)", included: true },
162
+ { label: "Fun modes (Roast, Shark Tank, ELI5, Devil's Advocate)", included: true, badge: "new" },
163
+ { label: "Own API keys (optional)", included: true },
164
+ { label: "Up to 8 agents", included: true },
165
+ { label: "API access", included: true },
166
+ { label: "Decision frameworks", included: false },
167
+ { label: "File uploads", included: false },
168
+ ],
169
+ highlighted: false,
170
+ ctaLabel: "Get Started",
171
+ ctaHref: "/login",
172
+ },
173
+ {
174
+ name: "Pro",
175
+ price: "$14.99",
176
+ annualPrice: "$11.99",
177
+ annualPeriod: "/mo, billed yearly",
178
+ annualSavingsPercent: 20,
179
+ period: "/month",
180
+ description: "700 credits/month with the full analytics suite.",
181
+ features: [
182
+ { label: "700 credits/month", included: true },
183
+ { label: "All modes + compare", included: true },
184
+ { label: "Fun modes (Roast, Shark Tank, ELI5, Devil's Advocate)", included: true, badge: "new" },
185
+ { label: "Decision frameworks (Six Hats, Delphi, Pre-mortem)", included: true, badge: "new" },
186
+ { label: "Evidence Engine (web citations)", included: true },
187
+ { label: "Knowledge Sources", included: true },
188
+ { label: "Own API keys (optional)", included: true },
189
+ { label: "Decision matrix + convergence scores", included: true },
190
+ { label: "File uploads", included: true },
191
+ { label: "Up to 25 seats", included: true },
192
+ { label: "Priority queue + audit logs", included: true },
193
+ ],
194
+ highlighted: true,
195
+ badge: "Best Value",
196
+ ctaLabel: "Go Pro",
197
+ ctaHref: "/login",
198
+ },
199
+ {
200
+ name: "Teams",
201
+ price: "$9.99",
202
+ period: "/seat/month",
203
+ description: "Shared workspace for teams. Pool credits, manage members, and collaborate.",
204
+ features: [
205
+ { label: "100 credits/seat/month (pooled)", included: true },
206
+ { label: "Shared workspace & debates", included: true },
207
+ { label: "Team analytics dashboard", included: true },
208
+ { label: "Role-based access (owner/admin/member)", included: true },
209
+ { label: "Shared API key configuration", included: true },
210
+ { label: "Per-member spending limits", included: true },
211
+ { label: "Up to 25 seats", included: true },
212
+ ],
213
+ highlighted: false,
214
+ badge: "New",
215
+ ctaLabel: "Start Team",
216
+ ctaHref: "/workspaces/new",
217
+ },
218
+ ];
219
+ export const WORKSPACE_PLANS = {
220
+ free: {
221
+ id: "free",
222
+ name: "Free Workspace",
223
+ description: "Basic team collaboration",
224
+ pricePerSeat: 0,
225
+ minSeats: 1,
226
+ maxSeats: 3,
227
+ includedCredits: 10,
228
+ features: ["Up to 3 members", "10 credits/month", "Basic collaboration"],
229
+ },
230
+ team: {
231
+ id: "team",
232
+ name: "Team",
233
+ description: "For growing teams",
234
+ pricePerSeat: 9.99,
235
+ minSeats: 1,
236
+ maxSeats: 25,
237
+ includedCredits: 100,
238
+ features: [
239
+ "Up to 25 members",
240
+ "100 credits/month",
241
+ "$2.99/seat/month",
242
+ "Shared API key config",
243
+ "Spending limits",
244
+ ],
245
+ },
246
+ business: {
247
+ id: "business",
248
+ name: "Business",
249
+ description: "For larger organizations",
250
+ pricePerSeat: 4.99,
251
+ minSeats: 5,
252
+ maxSeats: 100,
253
+ includedCredits: 500,
254
+ features: [
255
+ "Up to 100 members",
256
+ "500 credits/month",
257
+ "$4.99/seat/month",
258
+ "Priority support",
259
+ "Advanced analytics",
260
+ "SSO",
261
+ ],
262
+ },
263
+ enterprise: {
264
+ id: "enterprise",
265
+ name: "Enterprise",
266
+ description: "Custom solution for large orgs",
267
+ pricePerSeat: 0, // custom pricing
268
+ minSeats: 10,
269
+ maxSeats: 9999,
270
+ includedCredits: 0, // custom
271
+ features: [
272
+ "Unlimited members",
273
+ "Custom credits",
274
+ "Custom pricing",
275
+ "Dedicated support",
276
+ "SLA",
277
+ "On-premise option",
278
+ ],
279
+ },
280
+ };
281
+ // Workspace credit pack pricing (same packs, purchased for workspace pool)
282
+ export const WORKSPACE_CREDIT_PACKS = [
283
+ { credits: 50, price: 7.99, popular: false },
284
+ { credits: 150, price: 19.99, popular: true },
285
+ { credits: 500, price: 49.99, popular: false },
286
+ { credits: 1500, price: 129.99, popular: false },
287
+ ];
288
+ /** Get display config for a workspace plan. */
289
+ export function getWorkspacePlan(id) {
290
+ return WORKSPACE_PLANS[id];
291
+ }
292
+ // ---------------------------------------------------------------------------
293
+ // Founding member
294
+ // ---------------------------------------------------------------------------
295
+ export const FOUNDING_MEMBER = {
296
+ discountPercent: 100,
297
+ durationMonths: 1,
298
+ totalSlots: 100,
299
+ description: "First 100 users get 1 month free Pro - no credit card required.",
300
+ };
301
+ // ---------------------------------------------------------------------------
302
+ // Agent count limits per plan
303
+ // ---------------------------------------------------------------------------
304
+ /** Maximum number of agents per debate per plan. -1 means unlimited. */
305
+ export const AGENT_COUNT_LIMITS = {
306
+ free: 3,
307
+ starter: 8,
308
+ pro: 8,
309
+ enterprise: -1,
310
+ };
311
+ /** Get the maximum agent count allowed for a given plan. -1 means unlimited. */
312
+ export function getMaxAgents(plan) {
313
+ return AGENT_COUNT_LIMITS[plan];
314
+ }
315
+ // ---------------------------------------------------------------------------
316
+ // Helpers
317
+ // ---------------------------------------------------------------------------
318
+ /** Get the credit cost for a given debate mode. */
319
+ export function getCreditCostForMode(mode) {
320
+ return DEBATE_CREDIT_COSTS[mode];
321
+ }
322
+ /** Get display config for a plan. */
323
+ export function getPlanConfig(plan) {
324
+ return PLAN_CONFIGS[plan];
325
+ }
326
+ /** Check if a plan grants access to a given feature. */
327
+ export function isPlanAllowed(plan, feature) {
328
+ return FEATURE_MATRIX[feature].includes(plan);
329
+ }
330
+ /** Get the seat limit for a plan. -1 means unlimited. */
331
+ export function getSeatLimit(plan) {
332
+ return SEAT_LIMITS[plan];
333
+ }
334
+ /** Check if a debate mode is available on the free tier. */
335
+ export function isFreeTierModeAllowed(mode) {
336
+ return FREE_TIER.allowedModes.includes(mode);
337
+ }
338
+ /** Get monthly included credits for a plan. */
339
+ export function getMonthlyCredits(plan) {
340
+ return MONTHLY_CREDITS[plan];
341
+ }
342
+ // ---------------------------------------------------------------------------
343
+ // Legacy plan migration helpers
344
+ // ---------------------------------------------------------------------------
345
+ /**
346
+ * Normalize legacy plan names to new simplified plans.
347
+ * "byok" -> "starter", "byok_pro" -> "pro"
348
+ */
349
+ export function normalizePlan(plan) {
350
+ if (plan === "byok")
351
+ return "starter";
352
+ if (plan === "byok_pro")
353
+ return "pro";
354
+ if (plan === "free" || plan === "starter" || plan === "pro" || plan === "enterprise") {
355
+ return plan;
356
+ }
357
+ return "free";
358
+ }
359
+ //# sourceMappingURL=pricing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ export type Provider = "anthropic" | "openai" | "google" | "ollama" | "openrouter";
2
+ export type ModelTier = "opus" | "sonnet" | "haiku" | "local";
3
+ export type TaskType = "orchestrator" | "synthesizer" | "debater" | "classifier" | "search_planner" | "mid_debate_analyst" | "fact_checker" | "controversy_scorer";
4
+ export interface ModelConfig {
5
+ anthropic?: {
6
+ apiKey: string;
7
+ opusModel?: string;
8
+ sonnetModel?: string;
9
+ haikuModel?: string;
10
+ };
11
+ openrouter?: {
12
+ apiKey: string;
13
+ opusModel?: string;
14
+ sonnetModel?: string;
15
+ haikuModel?: string;
16
+ };
17
+ openai?: {
18
+ apiKey: string;
19
+ opusModel?: string;
20
+ sonnetModel?: string;
21
+ haikuModel?: string;
22
+ };
23
+ google?: {
24
+ apiKey: string;
25
+ opusModel?: string;
26
+ sonnetModel?: string;
27
+ haikuModel?: string;
28
+ };
29
+ ollama?: {
30
+ baseUrl: string;
31
+ model: string;
32
+ };
33
+ }
34
+ export type ProviderKeys = Partial<Record<Provider, string>>;
35
+ export interface ProviderResponse {
36
+ content: string;
37
+ inputTokens: number;
38
+ outputTokens: number;
39
+ model: string;
40
+ reportedCost?: number;
41
+ cacheCreationInputTokens?: number;
42
+ cacheReadInputTokens?: number;
43
+ }
44
+ export interface ProviderCallOptions {
45
+ model: string;
46
+ system: string;
47
+ messages: Array<{
48
+ role: string;
49
+ content: string;
50
+ }>;
51
+ maxTokens: number;
52
+ temperature: number;
53
+ }
54
+ export interface ModelProvider {
55
+ readonly name: string;
56
+ isAvailable(): boolean;
57
+ getModelId(tier: ModelTier): string;
58
+ getSupportedTiers(): ModelTier[];
59
+ estimateCost(tier: ModelTier, inputTokens: number, outputTokens: number): number;
60
+ call(options: ProviderCallOptions): Promise<ProviderResponse>;
61
+ }
62
+ export type ModelRouting = Record<TaskType, ModelTier | null>;
63
+ export interface ContextBudgetEntry {
64
+ maxInputTokens: number;
65
+ summarizeAfter: number;
66
+ }
67
+ export type ContextBudget = Partial<Record<TaskType, ContextBudgetEntry>>;
68
+ export interface ConfigPreset {
69
+ name: string;
70
+ description: string;
71
+ routing: ModelRouting;
72
+ contextBudget?: ContextBudget;
73
+ estimatedCost: string;
74
+ }
75
+ export interface ResolvedModelConfig {
76
+ presetName: string;
77
+ routing: ModelRouting;
78
+ contextBudget: ContextBudget;
79
+ }
80
+ export interface ResolveConfigOptions {
81
+ preset?: string;
82
+ routingOverrides?: Record<string, string | null>;
83
+ }
84
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // Provider & Model Configuration Types
2
+ export {};
3
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,uCAAuC"}
@@ -0,0 +1,63 @@
1
+ import type { Verdict } from "./verdict";
2
+ export interface VerdictCardData {
3
+ verdictId: string;
4
+ question: string;
5
+ verdict: Verdict;
6
+ /** Base URL for linking back to the app (e.g. "https://askverdict.ai") */
7
+ appBaseUrl: string;
8
+ /** Framework used, if any */
9
+ framework?: string | null;
10
+ }
11
+ export interface SlackBlock {
12
+ type: string;
13
+ [key: string]: unknown;
14
+ }
15
+ export interface DiscordEmbed {
16
+ title: string;
17
+ description: string;
18
+ color: number;
19
+ fields: Array<{
20
+ name: string;
21
+ value: string;
22
+ inline?: boolean;
23
+ }>;
24
+ url: string;
25
+ footer: {
26
+ text: string;
27
+ };
28
+ timestamp?: string;
29
+ }
30
+ export type VerdictCardFormat = "slack" | "teams" | "discord" | "html" | "markdown";
31
+ /**
32
+ * Renders a Slack Block Kit message for the given verdict card.
33
+ * Produces header, summary, confidence, top arguments, and a CTA action button.
34
+ */
35
+ export declare function renderSlackBlocks(data: VerdictCardData): SlackBlock[];
36
+ /**
37
+ * Renders an MS Teams Adaptive Card (schema 1.4) for the given verdict card.
38
+ * Produces a card with question, recommendation facts, one-liner, top arguments,
39
+ * and an action link to the full verdict.
40
+ */
41
+ export declare function renderTeamsAdaptiveCard(data: VerdictCardData): Record<string, unknown>;
42
+ /**
43
+ * Renders a Discord embed object for the given verdict card.
44
+ * Color is the recommendation color converted to a decimal integer.
45
+ */
46
+ export declare function renderDiscordEmbed(data: VerdictCardData): DiscordEmbed;
47
+ /**
48
+ * Renders a self-contained HTML string suitable for email embeds.
49
+ * Uses inline styles for maximum email client compatibility.
50
+ */
51
+ export declare function renderHtml(data: VerdictCardData): string;
52
+ /**
53
+ * Renders clean Markdown for the given verdict card.
54
+ * Suitable for GitHub comments, documentation, or any Markdown-capable surface.
55
+ */
56
+ export declare function renderMarkdown(data: VerdictCardData): string;
57
+ /**
58
+ * Renders a verdict card in the requested format.
59
+ * Returns `unknown` because each format has a different output shape;
60
+ * callers should narrow the type based on the `format` argument.
61
+ */
62
+ export declare function renderVerdictCard(data: VerdictCardData, format: VerdictCardFormat): unknown;
63
+ //# sourceMappingURL=renderers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../src/renderers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAyB,MAAM,WAAW,CAAC;AAIhE,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAID,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AAoDpF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,UAAU,EAAE,CAoFrE;AAID;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0FtF;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,YAAY,CAiDtE;AAID;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CA2HxD;AAcD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAqC5D;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAa3F"}