@agentguard-run/spend 0.4.2 → 0.4.4

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 (66) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE +53 -0
  3. package/README.md +53 -0
  4. package/dist/advisor/conversation.d.ts +5 -0
  5. package/dist/advisor/conversation.d.ts.map +1 -1
  6. package/dist/advisor/conversation.js +34 -2
  7. package/dist/advisor/conversation.js.map +1 -1
  8. package/dist/advisor/output.d.ts.map +1 -1
  9. package/dist/advisor/output.js +9 -2
  10. package/dist/advisor/output.js.map +1 -1
  11. package/dist/advisor/system-prompt.d.ts.map +1 -1
  12. package/dist/advisor/system-prompt.js +20 -2
  13. package/dist/advisor/system-prompt.js.map +1 -1
  14. package/dist/cli/advisor.d.ts.map +1 -1
  15. package/dist/cli/advisor.js +11 -2
  16. package/dist/cli/advisor.js.map +1 -1
  17. package/dist/cli/auth.d.ts.map +1 -1
  18. package/dist/cli/auth.js +20 -1
  19. package/dist/cli/auth.js.map +1 -1
  20. package/dist/cli/config.d.ts +2 -0
  21. package/dist/cli/config.d.ts.map +1 -0
  22. package/dist/cli/config.js +19 -0
  23. package/dist/cli/config.js.map +1 -0
  24. package/dist/cli/license.d.ts +2 -0
  25. package/dist/cli/license.d.ts.map +1 -0
  26. package/dist/cli/license.js +39 -0
  27. package/dist/cli/license.js.map +1 -0
  28. package/dist/cli/main.d.ts.map +1 -1
  29. package/dist/cli/main.js +37 -1
  30. package/dist/cli/main.js.map +1 -1
  31. package/dist/cli/skill.d.ts +2 -0
  32. package/dist/cli/skill.d.ts.map +1 -0
  33. package/dist/cli/skill.js +33 -0
  34. package/dist/cli/skill.js.map +1 -0
  35. package/dist/cli/soft-cap.d.ts +25 -0
  36. package/dist/cli/soft-cap.d.ts.map +1 -0
  37. package/dist/cli/soft-cap.js +204 -0
  38. package/dist/cli/soft-cap.js.map +1 -0
  39. package/dist/cost-table.d.ts.map +1 -1
  40. package/dist/cost-table.js +2 -0
  41. package/dist/cost-table.js.map +1 -1
  42. package/dist/index.d.ts +3 -2
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +15 -3
  45. package/dist/index.js.map +1 -1
  46. package/dist/license.d.ts +44 -0
  47. package/dist/license.d.ts.map +1 -0
  48. package/dist/license.js +278 -0
  49. package/dist/license.js.map +1 -0
  50. package/dist/policy.d.ts +15 -1
  51. package/dist/policy.d.ts.map +1 -1
  52. package/dist/policy.js +95 -1
  53. package/dist/policy.js.map +1 -1
  54. package/dist/spend-guard.d.ts +10 -0
  55. package/dist/spend-guard.d.ts.map +1 -1
  56. package/dist/spend-guard.js +14 -1
  57. package/dist/spend-guard.js.map +1 -1
  58. package/dist/telemetry.js +1 -1
  59. package/dist/types.d.ts +30 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +2 -2
  62. package/src/advisor/conversation.ts +41 -2
  63. package/src/advisor/output.ts +9 -2
  64. package/src/advisor/system-prompt.ts +21 -2
  65. package/src/cli/advisor.ts +9 -2
  66. package/src/cli/auth.ts +19 -1
@@ -15,6 +15,7 @@
15
15
  * 64/071,781; 64/071,789).
16
16
  */
17
17
  import type { SpendPolicy, CallContext, SpendDecision, SpendStore, DecisionLogStore, SignedDecisionLogEntry, CapabilityTier, SpendScope } from './types';
18
+ import { type LicenseClientOptions } from './license';
18
19
  export interface SpendGuardConfig {
19
20
  /** The policy to evaluate every call against. */
20
21
  policy: SpendPolicy;
@@ -35,6 +36,12 @@ export interface SpendGuardConfig {
35
36
  tokenEstimator?: (text: string) => number;
36
37
  /** Optional locale for localized block traces. */
37
38
  locale?: string;
39
+ /** Optional AgentGuard license key. If omitted, local config or free tier is used. */
40
+ licenseKey?: string;
41
+ /** Optional license endpoint base URL for enterprise tests or private mirrors. */
42
+ licenseEndpointBaseUrl?: string;
43
+ /** Optional test hook for license endpoint calls. */
44
+ licensePostJson?: LicenseClientOptions['postJson'];
38
45
  }
39
46
  export interface StreamSettlementOptions {
40
47
  partial?: boolean;
@@ -53,6 +60,7 @@ export declare class SpendGuard {
53
60
  private previousHash;
54
61
  private decisionLock;
55
62
  private reservations;
63
+ private licenseReady;
56
64
  constructor(config: SpendGuardConfig);
57
65
  hydrate(): Promise<void>;
58
66
  decide(call: CallContext): Promise<{
@@ -60,6 +68,7 @@ export declare class SpendGuard {
60
68
  signed: SignedDecisionLogEntry | null;
61
69
  }>;
62
70
  settleStreamUsage(decisionId: string, actualInputTokens: number, actualOutputTokens: number, options?: StreamSettlementOptions): Promise<StreamSettlementResult | null>;
71
+ private ensureLicenseReady;
63
72
  private signAndAppendDecision;
64
73
  private rememberReservation;
65
74
  private buildSettlementDecision;
@@ -76,6 +85,7 @@ export interface OpenAIBindingOptions {
76
85
  scope: SpendScope;
77
86
  capabilityClaim?: CapabilityTier;
78
87
  config?: Omit<SpendGuardConfig, 'policy'>;
88
+ licenseKey?: string;
79
89
  }
80
90
  export declare class AgentGuardBlockedError extends Error {
81
91
  decision: SpendDecision;
@@ -1 +1 @@
1
- {"version":3,"file":"spend-guard.d.ts","sourceRoot":"","sources":["../src/spend-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spend-guard.d.ts","sourceRoot":"","sources":["../src/spend-guard.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,7 @@ const decision_log_2 = require("./decision-log");
33
33
  const cost_table_1 = require("./cost-table");
34
34
  const i18n_1 = require("./i18n");
35
35
  const telemetry_1 = require("./telemetry");
36
+ const license_1 = require("./license");
36
37
  class SpendGuard {
37
38
  config;
38
39
  spendStore;
@@ -41,6 +42,7 @@ class SpendGuard {
41
42
  previousHash = decision_log_1.GENESIS_PREVIOUS_HASH;
42
43
  decisionLock = Promise.resolve();
43
44
  reservations = new Map();
45
+ licenseReady = null;
44
46
  constructor(config) {
45
47
  this.config = config;
46
48
  this.spendStore = config.spendStore ?? new store_memory_1.InMemorySpendStore();
@@ -57,6 +59,8 @@ class SpendGuard {
57
59
  });
58
60
  }
59
61
  async decide(call) {
62
+ const license = await this.ensureLicenseReady();
63
+ (0, policy_1.enforcePolicyLicenseGates)(this.config.policy, license);
60
64
  const result = await this.withDecisionLock(async () => {
61
65
  const decision = await (0, policy_1.evaluatePolicy)(this.config.policy, call, this.spendStore);
62
66
  const signed = await this.signAndAppendDecision(decision);
@@ -100,6 +104,15 @@ class SpendGuard {
100
104
  }
101
105
  return result;
102
106
  }
107
+ ensureLicenseReady() {
108
+ if (!this.licenseReady) {
109
+ this.licenseReady = (0, license_1.validateAndRegisterLicense)(this.config.licenseKey, {
110
+ endpointBaseUrl: this.config.licenseEndpointBaseUrl,
111
+ postJson: this.config.licensePostJson,
112
+ });
113
+ }
114
+ return this.licenseReady;
115
+ }
103
116
  async signAndAppendDecision(decision) {
104
117
  if (!this.config.signingKeys)
105
118
  return null;
@@ -238,7 +251,7 @@ exports.AgentGuardBlockedError = AgentGuardBlockedError;
238
251
  function withSpendGuard(
239
252
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
240
253
  client, opts) {
241
- const guard = new SpendGuard({ policy: opts.policy, ...(opts.config ?? {}) });
254
+ const guard = new SpendGuard({ policy: opts.policy, ...(opts.config ?? {}), licenseKey: opts.licenseKey ?? opts.config?.licenseKey });
242
255
  const originalCreate = client?.chat?.completions?.create?.bind(client.chat.completions);
243
256
  if (!originalCreate) {
244
257
  throw new Error('withSpendGuard: expected an OpenAI client with chat.completions.create');
@@ -1 +1 @@
1
- {"version":3,"file":"spend-guard.js","sourceRoot":"","sources":["../src/spend-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spend-guard.js","sourceRoot":"","sources":["../src/spend-guard.ts"],"names":[],"mappings":"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"}
package/dist/telemetry.js CHANGED
@@ -43,7 +43,7 @@ const https = __importStar(require("https"));
43
43
  const os = __importStar(require("os"));
44
44
  const path = __importStar(require("path"));
45
45
  const crypto_1 = require("crypto");
46
- const AGENTGUARD_SPEND_VERSION = '0.4.1';
46
+ const AGENTGUARD_SPEND_VERSION = '0.4.3';
47
47
  const STATE_DIR = path.join(os.homedir(), '.agentguard');
48
48
  const INSTALL_PATH = path.join(STATE_DIR, 'install.json');
49
49
  const BEACON_URL = 'https://agentguard.run/api/beacon';
package/dist/types.d.ts CHANGED
@@ -48,6 +48,34 @@ export interface SpendScope {
48
48
  /** Optional provider scope (e.g., only enforce on OpenAI) */
49
49
  provider?: Provider;
50
50
  }
51
+ export interface ReviewerCascadeModelStep {
52
+ model: string;
53
+ maxCostCents: number;
54
+ }
55
+ export type ReviewerCascadeTrigger = {
56
+ drafter_confidence_below: number;
57
+ } | {
58
+ output_contains_any: string[];
59
+ } | {
60
+ high_risk_classifier_score_above: number;
61
+ } | {
62
+ keyword_watchlist: string;
63
+ };
64
+ export interface ReviewerCascadeOutcome {
65
+ drafter: ReviewerCascadeModelStep;
66
+ reviewer?: ReviewerCascadeModelStep & {
67
+ trigger?: ReviewerCascadeTrigger[];
68
+ };
69
+ cap: number | string;
70
+ capability: CapabilityTier;
71
+ }
72
+ export interface ReviewerCascadeReceipt {
73
+ outcome: string;
74
+ drafter: ReviewerCascadeModelStep;
75
+ reviewer: ReviewerCascadeModelStep | null;
76
+ triggerFired: string[];
77
+ reviewerVerdict: string;
78
+ }
51
79
  /**
52
80
  * A full spend policy: name, scope, and ordered list of caps.
53
81
  * The first cap whose threshold is reached determines the action.
@@ -73,6 +101,8 @@ export interface SpendPolicy {
73
101
  * out of scope of this package and is performed by the integrating code.
74
102
  */
75
103
  requiredCapability?: CapabilityTier;
104
+ /** Optional outcome definitions for Reviewer Cascade alpha policies. */
105
+ outcomes?: Record<string, ReviewerCascadeOutcome>;
76
106
  /** Policy version, monotonically increasing */
77
107
  version: number;
78
108
  /** ISO 8601 effective-from timestamp */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agentguard-run/spend",
3
- "version": "0.4.2",
4
- "description": "Local-runtime spend caps and capability-gated model routing for AI agents. Prompts, API keys, and signing keys stay inside the customer runtime. Zero data plane involvement.",
3
+ "version": "0.4.4",
4
+ "description": "All terminology and labels used in AgentGuard materials are descriptive of software functionality only, not legal definitions or guarantees of compliance. Terms like receipt, audit log, evidence, audit trail, and attestation refer solely to cryptographically-signed records produced by the software. Full functional-use disclaimer in README.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "exports": {
@@ -38,6 +38,9 @@ export interface AdvisorBusinessProfile {
38
38
  requiredCapability: CapabilityTier;
39
39
  primaryModel: string;
40
40
  fallbackModel: string;
41
+ hostedOssModel: string;
42
+ offlineModel: string;
43
+ baaCoveredModel: string;
41
44
  perCallCapCents: number;
42
45
  perDayCapCents: number;
43
46
  perMonthCapCents: number;
@@ -70,8 +73,40 @@ export const ADVISOR_QUESTIONS: AdvisorQuestion[] = [
70
73
  { id: 'confirm', prompt: 'Confirm the setup or list any refinements before I write policy.yaml and quickstart code.' },
71
74
  ];
72
75
 
76
+
77
+
78
+ const CHINESE_ORIGIN_MODEL_PATTERNS = [/kimi/i, /qwen/i, /deepseek/i, /(^|\/)yi([-/]|$)/i, /01-ai/i];
79
+ const HOSTED_OSS_DEFAULT = 'baseten/llama-4';
80
+ const HOSTED_OSS_VELOCITY = 'baseten/llama-4-13b';
81
+ const OFFLINE_DEFAULT = 'offline/llama-4-m4-ultra';
82
+ const BAA_COVERED_DEFAULT = 'anthropic.claude-sonnet-4-v1:0';
83
+
84
+ export function isChineseOriginModel(model: string): boolean {
85
+ return CHINESE_ORIGIN_MODEL_PATTERNS.some((pattern) => pattern.test(model));
86
+ }
87
+
88
+ export function enforceAdvisorModelPolicy(model: string, posture: GovernancePosture, replacement = 'anthropic/claude-haiku-4-5'): string {
89
+ if (posture === 'compliance' && isChineseOriginModel(model)) {
90
+ console.warn(`AgentGuard Advisor blocked ${model} for compliance posture and selected ${replacement}.`);
91
+ return replacement;
92
+ }
93
+ return model;
94
+ }
95
+
96
+ function defaultModelsFor(vertical: string, hint: { primary: string; fallback: string }, posture: GovernancePosture): { primary: string; fallback: string; hostedOss: string; offline: string; baaCovered: string } {
97
+ if (posture === 'velocity') {
98
+ return { primary: HOSTED_OSS_VELOCITY, fallback: 'anthropic/claude-haiku-4-5', hostedOss: HOSTED_OSS_VELOCITY, offline: OFFLINE_DEFAULT, baaCovered: BAA_COVERED_DEFAULT };
99
+ }
100
+ if (posture === 'compliance') {
101
+ const regulatedPrimary = vertical === 'accounting' ? 'openai/gpt-5' : vertical === 'real-estate' ? 'google/gemini-3.1-pro-preview' : 'anthropic/claude-opus-4-7';
102
+ return { primary: regulatedPrimary, fallback: 'anthropic/claude-sonnet-4-6', hostedOss: HOSTED_OSS_DEFAULT, offline: OFFLINE_DEFAULT, baaCovered: BAA_COVERED_DEFAULT };
103
+ }
104
+ return { primary: hint.primary, fallback: HOSTED_OSS_DEFAULT, hostedOss: HOSTED_OSS_DEFAULT, offline: OFFLINE_DEFAULT, baaCovered: BAA_COVERED_DEFAULT };
105
+ }
106
+
73
107
  const VERTICAL_HINTS: Array<{ vertical: string; needles: string[]; scopeLabel: string; capability: CapabilityTier; primary: string; fallback: string; perCall: number }> = [
74
108
  { vertical: 'law-firm', needles: ['law', 'legal', 'attorney', 'paralegal', 'contract', 'matter', 'discovery'], scopeLabel: 'matter', capability: 'data_write', primary: 'anthropic/claude-sonnet-4-6', fallback: 'anthropic/claude-haiku-4-5', perCall: 300 },
109
+ { vertical: 'insurance', needles: ['insurance', 'carrier', 'producer', 'agency', 'policy comparison', 'quote letter', 'certificate of insurance', 'renewal', 'e&o'], scopeLabel: 'policy', capability: 'data_write', primary: 'anthropic/claude-sonnet-4-6', fallback: 'baseten/llama-4', perCall: 150 },
75
110
  { vertical: 'healthcare', needles: ['health', 'medical', 'dental', 'clinic', 'patient', 'chart', 'hipaa', 'encounter'], scopeLabel: 'encounter', capability: 'data_write', primary: 'anthropic.claude-sonnet-4-v1:0', fallback: 'amazon.nova-lite-v1:0', perCall: 300 },
76
111
  { vertical: 'ecommerce', needles: ['shopify', 'commerce', 'store', 'order', 'refund', 'chargeback', 'fraud', 'returns'], scopeLabel: 'order', capability: 'payment_initiate', primary: 'openai/gpt-5-mini', fallback: 'openai/gpt-4o-mini', perCall: 25 },
77
112
  { vertical: 'accounting', needles: ['accounting', 'bookkeeping', 'tax', 'ledger', 'receipt', 'close', 'audit', 'sox'], scopeLabel: 'engagement', capability: 'data_write', primary: 'anthropic/claude-sonnet-4-6', fallback: 'anthropic/claude-haiku-4-5', perCall: 150 },
@@ -157,6 +192,7 @@ export function buildBusinessProfile(answers: AdvisorAnswers, cwd = process.cwd(
157
192
  const tasks = parseTasks(answers.tasks ?? answers.building ?? hint.vertical);
158
193
  const perMonthCapCents = Math.max(1000, budgetCents);
159
194
  const perDayCapCents = Math.max(hint.perCall * 10, Math.ceil(perMonthCapCents / 20));
195
+ const models = defaultModelsFor(hint.vertical, hint, posture);
160
196
  return {
161
197
  vertical: hint.vertical,
162
198
  tenantId: tenantIdFromBusiness(answers.building ?? hint.vertical),
@@ -165,8 +201,11 @@ export function buildBusinessProfile(answers: AdvisorAnswers, cwd = process.cwd(
165
201
  tasks,
166
202
  monthlyBudgetCents: perMonthCapCents,
167
203
  requiredCapability: capabilityFor(joined, hint.capability, posture),
168
- primaryModel: hint.primary,
169
- fallbackModel: hint.fallback,
204
+ primaryModel: enforceAdvisorModelPolicy(models.primary, posture),
205
+ fallbackModel: enforceAdvisorModelPolicy(models.fallback, posture),
206
+ hostedOssModel: enforceAdvisorModelPolicy(models.hostedOss, posture),
207
+ offlineModel: models.offline,
208
+ baaCoveredModel: enforceAdvisorModelPolicy(models.baaCovered, posture),
170
209
  perCallCapCents: hint.perCall,
171
210
  perDayCapCents,
172
211
  perMonthCapCents,
@@ -120,6 +120,10 @@ requiredCapability: ${policy.requiredCapability ?? 'read_only'}
120
120
  scope:
121
121
  tenantId: ${quoteYaml(policy.scope.tenantId)}
122
122
  models:
123
+ cloudFrontierPrimary: ${profile.primaryModel}
124
+ hostedOssFallback: ${profile.hostedOssModel}
125
+ offlineOption: ${profile.offlineModel}
126
+ baaCoveredOption: ${profile.baaCoveredModel}
123
127
  primary: ${profile.primaryModel}
124
128
  fallback: ${profile.fallbackModel}
125
129
  governancePosture:
@@ -127,7 +131,10 @@ governancePosture:
127
131
  auditRetentionDays: ${posture.auditRetentionDays}
128
132
  approvalGates: ${posture.approvalGates}
129
133
  downgradeStyle: ${posture.downgradeStyle}
130
- ${canary}tasks:
134
+ ${canary}reviewerCascade:
135
+ default: ${profile.posture === 'compliance' ? 'always' : 'risk_triggered'}
136
+ triageClassifier: local-3b
137
+ tasks:
131
138
  ${tasks}
132
139
  caps:
133
140
  ${caps}
@@ -180,7 +187,7 @@ function whyForWindow(window: string): string {
180
187
 
181
188
  function systemInstructions(profile: AdvisorBusinessProfile): string {
182
189
  const posture = postureProfile(profile.posture);
183
- return `Run ${profile.vertical} tasks with ${profile.requiredCapability} capability under ${posture.label} governance posture. Prefer ${profile.primaryModel} for high-value work and ${profile.fallbackModel} for routine work. Keep evidence pointers in outputs and escalate anything outside the configured capability tier.`;
190
+ return `Run ${profile.vertical} tasks with ${profile.requiredCapability} capability under ${posture.label} governance posture. Prefer ${profile.primaryModel} for high-value work, ${profile.hostedOssModel} for hosted OSS fallback, ${profile.offlineModel} for offline runs, and ${profile.baaCoveredModel} when a BAA-covered provider is required. Keep evidence pointers in outputs and escalate anything outside the configured capability tier.`;
184
191
  }
185
192
 
186
193
  function quoteYaml(value: string): string {
@@ -70,7 +70,25 @@ Standard: default for most SaaS, e-commerce, real estate, agencies, local servic
70
70
 
71
71
  Compliance: for law, healthcare, dental, accounting, SOX, fintech, and regulated workflows. Default mode is canary, meaning enforce with a 5 percent sticky shadow sample. Capabilities are strict, with payment_execute for financial workflows and data_write minimum for PHI or PII workflows. Downgrade chains are conservative, and regulated capabilities block instead of downgrade. Audit retention is 7 years. Per-action approval gates are on for payment_execute.
72
72
 
73
- Custom: a Solo tier posture for future Outcome Builder workflows. In this release, tell the user Solo tier is required and choose Velocity, Standard, or Compliance instead.`,
73
+ Custom: a Solo tier posture for future Outcome Builder workflows. In this release, tell the user Solo tier is required and choose Velocity, Standard, or Compliance instead.
74
+
75
+ Chinese-origin model block for compliance posture: do not recommend Kimi K2, Qwen, DeepSeek, Yi, 01.AI, or hosted derivatives of those families for regulated or sensitive workflows. The block applies to cloud-frontier routes and hosted-OSS routes. If a user asks for one, state that Advisor cannot select it for compliance posture and offer Claude, GPT, Gemini, Llama on Baseten, Azure OpenAI, AWS Bedrock, Google Vertex, or Amazon Q instead.`,
76
+ },
77
+
78
+ {
79
+ id: 'vertical-outcome-intel-may28',
80
+ title: 'Vertical Outcome Intel May 28 2026',
81
+ content: `When the user selects one of these five verticals, cite the five outcomes, cap, recommended model, three compliance citations, pricing anchor, and default Governance Posture. Use these values unless the user gives a stronger constraint.
82
+
83
+ Law firms. Default posture: compliance. Pricing anchor: Solo $49 is about one Clio EasyStart seat. Startup $199 is below one CoCounsel seat. Growth $999 is a fraction of one Harvey seat. Outcomes: contract redlined, cap $2.00, model anthropic/claude-sonnet-4-6, tier data_write. Research memo delivered, cap $3.00, model anthropic/claude-opus-4-7, tier read_only. Matter intake closed, cap $1.50, model anthropic/claude-haiku-4-5, tier data_write. Deposition pack assembled, cap $5.00, model anthropic/claude-opus-4-7, tier read_only. Brief or motion drafted, cap $7.50, model anthropic/claude-opus-4-7, tier data_write. Compliance citations: ABA Model Rule 1.1 competence, ABA Model Rule 1.6 confidentiality, ABA Formal Opinion 512 on generative AI.
84
+
85
+ Insurance agencies. Default posture: compliance. Pricing anchor: Solo $49 is about half a HawkSoft seat at $94 per user. Outcomes: quote letter drafted, cap $0.50, model anthropic/claude-haiku-4-5, tier data_write. Policy comparison generated, cap $1.50, model anthropic/claude-sonnet-4-6, tier data_write. Certificate of insurance issued, cap $0.25, model anthropic/claude-haiku-4-5, tier data_write. Renewal outreach completed, cap $0.15, model anthropic/claude-haiku-4-5, tier data_write. Inbound lead qualified, cap $0.30, model openai/gpt-5-mini, tier data_write. Reviewer Cascade always runs for policy comparisons, quote letters, and claims correspondence. Compliance citations: NAIC Model Bulletin on AI systems, 11 NYCRR section 215.13, Verisk CG 40 47 and CG 40 48 AI exclusions.
86
+
87
+ Accounting and bookkeeping. Default posture: compliance. Pricing anchor: Solo $49 is about one QuickBooks or low-end practice seat. Startup $199 is below four Karbon Team seats. Growth $999 fits a 10 to 15 staff firm. Outcomes: bookkeeping cycle closed, cap $5.00, model anthropic/claude-haiku-4-5, tier data_write. Tax return drafted, cap $7.50, model openai/gpt-5, tier data_write. IRS or state notice response, cap $3.00, model anthropic/claude-sonnet-4-6, tier data_write. Client email resolved, cap $0.50, model anthropic/claude-haiku-4-5, tier data_write. Workpaper completed, cap $4.00, model openai/gpt-5, tier data_write. Compliance citations: PCAOB AS 1215 audit documentation retention, SOX 802 and 18 U.S.C. 1519 record preservation, GLBA Safeguards Rule 16 CFR Part 314.
88
+
89
+ E-commerce and Shopify. Default posture: standard. Pricing anchor: Solo $49 is around a small-list Klaviyo setup. Startup $199 sits between Shopify Advanced and common analytics apps. Growth $999 is within normal DTC AI overhead. Outcomes: support ticket resolved, cap $0.99, model anthropic/claude-haiku-4-5, tier data_write. Product page published, cap $0.50, model anthropic/claude-sonnet-4-6, tier data_write. Cart recovered, cap $1.50, model anthropic/claude-haiku-4-5, tier data_write. Chargeback represented, cap $2.00, model openai/gpt-5, tier read_only. Email send launched, cap $1.00, model anthropic/claude-haiku-4-5, tier data_write. Agentic checkout completed, cap $2.00, model anthropic/claude-haiku-4-5, tier payment_execute. Compliance citations: Visa Compelling Evidence 3.0, PCI DSS 4.0 section 10 logging and monitoring, CAN-SPAM 15 U.S.C. 7704.
90
+
91
+ Real estate and mortgage. Default posture: standard. Pricing anchor: Solo $49 is about Cloud CMA or below Follow Up Boss. Startup $199 fits a 4 to 5 agent team. Growth $999 fits a 20 agent brokerage. Outcomes: listing prepped, cap $1.00, model anthropic/claude-haiku-4-5, tier data_write. Lead qualified, cap $1.50, model anthropic/claude-haiku-4-5, tier data_write. CMA delivered, cap $1.00, model anthropic/claude-sonnet-4-6, tier read_only. Showing booked, cap $0.75, model anthropic/claude-haiku-4-5, tier data_write. Transaction file closed, cap $5.00, model openai/gpt-5, tier data_write. Compliance citations: Fair Housing Act 42 U.S.C. 3604, ECOA 15 U.S.C. 1691 with Regulation B 12 CFR 1002, TCPA 47 U.S.C. 227 and 47 CFR 64.1200.`,
74
92
  },
75
93
  {
76
94
  id: 'vertical-encyclopedia-core',
@@ -80,7 +98,7 @@ Custom: a Solo tier posture for future Outcome Builder workflows. In this releas
80
98
  Law firm:
81
99
  Tasks: contract redline, novel contract review, legal research, brief drafting, deposition prep, discovery review. Models: anthropic/claude-haiku-4-5 for boilerplate and discovery, anthropic/claude-sonnet-4-6 for research and novel terms, anthropic/claude-opus-4-7 for brief drafting and deposition analysis. Caps: $0.25 discovery tagging, $1 contract redline, $3 novel review, $4 legal research, $8 brief drafting. Scope key: matter or client matter code in agentId, attorney in userId. Compliance: privilege workflows need zero proxy, per-matter accounting, jurisdiction-aware model allowlists, and signed decision receipts for audit packets.
82
100
 
83
- Healthcare:
101
+ Healthcare partner-only:
84
102
  Tasks: patient triage, chart review, clinical documentation drafting, prior authorization narrative, medical literature search, patient education, insurance verification, appointment scheduling. Models: BAA-covered Bedrock Anthropic for PHI, OpenRouter openai/gpt-5-mini or anthropic/claude-haiku-4-5 for non-PHI. Caps: $0.10 education, $0.25 insurance verification, $0.50 triage, $2 chart review, $3 documentation, $5 prior authorization. Scope key: encounter or patient encounter in agentId, clinician in userId. Compliance: PHI workflows require data_write minimum plus provider BAA controls. Non-PHI can use OpenRouter.
85
103
 
86
104
  E-commerce:
@@ -144,6 +162,7 @@ anthropic.claude-opus-4-v1:0: input $15.00, output $75.00.
144
162
  anthropic.claude-sonnet-4-v1:0: input $3.00, output $15.00.
145
163
  amazon.nova-pro-v1:0: input $0.80, output $3.20.
146
164
  amazon.nova-lite-v1:0: input $0.06, output $0.24.
165
+ Baseten hosted OSS default: baseten/llama-4 at $0.108 per H100-hour as a cost-best hosted fallback. Velocity posture may use baseten/llama-4-13b as primary with anthropic/claude-haiku-4-5 as fallback. Compliance posture uses a cloud frontier primary such as anthropic/claude-opus-4-7, openai/gpt-5, or google/gemini-3.1-pro-preview, with Reviewer Cascade always triggered for regulated outcomes. Offline options are Llama-4 on M4 Ultra or dual H100. BAA-covered options are Azure OpenAI, AWS Bedrock, Google Vertex, and Amazon Q.
147
166
  For unknown live OpenRouter models, ask the customer to run agentguard models --sync-pricing before using them in a policy.`,
148
167
  },
149
168
  {
@@ -12,6 +12,7 @@ import { readDecisionSpend, reviewAnomalies } from '../advisor/anomaly';
12
12
  import { ADVISOR_SYSTEM_PROMPT } from '../advisor/system-prompt';
13
13
  import { createAdvisorSessionLogger, writeAdvisorOutputs } from '../advisor/output';
14
14
  import { banner, cyanBold, dim, green, yellow } from './colors';
15
+ import { confirmPostureSoftCap } from './soft-cap';
15
16
 
16
17
  interface AdvisorCliOptions {
17
18
  provider: AdvisorProvider;
@@ -48,8 +49,14 @@ export async function runAdvisor(argv: string[]): Promise<number> {
48
49
 
49
50
  const options = parseOptions(argv);
50
51
  if (options.posture === 'custom') {
51
- console.log('Solo tier required for custom governance posture. Choose velocity, standard, or compliance in this release.');
52
- return 0;
52
+ const ok = await confirmPostureSoftCap('custom', { yes: options.yes || options.defaults });
53
+ if (!ok) return 0;
54
+ options.posture = 'standard';
55
+ }
56
+ if (options.posture && options.posture !== 'standard' && !process.env.AGENTGUARD_LICENSE_KEY) {
57
+ const ok = await confirmPostureSoftCap(options.posture, { yes: options.yes || options.defaults });
58
+ if (!ok) return 0;
59
+ options.posture = 'standard';
53
60
  }
54
61
  const apiKey = resolveAdvisorApiKey(options.provider);
55
62
  if (options.provider !== 'mock' && !apiKey) {
package/src/cli/auth.ts CHANGED
@@ -5,6 +5,7 @@ import * as https from 'https';
5
5
  import * as path from 'path';
6
6
  import * as readline from 'readline';
7
7
  import { AGENTGUARD_SPEND_VERSION } from '../index';
8
+ import { licenseKeyFingerprint, readConfiguredLicenseKey, writeConfiguredLicenseKey } from '../license';
8
9
  import { agentguardHome, banner, dim, green, statusBar, yellow } from './colors';
9
10
 
10
11
  const OPENROUTER_AUTH_URL = 'https://openrouter.ai/api/v1/auth/key';
@@ -50,11 +51,12 @@ export function writeOpenRouterKey(key: string): void {
50
51
 
51
52
  export async function runAuth(argv: string[]): Promise<number> {
52
53
  if (argv.includes('--help') || argv.includes('-h')) {
53
- console.log('agentguard auth openrouter | status | clear openrouter');
54
+ console.log('agentguard auth openrouter | license-key <KEY> | status | clear openrouter');
54
55
  return 0;
55
56
  }
56
57
  const sub = argv[0] ?? 'status';
57
58
  if (sub === 'status') return authStatus();
59
+ if (sub === 'license-key') return configureLicenseKey(argv[1]);
58
60
  if (sub === 'clear' && argv[1] === 'openrouter') return clearOpenRouter();
59
61
  if (sub === 'openrouter') return configureOpenRouter(argv);
60
62
  console.error(`agentguard auth: unknown command '${argv.join(' ')}'`);
@@ -93,12 +95,28 @@ function authStatus(): number {
93
95
  } else {
94
96
  console.log(` ${yellow('openrouter')} not configured`);
95
97
  }
98
+ const licenseKey = readConfiguredLicenseKey();
99
+ if (licenseKey) {
100
+ console.log(` ${green('license')} configured fingerprint ${licenseKeyFingerprint(licenseKey)}`);
101
+ } else {
102
+ console.log(` ${yellow('license')} free tier`);
103
+ }
96
104
  console.log('');
97
105
  console.log(' ' + statusBar());
98
106
  console.log('');
99
107
  return 0;
100
108
  }
101
109
 
110
+ function configureLicenseKey(key?: string): number {
111
+ if (!key?.trim()) {
112
+ console.error('Usage: agentguard auth license-key <KEY>');
113
+ return 2;
114
+ }
115
+ writeConfiguredLicenseKey(key);
116
+ console.log(`License key saved. fingerprint ${licenseKeyFingerprint(key)}`);
117
+ return 0;
118
+ }
119
+
102
120
  function clearOpenRouter(): number {
103
121
  try { fs.unlinkSync(openRouterKeyPath()); } catch { return 0; }
104
122
  console.log('OpenRouter key removed.');