@mapick/cost-firewall 0.1.0 โ†’ 0.2.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 (62) hide show
  1. package/README.md +56 -68
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/cli/index.js +25 -11
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +2 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/dashboard/html.d.ts.map +1 -1
  9. package/dist/dashboard/html.js +82 -38
  10. package/dist/dashboard/html.js.map +1 -1
  11. package/dist/hooks/before-agent-reply.d.ts +9 -0
  12. package/dist/hooks/before-agent-reply.d.ts.map +1 -1
  13. package/dist/hooks/before-agent-reply.js +42 -6
  14. package/dist/hooks/before-agent-reply.js.map +1 -1
  15. package/dist/hooks/before-model-resolve.d.ts +20 -0
  16. package/dist/hooks/before-model-resolve.d.ts.map +1 -0
  17. package/dist/hooks/before-model-resolve.js +30 -0
  18. package/dist/hooks/before-model-resolve.js.map +1 -0
  19. package/dist/hooks/index.d.ts.map +1 -1
  20. package/dist/hooks/index.js +6 -2
  21. package/dist/hooks/index.js.map +1 -1
  22. package/dist/hooks/model-call.d.ts.map +1 -1
  23. package/dist/hooks/model-call.js +14 -1
  24. package/dist/hooks/model-call.js.map +1 -1
  25. package/dist/pricing.d.ts +2 -4
  26. package/dist/pricing.d.ts.map +1 -1
  27. package/dist/pricing.js +2 -29
  28. package/dist/pricing.js.map +1 -1
  29. package/dist/provider/auth.d.ts.map +1 -1
  30. package/dist/provider/auth.js +11 -3
  31. package/dist/provider/auth.js.map +1 -1
  32. package/dist/provider/index.d.ts +8 -0
  33. package/dist/provider/index.d.ts.map +1 -1
  34. package/dist/provider/index.js +13 -8
  35. package/dist/provider/index.js.map +1 -1
  36. package/dist/provider/stream.d.ts +2 -7
  37. package/dist/provider/stream.d.ts.map +1 -1
  38. package/dist/provider/stream.js +1 -119
  39. package/dist/provider/stream.js.map +1 -1
  40. package/dist/provider/synthetic.d.ts.map +1 -1
  41. package/dist/provider/synthetic.js +10 -1
  42. package/dist/provider/synthetic.js.map +1 -1
  43. package/dist/provider/upstream/anthropic.d.ts +1 -1
  44. package/dist/provider/upstream/anthropic.d.ts.map +1 -1
  45. package/dist/provider/upstream/anthropic.js +12 -4
  46. package/dist/provider/upstream/anthropic.js.map +1 -1
  47. package/dist/provider/upstream/openai.d.ts +1 -1
  48. package/dist/provider/upstream/openai.d.ts.map +1 -1
  49. package/dist/provider/upstream/openai.js +2 -3
  50. package/dist/provider/upstream/openai.js.map +1 -1
  51. package/dist/source.js +3 -3
  52. package/dist/source.js.map +1 -1
  53. package/dist/state.js +1 -1
  54. package/dist/store.d.ts +2 -3
  55. package/dist/store.d.ts.map +1 -1
  56. package/dist/store.js +6 -12
  57. package/dist/store.js.map +1 -1
  58. package/dist/types.d.ts +1 -0
  59. package/dist/types.d.ts.map +1 -1
  60. package/dist/types.js.map +1 -1
  61. package/openclaw.plugin.json +49 -13
  62. package/package.json +5 -3
package/README.md CHANGED
@@ -11,6 +11,12 @@ AI Call Firewall โ€” real-time monitoring, budget control, automatic circuit bre
11
11
 
12
12
  ## Install
13
13
 
14
+ **One-click:**
15
+ ```bash
16
+ curl -fsSL https://raw.githubusercontent.com/mapick-ai/cost-firewall/main/install.sh | bash
17
+ ```
18
+
19
+ **Manual:**
14
20
  ```bash
15
21
  openclaw plugins install @mapick/cost-firewall
16
22
  openclaw plugins enable mapick-firewall
@@ -24,15 +30,19 @@ Dashboard: **http://localhost:18789/mapick/dashboard**
24
30
 
25
31
  ## Commands
26
32
 
27
- | In Chat | CLI | Action |
28
- |---|---|---|
29
- | `/firewall` | `openclaw firewall status` | Status |
30
- | `/firewall stop` | `openclaw firewall stop` | ๐Ÿ›‘ Emergency stop |
31
- | `/firewall resume` | `openclaw firewall resume` | โ–ถ๏ธ Resume |
32
- | โ€” | `openclaw firewall mode observe\|protect` | Toggle mode |
33
- | `/firewall budget` | `openclaw firewall budget set\|reset` | Daily token limit |
34
- | `/firewall log` | `openclaw firewall log` | Recent events |
35
- | โ€” | `openclaw firewall reset <source>` | Clear cooldown |
33
+ | CLI | Action |
34
+ |---|---|
35
+ | `openclaw firewall status` | View status (mode, tokens, blocked, limit) |
36
+ | `openclaw firewall stop` | ๐Ÿ›‘ Emergency stop โ€” block all AI calls |
37
+ | `openclaw firewall resume` | โ–ถ๏ธ Resume after stop |
38
+ | `openclaw firewall mode observe` | Observe mode โ€” record only, no blocking |
39
+ | `openclaw firewall mode protect` | Protect mode โ€” enable all breaker rules |
40
+ | `openclaw firewall budget set 50000` | Set daily token limit to 50K |
41
+ | `openclaw firewall budget reset` | Remove daily token limit |
42
+ | `openclaw firewall log --last 20` | Show last 20 events |
43
+ | `openclaw firewall reset <source>` | Reset a source from cooldown |
44
+
45
+ In OpenClaw chat: `/firewall status`, `/firewall stop`, `/firewall resume`, `/firewall log`
36
46
 
37
47
  ---
38
48
 
@@ -63,99 +73,77 @@ Dashboard: **http://localhost:18789/mapick/dashboard**
63
73
 
64
74
  ---
65
75
 
66
- ## Defaults
76
+ ## Breaking Rules
77
+
78
+ Firewall has two modes: **Observe** (record, don't block) and **Protect** (active blocking).
79
+
80
+ | Rule | Trigger | Effect |
81
+ |---|---|---|
82
+ | Emergency Stop | `openclaw firewall stop` | Block all calls |
83
+ | Daily Token Limit | Today's tokens โ‰ฅ limit | Block all calls |
84
+ | Consecutive Failures | N failures in a row | Block source for cooldown |
85
+ | Token Velocity | N tokens in W seconds | Block source for cooldown |
86
+ | Call Frequency | N calls in W seconds | Block source for cooldown |
87
+
88
+ ### Defaults
67
89
 
68
90
  | Rule | Threshold | Window | Cooldown |
69
91
  |---|---|---|---|
70
92
  | Consecutive Failures | 3 | โ€” | 30s |
71
93
  | Token Velocity | 100K tokens | 60s | 30s |
72
94
  | Call Frequency | 30 calls | 60s | 30s |
73
- | Daily Token Limit | unlimited | โ€” | โ€” |
95
+ | Daily Token Limit | None (unlimited) | โ€” | โ€” |
74
96
 
75
97
  ---
76
98
 
77
99
  ## AI Installation Checklist
78
100
 
79
- Use this checklist when installing the firewall automatically:
80
-
81
- ```markdown
82
- ## Installation Steps
83
-
84
- 1. Install the npm package:
85
- ```bash
86
- openclaw plugins install @mapick/cost-firewall
87
- ```
88
-
89
- 2. Enable the plugin:
90
- ```bash
91
- openclaw plugins enable mapick-firewall
92
- ```
101
+ Copy the entire block below and execute:
93
102
 
94
- 3. Verify it's registered:
95
- ```bash
96
- openclaw plugins list | grep mapick-firewall
97
- ```
98
- Expected: should show `mapick-firewall` in the list.
99
-
100
- 4. Restart gateway:
101
- ```bash
102
- openclaw gateway restart
103
- ```
103
+ ```bash
104
+ # 1. Install the plugin
105
+ openclaw plugins install @mapick/cost-firewall
104
106
 
105
- 5. Verify it's working:
106
- ```bash
107
- openclaw firewall status
108
- ```
109
- Expected: returns JSON with mode, today_tokens, today_blocked, etc.
107
+ # 2. Enable it
108
+ openclaw plugins enable mapick-firewall
110
109
 
111
- 6. Optionally, set a daily token budget:
112
- ```bash
113
- openclaw firewall budget set 500000
114
- ```
110
+ # 3. Verify registration
111
+ openclaw plugins list | grep mapick-firewall
115
112
 
116
- ## Routing calls through the firewall
113
+ # 4. Restart gateway
114
+ openclaw gateway restart
117
115
 
118
- To route AI calls through the firewall, configure the model with `mapick/` prefix:
116
+ # 5. Verify it works
117
+ openclaw firewall status
119
118
 
120
- ```json
121
- {
122
- "agents": {
123
- "defaults": {
124
- "model": {
125
- "primary": "mapick/deepseek/deepseek-chat",
126
- "fallbacks": ["mapick/anthropic/claude-sonnet-4-20250514"]
127
- }
128
- }
129
- }
130
- }
119
+ # 6. Optional: set a daily token budget
120
+ openclaw firewall budget set 500000
131
121
  ```
132
122
 
133
- Format: `mapick/<upstream>/<model-id>`
134
- Supported upstreams: `openai`, `anthropic`, `deepseek`, `openrouter`, `qwen`
135
-
136
- ## Validation
137
-
138
- After installation, the AI should verify:
123
+ After installation, verify:
139
124
  - [ ] `openclaw plugins list` shows `mapick-firewall` (enabled)
140
125
  - [ ] `openclaw firewall status` returns valid JSON
141
126
  - [ ] Dashboard accessible at http://localhost:18789/mapick/dashboard
142
127
  - [ ] Model config uses `mapick/` prefix if firewall protection is desired
143
128
  - [ ] Fallbacks also use `mapick/` prefix (non-mapick fallbacks bypass the firewall)
144
- ```
145
129
 
146
130
  ---
147
131
 
148
- ## Development
132
+ ## Known Limitations
133
+
134
+ - **Provider Layer**: `mapick/*` model routing is registered and unit-tested, but end-to-end gateway contract validation (createStreamFn invocation, synthetic stream delivery, fallback routing) is pending.
135
+ - **Message format**: Plain text calls work; tool calls, system prompts, and reasoning payloads may need format conversion for upstream APIs.
136
+
137
+ ---
138
+
139
+ ## Dev
149
140
 
150
141
  ```bash
151
142
  pnpm install
152
143
  pnpm build
153
144
  pnpm test
154
- pnpm dev # tsc --watch
155
145
  ```
156
146
 
157
- See [RELEASE.md](./RELEASE.md) for release process.
158
-
159
147
  ## License
160
148
 
161
149
  MIT
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAqBjD,yCAAyC;AACzC,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1G,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB,CAAC,CAmBD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAwHnF;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDzF;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAKhF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAqBjD,yCAAyC;AACzC,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1G,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB,CAAC,CAmBD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAqInF;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDzF;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAKhF"}
package/dist/cli/index.js CHANGED
@@ -49,17 +49,31 @@ export function registerCli(api, state, store) {
49
49
  firewall.command("status")
50
50
  .description("Show firewall status")
51
51
  .action(async () => {
52
- const agg = await aggregateFromJsonl(store, state.globalStats.todayTokens, state.globalStats.todayBlocked);
53
- const cooling = state.breaker.getCoolingSources();
54
- console.log(JSON.stringify({
55
- mode: state.globalStats.mode,
56
- emergency_stop: state.globalStats.emergencyStop,
57
- today_tokens: agg.today_tokens,
58
- today_blocked: agg.today_blocked,
59
- daily_token_limit: state.config.dailyTokenLimit,
60
- cooldown_sec: state.config.breaker?.cooldownSec,
61
- cooling_sources: cooling,
62
- }, null, 2));
52
+ // Read from gateway to get the real runtime state
53
+ const data = await new Promise((resolve) => {
54
+ http.get(`${API_BASE}/mapick/api/stats`, (res) => {
55
+ let body = "";
56
+ res.on("data", (c) => body += c);
57
+ res.on("end", () => resolve(body));
58
+ }).on("error", () => resolve(""));
59
+ });
60
+ if (data) {
61
+ console.log(JSON.stringify(JSON.parse(data), null, 2));
62
+ }
63
+ else {
64
+ // Fallback to local state
65
+ const agg = await aggregateFromJsonl(store, state.globalStats.todayTokens, state.globalStats.todayBlocked);
66
+ const cooling = state.breaker.getCoolingSources();
67
+ console.log(JSON.stringify({
68
+ mode: state.globalStats.mode,
69
+ emergency_stop: state.globalStats.emergencyStop,
70
+ today_tokens: agg.today_tokens,
71
+ today_blocked: agg.today_blocked,
72
+ daily_token_limit: state.config.dailyTokenLimit,
73
+ cooldown_sec: state.config.breaker?.cooldownSec,
74
+ cooling_sources: cooling,
75
+ }, null, 2));
76
+ }
63
77
  });
64
78
  firewall.command("reset")
65
79
  .description("Reset a source from cooldown")
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAa,MAAM,kBAAkB,CAAC;AAGvD,OAAO,IAAI,MAAM,WAAW,CAAC;AAK7B,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAE1C,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ,oBAAoB,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACpH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACjC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,yCAAyC;AACzC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAiB,EAAE,SAAiB,EAAE,UAAkB;IAK/F,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;IAC9B,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IACrC,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/D,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,CAAC,GAAkB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO;oBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAEhC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5H,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IACvE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;AACvH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAQ,EAAE,KAAoB,EAAE,KAAiB;IAC3E,GAAG,CAAC,WAAW,CACb,CAAC,EAAE,OAAO,EAAO,EAAE,EAAE;QACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;QAE1F,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;aACvB,WAAW,CAAC,sBAAsB,CAAC;aACnC,MAAM,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAC3G,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACzB,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;gBAC5B,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,aAAa;gBAC/C,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe;gBAC/C,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW;gBAC/C,eAAe,EAAE,OAAO;aACzB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QAEL,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;aACtB,WAAW,CAAC,8BAA8B,CAAC;aAC3C,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;aAC5C,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE;YACzB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,SAAS,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEL,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;aACrB,WAAW,CAAC,+BAA+B,CAAC;aAC5C,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;aACxC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;YAC7B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7C,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEL,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;aACrB,WAAW,CAAC,6BAA6B,CAAC;aAC1C,MAAM,CAAC,KAAK,IAAI,EAAE;YACjB,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;YAClB,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEL,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;aACvB,WAAW,CAAC,sCAAsC,CAAC;aACnD,MAAM,CAAC,KAAK,IAAI,EAAE;YACjB,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEL,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;aACvB,WAAW,CAAC,gCAAgC,CAAC;aAC7C,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;aAC7C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;aACnC,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,MAAe,EAAE,EAAE;YAChD,wFAAwF;YACxF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,IAAY,CAAC;YACjB,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC/B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBAChE,KAAK,CAAC,MAAc,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC/D,CAAC;iBAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChD,KAAK,CAAC,MAAc,CAAC,eAAe,GAAG,IAAI,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;gBAC7E,OAAO;YACT,CAAC;YACD,qDAAqD;YACrD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAChE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;gBACzG,IAAI,IAAI,GAAG,EAAE,CAAC;gBAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;gBACxD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBACjB,IAAI,CAAC;wBACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC3B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC;oBACpE,CAAC;oBAAC,MAAM,CAAC;wBAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;oBAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;YACzF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChB,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEL,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;aACpB,WAAW,CAAC,oBAAoB,CAAC;aACjC,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,IAAI,CAAC;aAClD,MAAM,CAAC,KAAK,EAAE,IAAS,EAAE,EAAE;YAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC3C,IAAI,CAAC;wBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC;wBAAC,OAAO,IAAI,CAAC;oBAAC,CAAC;gBACtD,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;oBACvB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC5D,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAC5J,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC,EACD;QACE,WAAW,EAAE;YACX,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,+BAA+B,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACF,CACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAoB,EAAE,KAAkB;IACtE,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC;IAC1C,IAAI,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC;IAC7C,IAAI,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IACvD,IAAI,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;IAEvC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5D,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC;QACzB,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC;QAE5B,iFAAiF;QACjF,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM;aAC5B,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;aACxC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS;gBAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS;gBAC7B,YAAY,EAAE,CAAC;aAChB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzG,MAAM,YAAY,GAAG,IAAI,GAAG,EAAe,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,EAAE,CAAC;gBAC3G,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBAC1H,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBAAC,CAAC,CAAC,KAAK,EAAE,CAAC;oBAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;gBAAC,CAAC;gBACrF,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;oBAAC,IAAI,CAAC,CAAC,MAAM;wBAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;gBAAC,CAAC;gBAC3G,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;QAC5B,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,aAAa;QAC/C,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,OAAO;QACtB,oBAAoB,EAAE,KAAK,CAAC,WAAW,CAAC,kBAAkB;QAC1D,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe;QAC/C,OAAO,EAAE;YACP,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,mBAAmB;YAC/D,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW;YAC/C,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB;YACtE,yBAAyB,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB;YACvE,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB;YACtE,yBAAyB,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB;SACxE;QACD,eAAe,EAAE,cAAc;QAC/B,WAAW,EAAE,UAAU;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAiB,EAAE,KAAa;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnI,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,cAAc,CAcnD,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAY5E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,cAAc,CAenD,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAa5E"}
package/dist/config.js CHANGED
@@ -11,6 +11,7 @@ export const DEFAULT_CONFIG = {
11
11
  callFrequencyThreshold: 30,
12
12
  },
13
13
  dailyTokenLimit: null,
14
+ upstreamTimeoutMs: 30_000,
14
15
  privacy: {
15
16
  storePromptText: false,
16
17
  enableRawConversationHooks: false,
@@ -23,6 +24,7 @@ export function resolveConfig(input) {
23
24
  ...input.breaker,
24
25
  },
25
26
  dailyTokenLimit: input.dailyTokenLimit ?? DEFAULT_CONFIG.dailyTokenLimit,
27
+ upstreamTimeoutMs: input.upstreamTimeoutMs ?? DEFAULT_CONFIG.upstreamTimeoutMs,
26
28
  privacy: {
27
29
  ...DEFAULT_CONFIG.privacy,
28
30
  ...input.privacy,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,OAAO,EAAE;QACP,mBAAmB,EAAE,CAAC;QACtB,WAAW,EAAE,EAAE;QACf,sBAAsB,EAAE,EAAE;QAC1B,sBAAsB,EAAE,MAAM;QAC9B,sBAAsB,EAAE,EAAE;QAC1B,sBAAsB,EAAE,EAAE;KAC3B;IACD,eAAe,EAAE,IAAI;IACrB,OAAO,EAAE;QACP,eAAe,EAAE,KAAK;QACtB,0BAA0B,EAAE,KAAK;KAClC;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,KAA8B;IAC1D,OAAO;QACL,OAAO,EAAE;YACP,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,KAAK,CAAC,OAAO;SACjB;QACD,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,cAAc,CAAC,eAAe;QACxE,OAAO,EAAE;YACP,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,KAAK,CAAC,OAAO;SACjB;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,OAAO,EAAE;QACP,mBAAmB,EAAE,CAAC;QACtB,WAAW,EAAE,EAAE;QACf,sBAAsB,EAAE,EAAE;QAC1B,sBAAsB,EAAE,MAAM;QAC9B,sBAAsB,EAAE,EAAE;QAC1B,sBAAsB,EAAE,EAAE;KAC3B;IACD,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,MAAM;IACzB,OAAO,EAAE;QACP,eAAe,EAAE,KAAK;QACtB,0BAA0B,EAAE,KAAK;KAClC;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,KAA8B;IAC1D,OAAO;QACL,OAAO,EAAE;YACP,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,KAAK,CAAC,OAAO;SACjB;QACD,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,cAAc,CAAC,eAAe;QACxE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI,cAAc,CAAC,iBAAiB;QAC9E,OAAO,EAAE;YACP,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,KAAK,CAAC,OAAO;SACjB;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/dashboard/html.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAg4BvD"}
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/dashboard/html.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CA46BvD"}
@@ -54,21 +54,43 @@ export function renderDashboardHtml(_stats) {
54
54
  padding: 2px;
55
55
  border: 1px solid var(--border);
56
56
  }
57
+ .mode-toggle {
58
+ display: inline-flex;
59
+ background: #f1f5f9;
60
+ border-radius: 8px;
61
+ padding: 3px;
62
+ gap: 2px;
63
+ }
57
64
  .mode-btn {
58
- padding: 6px 16px;
65
+ padding: 6px 18px;
59
66
  border: none;
60
67
  background: transparent;
61
- color: var(--muted);
68
+ color: #64748b;
62
69
  font-size: 13px;
63
70
  font-weight: 500;
64
71
  cursor: pointer;
65
- border-radius: 4px;
66
- transition: all 0.15s ease;
72
+ border-radius: 6px;
73
+ transition: all 0.2s ease;
74
+ position: relative;
75
+ }
76
+ .mode-btn:hover {
77
+ color: #334155;
67
78
  }
68
79
  .mode-btn.active {
69
- background: var(--card);
70
- color: var(--fg);
71
- box-shadow: 0 1px 2px rgba(0,0,0,0.05);
80
+ background: #fff;
81
+ color: #1e293b;
82
+ box-shadow: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06);
83
+ font-weight: 600;
84
+ }
85
+ .mode-btn.protect-mode.active {
86
+ background: #fef3c7;
87
+ color: #92400e;
88
+ }
89
+ .mode-label {
90
+ font-size: 11px;
91
+ color: #94a3b8;
92
+ margin-left: 6px;
93
+ font-weight: 400;
72
94
  }
73
95
  .header-actions {
74
96
  display: flex;
@@ -359,19 +381,37 @@ export function renderDashboardHtml(_stats) {
359
381
  /* Status Card */
360
382
  .status-grid {
361
383
  display: grid;
362
- grid-template-columns: repeat(2, 1fr);
363
- gap: 2px;
364
- background: var(--border);
365
- border-radius: 6px;
384
+ grid-template-columns: repeat(4, 1fr);
385
+ gap: 0;
386
+ border: 1px solid var(--border);
387
+ border-radius: 8px;
366
388
  overflow: hidden;
367
389
  margin-bottom: 24px;
368
390
  }
391
+ @media (max-width: 900px) {
392
+ .status-grid { grid-template-columns: repeat(2, 1fr); }
393
+ }
394
+ @media (max-width: 500px) {
395
+ .status-grid { grid-template-columns: 1fr; }
396
+ }
369
397
  .status-item {
370
398
  background: var(--card);
371
399
  padding: 14px 16px;
372
400
  display: flex;
373
401
  justify-content: space-between;
374
402
  align-items: center;
403
+ border-right: 1px solid var(--border);
404
+ border-bottom: 1px solid var(--border);
405
+ }
406
+ .status-item:nth-child(4n) { border-right: none; }
407
+ .status-item:nth-last-child(-n+4):nth-child(n+1) { border-bottom: none; }
408
+ @media (max-width: 900px) {
409
+ .status-item:nth-child(4n) { border-right: 1px solid var(--border); }
410
+ .status-item:nth-child(2n) { border-right: none; }
411
+ }
412
+ @media (max-width: 500px) {
413
+ .status-item { border-right: none; }
414
+ }
375
415
  }
376
416
  .status-item-label {
377
417
  font-size: 13px;
@@ -420,10 +460,15 @@ export function renderDashboardHtml(_stats) {
420
460
  </head>
421
461
  <body>
422
462
  <header class="header">
423
- <div class="header-title">Firewall</div>
463
+ <div class="header-title" style="display:flex;align-items:center;gap:6px">
464
+ <span style="background:#eff6ff;color:#2563eb;font-weight:600;font-size:11px;padding:3px 10px;border-radius:10px;letter-spacing:0.3px">Mapick</span>
465
+ <span>Firewall</span>
466
+ </div>
424
467
  <div class="header-center">
425
- <button class="mode-btn active" id="mode-observe">Observe</button>
426
- <button class="mode-btn" id="mode-protect">Protect</button>
468
+ <div class="mode-toggle">
469
+ <button class="mode-btn active" id="mode-observe">Observe</button>
470
+ <button class="mode-btn" id="mode-protect">Protect</button>
471
+ </div>
427
472
  </div>
428
473
  <div class="header-actions">
429
474
  <button class="btn btn-destructive" id="btn-stop">Stop</button>
@@ -552,20 +597,20 @@ export function renderDashboardHtml(_stats) {
552
597
  <div class="section-title">Monitoring</div>
553
598
  <div class="status-grid">
554
599
  <div class="status-item">
555
- <span class="status-item-label">Mode</span>
556
- <span class="status-item-value" id="status-mode">-</span>
600
+ <span class="status-item-label">Emergency Stop</span>
601
+ <span class="status-item-value" id="status-estop">Inactive</span>
557
602
  </div>
558
603
  <div class="status-item">
559
- <span class="status-item-label">Status</span>
560
- <span class="status-item-value" id="status-state">-</span>
604
+ <span class="status-item-label">Consecutive Failures</span>
605
+ <span class="status-item-value" id="status-fail">3</span>
561
606
  </div>
562
607
  <div class="status-item">
563
- <span class="status-item-label">Token Limit</span>
564
- <span class="status-item-value" id="status-limit">-</span>
608
+ <span class="status-item-label">Token Velocity</span>
609
+ <span class="status-item-value" id="status-velocity">100K / 60s</span>
565
610
  </div>
566
611
  <div class="status-item">
567
- <span class="status-item-label">Today</span>
568
- <span class="status-item-value" id="status-today">-</span>
612
+ <span class="status-item-label">Call Frequency</span>
613
+ <span class="status-item-value" id="status-frequency">30 / 60s</span>
569
614
  </div>
570
615
  </div>
571
616
  <div class="monitoring-grid">
@@ -646,6 +691,9 @@ export function renderDashboardHtml(_stats) {
646
691
  async function setMode(m) {
647
692
  await saveConfig({ mode: m });
648
693
  fetchStats();
694
+ // Update button styles
695
+ document.getElementById('mode-observe').className = 'mode-btn' + (m === 'observe' ? ' active' : '');
696
+ document.getElementById('mode-protect').className = 'mode-btn protect-mode' + (m === 'protect' ? ' active' : '');
649
697
  }
650
698
 
651
699
  async function emergencyStop() {
@@ -681,13 +729,8 @@ export function renderDashboardHtml(_stats) {
681
729
 
682
730
  const modeObserve = document.getElementById('mode-observe');
683
731
  const modeProtect = document.getElementById('mode-protect');
684
- if (data.mode === 'protect') {
685
- modeProtect.classList.add('active');
686
- modeObserve.classList.remove('active');
687
- } else {
688
- modeObserve.classList.add('active');
689
- modeProtect.classList.remove('active');
690
- }
732
+ modeObserve.className = 'mode-btn' + (data.mode === 'observe' ? ' active' : '');
733
+ modeProtect.className = 'mode-btn protect-mode' + (data.mode === 'protect' ? ' active' : '');
691
734
 
692
735
  const btnStop = document.getElementById('btn-stop');
693
736
  const btnResume = document.getElementById('btn-resume');
@@ -726,14 +769,15 @@ export function renderDashboardHtml(_stats) {
726
769
 
727
770
  const modeLabel = data.mode ?? 'observe';
728
771
  const estop = data.emergency_stop;
729
- document.getElementById('status-mode').innerHTML = estop
730
- ? '<span class="tag tag-destructive">STOPPED</span>'
731
- : modeLabel === 'protect'
732
- ? '<span class="tag tag-warning">Protect</span>'
733
- : '<span class="tag tag-success">Observe</span>';
734
- document.getElementById('status-state').textContent = estop ? 'Emergency Stop' : 'Normal';
735
- document.getElementById('status-limit').textContent = data.daily_token_limit ? data.daily_token_limit.toLocaleString() : 'โˆž';
736
- document.getElementById('status-today').textContent = (data.today_tokens ?? 0).toLocaleString() + ' tokens | ' + (data.today_blocked ?? 0) + ' blocked';
772
+ document.getElementById('status-estop').textContent = estop ? 'โ›” Active' : 'Inactive';
773
+ document.getElementById('status-estop').style.color = estop ? 'var(--destructive)' : '';
774
+ document.getElementById('status-fail').textContent = (breaker.consecutive_failures ?? 3) + ' failures โ†’ ' + (breaker.cooldown_sec ?? 30) + 's';
775
+ document.getElementById('status-velocity').textContent = (breaker.token_velocity_threshold ?? 0) > 0
776
+ ? (breaker.token_velocity_threshold ?? 0).toLocaleString() + ' / ' + (breaker.token_velocity_window_sec ?? 60) + 's'
777
+ : 'Off';
778
+ document.getElementById('status-frequency').textContent = (breaker.call_frequency_threshold ?? 0) > 0
779
+ ? (breaker.call_frequency_threshold ?? 0) + ' / ' + (breaker.call_frequency_window_sec ?? 60) + 's'
780
+ : 'Off';
737
781
 
738
782
  const coolingSources = data.cooling_sources ?? [];
739
783
  const coolingList = document.getElementById('list-cooling');
@@ -777,7 +821,7 @@ export function renderDashboardHtml(_stats) {
777
821
  log.innerHTML = '<div class="empty">No events</div>';
778
822
  return;
779
823
  }
780
- log.innerHTML = events.slice(0, 100).map(e => {
824
+ log.innerHTML = events.slice(0, 100).reverse().map(e => {
781
825
  const ts = e.timestamp ?? e.time;
782
826
  const date = ts ? new Date(ts) : null;
783
827
  const timeStr = date ? date.toTimeString().slice(0, 8) : '--:--:--';
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/dashboard/html.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,MAAW;IAC7C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA83BD,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/dashboard/html.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,MAAW;IAC7C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA06BD,CAAC;AACT,CAAC"}
@@ -8,6 +8,10 @@
8
8
  */
9
9
  import type { FirewallState } from "../state.js";
10
10
  import type { EventStore } from "../store.js";
11
+ export declare let testBlockRequested: {
12
+ source?: string;
13
+ } | null;
14
+ export declare function clearTestBlock(): void;
11
15
  export interface BeforeAgentReplyEvent {
12
16
  agentId?: string;
13
17
  sessionId?: string;
@@ -26,4 +30,9 @@ export interface HandledReply {
26
30
  reason: string;
27
31
  }
28
32
  export declare function createBeforeAgentReplyHandler(state: FirewallState, store: EventStore): (event: BeforeAgentReplyEvent, ctx: BeforeAgentReplyCtx) => Promise<HandledReply | undefined>;
33
+ /** Handle llm_input โ€” check for test block trigger phrase */
34
+ export declare function createTestBlockDetector(store: EventStore): (event: {
35
+ prompt?: string;
36
+ provider?: string;
37
+ }, _ctx: any) => void;
29
38
  //# sourceMappingURL=before-agent-reply.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"before-agent-reply.d.ts","sourceRoot":"","sources":["../../src/hooks/before-agent-reply.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,UAAU,IAGf,OAAO,qBAAqB,EAC5B,KAAK,mBAAmB,KACvB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAoCrC"}
1
+ {"version":3,"file":"before-agent-reply.d.ts","sourceRoot":"","sources":["../../src/hooks/before-agent-reply.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,eAAO,IAAI,kBAAkB,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAW,CAAC;AAIjE,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,UAAU,IAGf,OAAO,qBAAqB,EAC5B,KAAK,mBAAmB,KACvB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAoDrC;AAED,6DAA6D;AAC7D,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,IACvB,OAAO;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,GAAG,KAAG,IAAI,CAUhG"}
@@ -6,6 +6,13 @@
6
6
  * - Daily Budget blocking
7
7
  * - Source Cooldown blocking
8
8
  */
9
+ // Test block flag โ€” set by llm_input hook when user types 'block test'
10
+ export let testBlockRequested = null;
11
+ // Prevent re-triggering from conversation history containing "block test"
12
+ let testBlockProcessed = false;
13
+ export function clearTestBlock() {
14
+ testBlockRequested = null;
15
+ }
9
16
  export function createBeforeAgentReplyHandler(state, store) {
10
17
  return async function handleBeforeAgentReply(event, ctx) {
11
18
  const source = event.agentId ?? event.sessionKey ?? "unknown";
@@ -20,12 +27,12 @@ export function createBeforeAgentReplyHandler(state, store) {
20
27
  });
21
28
  state.globalStats.todayBlocked++;
22
29
  const messages = {
23
- emergency_stop: "Mapick Cost Firewall: all AI calls are paused.",
24
- daily_token_limit: "Mapick Cost Firewall: today's token limit has been reached.",
25
- source_cooldown: "Mapick Cost Firewall: this source is cooling down.",
26
- consecutive_failures: "Mapick Cost Firewall: this source is cooling down due to consecutive failures.",
27
- token_velocity: "Mapick Cost Firewall: this source is cooling down due to high token velocity.",
28
- call_frequency: "Mapick Cost Firewall: this source is cooling down due to high call frequency.",
30
+ emergency_stop: "๐Ÿ›‘ Emergency stop activated. All AI calls are blocked. Use `openclaw firewall resume` to restore.",
31
+ daily_token_limit: `โ›” Daily token limit reached. Today's AI usage has exceeded the limit. Use \`openclaw firewall status\` to check usage or \`openclaw firewall budget reset\` to remove the limit.`,
32
+ source_cooldown: `๐Ÿ”ฅ Breaker tripped โ€” source is in cooldown for ${state.breaker.getCooldownRemaining(source)}ms. Wait for cooldown or use \`openclaw firewall reset "${source}"\` to clear.`,
33
+ consecutive_failures: `โš ๏ธ Source "${source}" blocked: ${state.config.breaker?.consecutiveFailures ?? 3} consecutive failures triggered breaker. Use \`openclaw firewall reset "${source}"\` to clear.`,
34
+ token_velocity: `โšก Source "${source}" blocked: token rate exceeded ${state.config.breaker?.tokenVelocityThreshold?.toLocaleString() ?? "limit"} tokens/${state.config.breaker?.tokenVelocityWindowSec ?? 60}s. Use \`openclaw firewall reset "${source}"\` to clear.`,
35
+ call_frequency: `๐Ÿ“ž Source "${source}" blocked: call frequency exceeded ${state.config.breaker?.callFrequencyThreshold ?? 30} calls/${state.config.breaker?.callFrequencyWindowSec ?? 60}s. Use \`openclaw firewall reset "${source}"\` to clear.`,
29
36
  };
30
37
  return {
31
38
  handled: true,
@@ -36,7 +43,36 @@ export function createBeforeAgentReplyHandler(state, store) {
36
43
  reason: result.reason,
37
44
  };
38
45
  }
46
+ // Test block trigger
47
+ if (testBlockRequested) {
48
+ const src = testBlockRequested.source || "unknown";
49
+ testBlockRequested = null;
50
+ store.append({ type: "blocked", source: src, reason: "test_block", layer: "hook" });
51
+ state.globalStats.todayBlocked++;
52
+ return {
53
+ handled: true,
54
+ reply: {
55
+ text: `๐Ÿงช Block test triggered successfully for source "${src}". The firewall is working. Use \`openclaw firewall status\` to verify the blocked count increased.`,
56
+ isError: true,
57
+ },
58
+ reason: "test_block",
59
+ };
60
+ }
39
61
  return undefined;
40
62
  };
41
63
  }
64
+ /** Handle llm_input โ€” check for test block trigger phrase */
65
+ export function createTestBlockDetector(store) {
66
+ return function detectTestBlock(event, _ctx) {
67
+ const prompt = event.prompt ?? "";
68
+ if (prompt.includes("้˜ปๆ–ญๆต‹่ฏ•") || prompt.includes("block test") || prompt.includes("test block")) {
69
+ // Only trigger once per gateway process to avoid re-triggering from history
70
+ if (testBlockProcessed)
71
+ return;
72
+ testBlockProcessed = true;
73
+ testBlockRequested = { source: event.provider ?? "chat" };
74
+ store.append({ type: "test_block_triggered", reason: "user requested block test" });
75
+ }
76
+ };
77
+ }
42
78
  //# sourceMappingURL=before-agent-reply.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"before-agent-reply.js","sourceRoot":"","sources":["../../src/hooks/before-agent-reply.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAyBH,MAAM,UAAU,6BAA6B,CAC3C,KAAoB,EACpB,KAAiB;IAEjB,OAAO,KAAK,UAAU,sBAAsB,CAC1C,KAA4B,EAC5B,GAAwB;QAExB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;QAE9D,mBAAmB;QACnB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,KAAK,CAAC,MAAM,CAAC;gBACX,IAAI,EAAE,SAAS;gBACf,MAAM;gBACN,MAAM,EAAE,MAAM,CAAC,MAAO;gBACtB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YAEjC,MAAM,QAAQ,GAA2B;gBACvC,cAAc,EAAE,gDAAgD;gBAChE,iBAAiB,EAAE,6DAA6D;gBAChF,eAAe,EAAE,oDAAoD;gBACrE,oBAAoB,EAAE,gFAAgF;gBACtG,cAAc,EAAE,+EAA+E;gBAC/F,cAAc,EAAE,+EAA+E;aAChG,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAO,CAAC,IAAI,wCAAwC;oBAC1E,OAAO,EAAE,IAAI;iBACd;gBACD,MAAM,EAAE,MAAM,CAAC,MAAO;aACvB,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"before-agent-reply.js","sourceRoot":"","sources":["../../src/hooks/before-agent-reply.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,uEAAuE;AACvE,MAAM,CAAC,IAAI,kBAAkB,GAA+B,IAAI,CAAC;AACjE,0EAA0E;AAC1E,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,MAAM,UAAU,cAAc;IAC5B,kBAAkB,GAAG,IAAI,CAAC;AAC5B,CAAC;AAsBD,MAAM,UAAU,6BAA6B,CAC3C,KAAoB,EACpB,KAAiB;IAEjB,OAAO,KAAK,UAAU,sBAAsB,CAC1C,KAA4B,EAC5B,GAAwB;QAExB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;QAE9D,mBAAmB;QACnB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,KAAK,CAAC,MAAM,CAAC;gBACX,IAAI,EAAE,SAAS;gBACf,MAAM;gBACN,MAAM,EAAE,MAAM,CAAC,MAAO;gBACtB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YAEjC,MAAM,QAAQ,GAA2B;gBACvC,cAAc,EAAE,mGAAmG;gBACnH,iBAAiB,EAAE,kLAAkL;gBACrM,eAAe,EAAE,kDAAkD,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,2DAA2D,MAAM,eAAe;gBAC7L,oBAAoB,EAAE,cAAc,MAAM,cAAc,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,mBAAmB,IAAI,CAAC,2EAA2E,MAAM,eAAe;gBACtM,cAAc,EAAE,aAAa,MAAM,kCAAkC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,IAAI,OAAO,WAAW,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB,IAAI,EAAE,qCAAqC,MAAM,eAAe;gBACrQ,cAAc,EAAE,cAAc,MAAM,sCAAsC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB,IAAI,EAAE,UAAU,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB,IAAI,EAAE,qCAAqC,MAAM,eAAe;aACnP,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAO,CAAC,IAAI,wCAAwC;oBAC1E,OAAO,EAAE,IAAI;iBACd;gBACD,MAAM,EAAE,MAAM,CAAC,MAAO;aACvB,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,IAAI,SAAS,CAAC;YACnD,kBAAkB,GAAG,IAAI,CAAC;YAC1B,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACpF,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE;oBACL,IAAI,EAAE,oDAAoD,GAAG,qGAAqG;oBAClK,OAAO,EAAE,IAAI;iBACd;gBACD,MAAM,EAAE,YAAY;aACrB,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,uBAAuB,CAAC,KAAiB;IACvD,OAAO,SAAS,eAAe,CAAC,KAA6C,EAAE,IAAS;QACtF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9F,4EAA4E;YAC5E,IAAI,kBAAkB;gBAAE,OAAO;YAC/B,kBAAkB,GAAG,IAAI,CAAC;YAC1B,kBAAkB,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC5D,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}