@agentguard-run/spend 0.4.0 → 0.4.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.
Files changed (68) hide show
  1. package/CHANGELOG.md +8 -2
  2. package/README.es-419.md +21 -4
  3. package/README.md +24 -5
  4. package/README.pt-BR.md +21 -4
  5. package/dist/{coach → advisor}/anomaly.d.ts +5 -5
  6. package/dist/advisor/anomaly.d.ts.map +1 -0
  7. package/dist/{coach → advisor}/anomaly.js +1 -1
  8. package/dist/advisor/anomaly.js.map +1 -0
  9. package/dist/{coach → advisor}/conversation.d.ts +23 -17
  10. package/dist/advisor/conversation.d.ts.map +1 -0
  11. package/dist/{coach → advisor}/conversation.js +63 -27
  12. package/dist/advisor/conversation.js.map +1 -0
  13. package/dist/{coach → advisor}/forecast.d.ts +4 -4
  14. package/dist/advisor/forecast.d.ts.map +1 -0
  15. package/dist/{coach → advisor}/forecast.js +1 -1
  16. package/dist/advisor/forecast.js.map +1 -0
  17. package/dist/{coach → advisor}/llm-client.d.ts +10 -10
  18. package/dist/advisor/llm-client.d.ts.map +1 -0
  19. package/dist/{coach → advisor}/llm-client.js +12 -12
  20. package/dist/advisor/llm-client.js.map +1 -0
  21. package/dist/{coach → advisor}/output.d.ts +12 -12
  22. package/dist/advisor/output.d.ts.map +1 -0
  23. package/dist/{coach → advisor}/output.js +42 -13
  24. package/dist/advisor/output.js.map +1 -0
  25. package/dist/advisor/posture.d.ts +26 -0
  26. package/dist/advisor/posture.d.ts.map +1 -0
  27. package/dist/advisor/posture.js +100 -0
  28. package/dist/advisor/posture.js.map +1 -0
  29. package/dist/{coach → advisor}/system-prompt.d.ts +5 -5
  30. package/dist/advisor/system-prompt.d.ts.map +1 -0
  31. package/dist/{coach → advisor}/system-prompt.js +21 -8
  32. package/dist/advisor/system-prompt.js.map +1 -0
  33. package/dist/cli/advisor.d.ts +5 -0
  34. package/dist/cli/advisor.d.ts.map +1 -0
  35. package/dist/cli/{coach.js → advisor.js} +63 -47
  36. package/dist/cli/advisor.js.map +1 -0
  37. package/dist/cli/main.d.ts.map +1 -1
  38. package/dist/cli/main.js +7 -6
  39. package/dist/cli/main.js.map +1 -1
  40. package/dist/index.d.ts +4 -4
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +11 -11
  43. package/dist/index.js.map +1 -1
  44. package/dist/telemetry.js +1 -1
  45. package/package.json +7 -7
  46. package/src/{coach → advisor}/anomaly.ts +9 -9
  47. package/src/{coach → advisor}/conversation.ts +80 -39
  48. package/src/{coach → advisor}/forecast.ts +5 -5
  49. package/src/{coach → advisor}/llm-client.ts +21 -21
  50. package/src/{coach → advisor}/output.ts +49 -20
  51. package/src/advisor/posture.ts +112 -0
  52. package/src/{coach → advisor}/system-prompt.ts +22 -8
  53. package/src/cli/{coach.ts → advisor.ts} +74 -58
  54. package/dist/cli/coach.d.ts +0 -5
  55. package/dist/cli/coach.d.ts.map +0 -1
  56. package/dist/cli/coach.js.map +0 -1
  57. package/dist/coach/anomaly.d.ts.map +0 -1
  58. package/dist/coach/anomaly.js.map +0 -1
  59. package/dist/coach/conversation.d.ts.map +0 -1
  60. package/dist/coach/conversation.js.map +0 -1
  61. package/dist/coach/forecast.d.ts.map +0 -1
  62. package/dist/coach/forecast.js.map +0 -1
  63. package/dist/coach/llm-client.d.ts.map +0 -1
  64. package/dist/coach/llm-client.js.map +0 -1
  65. package/dist/coach/output.d.ts.map +0 -1
  66. package/dist/coach/output.js.map +0 -1
  67. package/dist/coach/system-prompt.d.ts.map +0 -1
  68. package/dist/coach/system-prompt.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,9 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.1
4
+
5
+ - **Renamed `agentguard coach` to `agentguard advisor`** to better match the business-buyer mental model. The command name now aligns with the outcomes-based positioning, AI policy advisor for your business. v0.4.0 had zero downloads at the time of this release. The rename is clean with no alias.
6
+ - Session logs now stored at `~/.agentguard/advisor-sessions/`.
7
+ - **Added Governance Posture**: Velocity, Standard, and Compliance policy generation modes that shape enforcement mode, capability tiers, downgrade behavior, approval gates, and audit retention. Inspired by @_catwu's Claude Code velocity playbook.
8
+
3
9
  ## 0.4.0
4
10
 
5
- - Added `agentguard coach` subcommand: local LLM-driven policy setup via your OpenRouter key.
6
- - Added local Coach session logs, policy and quickstart writers, projected savings output, and review and forecast skeletons.
11
+ - Added `agentguard advisor` subcommand: local LLM-driven policy setup via your OpenRouter key.
12
+ - Added local Advisor session logs, policy and quickstart writers, projected savings output, and review and forecast skeletons.
7
13
 
8
14
  ## 0.3.0
9
15
 
package/README.es-419.md CHANGED
@@ -17,15 +17,32 @@ agentguard wizard
17
17
  El wizard escribe `~/.agentguard/policy.yaml`, `~/.agentguard/quickstart.ts` y `~/.agentguard/quickstart.py`. También imprime el snippet listo para pegar en su app.
18
18
 
19
19
 
20
- ## ¿Necesita ayuda configurando? Ejecute `agentguard coach`
20
+ ## ¿Necesita ayuda configurando? Ejecute `agentguard advisor`
21
21
 
22
- `agentguard coach` usa su clave de OpenRouter, o cualquier endpoint compatible con OpenAI vía `--base-url`, para guiar la configuración en su terminal. La infraestructura de AgentGuard nunca ve prompts, respuestas, claves, detalles de política ni el log de sesión.
22
+ `agentguard advisor` usa su clave de OpenRouter, o cualquier endpoint compatible con OpenAI vía `--base-url`, para guiar la configuración en su terminal. La infraestructura de AgentGuard nunca ve prompts, respuestas, claves, detalles de política ni el log de sesión.
23
23
 
24
24
  ```bash
25
- agentguard coach
25
+ agentguard advisor
26
26
  ```
27
27
 
28
- Coach escribe `~/.agentguard/policy.yaml`, un quickstart según el lenguaje, la matemática de ahorro proyectado y un log JSONL local en `~/.agentguard/coach-sessions/`.
28
+ Advisor escribe `~/.agentguard/policy.yaml`, un quickstart según el lenguaje, la matemática de ahorro proyectado y un log JSONL local en `~/.agentguard/advisor-sessions/`.
29
+
30
+ ## Postura de gobernanza
31
+
32
+ Advisor pregunta por un estilo operativo y lo usa para ajustar la política generada.
33
+
34
+ - `velocity`: equipos de software e IA que shippean rápido. Inicia en `shadow`, usa tiers de capacidad permisivos y baja rápido a modelos baratos.
35
+ - `standard`: la mayoría de SaaS, e-commerce, real estate, agencias, servicios locales y startups. Inicia en `enforce`, usa tiers balanceados y conserva 90 días de auditoría.
36
+ - `compliance`: legal, salud, dental, contabilidad, SOX, fintech y flujos regulados. Inicia en `canary`, exige tiers más estrictos, bloquea overflow regulado en vez de hacer downgrade y conserva 7 años de auditoría.
37
+
38
+ Puede sobrescribir la sugerencia:
39
+
40
+ ```bash
41
+ agentguard advisor --posture velocity
42
+ agentguard advisor --posture compliance
43
+ ```
44
+
45
+ La postura `custom` queda reservada para Outcome Builder en Solo tier.
29
46
 
30
47
  ## Por qué OpenRouter
31
48
 
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # @agentguard-run/spend
2
2
 
3
- > Local-runtime spend caps, capability-gated model routing, and signed receipts for AI agents.
3
+ > **AgentGuard proves what your AI agent attempted, who authorized it, what it cost, and whether it succeeded.**
4
+ >
5
+ > Local-runtime spend caps, capability-gated model routing, and Ed25519-signed receipts for AI agents.
4
6
 
5
7
  > Also available in: [Español (LATAM)](README.es-419.md) · [Português (BR)](README.pt-BR.md)
6
8
 
@@ -32,15 +34,32 @@ const response = await guardedClient.chat.completions.create({
32
34
  Then run your agent. AgentGuard decides locally before any provider call starts, signs the receipt, and applies allow, downgrade, shadow, or block.
33
35
 
34
36
 
35
- ## Need help configuring? Run `agentguard coach`
37
+ ## Need help configuring? Run `agentguard advisor`
36
38
 
37
- `agentguard coach` uses your OpenRouter key, or any OpenAI-compatible endpoint you pass with `--base-url`, to run a local setup dialogue in your terminal. AgentGuard infrastructure never sees the prompts, completions, keys, policy details, or session log.
39
+ `agentguard advisor` uses your OpenRouter key, or any OpenAI-compatible endpoint you pass with `--base-url`, to run a local setup dialogue in your terminal. AgentGuard infrastructure never sees the prompts, completions, keys, policy details, or session log.
38
40
 
39
41
  ```bash
40
- agentguard coach
42
+ agentguard advisor
41
43
  ```
42
44
 
43
- Coach writes `~/.agentguard/policy.yaml`, a language-aware quickstart file, projected savings math, and a local JSONL session log under `~/.agentguard/coach-sessions/`.
45
+ Advisor writes `~/.agentguard/policy.yaml`, a language-aware quickstart file, projected savings math, and a local JSONL session log under `~/.agentguard/advisor-sessions/`.
46
+
47
+ ## Governance Posture
48
+
49
+ Advisor asks for one operating-style input and uses it to shape the generated policy.
50
+
51
+ - `velocity`: high-ship software and AI teams. Starts in `shadow`, uses permissive capability tiers, and downgrades aggressively to cheaper models.
52
+ - `standard`: most SaaS, e-commerce, real estate, agencies, local services, and startups. Starts in `enforce`, uses balanced capability tiers, and keeps 90 days of audit retention.
53
+ - `compliance`: law, healthcare, dental, accounting, SOX, fintech, and regulated workflows. Starts in `canary`, requires stricter capability tiers, blocks regulated overflow instead of downgrading, and keeps 7 years of audit retention.
54
+
55
+ Override the suggestion when you already know how the team operates:
56
+
57
+ ```bash
58
+ agentguard advisor --posture velocity
59
+ agentguard advisor --posture compliance
60
+ ```
61
+
62
+ `custom` posture is reserved for the Solo tier Outcome Builder.
44
63
 
45
64
  ## Why OpenRouter?
46
65
 
package/README.pt-BR.md CHANGED
@@ -17,15 +17,32 @@ agentguard wizard
17
17
  O wizard escreve `~/.agentguard/policy.yaml`, `~/.agentguard/quickstart.ts` e `~/.agentguard/quickstart.py`. Ele também imprime o snippet pronto para colar no app.
18
18
 
19
19
 
20
- ## Precisa de ajuda para configurar? Rode `agentguard coach`
20
+ ## Precisa de ajuda para configurar? Rode `agentguard advisor`
21
21
 
22
- `agentguard coach` usa sua chave OpenRouter, ou qualquer endpoint compatível com OpenAI via `--base-url`, para guiar a configuração no terminal. A infraestrutura da AgentGuard nunca vê prompts, respostas, chaves, detalhes de política nem o log de sessão.
22
+ `agentguard advisor` usa sua chave OpenRouter, ou qualquer endpoint compatível com OpenAI via `--base-url`, para guiar a configuração no terminal. A infraestrutura da AgentGuard nunca vê prompts, respostas, chaves, detalhes de política nem o log de sessão.
23
23
 
24
24
  ```bash
25
- agentguard coach
25
+ agentguard advisor
26
26
  ```
27
27
 
28
- Coach escreve `~/.agentguard/policy.yaml`, um quickstart conforme a linguagem, a matemática de economia projetada e um log JSONL local em `~/.agentguard/coach-sessions/`.
28
+ Advisor escreve `~/.agentguard/policy.yaml`, um quickstart conforme a linguagem, a matemática de economia projetada e um log JSONL local em `~/.agentguard/advisor-sessions/`.
29
+
30
+ ## Postura de governança
31
+
32
+ Advisor pergunta por um estilo operacional e usa isso para ajustar a política gerada.
33
+
34
+ - `velocity`: times de software e IA que lançam rápido. Começa em `shadow`, usa tiers de capacidade permissivos e faz downgrade rápido para modelos baratos.
35
+ - `standard`: a maioria de SaaS, e-commerce, real estate, agências, serviços locais e startups. Começa em `enforce`, usa tiers balanceados e mantém 90 dias de auditoria.
36
+ - `compliance`: jurídico, saúde, dental, contabilidade, SOX, fintech e fluxos regulados. Começa em `canary`, exige tiers mais rígidos, bloqueia overflow regulado em vez de fazer downgrade e mantém 7 anos de auditoria.
37
+
38
+ Você pode sobrescrever a sugestão:
39
+
40
+ ```bash
41
+ agentguard advisor --posture velocity
42
+ agentguard advisor --posture compliance
43
+ ```
44
+
45
+ A postura `custom` fica reservada para o Outcome Builder no Solo tier.
29
46
 
30
47
  ## Por que OpenRouter
31
48
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AgentGuard(TM) Spend: local Coach anomaly review skeleton.
2
+ * AgentGuard(TM) Spend: local Advisor anomaly review skeleton.
3
3
  *
4
4
  * Reads local decision logs only. No network calls are made.
5
5
  *
@@ -7,13 +7,13 @@
7
7
  * (App. Nos. 63/983,615; 63/983,621; 63/983,843; 63/984,626;
8
8
  * 64/071,781; 64/071,789).
9
9
  */
10
- export interface CoachSpendPoint {
10
+ export interface AdvisorSpendPoint {
11
11
  ts: string;
12
12
  scope: string;
13
13
  agentId: string;
14
14
  cents: number;
15
15
  }
16
- export interface CoachAnomaly {
16
+ export interface AdvisorAnomaly {
17
17
  scope: string;
18
18
  agentId: string;
19
19
  last24hCents: number;
@@ -21,6 +21,6 @@ export interface CoachAnomaly {
21
21
  sigmaCents: number;
22
22
  suggestion: string;
23
23
  }
24
- export declare function readDecisionSpend(scope?: string, home?: string): CoachSpendPoint[];
25
- export declare function reviewAnomalies(points: CoachSpendPoint[], now?: Date): CoachAnomaly[];
24
+ export declare function readDecisionSpend(scope?: string, home?: string): AdvisorSpendPoint[];
25
+ export declare function reviewAnomalies(points: AdvisorSpendPoint[], now?: Date): AdvisorAnomaly[];
26
26
  //# sourceMappingURL=anomaly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anomaly.d.ts","sourceRoot":"","sources":["../../src/advisor/anomaly.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,SAAY,EAAE,IAAI,SAAmB,GAAG,iBAAiB,EAAE,CAuBjG;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,GAAG,OAAa,GAAG,cAAc,EAAE,CA6B/F"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * AgentGuard(TM) Spend: local Coach anomaly review skeleton.
3
+ * AgentGuard(TM) Spend: local Advisor anomaly review skeleton.
4
4
  *
5
5
  * Reads local decision logs only. No network calls are made.
6
6
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anomaly.js","sourceRoot":"","sources":["../../src/advisor/anomaly.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,27 @@
1
1
  /**
2
- * AgentGuard(TM) Spend: Coach conversation state.
2
+ * AgentGuard(TM) Spend: Advisor conversation state.
3
3
  *
4
4
  * Patent notice: Protected by U.S. patent-pending technology
5
5
  * (App. Nos. 63/983,615; 63/983,621; 63/983,843; 63/984,626;
6
6
  * 64/071,781; 64/071,789).
7
7
  */
8
8
  import type { CapabilityTier, SpendPolicy } from '../types';
9
- export type CoachQuestionId = 'building' | 'scale' | 'tasks' | 'budget' | 'confirm';
10
- export interface CoachQuestion {
11
- id: CoachQuestionId;
9
+ import { type GovernancePosture } from './posture';
10
+ export type AdvisorQuestionId = 'building' | 'posture' | 'scale' | 'tasks' | 'budget' | 'confirm';
11
+ export interface AdvisorQuestion {
12
+ id: AdvisorQuestionId;
12
13
  prompt: string;
13
14
  }
14
- export interface CoachAnswers {
15
+ export interface AdvisorAnswers {
15
16
  building?: string;
16
17
  scale?: string;
17
18
  tasks?: string;
18
19
  budget?: string;
19
20
  confirm?: string;
20
21
  language?: 'ts' | 'py';
22
+ posture?: GovernancePosture;
21
23
  }
22
- export interface CoachBusinessProfile {
24
+ export interface AdvisorBusinessProfile {
23
25
  vertical: string;
24
26
  tenantId: string;
25
27
  teamSize: number;
@@ -34,6 +36,7 @@ export interface CoachBusinessProfile {
34
36
  perMonthCapCents: number;
35
37
  scopeLabel: string;
36
38
  language: 'ts' | 'py';
39
+ posture: GovernancePosture;
37
40
  }
38
41
  export interface ProjectedSavingsRow {
39
42
  label: string;
@@ -48,22 +51,25 @@ export interface ProjectedSavings {
48
51
  monthlySavingsCents: number;
49
52
  savingsPercent: number;
50
53
  }
51
- export declare const COACH_QUESTIONS: CoachQuestion[];
52
- export declare class CoachConversation {
54
+ export declare const ADVISOR_QUESTIONS: AdvisorQuestion[];
55
+ export declare class AdvisorConversation {
53
56
  private answers;
54
57
  private index;
55
- constructor(initial?: CoachAnswers);
56
- currentQuestion(): CoachQuestion | null;
58
+ constructor(initial?: AdvisorAnswers);
59
+ currentQuestion(): AdvisorQuestion | null;
57
60
  answer(value: string): void;
58
- next(): CoachQuestion | null;
59
- back(): CoachQuestion | null;
61
+ next(): AdvisorQuestion | null;
62
+ back(): AdvisorQuestion | null;
60
63
  isComplete(): boolean;
61
- snapshot(): CoachAnswers;
62
- profile(cwd?: string): CoachBusinessProfile;
64
+ snapshot(): AdvisorAnswers;
65
+ setPosture(posture: GovernancePosture): void;
66
+ profile(cwd?: string): AdvisorBusinessProfile;
63
67
  }
64
- export declare function buildBusinessProfile(answers: CoachAnswers, cwd?: string): CoachBusinessProfile;
65
- export declare function buildPolicyFromProfile(profile: CoachBusinessProfile): SpendPolicy;
66
- export declare function projectedSavings(profile: CoachBusinessProfile): ProjectedSavings;
68
+ export declare function detectVertical(text: string): string;
69
+ export declare function suggestedPostureForText(text: string): GovernancePosture;
70
+ export declare function buildBusinessProfile(answers: AdvisorAnswers, cwd?: string): AdvisorBusinessProfile;
71
+ export declare function buildPolicyFromProfile(profile: AdvisorBusinessProfile): SpendPolicy;
72
+ export declare function projectedSavings(profile: AdvisorBusinessProfile): ProjectedSavings;
67
73
  export declare function formatCents(cents: number): string;
68
74
  export declare function detectProjectLanguage(cwd: string): 'ts' | 'py';
69
75
  //# sourceMappingURL=conversation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/advisor/conversation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAY,WAAW,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAuF,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAExI,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElG,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,iBAAiB,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,cAAc,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAO9C,CAAC;AAaF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,KAAK,CAAK;gBAEN,OAAO,CAAC,EAAE,cAAc;IAKpC,eAAe,IAAI,eAAe,GAAG,IAAI;IAWzC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU3B,IAAI,IAAI,eAAe,GAAG,IAAI;IAK9B,IAAI,IAAI,eAAe,GAAG,IAAI;IAK9B,UAAU,IAAI,OAAO;IAIrB,QAAQ,IAAI,cAAc;IAI1B,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAI5C,OAAO,CAAC,GAAG,SAAgB,GAAG,sBAAsB;CAGrD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAEvE;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAgB,GAAG,sBAAsB,CA0BzG;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,WAAW,CA4CnF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,GAAG,gBAAgB,CAgBlF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAQ9D"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * AgentGuard(TM) Spend: Coach conversation state.
3
+ * AgentGuard(TM) Spend: Advisor conversation state.
4
4
  *
5
5
  * Patent notice: Protected by U.S. patent-pending technology
6
6
  * (App. Nos. 63/983,615; 63/983,621; 63/983,843; 63/984,626;
@@ -40,7 +40,9 @@ var __importStar = (this && this.__importStar) || (function () {
40
40
  };
41
41
  })();
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.CoachConversation = exports.COACH_QUESTIONS = void 0;
43
+ exports.AdvisorConversation = exports.ADVISOR_QUESTIONS = void 0;
44
+ exports.detectVertical = detectVertical;
45
+ exports.suggestedPostureForText = suggestedPostureForText;
44
46
  exports.buildBusinessProfile = buildBusinessProfile;
45
47
  exports.buildPolicyFromProfile = buildPolicyFromProfile;
46
48
  exports.projectedSavings = projectedSavings;
@@ -48,8 +50,10 @@ exports.formatCents = formatCents;
48
50
  exports.detectProjectLanguage = detectProjectLanguage;
49
51
  const fs = __importStar(require("fs"));
50
52
  const path = __importStar(require("path"));
51
- exports.COACH_QUESTIONS = [
53
+ const posture_1 = require("./posture");
54
+ exports.ADVISOR_QUESTIONS = [
52
55
  { id: 'building', prompt: 'What are you building or running? Include your business type and the agent workflow.' },
56
+ { id: 'posture', prompt: 'Confirm or change governance posture: Velocity / Standard / Compliance.' },
53
57
  { id: 'scale', prompt: 'How big is the team and roughly how many AI calls, tickets, orders, encounters, matters, or jobs happen per month?' },
54
58
  { id: 'tasks', prompt: 'What are the top 3 AI tasks this agent will perform?' },
55
59
  { id: 'budget', prompt: 'What monthly AI budget or per-task ceiling should this stay under?' },
@@ -65,7 +69,7 @@ const VERTICAL_HINTS = [
65
69
  { vertical: 'marketing', needles: ['marketing', 'agency', 'content', 'campaign', 'brand'], scopeLabel: 'campaign', capability: 'data_write', primary: 'openai/gpt-5-mini', fallback: 'openai/gpt-4o-mini', perCall: 25 },
66
70
  { vertical: 'local-services', needles: ['salon', 'gym', 'restaurant', 'landscaping', 'construction', 'photography', 'fitness', 'pet'], scopeLabel: 'job', capability: 'data_write', primary: 'openai/gpt-5-mini', fallback: 'openai/gpt-4o-mini', perCall: 25 },
67
71
  ];
68
- class CoachConversation {
72
+ class AdvisorConversation {
69
73
  answers = {};
70
74
  index = 0;
71
75
  constructor(initial) {
@@ -74,16 +78,28 @@ class CoachConversation {
74
78
  this.index = firstMissingIndex(this.answers);
75
79
  }
76
80
  currentQuestion() {
77
- return exports.COACH_QUESTIONS[this.index] ?? null;
81
+ const question = exports.ADVISOR_QUESTIONS[this.index] ?? null;
82
+ if (question?.id !== 'posture')
83
+ return question;
84
+ const vertical = detectVertical(this.answers.building ?? '');
85
+ const suggested = (0, posture_1.suggestPostureForVertical)(vertical);
86
+ return {
87
+ id: 'posture',
88
+ prompt: `Based on ${vertical}, we suggest ${suggested} governance posture. Confirm or change: Velocity / Standard / Compliance.`,
89
+ };
78
90
  }
79
91
  answer(value) {
80
92
  const question = this.currentQuestion();
81
93
  if (!question)
82
94
  return;
95
+ if (question.id === 'posture') {
96
+ this.answers.posture = (0, posture_1.normalizePosture)(value) ?? suggestedPostureForText(this.answers.building ?? '');
97
+ return;
98
+ }
83
99
  this.answers[question.id] = value.trim();
84
100
  }
85
101
  next() {
86
- this.index = Math.min(this.index + 1, exports.COACH_QUESTIONS.length);
102
+ this.index = Math.min(this.index + 1, exports.ADVISOR_QUESTIONS.length);
87
103
  return this.currentQuestion();
88
104
  }
89
105
  back() {
@@ -91,19 +107,30 @@ class CoachConversation {
91
107
  return this.currentQuestion();
92
108
  }
93
109
  isComplete() {
94
- return exports.COACH_QUESTIONS.every((question) => Boolean(this.answers[question.id]?.trim()));
110
+ return exports.ADVISOR_QUESTIONS.every((question) => Boolean(this.answers[question.id]?.trim()));
95
111
  }
96
112
  snapshot() {
97
113
  return { ...this.answers };
98
114
  }
115
+ setPosture(posture) {
116
+ this.answers.posture = posture;
117
+ }
99
118
  profile(cwd = process.cwd()) {
100
119
  return buildBusinessProfile(this.answers, cwd);
101
120
  }
102
121
  }
103
- exports.CoachConversation = CoachConversation;
122
+ exports.AdvisorConversation = AdvisorConversation;
123
+ function detectVertical(text) {
124
+ const joined = text.toLowerCase();
125
+ return (VERTICAL_HINTS.find((candidate) => candidate.needles.some((needle) => joined.includes(needle))) ?? VERTICAL_HINTS[0]).vertical;
126
+ }
127
+ function suggestedPostureForText(text) {
128
+ return (0, posture_1.suggestPostureForVertical)(detectVertical(text));
129
+ }
104
130
  function buildBusinessProfile(answers, cwd = process.cwd()) {
105
131
  const joined = `${answers.building ?? ''} ${answers.scale ?? ''} ${answers.tasks ?? ''}`.toLowerCase();
106
132
  const hint = VERTICAL_HINTS.find((candidate) => candidate.needles.some((needle) => joined.includes(needle))) ?? VERTICAL_HINTS[0];
133
+ const posture = answers.posture ?? (0, posture_1.suggestPostureForVertical)(hint.vertical);
107
134
  const scale = parseScale(answers.scale ?? '');
108
135
  const budgetCents = parseBudgetCents(answers.budget ?? '', Math.max(4900, Math.ceil(scale.monthlyVolume * hint.perCall * 0.35)));
109
136
  const tasks = parseTasks(answers.tasks ?? answers.building ?? hint.vertical);
@@ -116,7 +143,7 @@ function buildBusinessProfile(answers, cwd = process.cwd()) {
116
143
  monthlyVolume: scale.monthlyVolume,
117
144
  tasks,
118
145
  monthlyBudgetCents: perMonthCapCents,
119
- requiredCapability: capabilityFor(joined, hint.capability),
146
+ requiredCapability: capabilityFor(joined, hint.capability, posture),
120
147
  primaryModel: hint.primary,
121
148
  fallbackModel: hint.fallback,
122
149
  perCallCapCents: hint.perCall,
@@ -124,17 +151,30 @@ function buildBusinessProfile(answers, cwd = process.cwd()) {
124
151
  perMonthCapCents,
125
152
  scopeLabel: hint.scopeLabel,
126
153
  language: answers.language ?? detectProjectLanguage(cwd),
154
+ posture,
127
155
  };
128
156
  }
129
157
  function buildPolicyFromProfile(profile) {
158
+ const posture = (0, posture_1.postureProfile)(profile.posture);
159
+ const conservativeBlock = profile.posture === 'compliance' && profile.requiredCapability !== 'read_only';
160
+ const perCallAmount = profile.posture === 'velocity'
161
+ ? Math.max(1, Math.ceil(profile.perCallCapCents * 0.6))
162
+ : profile.perCallCapCents;
130
163
  const caps = [
131
- {
132
- amountCents: profile.perCallCapCents,
133
- window: 'per_call',
134
- action: 'downgrade',
135
- downgradeTo: profile.fallbackModel,
136
- reason: 'Per-call budget reached, route to fallback model',
137
- },
164
+ conservativeBlock
165
+ ? {
166
+ amountCents: perCallAmount,
167
+ window: 'per_call',
168
+ action: 'block',
169
+ reason: 'Per-call regulated capability budget reached',
170
+ }
171
+ : {
172
+ amountCents: perCallAmount,
173
+ window: 'per_call',
174
+ action: 'downgrade',
175
+ downgradeTo: profile.fallbackModel,
176
+ reason: 'Per-call budget reached, route to fallback model',
177
+ },
138
178
  {
139
179
  amountCents: profile.perDayCapCents,
140
180
  window: 'per_day',
@@ -149,11 +189,11 @@ function buildPolicyFromProfile(profile) {
149
189
  },
150
190
  ];
151
191
  return {
152
- id: `coach-${profile.vertical}-v1`,
153
- name: `Coach generated ${profile.vertical} policy`,
192
+ id: `advisor-${profile.vertical}-v1`,
193
+ name: `Advisor generated ${profile.vertical} policy`,
154
194
  scope: { tenantId: profile.tenantId },
155
195
  caps,
156
- mode: 'enforce',
196
+ mode: posture.defaultMode,
157
197
  requiredCapability: profile.requiredCapability,
158
198
  version: 1,
159
199
  effectiveFrom: new Date().toISOString(),
@@ -192,8 +232,8 @@ function detectProjectLanguage(cwd) {
192
232
  return 'ts';
193
233
  }
194
234
  function firstMissingIndex(answers) {
195
- const index = exports.COACH_QUESTIONS.findIndex((question) => !answers[question.id]?.trim());
196
- return index === -1 ? exports.COACH_QUESTIONS.length : index;
235
+ const index = exports.ADVISOR_QUESTIONS.findIndex((question) => !answers[question.id]?.trim());
236
+ return index === -1 ? exports.ADVISOR_QUESTIONS.length : index;
197
237
  }
198
238
  function parseScale(value) {
199
239
  const numbers = (value.match(/\d[\d,]*/g) ?? []).map((part) => Number(part.replace(/,/g, ''))).filter(Number.isFinite);
@@ -218,11 +258,7 @@ function tenantIdFromBusiness(value) {
218
258
  const cleaned = value.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '').slice(0, 40);
219
259
  return cleaned || 'local-business';
220
260
  }
221
- function capabilityFor(text, fallback) {
222
- if (/refund|payment|charge|dispute|money|invoice/.test(text))
223
- return 'payment_initiate';
224
- if (/write|update|ledger|chart|patient|health|phi|sox|legal|contract|tax|student|employment/.test(text))
225
- return 'data_write';
226
- return fallback;
261
+ function capabilityFor(text, fallback, posture) {
262
+ return (0, posture_1.applyPostureCapability)(posture, text, fallback);
227
263
  }
228
264
  //# sourceMappingURL=conversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/advisor/conversation.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsIH,wCAGC;AAED,0DAEC;AAGD,oDA0BC;AAED,wDA4CC;AAED,4CAgBC;AAED,kCAEC;AAED,sDAQC;AAtPD,uCAAyB;AACzB,2CAA6B;AAE7B,uCAAwI;AAoD3H,QAAA,iBAAiB,GAAsB;IAClD,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,sFAAsF,EAAE;IAClH,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,yEAAyE,EAAE;IACpG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,oHAAoH,EAAE;IAC7I,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,sDAAsD,EAAE;IAC/E,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,oEAAoE,EAAE;IAC9F,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,2FAA2F,EAAE;CACvH,CAAC;AAEF,MAAM,cAAc,GAAuJ;IACzK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,4BAA4B,EAAE,OAAO,EAAE,GAAG,EAAE;IAC7P,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,gCAAgC,EAAE,QAAQ,EAAE,uBAAuB,EAAE,OAAO,EAAE,GAAG,EAAE;IACvQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAAE,EAAE;IACzP,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,4BAA4B,EAAE,OAAO,EAAE,GAAG,EAAE;IACzQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAAE,EAAE;IAChP,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAAE,EAAE;IACrP,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAAE,EAAE;IACxN,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAAE,EAAE;CAChQ,CAAC;AAEF,MAAa,mBAAmB;IACtB,OAAO,GAAmB,EAAE,CAAC;IAC7B,KAAK,GAAG,CAAC,CAAC;IAElB,YAAY,OAAwB;QAClC,IAAI,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,eAAe;QACb,MAAM,QAAQ,GAAG,yBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;QACvD,IAAI,QAAQ,EAAE,EAAE,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;QAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAA,mCAAyB,EAAC,QAAQ,CAAC,CAAC;QACtD,OAAO;YACL,EAAE,EAAE,SAAS;YACb,MAAM,EAAE,YAAY,QAAQ,gBAAgB,SAAS,2EAA2E;SACjI,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAA,0BAAgB,EAAC,KAAK,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YACvG,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,yBAAiB,CAAC,MAAM,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;IAED,UAAU;QACR,OAAO,yBAAiB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,UAAU,CAAC,OAA0B;QACnC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,OAAO,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;CACF;AAvDD,kDAuDC;AAED,SAAgB,cAAc,CAAC,IAAY;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAE,CAAC,CAAC,QAAQ,CAAC;AAC1I,CAAC;AAED,SAAgB,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAA,mCAAyB,EAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAGD,SAAgB,oBAAoB,CAAC,OAAuB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC/E,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;IACvG,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAE,CAAC;IACnI,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAA,mCAAyB,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACjI,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7E,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;IACrF,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QACjE,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,KAAK;QACL,kBAAkB,EAAE,gBAAgB;QACpC,kBAAkB,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;QACnE,YAAY,EAAE,IAAI,CAAC,OAAO;QAC1B,aAAa,EAAE,IAAI,CAAC,QAAQ;QAC5B,eAAe,EAAE,IAAI,CAAC,OAAO;QAC7B,cAAc;QACd,gBAAgB;QAChB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,qBAAqB,CAAC,GAAG,CAAC;QACxD,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAA+B;IACpE,MAAM,OAAO,GAAG,IAAA,wBAAc,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,KAAK,YAAY,IAAI,OAAO,CAAC,kBAAkB,KAAK,WAAW,CAAC;IACzG,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,KAAK,UAAU;QAClD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC;QACvD,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;IAC5B,MAAM,IAAI,GAAe;QACvB,iBAAiB;YACf,CAAC,CAAC;gBACE,WAAW,EAAE,aAAa;gBAC1B,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,8CAA8C;aACvD;YACH,CAAC,CAAC;gBACE,WAAW,EAAE,aAAa;gBAC1B,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,OAAO,CAAC,aAAa;gBAClC,MAAM,EAAE,kDAAkD;aAC3D;QACL;YACE,WAAW,EAAE,OAAO,CAAC,cAAc;YACnC,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,sBAAsB;SAC/B;QACD;YACE,WAAW,EAAE,OAAO,CAAC,gBAAgB;YACrC,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,wBAAwB;SACjC;KACF,CAAC;IACF,OAAO;QACL,EAAE,EAAE,WAAW,OAAO,CAAC,QAAQ,KAAK;QACpC,IAAI,EAAE,qBAAqB,OAAO,CAAC,QAAQ,SAAS;QACpD,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;QACrC,IAAI;QACJ,IAAI,EAAE,OAAO,CAAC,WAAW;QACzB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACxC,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAA+B;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC7E,MAAM,kBAAkB,GAAG,OAAO,CAAC,aAAa,GAAG,YAAY,CAAC;IAChE,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC;IACpG,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,GAAG,iBAAiB,CAAC,CAAC;IAChF,OAAO;QACL,IAAI,EAAE;YACJ,EAAE,KAAK,EAAE,8BAA8B,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;YAC1G,EAAE,KAAK,EAAE,kCAAkC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,EAAE;SAChI;QACD,kBAAkB;QAClB,iBAAiB;QACjB,mBAAmB;QACnB,cAAc,EAAE,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1G,CAAC;AACJ,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa;IACvC,OAAO,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7G,CAAC;AAED,SAAgB,qBAAqB,CAAC,GAAW;IAC/C,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACtH,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAuB;IAChD,MAAM,KAAK,GAAG,yBAAiB,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACvF,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACzD,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACpE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,QAAgB;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtF,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,CAAC,CAAC;AAC5G,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnG,OAAO,OAAO,IAAI,gBAAgB,CAAC;AACrC,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,QAAwB,EAAE,OAA0B;IACvF,OAAO,IAAA,gCAAsB,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AgentGuard(TM) Spend: local Coach forecast skeleton.
2
+ * AgentGuard(TM) Spend: local Advisor forecast skeleton.
3
3
  *
4
4
  * Reads local decision logs only. No network calls are made.
5
5
  *
@@ -7,13 +7,13 @@
7
7
  * (App. Nos. 63/983,615; 63/983,621; 63/983,843; 63/984,626;
8
8
  * 64/071,781; 64/071,789).
9
9
  */
10
- import type { CoachSpendPoint } from './anomaly';
11
- export interface CoachForecast {
10
+ import type { AdvisorSpendPoint } from './anomaly';
11
+ export interface AdvisorForecast {
12
12
  daysObserved: number;
13
13
  monthEndCents: number;
14
14
  capCents: number | null;
15
15
  overCap: boolean;
16
16
  message: string;
17
17
  }
18
- export declare function forecastMonthEnd(points: CoachSpendPoint[], capCents?: number | null, now?: Date): CoachForecast;
18
+ export declare function forecastMonthEnd(points: AdvisorSpendPoint[], capCents?: number | null, now?: Date): AdvisorForecast;
19
19
  //# sourceMappingURL=forecast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forecast.d.ts","sourceRoot":"","sources":["../../src/advisor/forecast.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,EAAE,GAAG,OAAa,GAAG,eAAe,CAoB/H"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * AgentGuard(TM) Spend: local Coach forecast skeleton.
3
+ * AgentGuard(TM) Spend: local Advisor forecast skeleton.
4
4
  *
5
5
  * Reads local decision logs only. No network calls are made.
6
6
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forecast.js","sourceRoot":"","sources":["../../src/advisor/forecast.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AgentGuard(TM) Spend: local Coach LLM client.
2
+ * AgentGuard(TM) Spend: local Advisor LLM client.
3
3
  *
4
4
  * All provider calls go from the customer terminal to the configured provider.
5
5
  * No AgentGuard service is contacted for prompts or completions.
@@ -8,24 +8,24 @@
8
8
  * (App. Nos. 63/983,615; 63/983,621; 63/983,843; 63/984,626;
9
9
  * 64/071,781; 64/071,789).
10
10
  */
11
- export type CoachProvider = 'openrouter' | 'openai' | 'anthropic' | 'compatible' | 'mock';
12
- export interface CoachChatMessage {
11
+ export type AdvisorProvider = 'openrouter' | 'openai' | 'anthropic' | 'compatible' | 'mock';
12
+ export interface AdvisorChatMessage {
13
13
  role: 'system' | 'user' | 'assistant';
14
14
  content: string;
15
15
  }
16
- export interface CoachClientOptions {
17
- provider?: CoachProvider;
16
+ export interface AdvisorClientOptions {
17
+ provider?: AdvisorProvider;
18
18
  apiKey?: string;
19
19
  baseUrl?: string;
20
20
  model?: string;
21
21
  timeoutMs?: number;
22
22
  fetchImpl?: FetchLike;
23
23
  }
24
- export interface CoachClient {
25
- provider: CoachProvider;
24
+ export interface AdvisorClient {
25
+ provider: AdvisorProvider;
26
26
  model: string;
27
27
  baseUrl: string;
28
- streamChat(messages: CoachChatMessage[], signal?: AbortSignalLike): AsyncIterable<string>;
28
+ streamChat(messages: AdvisorChatMessage[], signal?: AbortSignalLike): AsyncIterable<string>;
29
29
  }
30
30
  type FetchLike = (url: string, init: Record<string, unknown>) => Promise<any>;
31
31
  type AbortSignalLike = {
@@ -34,8 +34,8 @@ type AbortSignalLike = {
34
34
  once?: boolean;
35
35
  }) => void;
36
36
  };
37
- export declare function resolveCoachApiKey(provider?: CoachProvider, explicit?: string): string | null;
38
- export declare function createCoachClient(options?: CoachClientOptions): CoachClient;
37
+ export declare function resolveAdvisorApiKey(provider?: AdvisorProvider, explicit?: string): string | null;
38
+ export declare function createAdvisorClient(options?: AdvisorClientOptions): AdvisorClient;
39
39
  export declare function parseSseResponse(response: any, pickText: (json: any) => string): AsyncIterable<string>;
40
40
  export {};
41
41
  //# sourceMappingURL=llm-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../src/advisor/llm-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,CAAC;AAE5F,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,QAAQ,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;CAC7F;AAED,KAAK,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAE9E,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAChG,CAAC;AAYF,wBAAgB,oBAAoB,CAAC,QAAQ,GAAE,eAA8B,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY/G;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAwBrF;AAiED,wBAAuB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAmB7G"}