pi-harness-runtime 1.1.408 → 1.1.410

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 (155) hide show
  1. package/harness/key-file-audit.ts +2 -2
  2. package/package.json +1 -1
  3. package/packages/a2a-adapter/package.json +1 -1
  4. package/packages/agent-policy/package.json +1 -1
  5. package/packages/architecture-generator/package.json +1 -1
  6. package/packages/auth/package.json +1 -1
  7. package/packages/autonomous-refactor/package.json +1 -1
  8. package/packages/autonomous-runtime/package.json +1 -1
  9. package/packages/cache-strategy/package.json +1 -1
  10. package/packages/capability-registry/package.json +1 -1
  11. package/packages/checkpoint/package.json +1 -1
  12. package/packages/cli-plugin-sdk/package.json +1 -1
  13. package/packages/clipboard/package.json +1 -1
  14. package/packages/clipboard-plugin/package.json +1 -1
  15. package/packages/code-generation/package.json +1 -1
  16. package/packages/code-review/package.json +1 -1
  17. package/packages/codex-adapter/package.json +1 -1
  18. package/packages/codex-watcher/package.json +1 -1
  19. package/packages/config-capture/package.json +1 -1
  20. package/packages/connection-runtime/package.json +1 -1
  21. package/packages/context-compiler/package.json +1 -1
  22. package/packages/context-discovery/package.json +1 -1
  23. package/packages/context-manager/package.json +1 -1
  24. package/packages/contracts/package.json +1 -1
  25. package/packages/cookie-sanitizer/package.json +1 -1
  26. package/packages/cost-optimizer/package.json +1 -1
  27. package/packages/dependency-analyzer/package.json +1 -1
  28. package/packages/django-plugin/package.json +1 -1
  29. package/packages/doc-generator/package.json +1 -1
  30. package/packages/durable-review/package.json +1 -1
  31. package/packages/e2e-tester/package.json +1 -1
  32. package/packages/evaluation-engine/package.json +1 -1
  33. package/packages/evaluation-runner/package.json +1 -1
  34. package/packages/event-bus/package.json +1 -1
  35. package/packages/event-sink/package.json +1 -1
  36. package/packages/event-store/package.json +1 -1
  37. package/packages/experience-replay/package.json +1 -1
  38. package/packages/feedback-collector/package.json +1 -1
  39. package/packages/file-copy-helper/package.json +1 -1
  40. package/packages/framework-detector/package.json +1 -1
  41. package/packages/framework-plugin-sdk/package.json +1 -1
  42. package/packages/frappe-plugin/package.json +1 -1
  43. package/packages/generic-web-plugin/package.json +1 -1
  44. package/packages/health-monitor/package.json +1 -1
  45. package/packages/intent-analyzer/package.json +1 -1
  46. package/packages/jev-judge/package.json +1 -1
  47. package/packages/knowledge-graph/package.json +1 -1
  48. package/packages/knowledge-retrieval/package.json +1 -1
  49. package/packages/laravel-plugin/package.json +1 -1
  50. package/packages/learning-engine/package.json +1 -1
  51. package/packages/logging/package.json +1 -1
  52. package/packages/mcp-adapter/package.json +1 -1
  53. package/packages/memory-engine/package.json +1 -1
  54. package/packages/milestone-manager/package.json +1 -1
  55. package/packages/model-registry/package.json +1 -1
  56. package/packages/nextjs-plugin/package.json +1 -1
  57. package/packages/notification/package.json +1 -1
  58. package/packages/observability/package.json +1 -1
  59. package/packages/okf-indexer/package.json +1 -1
  60. package/packages/paperclip-integration/package.json +1 -1
  61. package/packages/performance-optimizer/package.json +1 -1
  62. package/packages/permission-mode/package.json +1 -1
  63. package/packages/privilege-broker/package.json +1 -1
  64. package/packages/project-analyzer/package.json +1 -1
  65. package/packages/project-bootstrap/package.json +1 -1
  66. package/packages/projection-engine/package.json +1 -1
  67. package/packages/prompt-compiler/package.json +1 -1
  68. package/packages/prompt-versioning/package.json +1 -1
  69. package/packages/provider-adapter-sdk/package.json +1 -1
  70. package/packages/provider-router/package.json +1 -1
  71. package/packages/provider-selector/package.json +1 -1
  72. package/packages/providers/dist/adapters.d.ts +1 -1
  73. package/packages/providers/dist/adapters.d.ts.map +1 -1
  74. package/packages/providers/dist/deepagents-adapter.d.ts +22 -1
  75. package/packages/providers/dist/deepagents-adapter.d.ts.map +1 -1
  76. package/packages/providers/dist/deepagents-adapter.js +3 -8
  77. package/packages/providers/dist/deepagents-adapter.js.map +1 -1
  78. package/packages/providers/package.json +1 -1
  79. package/packages/providers/src/adapters.ts +1 -1
  80. package/packages/providers/src/deepagents-adapter.ts +28 -31
  81. package/packages/qdrant-skills/dist/embedder.d.ts +5 -1
  82. package/packages/qdrant-skills/dist/embedder.d.ts.map +1 -1
  83. package/packages/qdrant-skills/dist/embedder.js +52 -37
  84. package/packages/qdrant-skills/dist/embedder.js.map +1 -1
  85. package/packages/qdrant-skills/package.json +1 -1
  86. package/packages/qdrant-skills/src/embedder.ts +56 -40
  87. package/packages/qdrant-skills/test/embedder.test.ts +97 -0
  88. package/packages/quota-manager/dist/quota-manager.d.ts +1 -1
  89. package/packages/quota-manager/dist/quota-manager.d.ts.map +1 -1
  90. package/packages/quota-manager/dist/quota-manager.js +10 -8
  91. package/packages/quota-manager/dist/quota-manager.js.map +1 -1
  92. package/packages/quota-manager/dist/tui-usage-monitor.d.ts +5 -3
  93. package/packages/quota-manager/dist/tui-usage-monitor.d.ts.map +1 -1
  94. package/packages/quota-manager/dist/tui-usage-monitor.js +30 -10
  95. package/packages/quota-manager/dist/tui-usage-monitor.js.map +1 -1
  96. package/packages/quota-manager/package.json +1 -1
  97. package/packages/quota-manager/src/quota-manager.ts +10 -9
  98. package/packages/quota-manager/src/tui-usage-monitor.ts +40 -17
  99. package/packages/rate-limiter/package.json +1 -1
  100. package/packages/react-vite-plugin/package.json +1 -1
  101. package/packages/relay/package.json +1 -1
  102. package/packages/release-manager/package.json +1 -1
  103. package/packages/requirement-compiler/package.json +1 -1
  104. package/packages/runtime/package.json +1 -1
  105. package/packages/scheduler/package.json +1 -1
  106. package/packages/scheduler-adapter/package.json +1 -1
  107. package/packages/session/package.json +1 -1
  108. package/packages/session-api/package.json +1 -1
  109. package/packages/session-export/package.json +1 -1
  110. package/packages/shared-context/package.json +1 -1
  111. package/packages/skill-mcp-client/package.json +1 -1
  112. package/packages/skill-registry/package.json +1 -1
  113. package/packages/skills/dist/loader.d.ts.map +1 -1
  114. package/packages/skills/dist/loader.js +9 -6
  115. package/packages/skills/dist/loader.js.map +1 -1
  116. package/packages/skills/package.json +1 -1
  117. package/packages/skills/src/loader.ts +13 -6
  118. package/packages/sprint-planner/package.json +1 -1
  119. package/packages/subscription-engine/package.json +1 -1
  120. package/packages/task-compiler/package.json +1 -1
  121. package/packages/telegram/package.json +1 -1
  122. package/packages/tencentdb-memory/package.json +1 -1
  123. package/packages/tencentdb-sync/package.json +1 -1
  124. package/packages/test-data-generator/package.json +1 -1
  125. package/packages/test-generator/package.json +1 -1
  126. package/packages/todo-bd-sync/package.json +1 -1
  127. package/packages/token-estimation/package.json +1 -1
  128. package/packages/token-optimizer/package.json +1 -1
  129. package/packages/tooling-preference/package.json +1 -1
  130. package/packages/trajectory/package.json +1 -1
  131. package/packages/tui/package.json +1 -1
  132. package/packages/two-phase-review/package.json +1 -1
  133. package/packages/types/package.json +1 -1
  134. package/packages/voice-api/package.json +1 -1
  135. package/packages/webmcp-tester/package.json +1 -1
  136. package/packages/wiki/package.json +1 -1
  137. package/packages/workflow-events/package.json +1 -1
  138. package/packages/workspace-scanner/package.json +1 -1
  139. package/packages/worktree/dist/worktree.d.ts +1 -1
  140. package/packages/worktree/dist/worktree.d.ts.map +1 -1
  141. package/packages/worktree/package.json +1 -1
  142. package/packages/worktree/src/worktree.ts +1 -1
  143. package/packages/write-review/package.json +1 -1
  144. package/scripts/typecheck-packages.mjs +3 -3
  145. package/packages/providers/adapters.ts +0 -362
  146. package/packages/providers/deepagents-adapter.ts +0 -458
  147. package/packages/providers/glm-usage.ts +0 -248
  148. package/packages/providers/index.ts +0 -85
  149. package/packages/providers/openai-usage.ts +0 -263
  150. package/packages/trajectory/dist/test/store.test.d.ts +0 -2
  151. package/packages/trajectory/dist/test/store.test.d.ts.map +0 -1
  152. package/packages/trajectory/dist/test/store.test.js +0 -228
  153. package/packages/trajectory/dist/test/store.test.js.map +0 -1
  154. package/packages/types/src/agent-worker-types.d.ts +0 -206
  155. package/packages/types/src/agent-worker-types.js +0 -41
@@ -0,0 +1,97 @@
1
+ /**
2
+ * The OpenAI key of the embedder.
3
+ *
4
+ * The embeddings endpoint of OpenAI accepts only an OpenAI key. The key of
5
+ * another provider is a different credential and must never be sent there.
6
+ * The loader must also work in ESM, where `require` does not exist.
7
+ */
8
+
9
+ import { describe, it, expect, beforeEach, afterEach } from "bun:test";
10
+ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
11
+ import { homedir } from "node:os";
12
+ import { join } from "node:path";
13
+ import { getOpenAIApiKey } from "../src/embedder.js";
14
+
15
+ /** The environment variables the loader looks at. */
16
+ const ENV_KEYS = [
17
+ "OPENAI_API_KEY",
18
+ "TYPESAFE_API_KEY",
19
+ "OPENROUTER_API_KEY",
20
+ "HOME",
21
+ "USERPROFILE",
22
+ ] as const;
23
+
24
+ let saved: Record<string, string | undefined> = {};
25
+ let tempHome: string;
26
+
27
+ beforeEach(() => {
28
+ saved = {};
29
+ for (const key of ENV_KEYS) {
30
+ saved[key] = process.env[key];
31
+ delete process.env[key];
32
+ }
33
+ // The home directory points at a fresh directory, so the test never
34
+ // reads the key of the machine it runs on.
35
+ tempHome = mkdtempSync(join(homedir(), ".test-qdrant-embedder-"));
36
+ process.env.HOME = tempHome;
37
+ process.env.USERPROFILE = tempHome;
38
+ });
39
+
40
+ afterEach(() => {
41
+ for (const key of ENV_KEYS) {
42
+ if (saved[key] === undefined) delete process.env[key];
43
+ else process.env[key] = saved[key];
44
+ }
45
+ rmSync(tempHome, { recursive: true, force: true });
46
+ });
47
+
48
+ /** Write a key file of the installation. */
49
+ function writeKeyFile(name: string, content: string): void {
50
+ const dir = join(tempHome, ".pi-harness-runtime", "keys");
51
+ mkdirSync(dir, { recursive: true });
52
+ writeFileSync(join(dir, name), content, "utf8");
53
+ }
54
+
55
+ describe("the OpenAI key of the embedder", () => {
56
+ it("takes the key of the environment", () => {
57
+ process.env.OPENAI_API_KEY = "sk-openai-from-env";
58
+ expect(getOpenAIApiKey()).toBe("sk-openai-from-env");
59
+ });
60
+
61
+ it("takes the key file of the installation", () => {
62
+ writeKeyFile("openai-api-key.txt", "sk-openai-from-file\n");
63
+ expect(getOpenAIApiKey()).toBe("sk-openai-from-file");
64
+ });
65
+
66
+ it("takes the token of a pi.dev login", () => {
67
+ const dir = join(tempHome, ".pi", "agent");
68
+ mkdirSync(dir, { recursive: true });
69
+ writeFileSync(
70
+ join(dir, "auth.json"),
71
+ JSON.stringify({ openai: { access: "openai-oauth-token" } }),
72
+ "utf8",
73
+ );
74
+ expect(getOpenAIApiKey()).toBe("openai-oauth-token");
75
+ });
76
+
77
+ it("never takes the key of another provider", () => {
78
+ // A TypeSafe key and an OpenRouter key are different credentials:
79
+ // the embeddings endpoint of OpenAI rejects them.
80
+ process.env.TYPESAFE_API_KEY = "ts-key-of-another-provider";
81
+ expect(getOpenAIApiKey()).toBeNull();
82
+
83
+ process.env.OPENROUTER_API_KEY = "or-key-of-another-provider";
84
+ expect(getOpenAIApiKey()).toBeNull();
85
+ });
86
+
87
+ it("prefers the OpenAI key over the key of another provider", () => {
88
+ process.env.OPENAI_API_KEY = "sk-openai-from-env";
89
+ process.env.TYPESAFE_API_KEY = "ts-key-of-another-provider";
90
+ process.env.OPENROUTER_API_KEY = "or-key-of-another-provider";
91
+ expect(getOpenAIApiKey()).toBe("sk-openai-from-env");
92
+ });
93
+
94
+ it("finds no key when there is none", () => {
95
+ expect(getOpenAIApiKey()).toBeNull();
96
+ });
97
+ });
@@ -4,7 +4,7 @@
4
4
  * Collects quota signals from API responses, provider status,
5
5
  * Playwright, and local estimates. Produces provider availability state.
6
6
  */
7
- import type { QuotaSignal, QuotaState } from "../../types/src/runtime-types.js";
7
+ import type { QuotaSignal, QuotaState } from "../../types/dist/runtime-types.js";
8
8
  export interface QuotaSignalInput {
9
9
  provider: string;
10
10
  source: "api_response" | "provider_status" | "playwright" | "local_estimate" | "tui_message";
@@ -1 +1 @@
1
- {"version":3,"file":"quota-manager.d.ts","sourceRoot":"","sources":["../src/quota-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEhF,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EACH,cAAc,GACd,iBAAiB,GACjB,YAAY,GACZ,gBAAgB,GAChB,aAAa,CAAC;IACjB,UAAU,EAAE,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,YAAY;IACxB,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,YAAY,gBAAgB,GAAE,MAAuB,EAEpD;IAED;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAe1C;IAED;;OAEG;IACH,eAAe,CACd,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAChD,WAAW,GAAG,IAAI,CAkCpB;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CA8B7C;IAED;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAgB1C;IAED;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAErC;IAED;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAErC;IAED;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3C;IAED;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAerD;IAED;;OAEG;IACH,UAAU,IAAI,IAAI,CAcjB;IAED;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CA8B1C;CACD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAmCpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CA0CnE"}
1
+ {"version":3,"file":"quota-manager.d.ts","sourceRoot":"","sources":["../src/quota-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EACH,cAAc,GACd,iBAAiB,GACjB,YAAY,GACZ,gBAAgB,GAChB,aAAa,CAAC;IACjB,UAAU,EAAE,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,YAAY;IACxB,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,YAAY,gBAAgB,GAAE,MAAuB,EAEpD;IAED;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAe1C;IAED;;OAEG;IACH,eAAe,CACd,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAChD,WAAW,GAAG,IAAI,CAkCpB;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CA8B7C;IAED;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAgB1C;IAED;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAErC;IAED;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAErC;IAED;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3C;IAED;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAerD;IAED;;OAEG;IACH,UAAU,IAAI,IAAI,CAcjB;IAED;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CA+B1C;CACD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAmCpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CA0CnE"}
@@ -40,7 +40,7 @@ export class QuotaManager {
40
40
  // Return most recent across all window types
41
41
  let latest = null;
42
42
  let latestTs = 0;
43
- for (const entry of Array.from(this.signals.entries())) {
43
+ for (const entry of this.signals.entries()) {
44
44
  const [k, sigs] = entry;
45
45
  if (k.startsWith(`${provider}:`)) {
46
46
  const mostRecent = sigs.sort((a, b) => Date.parse(b.capturedAt) - Date.parse(a.capturedAt))[0];
@@ -87,7 +87,7 @@ export class QuotaManager {
87
87
  getSignals(provider) {
88
88
  const result = [];
89
89
  const cutoff = Date.now() - this.staleThresholdMs;
90
- for (const entry of Array.from(this.signals.entries())) {
90
+ for (const entry of this.signals.entries()) {
91
91
  const [key, sigs] = entry;
92
92
  if (key.startsWith(`${provider}:`)) {
93
93
  for (const signal of sigs) {
@@ -143,7 +143,7 @@ export class QuotaManager {
143
143
  */
144
144
  clearStale() {
145
145
  const cutoff = Date.now() - this.staleThresholdMs;
146
- for (const entry of Array.from(this.signals.entries())) {
146
+ for (const entry of this.signals.entries()) {
147
147
  const [key, sigs] = entry;
148
148
  const fresh = sigs.filter((s) => Date.parse(s.capturedAt) >= cutoff);
149
149
  if (fresh.length === 0) {
@@ -162,11 +162,13 @@ export class QuotaManager {
162
162
  for (const provider of providers) {
163
163
  const state = this.getProviderState(provider);
164
164
  const latest = this.getLatestSignal(provider);
165
- const status = state.exhausted
166
- ? "EXHAUSTED"
167
- : state.limited
168
- ? "LIMITED"
169
- : "AVAILABLE";
165
+ let status = "AVAILABLE";
166
+ if (state.exhausted) {
167
+ status = "EXHAUSTED";
168
+ }
169
+ else if (state.limited) {
170
+ status = "LIMITED";
171
+ }
170
172
  lines.push(`${provider}: ${status}`);
171
173
  if (latest) {
172
174
  lines.push(` Latest: ${latest.usedPct ?? 0}% used`);
@@ -1 +1 @@
1
- {"version":3,"file":"quota-manager.js","sourceRoot":"","sources":["../src/quota-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,MAAM,OAAO,YAAY;IAChB,OAAO,GAA+B,IAAI,GAAG,EAAE,CAAC;IACvC,gBAAgB,CAAS;IAE1C,YAAY,gBAAgB,GAAW,EAAE,GAAG,EAAE,GAAG,IAAI;QACpD,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,KAAuB;QACnC,MAAM,MAAM,GAAgB;YAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC;YAC3B,YAAY,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;YACxC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK;YACnC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACxB,CAAC;QAEF,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,eAAe,CACd,QAAgB,EAChB,UAAkD;QAElD,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEhE,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC5C,OAAO,CACN,OAAO,CAAC,IAAI,CACX,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAC7D,CAAC,CAAC,CAAC,IAAI,IAAI,CACZ,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,IAAI,MAAM,GAAuB,IAAI,CAAC;QACtC,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC3B,CAAC,CAAc,EAAE,CAAc,EAAE,EAAE,CAClC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CACpD,CAAC,CAAC,CAAC,CAAC;gBACL,IAAI,UAAU,EAAE,CAAC;oBAChB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC7C,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;wBACnB,QAAQ,GAAG,EAAE,CAAC;wBACd,MAAM,GAAG,UAAU,CAAC;oBACrB,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAgB;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,CACnE,CAAC;QACF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CACjD,CAAC;QAEF,uBAAuB;QACvB,IAAI,eAAmC,CAAC;QACxC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,IACC,CAAC,eAAe;oBAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EACxD,CAAC;oBACF,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACnC,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO;YACN,QAAQ;YACR,SAAS,EAAE,CAAC,SAAS,IAAI,CAAC,OAAO;YACjC,OAAO;YACP,SAAS;YACT,OAAO;YACP,eAAe;SACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,QAAgB;QAC1B,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAElD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YAC1B,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACpC,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;oBAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,EAAE,CAAC;wBAC7C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACrB,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAgB;QAC3B,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAgB;QAC3B,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAgB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QAExC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9D,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,SAAmB;QACrC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAExC,6DAA6D;QAC7D,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,OAAO,EAAE,YAAY,IAAI,GAAG,CAAC;YAC1C,MAAM,IAAI,GAAG,OAAO,EAAE,YAAY,IAAI,GAAG,CAAC;YAC1C,OAAO,IAAI,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,UAAU;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAElD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CACxB,CAAC,CAAc,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,MAAM,CACtD,CAAC;YACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,SAAmB;QACjC,MAAM,KAAK,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAE1D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS;gBAC7B,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,KAAK,CAAC,OAAO;oBACd,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,WAAW,CAAC;YAEhB,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC;YAErC,IAAI,MAAM,EAAE,CAAC;gBACZ,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACtD,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;wBACd,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;oBAC/D,CAAC;gBACF,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1C,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;CACD;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC/C,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAE/C,gFAAgF;IAChF,IACC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrB,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EACzB,CAAC;QACF,4BAA4B;QAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvE,IAAI,YAAgC,CAAC;QAErC,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACzC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACvC,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI;gBACnB,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,OAAO;YACN,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,GAAG;YACZ,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,YAAY;SACZ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC9C,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAE/C,IAAI,IAAI,KAAK,oBAAoB,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;QACzE,OAAO;YACN,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,OAAO;YACnB,OAAO,EAAE,GAAG;YACZ,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvE,IAAI,YAAgC,CAAC;QAErC,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACzC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACvC,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI;gBACnB,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,OAAO;YACN,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,GAAG;YACZ,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,YAAY;SACZ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"quota-manager.js","sourceRoot":"","sources":["../src/quota-manager.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,10 @@
15
15
  */
16
16
  import { EventEmitter } from "node:events";
17
17
  import type { QuotaManager } from "./quota-manager.js";
18
+ /** The providers the monitor can recognize. */
19
+ export type TUIProvider = "openai" | "glm" | "minimax" | "anthropic" | "openrouter";
18
20
  export interface TUIUsageSignal {
19
- provider: "openai" | "glm" | "anthropic" | "openrouter" | "unknown";
21
+ provider: TUIProvider | "unknown";
20
22
  timestamp: string;
21
23
  /** Usage percentage (0-100), if available */
22
24
  usedPct?: number;
@@ -49,11 +51,11 @@ export declare class TUIUsageMonitor extends EventEmitter {
49
51
  /**
50
52
  * Detect which provider the message is about
51
53
  */
52
- detectProvider(message: string): "openai" | "glm" | "anthropic" | "openrouter" | null;
54
+ detectProvider(message: string): TUIProvider | null;
53
55
  /**
54
56
  * Get the last signal for a provider
55
57
  */
56
- getLastSignal(provider: "openai" | "glm" | "anthropic" | "openrouter"): TUIUsageSignal | null;
58
+ getLastSignal(provider: TUIProvider): TUIUsageSignal | null;
57
59
  /**
58
60
  * Get all last signals
59
61
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tui-usage-monitor.d.ts","sourceRoot":"","sources":["../src/tui-usage-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,SAAS,EAAE,QAAQ,GAAG,gBAAgB,GAAG,YAAY,GAAG,SAAS,CAAC;IAClE,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACrC,iDAAiD;IACjD,YAAY,EAAE,YAAY,CAAC;IAC3B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AA8DD,qBAAa,eAAgB,SAAQ,YAAY;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,WAAW,CAA0C;IAE7D,YAAY,MAAM,EAAE,qBAAqB,EAIxC;IAED;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA4BrD;IAED;;OAEG;IACH,cAAc,CACb,OAAO,EAAE,MAAM,GACb,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,YAAY,GAAG,IAAI,CAStD;IAED;;OAEG;IACH,aAAa,CACZ,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,YAAY,GACrD,cAAc,GAAG,IAAI,CAEvB;IAED;;OAEG;IACH,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAE/C;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED;;OAEG;IACH,OAAO,CAAC,WAAW;IAqCnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsCvB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAcjC;;OAEG;IACH,OAAO,CAAC,cAAc;IA2CtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAmB5B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACpC,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE;IACH,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,KAAK,IAAI,CAAC;CAC3E,EACD,MAAM,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,eAAe,CAgBjB"}
1
+ {"version":3,"file":"tui-usage-monitor.d.ts","sourceRoot":"","sources":["../src/tui-usage-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,+CAA+C;AAC/C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;AAEpF,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,SAAS,EAAE,QAAQ,GAAG,gBAAgB,GAAG,YAAY,GAAG,SAAS,CAAC;IAClE,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACrC,iDAAiD;IACjD,YAAY,EAAE,YAAY,CAAC;IAC3B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AA4ED,qBAAa,eAAgB,SAAQ,YAAY;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,WAAW,CAA0C;IAE7D,YAAY,MAAM,EAAE,qBAAqB,EAIxC;IAED;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA4BrD;IAED;;OAEG;IACH,cAAc,CACb,OAAO,EAAE,MAAM,GACb,WAAW,GAAG,IAAI,CAepB;IAED;;OAEG;IACH,aAAa,CACZ,QAAQ,EAAE,WAAW,GACnB,cAAc,GAAG,IAAI,CAEvB;IAED;;OAEG;IACH,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAE/C;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED;;OAEG;IACH,OAAO,CAAC,WAAW;IAqCnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsCvB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAcjC;;OAEG;IACH,OAAO,CAAC,cAAc;IA2CtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAmB5B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACpC,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE;IACH,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,KAAK,IAAI,CAAC;CAC3E,EACD,MAAM,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,eAAe,CAgBjB"}
@@ -17,14 +17,19 @@ import { EventEmitter } from "node:events";
17
17
  /**
18
18
  * Provider-specific patterns
19
19
  */
20
+ /**
21
+ * The patterns that name the provider.
22
+ *
23
+ * A pattern that names the provider wins over a bare error code: the message
24
+ * "Claude overloaded_error" is about Anthropic, not about the provider that
25
+ * happens to use the error code first.
26
+ */
20
27
  const PROVIDER_PATTERNS = {
21
28
  openai: [
22
29
  /(?:^|\s)OpenAI(?:$|\s)/i,
23
30
  /(?:^|\s)GPT(?:$|\s)/i,
24
31
  /openai.*(?:quota|limit|exhausted)/i,
25
32
  /gpt.*(?:quota|limit|exhausted)/i,
26
- /insufficient_quota/i,
27
- /context_length_exceeded/i,
28
33
  /openai.*rate.?limit/i,
29
34
  /429.*openai/i,
30
35
  /openai.*context.*(?:window|length)/i,
@@ -37,30 +42,39 @@ const PROVIDER_PATTERNS = {
37
42
  /glm.*context.*(?:window|length)/i,
38
43
  /glm.*rate.?limit/i,
39
44
  /glm.*429/i,
40
- /code.*1308/i, // GLM specific error code
41
- /Usage limit reached/i,
42
- /5 hour.*quota/i,
43
45
  ],
44
46
  minimax: [
45
47
  /(?:^|\s)Minimax(?:$|\s)/i,
46
48
  /minimax.*(?:overload|surge|busy)/i,
47
- /overloaded_error/i,
48
49
  /529.*minimax/i,
49
- /peak.?hour.*surge/i,
50
50
  ],
51
51
  anthropic: [
52
52
  /(?:^|\s)Claude(?:$|\s)/i,
53
53
  /(?:^|\s)Anthropic(?:$|\s)/i,
54
54
  /anthropic.*(?:quota|limit|exhausted)/i,
55
55
  /claude.*(?:quota|limit|exhausted)/i,
56
- /overloaded_error/i,
57
- /rate_limit_error/i,
58
56
  ],
59
57
  openrouter: [
60
58
  /(?:^|\s)OpenRouter(?:$|\s)/i,
61
59
  /openrouter.*(?:quota|limit|exhausted)/i,
62
60
  ],
63
61
  };
62
+ /**
63
+ * The error codes without a provider name.
64
+ *
65
+ * They are checked only when no pattern names a provider. A code that several
66
+ * providers share belongs to the one that reported it first.
67
+ */
68
+ const GENERIC_PATTERNS = [
69
+ { provider: "openai", pattern: /insufficient_quota/i },
70
+ { provider: "openai", pattern: /context_length_exceeded/i },
71
+ { provider: "glm", pattern: /code.*1308/i },
72
+ { provider: "glm", pattern: /Usage limit reached/i },
73
+ { provider: "glm", pattern: /5 hour.*quota/i },
74
+ { provider: "minimax", pattern: /overloaded_error/i },
75
+ { provider: "minimax", pattern: /peak.?hour.*surge/i },
76
+ { provider: "anthropic", pattern: /rate_limit_error/i },
77
+ ];
64
78
  const RESET_TIME_PATTERNS = [
65
79
  // GLM specific: "reset at 2026-08-25 01:47:16" or "reset at 2026-08-25T01:47:16"
66
80
  /reset\s+(?:at\s+)?(\d{4}-\d{2}-\d{2}[T ]?\d{2}:\d{2}:\d{2})/i,
@@ -108,6 +122,7 @@ export class TUIUsageMonitor extends EventEmitter {
108
122
  * Detect which provider the message is about
109
123
  */
110
124
  detectProvider(message) {
125
+ // The named provider first, the bare error codes second.
111
126
  for (const [provider, patterns] of Object.entries(PROVIDER_PATTERNS)) {
112
127
  for (const pattern of patterns) {
113
128
  if (pattern.test(message)) {
@@ -115,6 +130,11 @@ export class TUIUsageMonitor extends EventEmitter {
115
130
  }
116
131
  }
117
132
  }
133
+ for (const { provider, pattern } of GENERIC_PATTERNS) {
134
+ if (pattern.test(message)) {
135
+ return provider;
136
+ }
137
+ }
118
138
  return null;
119
139
  }
120
140
  /**
@@ -221,7 +241,7 @@ export class TUIUsageMonitor extends EventEmitter {
221
241
  // GLM full datetime format: "2026-08-25 01:47:16" or "2026-08-25T01:47:16"
222
242
  const datetimeStr = match[1].replace(" ", "T");
223
243
  const date = new Date(datetimeStr);
224
- if (!isNaN(date.getTime())) {
244
+ if (!Number.isNaN(date.getTime())) {
225
245
  return date.toISOString();
226
246
  }
227
247
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tui-usage-monitor.js","sourceRoot":"","sources":["../src/tui-usage-monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui-usage-monitor.js","sourceRoot":"","sources":["../src/tui-usage-monitor.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/quota-manager",
3
- "version": "1.1.408",
3
+ "version": "1.1.410",
4
4
  "description": "pi-harness-runtime — quota-manager",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -5,7 +5,7 @@
5
5
  * Playwright, and local estimates. Produces provider availability state.
6
6
  */
7
7
 
8
- import type { QuotaSignal, QuotaState } from "../../types/src/runtime-types.js";
8
+ import type { QuotaSignal, QuotaState } from "../../types/dist/runtime-types.js";
9
9
 
10
10
  export interface QuotaSignalInput {
11
11
  provider: string;
@@ -72,7 +72,7 @@ export class QuotaManager {
72
72
  let latest: QuotaSignal | null = null;
73
73
  let latestTs = 0;
74
74
 
75
- for (const entry of Array.from(this.signals.entries())) {
75
+ for (const entry of this.signals.entries()) {
76
76
  const [k, sigs] = entry;
77
77
  if (k.startsWith(`${provider}:`)) {
78
78
  const mostRecent = sigs.sort(
@@ -134,7 +134,7 @@ export class QuotaManager {
134
134
  const result: QuotaSignal[] = [];
135
135
  const cutoff = Date.now() - this.staleThresholdMs;
136
136
 
137
- for (const entry of Array.from(this.signals.entries())) {
137
+ for (const entry of this.signals.entries()) {
138
138
  const [key, sigs] = entry;
139
139
  if (key.startsWith(`${provider}:`)) {
140
140
  for (const signal of sigs) {
@@ -199,7 +199,7 @@ export class QuotaManager {
199
199
  clearStale(): void {
200
200
  const cutoff = Date.now() - this.staleThresholdMs;
201
201
 
202
- for (const entry of Array.from(this.signals.entries())) {
202
+ for (const entry of this.signals.entries()) {
203
203
  const [key, sigs] = entry;
204
204
  const fresh = sigs.filter(
205
205
  (s: QuotaSignal) => Date.parse(s.capturedAt) >= cutoff,
@@ -222,11 +222,12 @@ export class QuotaManager {
222
222
  const state = this.getProviderState(provider);
223
223
  const latest = this.getLatestSignal(provider);
224
224
 
225
- const status = state.exhausted
226
- ? "EXHAUSTED"
227
- : state.limited
228
- ? "LIMITED"
229
- : "AVAILABLE";
225
+ let status = "AVAILABLE";
226
+ if (state.exhausted) {
227
+ status = "EXHAUSTED";
228
+ } else if (state.limited) {
229
+ status = "LIMITED";
230
+ }
230
231
 
231
232
  lines.push(`${provider}: ${status}`);
232
233
 
@@ -17,8 +17,11 @@
17
17
  import { EventEmitter } from "node:events";
18
18
  import type { QuotaManager } from "./quota-manager.js";
19
19
 
20
+ /** The providers the monitor can recognize. */
21
+ export type TUIProvider = "openai" | "glm" | "minimax" | "anthropic" | "openrouter";
22
+
20
23
  export interface TUIUsageSignal {
21
- provider: "openai" | "glm" | "anthropic" | "openrouter" | "unknown";
24
+ provider: TUIProvider | "unknown";
22
25
  timestamp: string;
23
26
  /** Usage percentage (0-100), if available */
24
27
  usedPct?: number;
@@ -44,14 +47,19 @@ export interface TUIUsageMonitorConfig {
44
47
  /**
45
48
  * Provider-specific patterns
46
49
  */
47
- const PROVIDER_PATTERNS = {
50
+ /**
51
+ * The patterns that name the provider.
52
+ *
53
+ * A pattern that names the provider wins over a bare error code: the message
54
+ * "Claude overloaded_error" is about Anthropic, not about the provider that
55
+ * happens to use the error code first.
56
+ */
57
+ const PROVIDER_PATTERNS: Record<TUIProvider, RegExp[]> = {
48
58
  openai: [
49
59
  /(?:^|\s)OpenAI(?:$|\s)/i,
50
60
  /(?:^|\s)GPT(?:$|\s)/i,
51
61
  /openai.*(?:quota|limit|exhausted)/i,
52
62
  /gpt.*(?:quota|limit|exhausted)/i,
53
- /insufficient_quota/i,
54
- /context_length_exceeded/i,
55
63
  /openai.*rate.?limit/i,
56
64
  /429.*openai/i,
57
65
  /openai.*context.*(?:window|length)/i,
@@ -64,25 +72,17 @@ const PROVIDER_PATTERNS = {
64
72
  /glm.*context.*(?:window|length)/i,
65
73
  /glm.*rate.?limit/i,
66
74
  /glm.*429/i,
67
- /code.*1308/i, // GLM specific error code
68
- /Usage limit reached/i,
69
- /5 hour.*quota/i,
70
75
  ],
71
76
  minimax: [
72
77
  /(?:^|\s)Minimax(?:$|\s)/i,
73
78
  /minimax.*(?:overload|surge|busy)/i,
74
- /overloaded_error/i,
75
79
  /529.*minimax/i,
76
- /peak.?hour.*surge/i,
77
80
  ],
78
-
79
81
  anthropic: [
80
82
  /(?:^|\s)Claude(?:$|\s)/i,
81
83
  /(?:^|\s)Anthropic(?:$|\s)/i,
82
84
  /anthropic.*(?:quota|limit|exhausted)/i,
83
85
  /claude.*(?:quota|limit|exhausted)/i,
84
- /overloaded_error/i,
85
- /rate_limit_error/i,
86
86
  ],
87
87
  openrouter: [
88
88
  /(?:^|\s)OpenRouter(?:$|\s)/i,
@@ -90,6 +90,23 @@ const PROVIDER_PATTERNS = {
90
90
  ],
91
91
  };
92
92
 
93
+ /**
94
+ * The error codes without a provider name.
95
+ *
96
+ * They are checked only when no pattern names a provider. A code that several
97
+ * providers share belongs to the one that reported it first.
98
+ */
99
+ const GENERIC_PATTERNS: { provider: TUIProvider; pattern: RegExp }[] = [
100
+ { provider: "openai", pattern: /insufficient_quota/i },
101
+ { provider: "openai", pattern: /context_length_exceeded/i },
102
+ { provider: "glm", pattern: /code.*1308/i },
103
+ { provider: "glm", pattern: /Usage limit reached/i },
104
+ { provider: "glm", pattern: /5 hour.*quota/i },
105
+ { provider: "minimax", pattern: /overloaded_error/i },
106
+ { provider: "minimax", pattern: /peak.?hour.*surge/i },
107
+ { provider: "anthropic", pattern: /rate_limit_error/i },
108
+ ];
109
+
93
110
  const RESET_TIME_PATTERNS = [
94
111
  // GLM specific: "reset at 2026-08-25 01:47:16" or "reset at 2026-08-25T01:47:16"
95
112
  /reset\s+(?:at\s+)?(\d{4}-\d{2}-\d{2}[T ]?\d{2}:\d{2}:\d{2})/i,
@@ -150,14 +167,20 @@ export class TUIUsageMonitor extends EventEmitter {
150
167
  */
151
168
  detectProvider(
152
169
  message: string,
153
- ): "openai" | "glm" | "anthropic" | "openrouter" | null {
170
+ ): TUIProvider | null {
171
+ // The named provider first, the bare error codes second.
154
172
  for (const [provider, patterns] of Object.entries(PROVIDER_PATTERNS)) {
155
173
  for (const pattern of patterns) {
156
174
  if (pattern.test(message)) {
157
- return provider as "openai" | "glm" | "anthropic" | "openrouter";
175
+ return provider as TUIProvider;
158
176
  }
159
177
  }
160
178
  }
179
+ for (const { provider, pattern } of GENERIC_PATTERNS) {
180
+ if (pattern.test(message)) {
181
+ return provider;
182
+ }
183
+ }
161
184
  return null;
162
185
  }
163
186
 
@@ -165,7 +188,7 @@ export class TUIUsageMonitor extends EventEmitter {
165
188
  * Get the last signal for a provider
166
189
  */
167
190
  getLastSignal(
168
- provider: "openai" | "glm" | "anthropic" | "openrouter",
191
+ provider: TUIProvider,
169
192
  ): TUIUsageSignal | null {
170
193
  return this.lastSignals.get(provider) ?? null;
171
194
  }
@@ -189,7 +212,7 @@ export class TUIUsageMonitor extends EventEmitter {
189
212
  */
190
213
  private parseSignal(
191
214
  message: string,
192
- provider: "openai" | "glm" | "anthropic" | "openrouter",
215
+ provider: TUIProvider,
193
216
  ): TUIUsageSignal | null {
194
217
  // Determine limit type
195
218
  const limitType = this.detectLimitType(message);
@@ -294,7 +317,7 @@ export class TUIUsageMonitor extends EventEmitter {
294
317
  // GLM full datetime format: "2026-08-25 01:47:16" or "2026-08-25T01:47:16"
295
318
  const datetimeStr = match[1].replace(" ", "T");
296
319
  const date = new Date(datetimeStr);
297
- if (!isNaN(date.getTime())) {
320
+ if (!Number.isNaN(date.getTime())) {
298
321
  return date.toISOString();
299
322
  }
300
323
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/rate-limiter",
3
- "version": "1.1.408",
3
+ "version": "1.1.410",
4
4
  "type": "module",
5
5
  "description": "Rate limiting with token bucket algorithm (RFC-0023)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/react-vite-plugin",
3
- "version": "1.1.408",
3
+ "version": "1.1.410",
4
4
  "description": "React/Vite framework analysis — components, config, TypeScript setup",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/relay",
3
- "version": "1.1.408",
3
+ "version": "1.1.410",
4
4
  "type": "module",
5
5
  "description": "Cloud relay for remote access - T3 Connect style for pi-harness",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/release-manager",
3
- "version": "1.1.408",
3
+ "version": "1.1.410",
4
4
  "type": "module",
5
5
  "description": "Release management for pi-harness",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/requirement-compiler",
3
- "version": "1.1.408",
3
+ "version": "1.1.410",
4
4
  "description": "Compiles raw requirements into validated CompiledRequirement with ambiguity detection and risk tagging",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/runtime",
3
- "version": "1.1.408",
3
+ "version": "1.1.410",
4
4
  "description": "pi-harness-runtime — runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/scheduler",
3
- "version": "1.1.408",
3
+ "version": "1.1.410",
4
4
  "description": "pi-harness-runtime — scheduler",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/scheduler-adapter",
3
- "version": "1.1.408",
3
+ "version": "1.1.410",
4
4
  "description": "Scheduler Adapter — cron, systemd, launchd, internal adapters for autonomous runtime (RFC-0101 §6)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",